我查了一下, adc在linux下有专门的驱动子系统 iio
使用方法:
http://kcmetercec.top/2018/08/01/linux_driver_IIO_client/
驱动程序:
https://github.com/torvalds/linux/blob/master/drivers/iio/adc/sun4i-gpadc-iio.c
设备树配置:
https://patches.linaro.org/patch/96842/
ths: ths@01c25000 {
compatible = "allwinner,sun8i-a33-ths";
reg = <0x01c25000 0x100>;
#thermal-sensor-cells = <0>;
#io-channel-cells = <0>;
};
上面是温度传感器的iio设备, 没有找到 lradc 的, 可能要改改才行
]]>]]>
驱动能起来了 在/dev/input/event1 有这个文件。
就是读取的数据还是不对,不知道哪里还有问题
还有一个问题就是不知道为什么这里的code会不一致了 (这里是我引用层打印出来)
2222ev.type= 3 ev.code= 47 ev.value= 2
2222ev.type= 3 ev.code= 53 ev.value= 53
2222ev.type= 3 ev.code= 54 ev.value= 6
2222ev.type= 3 ev.code= 47 ev.value= 3
这里给屏蔽了
为什么出来的类型不是一样的哦 就是这个type 和code
没有 button 配置, 不就会出8楼的错误信息,
lradc->chan0_map_count = of_get_child_count(np); if (lradc->chan0_map_count == 0) { dev_err(dev, "keymap is missing in device tree\n");
然后不就退出初始化了吗?
只要读 ADC 值吗?
那可能要改驱动, 你看下杂项设备行不行?
你说的杂项设备是???
]]> lradc->chan0_map_count = of_get_child_count(np);
if (lradc->chan0_map_count == 0) {
dev_err(dev, "keymap is missing in device tree\n");
然后不就退出初始化了吗?
只要读 ADC 值吗?
那可能要改驱动, 你看下杂项设备行不行?
去掉 dts 的 button, 这不问题又绕回到 6楼了吗?
是的 因为我这里不要这几个按钮中断 我就是只要读取event1里面的数据
然后读取出来那个code不一样 vaule,, 从文档里面看到 只有低6位才是数据
你到荔枝派的板子上面测试吧, 我evtest试过键值和 dts一致。
就这几个里面的if语句 那个if 才是我读取的确切值 就是看打印跳变很大 我没有用button去控制 那我是不是可以将那个dock里面那几个button 给去掉了