db1235.c 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /*
  2. * DB1200/PB1200 / DB1550 / DB1300 board support.
  3. *
  4. * These 4 boards can reliably be supported in a single kernel image.
  5. */
  6. #include <asm/mach-au1x00/au1000.h>
  7. #include <asm/mach-db1x00/bcsr.h>
  8. int __init db1200_board_setup(void);
  9. int __init db1200_dev_setup(void);
  10. int __init db1300_board_setup(void);
  11. int __init db1300_dev_setup(void);
  12. int __init db1550_board_setup(void);
  13. int __init db1550_dev_setup(void);
  14. int __init db1550_pci_setup(int);
  15. static const char *board_type_str(void)
  16. {
  17. switch (BCSR_WHOAMI_BOARD(bcsr_read(BCSR_WHOAMI))) {
  18. case BCSR_WHOAMI_PB1200_DDR1:
  19. case BCSR_WHOAMI_PB1200_DDR2:
  20. return "PB1200";
  21. case BCSR_WHOAMI_DB1200:
  22. return "DB1200";
  23. case BCSR_WHOAMI_DB1300:
  24. return "DB1300";
  25. case BCSR_WHOAMI_DB1550:
  26. return "DB1550";
  27. case BCSR_WHOAMI_PB1550_SDR:
  28. case BCSR_WHOAMI_PB1550_DDR:
  29. return "PB1550";
  30. default:
  31. return "(unknown)";
  32. }
  33. }
  34. const char *get_system_type(void)
  35. {
  36. return board_type_str();
  37. }
  38. void __init board_setup(void)
  39. {
  40. int ret;
  41. switch (alchemy_get_cputype()) {
  42. case ALCHEMY_CPU_AU1550:
  43. ret = db1550_board_setup();
  44. break;
  45. case ALCHEMY_CPU_AU1200:
  46. ret = db1200_board_setup();
  47. break;
  48. case ALCHEMY_CPU_AU1300:
  49. ret = db1300_board_setup();
  50. break;
  51. default:
  52. pr_err("unsupported CPU on board\n");
  53. ret = -ENODEV;
  54. }
  55. if (ret)
  56. panic("cannot initialize board support\n");
  57. }
  58. int __init db1235_arch_init(void)
  59. {
  60. int id = BCSR_WHOAMI_BOARD(bcsr_read(BCSR_WHOAMI));
  61. if (id == BCSR_WHOAMI_DB1550)
  62. return db1550_pci_setup(0);
  63. else if ((id == BCSR_WHOAMI_PB1550_SDR) ||
  64. (id == BCSR_WHOAMI_PB1550_DDR))
  65. return db1550_pci_setup(1);
  66. return 0;
  67. }
  68. arch_initcall(db1235_arch_init);
  69. int __init db1235_dev_init(void)
  70. {
  71. switch (BCSR_WHOAMI_BOARD(bcsr_read(BCSR_WHOAMI))) {
  72. case BCSR_WHOAMI_PB1200_DDR1:
  73. case BCSR_WHOAMI_PB1200_DDR2:
  74. case BCSR_WHOAMI_DB1200:
  75. return db1200_dev_setup();
  76. case BCSR_WHOAMI_DB1300:
  77. return db1300_dev_setup();
  78. case BCSR_WHOAMI_DB1550:
  79. case BCSR_WHOAMI_PB1550_SDR:
  80. case BCSR_WHOAMI_PB1550_DDR:
  81. return db1550_dev_setup();
  82. }
  83. return 0;
  84. }
  85. device_initcall(db1235_dev_init);