From: marex@denx.de (Marek Vasut)
To: linux-arm-kernel@lists.infradead.org
Subject: [Patch v5 08/13] ARM: imx6q: add config-on-boot gpios
Date: Wed, 13 Jun 2012 17:19:29 +0200 [thread overview]
Message-ID: <201206131719.29671.marex@denx.de> (raw)
In-Reply-To: <4FD8AD42.6010702@gmail.com>
Dear Rob Herring,
> On 06/13/2012 07:34 AM, Richard Zhao wrote:
> > Sometimes, boards have gpios that don't own by any driver or owner
> > by a generic driver that don't like hacks. Such gpios is normally
> > output and need setup once on boot. So I introduce the config-on-boot
> > gpios.
> >
> > Signed-off-by: Richard Zhao <richard.zhao@freescale.com>
> > Cc: Shawn Guo <shawn.guo@linaro.org>
> > Cc: Rob Herring <rob.herring@calxeda.com>
> > Cc: Grant Likely <grant.likely@secretlab.ca>
> > ---
> >
> > .../devicetree/bindings/arm/config-on-boot.txt | 12 +++++++
> > arch/arm/boot/dts/imx6q-sabrelite.dts | 7 ++++
> > arch/arm/mach-imx/mach-imx6q.c | 35
> > ++++++++++++++++++++ 3 files changed, 54 insertions(+)
> > create mode 100644
> > Documentation/devicetree/bindings/arm/config-on-boot.txt
> >
> > diff --git a/Documentation/devicetree/bindings/arm/config-on-boot.txt
> > b/Documentation/devicetree/bindings/arm/config-on-boot.txt new file mode
> > 100644
> > index 0000000..f98ed74
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/arm/config-on-boot.txt
> > @@ -0,0 +1,12 @@
> > +* Configure on Boot
> > +
> > +Node name: config-on-boot
> > + It must be in root node. config-on-boot means to describe settings
> > that needs + to be set one time on boot but aren't owned by any driver,
> > or the owned driver + is too generic to handle such settings. For
> > example, usb hub uses generic + driver in usb core code, a on-board usb
> > may need deassert reset pin.
>
> NAK. This is not a h/w description and should be solved within the
> kernel or bootloader. Either fix this in u-boot
I don't want to be the bastard here, but this shouldn't go into uboot.
> the platform code
Yes, it should be here. But then, it's some usb reset, so maybe the PHY should
somehow handle it?
> , or
> make the generic driver support this in a generic way.
Well, this is platform specific stuff, so it shouldn't be in any way part of the
driver.
>
> Rob
>
> > +
> > +Optional properties:
> > +- output-gpios: Output gpio array that needs to set.
> > +- output-gpio-values: This property is required if output-gpios is set.
> > + The value is a array of 0 or 1. Total count eaquals the number of
> > gpios. diff --git a/arch/arm/boot/dts/imx6q-sabrelite.dts
> > b/arch/arm/boot/dts/imx6q-sabrelite.dts index e0ec929..1dd2261 100644
> > --- a/arch/arm/boot/dts/imx6q-sabrelite.dts
> > +++ b/arch/arm/boot/dts/imx6q-sabrelite.dts
> > @@ -17,6 +17,13 @@
> >
> > model = "Freescale i.MX6 Quad SABRE Lite Board";
> > compatible = "fsl,imx6q-sabrelite", "fsl,imx6q";
> >
> > + config-on-boot {
> > + output-gpios = <
> > + &gpio3 22 0>; /* vbus reset */
> > + output-gpio-values = <
> > + 1>; /* vbus reset */
> > + };
> > +
> >
> > memory {
> >
> > reg = <0x10000000 0x40000000>;
> >
> > };
> >
> > diff --git a/arch/arm/mach-imx/mach-imx6q.c
> > b/arch/arm/mach-imx/mach-imx6q.c index b47e98b..577cf19 100644
> > --- a/arch/arm/mach-imx/mach-imx6q.c
> > +++ b/arch/arm/mach-imx/mach-imx6q.c
> > @@ -19,6 +19,7 @@
> >
> > #include <linux/irqdomain.h>
> > #include <linux/of.h>
> > #include <linux/of_address.h>
> >
> > +#include <linux/of_gpio.h>
> >
> > #include <linux/of_irq.h>
> > #include <linux/of_platform.h>
> > #include <linux/pinctrl/machine.h>
> >
> > @@ -113,6 +114,38 @@ static void __init imx6q_sabrelite_init(void)
> >
> > imx6q_sabrelite_cko1_setup();
> >
> > }
> >
> > +static void __init imx6q_config_on_boot(void)
> > +{
> > + struct device_node *np;
> > + struct property *pp;
> > + int cnt, len, i;
> > + int gpio;
> > +
> > + np = of_find_node_by_path("/config-on-boot");
> > + if (!np)
> > + return;
> > + cnt = of_gpio_named_count(np, "output-gpios");
> > + pp = of_find_property(np, "output-gpio-values", &len);
> > + if (!pp || cnt != len / sizeof(u32)) {
> > + pr_err("Invalid config-on-boot gpios!\n");
> > + of_node_put(np);
> > + return;
> > + }
> > + for (i = 0; i < cnt; i++) {
> > + gpio = of_get_named_gpio(np, "output-gpios", i);
> > + if (gpio_is_valid(gpio))
> > + gpio_request_one(gpio, GPIOF_OUT_INIT_HIGH,
> > + "config-on-boot");
> > + }
> > +
> > + of_node_put(np);
> > +}
> > +
> > +static void __init imx6q_post_populate(void)
> > +{
> > + imx6q_config_on_boot();
> > +}
> > +
> >
> > static void __init imx6q_init_machine(void)
> > {
> >
> > /*
> >
> > @@ -126,6 +159,8 @@ static void __init imx6q_init_machine(void)
> >
> > of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
> >
> > + imx6q_post_populate();
> > +
> >
> > imx6q_pm_init();
> >
> > }
Best regards,
Marek Vasut
WARNING: multiple messages have this Message-ID (diff)
From: Marek Vasut <marex-ynQEQJNshbs@public.gmane.org>
To: Rob Herring <robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: Richard Zhao
<richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>,
linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
B20596-KZfg59tc24xl57MIdRCFDg@public.gmane.org,
dong.aisheng-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
fabio.estevam-KZfg59tc24xl57MIdRCFDg@public.gmane.org,
alexander.shishkin-VuQAYsv1563Yd54FQh9/CA@public.gmane.org,
B29397-KZfg59tc24xl57MIdRCFDg@public.gmane.org,
balbi-l0cyMroinI0@public.gmane.org,
Grant Likely
<grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>,
stern-nwvwT67g6+6dFdvTe/nMLpVzexx5G7lz@public.gmane.org,
Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>,
kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org,
gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org,
shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
linuxzsc-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
Subject: Re: [Patch v5 08/13] ARM: imx6q: add config-on-boot gpios
Date: Wed, 13 Jun 2012 17:19:29 +0200 [thread overview]
Message-ID: <201206131719.29671.marex@denx.de> (raw)
In-Reply-To: <4FD8AD42.6010702-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Dear Rob Herring,
> On 06/13/2012 07:34 AM, Richard Zhao wrote:
> > Sometimes, boards have gpios that don't own by any driver or owner
> > by a generic driver that don't like hacks. Such gpios is normally
> > output and need setup once on boot. So I introduce the config-on-boot
> > gpios.
> >
> > Signed-off-by: Richard Zhao <richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
> > Cc: Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
> > Cc: Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
> > Cc: Grant Likely <grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>
> > ---
> >
> > .../devicetree/bindings/arm/config-on-boot.txt | 12 +++++++
> > arch/arm/boot/dts/imx6q-sabrelite.dts | 7 ++++
> > arch/arm/mach-imx/mach-imx6q.c | 35
> > ++++++++++++++++++++ 3 files changed, 54 insertions(+)
> > create mode 100644
> > Documentation/devicetree/bindings/arm/config-on-boot.txt
> >
> > diff --git a/Documentation/devicetree/bindings/arm/config-on-boot.txt
> > b/Documentation/devicetree/bindings/arm/config-on-boot.txt new file mode
> > 100644
> > index 0000000..f98ed74
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/arm/config-on-boot.txt
> > @@ -0,0 +1,12 @@
> > +* Configure on Boot
> > +
> > +Node name: config-on-boot
> > + It must be in root node. config-on-boot means to describe settings
> > that needs + to be set one time on boot but aren't owned by any driver,
> > or the owned driver + is too generic to handle such settings. For
> > example, usb hub uses generic + driver in usb core code, a on-board usb
> > may need deassert reset pin.
>
> NAK. This is not a h/w description and should be solved within the
> kernel or bootloader. Either fix this in u-boot
I don't want to be the bastard here, but this shouldn't go into uboot.
> the platform code
Yes, it should be here. But then, it's some usb reset, so maybe the PHY should
somehow handle it?
> , or
> make the generic driver support this in a generic way.
Well, this is platform specific stuff, so it shouldn't be in any way part of the
driver.
>
> Rob
>
> > +
> > +Optional properties:
> > +- output-gpios: Output gpio array that needs to set.
> > +- output-gpio-values: This property is required if output-gpios is set.
> > + The value is a array of 0 or 1. Total count eaquals the number of
> > gpios. diff --git a/arch/arm/boot/dts/imx6q-sabrelite.dts
> > b/arch/arm/boot/dts/imx6q-sabrelite.dts index e0ec929..1dd2261 100644
> > --- a/arch/arm/boot/dts/imx6q-sabrelite.dts
> > +++ b/arch/arm/boot/dts/imx6q-sabrelite.dts
> > @@ -17,6 +17,13 @@
> >
> > model = "Freescale i.MX6 Quad SABRE Lite Board";
> > compatible = "fsl,imx6q-sabrelite", "fsl,imx6q";
> >
> > + config-on-boot {
> > + output-gpios = <
> > + &gpio3 22 0>; /* vbus reset */
> > + output-gpio-values = <
> > + 1>; /* vbus reset */
> > + };
> > +
> >
> > memory {
> >
> > reg = <0x10000000 0x40000000>;
> >
> > };
> >
> > diff --git a/arch/arm/mach-imx/mach-imx6q.c
> > b/arch/arm/mach-imx/mach-imx6q.c index b47e98b..577cf19 100644
> > --- a/arch/arm/mach-imx/mach-imx6q.c
> > +++ b/arch/arm/mach-imx/mach-imx6q.c
> > @@ -19,6 +19,7 @@
> >
> > #include <linux/irqdomain.h>
> > #include <linux/of.h>
> > #include <linux/of_address.h>
> >
> > +#include <linux/of_gpio.h>
> >
> > #include <linux/of_irq.h>
> > #include <linux/of_platform.h>
> > #include <linux/pinctrl/machine.h>
> >
> > @@ -113,6 +114,38 @@ static void __init imx6q_sabrelite_init(void)
> >
> > imx6q_sabrelite_cko1_setup();
> >
> > }
> >
> > +static void __init imx6q_config_on_boot(void)
> > +{
> > + struct device_node *np;
> > + struct property *pp;
> > + int cnt, len, i;
> > + int gpio;
> > +
> > + np = of_find_node_by_path("/config-on-boot");
> > + if (!np)
> > + return;
> > + cnt = of_gpio_named_count(np, "output-gpios");
> > + pp = of_find_property(np, "output-gpio-values", &len);
> > + if (!pp || cnt != len / sizeof(u32)) {
> > + pr_err("Invalid config-on-boot gpios!\n");
> > + of_node_put(np);
> > + return;
> > + }
> > + for (i = 0; i < cnt; i++) {
> > + gpio = of_get_named_gpio(np, "output-gpios", i);
> > + if (gpio_is_valid(gpio))
> > + gpio_request_one(gpio, GPIOF_OUT_INIT_HIGH,
> > + "config-on-boot");
> > + }
> > +
> > + of_node_put(np);
> > +}
> > +
> > +static void __init imx6q_post_populate(void)
> > +{
> > + imx6q_config_on_boot();
> > +}
> > +
> >
> > static void __init imx6q_init_machine(void)
> > {
> >
> > /*
> >
> > @@ -126,6 +159,8 @@ static void __init imx6q_init_machine(void)
> >
> > of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
> >
> > + imx6q_post_populate();
> > +
> >
> > imx6q_pm_init();
> >
> > }
Best regards,
Marek Vasut
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2012-06-13 15:19 UTC|newest]
Thread overview: 132+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-13 12:34 [Patch v5 00/13] add imx usb driver for mx28/6x Richard Zhao
2012-06-13 12:34 ` Richard Zhao
2012-06-13 12:34 ` [Patch v5 01/13] usb: otg: add notify_connect/notify_disconnect callback Richard Zhao
2012-06-13 12:34 ` Richard Zhao
2012-06-13 12:34 ` [Patch v5 02/13] USB: move transceiver from ehci_hcd and ohci_hcd to hcd and rename it as phy Richard Zhao
2012-06-13 12:34 ` Richard Zhao
2012-06-13 18:17 ` Alan Stern
2012-06-13 18:17 ` Alan Stern
2012-06-13 12:34 ` [Patch v5 03/13] USB: notify phy when root hub port connect change Richard Zhao
2012-06-13 12:34 ` Richard Zhao
2012-06-13 18:25 ` Alan Stern
2012-06-13 18:25 ` Alan Stern
2012-06-14 0:36 ` Richard Zhao
2012-06-14 0:36 ` Richard Zhao
2012-06-14 14:11 ` Alan Stern
2012-06-14 14:11 ` Alan Stern
2012-06-13 12:34 ` [Patch v5 04/13] usb: chipidea: permit driver bindings pass phy pointer Richard Zhao
2012-06-13 12:34 ` Richard Zhao
2012-06-13 12:34 ` [Patch v5 05/13] usb: otg: add basic mxs phy driver support Richard Zhao
2012-06-13 12:34 ` Richard Zhao
2012-06-13 21:33 ` Sascha Hauer
2012-06-13 21:33 ` Sascha Hauer
2012-06-13 21:56 ` Marek Vasut
2012-06-13 21:56 ` Marek Vasut
2012-06-13 22:03 ` Sascha Hauer
2012-06-13 22:03 ` Sascha Hauer
2012-06-14 1:12 ` Richard Zhao
2012-06-14 1:12 ` Richard Zhao
2012-06-13 12:34 ` [Patch v5 06/13] usb: chipidea: add imx platform driver Richard Zhao
2012-06-13 12:34 ` Richard Zhao
2012-06-13 21:46 ` Sascha Hauer
2012-06-13 21:46 ` Sascha Hauer
2012-06-13 21:57 ` Marek Vasut
2012-06-13 21:57 ` Marek Vasut
2012-06-13 22:07 ` Sascha Hauer
2012-06-13 22:07 ` Sascha Hauer
2012-06-14 1:21 ` Richard Zhao
2012-06-14 1:21 ` Richard Zhao
2012-06-14 1:56 ` Richard Zhao
2012-06-14 1:56 ` Richard Zhao
2012-06-13 12:34 ` [Patch v5 07/13] ARM: imx6q: correct device name of usbphy and usb controller clock export Richard Zhao
2012-06-13 12:34 ` Richard Zhao
2012-06-13 12:34 ` [Patch v5 08/13] ARM: imx6q: add config-on-boot gpios Richard Zhao
2012-06-13 12:34 ` Richard Zhao
2012-06-13 15:09 ` Rob Herring
2012-06-13 15:09 ` Rob Herring
2012-06-13 15:19 ` Marek Vasut [this message]
2012-06-13 15:19 ` Marek Vasut
2012-06-13 16:45 ` Rob Herring
2012-06-13 16:45 ` Rob Herring
2012-06-13 17:15 ` Marek Vasut
2012-06-13 17:15 ` Marek Vasut
2012-06-13 15:28 ` Richard Zhao
2012-06-13 15:28 ` Richard Zhao
2012-06-13 16:00 ` Marek Vasut
2012-06-13 16:00 ` Marek Vasut
2012-06-15 15:34 ` Shawn Guo
2012-06-15 15:34 ` Shawn Guo
2012-06-13 16:50 ` Rob Herring
2012-06-13 16:50 ` Rob Herring
2012-06-14 1:33 ` Richard Zhao
2012-06-14 1:33 ` Richard Zhao
2012-06-20 14:29 ` Rob Herring
2012-06-20 14:29 ` Rob Herring
2012-06-20 15:05 ` Shawn Guo
2012-06-20 15:05 ` Shawn Guo
2012-06-21 21:32 ` Rob Herring
2012-06-21 21:32 ` Rob Herring
2012-06-20 15:41 ` Stephen Warren
2012-06-20 15:41 ` Stephen Warren
2012-06-21 1:32 ` Chen Peter-B29397
2012-06-21 1:32 ` Chen Peter-B29397
2012-06-21 22:22 ` Stephen Warren
2012-06-21 22:22 ` Stephen Warren
2012-06-22 0:03 ` Chen Peter-B29397
2012-06-22 0:03 ` Chen Peter-B29397
2012-06-25 15:43 ` Stephen Warren
2012-06-25 15:43 ` Stephen Warren
2012-06-26 2:05 ` Chen Peter-B29397
2012-06-26 2:05 ` Chen Peter-B29397
2012-06-19 23:36 ` Fabio Estevam
2012-06-19 23:36 ` Fabio Estevam
2012-06-19 23:41 ` Richard Zhao
2012-06-19 23:41 ` Richard Zhao
2012-07-17 12:30 ` Dirk Behme
2012-07-17 12:30 ` Dirk Behme
2012-07-19 2:15 ` Richard Zhao
2012-07-19 2:15 ` Richard Zhao
2012-06-13 12:34 ` [Patch v5 09/13] ARM: imx6q: add usbphy clocks Richard Zhao
2012-06-13 12:34 ` Richard Zhao
2012-06-13 21:54 ` Sascha Hauer
2012-06-13 21:54 ` Sascha Hauer
2012-06-14 0:15 ` Chen Peter-B29397
2012-06-14 0:15 ` Chen Peter-B29397
2012-06-13 12:34 ` [Patch v5 10/13] ARM: imx6q: disable usb charger detector Richard Zhao
2012-06-13 12:34 ` Richard Zhao
2012-06-13 12:34 ` [Patch v5 11/13] ARM: dts: imx6q-sabrelite: add usb devices Richard Zhao
2012-06-13 12:34 ` Richard Zhao
2012-06-19 23:39 ` Fabio Estevam
2012-06-19 23:39 ` Fabio Estevam
2012-06-13 12:34 ` [Patch v5 12/13] ARM: mxs: clk_register_clkdev mx28 usb clocks Richard Zhao
2012-06-13 12:34 ` Richard Zhao
2012-06-13 12:34 ` [Patch v5 13/13] ARM: dts: imx28-evk: add usb devices Richard Zhao
2012-06-13 12:34 ` Richard Zhao
2012-06-18 17:10 ` [Patch v5 00/13] add imx usb driver for mx28/6x Fabio Estevam
2012-06-18 17:10 ` Fabio Estevam
2012-06-18 17:13 ` Marek Vasut
2012-06-18 17:13 ` Marek Vasut
2012-06-18 17:25 ` Fabio Estevam
2012-06-18 17:25 ` Fabio Estevam
2012-06-19 1:14 ` Chen Peter-B29397
2012-06-19 1:14 ` Chen Peter-B29397
2012-06-19 1:33 ` Fabio Estevam
2012-06-19 1:33 ` Fabio Estevam
2012-06-19 2:07 ` Marek Vasut
2012-06-19 2:07 ` Marek Vasut
2012-06-19 2:17 ` Fabio Estevam
2012-06-19 2:17 ` Fabio Estevam
2012-06-19 6:14 ` Shawn Guo
2012-06-19 6:14 ` Shawn Guo
2012-06-19 12:24 ` Fabio Estevam
2012-06-19 12:24 ` Fabio Estevam
2012-06-19 12:38 ` Shawn Guo
2012-06-19 12:38 ` Shawn Guo
2012-06-19 13:54 ` Fabio Estevam
2012-06-19 13:54 ` Fabio Estevam
2012-06-19 18:34 ` Fabio Estevam
2012-06-19 18:34 ` Fabio Estevam
2012-06-19 19:03 ` Dirk Behme
2012-06-19 12:59 ` Marek Vasut
2012-06-19 12:59 ` Marek Vasut
2012-06-20 17:53 ` Subodh Nijsure
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201206131719.29671.marex@denx.de \
--to=marex@denx.de \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.