leds: lp5562: support the device tree feature
The LP55xx DT structure is applicable to the LP5562 device. The driver and documentation are updated. Compatible property of the DT : LP5521 and LP5223 were manufactured by National Semiconductor. LP5562 is a new device from Texas Instruments. Cc: Gabriel Fernandez <gabriel.fernandez@stericsson.com> Signed-off-by: Milo(Woogyom) Kim <milo.kim@ti.com> Acked-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Bryan Wu <cooloney@gmail.com>
This commit is contained in:
parent
2dac912809
commit
e015050cc5
|
@ -1,7 +1,7 @@
|
||||||
Binding for National Semiconductor LP55xx Led Drivers
|
Binding for TI/National Semiconductor LP55xx Led Drivers
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible: "national,lp5521" or "national,lp5523"
|
- compatible: "national,lp5521" or "national,lp5523" or "ti,lp5562"
|
||||||
- reg: I2C slave address
|
- reg: I2C slave address
|
||||||
- clock-mode: Input clock mode, (0: automode, 1: internal, 2: external)
|
- clock-mode: Input clock mode, (0: automode, 1: internal, 2: external)
|
||||||
|
|
||||||
|
@ -112,3 +112,36 @@ lp5523@32 {
|
||||||
max-cur = /bits/ 8 <0x20>;
|
max-cur = /bits/ 8 <0x20>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
example 3) LP5562
|
||||||
|
4 channels are defined.
|
||||||
|
|
||||||
|
lp5562@30 {
|
||||||
|
compatible = "ti,lp5562";
|
||||||
|
reg = <0x30>;
|
||||||
|
clock-mode = /bits/8 <2>;
|
||||||
|
|
||||||
|
chan0 {
|
||||||
|
chan-name = "R";
|
||||||
|
led-cur = /bits/ 8 <0x20>;
|
||||||
|
max-cur = /bits/ 8 <0x60>;
|
||||||
|
};
|
||||||
|
|
||||||
|
chan1 {
|
||||||
|
chan-name = "G";
|
||||||
|
led-cur = /bits/ 8 <0x20>;
|
||||||
|
max-cur = /bits/ 8 <0x60>;
|
||||||
|
};
|
||||||
|
|
||||||
|
chan2 {
|
||||||
|
chan-name = "B";
|
||||||
|
led-cur = /bits/ 8 <0x20>;
|
||||||
|
max-cur = /bits/ 8 <0x60>;
|
||||||
|
};
|
||||||
|
|
||||||
|
chan3 {
|
||||||
|
chan-name = "W";
|
||||||
|
led-cur = /bits/ 8 <0x20>;
|
||||||
|
max-cur = /bits/ 8 <0x60>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
|
@ -515,12 +515,20 @@ static int lp5562_probe(struct i2c_client *client,
|
||||||
int ret;
|
int ret;
|
||||||
struct lp55xx_chip *chip;
|
struct lp55xx_chip *chip;
|
||||||
struct lp55xx_led *led;
|
struct lp55xx_led *led;
|
||||||
struct lp55xx_platform_data *pdata = client->dev.platform_data;
|
struct lp55xx_platform_data *pdata;
|
||||||
|
struct device_node *np = client->dev.of_node;
|
||||||
|
|
||||||
if (!pdata) {
|
if (!client->dev.platform_data) {
|
||||||
dev_err(&client->dev, "no platform data\n");
|
if (np) {
|
||||||
return -EINVAL;
|
ret = lp55xx_of_populate_pdata(&client->dev, np);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
|
} else {
|
||||||
|
dev_err(&client->dev, "no platform data\n");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
pdata = client->dev.platform_data;
|
||||||
|
|
||||||
chip = devm_kzalloc(&client->dev, sizeof(*chip), GFP_KERNEL);
|
chip = devm_kzalloc(&client->dev, sizeof(*chip), GFP_KERNEL);
|
||||||
if (!chip)
|
if (!chip)
|
||||||
|
@ -579,6 +587,7 @@ static int lp5562_remove(struct i2c_client *client)
|
||||||
|
|
||||||
static const struct i2c_device_id lp5562_id[] = {
|
static const struct i2c_device_id lp5562_id[] = {
|
||||||
{ "lp5562", 0 },
|
{ "lp5562", 0 },
|
||||||
|
{ "ti,lp5562", 0 }, /* OF compatible */
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(i2c, lp5562_id);
|
MODULE_DEVICE_TABLE(i2c, lp5562_id);
|
||||||
|
|
Loading…
Reference in New Issue