[glsdk/meta-ti-glsdk.git] / recipes-kernel / linux / linux-ti33x-psp-3.1 / 0002-ARM-OMAP2-beaglebone-add-LED-support.patch
1 From 3672d287f5382b102e02400298a00d6f8052dd9d Mon Sep 17 00:00:00 2001
2 From: Koen Kooi <koen@dominion.thruhere.net>
3 Date: Wed, 2 Nov 2011 09:11:59 +0100
4 Subject: [PATCH 2/3] ARM: OMAP2+: beaglebone: add LED support
6 Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
7 ---
8 arch/arm/mach-omap2/board-am335xevm.c | 66 +++++++++++++++++++++++++++++++++
9 1 files changed, 66 insertions(+), 0 deletions(-)
11 diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
12 index ee936e0..ecf4a76 100644
13 --- a/arch/arm/mach-omap2/board-am335xevm.c
14 +++ b/arch/arm/mach-omap2/board-am335xevm.c
15 @@ -18,6 +18,7 @@
16 #include <linux/i2c/at24.h>
17 #include <linux/phy.h>
18 #include <linux/gpio.h>
19 +#include <linux/leds.h>
20 #include <linux/spi/spi.h>
21 #include <linux/spi/flash.h>
22 #include <linux/mtd/mtd.h>
23 @@ -649,6 +650,60 @@ static struct pinmux_config usb1_pin_mux[] = {
24 {NULL, 0},
25 };
27 +/* LEDS - gpio1_21 -> gpio1_24 */
28 +
29 +#define BEAGLEBONE_USR1_LED GPIO_TO_PIN(1, 21)
30 +#define BEAGLEBONE_USR2_LED GPIO_TO_PIN(1, 22)
31 +#define BEAGLEBONE_USR3_LED GPIO_TO_PIN(1, 23)
32 +#define BEAGLEBONE_USR4_LED GPIO_TO_PIN(1, 24)
33 +
34 +#define BEAGLEBONEDVI_USR0_LED GPIO_TO_PIN(1, 18)
35 +#define BEAGLEBONEDVI_USR1_LED GPIO_TO_PIN(1, 19)
36 +
37 +static struct gpio_led gpio_leds[] = {
38 + {
39 + .name = "beaglebone::usr0",
40 + .default_trigger = "heartbeat",
41 + .gpio = BEAGLEBONE_USR1_LED,
42 + },
43 + {
44 + .name = "beaglebone::usr1",
45 + .default_trigger = "mmc0",
46 + .gpio = BEAGLEBONE_USR2_LED,
47 + },
48 + {
49 + .name = "beaglebone::usr2",
50 + .gpio = BEAGLEBONE_USR3_LED,
51 + },
52 + {
53 + .name = "beaglebone::usr3",
54 + .gpio = BEAGLEBONE_USR4_LED,
55 + },
56 +};
57 +
58 +static struct gpio_led_platform_data gpio_led_info = {
59 + .leds = gpio_leds,
60 + .num_leds = ARRAY_SIZE(gpio_leds),
61 +};
62 +
63 +static struct platform_device leds_gpio = {
64 + .name = "leds-gpio",
65 + .id = -1,
66 + .dev = {
67 + .platform_data = &gpio_led_info,
68 + },
69 +};
70 +
71 +static struct pinmux_config bone_pin_mux[] = {
72 + /* User LED gpios (gpio1_21 to gpio1_24) */
73 + {"gpmc_a5.rgmii2_td0", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
74 + {"gpmc_a6.rgmii2_tclk", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
75 + {"gpmc_a7.rgmii2_rclk", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
76 + {"gpmc_a8.rgmii2_rd3", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
77 + /* Grounding gpio1_6 (pin 3 Conn A) signals bone tester to start diag tests */
78 + {"gpmc_ad6.gpio1_6", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP},
79 +};
80 +
81 /* Module pin mux for eCAP0 */
82 static struct pinmux_config ecap0_pin_mux[] = {
83 {"ecap0_in_pwm0_out.gpio0_7", AM33XX_PIN_OUTPUT},
84 @@ -757,6 +812,15 @@ static void tsc_init(int evm_id, int profile)
85 pr_err("failed to register touchscreen device\n");
86 }
88 +static void boneleds_init(int evm_id, int profile )
89 +{
90 + int err;
91 + setup_pin_mux(bone_pin_mux);
92 + err = platform_device_register(&leds_gpio);
93 + if (err)
94 + pr_err("failed to register BeagleBone LEDS\n");
95 +}
96 +
97 static void rgmii1_init(int evm_id, int profile)
98 {
99 setup_pin_mux(rgmii1_pin_mux);
100 @@ -1230,6 +1294,7 @@ static struct evm_dev_cfg beaglebone_old_dev_cfg[] = {
101 {usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
102 {usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
103 {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
104 + {boneleds_init, DEV_ON_BASEBOARD, PROFILE_ALL},
105 {NULL, 0, 0},
106 };
108 @@ -1239,6 +1304,7 @@ static struct evm_dev_cfg beaglebone_dev_cfg[] = {
109 {usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
110 {usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
111 {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
112 + {boneleds_init, DEV_ON_BASEBOARD, PROFILE_ALL},
113 {NULL, 0, 0},
114 };
116 --
117 1.7.2.5