UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
506 Views
Registered: ‎08-01-2018

HDMI Tx module probe failed on PetaLinux 2018.2

Hello everyone,
this is my first post in this forum and I really need your help.

 

Context:
I'm using a Xilinx Zynq UltraScale+ MPSoC ZCU104 Evaluation Kit and I'm trying to make the HDMI module work on PetaLinux 2018.2 (for now without any success).
I don't know which informations could you need to help me so I post the current status of the project:

  • Custom firmware and hardware design (based on a reference design that includes a test pattern generator, a HDMI TX module and the physical controller). This is working on bare metal and now I need to make it work on PetaLinux.
  • The PetaLinux project is working, I can build the OS and run it on the board.

 

The problem:
On boot I get these messages:

...
[8.040534] xilinx-vphy 80050000.vid_phy_controller: probed
[8.046805] xilinx-vphy 80050000.vid_phy_controller: Cannot set rate : -22
[8.053691] VPhy version : 02.02 (0000)
[8.071364] xilinx-vphy 80050000.vid_phy_controller: probe successful

 Looking into the driver of the phy-controller (https://github.com/Xilinx/hdmi-modules/blob/master/hdmi/phy-vphy.c, line 533) I can see that the error

xilinx-vphy 80050000.vid_phy_controller: Cannot set rate : -22

is coming when it tries to set the nidru clock rate, but the device probe will continue anyway so (for now) it's ok for me.

 

The probe of the HDMI TX module gives the error for which I need help:

[8.079696] xlnx-drm-hdmi 80000000.v_hdmi_tx_ss: probed
[8.084983] xvphy_phy_init(ffffffc0078c5c00).
[8.089343] xvphy_phy_init(ffffffc06d11c000).
[8.093697] xvphy_phy_init(ffffffc06d2c4c00).
[8.097998] xlnx-drm-hdmi 80000000.v_hdmi_tx_ss: hdmi-tx sub-core address out-of range
[8.105925] xlnx-drm-hdmi: probe of 80000000.v_hdmi_tx_ss failed with error -14
...

The HDMI TX module error instead is breaking the device probe and I need to solve it as soon as possible. 

xlnx-drm-hdmi 80000000.v_hdmi_tx_ss: hdmi-tx sub-core address out-of range

This error can be found in the driver (https://github.com/Xilinx/hdmi-modules/blob/master/hdmi/xilinx_drm_hdmi.c#L2277) but I don't really know how to handle it.
I've already tried to edit the device tree but I've no clue on how to fix it.

 

Configs and device tree:

File project-spec/meta-user/recipes-core/images/petalinux-image.bbappend:

...
IMAGE_INSTALL_append = " kernel-module-hdmi"
...

File project-spec/configs/rootfs_config:

...
CONFIG_kernel-module-hdmi=y
...


File project-spec/meta-plnx-generated/recipes-core/images/petalinux-user-image.bb:

IMAGE_INSTALL = "\
... kernel-module-hdmi \ ...


Device tree (obtained using the command 'dtc -I dtb <project-root>/images/linux/system.dtb'):

...
amba_pl@0 { #address-cells = <0x2>; #size-cells = <0x2>; compatible = "simple-bus"; ranges; ... v_hdmi_tx_ss@80000000 { compatible = "xlnx,v-hdmi-tx-ss-3.1"; interrupt-names = "irq"; interrupt-parent = <0x4>;
interrupts = <0x0 0x5b 0x4>; reg = <0x0 0x80000000 0x0 0x20000>; xlnx,add-mark-dbg = "false"; xlnx,addr-width = <0xa>; xlnx,exdes-axilite-freq = <0x64>; xlnx,exdes-nidru = "false"; xlnx,exdes-rx-pll-selection = <0x0>; xlnx,exdes-topology = <0x1>; xlnx,exdes-tx-pll-selection = <0x6>; xlnx,hdmi-fast-switch = "true"; xlnx,hdmi-version = <0x3>; xlnx,hpd-invert = "false"; xlnx,hysteresis-level = <0xc>; xlnx,include-hdcp-1-4 = "false"; xlnx,include-hdcp-2-2 = "false"; xlnx,include-low-reso-vid = "false"; xlnx,include-yuv420-sup = "false"; xlnx,input-pixels-per-clock = <0x2>; xlnx,max-bits-per-component = <0xc>; xlnx,validation-enable = "false"; xlnx,vid-interface = <0x0>; xlnx,video-mask-enable = <0x1>; xlnx,audio-enabled = <0x0>; phy-names = "hdmi-phy0", "hdmi-phy1", "hdmi-phy2"; phys = <0x41 0x0 0x0 0x0 0x0 0x42 0x0 0x0 0x0 0x0 0x43 0x0 0x0 0x0 0x0>; }; ... vid_phy_controller@80050000 { compatible = "xlnx,vid-phy-controller-2.2"; interrupt-names = "irq"; interrupt-parent = <0x4>; interrupts = <0x0 0x59 0x4>; reg = <0x0 0x80050000 0x0 0x10000>; xlnx,axi4lite-enable = "true"; xlnx,component-name = "exdes_vid_phy_controller_0"; xlnx,device = "xczu7ev"; xlnx,dru-gain-g1 = <0x9>; xlnx,dru-gain-g1-p = <0x10>; xlnx,dru-gain-g2 = <0x4>; xlnx,dru-refclk-fabric-buffer = "none"; xlnx,err-irq-en = <0x0>; xlnx,for-upgrade-architecture = "zynquplus"; xlnx,for-upgrade-device = "xczu7ev"; xlnx,for-upgrade-maxoptvol = "0.876"; xlnx,for-upgrade-package = "ffvc1156"; xlnx,for-upgrade-part = "xczu7ev-ffvc1156-2-e"; xlnx,for-upgrade-refvol = "0.850"; xlnx,for-upgrade-speedgrade = "-2"; xlnx,hdmi-fast-switch = <0x1>; xlnx,input-pixels-per-clock = <0x2>; xlnx,int-hdmi-ver-cmptble = <0x3>; xlnx,nidru = <0x0>; xlnx,nidru-refclk-sel = <0x0>; xlnx,rx-gt-debug-ports = "false"; xlnx,rx-no-of-channels = <0x3>; xlnx,rx-outclk-buffer = "none"; xlnx,rx-pll-selection = <0x0>; xlnx,rx-protocol = <0x3>; xlnx,rx-refclk-sel = <0x1>; xlnx,rx-sb-ports = "true"; xlnx,rx-tmds-clk-buffer = "bufg"; xlnx,rx-video-clk-buffer = "bufg"; xlnx,silicon-revision = <0x0>; xlnx,speedgrade = "-2"; xlnx,supportlevel = <0x1>; xlnx,transceivercontrol = "false"; xlnx,tx-gt-debug-ports = "false"; xlnx,tx-no-of-channels = <0x3>; xlnx,tx-outclk-buffer = "none"; xlnx,tx-pll-selection = <0x6>; xlnx,tx-protocol = <0x1>; xlnx,tx-refclk-fabric-buffer = "none"; xlnx,tx-refclk-sel = <0x0>; xlnx,tx-sb-ports = "true"; xlnx,tx-tmds-clk-buffer = "bufg"; xlnx,tx-video-clk-buffer = "bufg"; xlnx,txpi-port-en = "false"; xlnx,txrefclk-rdy-invert = <0x1>; xlnx,use-gt-ch4-hdmi = <0x0>; xlnx,use-oddr-for-tmds-clkout = "true"; xlnx,vid-phy-axi4lite-addr-width = <0xa>; xlnx,vid-phy-axi4lite-data-width = <0x20>; xlnx,vid-phy-control-sb-rx-tdata-width = <0x1>; xlnx,vid-phy-control-sb-tx-tdata-width = <0x1>; xlnx,vid-phy-rx-axi4s-ch-int-tdata-width = <0x14>; xlnx,vid-phy-rx-axi4s-ch-tdata-width = <0x14>; xlnx,vid-phy-rx-axi4s-ch-tuser-width = <0x1>; xlnx,vid-phy-status-sb-rx-tdata-width = <0x1>; xlnx,vid-phy-status-sb-tx-tdata-width = <0x2>; xlnx,vid-phy-tx-axi4s-ch-int-tdata-width = <0x14>; xlnx,vid-phy-tx-axi4s-ch-tdata-width = <0x14>; xlnx,vid-phy-tx-axi4s-ch-tuser-width = <0x1>; xlnx,viper-reg = "false"; xlnx,tx-buffer-bypass = <0x1>; xlnx,transceiver-width = <0x2>; xlnx,transceiver-type = <0x5>; clock-names = "axi-lite", "dru-clk"; clocks = <0x35 0x35>; vphy_lane@0 { #phy-cells = <0x4>; linux,phandle = <0x41>; phandle = <0x41>; }; vphy_lane@1 { #phy-cells = <0x4>; linux,phandle = <0x42>; phandle = <0x42>; }; vphy_lane@2 { #phy-cells = <0x4>; linux,phandle = <0x43>; phandle = <0x43>; }; }; ... };

 

Thank you in advance,
Matteo

0 Kudos
1 Reply
Explorer
Explorer
314 Views
Registered: ‎10-18-2017

Re: HDMI Tx module probe failed on PetaLinux 2018.2

@tamburini.alpha-si Currently working on same issue on 2018.3 version of the tools. https://forums.xilinx.com/t5/Video/Linux-Video-PHY-Driver-Fail-to-Parse-Device-Tree/m-p/960877#M24728

Not sure if you have any tips/etc.?

0 Kudos