DTG enablement of PS nodes for ZynqMP and Zynq:

The below description explains about the zynq and znyqmp PS nodes enablement and additional dynamic configuration setting done by the device tree generator(DTG).
The static PS nodes will be defined in zynqmp.dtsi for zynqmp and zynq-7000.dtsi for zynq case.

ZYNQMP:

The below are the ZynqMP nodes which the DTG changes the status to "okay".
The meaning of the status to "okay" from the device tree term is the particular driver is enabled and its driver probe gets called.

1)lpd_dma_chan1
2)lpd_dma_chan2
3)lpd_dma_chan3
4)lpd_dma_chan4
5)lpd_dma_chan5
6)lpd_dma_chan6
7)lpd_dma_chan7
8)lpd_dma_chan8
9)xilinx_aws
10)can1
11)xlnx_dpdma
12)fpd_dma_chan1
13)fpd_dma_chan2
14)fpd_dma_chan3
15)fpd_dma_chan4
16)fpd_dma_chan5
17)fpd_dma_chan6
18)fpd_dma_chan7
19)fpd_dma_chan8
20) pinctrl
21)rtc
22)sata
23)dwc3_0
24)watchdog_0
25)ams_ps
26)ams_pl
27)zynqmp_dpsub
28)zynqmp_dp_snd_pcm0
29)zynqmp_dp_snd_pcm1
30)zynqmp_dp_snd_card0
31)zynqmp_dp_snd_codec0
32)gpu
33)serdes


Please find the zynqmp.dtsi where the static PS node is defined, the DTG repo https://gitenterprise.xilinx.com/Linux/device-tree-xlnx/blob/master/device_tree/data/kernel_dtsi/2018.1/zynqmp/zynqmp.dtsi
pcw.dtsi can be found from the petalinux build like <petalinux-template>/components/plnx_workspace/device-tree/device-tree-generation/pcw.dtsi
pcw.dtsi is where the PS node information will gets updated by the DTG.

These are the below nodes which has some of the dynamic properities to be updated based on the configuration changes from PCW.
DTG will be updating this dynamic configuration information based on the requirement of the Linux driver.

&gem3 {
phy-mode = "rgmii-id";
status = "okay";
xlnx,ptp-enet-clock = <0x0>;
};


&gpio {
emio-gpio-width = <32>;
gpio-mask-high = <0x0>;
gpio-mask-low = <0x5600>;
status = "okay";
};


&i2c0 {
clock-frequency = <400000>;
status = "okay";
};

&i2c1 {
clock-frequency = <400000>;
status = "okay";
};


&pcie {
status = "okay";
xlnx,pcie-mode = "Root Port";
};

&qspi {
is-dual = <1>;
num-cs = <1>;
spi-rx-bus-width = <4>;
spi-tx-bus-width = <4>;
status = "okay";
};

&sdhci1 {
clock-frequency = <187481250>;
status = "okay";
xlnx,mio_bank = <0x1>;
};


&uart0 {
device_type = "serial";
port-number = <0>;
status = "okay";
u-boot,dm-pre-reloc ;
};

&uart1 {
device_type = "serial";
port-number = <1>;
status = "okay";
u-boot,dm-pre-reloc ;
};

&usb0 {
status = "okay";
xlnx,usb-reset = <0x2faf080>;

};

Zynq:
Zynq nodes from pcw.dtsi which change the status to "okay"
You can find the zynq-7000.dtsi where the static PS node is defined https://gitenterprise.xilinx.com/Linux/device-tree-xlnx/blob/master/device_tree/data/kernel_dtsi/2018.1/zynq/zynq-7000.dtsi
pcw.dtsi can be found from the petalinux build like <petalinux-template>/components/plnx_workspace/device-tree/device-tree-generation/pcw.dtsi
pcw.dtsi is where the PS node information will gets updated by the DTG.

1)smcc
2)can0

For the nodes some dynamic properities to be updated based on the configuration changes from PCW apart from the status change to "okay".
DTG will be updating this dynamic configuration information based on the requirement of the Linux driver.

&gpio0 {
emio-gpio-width = <4>;
gpio-mask-high = <0x0>;
gpio-mask-low = <0x5600>;
};

&intc {
num_cpus = <2>;
num_interrupts = <96>;
};

&qspi {
is-dual = <0>;
num-cs = <1>;
spi-rx-bus-width = <4>;
spi-tx-bus-width = <4>;
status = "okay";
};

&sdhci0 {
status = "okay";
xlnx,has-cd = <0x1>;
xlnx,has-power = <0x0>;
xlnx,has-wp = <0x1>;
};

&sdhci1 {
status = "okay";
xlnx,has-cd = <0x1>;
xlnx,has-power = <0x0>;
xlnx,has-wp = <0x1>;
};

&uart0 {
device_type = "serial";
port-number = <2>;
status = "okay";
};

&uart1 {
device_type = "serial";
port-number = <3>;
status = "okay";
};

&usb0 {
phy_type = "ulpi";
status = "okay";
usb-reset = <&gpio0 7 0>;
};

&clkc {
fclk-enable = <0x7>;
ps-clk-frequency = <33333333>;
};
Insert your code here.

Related Links

  • Title 1 & Link 1
  • Title 1 & Link 1