Re: [PATCH v3 5/7] dt-bindings: Add Tegra PMC pad configuration bindings

2018-07-29 Thread Linus Walleij
On Fri, Jul 20, 2018 at 1:16 PM Jon Hunter  wrote:

> Adding Linus ...

OMG this sounds bad.

> >> I don't know offhand. Doesn't look like it if you have custom values.
> >
> > It's listed under "Supported generic properties" in
> > pinctrl-bindings.txt. The convention seems to be not to add a vendor
> > prefix even though such custom macro values are used. The property is
> > currently used by qcom,pmic-gpio, qcom,pmic-mpp, and renesas,pfc-pinctrl.
> > I could not find a bindings document describing it with a vendor prefix.
>
> Looking at other users of the 'power-source' property it is not clear to
> me if the values should/can be vendor specific or not. I see cases where
> some people use definitions and others use actual voltages.
>
> Linus, any recommendations here?

It's a bit of imperfect world here.

I always imagines it was some kind of enumerator
like source A, B or C... so 0, 1 defined in sime include/dt-bindings/*
would make most sense to me.

In general, use SI-units if you can, else use something that makes
sense for the people writing the device tree. These enumerators
seems to make sense.

If nothing makes any sense, maybe a custom property makes it
make sense.

Yours,
Linus Walleij


Re: [PATCH v3 5/7] dt-bindings: Add Tegra PMC pad configuration bindings

2018-07-29 Thread Linus Walleij
On Fri, Jul 20, 2018 at 1:16 PM Jon Hunter  wrote:

> Adding Linus ...

OMG this sounds bad.

> >> I don't know offhand. Doesn't look like it if you have custom values.
> >
> > It's listed under "Supported generic properties" in
> > pinctrl-bindings.txt. The convention seems to be not to add a vendor
> > prefix even though such custom macro values are used. The property is
> > currently used by qcom,pmic-gpio, qcom,pmic-mpp, and renesas,pfc-pinctrl.
> > I could not find a bindings document describing it with a vendor prefix.
>
> Looking at other users of the 'power-source' property it is not clear to
> me if the values should/can be vendor specific or not. I see cases where
> some people use definitions and others use actual voltages.
>
> Linus, any recommendations here?

It's a bit of imperfect world here.

I always imagines it was some kind of enumerator
like source A, B or C... so 0, 1 defined in sime include/dt-bindings/*
would make most sense to me.

In general, use SI-units if you can, else use something that makes
sense for the people writing the device tree. These enumerators
seems to make sense.

If nothing makes any sense, maybe a custom property makes it
make sense.

Yours,
Linus Walleij


Re: [PATCH v3 5/7] dt-bindings: Add Tegra PMC pad configuration bindings

2018-07-20 Thread Jon Hunter
Adding Linus ...

On 17/07/18 16:30, Aapo Vienamo wrote:

...

> +Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt.
> +
> +The values accepted by power-source property are
> +TEGRA_IO_PAD_VOLTAGE_1V8 and TEGRA_IO_PAD_VOLTAGE_3V3, which are defined
> +in dt-bindings/pinctrl/pinctrl-tegra-io-pad.h.  

 You need to list out what properties the child nodes can have.

 power-source needs a vendor prefix.  
>>>
>>> Isn't it a generic pinctrl property?  
>>
>> I don't know offhand. Doesn't look like it if you have custom values.
> 
> It's listed under "Supported generic properties" in
> pinctrl-bindings.txt. The convention seems to be not to add a vendor
> prefix even though such custom macro values are used. The property is
> currently used by qcom,pmic-gpio, qcom,pmic-mpp, and renesas,pfc-pinctrl.
> I could not find a bindings document describing it with a vendor prefix.
Looking at other users of the 'power-source' property it is not clear to
me if the values should/can be vendor specific or not. I see cases where
some people use definitions and others use actual voltages. 

Linus, any recommendations here?

Cheers
Jon 

-- 
nvpublic


Re: [PATCH v3 5/7] dt-bindings: Add Tegra PMC pad configuration bindings

2018-07-20 Thread Jon Hunter
Adding Linus ...

On 17/07/18 16:30, Aapo Vienamo wrote:

...

> +Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt.
> +
> +The values accepted by power-source property are
> +TEGRA_IO_PAD_VOLTAGE_1V8 and TEGRA_IO_PAD_VOLTAGE_3V3, which are defined
> +in dt-bindings/pinctrl/pinctrl-tegra-io-pad.h.  

 You need to list out what properties the child nodes can have.

 power-source needs a vendor prefix.  
>>>
>>> Isn't it a generic pinctrl property?  
>>
>> I don't know offhand. Doesn't look like it if you have custom values.
> 
> It's listed under "Supported generic properties" in
> pinctrl-bindings.txt. The convention seems to be not to add a vendor
> prefix even though such custom macro values are used. The property is
> currently used by qcom,pmic-gpio, qcom,pmic-mpp, and renesas,pfc-pinctrl.
> I could not find a bindings document describing it with a vendor prefix.
Looking at other users of the 'power-source' property it is not clear to
me if the values should/can be vendor specific or not. I see cases where
some people use definitions and others use actual voltages. 

Linus, any recommendations here?

Cheers
Jon 

-- 
nvpublic


Re: [PATCH v3 5/7] dt-bindings: Add Tegra PMC pad configuration bindings

2018-07-17 Thread Aapo Vienamo
On Tue, 17 Jul 2018 08:22:07 -0600
Rob Herring  wrote:

> On Tue, Jul 17, 2018 at 6:23 AM Aapo Vienamo  wrote:
> >
> > On Mon, 16 Jul 2018 09:43:09 -0600
> > Rob Herring  wrote:
> >  
> > > On Thu, Jul 12, 2018 at 03:00:11PM +0300, Aapo Vienamo wrote:  
> > > > Document the pinctrl bindings used by the PMC driver for performing pad
> > > > configuration. Both nvidia,tegra186-pmc.txt and nvidia,tegra20-pmc.txt
> > > > are modified as they both cover SoC generations for which these bindings
> > > > apply.
> > > >
> > > > Add a header defining Tegra PMC pad voltage configurations.
> > > >
> > > > Signed-off-by: Aapo Vienamo 
> > > > Acked-by: Jon Hunter 
> > > > ---
> > > >  .../bindings/arm/tegra/nvidia,tegra186-pmc.txt | 84 
> > > > +++
> > > >  .../bindings/arm/tegra/nvidia,tegra20-pmc.txt  | 95 
> > > > ++
> > > >  include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h | 18 
> > > >  3 files changed, 197 insertions(+)
> > > >  create mode 100644 include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h
> > > >
> > > > diff --git 
> > > > a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt 
> > > > b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
> > > > index 5a3bf7c..9528f41 100644
> > > > --- 
> > > > a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
> > > > +++ 
> > > > b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
> > > > @@ -34,3 +34,87 @@ Board DTS:
> > > > pmc@c36 {
> > > > nvidia,invert-interrupt;
> > > > };
> > > > +
> > > > +== Pad Control Nodes ==
> > > > +
> > > > +The PMC can be used to set pad power state and voltage configuration.
> > > > +The pad configuration is done via the pinctrl framework. The driver
> > > > +implements power-source, low-power-enable, and low-power-disable 
> > > > pinconf
> > > > +pin configuration node properties. Each pinctrl pin corresponds to a
> > > > +single Tegra PMC pad. Thus, in the following sections of this document
> > > > +pin refers to the pinctrl frameworks notion of a Tegra PMC pad.  
> > >
> > > "pinctrl framework" is Linux specific and doesn't belong in the binding.
> > > Neither does what a driver supports. Describe what the h/w supports.
> > >  
> > > > +
> > > > +The pad configuration state nodes are placed under the pmc node and 
> > > > they
> > > > +are referred to by the pinctrl client device properties. For more  
> > >
> > > Another driver detail not relevant.
> > >  
> > > > +information see the examples presented later and  
> > >
> > > examples don't document bindings. The documentation should be complete
> > > without examples.
> > >  
> > > > +Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt.
> > > > +
> > > > +The values accepted by power-source property are
> > > > +TEGRA_IO_PAD_VOLTAGE_1V8 and TEGRA_IO_PAD_VOLTAGE_3V3, which are 
> > > > defined
> > > > +in dt-bindings/pinctrl/pinctrl-tegra-io-pad.h.  
> > >
> > > You need to list out what properties the child nodes can have.
> > >
> > > power-source needs a vendor prefix.  
> >
> > Isn't it a generic pinctrl property?  
> 
> I don't know offhand. Doesn't look like it if you have custom values.

It's listed under "Supported generic properties" in
pinctrl-bindings.txt. The convention seems to be not to add a vendor
prefix even though such custom macro values are used. The property is
currently used by qcom,pmic-gpio, qcom,pmic-mpp, and renesas,pfc-pinctrl.
I could not find a bindings document describing it with a vendor prefix.

 -Aapo


Re: [PATCH v3 5/7] dt-bindings: Add Tegra PMC pad configuration bindings

2018-07-17 Thread Aapo Vienamo
On Tue, 17 Jul 2018 08:22:07 -0600
Rob Herring  wrote:

> On Tue, Jul 17, 2018 at 6:23 AM Aapo Vienamo  wrote:
> >
> > On Mon, 16 Jul 2018 09:43:09 -0600
> > Rob Herring  wrote:
> >  
> > > On Thu, Jul 12, 2018 at 03:00:11PM +0300, Aapo Vienamo wrote:  
> > > > Document the pinctrl bindings used by the PMC driver for performing pad
> > > > configuration. Both nvidia,tegra186-pmc.txt and nvidia,tegra20-pmc.txt
> > > > are modified as they both cover SoC generations for which these bindings
> > > > apply.
> > > >
> > > > Add a header defining Tegra PMC pad voltage configurations.
> > > >
> > > > Signed-off-by: Aapo Vienamo 
> > > > Acked-by: Jon Hunter 
> > > > ---
> > > >  .../bindings/arm/tegra/nvidia,tegra186-pmc.txt | 84 
> > > > +++
> > > >  .../bindings/arm/tegra/nvidia,tegra20-pmc.txt  | 95 
> > > > ++
> > > >  include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h | 18 
> > > >  3 files changed, 197 insertions(+)
> > > >  create mode 100644 include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h
> > > >
> > > > diff --git 
> > > > a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt 
> > > > b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
> > > > index 5a3bf7c..9528f41 100644
> > > > --- 
> > > > a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
> > > > +++ 
> > > > b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
> > > > @@ -34,3 +34,87 @@ Board DTS:
> > > > pmc@c36 {
> > > > nvidia,invert-interrupt;
> > > > };
> > > > +
> > > > +== Pad Control Nodes ==
> > > > +
> > > > +The PMC can be used to set pad power state and voltage configuration.
> > > > +The pad configuration is done via the pinctrl framework. The driver
> > > > +implements power-source, low-power-enable, and low-power-disable 
> > > > pinconf
> > > > +pin configuration node properties. Each pinctrl pin corresponds to a
> > > > +single Tegra PMC pad. Thus, in the following sections of this document
> > > > +pin refers to the pinctrl frameworks notion of a Tegra PMC pad.  
> > >
> > > "pinctrl framework" is Linux specific and doesn't belong in the binding.
> > > Neither does what a driver supports. Describe what the h/w supports.
> > >  
> > > > +
> > > > +The pad configuration state nodes are placed under the pmc node and 
> > > > they
> > > > +are referred to by the pinctrl client device properties. For more  
> > >
> > > Another driver detail not relevant.
> > >  
> > > > +information see the examples presented later and  
> > >
> > > examples don't document bindings. The documentation should be complete
> > > without examples.
> > >  
> > > > +Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt.
> > > > +
> > > > +The values accepted by power-source property are
> > > > +TEGRA_IO_PAD_VOLTAGE_1V8 and TEGRA_IO_PAD_VOLTAGE_3V3, which are 
> > > > defined
> > > > +in dt-bindings/pinctrl/pinctrl-tegra-io-pad.h.  
> > >
> > > You need to list out what properties the child nodes can have.
> > >
> > > power-source needs a vendor prefix.  
> >
> > Isn't it a generic pinctrl property?  
> 
> I don't know offhand. Doesn't look like it if you have custom values.

It's listed under "Supported generic properties" in
pinctrl-bindings.txt. The convention seems to be not to add a vendor
prefix even though such custom macro values are used. The property is
currently used by qcom,pmic-gpio, qcom,pmic-mpp, and renesas,pfc-pinctrl.
I could not find a bindings document describing it with a vendor prefix.

 -Aapo


Re: [PATCH v3 5/7] dt-bindings: Add Tegra PMC pad configuration bindings

2018-07-17 Thread Rob Herring
On Tue, Jul 17, 2018 at 6:23 AM Aapo Vienamo  wrote:
>
> On Mon, 16 Jul 2018 09:43:09 -0600
> Rob Herring  wrote:
>
> > On Thu, Jul 12, 2018 at 03:00:11PM +0300, Aapo Vienamo wrote:
> > > Document the pinctrl bindings used by the PMC driver for performing pad
> > > configuration. Both nvidia,tegra186-pmc.txt and nvidia,tegra20-pmc.txt
> > > are modified as they both cover SoC generations for which these bindings
> > > apply.
> > >
> > > Add a header defining Tegra PMC pad voltage configurations.
> > >
> > > Signed-off-by: Aapo Vienamo 
> > > Acked-by: Jon Hunter 
> > > ---
> > >  .../bindings/arm/tegra/nvidia,tegra186-pmc.txt | 84 
> > > +++
> > >  .../bindings/arm/tegra/nvidia,tegra20-pmc.txt  | 95 
> > > ++
> > >  include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h | 18 
> > >  3 files changed, 197 insertions(+)
> > >  create mode 100644 include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h
> > >
> > > diff --git 
> > > a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt 
> > > b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
> > > index 5a3bf7c..9528f41 100644
> > > --- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
> > > +++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
> > > @@ -34,3 +34,87 @@ Board DTS:
> > > pmc@c36 {
> > > nvidia,invert-interrupt;
> > > };
> > > +
> > > +== Pad Control Nodes ==
> > > +
> > > +The PMC can be used to set pad power state and voltage configuration.
> > > +The pad configuration is done via the pinctrl framework. The driver
> > > +implements power-source, low-power-enable, and low-power-disable pinconf
> > > +pin configuration node properties. Each pinctrl pin corresponds to a
> > > +single Tegra PMC pad. Thus, in the following sections of this document
> > > +pin refers to the pinctrl frameworks notion of a Tegra PMC pad.
> >
> > "pinctrl framework" is Linux specific and doesn't belong in the binding.
> > Neither does what a driver supports. Describe what the h/w supports.
> >
> > > +
> > > +The pad configuration state nodes are placed under the pmc node and they
> > > +are referred to by the pinctrl client device properties. For more
> >
> > Another driver detail not relevant.
> >
> > > +information see the examples presented later and
> >
> > examples don't document bindings. The documentation should be complete
> > without examples.
> >
> > > +Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt.
> > > +
> > > +The values accepted by power-source property are
> > > +TEGRA_IO_PAD_VOLTAGE_1V8 and TEGRA_IO_PAD_VOLTAGE_3V3, which are defined
> > > +in dt-bindings/pinctrl/pinctrl-tegra-io-pad.h.
> >
> > You need to list out what properties the child nodes can have.
> >
> > power-source needs a vendor prefix.
>
> Isn't it a generic pinctrl property?

I don't know offhand. Doesn't look like it if you have custom values.

Rob


Re: [PATCH v3 5/7] dt-bindings: Add Tegra PMC pad configuration bindings

2018-07-17 Thread Rob Herring
On Tue, Jul 17, 2018 at 6:23 AM Aapo Vienamo  wrote:
>
> On Mon, 16 Jul 2018 09:43:09 -0600
> Rob Herring  wrote:
>
> > On Thu, Jul 12, 2018 at 03:00:11PM +0300, Aapo Vienamo wrote:
> > > Document the pinctrl bindings used by the PMC driver for performing pad
> > > configuration. Both nvidia,tegra186-pmc.txt and nvidia,tegra20-pmc.txt
> > > are modified as they both cover SoC generations for which these bindings
> > > apply.
> > >
> > > Add a header defining Tegra PMC pad voltage configurations.
> > >
> > > Signed-off-by: Aapo Vienamo 
> > > Acked-by: Jon Hunter 
> > > ---
> > >  .../bindings/arm/tegra/nvidia,tegra186-pmc.txt | 84 
> > > +++
> > >  .../bindings/arm/tegra/nvidia,tegra20-pmc.txt  | 95 
> > > ++
> > >  include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h | 18 
> > >  3 files changed, 197 insertions(+)
> > >  create mode 100644 include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h
> > >
> > > diff --git 
> > > a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt 
> > > b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
> > > index 5a3bf7c..9528f41 100644
> > > --- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
> > > +++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
> > > @@ -34,3 +34,87 @@ Board DTS:
> > > pmc@c36 {
> > > nvidia,invert-interrupt;
> > > };
> > > +
> > > +== Pad Control Nodes ==
> > > +
> > > +The PMC can be used to set pad power state and voltage configuration.
> > > +The pad configuration is done via the pinctrl framework. The driver
> > > +implements power-source, low-power-enable, and low-power-disable pinconf
> > > +pin configuration node properties. Each pinctrl pin corresponds to a
> > > +single Tegra PMC pad. Thus, in the following sections of this document
> > > +pin refers to the pinctrl frameworks notion of a Tegra PMC pad.
> >
> > "pinctrl framework" is Linux specific and doesn't belong in the binding.
> > Neither does what a driver supports. Describe what the h/w supports.
> >
> > > +
> > > +The pad configuration state nodes are placed under the pmc node and they
> > > +are referred to by the pinctrl client device properties. For more
> >
> > Another driver detail not relevant.
> >
> > > +information see the examples presented later and
> >
> > examples don't document bindings. The documentation should be complete
> > without examples.
> >
> > > +Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt.
> > > +
> > > +The values accepted by power-source property are
> > > +TEGRA_IO_PAD_VOLTAGE_1V8 and TEGRA_IO_PAD_VOLTAGE_3V3, which are defined
> > > +in dt-bindings/pinctrl/pinctrl-tegra-io-pad.h.
> >
> > You need to list out what properties the child nodes can have.
> >
> > power-source needs a vendor prefix.
>
> Isn't it a generic pinctrl property?

I don't know offhand. Doesn't look like it if you have custom values.

Rob


Re: [PATCH v3 5/7] dt-bindings: Add Tegra PMC pad configuration bindings

2018-07-17 Thread Aapo Vienamo
On Mon, 16 Jul 2018 09:43:09 -0600
Rob Herring  wrote:

> On Thu, Jul 12, 2018 at 03:00:11PM +0300, Aapo Vienamo wrote:
> > Document the pinctrl bindings used by the PMC driver for performing pad
> > configuration. Both nvidia,tegra186-pmc.txt and nvidia,tegra20-pmc.txt
> > are modified as they both cover SoC generations for which these bindings
> > apply.
> > 
> > Add a header defining Tegra PMC pad voltage configurations.
> > 
> > Signed-off-by: Aapo Vienamo 
> > Acked-by: Jon Hunter 
> > ---
> >  .../bindings/arm/tegra/nvidia,tegra186-pmc.txt | 84 +++
> >  .../bindings/arm/tegra/nvidia,tegra20-pmc.txt  | 95 
> > ++
> >  include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h | 18 
> >  3 files changed, 197 insertions(+)
> >  create mode 100644 include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h
> > 
> > diff --git 
> > a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt 
> > b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
> > index 5a3bf7c..9528f41 100644
> > --- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
> > +++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
> > @@ -34,3 +34,87 @@ Board DTS:
> > pmc@c36 {
> > nvidia,invert-interrupt;
> > };
> > +
> > +== Pad Control Nodes ==
> > +
> > +The PMC can be used to set pad power state and voltage configuration.
> > +The pad configuration is done via the pinctrl framework. The driver
> > +implements power-source, low-power-enable, and low-power-disable pinconf
> > +pin configuration node properties. Each pinctrl pin corresponds to a
> > +single Tegra PMC pad. Thus, in the following sections of this document
> > +pin refers to the pinctrl frameworks notion of a Tegra PMC pad.  
> 
> "pinctrl framework" is Linux specific and doesn't belong in the binding. 
> Neither does what a driver supports. Describe what the h/w supports.
> 
> > +
> > +The pad configuration state nodes are placed under the pmc node and they
> > +are referred to by the pinctrl client device properties. For more  
> 
> Another driver detail not relevant.
> 
> > +information see the examples presented later and  
> 
> examples don't document bindings. The documentation should be complete 
> without examples.
> 
> > +Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt.
> > +
> > +The values accepted by power-source property are
> > +TEGRA_IO_PAD_VOLTAGE_1V8 and TEGRA_IO_PAD_VOLTAGE_3V3, which are defined
> > +in dt-bindings/pinctrl/pinctrl-tegra-io-pad.h.  
> 
> You need to list out what properties the child nodes can have.
> 
> power-source needs a vendor prefix.

Isn't it a generic pinctrl property?

> > +
> > +Following pinctrl pin name strings are present on Tegra186:
> > +csia   csibdsi mipi-bias
> > +pex-clk-bias   pex-clk3pex-clk2pex-clk1
> > +usb0   usb1usb2usb-bias
> > +uart   audio   hsicdbg
> > +hdmi-dp0   hdmi-dp1pex-cntrl   sdmmc2-hv
> > +sdmmc4 cam dsibdsic
> > +dsid   csiccsidcsie
> > +dsif   spi ufs dmic-hv
> > +edpsdmmc1-hv   sdmmc3-hv   conn
> > +audio-hv   ao-hv
> > +
> > +All of the listed Tegra186 pins except ao-hv support the
> > +low-power-enable and low-power-disable properties. The power-source
> > +property is supported following Tegra210 pins: sdmmc2-hv, dmic-hv,
> > +sdmmc1-hv, sdmmc3-hv, audio-hv, ao-hv.
> > +
> > +Pad configuration state example:
> > +   pmc: pmc@7000e400 {
> > +   compatible = "nvidia,tegra186-pmc";
> > +   reg = <0 0x0c36 0 0x1>,
> > + <0 0x0c37 0 0x1>,
> > + <0 0x0c38 0 0x1>,
> > + <0 0x0c39 0 0x1>;
> > +   reg-names = "pmc", "wake", "aotag", "scratch";
> > +
> > +   ...
> > +
> > +   sdmmc1_3v3: sdmmc1-3v3 {
> > +   pins = "sdmmc1-hv";
> > +   power-source = ;
> > +   };
> > +
> > +   sdmmc1_1v8: sdmmc1-1v8 {
> > +   pins = "sdmmc1-hv";
> > +   power-source = ;
> > +   };
> > +
> > +   hdmi_off: hdmi-off {
> > +   pins = "hdmi";
> > +   low-power-enable;
> > +   }
> > +
> > +   hdmi_on: hdmi-on {
> > +   pins = "hdmi";
> > +   low-power-disable;
> > +   }
> > +   };
> > +
> > +Pinctrl client example:
> > +   sdmmc1: sdhci@340 {
> > +   ...
> > +   pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";
> > +   pinctrl-0 = <_3v3>;
> > +   pinctrl-1 = <_1v8>;
> > +   };
> > +
> > +   ...
> > +
> > +   sor0: sor@1554 {
> > +   ...
> > +   pinctrl-0 = <_off>;
> > +   

Re: [PATCH v3 5/7] dt-bindings: Add Tegra PMC pad configuration bindings

2018-07-17 Thread Aapo Vienamo
On Mon, 16 Jul 2018 09:43:09 -0600
Rob Herring  wrote:

> On Thu, Jul 12, 2018 at 03:00:11PM +0300, Aapo Vienamo wrote:
> > Document the pinctrl bindings used by the PMC driver for performing pad
> > configuration. Both nvidia,tegra186-pmc.txt and nvidia,tegra20-pmc.txt
> > are modified as they both cover SoC generations for which these bindings
> > apply.
> > 
> > Add a header defining Tegra PMC pad voltage configurations.
> > 
> > Signed-off-by: Aapo Vienamo 
> > Acked-by: Jon Hunter 
> > ---
> >  .../bindings/arm/tegra/nvidia,tegra186-pmc.txt | 84 +++
> >  .../bindings/arm/tegra/nvidia,tegra20-pmc.txt  | 95 
> > ++
> >  include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h | 18 
> >  3 files changed, 197 insertions(+)
> >  create mode 100644 include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h
> > 
> > diff --git 
> > a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt 
> > b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
> > index 5a3bf7c..9528f41 100644
> > --- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
> > +++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
> > @@ -34,3 +34,87 @@ Board DTS:
> > pmc@c36 {
> > nvidia,invert-interrupt;
> > };
> > +
> > +== Pad Control Nodes ==
> > +
> > +The PMC can be used to set pad power state and voltage configuration.
> > +The pad configuration is done via the pinctrl framework. The driver
> > +implements power-source, low-power-enable, and low-power-disable pinconf
> > +pin configuration node properties. Each pinctrl pin corresponds to a
> > +single Tegra PMC pad. Thus, in the following sections of this document
> > +pin refers to the pinctrl frameworks notion of a Tegra PMC pad.  
> 
> "pinctrl framework" is Linux specific and doesn't belong in the binding. 
> Neither does what a driver supports. Describe what the h/w supports.
> 
> > +
> > +The pad configuration state nodes are placed under the pmc node and they
> > +are referred to by the pinctrl client device properties. For more  
> 
> Another driver detail not relevant.
> 
> > +information see the examples presented later and  
> 
> examples don't document bindings. The documentation should be complete 
> without examples.
> 
> > +Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt.
> > +
> > +The values accepted by power-source property are
> > +TEGRA_IO_PAD_VOLTAGE_1V8 and TEGRA_IO_PAD_VOLTAGE_3V3, which are defined
> > +in dt-bindings/pinctrl/pinctrl-tegra-io-pad.h.  
> 
> You need to list out what properties the child nodes can have.
> 
> power-source needs a vendor prefix.

Isn't it a generic pinctrl property?

> > +
> > +Following pinctrl pin name strings are present on Tegra186:
> > +csia   csibdsi mipi-bias
> > +pex-clk-bias   pex-clk3pex-clk2pex-clk1
> > +usb0   usb1usb2usb-bias
> > +uart   audio   hsicdbg
> > +hdmi-dp0   hdmi-dp1pex-cntrl   sdmmc2-hv
> > +sdmmc4 cam dsibdsic
> > +dsid   csiccsidcsie
> > +dsif   spi ufs dmic-hv
> > +edpsdmmc1-hv   sdmmc3-hv   conn
> > +audio-hv   ao-hv
> > +
> > +All of the listed Tegra186 pins except ao-hv support the
> > +low-power-enable and low-power-disable properties. The power-source
> > +property is supported following Tegra210 pins: sdmmc2-hv, dmic-hv,
> > +sdmmc1-hv, sdmmc3-hv, audio-hv, ao-hv.
> > +
> > +Pad configuration state example:
> > +   pmc: pmc@7000e400 {
> > +   compatible = "nvidia,tegra186-pmc";
> > +   reg = <0 0x0c36 0 0x1>,
> > + <0 0x0c37 0 0x1>,
> > + <0 0x0c38 0 0x1>,
> > + <0 0x0c39 0 0x1>;
> > +   reg-names = "pmc", "wake", "aotag", "scratch";
> > +
> > +   ...
> > +
> > +   sdmmc1_3v3: sdmmc1-3v3 {
> > +   pins = "sdmmc1-hv";
> > +   power-source = ;
> > +   };
> > +
> > +   sdmmc1_1v8: sdmmc1-1v8 {
> > +   pins = "sdmmc1-hv";
> > +   power-source = ;
> > +   };
> > +
> > +   hdmi_off: hdmi-off {
> > +   pins = "hdmi";
> > +   low-power-enable;
> > +   }
> > +
> > +   hdmi_on: hdmi-on {
> > +   pins = "hdmi";
> > +   low-power-disable;
> > +   }
> > +   };
> > +
> > +Pinctrl client example:
> > +   sdmmc1: sdhci@340 {
> > +   ...
> > +   pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";
> > +   pinctrl-0 = <_3v3>;
> > +   pinctrl-1 = <_1v8>;
> > +   };
> > +
> > +   ...
> > +
> > +   sor0: sor@1554 {
> > +   ...
> > +   pinctrl-0 = <_off>;
> > +   

Re: [PATCH v3 5/7] dt-bindings: Add Tegra PMC pad configuration bindings

2018-07-16 Thread Rob Herring
On Thu, Jul 12, 2018 at 03:00:11PM +0300, Aapo Vienamo wrote:
> Document the pinctrl bindings used by the PMC driver for performing pad
> configuration. Both nvidia,tegra186-pmc.txt and nvidia,tegra20-pmc.txt
> are modified as they both cover SoC generations for which these bindings
> apply.
> 
> Add a header defining Tegra PMC pad voltage configurations.
> 
> Signed-off-by: Aapo Vienamo 
> Acked-by: Jon Hunter 
> ---
>  .../bindings/arm/tegra/nvidia,tegra186-pmc.txt | 84 +++
>  .../bindings/arm/tegra/nvidia,tegra20-pmc.txt  | 95 
> ++
>  include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h | 18 
>  3 files changed, 197 insertions(+)
>  create mode 100644 include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h
> 
> diff --git 
> a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt 
> b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
> index 5a3bf7c..9528f41 100644
> --- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
> +++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
> @@ -34,3 +34,87 @@ Board DTS:
>   pmc@c36 {
>   nvidia,invert-interrupt;
>   };
> +
> +== Pad Control Nodes ==
> +
> +The PMC can be used to set pad power state and voltage configuration.
> +The pad configuration is done via the pinctrl framework. The driver
> +implements power-source, low-power-enable, and low-power-disable pinconf
> +pin configuration node properties. Each pinctrl pin corresponds to a
> +single Tegra PMC pad. Thus, in the following sections of this document
> +pin refers to the pinctrl frameworks notion of a Tegra PMC pad.

"pinctrl framework" is Linux specific and doesn't belong in the binding. 
Neither does what a driver supports. Describe what the h/w supports.

> +
> +The pad configuration state nodes are placed under the pmc node and they
> +are referred to by the pinctrl client device properties. For more

Another driver detail not relevant.

> +information see the examples presented later and

examples don't document bindings. The documentation should be complete 
without examples.

> +Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt.
> +
> +The values accepted by power-source property are
> +TEGRA_IO_PAD_VOLTAGE_1V8 and TEGRA_IO_PAD_VOLTAGE_3V3, which are defined
> +in dt-bindings/pinctrl/pinctrl-tegra-io-pad.h.

You need to list out what properties the child nodes can have.

power-source needs a vendor prefix.

> +
> +Following pinctrl pin name strings are present on Tegra186:
> +csia csibdsi mipi-bias
> +pex-clk-bias pex-clk3pex-clk2pex-clk1
> +usb0 usb1usb2usb-bias
> +uart audio   hsicdbg
> +hdmi-dp0 hdmi-dp1pex-cntrl   sdmmc2-hv
> +sdmmc4   cam dsibdsic
> +dsid csiccsidcsie
> +dsif spi ufs dmic-hv
> +edp  sdmmc1-hv   sdmmc3-hv   conn
> +audio-hv ao-hv
> +
> +All of the listed Tegra186 pins except ao-hv support the
> +low-power-enable and low-power-disable properties. The power-source
> +property is supported following Tegra210 pins: sdmmc2-hv, dmic-hv,
> +sdmmc1-hv, sdmmc3-hv, audio-hv, ao-hv.
> +
> +Pad configuration state example:
> + pmc: pmc@7000e400 {
> + compatible = "nvidia,tegra186-pmc";
> + reg = <0 0x0c36 0 0x1>,
> +   <0 0x0c37 0 0x1>,
> +   <0 0x0c38 0 0x1>,
> +   <0 0x0c39 0 0x1>;
> + reg-names = "pmc", "wake", "aotag", "scratch";
> +
> + ...
> +
> + sdmmc1_3v3: sdmmc1-3v3 {
> + pins = "sdmmc1-hv";
> + power-source = ;
> + };
> +
> + sdmmc1_1v8: sdmmc1-1v8 {
> + pins = "sdmmc1-hv";
> + power-source = ;
> + };
> +
> + hdmi_off: hdmi-off {
> + pins = "hdmi";
> + low-power-enable;
> + }
> +
> + hdmi_on: hdmi-on {
> + pins = "hdmi";
> + low-power-disable;
> + }
> + };
> +
> +Pinctrl client example:
> + sdmmc1: sdhci@340 {
> + ...
> + pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";
> + pinctrl-0 = <_3v3>;
> + pinctrl-1 = <_1v8>;
> + };
> +
> + ...
> +
> + sor0: sor@1554 {
> + ...
> + pinctrl-0 = <_off>;
> + pinctrl-1 = <_on>;
> + pinctrl-names = "hdmi-on", "hdmi-off";
> + };
> diff --git 
> a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt 
> b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt
> index a74b37b..d50a505 100644
> --- 

Re: [PATCH v3 5/7] dt-bindings: Add Tegra PMC pad configuration bindings

2018-07-16 Thread Rob Herring
On Thu, Jul 12, 2018 at 03:00:11PM +0300, Aapo Vienamo wrote:
> Document the pinctrl bindings used by the PMC driver for performing pad
> configuration. Both nvidia,tegra186-pmc.txt and nvidia,tegra20-pmc.txt
> are modified as they both cover SoC generations for which these bindings
> apply.
> 
> Add a header defining Tegra PMC pad voltage configurations.
> 
> Signed-off-by: Aapo Vienamo 
> Acked-by: Jon Hunter 
> ---
>  .../bindings/arm/tegra/nvidia,tegra186-pmc.txt | 84 +++
>  .../bindings/arm/tegra/nvidia,tegra20-pmc.txt  | 95 
> ++
>  include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h | 18 
>  3 files changed, 197 insertions(+)
>  create mode 100644 include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h
> 
> diff --git 
> a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt 
> b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
> index 5a3bf7c..9528f41 100644
> --- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
> +++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
> @@ -34,3 +34,87 @@ Board DTS:
>   pmc@c36 {
>   nvidia,invert-interrupt;
>   };
> +
> +== Pad Control Nodes ==
> +
> +The PMC can be used to set pad power state and voltage configuration.
> +The pad configuration is done via the pinctrl framework. The driver
> +implements power-source, low-power-enable, and low-power-disable pinconf
> +pin configuration node properties. Each pinctrl pin corresponds to a
> +single Tegra PMC pad. Thus, in the following sections of this document
> +pin refers to the pinctrl frameworks notion of a Tegra PMC pad.

"pinctrl framework" is Linux specific and doesn't belong in the binding. 
Neither does what a driver supports. Describe what the h/w supports.

> +
> +The pad configuration state nodes are placed under the pmc node and they
> +are referred to by the pinctrl client device properties. For more

Another driver detail not relevant.

> +information see the examples presented later and

examples don't document bindings. The documentation should be complete 
without examples.

> +Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt.
> +
> +The values accepted by power-source property are
> +TEGRA_IO_PAD_VOLTAGE_1V8 and TEGRA_IO_PAD_VOLTAGE_3V3, which are defined
> +in dt-bindings/pinctrl/pinctrl-tegra-io-pad.h.

You need to list out what properties the child nodes can have.

power-source needs a vendor prefix.

> +
> +Following pinctrl pin name strings are present on Tegra186:
> +csia csibdsi mipi-bias
> +pex-clk-bias pex-clk3pex-clk2pex-clk1
> +usb0 usb1usb2usb-bias
> +uart audio   hsicdbg
> +hdmi-dp0 hdmi-dp1pex-cntrl   sdmmc2-hv
> +sdmmc4   cam dsibdsic
> +dsid csiccsidcsie
> +dsif spi ufs dmic-hv
> +edp  sdmmc1-hv   sdmmc3-hv   conn
> +audio-hv ao-hv
> +
> +All of the listed Tegra186 pins except ao-hv support the
> +low-power-enable and low-power-disable properties. The power-source
> +property is supported following Tegra210 pins: sdmmc2-hv, dmic-hv,
> +sdmmc1-hv, sdmmc3-hv, audio-hv, ao-hv.
> +
> +Pad configuration state example:
> + pmc: pmc@7000e400 {
> + compatible = "nvidia,tegra186-pmc";
> + reg = <0 0x0c36 0 0x1>,
> +   <0 0x0c37 0 0x1>,
> +   <0 0x0c38 0 0x1>,
> +   <0 0x0c39 0 0x1>;
> + reg-names = "pmc", "wake", "aotag", "scratch";
> +
> + ...
> +
> + sdmmc1_3v3: sdmmc1-3v3 {
> + pins = "sdmmc1-hv";
> + power-source = ;
> + };
> +
> + sdmmc1_1v8: sdmmc1-1v8 {
> + pins = "sdmmc1-hv";
> + power-source = ;
> + };
> +
> + hdmi_off: hdmi-off {
> + pins = "hdmi";
> + low-power-enable;
> + }
> +
> + hdmi_on: hdmi-on {
> + pins = "hdmi";
> + low-power-disable;
> + }
> + };
> +
> +Pinctrl client example:
> + sdmmc1: sdhci@340 {
> + ...
> + pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";
> + pinctrl-0 = <_3v3>;
> + pinctrl-1 = <_1v8>;
> + };
> +
> + ...
> +
> + sor0: sor@1554 {
> + ...
> + pinctrl-0 = <_off>;
> + pinctrl-1 = <_on>;
> + pinctrl-names = "hdmi-on", "hdmi-off";
> + };
> diff --git 
> a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt 
> b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt
> index a74b37b..d50a505 100644
> --- 

[PATCH v3 5/7] dt-bindings: Add Tegra PMC pad configuration bindings

2018-07-12 Thread Aapo Vienamo
Document the pinctrl bindings used by the PMC driver for performing pad
configuration. Both nvidia,tegra186-pmc.txt and nvidia,tegra20-pmc.txt
are modified as they both cover SoC generations for which these bindings
apply.

Add a header defining Tegra PMC pad voltage configurations.

Signed-off-by: Aapo Vienamo 
Acked-by: Jon Hunter 
---
 .../bindings/arm/tegra/nvidia,tegra186-pmc.txt | 84 +++
 .../bindings/arm/tegra/nvidia,tegra20-pmc.txt  | 95 ++
 include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h | 18 
 3 files changed, 197 insertions(+)
 create mode 100644 include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h

diff --git 
a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt 
b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
index 5a3bf7c..9528f41 100644
--- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
+++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
@@ -34,3 +34,87 @@ Board DTS:
pmc@c36 {
nvidia,invert-interrupt;
};
+
+== Pad Control Nodes ==
+
+The PMC can be used to set pad power state and voltage configuration.
+The pad configuration is done via the pinctrl framework. The driver
+implements power-source, low-power-enable, and low-power-disable pinconf
+pin configuration node properties. Each pinctrl pin corresponds to a
+single Tegra PMC pad. Thus, in the following sections of this document
+pin refers to the pinctrl frameworks notion of a Tegra PMC pad.
+
+The pad configuration state nodes are placed under the pmc node and they
+are referred to by the pinctrl client device properties. For more
+information see the examples presented later and
+Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt.
+
+The values accepted by power-source property are
+TEGRA_IO_PAD_VOLTAGE_1V8 and TEGRA_IO_PAD_VOLTAGE_3V3, which are defined
+in dt-bindings/pinctrl/pinctrl-tegra-io-pad.h.
+
+Following pinctrl pin name strings are present on Tegra186:
+csia   csibdsi mipi-bias
+pex-clk-bias   pex-clk3pex-clk2pex-clk1
+usb0   usb1usb2usb-bias
+uart   audio   hsicdbg
+hdmi-dp0   hdmi-dp1pex-cntrl   sdmmc2-hv
+sdmmc4 cam dsibdsic
+dsid   csiccsidcsie
+dsif   spi ufs dmic-hv
+edpsdmmc1-hv   sdmmc3-hv   conn
+audio-hv   ao-hv
+
+All of the listed Tegra186 pins except ao-hv support the
+low-power-enable and low-power-disable properties. The power-source
+property is supported following Tegra210 pins: sdmmc2-hv, dmic-hv,
+sdmmc1-hv, sdmmc3-hv, audio-hv, ao-hv.
+
+Pad configuration state example:
+   pmc: pmc@7000e400 {
+   compatible = "nvidia,tegra186-pmc";
+   reg = <0 0x0c36 0 0x1>,
+ <0 0x0c37 0 0x1>,
+ <0 0x0c38 0 0x1>,
+ <0 0x0c39 0 0x1>;
+   reg-names = "pmc", "wake", "aotag", "scratch";
+
+   ...
+
+   sdmmc1_3v3: sdmmc1-3v3 {
+   pins = "sdmmc1-hv";
+   power-source = ;
+   };
+
+   sdmmc1_1v8: sdmmc1-1v8 {
+   pins = "sdmmc1-hv";
+   power-source = ;
+   };
+
+   hdmi_off: hdmi-off {
+   pins = "hdmi";
+   low-power-enable;
+   }
+
+   hdmi_on: hdmi-on {
+   pins = "hdmi";
+   low-power-disable;
+   }
+   };
+
+Pinctrl client example:
+   sdmmc1: sdhci@340 {
+   ...
+   pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";
+   pinctrl-0 = <_3v3>;
+   pinctrl-1 = <_1v8>;
+   };
+
+   ...
+
+   sor0: sor@1554 {
+   ...
+   pinctrl-0 = <_off>;
+   pinctrl-1 = <_on>;
+   pinctrl-names = "hdmi-on", "hdmi-off";
+   };
diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt 
b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt
index a74b37b..d50a505 100644
--- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt
+++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt
@@ -195,3 +195,98 @@ Example:
power-domains = <_audio>;
...
};
+
+== Pad Control Nodes ==
+
+The PMC can be used to set pad power state and voltage configuration.
+This functionality is present on SoCs from Tegra124 onwards. The pad
+configuration is done via the pinctrl framework. The driver implements
+power-source, low-power-enable, and low-power-disable pinconf pin
+configuration node properties. Each pinctrl pin corresponds 

[PATCH v3 5/7] dt-bindings: Add Tegra PMC pad configuration bindings

2018-07-12 Thread Aapo Vienamo
Document the pinctrl bindings used by the PMC driver for performing pad
configuration. Both nvidia,tegra186-pmc.txt and nvidia,tegra20-pmc.txt
are modified as they both cover SoC generations for which these bindings
apply.

Add a header defining Tegra PMC pad voltage configurations.

Signed-off-by: Aapo Vienamo 
Acked-by: Jon Hunter 
---
 .../bindings/arm/tegra/nvidia,tegra186-pmc.txt | 84 +++
 .../bindings/arm/tegra/nvidia,tegra20-pmc.txt  | 95 ++
 include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h | 18 
 3 files changed, 197 insertions(+)
 create mode 100644 include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h

diff --git 
a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt 
b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
index 5a3bf7c..9528f41 100644
--- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
+++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
@@ -34,3 +34,87 @@ Board DTS:
pmc@c36 {
nvidia,invert-interrupt;
};
+
+== Pad Control Nodes ==
+
+The PMC can be used to set pad power state and voltage configuration.
+The pad configuration is done via the pinctrl framework. The driver
+implements power-source, low-power-enable, and low-power-disable pinconf
+pin configuration node properties. Each pinctrl pin corresponds to a
+single Tegra PMC pad. Thus, in the following sections of this document
+pin refers to the pinctrl frameworks notion of a Tegra PMC pad.
+
+The pad configuration state nodes are placed under the pmc node and they
+are referred to by the pinctrl client device properties. For more
+information see the examples presented later and
+Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt.
+
+The values accepted by power-source property are
+TEGRA_IO_PAD_VOLTAGE_1V8 and TEGRA_IO_PAD_VOLTAGE_3V3, which are defined
+in dt-bindings/pinctrl/pinctrl-tegra-io-pad.h.
+
+Following pinctrl pin name strings are present on Tegra186:
+csia   csibdsi mipi-bias
+pex-clk-bias   pex-clk3pex-clk2pex-clk1
+usb0   usb1usb2usb-bias
+uart   audio   hsicdbg
+hdmi-dp0   hdmi-dp1pex-cntrl   sdmmc2-hv
+sdmmc4 cam dsibdsic
+dsid   csiccsidcsie
+dsif   spi ufs dmic-hv
+edpsdmmc1-hv   sdmmc3-hv   conn
+audio-hv   ao-hv
+
+All of the listed Tegra186 pins except ao-hv support the
+low-power-enable and low-power-disable properties. The power-source
+property is supported following Tegra210 pins: sdmmc2-hv, dmic-hv,
+sdmmc1-hv, sdmmc3-hv, audio-hv, ao-hv.
+
+Pad configuration state example:
+   pmc: pmc@7000e400 {
+   compatible = "nvidia,tegra186-pmc";
+   reg = <0 0x0c36 0 0x1>,
+ <0 0x0c37 0 0x1>,
+ <0 0x0c38 0 0x1>,
+ <0 0x0c39 0 0x1>;
+   reg-names = "pmc", "wake", "aotag", "scratch";
+
+   ...
+
+   sdmmc1_3v3: sdmmc1-3v3 {
+   pins = "sdmmc1-hv";
+   power-source = ;
+   };
+
+   sdmmc1_1v8: sdmmc1-1v8 {
+   pins = "sdmmc1-hv";
+   power-source = ;
+   };
+
+   hdmi_off: hdmi-off {
+   pins = "hdmi";
+   low-power-enable;
+   }
+
+   hdmi_on: hdmi-on {
+   pins = "hdmi";
+   low-power-disable;
+   }
+   };
+
+Pinctrl client example:
+   sdmmc1: sdhci@340 {
+   ...
+   pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";
+   pinctrl-0 = <_3v3>;
+   pinctrl-1 = <_1v8>;
+   };
+
+   ...
+
+   sor0: sor@1554 {
+   ...
+   pinctrl-0 = <_off>;
+   pinctrl-1 = <_on>;
+   pinctrl-names = "hdmi-on", "hdmi-off";
+   };
diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt 
b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt
index a74b37b..d50a505 100644
--- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt
+++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt
@@ -195,3 +195,98 @@ Example:
power-domains = <_audio>;
...
};
+
+== Pad Control Nodes ==
+
+The PMC can be used to set pad power state and voltage configuration.
+This functionality is present on SoCs from Tegra124 onwards. The pad
+configuration is done via the pinctrl framework. The driver implements
+power-source, low-power-enable, and low-power-disable pinconf pin
+configuration node properties. Each pinctrl pin corresponds