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 > > -- > Cheers, > Stephen Rothwell sfr@xxxxxxxxxxxxxxxx > > 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), > }, > }; >
Attachment:
signature.asc
Description: Digital signature