Commit | Line | Data |
---|---|---|
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 |
10 | int __init db1000_board_setup(void); |
11 | int __init db1000_dev_setup(void); | |
12 | int __init db1500_pci_setup(void); | |
bd8510df ML |
13 | int __init db1200_board_setup(void); |
14 | int __init db1200_dev_setup(void); | |
15 | int __init db1300_board_setup(void); | |
16 | int __init db1300_dev_setup(void); | |
17 | int __init db1550_board_setup(void); | |
18 | int __init db1550_dev_setup(void); | |
24e8c1a6 | 19 | int __init db1550_pci_setup(int); |
bd8510df ML |
20 | |
21 | static 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 | ||
52 | const char *get_system_type(void) | |
53 | { | |
54 | return board_type_str(); | |
55 | } | |
56 | ||
57 | void __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 | 84 | static 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 | 98 | arch_initcall(db1xxx_arch_init); |
bd8510df | 99 | |
970e268d | 100 | static 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 | 124 | device_initcall(db1xxx_dev_init); |