From 4df4ee83b31e09942932d67890d36ae116363ac1 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Wed, 2 Nov 2011 09:11:59 +0100 Subject: [PATCH] ARM: OMAP2+: beaglebone: add LED support Signed-off-by: Koen Kooi --- arch/arm/mach-omap2/board-am335xevm.c | 66 +++++++++++++++++++++++++++++++++ arch/arm/mach-omap2/mux33xx.c | 2 +- 2 files changed, 67 insertions(+), 1 deletions(-) diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c index ee936e0..ecf4a76 100644 --- a/arch/arm/mach-omap2/board-am335xevm.c +++ b/arch/arm/mach-omap2/board-am335xevm.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -649,6 +650,60 @@ static struct pinmux_config usb1_pin_mux[] = { {NULL, 0}, }; +/* LEDS - gpio1_21 -> gpio1_24 */ + +#define BEAGLEBONE_USR1_LED GPIO_TO_PIN(1, 21) +#define BEAGLEBONE_USR2_LED GPIO_TO_PIN(1, 22) +#define BEAGLEBONE_USR3_LED GPIO_TO_PIN(1, 23) +#define BEAGLEBONE_USR4_LED GPIO_TO_PIN(1, 24) + +#define BEAGLEBONEDVI_USR0_LED GPIO_TO_PIN(1, 18) +#define BEAGLEBONEDVI_USR1_LED GPIO_TO_PIN(1, 19) + +static struct gpio_led gpio_leds[] = { + { + .name = "beaglebone::usr0", + .default_trigger = "heartbeat", + .gpio = BEAGLEBONE_USR1_LED, + }, + { + .name = "beaglebone::usr1", + .default_trigger = "mmc0", + .gpio = BEAGLEBONE_USR2_LED, + }, + { + .name = "beaglebone::usr2", + .gpio = BEAGLEBONE_USR3_LED, + }, + { + .name = "beaglebone::usr3", + .gpio = BEAGLEBONE_USR4_LED, + }, +}; + +static struct gpio_led_platform_data gpio_led_info = { + .leds = gpio_leds, + .num_leds = ARRAY_SIZE(gpio_leds), +}; + +static struct platform_device leds_gpio = { + .name = "leds-gpio", + .id = -1, + .dev = { + .platform_data = &gpio_led_info, + }, +}; + +static struct pinmux_config bone_pin_mux[] = { + /* User LED gpios (gpio1_21 to gpio1_24) */ + {"gpmc_a5.rgmii2_td0", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, + {"gpmc_a6.rgmii2_tclk", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, + {"gpmc_a7.rgmii2_rclk", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, + {"gpmc_a8.rgmii2_rd3", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, + /* Grounding gpio1_6 (pin 3 Conn A) signals bone tester to start diag tests */ + {"gpmc_ad6.gpio1_6", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP}, +}; + /* Module pin mux for eCAP0 */ static struct pinmux_config ecap0_pin_mux[] = { {"ecap0_in_pwm0_out.gpio0_7", AM33XX_PIN_OUTPUT}, @@ -757,6 +812,15 @@ static void tsc_init(int evm_id, int profile) pr_err("failed to register touchscreen device\n"); } +static void boneleds_init(int evm_id, int profile ) +{ + int err; + setup_pin_mux(bone_pin_mux); + err = platform_device_register(&leds_gpio); + if (err) + pr_err("failed to register BeagleBone LEDS\n"); +} + static void rgmii1_init(int evm_id, int profile) { setup_pin_mux(rgmii1_pin_mux); @@ -1230,6 +1294,7 @@ static struct evm_dev_cfg beaglebone_old_dev_cfg[] = { {usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE}, {usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE}, {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE}, + {boneleds_init, DEV_ON_BASEBOARD, PROFILE_ALL}, {NULL, 0, 0}, }; @@ -1239,6 +1304,7 @@ static struct evm_dev_cfg beaglebone_dev_cfg[] = { {usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE}, {usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE}, {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE}, + {boneleds_init, DEV_ON_BASEBOARD, PROFILE_ALL}, {NULL, 0, 0}, }; diff --git a/arch/arm/mach-omap2/mux33xx.c b/arch/arm/mach-omap2/mux33xx.c index 0286c4f..f09e827 100644 --- a/arch/arm/mach-omap2/mux33xx.c +++ b/arch/arm/mach-omap2/mux33xx.c @@ -49,7 +49,7 @@ static struct omap_mux __initdata am33xx_muxmodes[] = { NULL, NULL, NULL, NULL), _AM33XX_MUXENTRY(GPMC_AD6, 0, "gpmc_ad6", "mmc1_dat6", NULL, NULL, - NULL, NULL, NULL, NULL), + NULL, NULL, NULL, "gpio1_6"), _AM33XX_MUXENTRY(GPMC_AD7, 0, "gpmc_ad7", "mmc1_dat7", NULL, NULL, NULL, NULL, NULL, NULL), -- 1.7.4.1