diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-11 13:09:45 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-11 13:09:45 -0400 |
commit | 7cc4e87f912bbefa440a51856b8d076e5d1f554a (patch) | |
tree | 1b8df8683f3de37d2e8211ffa8d151f60d59af62 /arch/arm/mach-pxa/pxa3xx.c | |
parent | 5ba2f67afb02c5302b2898949ed6fc3b3d37dcf1 (diff) | |
parent | 69fc7eed5f56bce15b239e5110de2575a6970df4 (diff) |
Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm
* 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm: (236 commits)
[ARM] 5300/1: fixup spitz reset during boot
[ARM] 5295/1: make ZONE_DMA optional
[ARM] 5239/1: Palm Zire 72 power management support
[ARM] 5298/1: Drop desc_handle_irq()
[ARM] 5297/1: [KS8695] Fix two compile-time warnings
[ARM] 5296/1: [KS8695] Replace macro's with trailing underscores.
[ARM] pxa: allow multi-machine PCMCIA builds
[ARM] pxa: add preliminary CPUFREQ support for PXA3xx
[ARM] pxa: add missing ACCR bit definitions to pxa3xx-regs.h
[ARM] pxa: rename cpu-pxa.c to cpufreq-pxa2xx.c
[ARM] pxa/zylonite: add support for USB OHCI
[ARM] ohci-pxa27x: use ioremap() and offset for register access
[ARM] ohci-pxa27x: introduce pxa27x_clear_otgph()
[ARM] ohci-pxa27x: use platform_get_{irq,resource} for the resource
[ARM] ohci-pxa27x: move OHCI controller specific registers into the driver
[ARM] ohci-pxa27x: introduce flags to avoid direct access to OHCI registers
[ARM] pxa: move I2S register and bit definitions into pxa2xx-i2s.c
[ARM] pxa: simplify DMA register definitions
[ARM] pxa: make additional DCSR bits valid for PXA3xx
[ARM] pxa: move i2c register and bit definitions into i2c-pxa.c
...
Fixed up conflicts in
arch/arm/mach-versatile/core.c
sound/soc/pxa/pxa2xx-ac97.c
sound/soc/pxa/pxa2xx-i2s.c
manually.
Diffstat (limited to 'arch/arm/mach-pxa/pxa3xx.c')
-rw-r--r-- | arch/arm/mach-pxa/pxa3xx.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c index 03cbc38103ed..b3cd5d0b0f35 100644 --- a/arch/arm/mach-pxa/pxa3xx.c +++ b/arch/arm/mach-pxa/pxa3xx.c | |||
@@ -203,6 +203,19 @@ static const struct clkops clk_pout_ops = { | |||
203 | .disable = clk_pout_disable, | 203 | .disable = clk_pout_disable, |
204 | }; | 204 | }; |
205 | 205 | ||
206 | static void clk_dummy_enable(struct clk *clk) | ||
207 | { | ||
208 | } | ||
209 | |||
210 | static void clk_dummy_disable(struct clk *clk) | ||
211 | { | ||
212 | } | ||
213 | |||
214 | static const struct clkops clk_dummy_ops = { | ||
215 | .enable = clk_dummy_enable, | ||
216 | .disable = clk_dummy_disable, | ||
217 | }; | ||
218 | |||
206 | static struct clk pxa3xx_clks[] = { | 219 | static struct clk pxa3xx_clks[] = { |
207 | { | 220 | { |
208 | .name = "CLK_POUT", | 221 | .name = "CLK_POUT", |
@@ -211,6 +224,13 @@ static struct clk pxa3xx_clks[] = { | |||
211 | .delay = 70, | 224 | .delay = 70, |
212 | }, | 225 | }, |
213 | 226 | ||
227 | /* Power I2C clock is always on */ | ||
228 | { | ||
229 | .name = "I2CCLK", | ||
230 | .ops = &clk_dummy_ops, | ||
231 | .dev = &pxa3xx_device_i2c_power.dev, | ||
232 | }, | ||
233 | |||
214 | PXA3xx_CK("LCDCLK", LCD, &clk_pxa3xx_hsio_ops, &pxa_device_fb.dev), | 234 | PXA3xx_CK("LCDCLK", LCD, &clk_pxa3xx_hsio_ops, &pxa_device_fb.dev), |
215 | PXA3xx_CK("CAMCLK", CAMERA, &clk_pxa3xx_hsio_ops, NULL), | 235 | PXA3xx_CK("CAMCLK", CAMERA, &clk_pxa3xx_hsio_ops, NULL), |
216 | PXA3xx_CK("AC97CLK", AC97, &clk_pxa3xx_ac97_ops, NULL), | 236 | PXA3xx_CK("AC97CLK", AC97, &clk_pxa3xx_ac97_ops, NULL), |
@@ -509,6 +529,30 @@ void __init pxa3xx_init_irq(void) | |||
509 | * device registration specific to PXA3xx. | 529 | * device registration specific to PXA3xx. |
510 | */ | 530 | */ |
511 | 531 | ||
532 | static struct resource i2c_power_resources[] = { | ||
533 | { | ||
534 | .start = 0x40f500c0, | ||
535 | .end = 0x40f500d3, | ||
536 | .flags = IORESOURCE_MEM, | ||
537 | }, { | ||
538 | .start = IRQ_PWRI2C, | ||
539 | .end = IRQ_PWRI2C, | ||
540 | .flags = IORESOURCE_IRQ, | ||
541 | }, | ||
542 | }; | ||
543 | |||
544 | struct platform_device pxa3xx_device_i2c_power = { | ||
545 | .name = "pxa2xx-i2c", | ||
546 | .id = 1, | ||
547 | .resource = i2c_power_resources, | ||
548 | .num_resources = ARRAY_SIZE(i2c_power_resources), | ||
549 | }; | ||
550 | |||
551 | void __init pxa3xx_set_i2c_power_info(struct i2c_pxa_platform_data *info) | ||
552 | { | ||
553 | pxa3xx_device_i2c_power.dev.platform_data = info; | ||
554 | } | ||
555 | |||
512 | static struct platform_device *devices[] __initdata = { | 556 | static struct platform_device *devices[] __initdata = { |
513 | /* &pxa_device_udc, The UDC driver is PXA25x only */ | 557 | /* &pxa_device_udc, The UDC driver is PXA25x only */ |
514 | &pxa_device_ffuart, | 558 | &pxa_device_ffuart, |
@@ -522,6 +566,7 @@ static struct platform_device *devices[] __initdata = { | |||
522 | &pxa3xx_device_ssp4, | 566 | &pxa3xx_device_ssp4, |
523 | &pxa27x_device_pwm0, | 567 | &pxa27x_device_pwm0, |
524 | &pxa27x_device_pwm1, | 568 | &pxa27x_device_pwm1, |
569 | &pxa3xx_device_i2c_power, | ||
525 | }; | 570 | }; |
526 | 571 | ||
527 | static struct sys_device pxa3xx_sysdev[] = { | 572 | static struct sys_device pxa3xx_sysdev[] = { |