leds: parse linux,default-trigger DT property in LED core
authorMarek Behún <marek.behun@nic.cz>
Sat, 19 Sep 2020 18:03:04 +0000 (20:03 +0200)
committerPavel Machek <pavel@ucw.cz>
Sat, 26 Sep 2020 19:56:43 +0000 (21:56 +0200)
Do the parsing of `linux,default-trigger` DT property to LED core.
Currently it is done in many different drivers and the code is repeated.

This patch removes the parsing from 23 drivers:
  an30259a, aw2013, bcm6328, bcm6358, cr0014114, el15203000, gpio,
  is31fl32xx, lm3532, lm36274, lm3692x, lm3697, lp50xx, lp8860, lt3593,
  max77650, mt6323, ns2, pm8058, pwm, syscon, tlc591xx and turris-omnia.

There is one driver in drivers/input which parses this property on it's
own. I shall send a separate patch there after this is applied.

There are still 8 drivers that parse this property on their own because
they do not pass the led_init_data structure to the registering
function. I will try to refactor those in the future.

Signed-off-by: Marek Behún <marek.behun@nic.cz>
Signed-off-by: Pavel Machek <pavel@ucw.cz>
24 files changed:
drivers/leds/led-class.c
drivers/leds/leds-an30259a.c
drivers/leds/leds-aw2013.c
drivers/leds/leds-bcm6328.c
drivers/leds/leds-bcm6358.c
drivers/leds/leds-cr0014114.c
drivers/leds/leds-el15203000.c
drivers/leds/leds-gpio.c
drivers/leds/leds-is31fl32xx.c
drivers/leds/leds-lm3532.c
drivers/leds/leds-lm36274.c
drivers/leds/leds-lm3692x.c
drivers/leds/leds-lm3697.c
drivers/leds/leds-lp50xx.c
drivers/leds/leds-lp8860.c
drivers/leds/leds-lt3593.c
drivers/leds/leds-max77650.c
drivers/leds/leds-mt6323.c
drivers/leds/leds-ns2.c
drivers/leds/leds-pm8058.c
drivers/leds/leds-pwm.c
drivers/leds/leds-syscon.c
drivers/leds/leds-tlc591xx.c
drivers/leds/leds-turris-omnia.c

index cc3929f858b68c8928a3411147f39650dbf7fd53..131ca83f5fb380f05e0efd0042262a92f400623a 100644 (file)
@@ -354,6 +354,11 @@ int led_classdev_register_ext(struct device *parent,
                ret = led_compose_name(parent, init_data, composed_name);
                if (ret < 0)
                        return ret;
+
+               if (init_data->fwnode)
+                       fwnode_property_read_string(init_data->fwnode,
+                               "linux,default-trigger",
+                               &led_cdev->default_trigger);
        } else {
                proposed_name = led_cdev->name;
        }
index 9749f1cc3e15fe38904d41ca3659a07dc63a2fb0..a0df1fb28774d7e772652fe462feb499d672e2f1 100644 (file)
@@ -238,9 +238,6 @@ static int an30259a_dt_init(struct i2c_client *client,
                                led->default_state = STATE_OFF;
                }
 
-               of_property_read_string(child, "linux,default-trigger",
-                                       &led->cdev.default_trigger);
-
                i++;
        }
 
index 927c5ba32592fc7fd1e0e6109d5b8a4279ec0bc1..80d937454aeef3fc953dd3dd344f28a5b3a6a95e 100644 (file)
@@ -297,9 +297,6 @@ static int aw2013_probe_dt(struct aw2013 *chip)
                                 "DT property led-max-microamp is missing\n");
                }
 
-               of_property_read_string(child, "linux,default-trigger",
-                                       &led->cdev.default_trigger);
-
                led->cdev.brightness_set_blocking = aw2013_brightness_set;
                led->cdev.blink_set = aw2013_blink_set;
 
