Message ID | 1471252398-957-2-git-send-email-peter.chen@nxp.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Monday 15 August 2016 02:43 PM, Peter Chen wrote: > Add binding doc for generic power sequence library. > > Signed-off-by: Peter Chen <peter.chen@nxp.com> > Acked-by: Philipp Zabel <p.zabel@pengutronix.de> > Acked-by: Rob Herring <robh@kernel.org> > --- > .../bindings/power/pwrseq/pwrseq-generic.txt | 48 ++++++++++++++++++++++ > 1 file changed, 48 insertions(+) > create mode 100644 Documentation/devicetree/bindings/power/pwrseq/pwrseq-generic.txt > > diff --git a/Documentation/devicetree/bindings/power/pwrseq/pwrseq-generic.txt b/Documentation/devicetree/bindings/power/pwrseq/pwrseq-generic.txt > new file mode 100644 > index 0000000..ebf0d47 > --- /dev/null > +++ b/Documentation/devicetree/bindings/power/pwrseq/pwrseq-generic.txt > @@ -0,0 +1,48 @@ > +The generic power sequence library > + > +Some hard-wired devices (eg USB/MMC) need to do power sequence before > +the device can be enumerated on the bus, the typical power sequence > +like: enable USB PHY clock, toggle reset pin, etc. But current > +Linux device driver lacks of such code to do it, it may cause some > +hard-wired devices works abnormal or can't be recognized by > +controller at all. The power sequence will be done before this device > +can be found at the bus. > + > +The power sequence properties is under the device node. > + > +Optional properties: > +- clocks: the input clocks for device. > +- reset-gpios: Should specify the GPIO for reset. > +- reset-duration-us: the duration in microsecond for assert reset signal. > + > +Below is the example of USB power sequence properties on USB device > +nodes which have two level USB hubs. > + > +&usbotg1 { > + vbus-supply = <®_usb_otg1_vbus>; > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_usb_otg1_id>; > + status = "okay"; > + > + #address-cells = <1>; > + #size-cells = <0>; > + genesys: hub@1 { > + compatible = "usb5e3,608"; > + reg = <1>; > + > + clocks = <&clks IMX6SX_CLK_CKO>; > + reset-gpios = <&gpio4 5 GPIO_ACTIVE_LOW>; /* hub reset pin */ > + reset-duration-us = <10>; > + > + #address-cells = <1>; > + #size-cells = <0>; > + asix: ethernet@1 { > + compatible = "usbb95,1708"; So I assume, with our recent discussion and the change we are proposing, the library would have some knowledge about this compatible string, right? what I was asking on other email was, how are you connecting multiple power sequence libraries to their respective consumers ? Thanks, Vaibhav > + reg = <1>; > + > + clocks = <&clks IMX6SX_CLK_IPG>; > + reset-gpios = <&gpio4 6 GPIO_ACTIVE_LOW>; /* ethernet_rst */ > + reset-duration-us = <15>; > + }; > + }; > +};
On Thu, Sep 01, 2016 at 01:33:22PM +0530, Vaibhav Hiremath wrote: > > > On Monday 15 August 2016 02:43 PM, Peter Chen wrote: > >Add binding doc for generic power sequence library. > > > >Signed-off-by: Peter Chen <peter.chen@nxp.com> > >Acked-by: Philipp Zabel <p.zabel@pengutronix.de> > >Acked-by: Rob Herring <robh@kernel.org> > >--- > > .../bindings/power/pwrseq/pwrseq-generic.txt | 48 ++++++++++++++++++++++ > > 1 file changed, 48 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/power/pwrseq/pwrseq-generic.txt > > > >diff --git a/Documentation/devicetree/bindings/power/pwrseq/pwrseq-generic.txt b/Documentation/devicetree/bindings/power/pwrseq/pwrseq-generic.txt > >new file mode 100644 > >index 0000000..ebf0d47 > >--- /dev/null > >+++ b/Documentation/devicetree/bindings/power/pwrseq/pwrseq-generic.txt > >@@ -0,0 +1,48 @@ > >+The generic power sequence library > >+ > >+Some hard-wired devices (eg USB/MMC) need to do power sequence before > >+the device can be enumerated on the bus, the typical power sequence > >+like: enable USB PHY clock, toggle reset pin, etc. But current > >+Linux device driver lacks of such code to do it, it may cause some > >+hard-wired devices works abnormal or can't be recognized by > >+controller at all. The power sequence will be done before this device > >+can be found at the bus. > >+ > >+The power sequence properties is under the device node. > >+ > >+Optional properties: > >+- clocks: the input clocks for device. > >+- reset-gpios: Should specify the GPIO for reset. > >+- reset-duration-us: the duration in microsecond for assert reset signal. > >+ > >+Below is the example of USB power sequence properties on USB device > >+nodes which have two level USB hubs. > >+ > >+&usbotg1 { > >+ vbus-supply = <®_usb_otg1_vbus>; > >+ pinctrl-names = "default"; > >+ pinctrl-0 = <&pinctrl_usb_otg1_id>; > >+ status = "okay"; > >+ > >+ #address-cells = <1>; > >+ #size-cells = <0>; > >+ genesys: hub@1 { > >+ compatible = "usb5e3,608"; > >+ reg = <1>; > >+ > >+ clocks = <&clks IMX6SX_CLK_CKO>; > >+ reset-gpios = <&gpio4 5 GPIO_ACTIVE_LOW>; /* hub reset pin */ > >+ reset-duration-us = <10>; > >+ > >+ #address-cells = <1>; > >+ #size-cells = <0>; > >+ asix: ethernet@1 { > >+ compatible = "usbb95,1708"; > > So I assume, with our recent discussion and the change > we are proposing, the library would have some knowledge > about this compatible string, right? Yes > > what I was asking on other email was, how are you connecting > multiple power sequence libraries to their respective consumers ? > The consumers has its of_node, then it can find related power sequence library according to compatible string.
On Friday 02 September 2016 06:30 AM, Peter Chen wrote: > On Thu, Sep 01, 2016 at 01:33:22PM +0530, Vaibhav Hiremath wrote: >> >> On Monday 15 August 2016 02:43 PM, Peter Chen wrote: >>> Add binding doc for generic power sequence library. >>> >>> Signed-off-by: Peter Chen <peter.chen@nxp.com> >>> Acked-by: Philipp Zabel <p.zabel@pengutronix.de> >>> Acked-by: Rob Herring <robh@kernel.org> >>> --- >>> .../bindings/power/pwrseq/pwrseq-generic.txt | 48 ++++++++++++++++++++++ >>> 1 file changed, 48 insertions(+) >>> create mode 100644 Documentation/devicetree/bindings/power/pwrseq/pwrseq-generic.txt >>> >>> diff --git a/Documentation/devicetree/bindings/power/pwrseq/pwrseq-generic.txt b/Documentation/devicetree/bindings/power/pwrseq/pwrseq-generic.txt >>> new file mode 100644 >>> index 0000000..ebf0d47 >>> --- /dev/null >>> +++ b/Documentation/devicetree/bindings/power/pwrseq/pwrseq-generic.txt >>> @@ -0,0 +1,48 @@ >>> +The generic power sequence library >>> + >>> +Some hard-wired devices (eg USB/MMC) need to do power sequence before >>> +the device can be enumerated on the bus, the typical power sequence >>> +like: enable USB PHY clock, toggle reset pin, etc. But current >>> +Linux device driver lacks of such code to do it, it may cause some >>> +hard-wired devices works abnormal or can't be recognized by >>> +controller at all. The power sequence will be done before this device >>> +can be found at the bus. >>> + >>> +The power sequence properties is under the device node. >>> + >>> +Optional properties: >>> +- clocks: the input clocks for device. >>> +- reset-gpios: Should specify the GPIO for reset. >>> +- reset-duration-us: the duration in microsecond for assert reset signal. >>> + >>> +Below is the example of USB power sequence properties on USB device >>> +nodes which have two level USB hubs. >>> + >>> +&usbotg1 { >>> + vbus-supply = <®_usb_otg1_vbus>; >>> + pinctrl-names = "default"; >>> + pinctrl-0 = <&pinctrl_usb_otg1_id>; >>> + status = "okay"; >>> + >>> + #address-cells = <1>; >>> + #size-cells = <0>; >>> + genesys: hub@1 { >>> + compatible = "usb5e3,608"; >>> + reg = <1>; >>> + >>> + clocks = <&clks IMX6SX_CLK_CKO>; >>> + reset-gpios = <&gpio4 5 GPIO_ACTIVE_LOW>; /* hub reset pin */ >>> + reset-duration-us = <10>; >>> + >>> + #address-cells = <1>; >>> + #size-cells = <0>; >>> + asix: ethernet@1 { >>> + compatible = "usbb95,1708"; >> So I assume, with our recent discussion and the change >> we are proposing, the library would have some knowledge >> about this compatible string, right? > Yes > >> what I was asking on other email was, how are you connecting >> multiple power sequence libraries to their respective consumers ? >> > The consumers has its of_node, then it can find related power sequence > library according to compatible string. > Exactly. Thats what I was referring and wanted to confirm. Thanks, Vaibhav
diff --git a/Documentation/devicetree/bindings/power/pwrseq/pwrseq-generic.txt b/Documentation/devicetree/bindings/power/pwrseq/pwrseq-generic.txt new file mode 100644 index 0000000..ebf0d47 --- /dev/null +++ b/Documentation/devicetree/bindings/power/pwrseq/pwrseq-generic.txt @@ -0,0 +1,48 @@ +The generic power sequence library + +Some hard-wired devices (eg USB/MMC) need to do power sequence before +the device can be enumerated on the bus, the typical power sequence +like: enable USB PHY clock, toggle reset pin, etc. But current +Linux device driver lacks of such code to do it, it may cause some +hard-wired devices works abnormal or can't be recognized by +controller at all. The power sequence will be done before this device +can be found at the bus. + +The power sequence properties is under the device node. + +Optional properties: +- clocks: the input clocks for device. +- reset-gpios: Should specify the GPIO for reset. +- reset-duration-us: the duration in microsecond for assert reset signal. + +Below is the example of USB power sequence properties on USB device +nodes which have two level USB hubs. + +&usbotg1 { + vbus-supply = <®_usb_otg1_vbus>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_usb_otg1_id>; + status = "okay"; + + #address-cells = <1>; + #size-cells = <0>; + genesys: hub@1 { + compatible = "usb5e3,608"; + reg = <1>; + + clocks = <&clks IMX6SX_CLK_CKO>; + reset-gpios = <&gpio4 5 GPIO_ACTIVE_LOW>; /* hub reset pin */ + reset-duration-us = <10>; + + #address-cells = <1>; + #size-cells = <0>; + asix: ethernet@1 { + compatible = "usbb95,1708"; + reg = <1>; + + clocks = <&clks IMX6SX_CLK_IPG>; + reset-gpios = <&gpio4 6 GPIO_ACTIVE_LOW>; /* ethernet_rst */ + reset-duration-us = <15>; + }; + }; +};