diff options
Diffstat (limited to 'arch/mips/alchemy/devboards/pb1200/platform.c')
-rw-r--r-- | arch/mips/alchemy/devboards/pb1200/platform.c | 63 |
1 files changed, 45 insertions, 18 deletions
diff --git a/arch/mips/alchemy/devboards/pb1200/platform.c b/arch/mips/alchemy/devboards/pb1200/platform.c index b93dff4a6789..3ef2dceeb796 100644 --- a/arch/mips/alchemy/devboards/pb1200/platform.c +++ b/arch/mips/alchemy/devboards/pb1200/platform.c | |||
@@ -26,27 +26,30 @@ | |||
26 | 26 | ||
27 | #include <asm/mach-au1x00/au1xxx.h> | 27 | #include <asm/mach-au1x00/au1xxx.h> |
28 | #include <asm/mach-au1x00/au1100_mmc.h> | 28 | #include <asm/mach-au1x00/au1100_mmc.h> |
29 | #include <asm/mach-db1x00/bcsr.h> | ||
30 | |||
31 | #include "../platform.h" | ||
29 | 32 | ||
30 | static int mmc_activity; | 33 | static int mmc_activity; |
31 | 34 | ||
32 | static void pb1200mmc0_set_power(void *mmc_host, int state) | 35 | static void pb1200mmc0_set_power(void *mmc_host, int state) |
33 | { | 36 | { |
34 | if (state) | 37 | if (state) |
35 | bcsr->board |= BCSR_BOARD_SD0PWR; | 38 | bcsr_mod(BCSR_BOARD, 0, BCSR_BOARD_SD0PWR); |
36 | else | 39 | else |
37 | bcsr->board &= ~BCSR_BOARD_SD0PWR; | 40 | bcsr_mod(BCSR_BOARD, BCSR_BOARD_SD0PWR, 0); |
38 | 41 | ||
39 | au_sync_delay(1); | 42 | msleep(1); |
40 | } | 43 | } |
41 | 44 | ||
42 | static int pb1200mmc0_card_readonly(void *mmc_host) | 45 | static int pb1200mmc0_card_readonly(void *mmc_host) |
43 | { | 46 | { |
44 | return (bcsr->status & BCSR_STATUS_SD0WP) ? 1 : 0; | 47 | return (bcsr_read(BCSR_STATUS) & BCSR_STATUS_SD0WP) ? 1 : 0; |
45 | } | 48 | } |
46 | 49 | ||
47 | static int pb1200mmc0_card_inserted(void *mmc_host) | 50 | static int pb1200mmc0_card_inserted(void *mmc_host) |
48 | { | 51 | { |
49 | return (bcsr->sig_status & BCSR_INT_SD0INSERT) ? 1 : 0; | 52 | return (bcsr_read(BCSR_SIGSTAT) & BCSR_INT_SD0INSERT) ? 1 : 0; |
50 | } | 53 | } |
51 | 54 | ||
52 | static void pb1200_mmcled_set(struct led_classdev *led, | 55 | static void pb1200_mmcled_set(struct led_classdev *led, |
@@ -54,10 +57,10 @@ static void pb1200_mmcled_set(struct led_classdev *led, | |||
54 | { | 57 | { |
55 | if (brightness != LED_OFF) { | 58 | if (brightness != LED_OFF) { |
56 | if (++mmc_activity == 1) | 59 | if (++mmc_activity == 1) |
57 | bcsr->disk_leds &= ~(1 << 8); | 60 | bcsr_mod(BCSR_LEDS, BCSR_LEDS_LED0, 0); |
58 | } else { | 61 | } else { |
59 | if (--mmc_activity == 0) | 62 | if (--mmc_activity == 0) |
60 | bcsr->disk_leds |= (1 << 8); | 63 | bcsr_mod(BCSR_LEDS, 0, BCSR_LEDS_LED0); |
61 | } | 64 | } |
62 | } | 65 | } |
63 | 66 | ||
@@ -65,27 +68,25 @@ static struct led_classdev pb1200mmc_led = { | |||
65 | .brightness_set = pb1200_mmcled_set, | 68 | .brightness_set = pb1200_mmcled_set, |
66 | }; | 69 | }; |
67 | 70 | ||
68 | #ifndef CONFIG_MIPS_DB1200 | ||
69 | static void pb1200mmc1_set_power(void *mmc_host, int state) | 71 | static void pb1200mmc1_set_power(void *mmc_host, int state) |
70 | { | 72 | { |
71 | if (state) | 73 | if (state) |
72 | bcsr->board |= BCSR_BOARD_SD1PWR; | 74 | bcsr_mod(BCSR_BOARD, 0, BCSR_BOARD_SD1PWR); |
73 | else | 75 | else |
74 | bcsr->board &= ~BCSR_BOARD_SD1PWR; | 76 | bcsr_mod(BCSR_BOARD, BCSR_BOARD_SD1PWR, 0); |
75 | 77 | ||
76 | au_sync_delay(1); | 78 | msleep(1); |
77 | } | 79 | } |
78 | 80 | ||
79 | static int pb1200mmc1_card_readonly(void *mmc_host) | 81 | static int pb1200mmc1_card_readonly(void *mmc_host) |
80 | { | 82 | { |
81 | return (bcsr->status & BCSR_STATUS_SD1WP) ? 1 : 0; | 83 | return (bcsr_read(BCSR_STATUS) & BCSR_STATUS_SD1WP) ? 1 : 0; |
82 | } | 84 | } |
83 | 85 | ||
84 | static int pb1200mmc1_card_inserted(void *mmc_host) | 86 | static int pb1200mmc1_card_inserted(void *mmc_host) |
85 | { | 87 | { |
86 | return (bcsr->sig_status & BCSR_INT_SD1INSERT) ? 1 : 0; | 88 | return (bcsr_read(BCSR_SIGSTAT) & BCSR_INT_SD1INSERT) ? 1 : 0; |
87 | } | 89 | } |
88 | #endif | ||
89 | 90 | ||
90 | const struct au1xmmc_platform_data au1xmmc_platdata[2] = { | 91 | const struct au1xmmc_platform_data au1xmmc_platdata[2] = { |
91 | [0] = { | 92 | [0] = { |
@@ -95,7 +96,6 @@ const struct au1xmmc_platform_data au1xmmc_platdata[2] = { | |||
95 | .cd_setup = NULL, /* use poll-timer in driver */ | 96 | .cd_setup = NULL, /* use poll-timer in driver */ |
96 | .led = &pb1200mmc_led, | 97 | .led = &pb1200mmc_led, |
97 | }, | 98 | }, |
98 | #ifndef CONFIG_MIPS_DB1200 | ||
99 | [1] = { | 99 | [1] = { |
100 | .set_power = pb1200mmc1_set_power, | 100 | .set_power = pb1200mmc1_set_power, |
101 | .card_inserted = pb1200mmc1_card_inserted, | 101 | .card_inserted = pb1200mmc1_card_inserted, |
@@ -103,7 +103,6 @@ const struct au1xmmc_platform_data au1xmmc_platdata[2] = { | |||
103 | .cd_setup = NULL, /* use poll-timer in driver */ | 103 | .cd_setup = NULL, /* use poll-timer in driver */ |
104 | .led = &pb1200mmc_led, | 104 | .led = &pb1200mmc_led, |
105 | }, | 105 | }, |
106 | #endif | ||
107 | }; | 106 | }; |
108 | 107 | ||
109 | static struct resource ide_resources[] = { | 108 | static struct resource ide_resources[] = { |
@@ -169,8 +168,36 @@ static struct platform_device *board_platform_devices[] __initdata = { | |||
169 | 168 | ||
170 | static int __init board_register_devices(void) | 169 | static int __init board_register_devices(void) |
171 | { | 170 | { |
171 | int swapped; | ||
172 | |||
173 | db1x_register_pcmcia_socket(PCMCIA_ATTR_PHYS_ADDR, | ||
174 | PCMCIA_ATTR_PHYS_ADDR + 0x000400000 - 1, | ||
175 | PCMCIA_MEM_PHYS_ADDR, | ||
176 | PCMCIA_MEM_PHYS_ADDR + 0x000400000 - 1, | ||
177 | PCMCIA_IO_PHYS_ADDR, | ||
178 | PCMCIA_IO_PHYS_ADDR + 0x000010000 - 1, | ||
179 | PB1200_PC0_INT, | ||
180 | PB1200_PC0_INSERT_INT, | ||
181 | /*PB1200_PC0_STSCHG_INT*/0, | ||
182 | PB1200_PC0_EJECT_INT, | ||
183 | 0); | ||
184 | |||
185 | db1x_register_pcmcia_socket(PCMCIA_ATTR_PHYS_ADDR + 0x008000000, | ||
186 | PCMCIA_ATTR_PHYS_ADDR + 0x008400000 - 1, | ||
187 | PCMCIA_MEM_PHYS_ADDR + 0x008000000, | ||
188 | PCMCIA_MEM_PHYS_ADDR + 0x008400000 - 1, | ||
189 | PCMCIA_IO_PHYS_ADDR + 0x008000000, | ||
190 | PCMCIA_IO_PHYS_ADDR + 0x008010000 - 1, | ||
191 | PB1200_PC1_INT, | ||
192 | PB1200_PC1_INSERT_INT, | ||
193 | /*PB1200_PC1_STSCHG_INT*/0, | ||
194 | PB1200_PC1_EJECT_INT, | ||
195 | 1); | ||
196 | |||
197 | swapped = bcsr_read(BCSR_STATUS) & BCSR_STATUS_DB1200_SWAPBOOT; | ||
198 | db1x_register_norflash(128 * 1024 * 1024, 2, swapped); | ||
199 | |||
172 | return platform_add_devices(board_platform_devices, | 200 | return platform_add_devices(board_platform_devices, |
173 | ARRAY_SIZE(board_platform_devices)); | 201 | ARRAY_SIZE(board_platform_devices)); |
174 | } | 202 | } |
175 | 203 | device_initcall(board_register_devices); | |
176 | arch_initcall(board_register_devices); | ||