index d79aeb956c9b631b3530e500ee5633bd45fb158b..226d17d253ed321292ca56371148f493781ea353 100644 (file)
@@ -346,10 +346,6 @@ static int bcm6328_led(struct device *dev, struct device_node *nc, u32 reg,
        if (of_property_read_bool(nc, "active-low"))
                led->active_low = true;
 
-       led->cdev.default_trigger = of_get_property(nc,
-                                                   "linux,default-trigger",
-                                                   NULL);
-
        if (!of_property_read_string(nc, "default-state", &state)) {
                if (!strcmp(state, "on")) {
                        led->cdev.brightness = LED_FULL;
index 0fd495103a4d99dd52f59d1402b573a5a07f3485..9d2e487fa08a307ab72adb9a812a4b068e37239f 100644 (file)
@@ -110,10 +110,6 @@ static int bcm6358_led(struct device *dev, struct device_node *nc, u32 reg,
        if (of_property_read_bool(nc, "active-low"))
                led->active_low = true;
 
-       led->cdev.default_trigger = of_get_property(nc,
-                                                   "linux,default-trigger",
-                                                   NULL);
-
        if (!of_property_read_string(nc, "default-state", &state)) {
                if (!strcmp(state, "on")) {
                        led->cdev.brightness = LED_FULL;
index 2da448ae718e9b075543e108dcb683a250b61a86..d03cfd3c0bfbecd83ee65e1729cf7143ac61f800 100644 (file)
@@ -188,9 +188,6 @@ static int cr0014114_probe_dt(struct cr0014114 *priv)
        device_for_each_child_node(priv->dev, child) {
                led = &priv->leds[i];
 
-               fwnode_property_read_string(child, "linux,default-trigger",
-                                           &led->ldev.default_trigger);
-
                led->priv                         = priv;
                led->ldev.max_brightness          = CR_MAX_BRIGHTNESS;
                led->ldev.brightness_set_blocking = cr0014114_set_sync;
index 298b13e4807a82dfc5b4a3ee227be93050eee09a..6ca47f2a2004151c5bdacf8881a3fb347288f6da 100644 (file)
@@ -263,9 +263,6 @@ static int el15203000_probe_dt(struct el15203000 *priv)
                        return -EINVAL;
                }
 
-               fwnode_property_read_string(child, "linux,default-trigger",
-                                           &led->ldev.default_trigger);
-
                led->priv                         = priv;
                led->ldev.max_brightness          = LED_ON;
                led->ldev.brightness_set_blocking = el15203000_set_blocking;
index cf84096d88cec55ff7ae5dca174be1923c91d9ad..93f5b1b60fdec835eec36fd1d7364450e1b0d42b 100644 (file)
@@ -160,9 +160,6 @@ static struct gpio_leds_priv *gpio_leds_create(struct platform_device *pdev)
 
                led_dat->gpiod = led.gpiod;
 
-               fwnode_property_read_string(child, "linux,default-trigger",
-                                           &led.default_trigger);
-
                if (!fwnode_property_read_string(child, "default-state",
                                                 &state)) {
                        if (!strcmp(state, "keep"))
index ea589d1a895406c6c159127979751ec3e53b2273..2180255ad339336b828b726c46c25815b59d0125 100644 (file)
@@ -341,9 +341,6 @@ static int is31fl32xx_parse_child_dt(const struct device *dev,
        }
        led_data->channel = reg;
 
-       of_property_read_string(child, "linux,default-trigger",
-                               &cdev->default_trigger);
-
        cdev->brightness_set_blocking = is31fl32xx_brightness_set;
 
        return 0;
index 9b6973217cc0bb861ed903dbef67e981b7b6747c..10ded9192fb134a8cfe48ef7a87b4151e874d1d0 100644 (file)
@@ -640,9 +640,6 @@ static int lm3532_parse_node(struct lm3532_data *priv)
                        goto child_out;
                }
 
-               fwnode_property_read_string(child, "linux,default-trigger",
-                                           &led->led_dev.default_trigger);
-
                led->priv = priv;
                led->led_dev.brightness_set_blocking = lm3532_brightness_set;
 
index 10a63b7f2ecced0f04df26ac7384434097cb5bd2..582c6a821dc85f861021f41fb2d0d162c8a97a6e 100644 (file)
@@ -97,9 +97,6 @@ static int lm36274_parse_dt(struct lm36274 *chip,
                goto err;
        }
 
-       fwnode_property_read_string(child, "linux,default-trigger",
-                                   &chip->led_dev.default_trigger);
-
        return 0;
 err:
        fwnode_handle_put(child);
index 1d7ea1b76a125d1101f9ecba980ba725a215f276..e945de45388ca75dcbcf6c9565a7c45bd953c57b 100644 (file)
@@ -433,9 +433,6 @@ static int lm3692x_probe_dt(struct lm3692x_led *led)
                return -ENODEV;
        }
 
-       fwnode_property_read_string(child, "linux,default-trigger",
-                                   &led->led_dev.default_trigger);
-
        ret = fwnode_property_read_u32(child, "reg", &led->led_enable);
        if (ret) {
                dev_err(&led->client->dev, "reg DT property missing\n");
index a7779ce931ab30e67d50a857bfecdc987a20593a..64c0794801e6d5c5aea1fa2cfff82e47861bf884 100644 (file)
@@ -268,9 +268,6 @@ static int lm3697_probe_dt(struct lm3697 *priv)
                if (ret)
                        dev_warn(dev, "runtime-ramp properties missing\n");
 
-               fwnode_property_read_string(child, "linux,default-trigger",
-                                           &led->led_dev.default_trigger);
-
                init_data.fwnode = child;
                init_data.devicename = priv->client->name;
                /* for backwards compatibility if `label` is not present */
index 47144a37cb945261b19efc6939881e4803b531e7..5fb4f24aeb2e86d98a36a07782596262af7dc0ec 100644 (file)
@@ -508,9 +508,6 @@ static int lp50xx_probe_dt(struct lp50xx *priv)
                led_cdev = &led->mc_cdev.led_cdev;
                led_cdev->brightness_set_blocking = lp50xx_brightness_set;
 
-               fwnode_property_read_string(child, "linux,default-trigger",
-                                           &led_cdev->default_trigger);
-
                ret = devm_led_classdev_multicolor_register_ext(&priv->client->dev,
                                                       &led->mc_cdev,
                                                       &init_data);
index e9b16f3358d6fa6f7fa1fab1316de4461bf97b0a..f0533a337bc15c2676a29b0e8386f96473663e88 100644 (file)
@@ -392,10 +392,6 @@ static int lp8860_probe(struct i2c_client *client,
        if (!child_node)
                return -EINVAL;
 
-       led->led_dev.default_trigger = of_get_property(child_node,
-                                           "linux,default-trigger",
-                                           NULL);
-
        led->enable_gpio = devm_gpiod_get_optional(&client->dev,
                                                   "enable", GPIOD_OUT_LOW);
        if (IS_ERR(led->enable_gpio)) {
index 061f02e3995aeae22c552b7af59d16cea44f50e4..68e06434ac087a585ce2b9e2f9ecc6059b308bb8 100644 (file)
@@ -86,9 +86,6 @@ static int lt3593_led_probe(struct platform_device *pdev)
 
        child = device_get_next_child_node(dev, NULL);
 
-       fwnode_property_read_string(child, "linux,default-trigger",
-                                   &led_data->cdev.default_trigger);
-
        if (!fwnode_property_read_string(child, "default-state", &tmp)) {
                if (!strcmp(tmp, "on"))
                        state = LEDS_GPIO_DEFSTATE_ON;
index acc1174197c354e4076ac16618a07459597bd959..1eeac56b00146d8a1bc1518b69520f2a151fe4bf 100644 (file)
@@ -100,9 +100,6 @@ static int max77650_led_probe(struct platform_device *pdev)
                led->cdev.brightness_set_blocking = max77650_led_brightness_set;
                led->cdev.max_brightness = MAX77650_LED_MAX_BRIGHTNESS;
 
-               fwnode_property_read_string(child, "linux,default-trigger",
-                                           &led->cdev.default_trigger);
-
                init_data.fwnode = child;
                init_data.devicename = "max77650";
                /* for backwards compatibility if `label` is not present */
index a1fceeb41d7e63cf9cea44835042d08017435862..f59e0e8bda8bb2c9541b3b2bd6d4ffa2f6e8d5df 100644 (file)
@@ -342,10 +342,6 @@ static int mt6323_led_set_dt_default(struct led_classdev *cdev,
        const char *state;
        int ret = 0;
 
-       led->cdev.default_trigger = of_get_property(np,
-                                                   "linux,default-trigger",
-                                                   NULL);
-
        state = of_get_property(np, "default-state", NULL);
        if (state) {
                if (!strcmp(state, "keep")) {
index 030f426af3d752b831a035e5734e9281771927be..e1ec5cbed07e888803d11824169846a225bbdd08 100644 (file)
@@ -185,9 +185,6 @@ static int ns2_led_register(struct device *dev, struct device_node *np,
        if (IS_ERR(led->slow))
                return PTR_ERR(led->slow);
 
-       of_property_read_string(np, "linux,default-trigger",
-                               &led->cdev.default_trigger);
-
        ret = of_property_count_u32_elems(np, "modes-map");
        if (ret < 0 || ret % 3) {
                dev_err(dev, "Missing or malformed modes-map for %pOF\n", np);
index 5247b04abb7ef1a59aeb6ab362314e8db66b0ffc..fb2ab72c0c40c78b812e3b5658862bfb3e227e55 100644 (file)
@@ -117,8 +117,6 @@ static int pm8058_led_probe(struct platform_device *pdev)
                return -EINVAL;
        }
 
-       led->cdev.default_trigger =
-               of_get_property(np, "linux,default-trigger", NULL);
        led->cdev.brightness_set = pm8058_led_set;
        led->cdev.brightness_get = pm8058_led_get;
        if (led->ledtype == PM8058_LED_TYPE_COMMON)
index 4a014d2964123b897f08bf961dcb96f213da7819..2a16ae0bf022b2316e06f59ac3c5e72849929361 100644 (file)
@@ -20,7 +20,6 @@
 
 struct led_pwm {
        const char      *name;
-       const char      *default_trigger;
        u8              active_low;
        unsigned int    max_brightness;
 };
@@ -70,7 +69,6 @@ static int led_pwm_add(struct device *dev, struct led_pwm_priv *priv,
 
        led_data->active_low = led->active_low;
        led_data->cdev.name = led->name;
-       led_data->cdev.default_trigger = led->default_trigger;
        led_data->cdev.brightness = LED_OFF;
        led_data->cdev.max_brightness = led->max_brightness;
        led_data->cdev.flags = LED_CORE_SUSPENDRESUME;
@@ -124,9 +122,6 @@ static int led_pwm_create_fwnode(struct device *dev, struct led_pwm_priv *priv)
                        return -EINVAL;
                }
 
-               fwnode_property_read_string(fwnode, "linux,default-trigger",
-                                           &led.default_trigger);
-
                led.active_low = fwnode_property_read_bool(fwnode,
                                                           "active-low");
                fwnode_property_read_u32(fwnode, "max-brightness",
index f54935fa650a795aa8f606121db3d3e85c976f1d..7eddb8ecb44ec4d5c64361e42471c6d6ce830405 100644 (file)
@@ -85,8 +85,6 @@ static int syscon_led_probe(struct platform_device *pdev)
                return -EINVAL;
        if (of_property_read_u32(np, "mask", &sled->mask))
                return -EINVAL;
-       sled->cdev.default_trigger =
-               of_get_property(np, "linux,default-trigger", NULL);
 
        state = of_get_property(np, "default-state", NULL);
        if (state) {
index 5e84a0c7aacbd3c5064f9888815ca5d43dbed400..f24271337bd8489403e4af26f5a4cda2514f3914 100644 (file)
@@ -199,9 +199,6 @@ tlc591xx_probe(struct i2c_client *client,
                led = &priv->leds[reg];
 
                led->active = true;
-               led->ldev.default_trigger =
-                       of_get_property(child, "linux,default-trigger", NULL);
-
                led->priv = priv;
                led->led_no = reg;
                led->ldev.brightness_set_blocking = tlc591xx_brightness_set;
index 117976cf75c8aedbb68af85d1bb4a6d17a7afbcc..8c5bdc3847ee73a7bbac0ce39b3b3bcd58058745 100644 (file)
@@ -121,8 +121,6 @@ static int omnia_led_register(struct i2c_client *client, struct omnia_led *led,
        cdev->max_brightness = 255;
        cdev->brightness_set_blocking = omnia_led_brightness_set_blocking;
 
-       of_property_read_string(np, "linux,default-trigger", &cdev->default_trigger);
-
        /* put the LED into software mode */
        ret = i2c_smbus_write_byte_data(client, CMD_LED_MODE,
                                        CMD_LED_MODE_LED(led->reg) |