Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0
0002 /*
0003  * Alchemy DB/PB1xxx board support.
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);