diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2008-10-07 14:08:35 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2008-10-07 14:08:35 -0400 |
commit | af7c951d76708c61b862463d579d76be757130bf (patch) | |
tree | d047521fb2f8eafe92349ba4d6a66d6234886c87 /arch/arm/mach-pxa | |
parent | cc513ac0f29473de365664c4fba9cf033c1f2324 (diff) | |
parent | ebcce7b13be837616a3f9d996f637cf3241e3948 (diff) |
Merge branch 'for_rmk' of git://git.mnementh.co.uk/linux-2.6-im
Merge branch 'pxa-eseries' into pxa-machines
Conflicts:
arch/arm/mach-pxa/Makefile
Diffstat (limited to 'arch/arm/mach-pxa')
-rw-r--r-- | arch/arm/mach-pxa/e330.c | 43 | ||||
-rw-r--r-- | arch/arm/mach-pxa/e350.c | 43 | ||||
-rw-r--r-- | arch/arm/mach-pxa/e400.c | 94 | ||||
-rw-r--r-- | arch/arm/mach-pxa/e400_lcd.c | 56 | ||||
-rw-r--r-- | arch/arm/mach-pxa/e740.c | 169 | ||||
-rw-r--r-- | arch/arm/mach-pxa/e740_lcd.c | 123 | ||||
-rw-r--r-- | arch/arm/mach-pxa/e750.c (renamed from arch/arm/mach-pxa/e750_lcd.c) | 67 | ||||
-rw-r--r-- | arch/arm/mach-pxa/e800.c (renamed from arch/arm/mach-pxa/e800_lcd.c) | 79 | ||||
-rw-r--r-- | arch/arm/mach-pxa/eseries.c | 157 | ||||
-rw-r--r-- | arch/arm/mach-pxa/eseries.h | 4 | ||||
-rw-r--r-- | arch/arm/mach-pxa/eseries_udc.c | 57 |
11 files changed, 456 insertions, 436 deletions
diff --git a/arch/arm/mach-pxa/e330.c b/arch/arm/mach-pxa/e330.c new file mode 100644 index 000000000000..d488eded2058 --- /dev/null +++ b/arch/arm/mach-pxa/e330.c | |||
@@ -0,0 +1,43 @@ | |||
1 | /* | ||
2 | * Hardware definitions for the Toshiba eseries PDAs | ||
3 | * | ||
4 | * Copyright (c) 2003 Ian Molton <spyro@f2s.com> | ||
5 | * | ||
6 | * This file is licensed under | ||
7 | * the terms of the GNU General Public License version 2. This program | ||
8 | * is licensed "as is" without any warranty of any kind, whether express | ||
9 | * or implied. | ||
10 | * | ||
11 | */ | ||
12 | |||
13 | #include <linux/kernel.h> | ||
14 | #include <linux/init.h> | ||
15 | |||
16 | #include <asm/setup.h> | ||
17 | #include <asm/mach/arch.h> | ||
18 | #include <asm/mach-types.h> | ||
19 | |||
20 | #include <mach/mfp-pxa25x.h> | ||
21 | #include <mach/hardware.h> | ||
22 | #include <mach/udc.h> | ||
23 | |||
24 | #include "generic.h" | ||
25 | #include "eseries.h" | ||
26 | |||
27 | static void __init e330_init(void) | ||
28 | { | ||
29 | pxa_set_udc_info(&e7xx_udc_mach_info); | ||
30 | } | ||
31 | |||
32 | MACHINE_START(E330, "Toshiba e330") | ||
33 | /* Maintainer: Ian Molton (spyro@f2s.com) */ | ||
34 | .phys_io = 0x40000000, | ||
35 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
36 | .boot_params = 0xa0000100, | ||
37 | .map_io = pxa_map_io, | ||
38 | .init_irq = pxa25x_init_irq, | ||
39 | .fixup = eseries_fixup, | ||
40 | .init_machine = e330_init, | ||
41 | .timer = &pxa_timer, | ||
42 | MACHINE_END | ||
43 | |||
diff --git a/arch/arm/mach-pxa/e350.c b/arch/arm/mach-pxa/e350.c new file mode 100644 index 000000000000..8ecbc5479828 --- /dev/null +++ b/arch/arm/mach-pxa/e350.c | |||
@@ -0,0 +1,43 @@ | |||
1 | /* | ||
2 | * Hardware definitions for the Toshiba eseries PDAs | ||
3 | * | ||
4 | * Copyright (c) 2003 Ian Molton <spyro@f2s.com> | ||
5 | * | ||
6 | * This file is licensed under | ||
7 | * the terms of the GNU General Public License version 2. This program | ||
8 | * is licensed "as is" without any warranty of any kind, whether express | ||
9 | * or implied. | ||
10 | * | ||
11 | */ | ||
12 | |||
13 | #include <linux/kernel.h> | ||
14 | #include <linux/init.h> | ||
15 | |||
16 | #include <asm/setup.h> | ||
17 | #include <asm/mach/arch.h> | ||
18 | #include <asm/mach-types.h> | ||
19 | |||
20 | #include <mach/mfp-pxa25x.h> | ||
21 | #include <mach/hardware.h> | ||
22 | #include <mach/udc.h> | ||
23 | |||
24 | #include "generic.h" | ||
25 | #include "eseries.h" | ||
26 | |||
27 | static void __init e350_init(void) | ||
28 | { | ||
29 | pxa_set_udc_info(&e7xx_udc_mach_info); | ||
30 | } | ||
31 | |||
32 | MACHINE_START(E350, "Toshiba e350") | ||
33 | /* Maintainer: Ian Molton (spyro@f2s.com) */ | ||
34 | .phys_io = 0x40000000, | ||
35 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
36 | .boot_params = 0xa0000100, | ||
37 | .map_io = pxa_map_io, | ||
38 | .init_irq = pxa25x_init_irq, | ||
39 | .fixup = eseries_fixup, | ||
40 | .init_machine = e350_init, | ||
41 | .timer = &pxa_timer, | ||
42 | MACHINE_END | ||
43 | |||
diff --git a/arch/arm/mach-pxa/e400.c b/arch/arm/mach-pxa/e400.c new file mode 100644 index 000000000000..544bbaa20621 --- /dev/null +++ b/arch/arm/mach-pxa/e400.c | |||
@@ -0,0 +1,94 @@ | |||
1 | /* | ||
2 | * Hardware definitions for the Toshiba eseries PDAs | ||
3 | * | ||
4 | * Copyright (c) 2003 Ian Molton <spyro@f2s.com> | ||
5 | * | ||
6 | * This file is licensed under | ||
7 | * the terms of the GNU General Public License version 2. This program | ||
8 | * is licensed "as is" without any warranty of any kind, whether express | ||
9 | * or implied. | ||
10 | * | ||
11 | */ | ||
12 | |||
13 | #include <linux/kernel.h> | ||
14 | #include <linux/init.h> | ||
15 | |||
16 | #include <asm/setup.h> | ||
17 | #include <asm/mach/arch.h> | ||
18 | #include <asm/mach-types.h> | ||
19 | |||
20 | #include <mach/pxa-regs.h> | ||
21 | #include <mach/mfp-pxa25x.h> | ||
22 | #include <mach/hardware.h> | ||
23 | |||
24 | #include <mach/pxafb.h> | ||
25 | #include <mach/udc.h> | ||
26 | |||
27 | #include "generic.h" | ||
28 | #include "eseries.h" | ||
29 | |||
30 | /* ------------------------ E400 LCD definitions ------------------------ */ | ||
31 | |||
32 | static struct pxafb_mode_info e400_pxafb_mode_info = { | ||
33 | .pixclock = 140703, | ||
34 | .xres = 240, | ||
35 | .yres = 320, | ||
36 | .bpp = 16, | ||
37 | .hsync_len = 4, | ||
38 | .left_margin = 28, | ||
39 | .right_margin = 8, | ||
40 | .vsync_len = 3, | ||
41 | .upper_margin = 5, | ||
42 | .lower_margin = 6, | ||
43 | .sync = 0, | ||
44 | }; | ||
45 | |||
46 | static struct pxafb_mach_info e400_pxafb_mach_info = { | ||
47 | .modes = &e400_pxafb_mode_info, | ||
48 | .num_modes = 1, | ||
49 | .lccr0 = LCCR0_Color | LCCR0_Sngl | LCCR0_Act, | ||
50 | .lccr3 = 0, | ||
51 | .pxafb_backlight_power = NULL, | ||
52 | }; | ||
53 | |||
54 | /* ------------------------ E400 MFP config ----------------------------- */ | ||
55 | |||
56 | static unsigned long e400_pin_config[] __initdata = { | ||
57 | /* Chip selects */ | ||
58 | GPIO15_nCS_1, /* CS1 - Flash */ | ||
59 | GPIO80_nCS_4, /* CS4 - TMIO */ | ||
60 | |||
61 | /* Clocks */ | ||
62 | GPIO12_32KHz, | ||
63 | |||
64 | /* BTUART */ | ||
65 | GPIO42_BTUART_RXD, | ||
66 | GPIO43_BTUART_TXD, | ||
67 | GPIO44_BTUART_CTS, | ||
68 | GPIO45_GPIO, /* Used by TMIO for #SUSPEND */ | ||
69 | |||
70 | /* wakeup */ | ||
71 | GPIO0_GPIO | WAKEUP_ON_EDGE_RISE, | ||
72 | }; | ||
73 | |||
74 | /* ---------------------------------------------------------------------- */ | ||
75 | |||
76 | static void __init e400_init(void) | ||
77 | { | ||
78 | pxa2xx_mfp_config(ARRAY_AND_SIZE(e400_pin_config)); | ||
79 | set_pxa_fb_info(&e400_pxafb_mach_info); | ||
80 | pxa_set_udc_info(&e7xx_udc_mach_info); | ||
81 | } | ||
82 | |||
83 | MACHINE_START(E400, "Toshiba e400") | ||
84 | /* Maintainer: Ian Molton (spyro@f2s.com) */ | ||
85 | .phys_io = 0x40000000, | ||
86 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
87 | .boot_params = 0xa0000100, | ||
88 | .map_io = pxa_map_io, | ||
89 | .init_irq = pxa25x_init_irq, | ||
90 | .fixup = eseries_fixup, | ||
91 | .init_machine = e400_init, | ||
92 | .timer = &pxa_timer, | ||
93 | MACHINE_END | ||
94 | |||
diff --git a/arch/arm/mach-pxa/e400_lcd.c b/arch/arm/mach-pxa/e400_lcd.c deleted file mode 100644 index 263884165f57..000000000000 --- a/arch/arm/mach-pxa/e400_lcd.c +++ /dev/null | |||
@@ -1,56 +0,0 @@ | |||
1 | /* | ||
2 | * e400_lcd.c | ||
3 | * | ||
4 | * (c) 2005 Ian Molton <spyro@f2s.com> | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | */ | ||
11 | |||
12 | #include <linux/kernel.h> | ||
13 | #include <linux/init.h> | ||
14 | #include <linux/module.h> | ||
15 | |||
16 | #include <asm/mach-types.h> | ||
17 | #include <mach/pxa-regs.h> | ||
18 | #include <mach/pxafb.h> | ||
19 | |||
20 | static struct pxafb_mode_info e400_pxafb_mode_info = { | ||
21 | .pixclock = 140703, | ||
22 | .xres = 240, | ||
23 | .yres = 320, | ||
24 | .bpp = 16, | ||
25 | .hsync_len = 4, | ||
26 | .left_margin = 28, | ||
27 | .right_margin = 8, | ||
28 | .vsync_len = 3, | ||
29 | .upper_margin = 5, | ||
30 | .lower_margin = 6, | ||
31 | .sync = 0, | ||
32 | }; | ||
33 | |||
34 | static struct pxafb_mach_info e400_pxafb_mach_info = { | ||
35 | .modes = &e400_pxafb_mode_info, | ||
36 | .num_modes = 1, | ||
37 | .lccr0 = LCCR0_Color | LCCR0_Sngl | LCCR0_Act, | ||
38 | .lccr3 = 0, | ||
39 | .pxafb_backlight_power = NULL, | ||
40 | }; | ||
41 | |||
42 | static int __init e400_lcd_init(void) | ||
43 | { | ||
44 | if (!machine_is_e400()) | ||
45 | return -ENODEV; | ||
46 | |||
47 | set_pxa_fb_info(&e400_pxafb_mach_info); | ||
48 | return 0; | ||
49 | } | ||
50 | |||
51 | module_init(e400_lcd_init); | ||
52 | |||
53 | MODULE_AUTHOR("Ian Molton <spyro@f2s.com>"); | ||
54 | MODULE_DESCRIPTION("e400 lcd driver"); | ||
55 | MODULE_LICENSE("GPLv2"); | ||
56 | |||
diff --git a/arch/arm/mach-pxa/e740.c b/arch/arm/mach-pxa/e740.c new file mode 100644 index 000000000000..c57a15b37f0d --- /dev/null +++ b/arch/arm/mach-pxa/e740.c | |||
@@ -0,0 +1,169 @@ | |||
1 | /* | ||
2 | * Hardware definitions for the Toshiba eseries PDAs | ||
3 | * | ||
4 | * Copyright (c) 2003 Ian Molton <spyro@f2s.com> | ||
5 | * | ||
6 | * This file is licensed under | ||
7 | * the terms of the GNU General Public License version 2. This program | ||
8 | * is licensed "as is" without any warranty of any kind, whether express | ||
9 | * or implied. | ||
10 | * | ||
11 | */ | ||
12 | |||
13 | #include <linux/kernel.h> | ||
14 | #include <linux/init.h> | ||
15 | #include <linux/device.h> | ||
16 | #include <linux/platform_device.h> | ||
17 | #include <linux/fb.h> | ||
18 | |||
19 | #include <video/w100fb.h> | ||
20 | |||
21 | #include <asm/setup.h> | ||
22 | #include <asm/mach/arch.h> | ||
23 | #include <asm/mach-types.h> | ||
24 | |||
25 | #include <mach/mfp-pxa25x.h> | ||
26 | #include <mach/hardware.h> | ||
27 | #include <mach/udc.h> | ||
28 | |||
29 | #include "generic.h" | ||
30 | #include "eseries.h" | ||
31 | |||
32 | |||
33 | /* ------------------------ e740 video support --------------------------- */ | ||
34 | |||
35 | static struct w100_gen_regs e740_lcd_regs = { | ||
36 | .lcd_format = 0x00008023, | ||
37 | .lcdd_cntl1 = 0x0f000000, | ||
38 | .lcdd_cntl2 = 0x0003ffff, | ||
39 | .genlcd_cntl1 = 0x00ffff03, | ||
40 | .genlcd_cntl2 = 0x003c0f03, | ||
41 | .genlcd_cntl3 = 0x000143aa, | ||
42 | }; | ||
43 | |||
44 | static struct w100_mode e740_lcd_mode = { | ||
45 | .xres = 240, | ||
46 | .yres = 320, | ||
47 | .left_margin = 20, | ||
48 | .right_margin = 28, | ||
49 | .upper_margin = 9, | ||
50 | .lower_margin = 8, | ||
51 | .crtc_ss = 0x80140013, | ||
52 | .crtc_ls = 0x81150110, | ||
53 | .crtc_gs = 0x80050005, | ||
54 | .crtc_vpos_gs = 0x000a0009, | ||
55 | .crtc_rev = 0x0040010a, | ||
56 | .crtc_dclk = 0xa906000a, | ||
57 | .crtc_gclk = 0x80050108, | ||
58 | .crtc_goe = 0x80050108, | ||
59 | .pll_freq = 57, | ||
60 | .pixclk_divider = 4, | ||
61 | .pixclk_divider_rotated = 4, | ||
62 | .pixclk_src = CLK_SRC_XTAL, | ||
63 | .sysclk_divider = 1, | ||
64 | .sysclk_src = CLK_SRC_PLL, | ||
65 | .crtc_ps1_active = 0x41060010, | ||
66 | }; | ||
67 | |||
68 | static struct w100_gpio_regs e740_w100_gpio_info = { | ||
69 | .init_data1 = 0x21002103, | ||
70 | .gpio_dir1 = 0xffffdeff, | ||
71 | .gpio_oe1 = 0x03c00643, | ||
72 | .init_data2 = 0x003f003f, | ||
73 | .gpio_dir2 = 0xffffffff, | ||
74 | .gpio_oe2 = 0x000000ff, | ||
75 | }; | ||
76 | |||
77 | static struct w100fb_mach_info e740_fb_info = { | ||
78 | .modelist = &e740_lcd_mode, | ||
79 | .num_modes = 1, | ||
80 | .regs = &e740_lcd_regs, | ||
81 | .gpio = &e740_w100_gpio_info, | ||
82 | .xtal_freq = 14318000, | ||
83 | .xtal_dbl = 1, | ||
84 | }; | ||
85 | |||
86 | static struct resource e740_fb_resources[] = { | ||
87 | [0] = { | ||
88 | .start = 0x0c000000, | ||
89 | .end = 0x0cffffff, | ||
90 | .flags = IORESOURCE_MEM, | ||
91 | }, | ||
92 | }; | ||
93 | |||
94 | static struct platform_device e740_fb_device = { | ||
95 | .name = "w100fb", | ||
96 | .id = -1, | ||
97 | .dev = { | ||
98 | .platform_data = &e740_fb_info, | ||
99 | }, | ||
100 | .num_resources = ARRAY_SIZE(e740_fb_resources), | ||
101 | .resource = e740_fb_resources, | ||
102 | }; | ||
103 | |||
104 | /* --------------------------- MFP Pin config -------------------------- */ | ||
105 | |||
106 | static unsigned long e740_pin_config[] __initdata = { | ||
107 | /* Chip selects */ | ||
108 | GPIO15_nCS_1, /* CS1 - Flash */ | ||
109 | GPIO79_nCS_3, /* CS3 - IMAGEON */ | ||
110 | GPIO80_nCS_4, /* CS4 - TMIO */ | ||
111 | |||
112 | /* Clocks */ | ||
113 | GPIO12_32KHz, | ||
114 | |||
115 | /* BTUART */ | ||
116 | GPIO42_BTUART_RXD, | ||
117 | GPIO43_BTUART_TXD, | ||
118 | GPIO44_BTUART_CTS, | ||
119 | GPIO45_GPIO, /* Used by TMIO for #SUSPEND */ | ||
120 | |||
121 | /* PC Card */ | ||
122 | GPIO8_GPIO, /* CD0 */ | ||
123 | GPIO44_GPIO, /* CD1 */ | ||
124 | GPIO11_GPIO, /* IRQ0 */ | ||
125 | GPIO6_GPIO, /* IRQ1 */ | ||
126 | GPIO27_GPIO, /* RST0 */ | ||
127 | GPIO24_GPIO, /* RST1 */ | ||
128 | GPIO20_GPIO, /* PWR0 */ | ||
129 | GPIO23_GPIO, /* PWR1 */ | ||
130 | GPIO48_nPOE, | ||
131 | GPIO49_nPWE, | ||
132 | GPIO50_nPIOR, | ||
133 | GPIO51_nPIOW, | ||
134 | GPIO52_nPCE_1, | ||
135 | GPIO53_nPCE_2, | ||
136 | GPIO54_nPSKTSEL, | ||
137 | GPIO55_nPREG, | ||
138 | GPIO56_nPWAIT, | ||
139 | GPIO57_nIOIS16, | ||
140 | |||
141 | /* wakeup */ | ||
142 | GPIO0_GPIO | WAKEUP_ON_EDGE_RISE, | ||
143 | }; | ||
144 | |||
145 | /* ----------------------------------------------------------------------- */ | ||
146 | |||
147 | static struct platform_device *devices[] __initdata = { | ||
148 | &e740_fb_device, | ||
149 | }; | ||
150 | |||
151 | static void __init e740_init(void) | ||
152 | { | ||
153 | pxa2xx_mfp_config(ARRAY_AND_SIZE(e740_pin_config)); | ||
154 | platform_add_devices(devices, ARRAY_SIZE(devices)); | ||
155 | pxa_set_udc_info(&e7xx_udc_mach_info); | ||
156 | } | ||
157 | |||
158 | MACHINE_START(E740, "Toshiba e740") | ||
159 | /* Maintainer: Ian Molton (spyro@f2s.com) */ | ||
160 | .phys_io = 0x40000000, | ||
161 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
162 | .boot_params = 0xa0000100, | ||
163 | .map_io = pxa_map_io, | ||
164 | .init_irq = pxa25x_init_irq, | ||
165 | .fixup = eseries_fixup, | ||
166 | .init_machine = e740_init, | ||
167 | .timer = &pxa_timer, | ||
168 | MACHINE_END | ||
169 | |||
diff --git a/arch/arm/mach-pxa/e740_lcd.c b/arch/arm/mach-pxa/e740_lcd.c deleted file mode 100644 index 26bd599af178..000000000000 --- a/arch/arm/mach-pxa/e740_lcd.c +++ /dev/null | |||
@@ -1,123 +0,0 @@ | |||
1 | /* e740_lcd.c | ||
2 | * | ||
3 | * This file contains the definitions for the LCD timings and functions | ||
4 | * to control the LCD power / frontlighting via the w100fb driver. | ||
5 | * | ||
6 | * (c) 2005 Ian Molton <spyro@f2s.com> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License version 2 as | ||
10 | * published by the Free Software Foundation. | ||
11 | * | ||
12 | */ | ||
13 | |||
14 | #include <linux/module.h> | ||
15 | #include <linux/device.h> | ||
16 | #include <linux/fb.h> | ||
17 | #include <linux/err.h> | ||
18 | #include <linux/platform_device.h> | ||
19 | |||
20 | #include <asm/mach-types.h> | ||
21 | |||
22 | #include <video/w100fb.h> | ||
23 | |||
24 | /* | ||
25 | **potential** shutdown routine - to be investigated | ||
26 | devmem2 0x0c010528 w 0xff3fff00 | ||
27 | devmem2 0x0c010190 w 0x7FFF8000 | ||
28 | devmem2 0x0c0101b0 w 0x00FF0000 | ||
29 | devmem2 0x0c01008c w 0x00000000 | ||
30 | devmem2 0x0c010080 w 0x000000bf | ||
31 | devmem2 0x0c010098 w 0x00000015 | ||
32 | devmem2 0x0c010088 w 0x4b000204 | ||
33 | devmem2 0x0c010098 w 0x0000001d | ||
34 | */ | ||
35 | |||
36 | static struct w100_gen_regs e740_lcd_regs = { | ||
37 | .lcd_format = 0x00008023, | ||
38 | .lcdd_cntl1 = 0x0f000000, | ||
39 | .lcdd_cntl2 = 0x0003ffff, | ||
40 | .genlcd_cntl1 = 0x00ffff03, | ||
41 | .genlcd_cntl2 = 0x003c0f03, | ||
42 | .genlcd_cntl3 = 0x000143aa, | ||
43 | }; | ||
44 | |||
45 | static struct w100_mode e740_lcd_mode = { | ||
46 | .xres = 240, | ||
47 | .yres = 320, | ||
48 | .left_margin = 20, | ||
49 | .right_margin = 28, | ||
50 | .upper_margin = 9, | ||
51 | .lower_margin = 8, | ||
52 | .crtc_ss = 0x80140013, | ||
53 | .crtc_ls = 0x81150110, | ||
54 | .crtc_gs = 0x80050005, | ||
55 | .crtc_vpos_gs = 0x000a0009, | ||
56 | .crtc_rev = 0x0040010a, | ||
57 | .crtc_dclk = 0xa906000a, | ||
58 | .crtc_gclk = 0x80050108, | ||
59 | .crtc_goe = 0x80050108, | ||
60 | .pll_freq = 57, | ||
61 | .pixclk_divider = 4, | ||
62 | .pixclk_divider_rotated = 4, | ||
63 | .pixclk_src = CLK_SRC_XTAL, | ||
64 | .sysclk_divider = 1, | ||
65 | .sysclk_src = CLK_SRC_PLL, | ||
66 | .crtc_ps1_active = 0x41060010, | ||
67 | }; | ||
68 | |||
69 | |||
70 | static struct w100_gpio_regs e740_w100_gpio_info = { | ||
71 | .init_data1 = 0x21002103, | ||
72 | .gpio_dir1 = 0xffffdeff, | ||
73 | .gpio_oe1 = 0x03c00643, | ||
74 | .init_data2 = 0x003f003f, | ||
75 | .gpio_dir2 = 0xffffffff, | ||
76 | .gpio_oe2 = 0x000000ff, | ||
77 | }; | ||
78 | |||
79 | static struct w100fb_mach_info e740_fb_info = { | ||
80 | .modelist = &e740_lcd_mode, | ||
81 | .num_modes = 1, | ||
82 | .regs = &e740_lcd_regs, | ||
83 | .gpio = &e740_w100_gpio_info, | ||
84 | .xtal_freq = 14318000, | ||
85 | .xtal_dbl = 1, | ||
86 | }; | ||
87 | |||
88 | static struct resource e740_fb_resources[] = { | ||
89 | [0] = { | ||
90 | .start = 0x0c000000, | ||
91 | .end = 0x0cffffff, | ||
92 | .flags = IORESOURCE_MEM, | ||
93 | }, | ||
94 | }; | ||
95 | |||
96 | /* ----------------------- device declarations -------------------------- */ | ||
97 | |||
98 | |||
99 | static struct platform_device e740_fb_device = { | ||
100 | .name = "w100fb", | ||
101 | .id = -1, | ||
102 | .dev = { | ||
103 | .platform_data = &e740_fb_info, | ||
104 | }, | ||
105 | .num_resources = ARRAY_SIZE(e740_fb_resources), | ||
106 | .resource = e740_fb_resources, | ||
107 | }; | ||
108 | |||
109 | static int e740_lcd_init(void) | ||
110 | { | ||
111 | int ret; | ||
112 | |||
113 | if (!machine_is_e740()) | ||
114 | return -ENODEV; | ||
115 | |||
116 | return platform_device_register(&e740_fb_device); | ||
117 | } | ||
118 | |||
119 | module_init(e740_lcd_init); | ||
120 | |||
121 | MODULE_AUTHOR("Ian Molton <spyro@f2s.com>"); | ||
122 | MODULE_DESCRIPTION("e740 lcd driver"); | ||
123 | MODULE_LICENSE("GPLv2"); | ||
diff --git a/arch/arm/mach-pxa/e750_lcd.c b/arch/arm/mach-pxa/e750.c index 75edc3b5390f..640e738b85df 100644 --- a/arch/arm/mach-pxa/e750_lcd.c +++ b/arch/arm/mach-pxa/e750.c | |||
@@ -1,25 +1,35 @@ | |||
1 | /* e750_lcd.c | 1 | /* |
2 | * Hardware definitions for the Toshiba eseries PDAs | ||
2 | * | 3 | * |
3 | * This file contains the definitions for the LCD timings and functions | 4 | * Copyright (c) 2003 Ian Molton <spyro@f2s.com> |
4 | * to control the LCD power / frontlighting via the w100fb driver. | ||
5 | * | 5 | * |
6 | * (c) 2005 Ian Molton <spyro@f2s.com> | 6 | * This file is licensed under |
7 | * | 7 | * the terms of the GNU General Public License version 2. This program |
8 | * This program is free software; you can redistribute it and/or modify | 8 | * is licensed "as is" without any warranty of any kind, whether express |
9 | * it under the terms of the GNU General Public License version 2 as | 9 | * or implied. |
10 | * published by the Free Software Foundation. | ||
11 | * | 10 | * |
12 | */ | 11 | */ |
13 | 12 | ||
14 | #include <linux/module.h> | 13 | #include <linux/kernel.h> |
14 | #include <linux/init.h> | ||
15 | #include <linux/device.h> | 15 | #include <linux/device.h> |
16 | #include <linux/fb.h> | ||
17 | #include <linux/err.h> | ||
18 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
17 | #include <linux/fb.h> | ||
18 | |||
19 | #include <video/w100fb.h> | ||
19 | 20 | ||
21 | #include <asm/setup.h> | ||
22 | #include <asm/mach/arch.h> | ||
20 | #include <asm/mach-types.h> | 23 | #include <asm/mach-types.h> |
21 | 24 | ||
22 | #include <video/w100fb.h> | 25 | #include <mach/mfp-pxa25x.h> |
26 | #include <mach/hardware.h> | ||
27 | #include <mach/udc.h> | ||
28 | |||
29 | #include "generic.h" | ||
30 | #include "eseries.h" | ||
31 | |||
32 | /* ---------------------- E750 LCD definitions -------------------- */ | ||
23 | 33 | ||
24 | static struct w100_gen_regs e750_lcd_regs = { | 34 | static struct w100_gen_regs e750_lcd_regs = { |
25 | .lcd_format = 0x00008003, | 35 | .lcd_format = 0x00008003, |
@@ -54,7 +64,6 @@ static struct w100_mode e750_lcd_mode = { | |||
54 | .sysclk_src = CLK_SRC_PLL, | 64 | .sysclk_src = CLK_SRC_PLL, |
55 | }; | 65 | }; |
56 | 66 | ||
57 | |||
58 | static struct w100_gpio_regs e750_w100_gpio_info = { | 67 | static struct w100_gpio_regs e750_w100_gpio_info = { |
59 | .init_data1 = 0x01192f1b, | 68 | .init_data1 = 0x01192f1b, |
60 | .gpio_dir1 = 0xd5ffdeff, | 69 | .gpio_dir1 = 0xd5ffdeff, |
@@ -81,9 +90,6 @@ static struct resource e750_fb_resources[] = { | |||
81 | }, | 90 | }, |
82 | }; | 91 | }; |
83 | 92 | ||
84 | /* ----------------------- device declarations -------------------------- */ | ||
85 | |||
86 | |||
87 | static struct platform_device e750_fb_device = { | 93 | static struct platform_device e750_fb_device = { |
88 | .name = "w100fb", | 94 | .name = "w100fb", |
89 | .id = -1, | 95 | .id = -1, |
@@ -94,16 +100,27 @@ static struct platform_device e750_fb_device = { | |||
94 | .resource = e750_fb_resources, | 100 | .resource = e750_fb_resources, |
95 | }; | 101 | }; |
96 | 102 | ||
97 | static int e750_lcd_init(void) | 103 | /* ----------------------------------------------------------------------- */ |
98 | { | ||
99 | if (!machine_is_e750()) | ||
100 | return -ENODEV; | ||
101 | 104 | ||
102 | return platform_device_register(&e750_fb_device); | 105 | static struct platform_device *devices[] __initdata = { |
106 | &e750_fb_device, | ||
107 | }; | ||
108 | |||
109 | static void __init e750_init(void) | ||
110 | { | ||
111 | platform_add_devices(devices, ARRAY_SIZE(devices)); | ||
112 | pxa_set_udc_info(&e7xx_udc_mach_info); | ||
103 | } | 113 | } |
104 | 114 | ||
105 | module_init(e750_lcd_init); | 115 | MACHINE_START(E750, "Toshiba e750") |
116 | /* Maintainer: Ian Molton (spyro@f2s.com) */ | ||
117 | .phys_io = 0x40000000, | ||
118 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
119 | .boot_params = 0xa0000100, | ||
120 | .map_io = pxa_map_io, | ||
121 | .init_irq = pxa25x_init_irq, | ||
122 | .fixup = eseries_fixup, | ||
123 | .init_machine = e750_init, | ||
124 | .timer = &pxa_timer, | ||
125 | MACHINE_END | ||
106 | 126 | ||
107 | MODULE_AUTHOR("Ian Molton <spyro@f2s.com>"); | ||
108 | MODULE_DESCRIPTION("e750 lcd driver"); | ||
109 | MODULE_LICENSE("GPLv2"); | ||
diff --git a/arch/arm/mach-pxa/e800_lcd.c b/arch/arm/mach-pxa/e800.c index e6aeab0ebc22..a293e09bfe25 100644 --- a/arch/arm/mach-pxa/e800_lcd.c +++ b/arch/arm/mach-pxa/e800.c | |||
@@ -1,25 +1,36 @@ | |||
1 | /* e800_lcd.c | 1 | /* |
2 | * Hardware definitions for the Toshiba eseries PDAs | ||
2 | * | 3 | * |
3 | * This file contains the definitions for the LCD timings and functions | 4 | * Copyright (c) 2003 Ian Molton <spyro@f2s.com> |
4 | * to control the LCD power / frontlighting via the w100fb driver. | ||
5 | * | 5 | * |
6 | * (c) 2005 Ian Molton <spyro@f2s.com> | 6 | * This file is licensed under |
7 | * | 7 | * the terms of the GNU General Public License version 2. This program |
8 | * This program is free software; you can redistribute it and/or modify | 8 | * is licensed "as is" without any warranty of any kind, whether express |
9 | * it under the terms of the GNU General Public License version 2 as | 9 | * or implied. |
10 | * published by the Free Software Foundation. | ||
11 | * | 10 | * |
12 | */ | 11 | */ |
13 | 12 | ||
14 | #include <linux/module.h> | 13 | #include <linux/kernel.h> |
14 | #include <linux/init.h> | ||
15 | #include <linux/device.h> | 15 | #include <linux/device.h> |
16 | #include <linux/fb.h> | ||
17 | #include <linux/err.h> | ||
18 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
17 | #include <linux/fb.h> | ||
18 | |||
19 | #include <video/w100fb.h> | ||
19 | 20 | ||
21 | #include <asm/setup.h> | ||
22 | #include <asm/mach/arch.h> | ||
20 | #include <asm/mach-types.h> | 23 | #include <asm/mach-types.h> |
21 | 24 | ||
22 | #include <video/w100fb.h> | 25 | #include <mach/mfp-pxa25x.h> |
26 | #include <mach/hardware.h> | ||
27 | #include <mach/eseries-gpio.h> | ||
28 | #include <mach/udc.h> | ||
29 | |||
30 | #include "generic.h" | ||
31 | #include "eseries.h" | ||
32 | |||
33 | /* ------------------------ e800 LCD definitions ------------------------- */ | ||
23 | 34 | ||
24 | static struct w100_gen_regs e800_lcd_regs = { | 35 | static struct w100_gen_regs e800_lcd_regs = { |
25 | .lcd_format = 0x00008003, | 36 | .lcd_format = 0x00008003, |
@@ -71,8 +82,8 @@ static struct w100_mode e800_lcd_mode[2] = { | |||
71 | .crtc_goe = 0x80cc0015, | 82 | .crtc_goe = 0x80cc0015, |
72 | .crtc_ps1_active = 0x00000000, | 83 | .crtc_ps1_active = 0x00000000, |
73 | .pll_freq = 100, | 84 | .pll_freq = 100, |
74 | .pixclk_divider = 6, /* Wince uses 14 which gives a 7MHz pclk. */ | 85 | .pixclk_divider = 6, /* Wince uses 14 which gives a */ |
75 | .pixclk_divider_rotated = 6, /* we want a 14MHz one (much nicer to look at) */ | 86 | .pixclk_divider_rotated = 6, /* 7MHz Pclk. We use a 14MHz one */ |
76 | .pixclk_src = CLK_SRC_PLL, | 87 | .pixclk_src = CLK_SRC_PLL, |
77 | .sysclk_divider = 0, | 88 | .sysclk_divider = 0, |
78 | .sysclk_src = CLK_SRC_PLL, | 89 | .sysclk_src = CLK_SRC_PLL, |
@@ -131,9 +142,6 @@ static struct resource e800_fb_resources[] = { | |||
131 | }, | 142 | }, |
132 | }; | 143 | }; |
133 | 144 | ||
134 | /* ----------------------- device declarations -------------------------- */ | ||
135 | |||
136 | |||
137 | static struct platform_device e800_fb_device = { | 145 | static struct platform_device e800_fb_device = { |
138 | .name = "w100fb", | 146 | .name = "w100fb", |
139 | .id = -1, | 147 | .id = -1, |
@@ -144,16 +152,35 @@ static struct platform_device e800_fb_device = { | |||
144 | .resource = e800_fb_resources, | 152 | .resource = e800_fb_resources, |
145 | }; | 153 | }; |
146 | 154 | ||
147 | static int e800_lcd_init(void) | 155 | /* --------------------------- UDC definitions --------------------------- */ |
148 | { | 156 | |
149 | if (!machine_is_e800()) | 157 | static struct pxa2xx_udc_mach_info e800_udc_mach_info = { |
150 | return -ENODEV; | 158 | .gpio_vbus = GPIO_E800_USB_DISC, |
159 | .gpio_pullup = GPIO_E800_USB_PULLUP, | ||
160 | .gpio_pullup_inverted = 1 | ||
161 | }; | ||
151 | 162 | ||
152 | return platform_device_register(&e800_fb_device); | 163 | /* ----------------------------------------------------------------------- */ |
164 | |||
165 | static struct platform_device *devices[] __initdata = { | ||
166 | &e800_fb_device, | ||
167 | }; | ||
168 | |||
169 | static void __init e800_init(void) | ||
170 | { | ||
171 | platform_add_devices(devices, ARRAY_SIZE(devices)); | ||
172 | pxa_set_udc_info(&e800_udc_mach_info); | ||
153 | } | 173 | } |
154 | 174 | ||
155 | module_init(e800_lcd_init); | 175 | MACHINE_START(E800, "Toshiba e800") |
176 | /* Maintainer: Ian Molton (spyro@f2s.com) */ | ||
177 | .phys_io = 0x40000000, | ||
178 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
179 | .boot_params = 0xa0000100, | ||
180 | .map_io = pxa_map_io, | ||
181 | .init_irq = pxa25x_init_irq, | ||
182 | .fixup = eseries_fixup, | ||
183 | .init_machine = e800_init, | ||
184 | .timer = &pxa_timer, | ||
185 | MACHINE_END | ||
156 | 186 | ||
157 | MODULE_AUTHOR("Ian Molton <spyro@f2s.com>"); | ||
158 | MODULE_DESCRIPTION("e800 lcd driver"); | ||
159 | MODULE_LICENSE("GPLv2"); | ||
diff --git a/arch/arm/mach-pxa/eseries.c b/arch/arm/mach-pxa/eseries.c index 001a252bd514..d28849b50a14 100644 --- a/arch/arm/mach-pxa/eseries.c +++ b/arch/arm/mach-pxa/eseries.c | |||
@@ -19,68 +19,13 @@ | |||
19 | 19 | ||
20 | #include <mach/mfp-pxa25x.h> | 20 | #include <mach/mfp-pxa25x.h> |
21 | #include <mach/hardware.h> | 21 | #include <mach/hardware.h> |
22 | #include <mach/eseries-gpio.h> | ||
23 | #include <mach/udc.h> | ||
22 | 24 | ||
23 | #include "generic.h" | 25 | #include "generic.h" |
24 | 26 | ||
25 | static unsigned long e740_pin_config[] __initdata = { | ||
26 | /* Chip selects */ | ||
27 | GPIO15_nCS_1, /* CS1 - Flash */ | ||
28 | GPIO79_nCS_3, /* CS3 - IMAGEON */ | ||
29 | GPIO80_nCS_4, /* CS4 - TMIO */ | ||
30 | |||
31 | /* Clocks */ | ||
32 | GPIO12_32KHz, | ||
33 | |||
34 | /* BTUART */ | ||
35 | GPIO42_BTUART_RXD, | ||
36 | GPIO43_BTUART_TXD, | ||
37 | GPIO44_BTUART_CTS, | ||
38 | GPIO45_GPIO, /* Used by TMIO for #SUSPEND */ | ||
39 | |||
40 | /* PC Card */ | ||
41 | GPIO8_GPIO, /* CD0 */ | ||
42 | GPIO44_GPIO, /* CD1 */ | ||
43 | GPIO11_GPIO, /* IRQ0 */ | ||
44 | GPIO6_GPIO, /* IRQ1 */ | ||
45 | GPIO27_GPIO, /* RST0 */ | ||
46 | GPIO24_GPIO, /* RST1 */ | ||
47 | GPIO20_GPIO, /* PWR0 */ | ||
48 | GPIO23_GPIO, /* PWR1 */ | ||
49 | GPIO48_nPOE, | ||
50 | GPIO49_nPWE, | ||
51 | GPIO50_nPIOR, | ||
52 | GPIO51_nPIOW, | ||
53 | GPIO52_nPCE_1, | ||
54 | GPIO53_nPCE_2, | ||
55 | GPIO54_nPSKTSEL, | ||
56 | GPIO55_nPREG, | ||
57 | GPIO56_nPWAIT, | ||
58 | GPIO57_nIOIS16, | ||
59 | |||
60 | /* wakeup */ | ||
61 | GPIO0_GPIO | WAKEUP_ON_EDGE_RISE, | ||
62 | }; | ||
63 | |||
64 | static unsigned long e400_pin_config[] __initdata = { | ||
65 | /* Chip selects */ | ||
66 | GPIO15_nCS_1, /* CS1 - Flash */ | ||
67 | GPIO80_nCS_4, /* CS4 - TMIO */ | ||
68 | |||
69 | /* Clocks */ | ||
70 | GPIO12_32KHz, | ||
71 | |||
72 | /* BTUART */ | ||
73 | GPIO42_BTUART_RXD, | ||
74 | GPIO43_BTUART_TXD, | ||
75 | GPIO44_BTUART_CTS, | ||
76 | GPIO45_GPIO, /* Used by TMIO for #SUSPEND */ | ||
77 | |||
78 | /* wakeup */ | ||
79 | GPIO0_GPIO | WAKEUP_ON_EDGE_RISE, | ||
80 | }; | ||
81 | |||
82 | /* Only e800 has 128MB RAM */ | 27 | /* Only e800 has 128MB RAM */ |
83 | static void __init eseries_fixup(struct machine_desc *desc, | 28 | void __init eseries_fixup(struct machine_desc *desc, |
84 | struct tag *tags, char **cmdline, struct meminfo *mi) | 29 | struct tag *tags, char **cmdline, struct meminfo *mi) |
85 | { | 30 | { |
86 | mi->nr_banks=1; | 31 | mi->nr_banks=1; |
@@ -92,95 +37,9 @@ static void __init eseries_fixup(struct machine_desc *desc, | |||
92 | mi->bank[0].size = (64*1024*1024); | 37 | mi->bank[0].size = (64*1024*1024); |
93 | } | 38 | } |
94 | 39 | ||
95 | static void __init e740_init(void) | 40 | struct pxa2xx_udc_mach_info e7xx_udc_mach_info = { |
96 | { | 41 | .gpio_vbus = GPIO_E7XX_USB_DISC, |
97 | pxa2xx_mfp_config(ARRAY_AND_SIZE(e740_pin_config)); | 42 | .gpio_pullup = GPIO_E7XX_USB_PULLUP, |
98 | } | 43 | .gpio_pullup_inverted = 1 |
99 | 44 | }; | |
100 | static void __init e400_init(void) | ||
101 | { | ||
102 | pxa2xx_mfp_config(ARRAY_AND_SIZE(e400_pin_config)); | ||
103 | } | ||
104 | |||
105 | /* e-series machine definitions */ | ||
106 | |||
107 | #ifdef CONFIG_MACH_E330 | ||
108 | MACHINE_START(E330, "Toshiba e330") | ||
109 | /* Maintainer: Ian Molton (spyro@f2s.com) */ | ||
110 | .phys_io = 0x40000000, | ||
111 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
112 | .boot_params = 0xa0000100, | ||
113 | .map_io = pxa_map_io, | ||
114 | .init_irq = pxa25x_init_irq, | ||
115 | .fixup = eseries_fixup, | ||
116 | .timer = &pxa_timer, | ||
117 | MACHINE_END | ||
118 | #endif | ||
119 | |||
120 | #ifdef CONFIG_MACH_E350 | ||
121 | MACHINE_START(E350, "Toshiba e350") | ||
122 | /* Maintainer: Ian Molton (spyro@f2s.com) */ | ||
123 | .phys_io = 0x40000000, | ||
124 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
125 | .boot_params = 0xa0000100, | ||
126 | .map_io = pxa_map_io, | ||
127 | .init_irq = pxa25x_init_irq, | ||
128 | .fixup = eseries_fixup, | ||
129 | .timer = &pxa_timer, | ||
130 | MACHINE_END | ||
131 | #endif | ||
132 | |||
133 | #ifdef CONFIG_MACH_E740 | ||
134 | MACHINE_START(E740, "Toshiba e740") | ||
135 | /* Maintainer: Ian Molton (spyro@f2s.com) */ | ||
136 | .phys_io = 0x40000000, | ||
137 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
138 | .boot_params = 0xa0000100, | ||
139 | .map_io = pxa_map_io, | ||
140 | .init_irq = pxa25x_init_irq, | ||
141 | .fixup = eseries_fixup, | ||
142 | .init_machine = e740_init, | ||
143 | .timer = &pxa_timer, | ||
144 | MACHINE_END | ||
145 | #endif | ||
146 | |||
147 | #ifdef CONFIG_MACH_E750 | ||
148 | MACHINE_START(E750, "Toshiba e750") | ||
149 | /* Maintainer: Ian Molton (spyro@f2s.com) */ | ||
150 | .phys_io = 0x40000000, | ||
151 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
152 | .boot_params = 0xa0000100, | ||
153 | .map_io = pxa_map_io, | ||
154 | .init_irq = pxa25x_init_irq, | ||
155 | .fixup = eseries_fixup, | ||
156 | .timer = &pxa_timer, | ||
157 | MACHINE_END | ||
158 | #endif | ||
159 | |||
160 | #ifdef CONFIG_MACH_E400 | ||
161 | MACHINE_START(E400, "Toshiba e400") | ||
162 | /* Maintainer: Ian Molton (spyro@f2s.com) */ | ||
163 | .phys_io = 0x40000000, | ||
164 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
165 | .boot_params = 0xa0000100, | ||
166 | .map_io = pxa_map_io, | ||
167 | .init_irq = pxa25x_init_irq, | ||
168 | .fixup = eseries_fixup, | ||
169 | .init_machine = e400_init, | ||
170 | .timer = &pxa_timer, | ||
171 | MACHINE_END | ||
172 | #endif | ||
173 | |||
174 | #ifdef CONFIG_MACH_E800 | ||
175 | MACHINE_START(E800, "Toshiba e800") | ||
176 | /* Maintainer: Ian Molton (spyro@f2s.com) */ | ||
177 | .phys_io = 0x40000000, | ||
178 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
179 | .boot_params = 0xa0000100, | ||
180 | .map_io = pxa_map_io, | ||
181 | .init_irq = pxa25x_init_irq, | ||
182 | .fixup = eseries_fixup, | ||
183 | .timer = &pxa_timer, | ||
184 | MACHINE_END | ||
185 | #endif | ||
186 | 45 | ||
diff --git a/arch/arm/mach-pxa/eseries.h b/arch/arm/mach-pxa/eseries.h new file mode 100644 index 000000000000..a83f88d4b6ad --- /dev/null +++ b/arch/arm/mach-pxa/eseries.h | |||
@@ -0,0 +1,4 @@ | |||
1 | void __init eseries_fixup(struct machine_desc *desc, | ||
2 | struct tag *tags, char **cmdline, struct meminfo *mi); | ||
3 | |||
4 | extern struct pxa2xx_udc_mach_info e7xx_udc_mach_info; | ||
diff --git a/arch/arm/mach-pxa/eseries_udc.c b/arch/arm/mach-pxa/eseries_udc.c deleted file mode 100644 index d622c04c0d44..000000000000 --- a/arch/arm/mach-pxa/eseries_udc.c +++ /dev/null | |||
@@ -1,57 +0,0 @@ | |||
1 | /* | ||
2 | * UDC functions for the Toshiba e-series PDAs | ||
3 | * | ||
4 | * Copyright (c) Ian Molton 2003 | ||
5 | * | ||
6 | * This file is licensed under | ||
7 | * the terms of the GNU General Public License version 2. This program | ||
8 | * is licensed "as is" without any warranty of any kind, whether express | ||
9 | * or implied. | ||
10 | * | ||
11 | */ | ||
12 | |||
13 | #include <linux/kernel.h> | ||
14 | #include <linux/init.h> | ||
15 | #include <linux/device.h> | ||
16 | |||
17 | #include <mach/udc.h> | ||
18 | #include <mach/eseries-gpio.h> | ||
19 | #include <mach/hardware.h> | ||
20 | #include <mach/pxa-regs.h> | ||
21 | #include <asm/mach/arch.h> | ||
22 | #include <asm/mach-types.h> | ||
23 | #include <asm/mach/map.h> | ||
24 | #include <asm/domain.h> | ||
25 | |||
26 | /* local PXA generic code */ | ||
27 | #include "generic.h" | ||
28 | |||
29 | static struct pxa2xx_udc_mach_info e7xx_udc_mach_info = { | ||
30 | .gpio_vbus = GPIO_E7XX_USB_DISC, | ||
31 | .gpio_pullup = GPIO_E7XX_USB_PULLUP, | ||
32 | .gpio_pullup_inverted = 1 | ||
33 | }; | ||
34 | |||
35 | static struct pxa2xx_udc_mach_info e800_udc_mach_info = { | ||
36 | .gpio_vbus = GPIO_E800_USB_DISC, | ||
37 | .gpio_pullup = GPIO_E800_USB_PULLUP, | ||
38 | .gpio_pullup_inverted = 1 | ||
39 | }; | ||
40 | |||
41 | static int __init eseries_udc_init(void) | ||
42 | { | ||
43 | if (machine_is_e330() || machine_is_e350() || | ||
44 | machine_is_e740() || machine_is_e750() || | ||
45 | machine_is_e400()) | ||
46 | pxa_set_udc_info(&e7xx_udc_mach_info); | ||
47 | else if (machine_is_e800()) | ||
48 | pxa_set_udc_info(&e800_udc_mach_info); | ||
49 | |||
50 | return 0; | ||
51 | } | ||
52 | |||
53 | module_init(eseries_udc_init); | ||
54 | |||
55 | MODULE_AUTHOR("Ian Molton <spyro@f2s.com>"); | ||
56 | MODULE_DESCRIPTION("eseries UDC support"); | ||
57 | MODULE_LICENSE("GPLv2"); | ||