0001
0002
0003
0004
0005
0006 #include <asm/prom.h>
0007 #include <asm/mach-au1x00/au1000.h>
0008 #include <asm/mach-db1x00/bcsr.h>
0009
0010 int __init db1000_board_setup(void);
0011 int __init db1000_dev_setup(void);
0012 int __init db1500_pci_setup(void);
0013 int __init db1200_board_setup(void);
0014 int __init db1200_dev_setup(void);
0015 int __init db1300_board_setup(void);
0016 int __init db1300_dev_setup(void);
0017 int __init db1550_board_setup(void);
0018 int __init db1550_dev_setup(void);
0019 int __init db1550_pci_setup(int);
0020
0021 static const char *board_type_str(void)
0022 {
0023 switch (BCSR_WHOAMI_BOARD(bcsr_read(BCSR_WHOAMI))) {
0024 case BCSR_WHOAMI_DB1000:
0025 return "DB1000";
0026 case BCSR_WHOAMI_DB1500:
0027 return "DB1500";
0028 case BCSR_WHOAMI_DB1100:
0029 return "DB1100";
0030 case BCSR_WHOAMI_PB1500:
0031 case BCSR_WHOAMI_PB1500R2:
0032 return "PB1500";
0033 case BCSR_WHOAMI_PB1100:
0034 return "PB1100";
0035 case BCSR_WHOAMI_PB1200_DDR1:
0036 case BCSR_WHOAMI_PB1200_DDR2:
0037 return "PB1200";
0038 case BCSR_WHOAMI_DB1200:
0039 return "DB1200";
0040 case BCSR_WHOAMI_DB1300:
0041 return "DB1300";
0042 case BCSR_WHOAMI_DB1550:
0043 return "DB1550";
0044 case BCSR_WHOAMI_PB1550_SDR:
0045 case BCSR_WHOAMI_PB1550_DDR:
0046 return "PB1550";
0047 default:
0048 return "(unknown)";
0049 }
0050 }
0051
0052 const char *get_system_type(void)
0053 {
0054 return board_type_str();
0055 }
0056
0057 void __init board_setup(void)
0058 {
0059 int ret;
0060
0061 switch (alchemy_get_cputype()) {
0062 case ALCHEMY_CPU_AU1000:
0063 case ALCHEMY_CPU_AU1500:
0064 case ALCHEMY_CPU_AU1100:
0065 ret = db1000_board_setup();
0066 break;
0067 case ALCHEMY_CPU_AU1550:
0068 ret = db1550_board_setup();
0069 break;
0070 case ALCHEMY_CPU_AU1200:
0071 ret = db1200_board_setup();
0072 break;
0073 case ALCHEMY_CPU_AU1300:
0074 ret = db1300_board_setup();
0075 break;
0076 default:
0077 pr_err("unsupported CPU on board\n");
0078 ret = -ENODEV;
0079 }
0080 if (ret)
0081 panic("cannot initialize board support");
0082 }
0083
0084 static int __init db1xxx_arch_init(void)
0085 {
0086 int id = BCSR_WHOAMI_BOARD(bcsr_read(BCSR_WHOAMI));
0087 if (id == BCSR_WHOAMI_DB1550)
0088 return db1550_pci_setup(0);
0089 else if ((id == BCSR_WHOAMI_PB1550_SDR) ||
0090 (id == BCSR_WHOAMI_PB1550_DDR))
0091 return db1550_pci_setup(1);
0092 else if ((id == BCSR_WHOAMI_DB1500) || (id == BCSR_WHOAMI_PB1500) ||
0093 (id == BCSR_WHOAMI_PB1500R2))
0094 return db1500_pci_setup();
0095
0096 return 0;
0097 }
0098 arch_initcall(db1xxx_arch_init);
0099
0100 static int __init db1xxx_dev_init(void)
0101 {
0102 mips_set_machine_name(board_type_str());
0103 switch (BCSR_WHOAMI_BOARD(bcsr_read(BCSR_WHOAMI))) {
0104 case BCSR_WHOAMI_DB1000:
0105 case BCSR_WHOAMI_DB1500:
0106 case BCSR_WHOAMI_DB1100:
0107 case BCSR_WHOAMI_PB1500:
0108 case BCSR_WHOAMI_PB1500R2:
0109 case BCSR_WHOAMI_PB1100:
0110 return db1000_dev_setup();
0111 case BCSR_WHOAMI_PB1200_DDR1:
0112 case BCSR_WHOAMI_PB1200_DDR2:
0113 case BCSR_WHOAMI_DB1200:
0114 return db1200_dev_setup();
0115 case BCSR_WHOAMI_DB1300:
0116 return db1300_dev_setup();
0117 case BCSR_WHOAMI_DB1550:
0118 case BCSR_WHOAMI_PB1550_SDR:
0119 case BCSR_WHOAMI_PB1550_DDR:
0120 return db1550_dev_setup();
0121 }
0122 return 0;
0123 }
0124 device_initcall(db1xxx_dev_init);