Linux DRM 那些事 - HDMI 接口 DTS 配置

news2024/9/25 3:20:21

本文基于RockPI 4A单板Debian系统 Linux 4.4 内核介绍DRM框架HDMI接口DTS配置。

DTS中主要实现:HDMI的使能、VOP绑定、IOMUX引脚配置和HDMI控制器配置。

一、HDMI 配置

文件:arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi

#include "rk3399.dtsi"
#include "rk3399-linux.dtsi"
#include "rk3399-opp.dtsi"
​
## 1. HDMI使能
&hdmi {
    #address-cells = <1>;
    #size-cells = <0>;
    #sound-dai-cells = <0>;
    pinctrl-names = "default";
    pinctrl-0 = <&hdmi_i2c_xfer>, <&hdmi_cec>;  ## 配置HDMI IOMUX,细节见下面
    status = "okay";               ## 使能HDMI,驱动可执行probe()。status的值覆盖include的其他dtsi文件中status的值
};
​
## 2.设置HDMI绑定vopb
## 2.1 禁止vopl
&hdmi_in_vopl {
    status = "disabled";
};
​
## 2.2 使能vopb
&hdmi_in_vopb {
    status = "okay";
};
​
## 2.3 绑定到vopb
&route_hdmi {
    status = "okay";
    connect = <&vopb_out_hdmi>;
};
二、HDMI IOMUX

RK3399 HDMI接口共有 3 个引脚需要设置IOMUX功能,具体如下:

1)IO_I2C3HDMIsda_UART2DBGBsin_HDMII2Csda_GPIO1830gpio4c0

2)IO_I2C3HDMIscl_UART2DBGBsout_HDMII2Cscl_GPIO1830gpio4c1

3)IO_HDMIcecinout_EDPhotplug_GPIO1830gpio4c7

文件:arch/arm64/boot/dts/rockchip/rk3399.dtsi

  hdmi {
        ## 1.设置HDMI I2C功能
        hdmi_i2c_xfer: hdmi-i2c-xfer {
            rockchip,pins =
                <4 17 RK_FUNC_3 &pcfg_pull_none>,
                <4 16 RK_FUNC_3 &pcfg_pull_none>;
        };
​
        ## 2.设置HDMI-CEC功能
        hdmi_cec: hdmi-cec {
            rockchip,pins =
                <4 23 RK_FUNC_1 &pcfg_pull_none>;
        };
    };

<4 16 RK_FUNC_3 &pcfg_pull_none>含义如下:

1)4:表示GPIO4

2)16:表示GPIO4C0,由于GPIOAGPIOB各有 8 个引脚,计算得到:GPIO4C0、GPIO4C1和GPIO4C7分别为 16、17 和 23。

3)RK_FUNC_3:表示IOMUX选择功能 3,即hdmii2c_sda,见下图。

4)pcfg_pull_none:表示没有上 / 下拉。

三、HDMI 控制器

文件:arch/arm64/boot/dts/rockchip/rk3399.dtsi

hdmi: hdmi@ff940000 {
    # 1.与HDMI平台驱动匹配(实现了DRM框架中的encoder和connector初始化)
    compatible = "rockchip,rk3399-dw-hdmi";
    
    # 2.寄存器物理基地址和内存映射长度(0x20000)
    reg = <0x0 0xff940000 0x0 0x20000>;
    
    ## 3.IOMUX配置,见本文第二部分
    pinctrl-names = "default";
    pinctrl-0 = <&hdmi_i2c_xfer>;
    
    # 4.中断配置,见"Linux内核中断之获取中断号"
    interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH 0>;
    
    # 5. 时钟配置
    clocks = <&cru PCLK_HDMI_CTRL>,
         <&cru SCLK_HDMI_SFR>,
         <&cru PLL_VPLL>,
         <&cru PCLK_VIO_GRF>,
         <&cru SCLK_HDMI_CEC>;
    clock-names = "iahb", "isfr", "vpll", "grf", "cec";
    
    # 6.电源域(后续介绍)
    power-domains = <&power RK3399_PD_HDCP>;
    
    # 7.寄存器读写访问宽度(4字节)
    reg-io-width = <4>;
    
    # 8.指向GRF(通用寄存器文件)
    rockchip,grf = <&grf>;
    
    # 9.禁止状态,rk3399-rock-pi-4.dtsi中使能
    status = "disabled";
​
    # 10.配置绑定vop的hdmi接口的端节点
    ports {
        hdmi_in: port {
            #address-cells = <1>;
            #size-cells = <0>;
            hdmi_in_vopb: endpoint@0 {
                reg = <0>;
                remote-endpoint = <&vopb_out_hdmi>;
            };
            hdmi_in_vopl: endpoint@1 {
                reg = <1>;
                remote-endpoint = <&vopl_out_hdmi>;
            };
        };
    };
};


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1924194.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

