License cleanup: add SPDX GPL-2.0 license identifier to files with no license
[linux-block.git] / arch / mips / alchemy / devboards / db1xxx.c
CommitLineData
b2441318 1// SPDX-License-Identifier: GPL-2.0
bd8510df 2/*
970e268d 3 * Alchemy DB/PB1xxx board support.
bd8510df
ML
4 */
5
c7f78c4a 6#include <asm/prom.h>
bd8510df
ML
7#include <asm/mach-au1x00/au1000.h>
8#include <asm/mach-db1x00/bcsr.h>
9
970e268d
ML
10int __init db1000_board_setup(void);
11int __init db1000_dev_setup(void);
12int __init db1500_pci_setup(void);
bd8510df
ML
13int __init db1200_board_setup(void);
14int __init db1200_dev_setup(void);
15int __init db1300_board_setup(void);
16int __init db1300_dev_setup(void);
17int __init db1550_board_setup(void);
18int __init db1550_dev_setup(void);
24e8c1a6 19int __init db1550_pci_setup(int);
bd8510df
ML
20
21static const char *board_type_str(void)
22{
23 switch (BCSR_WHOAMI_BOARD(bcsr_read(BCSR_WHOAMI))) {
970e268d
ML
24 case BCSR_WHOAMI_DB1000:
25 return "DB1000";
26 case BCSR_WHOAMI_DB1500:
27 return "DB1500";
28 case BCSR_WHOAMI_DB1100:
29 return "DB1100";
30 case BCSR_WHOAMI_PB1500:
31 case BCSR_WHOAMI_PB1500R2:
32 return "PB1500";
33 case BCSR_WHOAMI_PB1100:
34 return "PB1100";
bd8510df
ML
35 case BCSR_WHOAMI_PB1200_DDR1:
36 case BCSR_WHOAMI_PB1200_DDR2:
37 return "PB1200";
38 case BCSR_WHOAMI_DB1200:
39 return "DB1200";
40 case BCSR_WHOAMI_DB1300:
41 return "DB1300";
42 case BCSR_WHOAMI_DB1550:
43 return "DB1550";
24e8c1a6
ML
44 case BCSR_WHOAMI_PB1550_SDR:
45 case BCSR_WHOAMI_PB1550_DDR:
46 return "PB1550";
bd8510df
ML
47 default:
48 return "(unknown)";
49 }
50}
51
52const char *get_system_type(void)
53{
54 return board_type_str();
55}
56
57void __init board_setup(void)
58{
59 int ret;
60
61 switch (alchemy_get_cputype()) {
970e268d
ML
62 case ALCHEMY_CPU_AU1000:
63 case ALCHEMY_CPU_AU1500:
64 case ALCHEMY_CPU_AU1100:
65 ret = db1000_board_setup();
66 break;
bd8510df
ML
67 case ALCHEMY_CPU_AU1550:
68 ret = db1550_board_setup();
69 break;
70 case ALCHEMY_CPU_AU1200:
71 ret = db1200_board_setup();
72 break;
73 case ALCHEMY_CPU_AU1300:
74 ret = db1300_board_setup();
75 break;
76 default:
77 pr_err("unsupported CPU on board\n");
78 ret = -ENODEV;
79 }
80 if (ret)
f7777dcc 81 panic("cannot initialize board support");
bd8510df
ML
82}
83
970e268d 84static int __init db1xxx_arch_init(void)
bd8510df 85{
24e8c1a6
ML
86 int id = BCSR_WHOAMI_BOARD(bcsr_read(BCSR_WHOAMI));
87 if (id == BCSR_WHOAMI_DB1550)
88 return db1550_pci_setup(0);
89 else if ((id == BCSR_WHOAMI_PB1550_SDR) ||
90 (id == BCSR_WHOAMI_PB1550_DDR))
91 return db1550_pci_setup(1);
970e268d
ML
92 else if ((id == BCSR_WHOAMI_DB1500) || (id == BCSR_WHOAMI_PB1500) ||
93 (id == BCSR_WHOAMI_PB1500R2))
94 return db1500_pci_setup();
24e8c1a6 95
bd8510df
ML
96 return 0;
97}
970e268d 98arch_initcall(db1xxx_arch_init);
bd8510df 99
970e268d 100static int __init db1xxx_dev_init(void)
bd8510df 101{
c7f78c4a 102 mips_set_machine_name(board_type_str());
bd8510df 103 switch (BCSR_WHOAMI_BOARD(bcsr_read(BCSR_WHOAMI))) {
970e268d
ML
104 case BCSR_WHOAMI_DB1000:
105 case BCSR_WHOAMI_DB1500:
106 case BCSR_WHOAMI_DB1100:
107 case BCSR_WHOAMI_PB1500:
108 case BCSR_WHOAMI_PB1500R2:
109 case BCSR_WHOAMI_PB1100:
110 return db1000_dev_setup();
bd8510df
ML
111 case BCSR_WHOAMI_PB1200_DDR1:
112 case BCSR_WHOAMI_PB1200_DDR2:
113 case BCSR_WHOAMI_DB1200:
114 return db1200_dev_setup();
115 case BCSR_WHOAMI_DB1300:
116 return db1300_dev_setup();
117 case BCSR_WHOAMI_DB1550:
24e8c1a6
ML
118 case BCSR_WHOAMI_PB1550_SDR:
119 case BCSR_WHOAMI_PB1550_DDR:
bd8510df
ML
120 return db1550_dev_setup();
121 }
122 return 0;
123}
970e268d 124device_initcall(db1xxx_dev_init);