当前位置: 首页 > news >正文

rk3576--- HDMI CEC唤醒

文章目录

  • 一、CEC唤醒的相关概念
  • 二、CEC唤醒实现
    • (一)内核配置
    • (二)设备树dts
    • (三)驱动注册中断
    • (四)休眠后开启MCU
    • (五)验证

一、CEC唤醒的相关概念

CEC 是一种在 HDMI 设备之间进行通信的协议,允许用户通过一个遥控器控制多个设备

  • 注:确保设备支持cec功能

二、CEC唤醒实现

(一)内核配置

打开内核下述的配置

CONFIG_DRM_DW_HDMI_CEC=y

检查dw-hdmi-cec.c文件是否被编译生成.o文件

(二)设备树dts

需要配置HDMI CEC引脚:
在休眠状态下设置为GPIO功能,在唤醒状态下设置为休眠状态

设备树示例(根据实际引脚进行修改)

&pinctrl {/* 定义 CEC 功能的引脚配置 */cec_pins: cec-pins {rockchip,pins =/* hdmi_cec */<0 RK_PC2 9 &pcfg_pull_none>;};/* 定义 GPIO 功能的引脚配置 */cec_gpio_pins: cec-gpio-pins {rockchip,pins =/* hdmi_cec */<0 RK_PC2 0 &pcfg_pull_none>;};
};/* 定义 HDMI 节点 */
&hdmi {/* 引脚控制属性 */pinctrl-names = "default","shutdown";pinctrl-0 = <&cec_pins &hdmi_tx_scl &hdmi_tx_sda>;pinctrl-1 = <&cec_gpio_pins>;
};

(三)驱动注册中断

在休眠之前注册CEC引脚的中断,我是在dw_hdmi-rockchip.c文件中注册的中断

  • 注:注意辨别在休眠时调用的是dw_hdmi_rockchip_shutdown还是dw_hdmi_rockchip_suspend

此处以dw_hdmi_rockchip_shutdown为例

static void dw_hdmi_rockchip_shutdown(struct platform_device *pdev)
{......hdmi->cec_gpio = devm_gpiod_get(&pdev->dev, "cec", 0);if (IS_ERR(hdmi->cec_gpio)) dev_err(&pdev->dev, "******Failed to get cec_gpio\n");hdmi->irq = gpiod_to_irq(hdmi->cec_gpio);if (hdmi->irq < 0)dev_err(&pdev->dev, "******Failed to register interrupt\n");ret = devm_request_threaded_irq(&pdev->dev, hdmi->irq, NULL, cec_shutdown_threaded_handler,IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_ONESHOT,"hdmi_cec_intp", NULL);if (ret)dev_err(&pdev->dev, "******Failed to request INTP threaded IRQ: %d", ret);.....
}

(四)休眠后开启MCU

修改 ./rkbin/RK3576TRUST.ini 文件(根据具体平台而异)
设置加载的bin文件以及elf文件

(五)验证

重新编译验证
屏幕关机时,开发板进入休眠;
屏幕开机时,开发板唤醒。

http://www.xdnf.cn/news/427501.html

相关文章:

  • TCP核心机制
  • 机器学习第八讲:向量/矩阵 → 数据表格的数学表达,如Excel表格转数字阵列
  • 已情感分析入门学习大模型-初级篇
  • MCP-RAG 服务器:完整设置和使用指南
  • Java 集合与 MyBatis 动态 SQL 实战教程
  • 普通项目与 FreeRTOS 项目的异同
  • 【NLP 72、Prompt、Agent、MCP、function calling】
  • 全景系统监控利器:Glances 使用介绍与实战指南
  • 【数据结构】双向链表
  • 开发与AI融合的Windsurf编辑器
  • 屏幕与触摸调试
  • Retrofit vs Feign: 介绍、对比及示例
  • 关于 javax.validation.constraints的详细说明
  • Visual Studio 项目 .gitignore 文件指南
  • 如何界定合法收集数据?
  • 【C++】【设计模式】生产者-消费者模型
  • EDR与XDR如何选择适合您的网络安全解决方案
  • 自我奖励语言模型:突破人类反馈瓶颈
  • WebGIS开发面试题:前端篇(六)
  • 【递归、搜索与回溯】专题一:递归(二)
  • electron 基础知识
  • 软考软件评测师——计算机组成与体系结构(分级存储架构)
  • 当三维地理信息遇上气象预警:电网安全如何实现“先知先觉”?
  • 项目中会出现的css样式
  • MQTT协议详解:物联网通信的轻量级解决方案
  • JMeter同步定时器 模拟多用户并发访问场景
  • Qt进阶开发:QTcpSocket的详解
  • Leetcode 3542. Minimum Operations to Convert All Elements to Zero
  • APISQL免费版安装教程(视频)
  • java刷题基础知识