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 8#include <asm/mach-types.h> 9 10static 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 21static struct gpio_keys_platform_data csb701_gpio_keys_data = { 22 .buttons = csb701_buttons, 23 .nbuttons = ARRAY_SIZE(csb701_buttons), 24}; 25 26static 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 35static struct platform_device csb701_gpio_keys = { 36 .name = "gpio-keys", 37 .id = -1, 38 .dev.platform_data = &csb701_gpio_keys_data, 39}; 40 41static struct gpio_led_platform_data csb701_leds_gpio_data = { 42 .leds = csb701_leds, 43 .num_leds = ARRAY_SIZE(csb701_leds), 44}; 45 46static struct platform_device csb701_leds_gpio = { 47 .name = "leds-gpio", 48 .id = -1, 49 .dev.platform_data = &csb701_leds_gpio_data, 50}; 51 52static struct platform_device *devices[] __initdata = { 53 &csb701_gpio_keys, 54 &csb701_leds_gpio, 55}; 56 57static int __init csb701_init(void) 58{ 59 if (!machine_is_csb726()) 60 return -ENODEV; 61 62 return platform_add_devices(devices, ARRAY_SIZE(devices)); 63} 64 65module_init(csb701_init); 66 67