HDMI驱动热插拔检测方法
1. 使用poll机制
1.1 如何使用?
a. open("/dev/HPD");
b. poll状态发生变化
c. read确定接上还是接下
1.2 情景分析:
- APP使用open("/dev/HPD");
- APP : poll -> 驱动:poll -> 休眠 -> 中断
- APP : read
2. state主动上报数据
2.1 switch设备简介:
2.1.1. 构造switch_dev:
.name = "hdmi";
.state = 1,0;
2.1.2 switch_dev_register
a. 创建class_create("switch");
/sys/class/switch
b. 在类下创建设备device_create("hdmi");
/sys/class/switch/hdmi
c. device_create_file("state");
/sys/class/switch/state
2.2 使用switch系统
2.2.1 第一种方法:
- 中断程序设置switch_dev的state
- APP读
/sys/class/switch/state
这种方法相当耗资源
2.2.2 第二种方法:
-
APP设置网络(读数据)
-
驱动:中断-> schdule_work -> 发送网络数据
a. 构造envp[]
b. kobject_uevent_env发送给user app
b.1 使用网络发送envp
b.2 /sbin/hotplug -
APP被唤醒,读、处理