diff options
Diffstat (limited to 'arch/arm/mach-pxa/corgi.c')
| -rw-r--r-- | arch/arm/mach-pxa/corgi.c | 50 | 
1 files changed, 44 insertions, 6 deletions
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c index f162f1b77cd..91dd1c7cdbc 100644 --- a/arch/arm/mach-pxa/corgi.c +++ b/arch/arm/mach-pxa/corgi.c @@ -32,7 +32,9 @@  #include <linux/spi/pxa2xx_spi.h>  #include <linux/mtd/sharpsl.h>  #include <linux/input/matrix_keypad.h> +#include <linux/gpio_keys.h>  #include <linux/module.h> +#include <linux/memblock.h>  #include <video/w100fb.h>  #include <asm/setup.h> @@ -405,6 +407,44 @@ static struct platform_device corgikbd_device = {  	},  }; +static struct gpio_keys_button corgi_gpio_keys[] = { +	{ +		.type	= EV_SW, +		.code	= SW_LID, +		.gpio	= CORGI_GPIO_SWA, +		.desc	= "Lid close switch", +		.debounce_interval = 500, +	}, +	{ +		.type	= EV_SW, +		.code	= SW_TABLET_MODE, +		.gpio	= CORGI_GPIO_SWB, +		.desc	= "Tablet mode switch", +		.debounce_interval = 500, +	}, +	{ +		.type	= EV_SW, +		.code	= SW_HEADPHONE_INSERT, +		.gpio	= CORGI_GPIO_AK_INT, +		.desc	= "HeadPhone insert", +		.debounce_interval = 500, +	}, +}; + +static struct gpio_keys_platform_data corgi_gpio_keys_platform_data = { +	.buttons	= corgi_gpio_keys, +	.nbuttons	= ARRAY_SIZE(corgi_gpio_keys), +	.poll_interval	= 250, +}; + +static struct platform_device corgi_gpio_keys_device = { +	.name	= "gpio-keys-polled", +	.id	= -1, +	.dev	= { +		.platform_data	= &corgi_gpio_keys_platform_data, +	}, +}; +  /*   * Corgi LEDs   */ @@ -646,6 +686,7 @@ static struct platform_device sharpsl_rom_device = {  static struct platform_device *devices[] __initdata = {  	&corgiscoop_device,  	&corgifb_device, +	&corgi_gpio_keys_device,  	&corgikbd_device,  	&corgiled_device,  	&corgi_audio_device, @@ -713,16 +754,13 @@ static void __init corgi_init(void)  	platform_add_devices(devices, ARRAY_SIZE(devices));  } -static void __init fixup_corgi(struct tag *tags, char **cmdline, -			       struct meminfo *mi) +static void __init fixup_corgi(struct tag *tags, char **cmdline)  {  	sharpsl_save_param(); -	mi->nr_banks=1; -	mi->bank[0].start = 0xa0000000;  	if (machine_is_corgi()) -		mi->bank[0].size = (32*1024*1024); +		memblock_add(0xa0000000, SZ_32M);  	else -		mi->bank[0].size = (64*1024*1024); +		memblock_add(0xa0000000, SZ_64M);  }  #ifdef CONFIG_MACH_CORGI  | 