hutool处理excel时候空指针小记

如图所示&#xff0c;右侧的会识别不到 参考解决方案&#xff1a; /***Description: 填补空缺位置为null/空串*Param: hutool读取的list*return: 无*Author: y*date: 2024/7/13*/public static void formatHutoolExcelArr(List<List<Object>> list) {if (CollUtil…

graphviz subgraph添加边界框

subgraph name 属性必须要以cluster开头。 A Quick Introduction to GraphvizAn awesome tool for software documentation and visualizing graphshttps://www.worthe-it.co.za/blog/2017-09-19-quick-introduction-to-graphviz.html digraph {rankdir"LR"// the n…

教材目录管理功能概述

在智慧校园的教材管理体系中&#xff0c;教材目录管理板块扮演着连接知识与学习者的桥梁角色&#xff0c;对教育资源的有序部署与高效运转起着至关重要的作用。该板块聚焦于基础功能的精炼与优化&#xff0c;力图构建一个界面友好、操作简便的教材信息管理环境。 该板块设计之初…

【Unity学习笔记】第十九 · 物理引擎约束求解解惑(LCP,最优,拉格朗日乘数法,SI,PGS,基于冲量法)

转载请注明出处: https://blog.csdn.net/weixin_44013533/article/details/140309494 作者&#xff1a;CSDN|Ringleader| 在学习物理引擎过程中&#xff0c;有几大问题一直困扰着我&#xff1a; 约束求解到底是LCP还是带约束最优问题&#xff1f;约束求解过程中拉格朗日乘数法…

.NET MAUI开源架构_1.学习资源分享

最近需要开发Android的App&#xff0c;想预研下使用.NET开源架构.NET MAUI来开发App程序。因此网上搜索了下相关资料&#xff0c;现在把我查询的结果记录下&#xff0c;方便后面学习。 1.官方文档 1.1MAUI官方学习网站 .NET Multi-Platform App UI 文档 - .NET MAUI | Micro…

paddlepaddle2.6,paddleorc2.8,cuda12,cudnn,nccl,python10环境

1.安装英伟达显卡驱动 首先需要到NAVIDIA官网去查自己的电脑是不是支持GPU运算。 网址是&#xff1a;CUDA GPUs | NVIDIA Developer。打开后的界面大致如下&#xff0c;只要里边有对应的型号就可以用GPU运算&#xff0c;并且每一款设备都列出来相关的计算能力&#xff08;Compu…

《Python零基础入门》——关于PyCharm使用技巧及python基本概念

从本次文章开始&#xff0c;我们将学习一门新的编程语言——Python。作为最热门的编程语言&#xff0c;Python相对比较清晰、简单。 python主要的编译工具就是pycharm&#xff0c;关于pycharm的安装及python配置环境&#xff0c;大家可自行参考网络上的教程&#xff0c;本文不…

深入Linux:权限管理与常用命令详解

文章目录 ❤️Linux常用指令&#x1fa77;zip/unzip指令&#x1fa77;tar指令&#x1fa77;bc指令&#x1fa77;uname指令&#x1fa77;shutdown指令 ❤️shell命令以及原理❤️什么是 Shell 命令❤️Linux权限管理的概念❤️Linux权限管理&#x1fa77;文件访问者的分类&#…

Windows之nslookup命令

一、命令简介 nslookup 是一个网络管理命令行工具&#xff0c;用于查询 DNS 记录。它可以用来查找域名对应的 IP 地址&#xff0c;或反向查找 IP 地址对应的域名。查询结果中非权威应答&#xff08;Non-authoritative answer&#xff09;意味着answer来自于其它服务器的缓存&am…

