| Dmitry Eremin-Solenikov | 3b31fab | 2009-02-16 20:40:57 +0300 | [diff] [blame] | 1 | #include <linux/kernel.h> | 
|  | 2 | #include <linux/module.h> | 
|  | 3 | #include <linux/platform_device.h> | 
|  | 4 | #include <linux/gpio_keys.h> | 
|  | 5 | #include <linux/input.h> | 
|  | 6 | #include <linux/leds.h> | 
|  | 7 |  | 
| Dmitry Eremin-Solenikov | 675b5d8 | 2009-04-01 03:40:05 +0400 | [diff] [blame] | 8 | #include <asm/mach-types.h> | 
|  | 9 |  | 
| Dmitry Eremin-Solenikov | 3b31fab | 2009-02-16 20:40:57 +0300 | [diff] [blame] | 10 | static struct gpio_keys_button csb701_buttons[] = { | 
|  | 11 | { | 
|  | 12 | .code	= 0x7, | 
|  | 13 | .gpio	= 1, | 
|  | 14 | .active_low = 1, | 
|  | 15 | .desc	= "SW2", | 
|  | 16 | .type	= EV_SW, | 
|  | 17 | .wakeup = 1, | 
|  | 18 | }, | 
|  | 19 | }; | 
|  | 20 |  | 
|  | 21 | static struct gpio_keys_platform_data csb701_gpio_keys_data = { | 
|  | 22 | .buttons = csb701_buttons, | 
|  | 23 | .nbuttons = ARRAY_SIZE(csb701_buttons), | 
|  | 24 | }; | 
|  | 25 |  | 
|  | 26 | static struct gpio_led csb701_leds[] = { | 
|  | 27 | { | 
|  | 28 | .name	= "csb701:yellow:heartbeat", | 
|  | 29 | .default_trigger = "heartbeat", | 
|  | 30 | .gpio	= 11, | 
|  | 31 | .active_low = 1, | 
|  | 32 | }, | 
|  | 33 | }; | 
|  | 34 |  | 
|  | 35 | static struct platform_device csb701_gpio_keys = { | 
|  | 36 | .name		= "gpio-keys", | 
|  | 37 | .id		= -1, | 
|  | 38 | .dev.platform_data = &csb701_gpio_keys_data, | 
|  | 39 | }; | 
|  | 40 |  | 
|  | 41 | static struct gpio_led_platform_data csb701_leds_gpio_data = { | 
|  | 42 | .leds		= csb701_leds, | 
|  | 43 | .num_leds	= ARRAY_SIZE(csb701_leds), | 
|  | 44 | }; | 
|  | 45 |  | 
|  | 46 | static struct platform_device csb701_leds_gpio = { | 
|  | 47 | .name		= "leds-gpio", | 
|  | 48 | .id		= -1, | 
|  | 49 | .dev.platform_data = &csb701_leds_gpio_data, | 
|  | 50 | }; | 
|  | 51 |  | 
|  | 52 | static struct platform_device *devices[] __initdata = { | 
|  | 53 | &csb701_gpio_keys, | 
|  | 54 | &csb701_leds_gpio, | 
|  | 55 | }; | 
|  | 56 |  | 
|  | 57 | static int __init csb701_init(void) | 
|  | 58 | { | 
| Dmitry Eremin-Solenikov | 675b5d8 | 2009-04-01 03:40:05 +0400 | [diff] [blame] | 59 | if (!machine_is_csb726()) | 
|  | 60 | return -ENODEV; | 
|  | 61 |  | 
| Dmitry Eremin-Solenikov | 3b31fab | 2009-02-16 20:40:57 +0300 | [diff] [blame] | 62 | return platform_add_devices(devices, ARRAY_SIZE(devices)); | 
|  | 63 | } | 
|  | 64 |  | 
|  | 65 | module_init(csb701_init); | 
|  | 66 |  |