linux-next: manual merge of the arm-soc tree with the driver-core tree
From: Simon Guinot <hidden>
Date: 2012-11-29 23:11:18
Also in:
linux-next, lkml
On Thu, Nov 29, 2012 at 04:03:09PM +1100, Stephen Rothwell wrote:
Hi all,
Today's linux-next merge of the arm-soc tree got a conflict in
drivers/leds/leds-ns2.c between commit 98ea1ea20cb7 ("leds: remove use of
__devinit") from the driver-core tree and commit 72052fcc1026 ("leds:
leds-ns2: add device tree binding") from the arm-soc tree.
I fixed it up (see below) and can carry the fix as necessary (no action
is required).Hi Stephen, The merge is fine and the driver works as expected. Thanks. Simon
quoted hunk ↗ jump to hunk
-- Cheers, Stephen Rothwell sfr at canb.auug.org.au diff --cc drivers/leds/leds-ns2.c index bc6a0db,d64cc22..0000000--- a/drivers/leds/leds-ns2.c +++ b/drivers/leds/leds-ns2.c@@@ -247,9 -260,67 +248,65 @@@ static void delete_ns2_led(struct ns2_l { device_remove_file(led_dat->cdev.dev, &dev_attr_sata); led_classdev_unregister(&led_dat->cdev); - gpio_free(led_dat->cmd); - gpio_free(led_dat->slow); } + #ifdef CONFIG_OF_GPIO + /* + * Translate OpenFirmware node properties into platform_data. + */ -static int __devinit ++static int + ns2_leds_get_of_pdata(struct device *dev, struct ns2_led_platform_data *pdata) + { + struct device_node *np = dev->of_node; + struct device_node *child; + struct ns2_led *leds; + int num_leds = 0; + int i = 0; + + num_leds = of_get_child_count(np); + if (!num_leds) + return -ENODEV; + + leds = devm_kzalloc(dev, num_leds * sizeof(struct ns2_led), + GFP_KERNEL); + if (!leds) + return -ENOMEM; + + for_each_child_of_node(np, child) { + const char *string; + int ret; + + ret = of_get_named_gpio(child, "cmd-gpio", 0); + if (ret < 0) + return ret; + leds[i].cmd = ret; + ret = of_get_named_gpio(child, "slow-gpio", 0); + if (ret < 0) + return ret; + leds[i].slow = ret; + ret = of_property_read_string(child, "label", &string); + leds[i].name = (ret == 0) ? string : child->name; + ret = of_property_read_string(child, "linux,default-trigger", + &string); + if (ret == 0) + leds[i].default_trigger = string; + + i++; + } + + pdata->leds = leds; + pdata->num_leds = num_leds; + + return 0; + } + + static const struct of_device_id of_ns2_leds_match[] = { + { .compatible = "lacie,ns2-leds", }, + {}, + }; + #endif /* CONFIG_OF_GPIO */ + -static int __devinit ns2_led_probe(struct platform_device *pdev) +static int ns2_led_probe(struct platform_device *pdev) { struct ns2_led_platform_data *pdata = pdev->dev.platform_data; struct ns2_led_data *leds_data; @@@ -296,10 -381,11 +367,11 @@@ static int ns2_led_remove(struct platfo static struct platform_driver ns2_led_driver = { .probe = ns2_led_probe, - .remove = __devexit_p(ns2_led_remove), + .remove = ns2_led_remove, .driver = { - .name = "leds-ns2", - .owner = THIS_MODULE, + .name = "leds-ns2", + .owner = THIS_MODULE, + .of_match_table = of_match_ptr(of_ns2_leds_match), }, };
-------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 198 bytes Desc: Digital signature URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20121129/70b51c92/attachment.sig>