* [PATCH] pps-gpio: add device-tree binding and support @ 2013-05-31 18:46 Jan Luebbe [not found] ` <1370026015-9584-1-git-send-email-jlu-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> 2013-06-03 12:01 ` [PATCH] " Rodolfo Giometti 0 siblings, 2 replies; 7+ messages in thread From: Jan Luebbe @ 2013-05-31 18:46 UTC (permalink / raw) To: Grant Likely, Rob Herring, Rodolfo Giometti, Andrew Morton Cc: devicetree-discuss, linux-doc, linux-kernel, Jan Luebbe Signed-off-by: Jan Luebbe <jlu@pengutronix.de> --- This patch depends on my two recent pps-gpio patches, which are currently in Andrew Morton's mmotm. So it should probably also go via Andrew if it is acceptable. Documentation/devicetree/bindings/pps/pps-gpio.txt | 20 +++++++ drivers/pps/clients/pps-gpio.c | 55 +++++++++++++++++++- 2 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 Documentation/devicetree/bindings/pps/pps-gpio.txt diff --git a/Documentation/devicetree/bindings/pps/pps-gpio.txt b/Documentation/devicetree/bindings/pps/pps-gpio.txt new file mode 100644 index 0000000..40bf9c3 --- /dev/null +++ b/Documentation/devicetree/bindings/pps/pps-gpio.txt @@ -0,0 +1,20 @@ +Device-Tree Bindings for a PPS Signal on GPIO + +These properties describe a PPS (pulse-per-second) signal connected to +a GPIO pin. + +Required properties: +- compatible: should be "pps-gpio" +- gpios: one PPS GPIO in the format described by ../gpio/gpio.txt + +Optional properties: +- assert-falling-edge: when present, assert is indicated by a falling edge + (instead of by a rising edge) + +Example: + pps { + compatible = "pps-gpio"; + gpios = <&gpio2 6 0>; + + assert-falling-edge; + }; diff --git a/drivers/pps/clients/pps-gpio.c b/drivers/pps/clients/pps-gpio.c index 6768f95..b5806da 100644 --- a/drivers/pps/clients/pps-gpio.c +++ b/drivers/pps/clients/pps-gpio.c @@ -33,6 +33,8 @@ #include <linux/pps-gpio.h> #include <linux/gpio.h> #include <linux/list.h> +#include <linux/of_device.h> +#include <linux/of_gpio.h> /* Info for each registered platform device */ struct pps_gpio_device_data { @@ -103,14 +105,62 @@ get_irqf_trigger_flags(const struct pps_gpio_platform_data *pdata) return flags; } +#ifdef CONFIG_OF +static const struct of_device_id pps_gpio_dt_ids[] = { + { .compatible = "pps-gpio", }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, pps_gpio_dt_ids); + +static struct pps_gpio_platform_data * +of_get_pps_gpio_pdata(struct platform_device *pdev) +{ + struct device_node *np = pdev->dev.of_node; + struct pps_gpio_platform_data *pdata; + int ret; + + pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL); + if (!pdata) + return NULL; + + ret = of_get_gpio(np, 0); + if (ret < 0) { + pr_err("failed to get GPIO from device tree\n"); + return NULL; + } + + pdata->gpio_pin = ret; + pdata->gpio_label = PPS_GPIO_NAME; + + if (of_get_property(np, "assert-falling-edge", NULL)) + pdata->assert_falling_edge = true; + + return pdata; +} +#else +static struct pps_gpio_platform_data * +of_get_pps_gpio_pdata(struct platform_device *pdev) +{ + return NULL; +} +#endif + static int pps_gpio_probe(struct platform_device *pdev) { struct pps_gpio_device_data *data; int irq; int ret; int pps_default_params; - const struct pps_gpio_platform_data *pdata = pdev->dev.platform_data; + struct pps_gpio_platform_data *pdata; + const struct of_device_id *match; + + match = of_match_device(pps_gpio_dt_ids, &pdev->dev); + if (match) + pdev->dev.platform_data = of_get_pps_gpio_pdata(pdev); + pdata = pdev->dev.platform_data; + if (!pdata) + return -ENODEV; /* GPIO setup */ ret = pps_gpio_setup(pdev); @@ -184,7 +234,8 @@ static struct platform_driver pps_gpio_driver = { .remove = pps_gpio_remove, .driver = { .name = PPS_GPIO_NAME, - .owner = THIS_MODULE + .owner = THIS_MODULE, + .of_match_table = of_match_ptr(pps_gpio_dt_ids), }, }; -- 1.7.10.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
[parent not found: <1370026015-9584-1-git-send-email-jlu-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>]
* Re: [PATCH] pps-gpio: add device-tree binding and support [not found] ` <1370026015-9584-1-git-send-email-jlu-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> @ 2013-05-31 19:15 ` Arnd Bergmann 2013-06-01 10:44 ` [PATCH v2] " Jan Luebbe 0 siblings, 1 reply; 7+ messages in thread From: Arnd Bergmann @ 2013-05-31 19:15 UTC (permalink / raw) To: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ Cc: linux-doc-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, Rob Herring, Grant Likely, Andrew Morton On Friday 31 May 2013 20:46:55 Jan Luebbe wrote: > > +#ifdef CONFIG_OF > +static const struct of_device_id pps_gpio_dt_ids[] = { > + { .compatible = "pps-gpio", }, > + { /* sentinel */ } > +}; > +MODULE_DEVICE_TABLE(of, pps_gpio_dt_ids); > + > +static struct pps_gpio_platform_data * > +of_get_pps_gpio_pdata(struct platform_device *pdev) > +{ > + struct device_node *np = pdev->dev.of_node; > + struct pps_gpio_platform_data *pdata; > + int ret; > + > + pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL); > + if (!pdata) > + return NULL; > + > + ret = of_get_gpio(np, 0); > + if (ret < 0) { > + pr_err("failed to get GPIO from device tree\n"); > + return NULL; > + } > + > + pdata->gpio_pin = ret; > + pdata->gpio_label = PPS_GPIO_NAME; > + > + if (of_get_property(np, "assert-falling-edge", NULL)) > + pdata->assert_falling_edge = true; > + > + return pdata; > +} > +#else > +static struct pps_gpio_platform_data * > +of_get_pps_gpio_pdata(struct platform_device *pdev) > +{ > + return NULL; > +} > +#endif I don't think it's worth the effort of doing a dynamic allocation if you just need to store two integers and a flag. I would just put them all into pps_gpio_device_data, which also gets rid of a couple of indirect pointer accesses and the #ifdef above. Arnd ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2] pps-gpio: add device-tree binding and support 2013-05-31 19:15 ` Arnd Bergmann @ 2013-06-01 10:44 ` Jan Luebbe [not found] ` <1370083449-11986-1-git-send-email-jlu-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> 2013-06-03 22:56 ` Andrew Morton 0 siblings, 2 replies; 7+ messages in thread From: Jan Luebbe @ 2013-06-01 10:44 UTC (permalink / raw) To: Arnd Bergmann, Grant Likely, Rob Herring, Rodolfo Giometti, Andrew Morton Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-doc-u79uwXL29TY76Z2rM5mHXA Instead of allocating a struct pps_gpio_platform_data in the DT case, store the necessary information in struct pps_gpio_device_data itself. This avoids an additional allocation and the ifdef. It also gets rid of some indirection. Also use dev_err instead of pr_err in the changed code. Signed-off-by: Jan Luebbe <jlu-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> --- This patch depends on my two recent pps-gpio patches, which are currently in Andrew Morton's mmotm. So it should probably also go via Andrew if it is acceptable. Changes since v1: - Do not allocate a pdata struct, store info in pps_gpio_device_data. Also fold the two calls from pps_gpio_setup into the probe function. (suggested by Arnd Bergmann) Documentation/devicetree/bindings/pps/pps-gpio.txt | 20 +++ drivers/pps/clients/pps-gpio.c | 128 +++++++++++--------- 2 files changed, 93 insertions(+), 55 deletions(-) create mode 100644 Documentation/devicetree/bindings/pps/pps-gpio.txt diff --git a/Documentation/devicetree/bindings/pps/pps-gpio.txt b/Documentation/devicetree/bindings/pps/pps-gpio.txt new file mode 100644 index 0000000..40bf9c3 --- /dev/null +++ b/Documentation/devicetree/bindings/pps/pps-gpio.txt @@ -0,0 +1,20 @@ +Device-Tree Bindings for a PPS Signal on GPIO + +These properties describe a PPS (pulse-per-second) signal connected to +a GPIO pin. + +Required properties: +- compatible: should be "pps-gpio" +- gpios: one PPS GPIO in the format described by ../gpio/gpio.txt + +Optional properties: +- assert-falling-edge: when present, assert is indicated by a falling edge + (instead of by a rising edge) + +Example: + pps { + compatible = "pps-gpio"; + gpios = <&gpio2 6 0>; + + assert-falling-edge; + }; diff --git a/drivers/pps/clients/pps-gpio.c b/drivers/pps/clients/pps-gpio.c index 6768f95..eae0eda 100644 --- a/drivers/pps/clients/pps-gpio.c +++ b/drivers/pps/clients/pps-gpio.c @@ -33,13 +33,17 @@ #include <linux/pps-gpio.h> #include <linux/gpio.h> #include <linux/list.h> +#include <linux/of_device.h> +#include <linux/of_gpio.h> /* Info for each registered platform device */ struct pps_gpio_device_data { int irq; /* IRQ used as PPS source */ struct pps_device *pps; /* PPS source device */ struct pps_source_info info; /* PPS source information */ - const struct pps_gpio_platform_data *pdata; + bool assert_falling_edge; + bool capture_clear; + unsigned int gpio_pin; }; /* @@ -57,45 +61,25 @@ static irqreturn_t pps_gpio_irq_handler(int irq, void *data) info = data; - rising_edge = gpio_get_value(info->pdata->gpio_pin); - if ((rising_edge && !info->pdata->assert_falling_edge) || - (!rising_edge && info->pdata->assert_falling_edge)) + rising_edge = gpio_get_value(info->gpio_pin); + if ((rising_edge && !info->assert_falling_edge) || + (!rising_edge && info->assert_falling_edge)) pps_event(info->pps, &ts, PPS_CAPTUREASSERT, NULL); - else if (info->pdata->capture_clear && - ((rising_edge && info->pdata->assert_falling_edge) || - (!rising_edge && !info->pdata->assert_falling_edge))) + else if (info->capture_clear && + ((rising_edge && info->assert_falling_edge) || + (!rising_edge && !info->assert_falling_edge))) pps_event(info->pps, &ts, PPS_CAPTURECLEAR, NULL); return IRQ_HANDLED; } -static int pps_gpio_setup(struct platform_device *pdev) -{ - int ret; - const struct pps_gpio_platform_data *pdata = pdev->dev.platform_data; - - ret = devm_gpio_request(&pdev->dev, pdata->gpio_pin, pdata->gpio_label); - if (ret) { - pr_warning("failed to request GPIO %u\n", pdata->gpio_pin); - return -EINVAL; - } - - ret = gpio_direction_input(pdata->gpio_pin); - if (ret) { - pr_warning("failed to set pin direction\n"); - return -EINVAL; - } - - return 0; -} - static unsigned long -get_irqf_trigger_flags(const struct pps_gpio_platform_data *pdata) +get_irqf_trigger_flags(const struct pps_gpio_device_data *data) { - unsigned long flags = pdata->assert_falling_edge ? + unsigned long flags = data->assert_falling_edge ? IRQF_TRIGGER_FALLING : IRQF_TRIGGER_RISING; - if (pdata->capture_clear) { + if (data->capture_clear) { flags |= ((flags & IRQF_TRIGGER_RISING) ? IRQF_TRIGGER_FALLING : IRQF_TRIGGER_RISING); } @@ -106,35 +90,63 @@ get_irqf_trigger_flags(const struct pps_gpio_platform_data *pdata) static int pps_gpio_probe(struct platform_device *pdev) { struct pps_gpio_device_data *data; - int irq; + const char *gpio_label; int ret; int pps_default_params; const struct pps_gpio_platform_data *pdata = pdev->dev.platform_data; + struct device_node *np = pdev->dev.of_node; + /* allocate space for device info */ + data = devm_kzalloc(&pdev->dev, sizeof(struct pps_gpio_device_data), + GFP_KERNEL); + if (!data) + return -ENOMEM; + + if (pdata) { + data->gpio_pin = pdata->gpio_pin; + gpio_label = pdata->gpio_label; + + data->assert_falling_edge = pdata->assert_falling_edge; + data->capture_clear = pdata->capture_clear; + } else { + ret = of_get_gpio(np, 0); + if (ret < 0) { + dev_err(&pdev->dev, "failed to get GPIO from device tree\n"); + return ret; + } + data->gpio_pin = ret; + gpio_label = PPS_GPIO_NAME; + + if (of_get_property(np, "assert-falling-edge", NULL)) + data->assert_falling_edge = true; + } /* GPIO setup */ - ret = pps_gpio_setup(pdev); - if (ret) - return -EINVAL; + ret = devm_gpio_request(&pdev->dev, data->gpio_pin, gpio_label); + if (ret) { + dev_err(&pdev->dev, "failed to request GPIO %u\n", + data->gpio_pin); + return ret; + } - /* IRQ setup */ - irq = gpio_to_irq(pdata->gpio_pin); - if (irq < 0) { - pr_err("failed to map GPIO to IRQ: %d\n", irq); + ret = gpio_direction_input(data->gpio_pin); + if (ret) { + dev_err(&pdev->dev, "failed to set pin direction\n"); return -EINVAL; } - /* allocate space for device info */ - data = devm_kzalloc(&pdev->dev, sizeof(struct pps_gpio_device_data), - GFP_KERNEL); - if (data == NULL) { - return -ENOMEM; + /* IRQ setup */ + ret = gpio_to_irq(data->gpio_pin); + if (ret < 0) { + dev_err(&pdev->dev, "failed to map GPIO to IRQ: %d\n", ret); + return -EINVAL; } + data->irq = ret; /* initialize PPS specific parts of the bookkeeping data structure. */ data->info.mode = PPS_CAPTUREASSERT | PPS_OFFSETASSERT | PPS_ECHOASSERT | PPS_CANWAIT | PPS_TSFMT_TSPEC; - if (pdata->capture_clear) + if (data->capture_clear) data->info.mode |= PPS_CAPTURECLEAR | PPS_OFFSETCLEAR | PPS_ECHOCLEAR; data->info.owner = THIS_MODULE; @@ -143,28 +155,27 @@ static int pps_gpio_probe(struct platform_device *pdev) /* register PPS source */ pps_default_params = PPS_CAPTUREASSERT | PPS_OFFSETASSERT; - if (pdata->capture_clear) + if (data->capture_clear) pps_default_params |= PPS_CAPTURECLEAR | PPS_OFFSETCLEAR; data->pps = pps_register_source(&data->info, pps_default_params); if (data->pps == NULL) { - pr_err("failed to register IRQ %d as PPS source\n", irq); + dev_err(&pdev->dev, "failed to register IRQ %d as PPS source\n", + data->irq); return -EINVAL; } - data->irq = irq; - data->pdata = pdata; - /* register IRQ interrupt handler */ - ret = devm_request_irq(&pdev->dev, irq, pps_gpio_irq_handler, - get_irqf_trigger_flags(pdata), data->info.name, data); + ret = devm_request_irq(&pdev->dev, data->irq, pps_gpio_irq_handler, + get_irqf_trigger_flags(data), data->info.name, data); if (ret) { pps_unregister_source(data->pps); - pr_err("failed to acquire IRQ %d\n", irq); + dev_err(&pdev->dev, "failed to acquire IRQ %d\n", data->irq); return -EINVAL; } platform_set_drvdata(pdev, data); - dev_info(data->pps->dev, "Registered IRQ %d as PPS source\n", irq); + dev_info(data->pps->dev, "Registered IRQ %d as PPS source\n", + data->irq); return 0; } @@ -175,16 +186,23 @@ static int pps_gpio_remove(struct platform_device *pdev) platform_set_drvdata(pdev, NULL); pps_unregister_source(data->pps); - pr_info("removed IRQ %d as PPS source\n", data->irq); + dev_info(&pdev->dev, "removed IRQ %d as PPS source\n", data->irq); return 0; } +static const struct of_device_id pps_gpio_dt_ids[] = { + { .compatible = "pps-gpio", }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, pps_gpio_dt_ids); + static struct platform_driver pps_gpio_driver = { .probe = pps_gpio_probe, .remove = pps_gpio_remove, .driver = { .name = PPS_GPIO_NAME, - .owner = THIS_MODULE + .owner = THIS_MODULE, + .of_match_table = of_match_ptr(pps_gpio_dt_ids), }, }; -- 1.7.10.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
[parent not found: <1370083449-11986-1-git-send-email-jlu-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>]
* Re: [PATCH v2] pps-gpio: add device-tree binding and support [not found] ` <1370083449-11986-1-git-send-email-jlu-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> @ 2013-06-01 11:44 ` Arnd Bergmann 2013-06-03 12:04 ` Rodolfo Giometti 1 sibling, 0 replies; 7+ messages in thread From: Arnd Bergmann @ 2013-06-01 11:44 UTC (permalink / raw) To: Jan Luebbe Cc: linux-doc-u79uwXL29TY76Z2rM5mHXA, devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, linux-kernel-u79uwXL29TY76Z2rM5mHXA, Rob Herring, Grant Likely, Andrew Morton On Saturday 01 June 2013, Jan Luebbe wrote: > Instead of allocating a struct pps_gpio_platform_data in the DT case, store > the necessary information in struct pps_gpio_device_data itself. This avoids > an additional allocation and the ifdef. It also gets rid of some indirection. > > Also use dev_err instead of pr_err in the changed code. > > Signed-off-by: Jan Luebbe <jlu-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> > Acked-by: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2] pps-gpio: add device-tree binding and support [not found] ` <1370083449-11986-1-git-send-email-jlu-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> 2013-06-01 11:44 ` Arnd Bergmann @ 2013-06-03 12:04 ` Rodolfo Giometti 1 sibling, 0 replies; 7+ messages in thread From: Rodolfo Giometti @ 2013-06-03 12:04 UTC (permalink / raw) To: Jan Luebbe Cc: linux-doc-u79uwXL29TY76Z2rM5mHXA, devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, linux-kernel-u79uwXL29TY76Z2rM5mHXA, Rob Herring, Grant Likely, Andrew Morton On Sat, Jun 01, 2013 at 12:44:09PM +0200, Jan Luebbe wrote: > Instead of allocating a struct pps_gpio_platform_data in the DT case, store > the necessary information in struct pps_gpio_device_data itself. This avoids > an additional allocation and the ifdef. It also gets rid of some indirection. > > Also use dev_err instead of pr_err in the changed code. > > Signed-off-by: Jan Luebbe <jlu-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> Acked-by: Rodolfo Giometti <giometti-AVVDYK/kqiJWk0Htik3J/w@public.gmane.org> -- GNU/Linux Solutions e-mail: giometti-AVVDYK/kqiJWk0Htik3J/w@public.gmane.org Linux Device Driver giometti-k2GhghHVRtY@public.gmane.org Embedded Systems phone: +39 349 2432127 UNIX programming skype: rodolfo.giometti Freelance ICT Italia - Consulente ICT Italia - www.consulenti-ict.it ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2] pps-gpio: add device-tree binding and support 2013-06-01 10:44 ` [PATCH v2] " Jan Luebbe [not found] ` <1370083449-11986-1-git-send-email-jlu-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> @ 2013-06-03 22:56 ` Andrew Morton 1 sibling, 0 replies; 7+ messages in thread From: Andrew Morton @ 2013-06-03 22:56 UTC (permalink / raw) To: Jan Luebbe Cc: Arnd Bergmann, Grant Likely, Rob Herring, Rodolfo Giometti, devicetree-discuss, linux-doc, linux-kernel On Sat, 1 Jun 2013 12:44:09 +0200 Jan Luebbe <jlu@pengutronix.de> wrote: > Instead of allocating a struct pps_gpio_platform_data in the DT case, store > the necessary information in struct pps_gpio_device_data itself. This avoids > an additional allocation and the ifdef. It also gets rid of some indirection. > > Also use dev_err instead of pr_err in the changed code. > > ... > > static int pps_gpio_probe(struct platform_device *pdev) > { > struct pps_gpio_device_data *data; > - int irq; > + const char *gpio_label; > int ret; > int pps_default_params; > const struct pps_gpio_platform_data *pdata = pdev->dev.platform_data; > + struct device_node *np = pdev->dev.of_node; > > + /* allocate space for device info */ > + data = devm_kzalloc(&pdev->dev, sizeof(struct pps_gpio_device_data), > + GFP_KERNEL); > + if (!data) > + return -ENOMEM; > + > + if (pdata) { > + data->gpio_pin = pdata->gpio_pin; > + gpio_label = pdata->gpio_label; > + > + data->assert_falling_edge = pdata->assert_falling_edge; > + data->capture_clear = pdata->capture_clear; > + } else { > + ret = of_get_gpio(np, 0); > + if (ret < 0) { > + dev_err(&pdev->dev, "failed to get GPIO from device tree\n"); > + return ret; > + } > + data->gpio_pin = ret; > + gpio_label = PPS_GPIO_NAME; > + > + if (of_get_property(np, "assert-falling-edge", NULL)) > + data->assert_falling_edge = true; > + } > > /* GPIO setup */ > - ret = pps_gpio_setup(pdev); > - if (ret) > - return -EINVAL; > + ret = devm_gpio_request(&pdev->dev, data->gpio_pin, gpio_label); > + if (ret) { > + dev_err(&pdev->dev, "failed to request GPIO %u\n", > + data->gpio_pin); > + return ret; > + } > > - /* IRQ setup */ > - irq = gpio_to_irq(pdata->gpio_pin); > - if (irq < 0) { > - pr_err("failed to map GPIO to IRQ: %d\n", irq); > + ret = gpio_direction_input(data->gpio_pin); > + if (ret) { > + dev_err(&pdev->dev, "failed to set pin direction\n"); > return -EINVAL; Should we propagate the gpio_direction_input() return value? > } > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] pps-gpio: add device-tree binding and support 2013-05-31 18:46 [PATCH] pps-gpio: add device-tree binding and support Jan Luebbe [not found] ` <1370026015-9584-1-git-send-email-jlu-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> @ 2013-06-03 12:01 ` Rodolfo Giometti 1 sibling, 0 replies; 7+ messages in thread From: Rodolfo Giometti @ 2013-06-03 12:01 UTC (permalink / raw) To: Jan Luebbe Cc: Grant Likely, Rob Herring, Andrew Morton, devicetree-discuss, linux-doc, linux-kernel On Fri, May 31, 2013 at 08:46:55PM +0200, Jan Luebbe wrote: > Signed-off-by: Jan Luebbe <jlu@pengutronix.de> Acked-by: Rodolfo Giometti <giometti@enneenne.com> -- GNU/Linux Solutions e-mail: giometti@enneenne.com Linux Device Driver giometti@linux.it Embedded Systems phone: +39 349 2432127 UNIX programming skype: rodolfo.giometti Freelance ICT Italia - Consulente ICT Italia - www.consulenti-ict.it ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2013-06-03 22:56 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-05-31 18:46 [PATCH] pps-gpio: add device-tree binding and support Jan Luebbe [not found] ` <1370026015-9584-1-git-send-email-jlu-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> 2013-05-31 19:15 ` Arnd Bergmann 2013-06-01 10:44 ` [PATCH v2] " Jan Luebbe [not found] ` <1370083449-11986-1-git-send-email-jlu-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> 2013-06-01 11:44 ` Arnd Bergmann 2013-06-03 12:04 ` Rodolfo Giometti 2013-06-03 22:56 ` Andrew Morton 2013-06-03 12:01 ` [PATCH] " Rodolfo Giometti
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).