Skip to content

Commit

Permalink
leds: ns2: support OF probing only, forget platdata
Browse files Browse the repository at this point in the history
Move forward from platform data to device tree only.

Since commit c789649 ("leds: ns2: Absorb platform data") the
platform data structure is absorbed into the driver, because nothing
else in the source tree uses it. Since nobody complained and all usage
of this driver is via device tree, change the code to work with device
tree only. As Linus Walleij wrote, the device tree should be the
preferred way forward anyway.

Signed-off-by: Marek Behún <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Vincent Donnefort <[email protected]>
Cc: Thomas Petazzoni <[email protected]>
Cc: Linus Walleij <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
  • Loading branch information
elkablo authored and pavelmachek committed Sep 26, 2020
1 parent 19d4deb commit 01d0b14
Showing 1 changed file with 15 additions and 25 deletions.
40 changes: 15 additions & 25 deletions drivers/leds/leds-ns2.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ struct ns2_led {
struct ns2_led_modval *modval;
};

struct ns2_led_platform_data {
struct ns2_led_of {
int num_leds;
struct ns2_led *leds;
};
Expand Down Expand Up @@ -230,12 +230,11 @@ create_ns2_led(struct platform_device *pdev, struct ns2_led_data *led_dat,
return devm_led_classdev_register(&pdev->dev, &led_dat->cdev);
}

#ifdef CONFIG_OF_GPIO
/*
* Translate OpenFirmware node properties into platform_data.
*/
static int
ns2_leds_get_of_pdata(struct device *dev, struct ns2_led_platform_data *pdata)
ns2_leds_parse_of(struct device *dev, struct ns2_led_of *ofdata)
{
struct device_node *np = dev_of_node(dev);
struct device_node *child;
Expand Down Expand Up @@ -317,8 +316,8 @@ ns2_leds_get_of_pdata(struct device *dev, struct ns2_led_platform_data *pdata)
led++;
}

pdata->leds = leds;
pdata->num_leds = num_leds;
ofdata->leds = leds;
ofdata->num_leds = num_leds;

return 0;

Expand All @@ -332,40 +331,31 @@ static const struct of_device_id of_ns2_leds_match[] = {
{},
};
MODULE_DEVICE_TABLE(of, of_ns2_leds_match);
#endif /* CONFIG_OF_GPIO */

static int ns2_led_probe(struct platform_device *pdev)
{
struct ns2_led_platform_data *pdata = dev_get_platdata(&pdev->dev);
struct ns2_led_of *ofdata;
struct ns2_led_data *leds;
int i;
int ret;

#ifdef CONFIG_OF_GPIO
if (!pdata) {
pdata = devm_kzalloc(&pdev->dev,
sizeof(struct ns2_led_platform_data),
GFP_KERNEL);
if (!pdata)
return -ENOMEM;
ofdata = devm_kzalloc(&pdev->dev, sizeof(struct ns2_led_of),
GFP_KERNEL);
if (!ofdata)
return -ENOMEM;

ret = ns2_leds_get_of_pdata(&pdev->dev, pdata);
if (ret)
return ret;
}
#else
if (!pdata)
return -EINVAL;
#endif /* CONFIG_OF_GPIO */
ret = ns2_leds_parse_of(&pdev->dev, ofdata);
if (ret)
return ret;

leds = devm_kzalloc(&pdev->dev, array_size(sizeof(*leds),
pdata->num_leds),
ofdata->num_leds),
GFP_KERNEL);
if (!leds)
return -ENOMEM;

for (i = 0; i < pdata->num_leds; i++) {
ret = create_ns2_led(pdev, &leds[i], &pdata->leds[i]);
for (i = 0; i < ofdata->num_leds; i++) {
ret = create_ns2_led(pdev, &leds[i], &ofdata->leds[i]);
if (ret < 0)
return ret;
}
Expand Down

0 comments on commit 01d0b14

Please sign in to comment.