在内核中添加显示屏开关的设定
需求
dts文件中添加一个指定的gpio口来作为显示屏开关的控制,如果dts中该设备信息生效,在内核启动后给用户开启一个接口,让应用程序来完成对显示屏开关的控制(以达到随开随关的目的)。
起因:在实际应用中发现一种屏在使用时如果最开始没有确定的显示数据给到时,直接上电会出现随机的白点,且每次白点的数量和位置都随机。
实现要点
- 基本的gpio的操作,设计到gpio的注册,方向设定和导出(到用户空间)等;
- 到用户空间就是通过
sysfs
来进行连接的 - 在dts中需要创建内核代码能够搜寻到的路径,搜寻路径需要用到
of_
设备树的API - 以上添加的入口可以设置在板级设备信息的初始化过程中,即
arch/arm/mach-xxx/mach-yyyy.c
具体代码梳理
- DT_MACHINE_START
DT_MACHINE_START(IMX6Q, "Freescale i.MX6 Quad/DualLite (Device Tree)")
/*
* i.MX6Q/DL maps system memory at 0x10000000 (offset 256MiB), and
* GPU has a limit on physical address that it accesses, which must
* be below 2GiB.
*/
.dma_zone_size = (SZ_2G - SZ_256M),
.smp = smp_ops(imx_smp_ops),
.map_io = imx6q_map_io,
.init_irq = imx6q_init_irq,
.init_ti