Commit 4adc5fb6733213ab68750f722630d1b9d5655bc1
Committed by
Russell King
1 parent
da591937ba
[ARM] 5281/1: pxa: split cm-x2xx.c to cm-x2xx.c and cm-x270.c
Signed-off-by: Russ Dill <russ.dill@gmail.com> Signed-off-by: Mike Rapoport <mike@compulab.co.il> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Showing 3 changed files with 356 additions and 331 deletions Side-by-side Diff
arch/arm/mach-pxa/Makefile
... | ... | @@ -53,7 +53,7 @@ |
53 | 53 | obj-$(CONFIG_MACH_TAVOREVB) += tavorevb.o |
54 | 54 | obj-$(CONFIG_MACH_SAAR) += saar.o |
55 | 55 | |
56 | -obj-$(CONFIG_MACH_ARMCORE) += cm-x2xx.o | |
56 | +obj-$(CONFIG_MACH_ARMCORE) += cm-x2xx.o cm-x270.o | |
57 | 57 | obj-$(CONFIG_MACH_CM_X300) += cm-x300.o |
58 | 58 | obj-$(CONFIG_PXA_EZX) += ezx.o |
59 | 59 |
arch/arm/mach-pxa/cm-x270.c
1 | +/* | |
2 | + * linux/arch/arm/mach-pxa/cm-x270.c | |
3 | + * | |
4 | + * Copyright (C) 2007, 2008 CompuLab, Ltd. | |
5 | + * Mike Rapoport <mike@compulab.co.il> | |
6 | + * | |
7 | + * This program is free software; you can redistribute it and/or modify | |
8 | + * it under the terms of the GNU General Public License version 2 as | |
9 | + * published by the Free Software Foundation. | |
10 | + */ | |
11 | + | |
12 | +#include <linux/platform_device.h> | |
13 | +#include <linux/sysdev.h> | |
14 | +#include <linux/irq.h> | |
15 | +#include <linux/gpio.h> | |
16 | + | |
17 | +#include <linux/rtc-v3020.h> | |
18 | +#include <video/mbxfb.h> | |
19 | + | |
20 | +#include <mach/mfp-pxa27x.h> | |
21 | +#include <mach/ohci.h> | |
22 | +#include <mach/mmc.h> | |
23 | + | |
24 | +#include "generic.h" | |
25 | + | |
26 | +/* physical address if local-bus attached devices */ | |
27 | +#define RTC_PHYS_BASE (PXA_CS1_PHYS + (5 << 22)) | |
28 | + | |
29 | +/* GPIO IRQ usage */ | |
30 | +#define GPIO83_MMC_IRQ (83) | |
31 | + | |
32 | +#define CMX270_MMC_IRQ IRQ_GPIO(GPIO83_MMC_IRQ) | |
33 | + | |
34 | +/* MMC power enable */ | |
35 | +#define GPIO105_MMC_POWER (105) | |
36 | + | |
37 | +static unsigned long cmx270_pin_config[] = { | |
38 | + /* AC'97 */ | |
39 | + GPIO28_AC97_BITCLK, | |
40 | + GPIO29_AC97_SDATA_IN_0, | |
41 | + GPIO30_AC97_SDATA_OUT, | |
42 | + GPIO31_AC97_SYNC, | |
43 | + GPIO98_AC97_SYSCLK, | |
44 | + GPIO113_AC97_nRESET, | |
45 | + | |
46 | + /* BTUART */ | |
47 | + GPIO42_BTUART_RXD, | |
48 | + GPIO43_BTUART_TXD, | |
49 | + GPIO44_BTUART_CTS, | |
50 | + GPIO45_BTUART_RTS, | |
51 | + | |
52 | + /* STUART */ | |
53 | + GPIO46_STUART_RXD, | |
54 | + GPIO47_STUART_TXD, | |
55 | + | |
56 | + /* MCI controller */ | |
57 | + GPIO32_MMC_CLK, | |
58 | + GPIO112_MMC_CMD, | |
59 | + GPIO92_MMC_DAT_0, | |
60 | + GPIO109_MMC_DAT_1, | |
61 | + GPIO110_MMC_DAT_2, | |
62 | + GPIO111_MMC_DAT_3, | |
63 | + | |
64 | + /* LCD */ | |
65 | + GPIO58_LCD_LDD_0, | |
66 | + GPIO59_LCD_LDD_1, | |
67 | + GPIO60_LCD_LDD_2, | |
68 | + GPIO61_LCD_LDD_3, | |
69 | + GPIO62_LCD_LDD_4, | |
70 | + GPIO63_LCD_LDD_5, | |
71 | + GPIO64_LCD_LDD_6, | |
72 | + GPIO65_LCD_LDD_7, | |
73 | + GPIO66_LCD_LDD_8, | |
74 | + GPIO67_LCD_LDD_9, | |
75 | + GPIO68_LCD_LDD_10, | |
76 | + GPIO69_LCD_LDD_11, | |
77 | + GPIO70_LCD_LDD_12, | |
78 | + GPIO71_LCD_LDD_13, | |
79 | + GPIO72_LCD_LDD_14, | |
80 | + GPIO73_LCD_LDD_15, | |
81 | + GPIO74_LCD_FCLK, | |
82 | + GPIO75_LCD_LCLK, | |
83 | + GPIO76_LCD_PCLK, | |
84 | + GPIO77_LCD_BIAS, | |
85 | + | |
86 | + /* I2C */ | |
87 | + GPIO117_I2C_SCL, | |
88 | + GPIO118_I2C_SDA, | |
89 | + | |
90 | + /* SSP1 */ | |
91 | + GPIO23_SSP1_SCLK, | |
92 | + GPIO24_SSP1_SFRM, | |
93 | + GPIO25_SSP1_TXD, | |
94 | + GPIO26_SSP1_RXD, | |
95 | + | |
96 | + /* SSP2 */ | |
97 | + GPIO19_SSP2_SCLK, | |
98 | + GPIO14_SSP2_SFRM, | |
99 | + GPIO87_SSP2_TXD, | |
100 | + GPIO88_SSP2_RXD, | |
101 | + | |
102 | + /* PC Card */ | |
103 | + GPIO48_nPOE, | |
104 | + GPIO49_nPWE, | |
105 | + GPIO50_nPIOR, | |
106 | + GPIO51_nPIOW, | |
107 | + GPIO85_nPCE_1, | |
108 | + GPIO54_nPCE_2, | |
109 | + GPIO55_nPREG, | |
110 | + GPIO56_nPWAIT, | |
111 | + GPIO57_nIOIS16, | |
112 | + | |
113 | + /* SDRAM and local bus */ | |
114 | + GPIO15_nCS_1, | |
115 | + GPIO78_nCS_2, | |
116 | + GPIO79_nCS_3, | |
117 | + GPIO80_nCS_4, | |
118 | + GPIO33_nCS_5, | |
119 | + GPIO49_nPWE, | |
120 | + GPIO18_RDY, | |
121 | + | |
122 | + /* GPIO */ | |
123 | + GPIO0_GPIO | WAKEUP_ON_EDGE_BOTH, | |
124 | + GPIO105_GPIO | MFP_LPM_DRIVE_HIGH, /* MMC/SD power */ | |
125 | + GPIO53_GPIO, /* PC card reset */ | |
126 | + | |
127 | + /* NAND controls */ | |
128 | + GPIO11_GPIO | MFP_LPM_DRIVE_HIGH, /* NAND CE# */ | |
129 | + GPIO89_GPIO, /* NAND Ready/Busy */ | |
130 | + | |
131 | + /* interrupts */ | |
132 | + GPIO10_GPIO, /* DM9000 interrupt */ | |
133 | + GPIO83_GPIO, /* MMC card detect */ | |
134 | +}; | |
135 | + | |
136 | +/* V3020 RTC */ | |
137 | +#if defined(CONFIG_RTC_DRV_V3020) || defined(CONFIG_RTC_DRV_V3020_MODULE) | |
138 | +static struct resource cmx270_v3020_resource[] = { | |
139 | + [0] = { | |
140 | + .start = RTC_PHYS_BASE, | |
141 | + .end = RTC_PHYS_BASE + 4, | |
142 | + .flags = IORESOURCE_MEM, | |
143 | + }, | |
144 | +}; | |
145 | + | |
146 | +struct v3020_platform_data cmx270_v3020_pdata = { | |
147 | + .leftshift = 16, | |
148 | +}; | |
149 | + | |
150 | +static struct platform_device cmx270_rtc_device = { | |
151 | + .name = "v3020", | |
152 | + .num_resources = ARRAY_SIZE(cmx270_v3020_resource), | |
153 | + .resource = cmx270_v3020_resource, | |
154 | + .id = -1, | |
155 | + .dev = { | |
156 | + .platform_data = &cmx270_v3020_pdata, | |
157 | + } | |
158 | +}; | |
159 | + | |
160 | +static void __init cmx270_init_rtc(void) | |
161 | +{ | |
162 | + platform_device_register(&cmx270_rtc_device); | |
163 | +} | |
164 | +#else | |
165 | +static inline void cmx2xx_init_rtc(void) {} | |
166 | +#endif | |
167 | + | |
168 | +/* 2700G graphics */ | |
169 | +#if defined(CONFIG_FB_MBX) || defined(CONFIG_FB_MBX_MODULE) | |
170 | +static u64 fb_dma_mask = ~(u64)0; | |
171 | + | |
172 | +static struct resource cmx270_2700G_resource[] = { | |
173 | + /* frame buffer memory including ODFB and External SDRAM */ | |
174 | + [0] = { | |
175 | + .start = PXA_CS2_PHYS, | |
176 | + .end = PXA_CS2_PHYS + 0x01ffffff, | |
177 | + .flags = IORESOURCE_MEM, | |
178 | + }, | |
179 | + /* Marathon registers */ | |
180 | + [1] = { | |
181 | + .start = PXA_CS2_PHYS + 0x03fe0000, | |
182 | + .end = PXA_CS2_PHYS + 0x03ffffff, | |
183 | + .flags = IORESOURCE_MEM, | |
184 | + }, | |
185 | +}; | |
186 | + | |
187 | +static unsigned long save_lcd_regs[10]; | |
188 | + | |
189 | +static int cmx270_marathon_probe(struct fb_info *fb) | |
190 | +{ | |
191 | + /* save PXA-270 pin settings before enabling 2700G */ | |
192 | + save_lcd_regs[0] = GPDR1; | |
193 | + save_lcd_regs[1] = GPDR2; | |
194 | + save_lcd_regs[2] = GAFR1_U; | |
195 | + save_lcd_regs[3] = GAFR2_L; | |
196 | + save_lcd_regs[4] = GAFR2_U; | |
197 | + | |
198 | + /* Disable PXA-270 on-chip controller driving pins */ | |
199 | + GPDR1 &= ~(0xfc000000); | |
200 | + GPDR2 &= ~(0x00c03fff); | |
201 | + GAFR1_U &= ~(0xfff00000); | |
202 | + GAFR2_L &= ~(0x0fffffff); | |
203 | + GAFR2_U &= ~(0x0000f000); | |
204 | + return 0; | |
205 | +} | |
206 | + | |
207 | +static int cmx270_marathon_remove(struct fb_info *fb) | |
208 | +{ | |
209 | + GPDR1 = save_lcd_regs[0]; | |
210 | + GPDR2 = save_lcd_regs[1]; | |
211 | + GAFR1_U = save_lcd_regs[2]; | |
212 | + GAFR2_L = save_lcd_regs[3]; | |
213 | + GAFR2_U = save_lcd_regs[4]; | |
214 | + return 0; | |
215 | +} | |
216 | + | |
217 | +static struct mbxfb_platform_data cmx270_2700G_data = { | |
218 | + .xres = { | |
219 | + .min = 240, | |
220 | + .max = 1200, | |
221 | + .defval = 640, | |
222 | + }, | |
223 | + .yres = { | |
224 | + .min = 240, | |
225 | + .max = 1200, | |
226 | + .defval = 480, | |
227 | + }, | |
228 | + .bpp = { | |
229 | + .min = 16, | |
230 | + .max = 32, | |
231 | + .defval = 16, | |
232 | + }, | |
233 | + .memsize = 8*1024*1024, | |
234 | + .probe = cmx270_marathon_probe, | |
235 | + .remove = cmx270_marathon_remove, | |
236 | +}; | |
237 | + | |
238 | +static struct platform_device cmx270_2700G = { | |
239 | + .name = "mbx-fb", | |
240 | + .dev = { | |
241 | + .platform_data = &cmx270_2700G_data, | |
242 | + .dma_mask = &fb_dma_mask, | |
243 | + .coherent_dma_mask = 0xffffffff, | |
244 | + }, | |
245 | + .num_resources = ARRAY_SIZE(cmx270_2700G_resource), | |
246 | + .resource = cmx270_2700G_resource, | |
247 | + .id = -1, | |
248 | +}; | |
249 | + | |
250 | +static void __init cmx270_init_2700G(void) | |
251 | +{ | |
252 | + platform_device_register(&cmx270_2700G); | |
253 | +} | |
254 | +#else | |
255 | +static inline void cmx270_init_2700G(void) {} | |
256 | +#endif | |
257 | + | |
258 | +/* PXA27x OHCI controller setup */ | |
259 | +#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE) | |
260 | +static int cmx270_ohci_init(struct device *dev) | |
261 | +{ | |
262 | + /* Set the Power Control Polarity Low */ | |
263 | + UHCHR = (UHCHR | UHCHR_PCPL) & | |
264 | + ~(UHCHR_SSEP1 | UHCHR_SSEP2 | UHCHR_SSE); | |
265 | + | |
266 | + return 0; | |
267 | +} | |
268 | + | |
269 | +static struct pxaohci_platform_data cmx270_ohci_platform_data = { | |
270 | + .port_mode = PMM_PERPORT_MODE, | |
271 | + .init = cmx270_ohci_init, | |
272 | +}; | |
273 | + | |
274 | +static void __init cmx270_init_ohci(void) | |
275 | +{ | |
276 | + pxa_set_ohci_info(&cmx270_ohci_platform_data); | |
277 | +} | |
278 | +#else | |
279 | +static inline void cmx270_init_ohci(void) {} | |
280 | +#endif | |
281 | + | |
282 | +#if defined(CONFIG_MMC) || defined(CONFIG_MMC_MODULE) | |
283 | +static int cmx270_mci_init(struct device *dev, | |
284 | + irq_handler_t cmx270_detect_int, | |
285 | + void *data) | |
286 | +{ | |
287 | + int err; | |
288 | + | |
289 | + err = gpio_request(GPIO105_MMC_POWER, "MMC/SD power"); | |
290 | + if (err) { | |
291 | + dev_warn(dev, "power gpio unavailable\n"); | |
292 | + return err; | |
293 | + } | |
294 | + | |
295 | + gpio_direction_output(GPIO105_MMC_POWER, 0); | |
296 | + | |
297 | + err = request_irq(CMX270_MMC_IRQ, cmx270_detect_int, | |
298 | + IRQF_DISABLED | IRQF_TRIGGER_FALLING, | |
299 | + "MMC card detect", data); | |
300 | + if (err) { | |
301 | + gpio_free(GPIO105_MMC_POWER); | |
302 | + dev_err(dev, "cmx270_mci_init: MMC/SD: can't" | |
303 | + " request MMC card detect IRQ\n"); | |
304 | + } | |
305 | + | |
306 | + return err; | |
307 | +} | |
308 | + | |
309 | +static void cmx270_mci_setpower(struct device *dev, unsigned int vdd) | |
310 | +{ | |
311 | + struct pxamci_platform_data *p_d = dev->platform_data; | |
312 | + | |
313 | + if ((1 << vdd) & p_d->ocr_mask) { | |
314 | + dev_dbg(dev, "power on\n"); | |
315 | + gpio_set_value(GPIO105_MMC_POWER, 0); | |
316 | + } else { | |
317 | + gpio_set_value(GPIO105_MMC_POWER, 1); | |
318 | + dev_dbg(dev, "power off\n"); | |
319 | + } | |
320 | +} | |
321 | + | |
322 | +static void cmx270_mci_exit(struct device *dev, void *data) | |
323 | +{ | |
324 | + free_irq(CMX270_MMC_IRQ, data); | |
325 | + gpio_free(GPIO105_MMC_POWER); | |
326 | +} | |
327 | + | |
328 | +static struct pxamci_platform_data cmx270_mci_platform_data = { | |
329 | + .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, | |
330 | + .init = cmx270_mci_init, | |
331 | + .setpower = cmx270_mci_setpower, | |
332 | + .exit = cmx270_mci_exit, | |
333 | +}; | |
334 | + | |
335 | +static void __init cmx270_init_mmc(void) | |
336 | +{ | |
337 | + pxa_set_mci_info(&cmx270_mci_platform_data); | |
338 | +} | |
339 | +#else | |
340 | +static inline void cmx270_init_mmc(void) {} | |
341 | +#endif | |
342 | + | |
343 | +void __init cmx270_init(void) | |
344 | +{ | |
345 | + pxa2xx_mfp_config(ARRAY_AND_SIZE(cmx270_pin_config)); | |
346 | + | |
347 | + cmx270_init_rtc(); | |
348 | + cmx270_init_mmc(); | |
349 | + cmx270_init_ohci(); | |
350 | + cmx270_init_2700G(); | |
351 | +} |
arch/arm/mach-pxa/cm-x2xx.c
1 | 1 | /* |
2 | 2 | * linux/arch/arm/mach-pxa/cm-x2xx.c |
3 | 3 | * |
4 | - * Copyright (C) 2007, 2008 CompuLab, Ltd. | |
4 | + * Copyright (C) 2008 CompuLab, Ltd. | |
5 | 5 | * Mike Rapoport <mike@compulab.co.il> |
6 | 6 | * |
7 | 7 | * This program is free software; you can redistribute it and/or modify |
... | ... | @@ -15,8 +15,6 @@ |
15 | 15 | #include <linux/gpio.h> |
16 | 16 | |
17 | 17 | #include <linux/dm9000.h> |
18 | -#include <linux/rtc-v3020.h> | |
19 | -#include <video/mbxfb.h> | |
20 | 18 | #include <linux/leds.h> |
21 | 19 | |
22 | 20 | #include <asm/mach/arch.h> |
23 | 21 | |
24 | 22 | |
... | ... | @@ -28,20 +26,19 @@ |
28 | 26 | #include <mach/pxa-regs.h> |
29 | 27 | #include <mach/audio.h> |
30 | 28 | #include <mach/pxafb.h> |
31 | -#include <mach/ohci.h> | |
32 | -#include <mach/mmc.h> | |
33 | -#include <mach/bitfield.h> | |
34 | 29 | |
35 | 30 | #include <asm/hardware/it8152.h> |
36 | 31 | |
37 | 32 | #include "generic.h" |
38 | 33 | #include "cm-x2xx-pci.h" |
39 | 34 | |
35 | +extern void cmx270_init(void); | |
36 | + | |
40 | 37 | /* virtual addresses for statically mapped regions */ |
41 | 38 | #define CMX2XX_VIRT_BASE (0xe8000000) |
42 | 39 | #define CMX2XX_IT8152_VIRT (CMX2XX_VIRT_BASE) |
43 | 40 | |
44 | -#define RTC_PHYS_BASE (PXA_CS1_PHYS + (5 << 22)) | |
41 | +/* physical address if local-bus attached devices */ | |
45 | 42 | #define CMX270_DM9000_PHYS_BASE (PXA_CS1_PHYS + (6 << 22)) |
46 | 43 | |
47 | 44 | /* leds */ |
48 | 45 | |
49 | 46 | |
... | ... | @@ -51,115 +48,9 @@ |
51 | 48 | /* GPIO IRQ usage */ |
52 | 49 | #define GPIO10_ETHIRQ (10) |
53 | 50 | #define CMX270_GPIO_IT8152_IRQ (22) |
54 | -#define GPIO83_MMC_IRQ (83) | |
55 | -#define GPIO95_GFXIRQ (95) | |
56 | 51 | |
57 | 52 | #define CMX270_ETHIRQ IRQ_GPIO(GPIO10_ETHIRQ) |
58 | -#define CMX270_MMC_IRQ IRQ_GPIO(GPIO83_MMC_IRQ) | |
59 | -#define CMX270_GFXIRQ IRQ_GPIO(GPIO95_GFXIRQ) | |
60 | 53 | |
61 | -/* MMC power enable */ | |
62 | -#define GPIO105_MMC_POWER (105) | |
63 | - | |
64 | -static unsigned long cmx270_pin_config[] = { | |
65 | - /* AC'97 */ | |
66 | - GPIO28_AC97_BITCLK, | |
67 | - GPIO29_AC97_SDATA_IN_0, | |
68 | - GPIO30_AC97_SDATA_OUT, | |
69 | - GPIO31_AC97_SYNC, | |
70 | - GPIO98_AC97_SYSCLK, | |
71 | - GPIO113_AC97_nRESET, | |
72 | - | |
73 | - /* BTUART */ | |
74 | - GPIO42_BTUART_RXD, | |
75 | - GPIO43_BTUART_TXD, | |
76 | - GPIO44_BTUART_CTS, | |
77 | - GPIO45_BTUART_RTS, | |
78 | - | |
79 | - /* STUART */ | |
80 | - GPIO46_STUART_RXD, | |
81 | - GPIO47_STUART_TXD, | |
82 | - | |
83 | - /* MCI controller */ | |
84 | - GPIO32_MMC_CLK, | |
85 | - GPIO112_MMC_CMD, | |
86 | - GPIO92_MMC_DAT_0, | |
87 | - GPIO109_MMC_DAT_1, | |
88 | - GPIO110_MMC_DAT_2, | |
89 | - GPIO111_MMC_DAT_3, | |
90 | - | |
91 | - /* LCD */ | |
92 | - GPIO58_LCD_LDD_0, | |
93 | - GPIO59_LCD_LDD_1, | |
94 | - GPIO60_LCD_LDD_2, | |
95 | - GPIO61_LCD_LDD_3, | |
96 | - GPIO62_LCD_LDD_4, | |
97 | - GPIO63_LCD_LDD_5, | |
98 | - GPIO64_LCD_LDD_6, | |
99 | - GPIO65_LCD_LDD_7, | |
100 | - GPIO66_LCD_LDD_8, | |
101 | - GPIO67_LCD_LDD_9, | |
102 | - GPIO68_LCD_LDD_10, | |
103 | - GPIO69_LCD_LDD_11, | |
104 | - GPIO70_LCD_LDD_12, | |
105 | - GPIO71_LCD_LDD_13, | |
106 | - GPIO72_LCD_LDD_14, | |
107 | - GPIO73_LCD_LDD_15, | |
108 | - GPIO74_LCD_FCLK, | |
109 | - GPIO75_LCD_LCLK, | |
110 | - GPIO76_LCD_PCLK, | |
111 | - GPIO77_LCD_BIAS, | |
112 | - | |
113 | - /* I2C */ | |
114 | - GPIO117_I2C_SCL, | |
115 | - GPIO118_I2C_SDA, | |
116 | - | |
117 | - /* SSP1 */ | |
118 | - GPIO23_SSP1_SCLK, | |
119 | - GPIO24_SSP1_SFRM, | |
120 | - GPIO25_SSP1_TXD, | |
121 | - GPIO26_SSP1_RXD, | |
122 | - | |
123 | - /* SSP2 */ | |
124 | - GPIO19_SSP2_SCLK, | |
125 | - GPIO14_SSP2_SFRM, | |
126 | - GPIO87_SSP2_TXD, | |
127 | - GPIO88_SSP2_RXD, | |
128 | - | |
129 | - /* PC Card */ | |
130 | - GPIO48_nPOE, | |
131 | - GPIO49_nPWE, | |
132 | - GPIO50_nPIOR, | |
133 | - GPIO51_nPIOW, | |
134 | - GPIO85_nPCE_1, | |
135 | - GPIO54_nPCE_2, | |
136 | - GPIO55_nPREG, | |
137 | - GPIO56_nPWAIT, | |
138 | - GPIO57_nIOIS16, | |
139 | - | |
140 | - /* SDRAM and local bus */ | |
141 | - GPIO15_nCS_1, | |
142 | - GPIO78_nCS_2, | |
143 | - GPIO79_nCS_3, | |
144 | - GPIO80_nCS_4, | |
145 | - GPIO33_nCS_5, | |
146 | - GPIO49_nPWE, | |
147 | - GPIO18_RDY, | |
148 | - | |
149 | - /* GPIO */ | |
150 | - GPIO0_GPIO | WAKEUP_ON_EDGE_BOTH, | |
151 | - GPIO105_GPIO | MFP_LPM_DRIVE_HIGH, /* MMC/SD power */ | |
152 | - GPIO53_GPIO, /* PC card reset */ | |
153 | - | |
154 | - /* NAND controls */ | |
155 | - GPIO11_GPIO | MFP_LPM_DRIVE_HIGH, /* NAND CE# */ | |
156 | - GPIO89_GPIO, /* NAND Ready/Busy */ | |
157 | - | |
158 | - /* interrupts */ | |
159 | - GPIO10_GPIO, /* DM9000 interrupt */ | |
160 | - GPIO83_GPIO, /* MMC card detect */ | |
161 | -}; | |
162 | - | |
163 | 54 | #if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE) |
164 | 55 | static struct resource cmx270_dm9000_resource[] = { |
165 | 56 | [0] = { |
... | ... | @@ -216,38 +107,6 @@ |
216 | 107 | static inline void cmx2xx_init_touchscreen(void) {} |
217 | 108 | #endif |
218 | 109 | |
219 | -/* V3020 RTC */ | |
220 | -#if defined(CONFIG_RTC_DRV_V3020) || defined(CONFIG_RTC_DRV_V3020_MODULE) | |
221 | -static struct resource cmx270_v3020_resource[] = { | |
222 | - [0] = { | |
223 | - .start = RTC_PHYS_BASE, | |
224 | - .end = RTC_PHYS_BASE + 4, | |
225 | - .flags = IORESOURCE_MEM, | |
226 | - }, | |
227 | -}; | |
228 | - | |
229 | -struct v3020_platform_data cmx270_v3020_pdata = { | |
230 | - .leftshift = 16, | |
231 | -}; | |
232 | - | |
233 | -static struct platform_device cmx270_rtc_device = { | |
234 | - .name = "v3020", | |
235 | - .num_resources = ARRAY_SIZE(cmx270_v3020_resource), | |
236 | - .resource = cmx270_v3020_resource, | |
237 | - .id = -1, | |
238 | - .dev = { | |
239 | - .platform_data = &cmx270_v3020_pdata, | |
240 | - } | |
241 | -}; | |
242 | - | |
243 | -static void __init cmx270_init_rtc(void) | |
244 | -{ | |
245 | - platform_device_register(&cmx270_rtc_device); | |
246 | -} | |
247 | -#else | |
248 | -static inline void cmx2xx_init_rtc(void) {} | |
249 | -#endif | |
250 | - | |
251 | 110 | /* CM-X270 LEDs */ |
252 | 111 | #if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE) |
253 | 112 | static struct gpio_led cmx2xx_leds[] = { |
... | ... | @@ -286,96 +145,6 @@ |
286 | 145 | static inline void cmx2xx_init_leds(void) {} |
287 | 146 | #endif |
288 | 147 | |
289 | -/* 2700G graphics */ | |
290 | -#if defined(CONFIG_FB_MBX) || defined(CONFIG_FB_MBX_MODULE) | |
291 | -static u64 fb_dma_mask = ~(u64)0; | |
292 | - | |
293 | -static struct resource cmx270_2700G_resource[] = { | |
294 | - /* frame buffer memory including ODFB and External SDRAM */ | |
295 | - [0] = { | |
296 | - .start = PXA_CS2_PHYS, | |
297 | - .end = PXA_CS2_PHYS + 0x01ffffff, | |
298 | - .flags = IORESOURCE_MEM, | |
299 | - }, | |
300 | - /* Marathon registers */ | |
301 | - [1] = { | |
302 | - .start = PXA_CS2_PHYS + 0x03fe0000, | |
303 | - .end = PXA_CS2_PHYS + 0x03ffffff, | |
304 | - .flags = IORESOURCE_MEM, | |
305 | - }, | |
306 | -}; | |
307 | - | |
308 | -static unsigned long save_lcd_regs[10]; | |
309 | - | |
310 | -static int cmx270_marathon_probe(struct fb_info *fb) | |
311 | -{ | |
312 | - /* save PXA-270 pin settings before enabling 2700G */ | |
313 | - save_lcd_regs[0] = GPDR1; | |
314 | - save_lcd_regs[1] = GPDR2; | |
315 | - save_lcd_regs[2] = GAFR1_U; | |
316 | - save_lcd_regs[3] = GAFR2_L; | |
317 | - save_lcd_regs[4] = GAFR2_U; | |
318 | - | |
319 | - /* Disable PXA-270 on-chip controller driving pins */ | |
320 | - GPDR1 &= ~(0xfc000000); | |
321 | - GPDR2 &= ~(0x00c03fff); | |
322 | - GAFR1_U &= ~(0xfff00000); | |
323 | - GAFR2_L &= ~(0x0fffffff); | |
324 | - GAFR2_U &= ~(0x0000f000); | |
325 | - return 0; | |
326 | -} | |
327 | - | |
328 | -static int cmx270_marathon_remove(struct fb_info *fb) | |
329 | -{ | |
330 | - GPDR1 = save_lcd_regs[0]; | |
331 | - GPDR2 = save_lcd_regs[1]; | |
332 | - GAFR1_U = save_lcd_regs[2]; | |
333 | - GAFR2_L = save_lcd_regs[3]; | |
334 | - GAFR2_U = save_lcd_regs[4]; | |
335 | - return 0; | |
336 | -} | |
337 | - | |
338 | -static struct mbxfb_platform_data cmx270_2700G_data = { | |
339 | - .xres = { | |
340 | - .min = 240, | |
341 | - .max = 1200, | |
342 | - .defval = 640, | |
343 | - }, | |
344 | - .yres = { | |
345 | - .min = 240, | |
346 | - .max = 1200, | |
347 | - .defval = 480, | |
348 | - }, | |
349 | - .bpp = { | |
350 | - .min = 16, | |
351 | - .max = 32, | |
352 | - .defval = 16, | |
353 | - }, | |
354 | - .memsize = 8*1024*1024, | |
355 | - .probe = cmx270_marathon_probe, | |
356 | - .remove = cmx270_marathon_remove, | |
357 | -}; | |
358 | - | |
359 | -static struct platform_device cmx270_2700G = { | |
360 | - .name = "mbx-fb", | |
361 | - .dev = { | |
362 | - .platform_data = &cmx270_2700G_data, | |
363 | - .dma_mask = &fb_dma_mask, | |
364 | - .coherent_dma_mask = 0xffffffff, | |
365 | - }, | |
366 | - .num_resources = ARRAY_SIZE(cmx270_2700G_resource), | |
367 | - .resource = cmx270_2700G_resource, | |
368 | - .id = -1, | |
369 | -}; | |
370 | - | |
371 | -static void __init cmx270_init_2700G(void) | |
372 | -{ | |
373 | - platform_device_register(&cmx270_2700G); | |
374 | -} | |
375 | -#else | |
376 | -static inline void cmx270_init_2700G(void) {} | |
377 | -#endif | |
378 | - | |
379 | 148 | #if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) |
380 | 149 | /* |
381 | 150 | Display definitions |
... | ... | @@ -594,91 +363,6 @@ |
594 | 363 | static inline void cmx2xx_init_display(void) {} |
595 | 364 | #endif |
596 | 365 | |
597 | -/* PXA27x OHCI controller setup */ | |
598 | -#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE) | |
599 | -static int cmx270_ohci_init(struct device *dev) | |
600 | -{ | |
601 | - /* Set the Power Control Polarity Low */ | |
602 | - UHCHR = (UHCHR | UHCHR_PCPL) & | |
603 | - ~(UHCHR_SSEP1 | UHCHR_SSEP2 | UHCHR_SSE); | |
604 | - | |
605 | - return 0; | |
606 | -} | |
607 | - | |
608 | -static struct pxaohci_platform_data cmx270_ohci_platform_data = { | |
609 | - .port_mode = PMM_PERPORT_MODE, | |
610 | - .init = cmx270_ohci_init, | |
611 | -}; | |
612 | - | |
613 | -static void __init cmx270_init_ohci(void) | |
614 | -{ | |
615 | - pxa_set_ohci_info(&cmx270_ohci_platform_data); | |
616 | -} | |
617 | -#else | |
618 | -static inline void cmx270_init_ohci(void) {} | |
619 | -#endif | |
620 | - | |
621 | -#if defined(CONFIG_MMC) || defined(CONFIG_MMC_MODULE) | |
622 | -static int cmx270_mci_init(struct device *dev, | |
623 | - irq_handler_t cmx270_detect_int, | |
624 | - void *data) | |
625 | -{ | |
626 | - int err; | |
627 | - | |
628 | - err = gpio_request(GPIO105_MMC_POWER, "MMC/SD power"); | |
629 | - if (err) { | |
630 | - dev_warn(dev, "power gpio unavailable\n"); | |
631 | - return err; | |
632 | - } | |
633 | - | |
634 | - gpio_direction_output(GPIO105_MMC_POWER, 0); | |
635 | - | |
636 | - err = request_irq(CMX270_MMC_IRQ, cmx270_detect_int, | |
637 | - IRQF_DISABLED | IRQF_TRIGGER_FALLING, | |
638 | - "MMC card detect", data); | |
639 | - if (err) { | |
640 | - gpio_free(GPIO105_MMC_POWER); | |
641 | - dev_err(dev, "cmx270_mci_init: MMC/SD: can't" | |
642 | - " request MMC card detect IRQ\n"); | |
643 | - } | |
644 | - | |
645 | - return err; | |
646 | -} | |
647 | - | |
648 | -static void cmx270_mci_setpower(struct device *dev, unsigned int vdd) | |
649 | -{ | |
650 | - struct pxamci_platform_data *p_d = dev->platform_data; | |
651 | - | |
652 | - if ((1 << vdd) & p_d->ocr_mask) { | |
653 | - dev_dbg(dev, "power on\n"); | |
654 | - gpio_set_value(GPIO105_MMC_POWER, 0); | |
655 | - } else { | |
656 | - gpio_set_value(GPIO105_MMC_POWER, 1); | |
657 | - dev_dbg(dev, "power off\n"); | |
658 | - } | |
659 | -} | |
660 | - | |
661 | -static void cmx270_mci_exit(struct device *dev, void *data) | |
662 | -{ | |
663 | - free_irq(CMX270_MMC_IRQ, data); | |
664 | - gpio_free(GPIO105_MMC_POWER); | |
665 | -} | |
666 | - | |
667 | -static struct pxamci_platform_data cmx270_mci_platform_data = { | |
668 | - .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, | |
669 | - .init = cmx270_mci_init, | |
670 | - .setpower = cmx270_mci_setpower, | |
671 | - .exit = cmx270_mci_exit, | |
672 | -}; | |
673 | - | |
674 | -static void __init cmx270_init_mmc(void) | |
675 | -{ | |
676 | - pxa_set_mci_info(&cmx270_mci_platform_data); | |
677 | -} | |
678 | -#else | |
679 | -static inline void cmx270_init_mmc(void) {} | |
680 | -#endif | |
681 | - | |
682 | 366 | #ifdef CONFIG_PM |
683 | 367 | static unsigned long sleep_save_msc[10]; |
684 | 368 | |
... | ... | @@ -748,16 +432,6 @@ |
748 | 432 | #else |
749 | 433 | static inline void cmx2xx_init_ac97(void) {} |
750 | 434 | #endif |
751 | - | |
752 | -static void __init cmx270_init(void) | |
753 | -{ | |
754 | - pxa2xx_mfp_config(ARRAY_AND_SIZE(cmx270_pin_config)); | |
755 | - | |
756 | - cmx270_init_rtc(); | |
757 | - cmx270_init_mmc(); | |
758 | - cmx270_init_ohci(); | |
759 | - cmx270_init_2700G(); | |
760 | -} | |
761 | 435 | |
762 | 436 | static void __init cmx2xx_init(void) |
763 | 437 | { |