diff options
| author | H. Peter Anvin <hpa@zytor.com> | 2008-08-26 01:45:37 -0400 |
|---|---|---|
| committer | H. Peter Anvin <hpa@zytor.com> | 2008-08-26 01:45:37 -0400 |
| commit | 94d4ac2f4a58c6e37876827c6688c61cef21290c (patch) | |
| tree | 732f4e4794f3c116041242f69754637f75c0dd57 /arch/arm/mach-pxa | |
| parent | ed21763e7b0b3fb50e4efd9d4bc17ef5b035d304 (diff) | |
| parent | 08970fc4e0385790a7b093adfaa4165a189f9eb0 (diff) | |
Merge branch 'x86/urgent' into x86/cleanups
Diffstat (limited to 'arch/arm/mach-pxa')
| -rw-r--r-- | arch/arm/mach-pxa/clock.c | 25 | ||||
| -rw-r--r-- | arch/arm/mach-pxa/clock.h | 5 | ||||
| -rw-r--r-- | arch/arm/mach-pxa/eseries.c | 170 | ||||
| -rw-r--r-- | arch/arm/mach-pxa/include/mach/irqs.h | 1 | ||||
| -rw-r--r-- | arch/arm/mach-pxa/lubbock.c | 2 | ||||
| -rw-r--r-- | arch/arm/mach-pxa/pxa25x.c | 10 | ||||
| -rw-r--r-- | arch/arm/mach-pxa/pxa300.c | 2 |
7 files changed, 157 insertions, 58 deletions
diff --git a/arch/arm/mach-pxa/clock.c b/arch/arm/mach-pxa/clock.c index c01eea88f787..ca8e20538157 100644 --- a/arch/arm/mach-pxa/clock.c +++ b/arch/arm/mach-pxa/clock.c | |||
| @@ -125,3 +125,28 @@ void clks_register(struct clk *clks, size_t num) | |||
| 125 | list_add(&clks[i].node, &clocks); | 125 | list_add(&clks[i].node, &clocks); |
| 126 | mutex_unlock(&clocks_mutex); | 126 | mutex_unlock(&clocks_mutex); |
| 127 | } | 127 | } |
| 128 | |||
| 129 | int clk_add_alias(char *alias, struct device *alias_dev, char *id, | ||
| 130 | struct device *dev) | ||
| 131 | { | ||
| 132 | struct clk *r = clk_lookup(dev, id); | ||
| 133 | struct clk *new; | ||
| 134 | |||
| 135 | if (!r) | ||
| 136 | return -ENODEV; | ||
| 137 | |||
| 138 | new = kzalloc(sizeof(struct clk), GFP_KERNEL); | ||
| 139 | |||
| 140 | if (!new) | ||
| 141 | return -ENOMEM; | ||
| 142 | |||
| 143 | new->name = alias; | ||
| 144 | new->dev = alias_dev; | ||
| 145 | new->other = r; | ||
| 146 | |||
| 147 | mutex_lock(&clocks_mutex); | ||
| 148 | list_add(&new->node, &clocks); | ||
| 149 | mutex_unlock(&clocks_mutex); | ||
| 150 | |||
| 151 | return 0; | ||
| 152 | } | ||
diff --git a/arch/arm/mach-pxa/clock.h b/arch/arm/mach-pxa/clock.h index 1ec8f9178aaf..73be795fe3bf 100644 --- a/arch/arm/mach-pxa/clock.h +++ b/arch/arm/mach-pxa/clock.h | |||
| @@ -1,3 +1,5 @@ | |||
| 1 | #include <linux/list.h> | ||
| 2 | |||
| 1 | struct clk; | 3 | struct clk; |
| 2 | 4 | ||
| 3 | struct clkops { | 5 | struct clkops { |
| @@ -86,3 +88,6 @@ extern void clk_pxa3xx_cken_disable(struct clk *); | |||
| 86 | #endif | 88 | #endif |
| 87 | 89 | ||
| 88 | void clks_register(struct clk *clks, size_t num); | 90 | void clks_register(struct clk *clks, size_t num); |
| 91 | int clk_add_alias(char *alias, struct device *alias_dev, char *id, | ||
| 92 | struct device *dev); | ||
| 93 | |||
diff --git a/arch/arm/mach-pxa/eseries.c b/arch/arm/mach-pxa/eseries.c index 03942450885b..001a252bd514 100644 --- a/arch/arm/mach-pxa/eseries.c +++ b/arch/arm/mach-pxa/eseries.c | |||
| @@ -10,18 +10,78 @@ | |||
| 10 | * | 10 | * |
| 11 | */ | 11 | */ |
| 12 | 12 | ||
| 13 | #include <linux/kernel.h> | ||
| 13 | #include <linux/init.h> | 14 | #include <linux/init.h> |
| 14 | 15 | ||
| 15 | #include <asm/setup.h> | 16 | #include <asm/setup.h> |
| 16 | #include <asm/mach/arch.h> | 17 | #include <asm/mach/arch.h> |
| 17 | #include <mach/hardware.h> | ||
| 18 | #include <asm/mach-types.h> | 18 | #include <asm/mach-types.h> |
| 19 | 19 | ||
| 20 | #include <mach/mfp-pxa25x.h> | ||
| 21 | #include <mach/hardware.h> | ||
| 22 | |||
| 20 | #include "generic.h" | 23 | #include "generic.h" |
| 21 | 24 | ||
| 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 | |||
| 22 | /* Only e800 has 128MB RAM */ | 82 | /* Only e800 has 128MB RAM */ |
| 23 | static void __init eseries_fixup(struct machine_desc *desc, | 83 | static void __init eseries_fixup(struct machine_desc *desc, |
| 24 | struct tag *tags, char **cmdline, struct meminfo *mi) | 84 | struct tag *tags, char **cmdline, struct meminfo *mi) |
| 25 | { | 85 | { |
| 26 | mi->nr_banks=1; | 86 | mi->nr_banks=1; |
| 27 | mi->bank[0].start = 0xa0000000; | 87 | mi->bank[0].start = 0xa0000000; |
| @@ -32,83 +92,95 @@ static void __init eseries_fixup(struct machine_desc *desc, | |||
| 32 | mi->bank[0].size = (64*1024*1024); | 92 | mi->bank[0].size = (64*1024*1024); |
| 33 | } | 93 | } |
| 34 | 94 | ||
| 95 | static void __init e740_init(void) | ||
| 96 | { | ||
| 97 | pxa2xx_mfp_config(ARRAY_AND_SIZE(e740_pin_config)); | ||
| 98 | } | ||
| 99 | |||
| 100 | static void __init e400_init(void) | ||
| 101 | { | ||
| 102 | pxa2xx_mfp_config(ARRAY_AND_SIZE(e400_pin_config)); | ||
| 103 | } | ||
| 104 | |||
| 35 | /* e-series machine definitions */ | 105 | /* e-series machine definitions */ |
| 36 | 106 | ||
| 37 | #ifdef CONFIG_MACH_E330 | 107 | #ifdef CONFIG_MACH_E330 |
| 38 | MACHINE_START(E330, "Toshiba e330") | 108 | MACHINE_START(E330, "Toshiba e330") |
| 39 | /* Maintainer: Ian Molton (spyro@f2s.com) */ | 109 | /* Maintainer: Ian Molton (spyro@f2s.com) */ |
| 40 | .phys_io = 0x40000000, | 110 | .phys_io = 0x40000000, |
| 41 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | 111 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, |
| 42 | .boot_params = 0xa0000100, | 112 | .boot_params = 0xa0000100, |
| 43 | .map_io = pxa_map_io, | 113 | .map_io = pxa_map_io, |
| 44 | .init_irq = pxa25x_init_irq, | 114 | .init_irq = pxa25x_init_irq, |
| 45 | .fixup = eseries_fixup, | 115 | .fixup = eseries_fixup, |
| 46 | .timer = &pxa_timer, | 116 | .timer = &pxa_timer, |
| 47 | MACHINE_END | 117 | MACHINE_END |
| 48 | #endif | 118 | #endif |
| 49 | 119 | ||
| 50 | #ifdef CONFIG_MACH_E350 | 120 | #ifdef CONFIG_MACH_E350 |
| 51 | MACHINE_START(E350, "Toshiba e350") | 121 | MACHINE_START(E350, "Toshiba e350") |
| 52 | /* Maintainer: Ian Molton (spyro@f2s.com) */ | 122 | /* Maintainer: Ian Molton (spyro@f2s.com) */ |
| 53 | .phys_io = 0x40000000, | 123 | .phys_io = 0x40000000, |
| 54 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | 124 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, |
| 55 | .boot_params = 0xa0000100, | 125 | .boot_params = 0xa0000100, |
| 56 | .map_io = pxa_map_io, | 126 | .map_io = pxa_map_io, |
| 57 | .init_irq = pxa25x_init_irq, | 127 | .init_irq = pxa25x_init_irq, |
| 58 | .fixup = eseries_fixup, | 128 | .fixup = eseries_fixup, |
| 59 | .timer = &pxa_timer, | 129 | .timer = &pxa_timer, |
| 60 | MACHINE_END | 130 | MACHINE_END |
| 61 | #endif | 131 | #endif |
| 62 | 132 | ||
| 63 | #ifdef CONFIG_MACH_E740 | 133 | #ifdef CONFIG_MACH_E740 |
| 64 | MACHINE_START(E740, "Toshiba e740") | 134 | MACHINE_START(E740, "Toshiba e740") |
| 65 | /* Maintainer: Ian Molton (spyro@f2s.com) */ | 135 | /* Maintainer: Ian Molton (spyro@f2s.com) */ |
| 66 | .phys_io = 0x40000000, | 136 | .phys_io = 0x40000000, |
| 67 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | 137 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, |
| 68 | .boot_params = 0xa0000100, | 138 | .boot_params = 0xa0000100, |
| 69 | .map_io = pxa_map_io, | 139 | .map_io = pxa_map_io, |
| 70 | .init_irq = pxa25x_init_irq, | 140 | .init_irq = pxa25x_init_irq, |
| 71 | .fixup = eseries_fixup, | 141 | .fixup = eseries_fixup, |
| 72 | .timer = &pxa_timer, | 142 | .init_machine = e740_init, |
| 143 | .timer = &pxa_timer, | ||
| 73 | MACHINE_END | 144 | MACHINE_END |
| 74 | #endif | 145 | #endif |
| 75 | 146 | ||
| 76 | #ifdef CONFIG_MACH_E750 | 147 | #ifdef CONFIG_MACH_E750 |
| 77 | MACHINE_START(E750, "Toshiba e750") | 148 | MACHINE_START(E750, "Toshiba e750") |
| 78 | /* Maintainer: Ian Molton (spyro@f2s.com) */ | 149 | /* Maintainer: Ian Molton (spyro@f2s.com) */ |
| 79 | .phys_io = 0x40000000, | 150 | .phys_io = 0x40000000, |
| 80 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | 151 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, |
| 81 | .boot_params = 0xa0000100, | 152 | .boot_params = 0xa0000100, |
| 82 | .map_io = pxa_map_io, | 153 | .map_io = pxa_map_io, |
| 83 | .init_irq = pxa25x_init_irq, | 154 | .init_irq = pxa25x_init_irq, |
| 84 | .fixup = eseries_fixup, | 155 | .fixup = eseries_fixup, |
| 85 | .timer = &pxa_timer, | 156 | .timer = &pxa_timer, |
| 86 | MACHINE_END | 157 | MACHINE_END |
| 87 | #endif | 158 | #endif |
| 88 | 159 | ||
| 89 | #ifdef CONFIG_MACH_E400 | 160 | #ifdef CONFIG_MACH_E400 |
| 90 | MACHINE_START(E400, "Toshiba e400") | 161 | MACHINE_START(E400, "Toshiba e400") |
| 91 | /* Maintainer: Ian Molton (spyro@f2s.com) */ | 162 | /* Maintainer: Ian Molton (spyro@f2s.com) */ |
| 92 | .phys_io = 0x40000000, | 163 | .phys_io = 0x40000000, |
| 93 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | 164 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, |
| 94 | .boot_params = 0xa0000100, | 165 | .boot_params = 0xa0000100, |
| 95 | .map_io = pxa_map_io, | 166 | .map_io = pxa_map_io, |
| 96 | .init_irq = pxa25x_init_irq, | 167 | .init_irq = pxa25x_init_irq, |
| 97 | .fixup = eseries_fixup, | 168 | .fixup = eseries_fixup, |
| 98 | .timer = &pxa_timer, | 169 | .init_machine = e400_init, |
| 170 | .timer = &pxa_timer, | ||
| 99 | MACHINE_END | 171 | MACHINE_END |
| 100 | #endif | 172 | #endif |
| 101 | 173 | ||
| 102 | #ifdef CONFIG_MACH_E800 | 174 | #ifdef CONFIG_MACH_E800 |
| 103 | MACHINE_START(E800, "Toshiba e800") | 175 | MACHINE_START(E800, "Toshiba e800") |
| 104 | /* Maintainer: Ian Molton (spyro@f2s.com) */ | 176 | /* Maintainer: Ian Molton (spyro@f2s.com) */ |
| 105 | .phys_io = 0x40000000, | 177 | .phys_io = 0x40000000, |
| 106 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | 178 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, |
| 107 | .boot_params = 0xa0000100, | 179 | .boot_params = 0xa0000100, |
| 108 | .map_io = pxa_map_io, | 180 | .map_io = pxa_map_io, |
| 109 | .init_irq = pxa25x_init_irq, | 181 | .init_irq = pxa25x_init_irq, |
| 110 | .fixup = eseries_fixup, | 182 | .fixup = eseries_fixup, |
| 111 | .timer = &pxa_timer, | 183 | .timer = &pxa_timer, |
| 112 | MACHINE_END | 184 | MACHINE_END |
| 113 | #endif | 185 | #endif |
| 114 | 186 | ||
diff --git a/arch/arm/mach-pxa/include/mach/irqs.h b/arch/arm/mach-pxa/include/mach/irqs.h index 32772bc6925c..108b5db9b2af 100644 --- a/arch/arm/mach-pxa/include/mach/irqs.h +++ b/arch/arm/mach-pxa/include/mach/irqs.h | |||
| @@ -183,6 +183,7 @@ | |||
| 183 | defined(CONFIG_MACH_TOSA) || \ | 183 | defined(CONFIG_MACH_TOSA) || \ |
| 184 | defined(CONFIG_MACH_MAINSTONE) || \ | 184 | defined(CONFIG_MACH_MAINSTONE) || \ |
| 185 | defined(CONFIG_MACH_PCM027) || \ | 185 | defined(CONFIG_MACH_PCM027) || \ |
| 186 | defined(CONFIG_ARCH_PXA_ESERIES) || \ | ||
| 186 | defined(CONFIG_MACH_MAGICIAN) | 187 | defined(CONFIG_MACH_MAGICIAN) |
| 187 | #define NR_IRQS (IRQ_BOARD_END) | 188 | #define NR_IRQS (IRQ_BOARD_END) |
| 188 | #elif defined(CONFIG_MACH_ZYLONITE) | 189 | #elif defined(CONFIG_MACH_ZYLONITE) |
diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c index bb9e09208b9f..4ffdff2d9ff1 100644 --- a/arch/arm/mach-pxa/lubbock.c +++ b/arch/arm/mach-pxa/lubbock.c | |||
| @@ -52,6 +52,7 @@ | |||
| 52 | #include <mach/mmc.h> | 52 | #include <mach/mmc.h> |
| 53 | 53 | ||
| 54 | #include "generic.h" | 54 | #include "generic.h" |
| 55 | #include "clock.h" | ||
| 55 | #include "devices.h" | 56 | #include "devices.h" |
| 56 | 57 | ||
| 57 | static unsigned long lubbock_pin_config[] __initdata = { | 58 | static unsigned long lubbock_pin_config[] __initdata = { |
| @@ -485,6 +486,7 @@ static void __init lubbock_init(void) | |||
| 485 | 486 | ||
| 486 | pxa2xx_mfp_config(ARRAY_AND_SIZE(lubbock_pin_config)); | 487 | pxa2xx_mfp_config(ARRAY_AND_SIZE(lubbock_pin_config)); |
| 487 | 488 | ||
| 489 | clk_add_alias("SA1111_CLK", NULL, "GPIO11_CLK", NULL); | ||
| 488 | pxa_set_udc_info(&udc_info); | 490 | pxa_set_udc_info(&udc_info); |
| 489 | set_pxa_fb_info(&sharp_lm8v31); | 491 | set_pxa_fb_info(&sharp_lm8v31); |
| 490 | pxa_set_mci_info(&lubbock_mci_platform_data); | 492 | pxa_set_mci_info(&lubbock_mci_platform_data); |
diff --git a/arch/arm/mach-pxa/pxa25x.c b/arch/arm/mach-pxa/pxa25x.c index 9e5d8a8c6424..305452b56e91 100644 --- a/arch/arm/mach-pxa/pxa25x.c +++ b/arch/arm/mach-pxa/pxa25x.c | |||
| @@ -166,8 +166,7 @@ static struct clk pxa25x_hwuart_clk = | |||
| 166 | ; | 166 | ; |
| 167 | 167 | ||
| 168 | /* | 168 | /* |
| 169 | * PXA 2xx clock declarations. Order is important (see aliases below) | 169 | * PXA 2xx clock declarations. |
| 170 | * Please be careful not to disrupt the ordering. | ||
| 171 | */ | 170 | */ |
| 172 | static struct clk pxa25x_clks[] = { | 171 | static struct clk pxa25x_clks[] = { |
| 173 | INIT_CK("LCDCLK", LCD, &clk_pxa25x_lcd_ops, &pxa_device_fb.dev), | 172 | INIT_CK("LCDCLK", LCD, &clk_pxa25x_lcd_ops, &pxa_device_fb.dev), |
| @@ -194,11 +193,6 @@ static struct clk pxa25x_clks[] = { | |||
| 194 | INIT_CKEN("FICPCLK", FICP, 47923000, 0, NULL), | 193 | INIT_CKEN("FICPCLK", FICP, 47923000, 0, NULL), |
| 195 | }; | 194 | }; |
| 196 | 195 | ||
| 197 | static struct clk pxa2xx_clk_aliases[] = { | ||
| 198 | INIT_CKOTHER("GPIO7_CLK", &pxa25x_clks[4], NULL), | ||
| 199 | INIT_CKOTHER("SA1111_CLK", &pxa25x_clks[5], NULL), | ||
| 200 | }; | ||
| 201 | |||
| 202 | #ifdef CONFIG_PM | 196 | #ifdef CONFIG_PM |
| 203 | 197 | ||
| 204 | #define SAVE(x) sleep_save[SLEEP_SAVE_##x] = x | 198 | #define SAVE(x) sleep_save[SLEEP_SAVE_##x] = x |
| @@ -375,8 +369,6 @@ static int __init pxa25x_init(void) | |||
| 375 | if (cpu_is_pxa255()) | 369 | if (cpu_is_pxa255()) |
| 376 | ret = platform_device_register(&pxa_device_hwuart); | 370 | ret = platform_device_register(&pxa_device_hwuart); |
| 377 | 371 | ||
| 378 | clks_register(pxa2xx_clk_aliases, ARRAY_SIZE(pxa2xx_clk_aliases)); | ||
| 379 | |||
| 380 | return ret; | 372 | return ret; |
| 381 | } | 373 | } |
| 382 | 374 | ||
diff --git a/arch/arm/mach-pxa/pxa300.c b/arch/arm/mach-pxa/pxa300.c index 494fc1f032db..9adc7fc4618a 100644 --- a/arch/arm/mach-pxa/pxa300.c +++ b/arch/arm/mach-pxa/pxa300.c | |||
| @@ -90,7 +90,9 @@ static struct clk common_clks[] = { | |||
| 90 | }; | 90 | }; |
| 91 | 91 | ||
| 92 | static struct clk pxa310_clks[] = { | 92 | static struct clk pxa310_clks[] = { |
| 93 | #ifdef CONFIG_CPU_PXA310 | ||
| 93 | PXA3xx_CKEN("MMCCLK", MMC3, 19500000, 0, &pxa3xx_device_mci3.dev), | 94 | PXA3xx_CKEN("MMCCLK", MMC3, 19500000, 0, &pxa3xx_device_mci3.dev), |
| 95 | #endif | ||
| 94 | }; | 96 | }; |
| 95 | 97 | ||
| 96 | static int __init pxa300_init(void) | 98 | static int __init pxa300_init(void) |
