Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e015050c authored by Kim, Milo's avatar Kim, Milo Committed by Bryan Wu
Browse files

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: default avatarMilo(Woogyom) Kim <milo.kim@ti.com>
Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarBryan Wu <cooloney@gmail.com>
parent 2dac9128
Loading
Loading
Loading
Loading
+35 −2
Original line number Diff line number Diff line
Binding for National Semiconductor LP55xx Led Drivers
Binding for TI/National Semiconductor LP55xx Led Drivers

Required properties:
- compatible: "national,lp5521" or "national,lp5523"
- compatible: "national,lp5521" or "national,lp5523" or "ti,lp5562"
- reg: I2C slave address
- clock-mode: Input clock mode, (0: automode, 1: internal, 2: external)

@@ -112,3 +112,36 @@ lp5523@32 {
		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>;
	};
};
+14 −5
Original line number Diff line number Diff line
@@ -515,12 +515,20 @@ static int lp5562_probe(struct i2c_client *client,
	int ret;
	struct lp55xx_chip *chip;
	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) {
		if (np) {
			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);
	if (!chip)
@@ -579,6 +587,7 @@ static int lp5562_remove(struct i2c_client *client)

static const struct i2c_device_id lp5562_id[] = {
	{ "lp5562", 0 },
	{ "ti,lp5562", 0 }, /* OF compatible */
	{ }
};
MODULE_DEVICE_TABLE(i2c, lp5562_id);