* [PATCH 1/2] gpio: xilinx: dt-binding: Add clock node
@ 2016-11-08 5:13 Shubhrajyoti Datta
[not found] ` <1478581990-28276-1-git-send-email-shubhrajyoti.datta-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org>
0 siblings, 1 reply; 5+ messages in thread
From: Shubhrajyoti Datta @ 2016-11-08 5:13 UTC (permalink / raw)
To: linux-gpio, devicetree; +Cc: soren.brinkmann, michal.simek, Shubhrajyoti Datta
Add the clock node to the dt binding.
Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
---
.../devicetree/bindings/gpio/gpio-xilinx.txt | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/Documentation/devicetree/bindings/gpio/gpio-xilinx.txt b/Documentation/devicetree/bindings/gpio/gpio-xilinx.txt
index 63bf4be..0821b9d 100644
--- a/Documentation/devicetree/bindings/gpio/gpio-xilinx.txt
+++ b/Documentation/devicetree/bindings/gpio/gpio-xilinx.txt
@@ -11,6 +11,7 @@ Required properties:
- #gpio-cells : Should be two. The first cell is the pin number and the
second cell is used to specify optional parameters (currently unused).
- gpio-controller : Marks the device node as a GPIO controller.
+- clocks: Input clock specifier. Refer to common clock bindings.
Optional properties:
- interrupts : Interrupt mapping for GPIO IRQ.
@@ -25,12 +26,14 @@ Optional properties:
- xlnx,dout-default-2 : as above but the second channel
- xlnx,gpio2-width : as above but for the second channel
- xlnx,tri-default-2 : as above but for the second channel
+- clock-names: Input clock name
Example:
gpio: gpio@40000000 {
#gpio-cells = <2>;
compatible = "xlnx,xps-gpio-1.00.a";
+ clocks = <&clkc 15>;
gpio-controller ;
interrupt-parent = <µblaze_0_intc>;
interrupts = < 6 2 >;
--
1.7.1
^ permalink raw reply related [flat|nested] 5+ messages in thread[parent not found: <1478581990-28276-1-git-send-email-shubhrajyoti.datta-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org>]
* [PATCH 2/2] gpio: xilinx: Add clock support [not found] ` <1478581990-28276-1-git-send-email-shubhrajyoti.datta-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org> @ 2016-11-08 5:13 ` Shubhrajyoti Datta 2016-11-08 14:52 ` Sören Brinkmann 2016-11-08 14:48 ` [PATCH 1/2] gpio: xilinx: dt-binding: Add clock node Sören Brinkmann 1 sibling, 1 reply; 5+ messages in thread From: Shubhrajyoti Datta @ 2016-11-08 5:13 UTC (permalink / raw) To: linux-gpio-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA Cc: soren.brinkmann-gjFFaj9aHVfQT0dZR+AlfA, michal.simek-gjFFaj9aHVfQT0dZR+AlfA, Shubhrajyoti Datta Add basic clock support for xilinx gpio. Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.datta-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org> --- drivers/gpio/gpio-xilinx.c | 22 ++++++++++++++++++++++ 1 files changed, 22 insertions(+), 0 deletions(-) diff --git a/drivers/gpio/gpio-xilinx.c b/drivers/gpio/gpio-xilinx.c index 14b2a62..923cab8 100644 --- a/drivers/gpio/gpio-xilinx.c +++ b/drivers/gpio/gpio-xilinx.c @@ -13,6 +13,7 @@ */ #include <linux/bitops.h> +#include <linux/clk.h> #include <linux/init.h> #include <linux/errno.h> #include <linux/module.h> @@ -45,6 +46,7 @@ * @gpio_state: GPIO state shadow register * @gpio_dir: GPIO direction shadow register * @gpio_lock: Lock used for synchronization + * @clk: Clock resource for this controller */ struct xgpio_instance { struct of_mm_gpio_chip mmchip; @@ -52,6 +54,7 @@ struct xgpio_instance { u32 gpio_state[2]; u32 gpio_dir[2]; spinlock_t gpio_lock[2]; + struct clk *clk; }; static inline int xgpio_index(struct xgpio_instance *chip, int gpio) @@ -282,6 +285,7 @@ static int xgpio_remove(struct platform_device *pdev) struct xgpio_instance *chip = platform_get_drvdata(pdev); of_mm_gpiochip_remove(&chip->mmchip); + clk_disable_unprepare(chip->clk); return 0; } @@ -307,6 +311,23 @@ static int xgpio_probe(struct platform_device *pdev) platform_set_drvdata(pdev, chip); + /* Retrieve GPIO clock */ + chip->clk = devm_clk_get(&pdev->dev, NULL); + if (IS_ERR(chip->clk)) { + if (PTR_ERR(chip->clk) == -ENOENT) { + dev_info(&pdev->dev, "No clocks found for clk\n"); + chip->clk = NULL; + } else { + dev_err(&pdev->dev, "axi clock error\n"); + return PTR_ERR(chip->clk); + } + } + status = clk_prepare_enable(chip->clk); + if (status) { + dev_err(&pdev->dev, "Unable to enable clock.\n"); + return status; + } + /* Update GPIO state shadow register with default value */ of_property_read_u32(np, "xlnx,dout-default", &chip->gpio_state[0]); @@ -362,6 +383,7 @@ static int xgpio_probe(struct platform_device *pdev) if (status) { pr_err("%s: error in probe function with status %d\n", np->full_name, status); + clk_disable_unprepare(chip->clk); return status; } -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] gpio: xilinx: Add clock support 2016-11-08 5:13 ` [PATCH 2/2] gpio: xilinx: Add clock support Shubhrajyoti Datta @ 2016-11-08 14:52 ` Sören Brinkmann 0 siblings, 0 replies; 5+ messages in thread From: Sören Brinkmann @ 2016-11-08 14:52 UTC (permalink / raw) To: Shubhrajyoti Datta; +Cc: linux-gpio, devicetree, michal.simek On Tue, 2016-11-08 at 10:43:10 +0530, Shubhrajyoti Datta wrote: > Add basic clock support for xilinx gpio. > > Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com> > --- > drivers/gpio/gpio-xilinx.c | 22 ++++++++++++++++++++++ > 1 files changed, 22 insertions(+), 0 deletions(-) > > diff --git a/drivers/gpio/gpio-xilinx.c b/drivers/gpio/gpio-xilinx.c > index 14b2a62..923cab8 100644 > --- a/drivers/gpio/gpio-xilinx.c > +++ b/drivers/gpio/gpio-xilinx.c > @@ -13,6 +13,7 @@ > */ > > #include <linux/bitops.h> > +#include <linux/clk.h> > #include <linux/init.h> > #include <linux/errno.h> > #include <linux/module.h> > @@ -45,6 +46,7 @@ > * @gpio_state: GPIO state shadow register > * @gpio_dir: GPIO direction shadow register > * @gpio_lock: Lock used for synchronization > + * @clk: Clock resource for this controller > */ > struct xgpio_instance { > struct of_mm_gpio_chip mmchip; > @@ -52,6 +54,7 @@ struct xgpio_instance { > u32 gpio_state[2]; > u32 gpio_dir[2]; > spinlock_t gpio_lock[2]; > + struct clk *clk; > }; > > static inline int xgpio_index(struct xgpio_instance *chip, int gpio) > @@ -282,6 +285,7 @@ static int xgpio_remove(struct platform_device *pdev) > struct xgpio_instance *chip = platform_get_drvdata(pdev); > > of_mm_gpiochip_remove(&chip->mmchip); > + clk_disable_unprepare(chip->clk); > > return 0; > } > @@ -307,6 +311,23 @@ static int xgpio_probe(struct platform_device *pdev) > > platform_set_drvdata(pdev, chip); > > + /* Retrieve GPIO clock */ > + chip->clk = devm_clk_get(&pdev->dev, NULL); > + if (IS_ERR(chip->clk)) { > + if (PTR_ERR(chip->clk) == -ENOENT) { > + dev_info(&pdev->dev, "No clocks found for clk\n"); > + chip->clk = NULL; > + } else { > + dev_err(&pdev->dev, "axi clock error\n"); > + return PTR_ERR(chip->clk); > + } > + } In the bindings you document 'clocks' as required, but it's handled as optional here. Things should be consistent and given that the existing binding doesn't require clocks, we're probably stuck with having the clock optional. Sören ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] gpio: xilinx: dt-binding: Add clock node [not found] ` <1478581990-28276-1-git-send-email-shubhrajyoti.datta-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org> 2016-11-08 5:13 ` [PATCH 2/2] gpio: xilinx: Add clock support Shubhrajyoti Datta @ 2016-11-08 14:48 ` Sören Brinkmann 2016-11-09 4:25 ` Shubhrajyoti Datta 1 sibling, 1 reply; 5+ messages in thread From: Sören Brinkmann @ 2016-11-08 14:48 UTC (permalink / raw) To: Shubhrajyoti Datta Cc: linux-gpio-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, michal.simek-gjFFaj9aHVfQT0dZR+AlfA On Tue, 2016-11-08 at 10:43:09 +0530, Shubhrajyoti Datta wrote: > Add the clock node to the dt binding. > > Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.datta-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org> > --- > .../devicetree/bindings/gpio/gpio-xilinx.txt | 3 +++ > 1 files changed, 3 insertions(+), 0 deletions(-) > > diff --git a/Documentation/devicetree/bindings/gpio/gpio-xilinx.txt b/Documentation/devicetree/bindings/gpio/gpio-xilinx.txt > index 63bf4be..0821b9d 100644 > --- a/Documentation/devicetree/bindings/gpio/gpio-xilinx.txt > +++ b/Documentation/devicetree/bindings/gpio/gpio-xilinx.txt > @@ -11,6 +11,7 @@ Required properties: > - #gpio-cells : Should be two. The first cell is the pin number and the > second cell is used to specify optional parameters (currently unused). > - gpio-controller : Marks the device node as a GPIO controller. > +- clocks: Input clock specifier. Refer to common clock bindings. > > Optional properties: > - interrupts : Interrupt mapping for GPIO IRQ. > @@ -25,12 +26,14 @@ Optional properties: > - xlnx,dout-default-2 : as above but the second channel > - xlnx,gpio2-width : as above but for the second channel > - xlnx,tri-default-2 : as above but for the second channel > +- clock-names: Input clock name Clock names are driver specific and must be documented here. > > > Example: > gpio: gpio@40000000 { > #gpio-cells = <2>; > compatible = "xlnx,xps-gpio-1.00.a"; > + clocks = <&clkc 15>; Where are the clock-names? Sören -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: [PATCH 1/2] gpio: xilinx: dt-binding: Add clock node 2016-11-08 14:48 ` [PATCH 1/2] gpio: xilinx: dt-binding: Add clock node Sören Brinkmann @ 2016-11-09 4:25 ` Shubhrajyoti Datta 0 siblings, 0 replies; 5+ messages in thread From: Shubhrajyoti Datta @ 2016-11-09 4:25 UTC (permalink / raw) To: Soren Brinkmann Cc: linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, michal.simek@xilinx.com Hi Soren, > -----Original Message----- > From: Sören Brinkmann [mailto:soren.brinkmann@xilinx.com] > Sent: Tuesday, November 08, 2016 8:19 PM <snip> > > +- clock-names: Input clock name > > Clock names are driver specific and must be documented here. Will do thanks. > > > > > > > Example: > > gpio: gpio@40000000 { > > #gpio-cells = <2>; > > compatible = "xlnx,xps-gpio-1.00.a"; > > + clocks = <&clkc 15>; > > Where are the clock-names? Will add. > > Sören ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2016-11-09 4:26 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-08 5:13 [PATCH 1/2] gpio: xilinx: dt-binding: Add clock node Shubhrajyoti Datta
[not found] ` <1478581990-28276-1-git-send-email-shubhrajyoti.datta-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org>
2016-11-08 5:13 ` [PATCH 2/2] gpio: xilinx: Add clock support Shubhrajyoti Datta
2016-11-08 14:52 ` Sören Brinkmann
2016-11-08 14:48 ` [PATCH 1/2] gpio: xilinx: dt-binding: Add clock node Sören Brinkmann
2016-11-09 4:25 ` Shubhrajyoti Datta
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).