mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 20:51:03 +02:00
mfd: dm355evm_msp: Convert LEDs to GPIO descriptor table
This converts the DaVinci DM355EVM LEDs to use GPIO descriptor look-ups. Cc: Sekhar Nori <nsekhar@ti.com> Cc: Bartosz Golaszewski <bgolaszewski@baylibre.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
This commit is contained in:
@@ -12,6 +12,7 @@
|
|||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/err.h>
|
#include <linux/err.h>
|
||||||
#include <linux/gpio.h>
|
#include <linux/gpio.h>
|
||||||
|
#include <linux/gpio/machine.h>
|
||||||
#include <linux/leds.h>
|
#include <linux/leds.h>
|
||||||
#include <linux/i2c.h>
|
#include <linux/i2c.h>
|
||||||
#include <linux/mfd/dm355evm_msp.h>
|
#include <linux/mfd/dm355evm_msp.h>
|
||||||
@@ -116,6 +117,54 @@ static const u8 msp_gpios[] = {
|
|||||||
MSP_GPIO(4, SDMMC), MSP_GPIO(3, SDMMC), /* mmc1 WP, nCD */
|
MSP_GPIO(4, SDMMC), MSP_GPIO(3, SDMMC), /* mmc1 WP, nCD */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct gpio_led evm_leds[] = {
|
||||||
|
{ .name = "dm355evm::ds14",
|
||||||
|
.default_trigger = "heartbeat", },
|
||||||
|
{ .name = "dm355evm::ds15",
|
||||||
|
.default_trigger = "mmc0", },
|
||||||
|
{ .name = "dm355evm::ds16",
|
||||||
|
/* could also be a CE-ATA drive */
|
||||||
|
.default_trigger = "mmc1", },
|
||||||
|
{ .name = "dm355evm::ds17",
|
||||||
|
.default_trigger = "nand-disk", },
|
||||||
|
{ .name = "dm355evm::ds18", },
|
||||||
|
{ .name = "dm355evm::ds19", },
|
||||||
|
{ .name = "dm355evm::ds20", },
|
||||||
|
{ .name = "dm355evm::ds21", },
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct gpio_led_platform_data evm_led_data = {
|
||||||
|
.num_leds = ARRAY_SIZE(evm_leds),
|
||||||
|
.leds = evm_leds,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct gpiod_lookup_table evm_leds_gpio_table = {
|
||||||
|
.dev_id = "leds-gpio",
|
||||||
|
.table = {
|
||||||
|
/*
|
||||||
|
* These GPIOs are on the dm355evm_msp
|
||||||
|
* GPIO chip at index 0..7
|
||||||
|
*/
|
||||||
|
GPIO_LOOKUP_IDX("dm355evm_msp", 0, NULL,
|
||||||
|
0, GPIO_ACTIVE_LOW),
|
||||||
|
GPIO_LOOKUP_IDX("dm355evm_msp", 1, NULL,
|
||||||
|
1, GPIO_ACTIVE_LOW),
|
||||||
|
GPIO_LOOKUP_IDX("dm355evm_msp", 2, NULL,
|
||||||
|
2, GPIO_ACTIVE_LOW),
|
||||||
|
GPIO_LOOKUP_IDX("dm355evm_msp", 3, NULL,
|
||||||
|
3, GPIO_ACTIVE_LOW),
|
||||||
|
GPIO_LOOKUP_IDX("dm355evm_msp", 4, NULL,
|
||||||
|
4, GPIO_ACTIVE_LOW),
|
||||||
|
GPIO_LOOKUP_IDX("dm355evm_msp", 5, NULL,
|
||||||
|
5, GPIO_ACTIVE_LOW),
|
||||||
|
GPIO_LOOKUP_IDX("dm355evm_msp", 6, NULL,
|
||||||
|
6, GPIO_ACTIVE_LOW),
|
||||||
|
GPIO_LOOKUP_IDX("dm355evm_msp", 7, NULL,
|
||||||
|
7, GPIO_ACTIVE_LOW),
|
||||||
|
{ },
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
#define MSP_GPIO_REG(offset) (msp_gpios[(offset)] >> 3)
|
#define MSP_GPIO_REG(offset) (msp_gpios[(offset)] >> 3)
|
||||||
#define MSP_GPIO_MASK(offset) BIT(msp_gpios[(offset)] & 0x07)
|
#define MSP_GPIO_MASK(offset) BIT(msp_gpios[(offset)] & 0x07)
|
||||||
|
|
||||||
@@ -260,32 +309,7 @@ static int add_children(struct i2c_client *client)
|
|||||||
|
|
||||||
/* LED output */
|
/* LED output */
|
||||||
if (msp_has_leds()) {
|
if (msp_has_leds()) {
|
||||||
#define GPIO_LED(l) .name = l, .active_low = true
|
gpiod_add_lookup_table(&evm_leds_gpio_table);
|
||||||
static struct gpio_led evm_leds[] = {
|
|
||||||
{ GPIO_LED("dm355evm::ds14"),
|
|
||||||
.default_trigger = "heartbeat", },
|
|
||||||
{ GPIO_LED("dm355evm::ds15"),
|
|
||||||
.default_trigger = "mmc0", },
|
|
||||||
{ GPIO_LED("dm355evm::ds16"),
|
|
||||||
/* could also be a CE-ATA drive */
|
|
||||||
.default_trigger = "mmc1", },
|
|
||||||
{ GPIO_LED("dm355evm::ds17"),
|
|
||||||
.default_trigger = "nand-disk", },
|
|
||||||
{ GPIO_LED("dm355evm::ds18"), },
|
|
||||||
{ GPIO_LED("dm355evm::ds19"), },
|
|
||||||
{ GPIO_LED("dm355evm::ds20"), },
|
|
||||||
{ GPIO_LED("dm355evm::ds21"), },
|
|
||||||
};
|
|
||||||
#undef GPIO_LED
|
|
||||||
|
|
||||||
struct gpio_led_platform_data evm_led_data = {
|
|
||||||
.num_leds = ARRAY_SIZE(evm_leds),
|
|
||||||
.leds = evm_leds,
|
|
||||||
};
|
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(evm_leds); i++)
|
|
||||||
evm_leds[i].gpio = i + dm355evm_msp_gpio.base;
|
|
||||||
|
|
||||||
/* NOTE: these are the only fully programmable LEDs
|
/* NOTE: these are the only fully programmable LEDs
|
||||||
* on the board, since GPIO-61/ds22 (and many signals
|
* on the board, since GPIO-61/ds22 (and many signals
|
||||||
* going to DC7) must be used for AEMIF address lines
|
* going to DC7) must be used for AEMIF address lines
|
||||||
|
Reference in New Issue
Block a user