[X]关闭

片上i2c通过PCA954x转换器获取HDMI设备EDID

文档创建者:里先森
浏览次数:9186
最后更新:2020-03-03
米联客MZ7035FD的HDMI接口上,其用于与设备通讯获取设备屏幕参数EDID的i2c接口,并非直接从PL的引脚出来布线到HDMI-A接口上,而是经过了一个i2c复用器PCA9548APW
我希望按照这篇文章(ZYNQ7000 #1 - PL端模拟HDMI信号输出环境下的Linux界面显示)一样,使用Digilent提供的相关ip实现hdmi视频信号分辨率自动识别。然而我遇到的问题是,我的板子上在hdmi-a接口与片子引出的i2c接口间加入了一块 PCA9548 i2c多路复用器件,原理图如下:

截图202003011956311852..png 截图202003011956498236..png
为此,我需要修改设备树并且在内核编译时加入pca954x的驱动支持。但是由于自身经验不足,不知应当如何修改设备树代码,找到了个接近的代码一葫芦画瓢修改了如下:
这个 PCA9548 是挂载在 pl 引出的 i2c0上,PCA9548 的地址如上面的原理图所示,三个地址位都被拉到了地,因此它在 i2c0 设备上的地址应当是 01110000 = 0x70 (七位数据位)。需要用到的 HDMI 的 i2c 接到了 PCA9548 的第四个分位上


  1. /include/ "system-conf.dtsi"
  2. / {
  3. };
  4. &i2c0 {
  5. clock-frequency = <100000>;
  6. status = "okay"
  7. i2cmux@70 {
  8.   compatible = "nxp,pca9548";
  9.   #address-cells = <1>;
  10.   #size-cells = <0>;
  11.   reg = <0x70>;
  12.   status = "okay";
  13.                
  14.   i2cH1:i2chdmi@4{
  15.    #address-cells = <1>;
  16.    #size-cells = <0>;
  17.    reg = <4>;
  18.    /* routed to HDMI connector (H1) */
  19.    }
  20.   }
  21. };
  22. &amba_pl {
  23. axidma_chrdev: axidma_chrdev@0 {
  24. compatible = "xlnx,axidma-chrdev";
  25. dmas = <&axi_dma_0 0>;
  26. dma-names = "axidma0_channel";
  27. };
  28. hdmi_encoder_0:hdmi_encoder {
  29.   compatible = "digilent,drm-encoder";
  30.   digilent,edid-i2c = <&i2cH1>;
  31.   };
  32.   xilinx_drm {
  33.    compatible = "xlnx,drm";
  34.    xlnx,vtc = <&v_tc_0>;
  35.    xlnx,connector-type = "HDMIA";
  36.    xlnx,encoder-slave = <&hdmi_encoder_0>;
  37.    clocks = <&axi_dynclk_0>;
  38.    dglnt,edid-i2c = <&i2cH1>;
  39.    planes {
  40.     xlnx,pixel-format = "rgb888";
  41.     plane0 {
  42.      dmas = <&axi_vdma_0 0>;
  43.      dma-names = "dma";
  44.     };
  45.    };
  46.   };
  47. };
复制代码
按照我的理解,只需要给 xilinx_drm 与 hdmi_encoder 的 edid-i2c 赋予 i2c 节点即可。
请问我这样的设备树文件有问题吗?因为主要相关的是linux设备树问题,所以发在该板块

发表评论已发布 2

ぉ沙皮狗的忧伤

发表于 2020-3-3 09:35:33 | 显示全部楼层

你这i2c的设备树代码写的,你看我的
截图202003030934483930..png

ぉ沙皮狗的忧伤

发表于 2020-3-3 09:36:54 | 显示全部楼层

你这里pinctrl没写
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则