From: eric miao <[EMAIL PROTECTED]> Date: Wed, 23 Jan 2008 13:39:13 +0800 Subject: [PATCH] pxa: add pxa27x_keypad device and pxa_set_keypad_info() also update the clk definitions in pxa27x and pxa3xx. Signed-off-by: eric miao <[EMAIL PROTECTED]> --- arch/arm/mach-pxa/devices.c | 25 +++++++++++++++++++++++++ arch/arm/mach-pxa/devices.h | 1 + arch/arm/mach-pxa/pxa27x.c | 2 +- arch/arm/mach-pxa/pxa3xx.c | 1 + include/asm-arm/arch-pxa/pxa27x_keypad.h | 2 ++ 5 files changed, 30 insertions(+), 1 deletions(-) Index: linux-2.6.25.3/arch/arm/mach-pxa/devices.c =================================================================== --- linux-2.6.25.3.orig/arch/arm/mach-pxa/devices.c +++ linux-2.6.25.3/arch/arm/mach-pxa/devices.c @@ -400,6 +400,31 @@ #if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx) +static struct resource pxa27x_resource_keypad[] = { + [0] = { + .start = 0x41500000, + .end = 0x4150004c, + .flags = IORESOURCE_MEM, + }, + [1] = { + .start = IRQ_KEYPAD, + .end = IRQ_KEYPAD, + .flags = IORESOURCE_IRQ, + }, +}; + +struct platform_device pxa27x_device_keypad = { + .name = "pxa27x-keypad", + .id = -1, + .resource = pxa27x_resource_keypad, + .num_resources = ARRAY_SIZE(pxa27x_resource_keypad), +}; + +void __init pxa_set_keypad_info(struct pxa27x_keypad_platform_data *info) +{ + pxa_register_device(&pxa27x_device_keypad, info); +} + static u64 pxa27x_ohci_dma_mask = DMA_BIT_MASK(32); static struct resource pxa27x_resource_ohci[] = { Index: linux-2.6.25.3/arch/arm/mach-pxa/devices.h =================================================================== --- linux-2.6.25.3.orig/arch/arm/mach-pxa/devices.h +++ linux-2.6.25.3/arch/arm/mach-pxa/devices.h @@ -14,6 +14,7 @@ extern struct platform_device pxa27x_device_i2c_power; extern struct platform_device pxa27x_device_ohci; +extern struct platform_device pxa27x_device_keypad; extern struct platform_device pxa25x_device_ssp; extern struct platform_device pxa25x_device_nssp; Index: linux-2.6.25.3/arch/arm/mach-pxa/pxa27x.c =================================================================== --- linux-2.6.25.3.orig/arch/arm/mach-pxa/pxa27x.c +++ linux-2.6.25.3/arch/arm/mach-pxa/pxa27x.c @@ -155,7 +155,7 @@ INIT_CKEN("USBCLK", USBHOST, 48000000, 0, &pxa27x_device_ohci.dev), INIT_CKEN("I2CCLK", PWRI2C, 13000000, 0, &pxa27x_device_i2c_power.dev), - INIT_CKEN("KBDCLK", KEYPAD, 32768, 0, NULL), + INIT_CKEN("KBDCLK", KEYPAD, 32768, 0, &pxa27x_device_keypad.dev), INIT_CKEN("SSPCLK", SSP1, 13000000, 0, &pxa27x_device_ssp1.dev), INIT_CKEN("SSPCLK", SSP2, 13000000, 0, &pxa27x_device_ssp2.dev), Index: linux-2.6.25.3/arch/arm/mach-pxa/pxa3xx.c =================================================================== --- linux-2.6.25.3.orig/arch/arm/mach-pxa/pxa3xx.c +++ linux-2.6.25.3/arch/arm/mach-pxa/pxa3xx.c @@ -185,6 +185,7 @@ PXA3xx_CKEN("I2CCLK", I2C, 32842000, 0, &pxa_device_i2c.dev), PXA3xx_CKEN("UDCCLK", UDC, 48000000, 5, &pxa_device_udc.dev), PXA3xx_CKEN("USBCLK", USBH, 48000000, 0, &pxa27x_device_ohci.dev), + PXA3xx_CKEN("KBDCLK", KEYPAD, 32768, 0, &pxa27x_device_keypad.dev), PXA3xx_CKEN("SSPCLK", SSP1, 13000000, 0, &pxa27x_device_ssp1.dev), PXA3xx_CKEN("SSPCLK", SSP2, 13000000, 0, &pxa27x_device_ssp2.dev), Index: linux-2.6.25.3/include/asm-arm/arch-pxa/pxa27x_keypad.h =================================================================== --- linux-2.6.25.3.orig/include/asm-arm/arch-pxa/pxa27x_keypad.h +++ linux-2.6.25.3/include/asm-arm/arch-pxa/pxa27x_keypad.h @@ -53,4 +53,6 @@ #define KEY(row, col, val) (((row) << 28) | ((col) << 24) | (val)) +extern void pxa_set_keypad_info(struct pxa27x_keypad_platform_data *info); + #endif /* __ASM_ARCH_PXA27x_KEYPAD_H */