小众好玩的赛车游戏:环道巨星 CIRCUIT SUPERSTARS中文安装包

《环道巨星》&#xff08;Circuit Superstars&#xff09;是一款由赛车迷亲手为其他赛车迷打造的俯视角赛车游戏。荟集史上各类赛车运动&#xff0c;旨在提供刺激好玩的驾驶体验&#xff1b;而游戏自带的高技术难度将促使玩家长时间磨砺技巧&#xff0c;以达成完美的一圈。 游戏…

pdf只要前几页,pdf中只要前几页怎么处理

在处理pdf文件时&#xff0c;我们有时只需要其中的一页或几页&#xff0c;而不是整个文档。那么&#xff0c;如何快速且高效地从pdf中提取单独的一页呢&#xff1f;本文将为你揭示几种简单易行的方法&#xff0c;让你轻松实现这一目标。 使用 “轻云处理pdf官网” 打开 “轻云…

牛客小白月赛98 (个人题解)(补全)

前言&#xff1a; 昨天晚上自己一个人打的小白月赛&#xff08;因为准备数学期末已经写烦了&#xff09;&#xff0c;题目难度感觉越来越简单了&#xff08;不在像以前一样根本写不了一点&#xff0c;现在看题解已经能看懂一点了&#xff09;&#xff0c;能感受到自己在不断进步…

基于PyTorch深度学习实践技术应用

近年来&#xff0c;Python语言由于其开源、简单等特点&#xff0c;受到了广大程序开发者的偏爱&#xff0c;丰富的函数库使得其在各行各业中得到了广泛的应用。伴随着新一轮人工智能&#xff08;尤其是深度学习&#xff09;的快速发展&#xff0c;许多深度学习框架应运而生&…

Apple intelligence 秋季发布:苹果正式进军AI行业!

Apple intelligence 秋季发布&#xff1a;苹果正式进军AI行业&#xff01; 前言 Apple Intelligence WWDC 2024大会上,苹果发布了一个惊喜——个人智能系统Apple Intelligence。它不仅让iPhone、iPad和Mac变得更个性化、更强大、更智能,也标志着苹果正式加入了人工智能的大联盟…

爸爸上下班c++

题目描述 佳佳爸爸每天上午a时b分上班&#xff0c;每天下午c时d分下班&#xff0c;&#xff08;采用的是12小时制&#xff09;&#xff0c;请问佳佳爸爸上班的时间是多少分钟&#xff0c;多少秒&#xff1f; 输入 一行4个整数&#xff0c;分别代表a,b,c,d,整数与整数之间以空…

[Vulnhub] Tr0ll3 aircrack-ng+lynx

信息收集 IP AddressOpening Ports192.168.101.147TCP:22 $ ssh start192.168.101.147 用户:Start startTr0ll3:~$ find / -type f -perm 0777 2>/tmp/1 startTr0ll3:~$ cat /var/log/.dist-manage/wytshadow.cap | nc 192.168.101.128 10035 WIFI握手包 aircrack-ng 破…

一文了解MySQL的表级锁

文章目录 ☃️概述☃️表级锁❄️❄️介绍❄️❄️表锁❄️❄️元数据锁❄️❄️意向锁⛷️⛷️⛷️ 介绍 ☃️概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传统的计算资源&#xff08;CPU、RAM、I/O&#xff09;的争用以外&#xff0…

Vue快速入门安装与配置(最新版、超详细、图文结合)

一.Node.js安装 1.node.js下载 进入node.js官网下载&#xff0c;选择自己需要的版本&#xff0c;最好下载长期支持版&#xff0c;最新版可能不太稳定。 Node.js 中文网 2.node.js安装 下载完成后&#xff0c;开始双击打开安装包安装node.js。 勾选协议&#xff0c;然后nex…

尚硅谷js

原型模式 原型对象就是相当于java的static,所有实例对象可以直接用静态的属性或者方法 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><script type"text/javascript&q…

MAC通过SSH连接VirtualBox中的虚拟机

1、虚拟机网络连接方式使用桥接方式-桥接网卡 2、重启虚拟机&#xff0c;查看虚拟机ip地址是否跟Mac宿主机在同一网段 3、SSH工具&#xff08;推荐Tabby&#xff09;输入IP、用户名和密码就能连接虚拟机了