RE: [PATCH 0/9] dt-bindings: Firmware node binding for ZynqMP core

2018-12-06 Thread Jolly Shah
Hi Rob,

> -Original Message-
> From: Rob Herring [mailto:r...@kernel.org]
> Sent: Wednesday, December 05, 2018 2:21 PM
> To: Jolly Shah 
> Cc: mark.rutl...@arm.com; devicet...@vger.kernel.org; Nava kishore Manne
> ; linux-kernel@vger.kernel.org; Rajan Vaja
> ; Michal Simek ; linux-arm-
> ker...@lists.infradead.org
> Subject: Re: [PATCH 0/9] dt-bindings: Firmware node binding for ZynqMP core
> 
> On Wed, Dec 05, 2018 at 08:29:36PM +, Jolly Shah wrote:
> > Hi Rob,
> >
> > Thanks for the review. Please find my responses inline.
> 
> You need to fix your mail client to wrap lines.

Thanks I will.

> 
> > Thanks,
> > Jolly Shah
> >
> > > -Original Message-
> > > From: Rob Herring [mailto:r...@kernel.org]
> > > Sent: Tuesday, December 04, 2018 2:06 PM
> > > To: Jolly Shah 
> > > Cc: mark.rutl...@arm.com; Michal Simek ; Rajan Vaja
> > > ; Nava kishore Manne ; linux-
> arm-
> > > ker...@lists.infradead.org; linux-kernel@vger.kernel.org;
> > > devicet...@vger.kernel.org; Jolly Shah 
> > > Subject: Re: [PATCH 0/9] dt-bindings: Firmware node binding for ZynqMP
> core
> > >
> > > On Fri, Nov 16, 2018 at 03:56:50PM -0800, Jolly Shah wrote:
> > > > Base firmware node and clock child node binding are part of mainline
> kernel.
> > > This patchset adds documentation to describe rest of the firmware child
> node
> > > bindings.
> > > > Complete firmware DT node example is shown below for ease of
> > > understanding:
> > >
> > > Shouldn't there be a fpga mgr node too? Called pcap IIRC.
> > >
> > [Jolly] As you suggested, we only added child nodes if the
> > sub-functions have their own resources (clks, irqs, etc.). FPGA doesn't
> > have any resources so not added . Firmware driver would still register
> > it as mfd device to instantiate the driver.
> 
> Okay, but won't their need to be child devices for

There are no fpga child devices. Should it be moved out?

> 
> 
> >
> > > >
> > > > firmware {
> > > > zynqmp_firmware: zynqmp-firmware {
> > > > compatible = "xlnx,zynqmp-firmware";
> > > > method = "smc";
> > > > #power-domain-cells = <1>;
> > > > #reset-cells = <1>;
> > > >
> > > > zynqmp_clk: clock-controller {
> > > > #clock-cells = <1>;
> > > > compatible = "xlnx,zynqmp-clk";
> > > > clocks = <_ref_clk>, <_clk>,
> > > <_alt_ref_clk>, <_ref_clk>, <_crx_ref_clk>;
> > > > clock-names = "pss_ref_clk", "video_clk",
> > > "pss_alt_ref_clk","aux_ref_clk", "gt_crx_ref_clk";
> > > > };
> > > >
> > > > zynqmp_power: zynqmp-power {
> > > > compatible = "xlnx,zynqmp-power";
> > > > interrupts = <0 35 4>;
> > > > };
> > > >
> > > > nvmem_firmware {
> > > > compatible = "xlnx,zynqmp-nvmem-fw";
> > > > #address-cells = <1>;
> > > > #size-cells = <1>;
> > > >
> > > > /* Data cells */
> > > > soc_revision: soc_revision {
> > > > reg = <0x0 0x4>;
> > > > };
> > > > };
> > > >
> > > > afi0: afi0 {
> > > > compatible = "xlnx,afi-fpga";
> > > > config-afi = <0 2>, <1 1>, <2 1>;
> > > > };
> > > >
> > > > qspi: spi@ff0f {
> > >
> > > Why is this under firmware node?
> > [Jolly] Qspi is a user of eemi API provided by firmware node to
> > perform privileged register writes. Alternatively, we can keep such
> > user nodes outside of firmware node and keep nodes which firmware is
> > provider for like clock, reset, pins and power.
> > Please suggest.
> 
> Child nodes of the firmware should be providers, not consumers (of the
&

RE: [PATCH 0/9] dt-bindings: Firmware node binding for ZynqMP core

2018-12-06 Thread Jolly Shah
Hi Rob,

> -Original Message-
> From: Rob Herring [mailto:r...@kernel.org]
> Sent: Wednesday, December 05, 2018 2:21 PM
> To: Jolly Shah 
> Cc: mark.rutl...@arm.com; devicet...@vger.kernel.org; Nava kishore Manne
> ; linux-kernel@vger.kernel.org; Rajan Vaja
> ; Michal Simek ; linux-arm-
> ker...@lists.infradead.org
> Subject: Re: [PATCH 0/9] dt-bindings: Firmware node binding for ZynqMP core
> 
> On Wed, Dec 05, 2018 at 08:29:36PM +, Jolly Shah wrote:
> > Hi Rob,
> >
> > Thanks for the review. Please find my responses inline.
> 
> You need to fix your mail client to wrap lines.

Thanks I will.

> 
> > Thanks,
> > Jolly Shah
> >
> > > -Original Message-
> > > From: Rob Herring [mailto:r...@kernel.org]
> > > Sent: Tuesday, December 04, 2018 2:06 PM
> > > To: Jolly Shah 
> > > Cc: mark.rutl...@arm.com; Michal Simek ; Rajan Vaja
> > > ; Nava kishore Manne ; linux-
> arm-
> > > ker...@lists.infradead.org; linux-kernel@vger.kernel.org;
> > > devicet...@vger.kernel.org; Jolly Shah 
> > > Subject: Re: [PATCH 0/9] dt-bindings: Firmware node binding for ZynqMP
> core
> > >
> > > On Fri, Nov 16, 2018 at 03:56:50PM -0800, Jolly Shah wrote:
> > > > Base firmware node and clock child node binding are part of mainline
> kernel.
> > > This patchset adds documentation to describe rest of the firmware child
> node
> > > bindings.
> > > > Complete firmware DT node example is shown below for ease of
> > > understanding:
> > >
> > > Shouldn't there be a fpga mgr node too? Called pcap IIRC.
> > >
> > [Jolly] As you suggested, we only added child nodes if the
> > sub-functions have their own resources (clks, irqs, etc.). FPGA doesn't
> > have any resources so not added . Firmware driver would still register
> > it as mfd device to instantiate the driver.
> 
> Okay, but won't their need to be child devices for

There are no fpga child devices. Should it be moved out?

> 
> 
> >
> > > >
> > > > firmware {
> > > > zynqmp_firmware: zynqmp-firmware {
> > > > compatible = "xlnx,zynqmp-firmware";
> > > > method = "smc";
> > > > #power-domain-cells = <1>;
> > > > #reset-cells = <1>;
> > > >
> > > > zynqmp_clk: clock-controller {
> > > > #clock-cells = <1>;
> > > > compatible = "xlnx,zynqmp-clk";
> > > > clocks = <_ref_clk>, <_clk>,
> > > <_alt_ref_clk>, <_ref_clk>, <_crx_ref_clk>;
> > > > clock-names = "pss_ref_clk", "video_clk",
> > > "pss_alt_ref_clk","aux_ref_clk", "gt_crx_ref_clk";
> > > > };
> > > >
> > > > zynqmp_power: zynqmp-power {
> > > > compatible = "xlnx,zynqmp-power";
> > > > interrupts = <0 35 4>;
> > > > };
> > > >
> > > > nvmem_firmware {
> > > > compatible = "xlnx,zynqmp-nvmem-fw";
> > > > #address-cells = <1>;
> > > > #size-cells = <1>;
> > > >
> > > > /* Data cells */
> > > > soc_revision: soc_revision {
> > > > reg = <0x0 0x4>;
> > > > };
> > > > };
> > > >
> > > > afi0: afi0 {
> > > > compatible = "xlnx,afi-fpga";
> > > > config-afi = <0 2>, <1 1>, <2 1>;
> > > > };
> > > >
> > > > qspi: spi@ff0f {
> > >
> > > Why is this under firmware node?
> > [Jolly] Qspi is a user of eemi API provided by firmware node to
> > perform privileged register writes. Alternatively, we can keep such
> > user nodes outside of firmware node and keep nodes which firmware is
> > provider for like clock, reset, pins and power.
> > Please suggest.
> 
> Child nodes of the firmware should be providers, not consumers (of the
&

Re: [PATCH 0/9] dt-bindings: Firmware node binding for ZynqMP core

2018-12-05 Thread Rob Herring
On Wed, Dec 05, 2018 at 08:29:36PM +, Jolly Shah wrote:
> Hi Rob,
> 
> Thanks for the review. Please find my responses inline.

You need to fix your mail client to wrap lines.
 
> Thanks,
> Jolly Shah
> 
> > -Original Message-
> > From: Rob Herring [mailto:r...@kernel.org]
> > Sent: Tuesday, December 04, 2018 2:06 PM
> > To: Jolly Shah 
> > Cc: mark.rutl...@arm.com; Michal Simek ; Rajan Vaja
> > ; Nava kishore Manne ; linux-arm-
> > ker...@lists.infradead.org; linux-kernel@vger.kernel.org;
> > devicet...@vger.kernel.org; Jolly Shah 
> > Subject: Re: [PATCH 0/9] dt-bindings: Firmware node binding for ZynqMP core
> > 
> > On Fri, Nov 16, 2018 at 03:56:50PM -0800, Jolly Shah wrote:
> > > Base firmware node and clock child node binding are part of mainline 
> > > kernel.
> > This patchset adds documentation to describe rest of the firmware child node
> > bindings.
> > > Complete firmware DT node example is shown below for ease of
> > understanding:
> > 
> > Shouldn't there be a fpga mgr node too? Called pcap IIRC.
> > 
> [Jolly] As you suggested, we only added child nodes if the 
> sub-functions have their own resources (clks, irqs, etc.). FPGA doesn't 
> have any resources so not added . Firmware driver would still register 
> it as mfd device to instantiate the driver.

Okay, but won't their need to be child devices for 


> 
> > >
> > > firmware {
> > >   zynqmp_firmware: zynqmp-firmware {
> > >   compatible = "xlnx,zynqmp-firmware";
> > >   method = "smc";
> > >   #power-domain-cells = <1>;
> > >   #reset-cells = <1>;
> > >
> > >   zynqmp_clk: clock-controller {
> > >   #clock-cells = <1>;
> > >   compatible = "xlnx,zynqmp-clk";
> > >   clocks = <_ref_clk>, <_clk>,
> > <_alt_ref_clk>, <_ref_clk>, <_crx_ref_clk>;
> > >   clock-names = "pss_ref_clk", "video_clk",
> > "pss_alt_ref_clk","aux_ref_clk", "gt_crx_ref_clk";
> > >   };
> > >
> > >   zynqmp_power: zynqmp-power {
> > >   compatible = "xlnx,zynqmp-power";
> > >   interrupts = <0 35 4>;
> > >   };
> > >
> > >   nvmem_firmware {
> > >   compatible = "xlnx,zynqmp-nvmem-fw";
> > >   #address-cells = <1>;
> > >   #size-cells = <1>;
> > >
> > >   /* Data cells */
> > >   soc_revision: soc_revision {
> > >   reg = <0x0 0x4>;
> > >   };
> > >   };
> > >
> > >   afi0: afi0 {
> > >   compatible = "xlnx,afi-fpga";
> > >   config-afi = <0 2>, <1 1>, <2 1>;
> > >   };
> > >
> > >   qspi: spi@ff0f {
> > 
> > Why is this under firmware node?
> [Jolly] Qspi is a user of eemi API provided by firmware node to 
> perform privileged register writes. Alternatively, we can keep such 
> user nodes outside of firmware node and keep nodes which firmware is 
> provider for like clock, reset, pins and power.
> Please suggest.

Child nodes of the firmware should be providers, not consumers (of the 
firmware). If you had a firmware interface to that provided a SPI 
interface, then it would be here. But just having a special mechanism to 
access the registers. 

> > 
> > >   compatible = "xlnx,zynqmp-qspi-1.0";

If this same block works with unprivileged accesses, then you will need 
some way to distinguish that.

> > >   clock-names = "ref_clk", "pclk";
> > >   clocks = <_clk _clk>;
> > >   interrupts = <0 15 4>;
> > >   interrupt-parent = <>;
> > >   num-cs = <1>;
> > >   reg = <0x0 0xff0f 0x1000>,<0x0 0xc000
> > 0x800>;
> > >   };
> > >
> > >   serdes: zynqmp_phy@fd40 {
> > 
> > And this?
> 
> [Jolly] Same as above.
> 
> > 
> > >   compatible = "xlnx,zynqmp-psgtr";
> > >   status = "okay";
> 

Re: [PATCH 0/9] dt-bindings: Firmware node binding for ZynqMP core

2018-12-05 Thread Rob Herring
On Wed, Dec 05, 2018 at 08:29:36PM +, Jolly Shah wrote:
> Hi Rob,
> 
> Thanks for the review. Please find my responses inline.

You need to fix your mail client to wrap lines.
 
> Thanks,
> Jolly Shah
> 
> > -Original Message-
> > From: Rob Herring [mailto:r...@kernel.org]
> > Sent: Tuesday, December 04, 2018 2:06 PM
> > To: Jolly Shah 
> > Cc: mark.rutl...@arm.com; Michal Simek ; Rajan Vaja
> > ; Nava kishore Manne ; linux-arm-
> > ker...@lists.infradead.org; linux-kernel@vger.kernel.org;
> > devicet...@vger.kernel.org; Jolly Shah 
> > Subject: Re: [PATCH 0/9] dt-bindings: Firmware node binding for ZynqMP core
> > 
> > On Fri, Nov 16, 2018 at 03:56:50PM -0800, Jolly Shah wrote:
> > > Base firmware node and clock child node binding are part of mainline 
> > > kernel.
> > This patchset adds documentation to describe rest of the firmware child node
> > bindings.
> > > Complete firmware DT node example is shown below for ease of
> > understanding:
> > 
> > Shouldn't there be a fpga mgr node too? Called pcap IIRC.
> > 
> [Jolly] As you suggested, we only added child nodes if the 
> sub-functions have their own resources (clks, irqs, etc.). FPGA doesn't 
> have any resources so not added . Firmware driver would still register 
> it as mfd device to instantiate the driver.

Okay, but won't their need to be child devices for 


> 
> > >
> > > firmware {
> > >   zynqmp_firmware: zynqmp-firmware {
> > >   compatible = "xlnx,zynqmp-firmware";
> > >   method = "smc";
> > >   #power-domain-cells = <1>;
> > >   #reset-cells = <1>;
> > >
> > >   zynqmp_clk: clock-controller {
> > >   #clock-cells = <1>;
> > >   compatible = "xlnx,zynqmp-clk";
> > >   clocks = <_ref_clk>, <_clk>,
> > <_alt_ref_clk>, <_ref_clk>, <_crx_ref_clk>;
> > >   clock-names = "pss_ref_clk", "video_clk",
> > "pss_alt_ref_clk","aux_ref_clk", "gt_crx_ref_clk";
> > >   };
> > >
> > >   zynqmp_power: zynqmp-power {
> > >   compatible = "xlnx,zynqmp-power";
> > >   interrupts = <0 35 4>;
> > >   };
> > >
> > >   nvmem_firmware {
> > >   compatible = "xlnx,zynqmp-nvmem-fw";
> > >   #address-cells = <1>;
> > >   #size-cells = <1>;
> > >
> > >   /* Data cells */
> > >   soc_revision: soc_revision {
> > >   reg = <0x0 0x4>;
> > >   };
> > >   };
> > >
> > >   afi0: afi0 {
> > >   compatible = "xlnx,afi-fpga";
> > >   config-afi = <0 2>, <1 1>, <2 1>;
> > >   };
> > >
> > >   qspi: spi@ff0f {
> > 
> > Why is this under firmware node?
> [Jolly] Qspi is a user of eemi API provided by firmware node to 
> perform privileged register writes. Alternatively, we can keep such 
> user nodes outside of firmware node and keep nodes which firmware is 
> provider for like clock, reset, pins and power.
> Please suggest.

Child nodes of the firmware should be providers, not consumers (of the 
firmware). If you had a firmware interface to that provided a SPI 
interface, then it would be here. But just having a special mechanism to 
access the registers. 

> > 
> > >   compatible = "xlnx,zynqmp-qspi-1.0";

If this same block works with unprivileged accesses, then you will need 
some way to distinguish that.

> > >   clock-names = "ref_clk", "pclk";
> > >   clocks = <_clk _clk>;
> > >   interrupts = <0 15 4>;
> > >   interrupt-parent = <>;
> > >   num-cs = <1>;
> > >   reg = <0x0 0xff0f 0x1000>,<0x0 0xc000
> > 0x800>;
> > >   };
> > >
> > >   serdes: zynqmp_phy@fd40 {
> > 
> > And this?
> 
> [Jolly] Same as above.
> 
> > 
> > >   compatible = "xlnx,zynqmp-psgtr";
> > >   status = "okay";
> 

RE: [PATCH 0/9] dt-bindings: Firmware node binding for ZynqMP core

2018-12-05 Thread Jolly Shah
Hi Rob,

Thanks for the review. Please find my responses inline.

Thanks,
Jolly Shah

> -Original Message-
> From: Rob Herring [mailto:r...@kernel.org]
> Sent: Tuesday, December 04, 2018 2:06 PM
> To: Jolly Shah 
> Cc: mark.rutl...@arm.com; Michal Simek ; Rajan Vaja
> ; Nava kishore Manne ; linux-arm-
> ker...@lists.infradead.org; linux-kernel@vger.kernel.org;
> devicet...@vger.kernel.org; Jolly Shah 
> Subject: Re: [PATCH 0/9] dt-bindings: Firmware node binding for ZynqMP core
> 
> On Fri, Nov 16, 2018 at 03:56:50PM -0800, Jolly Shah wrote:
> > Base firmware node and clock child node binding are part of mainline kernel.
> This patchset adds documentation to describe rest of the firmware child node
> bindings.
> > Complete firmware DT node example is shown below for ease of
> understanding:
> 
> Shouldn't there be a fpga mgr node too? Called pcap IIRC.
> 
[Jolly] As you suggested, we only added child nodes if the sub-functions have 
their own resources (clks, irqs, etc.). FPGA doesn't have any resources so not 
added . Firmware driver would still register it as mfd device to instantiate 
the driver.

> >
> > firmware {
> > zynqmp_firmware: zynqmp-firmware {
> > compatible = "xlnx,zynqmp-firmware";
> > method = "smc";
> > #power-domain-cells = <1>;
> > #reset-cells = <1>;
> >
> > zynqmp_clk: clock-controller {
> > #clock-cells = <1>;
> > compatible = "xlnx,zynqmp-clk";
> > clocks = <_ref_clk>, <_clk>,
> <_alt_ref_clk>, <_ref_clk>, <_crx_ref_clk>;
> > clock-names = "pss_ref_clk", "video_clk",
> "pss_alt_ref_clk","aux_ref_clk", "gt_crx_ref_clk";
> > };
> >
> > zynqmp_power: zynqmp-power {
> > compatible = "xlnx,zynqmp-power";
> > interrupts = <0 35 4>;
> > };
> >
> > nvmem_firmware {
> > compatible = "xlnx,zynqmp-nvmem-fw";
> > #address-cells = <1>;
> > #size-cells = <1>;
> >
> > /* Data cells */
> > soc_revision: soc_revision {
> > reg = <0x0 0x4>;
> > };
> > };
> >
> > afi0: afi0 {
> > compatible = "xlnx,afi-fpga";
> > config-afi = <0 2>, <1 1>, <2 1>;
> > };
> >
> > qspi: spi@ff0f {
> 
> Why is this under firmware node?
[Jolly] Qspi is a user of eemi API provided by firmware node to perform 
privileged register writes. Alternatively, we can keep such user nodes outside 
of firmware node and keep nodes which firmware is provider for like clock, 
reset, pins and power.
Please suggest.

> 
> > compatible = "xlnx,zynqmp-qspi-1.0";
> > clock-names = "ref_clk", "pclk";
> > clocks = <_clk _clk>;
> > interrupts = <0 15 4>;
> > interrupt-parent = <>;
> > num-cs = <1>;
> > reg = <0x0 0xff0f 0x1000>,<0x0 0xc000
> 0x800>;
> > };
> >
> > serdes: zynqmp_phy@fd40 {
> 
> And this?

[Jolly] Same as above.

> 
> > compatible = "xlnx,zynqmp-psgtr";
> > status = "okay";
> > reg = <0x0 0xfd40 0x0 0x4>, <0x0 0xfd3d
> 0x0 0x1000>,
> > <0x0 0xff5e 0x0 0x1000>;
> > reg-names = "serdes", "siou", "lpd";
> >
> > lane0: lane@0 {
> > #phy-cells = <4>;
> > };
> > lane1: lane@1 {
> > #phy-cells = <4>;
> > };
> > lane2: lane@2 {
> > #phy-cells = <4>;
> > };
> > lane3: lane@3 {
> > #phy-cells = <4>;
> > };
> > };
> >
> > pinctrl_ua

RE: [PATCH 0/9] dt-bindings: Firmware node binding for ZynqMP core

2018-12-05 Thread Jolly Shah
Hi Rob,

Thanks for the review. Please find my responses inline.

Thanks,
Jolly Shah

> -Original Message-
> From: Rob Herring [mailto:r...@kernel.org]
> Sent: Tuesday, December 04, 2018 2:06 PM
> To: Jolly Shah 
> Cc: mark.rutl...@arm.com; Michal Simek ; Rajan Vaja
> ; Nava kishore Manne ; linux-arm-
> ker...@lists.infradead.org; linux-kernel@vger.kernel.org;
> devicet...@vger.kernel.org; Jolly Shah 
> Subject: Re: [PATCH 0/9] dt-bindings: Firmware node binding for ZynqMP core
> 
> On Fri, Nov 16, 2018 at 03:56:50PM -0800, Jolly Shah wrote:
> > Base firmware node and clock child node binding are part of mainline kernel.
> This patchset adds documentation to describe rest of the firmware child node
> bindings.
> > Complete firmware DT node example is shown below for ease of
> understanding:
> 
> Shouldn't there be a fpga mgr node too? Called pcap IIRC.
> 
[Jolly] As you suggested, we only added child nodes if the sub-functions have 
their own resources (clks, irqs, etc.). FPGA doesn't have any resources so not 
added . Firmware driver would still register it as mfd device to instantiate 
the driver.

> >
> > firmware {
> > zynqmp_firmware: zynqmp-firmware {
> > compatible = "xlnx,zynqmp-firmware";
> > method = "smc";
> > #power-domain-cells = <1>;
> > #reset-cells = <1>;
> >
> > zynqmp_clk: clock-controller {
> > #clock-cells = <1>;
> > compatible = "xlnx,zynqmp-clk";
> > clocks = <_ref_clk>, <_clk>,
> <_alt_ref_clk>, <_ref_clk>, <_crx_ref_clk>;
> > clock-names = "pss_ref_clk", "video_clk",
> "pss_alt_ref_clk","aux_ref_clk", "gt_crx_ref_clk";
> > };
> >
> > zynqmp_power: zynqmp-power {
> > compatible = "xlnx,zynqmp-power";
> > interrupts = <0 35 4>;
> > };
> >
> > nvmem_firmware {
> > compatible = "xlnx,zynqmp-nvmem-fw";
> > #address-cells = <1>;
> > #size-cells = <1>;
> >
> > /* Data cells */
> > soc_revision: soc_revision {
> > reg = <0x0 0x4>;
> > };
> > };
> >
> > afi0: afi0 {
> > compatible = "xlnx,afi-fpga";
> > config-afi = <0 2>, <1 1>, <2 1>;
> > };
> >
> > qspi: spi@ff0f {
> 
> Why is this under firmware node?
[Jolly] Qspi is a user of eemi API provided by firmware node to perform 
privileged register writes. Alternatively, we can keep such user nodes outside 
of firmware node and keep nodes which firmware is provider for like clock, 
reset, pins and power.
Please suggest.

> 
> > compatible = "xlnx,zynqmp-qspi-1.0";
> > clock-names = "ref_clk", "pclk";
> > clocks = <_clk _clk>;
> > interrupts = <0 15 4>;
> > interrupt-parent = <>;
> > num-cs = <1>;
> > reg = <0x0 0xff0f 0x1000>,<0x0 0xc000
> 0x800>;
> > };
> >
> > serdes: zynqmp_phy@fd40 {
> 
> And this?

[Jolly] Same as above.

> 
> > compatible = "xlnx,zynqmp-psgtr";
> > status = "okay";
> > reg = <0x0 0xfd40 0x0 0x4>, <0x0 0xfd3d
> 0x0 0x1000>,
> > <0x0 0xff5e 0x0 0x1000>;
> > reg-names = "serdes", "siou", "lpd";
> >
> > lane0: lane@0 {
> > #phy-cells = <4>;
> > };
> > lane1: lane@1 {
> > #phy-cells = <4>;
> > };
> > lane2: lane@2 {
> > #phy-cells = <4>;
> > };
> > lane3: lane@3 {
> > #phy-cells = <4>;
> > };
> > };
> >
> > pinctrl_ua

Re: [PATCH 0/9] dt-bindings: Firmware node binding for ZynqMP core

2018-12-04 Thread Rob Herring
On Fri, Nov 16, 2018 at 03:56:50PM -0800, Jolly Shah wrote:
> Base firmware node and clock child node binding are part of mainline kernel. 
> This patchset adds documentation to describe rest of the firmware child node 
> bindings. 
> Complete firmware DT node example is shown below for ease of understanding:

Shouldn't there be a fpga mgr node too? Called pcap IIRC.

> 
> firmware {
>   zynqmp_firmware: zynqmp-firmware {
>   compatible = "xlnx,zynqmp-firmware";
>   method = "smc";
>   #power-domain-cells = <1>;
>   #reset-cells = <1>;
> 
>   zynqmp_clk: clock-controller {
>   #clock-cells = <1>;
>   compatible = "xlnx,zynqmp-clk";
>   clocks = <_ref_clk>, <_clk>, 
> <_alt_ref_clk>, <_ref_clk>, <_crx_ref_clk>;
>   clock-names = "pss_ref_clk", "video_clk", 
> "pss_alt_ref_clk","aux_ref_clk", "gt_crx_ref_clk";
>   };
> 
>   zynqmp_power: zynqmp-power {
>   compatible = "xlnx,zynqmp-power";
>   interrupts = <0 35 4>;
>   };
> 
>   nvmem_firmware {
>   compatible = "xlnx,zynqmp-nvmem-fw";
>   #address-cells = <1>;
>   #size-cells = <1>;
> 
>   /* Data cells */
>   soc_revision: soc_revision {
>   reg = <0x0 0x4>;
>   };
>   };
> 
>   afi0: afi0 {
>   compatible = "xlnx,afi-fpga";
>   config-afi = <0 2>, <1 1>, <2 1>;
>   };
> 
>   qspi: spi@ff0f {

Why is this under firmware node?

>   compatible = "xlnx,zynqmp-qspi-1.0";
>   clock-names = "ref_clk", "pclk";
>   clocks = <_clk _clk>;
>   interrupts = <0 15 4>;
>   interrupt-parent = <>;
>   num-cs = <1>;
>   reg = <0x0 0xff0f 0x1000>,<0x0 0xc000 
> 0x800>;
>   };
> 
>   serdes: zynqmp_phy@fd40 {

And this?

>   compatible = "xlnx,zynqmp-psgtr";
>   status = "okay";
>   reg = <0x0 0xfd40 0x0 0x4>, <0x0 0xfd3d 0x0 
> 0x1000>,
>   <0x0 0xff5e 0x0 0x1000>;
>   reg-names = "serdes", "siou", "lpd";
> 
>   lane0: lane@0 {
>   #phy-cells = <4>;
>   };
>   lane1: lane@1 {
>   #phy-cells = <4>;
>   };
>   lane2: lane@2 {
>   #phy-cells = <4>;
>   };
>   lane3: lane@3 {
>   #phy-cells = <4>;
>   };
>   };
> 
>   pinctrl_uart1_default: uart1-default {

This goes under a pinctrl node.

>   mux {
>   groups = "uart0_4_grp";
>   function = "uart0";
>   };
> 
>   conf {
>   groups = "uart0_4_grp";
>   slew-rate = ;
>   io-standard = ;
>   };
> 
>   conf-rx {
>   pins = "MIO18";
>   bias-high-impedance;
>   };
> 
>   conf-tx {
>   pins = "MIO19";
>   bias-disable;
>   schmitt-cmos = ;
>   };
>   };
>   zynqmp-r5-remoteproc@0 {

Wrong unit-address and this doesn't belong here.

>   compatible = "xlnx,zynqmp-r5-remoteproc-1.0";

'remoteproc' is what the h/w block is called?

>   reg = <0x0 0xFFE0 0x0 0x1>,
>   <0x0 0xFFE2 0x0 0x1>,
>   <0x0 0xff34 0x0 0x100>;
>   reg-names = "tcm_a", "tcm_b", "ipi";
>   dma-ranges;
>   core_conf = "split0";
>   memory-region = <_0_fw_reserved>,
>   <_0_dma_reserved>;
>   tcm-pnode-id = <0xf>, <0x10>;
>   rpu-pnode-id = <0x7>;
>   interrupt-parent = <>;
>   interrupts = <0 29 4>;
>   };
>   };
> };


Re: [PATCH 0/9] dt-bindings: Firmware node binding for ZynqMP core

2018-12-04 Thread Rob Herring
On Fri, Nov 16, 2018 at 03:56:50PM -0800, Jolly Shah wrote:
> Base firmware node and clock child node binding are part of mainline kernel. 
> This patchset adds documentation to describe rest of the firmware child node 
> bindings. 
> Complete firmware DT node example is shown below for ease of understanding:

Shouldn't there be a fpga mgr node too? Called pcap IIRC.

> 
> firmware {
>   zynqmp_firmware: zynqmp-firmware {
>   compatible = "xlnx,zynqmp-firmware";
>   method = "smc";
>   #power-domain-cells = <1>;
>   #reset-cells = <1>;
> 
>   zynqmp_clk: clock-controller {
>   #clock-cells = <1>;
>   compatible = "xlnx,zynqmp-clk";
>   clocks = <_ref_clk>, <_clk>, 
> <_alt_ref_clk>, <_ref_clk>, <_crx_ref_clk>;
>   clock-names = "pss_ref_clk", "video_clk", 
> "pss_alt_ref_clk","aux_ref_clk", "gt_crx_ref_clk";
>   };
> 
>   zynqmp_power: zynqmp-power {
>   compatible = "xlnx,zynqmp-power";
>   interrupts = <0 35 4>;
>   };
> 
>   nvmem_firmware {
>   compatible = "xlnx,zynqmp-nvmem-fw";
>   #address-cells = <1>;
>   #size-cells = <1>;
> 
>   /* Data cells */
>   soc_revision: soc_revision {
>   reg = <0x0 0x4>;
>   };
>   };
> 
>   afi0: afi0 {
>   compatible = "xlnx,afi-fpga";
>   config-afi = <0 2>, <1 1>, <2 1>;
>   };
> 
>   qspi: spi@ff0f {

Why is this under firmware node?

>   compatible = "xlnx,zynqmp-qspi-1.0";
>   clock-names = "ref_clk", "pclk";
>   clocks = <_clk _clk>;
>   interrupts = <0 15 4>;
>   interrupt-parent = <>;
>   num-cs = <1>;
>   reg = <0x0 0xff0f 0x1000>,<0x0 0xc000 
> 0x800>;
>   };
> 
>   serdes: zynqmp_phy@fd40 {

And this?

>   compatible = "xlnx,zynqmp-psgtr";
>   status = "okay";
>   reg = <0x0 0xfd40 0x0 0x4>, <0x0 0xfd3d 0x0 
> 0x1000>,
>   <0x0 0xff5e 0x0 0x1000>;
>   reg-names = "serdes", "siou", "lpd";
> 
>   lane0: lane@0 {
>   #phy-cells = <4>;
>   };
>   lane1: lane@1 {
>   #phy-cells = <4>;
>   };
>   lane2: lane@2 {
>   #phy-cells = <4>;
>   };
>   lane3: lane@3 {
>   #phy-cells = <4>;
>   };
>   };
> 
>   pinctrl_uart1_default: uart1-default {

This goes under a pinctrl node.

>   mux {
>   groups = "uart0_4_grp";
>   function = "uart0";
>   };
> 
>   conf {
>   groups = "uart0_4_grp";
>   slew-rate = ;
>   io-standard = ;
>   };
> 
>   conf-rx {
>   pins = "MIO18";
>   bias-high-impedance;
>   };
> 
>   conf-tx {
>   pins = "MIO19";
>   bias-disable;
>   schmitt-cmos = ;
>   };
>   };
>   zynqmp-r5-remoteproc@0 {

Wrong unit-address and this doesn't belong here.

>   compatible = "xlnx,zynqmp-r5-remoteproc-1.0";

'remoteproc' is what the h/w block is called?

>   reg = <0x0 0xFFE0 0x0 0x1>,
>   <0x0 0xFFE2 0x0 0x1>,
>   <0x0 0xff34 0x0 0x100>;
>   reg-names = "tcm_a", "tcm_b", "ipi";
>   dma-ranges;
>   core_conf = "split0";
>   memory-region = <_0_fw_reserved>,
>   <_0_dma_reserved>;
>   tcm-pnode-id = <0xf>, <0x10>;
>   rpu-pnode-id = <0x7>;
>   interrupt-parent = <>;
>   interrupts = <0 29 4>;
>   };
>   };
> };


RE: [PATCH 0/9] dt-bindings: Firmware node binding for ZynqMP core

2018-11-26 Thread Jolly Shah
Ping for comments

> -Original Message-
> From: Jolly Shah [mailto:jolly.s...@xilinx.com]
> Sent: Friday, November 16, 2018 3:57 PM
> To: robh...@kernel.org; mark.rutl...@arm.com
> Cc: Michal Simek ; Rajan Vaja ;
> Nava kishore Manne ; linux-arm-
> ker...@lists.infradead.org; linux-kernel@vger.kernel.org;
> devicet...@vger.kernel.org; Jolly Shah 
> Subject: [PATCH 0/9] dt-bindings: Firmware node binding for ZynqMP core
> 
> Base firmware node and clock child node binding are part of mainline kernel.
> This patchset adds documentation to describe rest of the firmware child node
> bindings.
> Complete firmware DT node example is shown below for ease of understanding:
> 
> firmware {
>   zynqmp_firmware: zynqmp-firmware {
>   compatible = "xlnx,zynqmp-firmware";
>   method = "smc";
>   #power-domain-cells = <1>;
>   #reset-cells = <1>;
> 
>   zynqmp_clk: clock-controller {
>   #clock-cells = <1>;
>   compatible = "xlnx,zynqmp-clk";
>   clocks = <_ref_clk>, <_clk>,
> <_alt_ref_clk>, <_ref_clk>, <_crx_ref_clk>;
>   clock-names = "pss_ref_clk", "video_clk",
> "pss_alt_ref_clk","aux_ref_clk", "gt_crx_ref_clk";
>   };
> 
>   zynqmp_power: zynqmp-power {
>   compatible = "xlnx,zynqmp-power";
>   interrupts = <0 35 4>;
>   };
> 
>   nvmem_firmware {
>   compatible = "xlnx,zynqmp-nvmem-fw";
>   #address-cells = <1>;
>   #size-cells = <1>;
> 
>   /* Data cells */
>   soc_revision: soc_revision {
>   reg = <0x0 0x4>;
>   };
>   };
> 
>   afi0: afi0 {
>   compatible = "xlnx,afi-fpga";
>   config-afi = <0 2>, <1 1>, <2 1>;
>   };
> 
>   qspi: spi@ff0f {
>   compatible = "xlnx,zynqmp-qspi-1.0";
>   clock-names = "ref_clk", "pclk";
>   clocks = <_clk _clk>;
>   interrupts = <0 15 4>;
>   interrupt-parent = <>;
>   num-cs = <1>;
>   reg = <0x0 0xff0f 0x1000>,<0x0 0xc000
> 0x800>;
>   };
> 
>   serdes: zynqmp_phy@fd40 {
>   compatible = "xlnx,zynqmp-psgtr";
>   status = "okay";
>   reg = <0x0 0xfd40 0x0 0x4>, <0x0 0xfd3d
> 0x0 0x1000>,
>   <0x0 0xff5e 0x0 0x1000>;
>   reg-names = "serdes", "siou", "lpd";
> 
>   lane0: lane@0 {
>   #phy-cells = <4>;
>   };
>   lane1: lane@1 {
>   #phy-cells = <4>;
>   };
>   lane2: lane@2 {
>   #phy-cells = <4>;
>   };
>   lane3: lane@3 {
>   #phy-cells = <4>;
>   };
>   };
> 
>   pinctrl_uart1_default: uart1-default {
>   mux {
>   groups = "uart0_4_grp";
>   function = "uart0";
>   };
> 
>   conf {
>   groups = "uart0_4_grp";
>   slew-rate = ;
>   io-standard = ;
>   };
> 
>   conf-rx {
>   pins = "MIO18";
>   bias-high-impedance;
>   };
> 
>   conf-tx {
>   pins = "MIO19";
>   bias-disable;
>   schmitt-cmos = ;
>   };
>   };
>   zynqmp-r5-remoteproc@0 {
>   compatible = "xlnx,zynqmp-r5-remoteproc-1.0";
>  

RE: [PATCH 0/9] dt-bindings: Firmware node binding for ZynqMP core

2018-11-26 Thread Jolly Shah
Ping for comments

> -Original Message-
> From: Jolly Shah [mailto:jolly.s...@xilinx.com]
> Sent: Friday, November 16, 2018 3:57 PM
> To: robh...@kernel.org; mark.rutl...@arm.com
> Cc: Michal Simek ; Rajan Vaja ;
> Nava kishore Manne ; linux-arm-
> ker...@lists.infradead.org; linux-kernel@vger.kernel.org;
> devicet...@vger.kernel.org; Jolly Shah 
> Subject: [PATCH 0/9] dt-bindings: Firmware node binding for ZynqMP core
> 
> Base firmware node and clock child node binding are part of mainline kernel.
> This patchset adds documentation to describe rest of the firmware child node
> bindings.
> Complete firmware DT node example is shown below for ease of understanding:
> 
> firmware {
>   zynqmp_firmware: zynqmp-firmware {
>   compatible = "xlnx,zynqmp-firmware";
>   method = "smc";
>   #power-domain-cells = <1>;
>   #reset-cells = <1>;
> 
>   zynqmp_clk: clock-controller {
>   #clock-cells = <1>;
>   compatible = "xlnx,zynqmp-clk";
>   clocks = <_ref_clk>, <_clk>,
> <_alt_ref_clk>, <_ref_clk>, <_crx_ref_clk>;
>   clock-names = "pss_ref_clk", "video_clk",
> "pss_alt_ref_clk","aux_ref_clk", "gt_crx_ref_clk";
>   };
> 
>   zynqmp_power: zynqmp-power {
>   compatible = "xlnx,zynqmp-power";
>   interrupts = <0 35 4>;
>   };
> 
>   nvmem_firmware {
>   compatible = "xlnx,zynqmp-nvmem-fw";
>   #address-cells = <1>;
>   #size-cells = <1>;
> 
>   /* Data cells */
>   soc_revision: soc_revision {
>   reg = <0x0 0x4>;
>   };
>   };
> 
>   afi0: afi0 {
>   compatible = "xlnx,afi-fpga";
>   config-afi = <0 2>, <1 1>, <2 1>;
>   };
> 
>   qspi: spi@ff0f {
>   compatible = "xlnx,zynqmp-qspi-1.0";
>   clock-names = "ref_clk", "pclk";
>   clocks = <_clk _clk>;
>   interrupts = <0 15 4>;
>   interrupt-parent = <>;
>   num-cs = <1>;
>   reg = <0x0 0xff0f 0x1000>,<0x0 0xc000
> 0x800>;
>   };
> 
>   serdes: zynqmp_phy@fd40 {
>   compatible = "xlnx,zynqmp-psgtr";
>   status = "okay";
>   reg = <0x0 0xfd40 0x0 0x4>, <0x0 0xfd3d
> 0x0 0x1000>,
>   <0x0 0xff5e 0x0 0x1000>;
>   reg-names = "serdes", "siou", "lpd";
> 
>   lane0: lane@0 {
>   #phy-cells = <4>;
>   };
>   lane1: lane@1 {
>   #phy-cells = <4>;
>   };
>   lane2: lane@2 {
>   #phy-cells = <4>;
>   };
>   lane3: lane@3 {
>   #phy-cells = <4>;
>   };
>   };
> 
>   pinctrl_uart1_default: uart1-default {
>   mux {
>   groups = "uart0_4_grp";
>   function = "uart0";
>   };
> 
>   conf {
>   groups = "uart0_4_grp";
>   slew-rate = ;
>   io-standard = ;
>   };
> 
>   conf-rx {
>   pins = "MIO18";
>   bias-high-impedance;
>   };
> 
>   conf-tx {
>   pins = "MIO19";
>   bias-disable;
>   schmitt-cmos = ;
>   };
>   };
>   zynqmp-r5-remoteproc@0 {
>   compatible = "xlnx,zynqmp-r5-remoteproc-1.0";
>  

[PATCH 0/9] dt-bindings: Firmware node binding for ZynqMP core

2018-11-16 Thread Jolly Shah
Base firmware node and clock child node binding are part of mainline kernel. 
This patchset adds documentation to describe rest of the firmware child node 
bindings. 
Complete firmware DT node example is shown below for ease of understanding:

firmware {
zynqmp_firmware: zynqmp-firmware {
compatible = "xlnx,zynqmp-firmware";
method = "smc";
#power-domain-cells = <1>;
#reset-cells = <1>;

zynqmp_clk: clock-controller {
#clock-cells = <1>;
compatible = "xlnx,zynqmp-clk";
clocks = <_ref_clk>, <_clk>, 
<_alt_ref_clk>, <_ref_clk>, <_crx_ref_clk>;
clock-names = "pss_ref_clk", "video_clk", 
"pss_alt_ref_clk","aux_ref_clk", "gt_crx_ref_clk";
};

zynqmp_power: zynqmp-power {
compatible = "xlnx,zynqmp-power";
interrupts = <0 35 4>;
};

nvmem_firmware {
compatible = "xlnx,zynqmp-nvmem-fw";
#address-cells = <1>;
#size-cells = <1>;

/* Data cells */
soc_revision: soc_revision {
reg = <0x0 0x4>;
};
};

afi0: afi0 {
compatible = "xlnx,afi-fpga";
config-afi = <0 2>, <1 1>, <2 1>;
};

qspi: spi@ff0f {
compatible = "xlnx,zynqmp-qspi-1.0";
clock-names = "ref_clk", "pclk";
clocks = <_clk _clk>;
interrupts = <0 15 4>;
interrupt-parent = <>;
num-cs = <1>;
reg = <0x0 0xff0f 0x1000>,<0x0 0xc000 
0x800>;
};

serdes: zynqmp_phy@fd40 {
compatible = "xlnx,zynqmp-psgtr";
status = "okay";
reg = <0x0 0xfd40 0x0 0x4>, <0x0 0xfd3d 0x0 
0x1000>,
<0x0 0xff5e 0x0 0x1000>;
reg-names = "serdes", "siou", "lpd";

lane0: lane@0 {
#phy-cells = <4>;
};
lane1: lane@1 {
#phy-cells = <4>;
};
lane2: lane@2 {
#phy-cells = <4>;
};
lane3: lane@3 {
#phy-cells = <4>;
};
};

pinctrl_uart1_default: uart1-default {
mux {
groups = "uart0_4_grp";
function = "uart0";
};

conf {
groups = "uart0_4_grp";
slew-rate = ;
io-standard = ;
};

conf-rx {
pins = "MIO18";
bias-high-impedance;
};

conf-tx {
pins = "MIO19";
bias-disable;
schmitt-cmos = ;
};
};
zynqmp-r5-remoteproc@0 {
compatible = "xlnx,zynqmp-r5-remoteproc-1.0";
reg = <0x0 0xFFE0 0x0 0x1>,
<0x0 0xFFE2 0x0 0x1>,
<0x0 0xff34 0x0 0x100>;
reg-names = "tcm_a", "tcm_b", "ipi";
dma-ranges;
core_conf = "split0";
memory-region = <_0_fw_reserved>,
<_0_dma_reserved>;
tcm-pnode-id = <0xf>, <0x10>;
rpu-pnode-id = <0x7>;
interrupt-parent = <>;
interrupts = <0 29 4>;
};
};
};

Jolly Shah (2):
  dt-bindings: phy: Add dt bindings for ZynqMP PHY
  dt-bindings: fpga: Add binding doc for the afi config driver

Nava kishore Manne (2):
  dt-bindings: reset: Add bindings for ZynqMP reset driver
  dt-bindings: nvmem: Add bindings for ZynqMP nvmem driver

Rajan Vaja (4):
  dt-bindings: power: Add ZynqMP power domain bindings
  dt-bindings: soc: Add ZynqMP PM bindings
  dt-bindings: pinctrl: Add ZynqMP pin controller bindings
  dt-bindings: spi: zynqmp: Move SPI node under zynqmp firmware

Wendy Liang (1):
  dt-bindings: remoteproc: Add Xilinx 

[PATCH 0/9] dt-bindings: Firmware node binding for ZynqMP core

2018-11-16 Thread Jolly Shah
Base firmware node and clock child node binding are part of mainline kernel. 
This patchset adds documentation to describe rest of the firmware child node 
bindings. 
Complete firmware DT node example is shown below for ease of understanding:

firmware {
zynqmp_firmware: zynqmp-firmware {
compatible = "xlnx,zynqmp-firmware";
method = "smc";
#power-domain-cells = <1>;
#reset-cells = <1>;

zynqmp_clk: clock-controller {
#clock-cells = <1>;
compatible = "xlnx,zynqmp-clk";
clocks = <_ref_clk>, <_clk>, 
<_alt_ref_clk>, <_ref_clk>, <_crx_ref_clk>;
clock-names = "pss_ref_clk", "video_clk", 
"pss_alt_ref_clk","aux_ref_clk", "gt_crx_ref_clk";
};

zynqmp_power: zynqmp-power {
compatible = "xlnx,zynqmp-power";
interrupts = <0 35 4>;
};

nvmem_firmware {
compatible = "xlnx,zynqmp-nvmem-fw";
#address-cells = <1>;
#size-cells = <1>;

/* Data cells */
soc_revision: soc_revision {
reg = <0x0 0x4>;
};
};

afi0: afi0 {
compatible = "xlnx,afi-fpga";
config-afi = <0 2>, <1 1>, <2 1>;
};

qspi: spi@ff0f {
compatible = "xlnx,zynqmp-qspi-1.0";
clock-names = "ref_clk", "pclk";
clocks = <_clk _clk>;
interrupts = <0 15 4>;
interrupt-parent = <>;
num-cs = <1>;
reg = <0x0 0xff0f 0x1000>,<0x0 0xc000 
0x800>;
};

serdes: zynqmp_phy@fd40 {
compatible = "xlnx,zynqmp-psgtr";
status = "okay";
reg = <0x0 0xfd40 0x0 0x4>, <0x0 0xfd3d 0x0 
0x1000>,
<0x0 0xff5e 0x0 0x1000>;
reg-names = "serdes", "siou", "lpd";

lane0: lane@0 {
#phy-cells = <4>;
};
lane1: lane@1 {
#phy-cells = <4>;
};
lane2: lane@2 {
#phy-cells = <4>;
};
lane3: lane@3 {
#phy-cells = <4>;
};
};

pinctrl_uart1_default: uart1-default {
mux {
groups = "uart0_4_grp";
function = "uart0";
};

conf {
groups = "uart0_4_grp";
slew-rate = ;
io-standard = ;
};

conf-rx {
pins = "MIO18";
bias-high-impedance;
};

conf-tx {
pins = "MIO19";
bias-disable;
schmitt-cmos = ;
};
};
zynqmp-r5-remoteproc@0 {
compatible = "xlnx,zynqmp-r5-remoteproc-1.0";
reg = <0x0 0xFFE0 0x0 0x1>,
<0x0 0xFFE2 0x0 0x1>,
<0x0 0xff34 0x0 0x100>;
reg-names = "tcm_a", "tcm_b", "ipi";
dma-ranges;
core_conf = "split0";
memory-region = <_0_fw_reserved>,
<_0_dma_reserved>;
tcm-pnode-id = <0xf>, <0x10>;
rpu-pnode-id = <0x7>;
interrupt-parent = <>;
interrupts = <0 29 4>;
};
};
};

Jolly Shah (2):
  dt-bindings: phy: Add dt bindings for ZynqMP PHY
  dt-bindings: fpga: Add binding doc for the afi config driver

Nava kishore Manne (2):
  dt-bindings: reset: Add bindings for ZynqMP reset driver
  dt-bindings: nvmem: Add bindings for ZynqMP nvmem driver

Rajan Vaja (4):
  dt-bindings: power: Add ZynqMP power domain bindings
  dt-bindings: soc: Add ZynqMP PM bindings
  dt-bindings: pinctrl: Add ZynqMP pin controller bindings
  dt-bindings: spi: zynqmp: Move SPI node under zynqmp firmware

Wendy Liang (1):
  dt-bindings: remoteproc: Add Xilinx