【Linux驱动】100ask_imx6ull中ADC光敏电阻实验踩坑

【1】不出问题的前提条件:完全使用模组代码中的设备树文件与配套APP
【2】本人问题:使用自己的设备树dts生成的dtb时,发现dev目录下根本没有iio:device0,从而直接使用配套APP时出现无法打开文件的情况。
经过对两个设备树启动时内核打印的对比发现,在使用自己的设备树时,会有以下打印:
[ 4.239934] imx6ul-pinctrl 20e0000.iomuxc: pin MX6UL_PAD_GPIO1_IO03 already requested by 2040000.tsc; cannot claim for 2198000.adc
[ 4.252029] imx6ul-pinctrl 20e0000.iomuxc: pin-26 (2198000.adc) status -22
[ 4.259265] imx6ul-pinctrl 20e0000.iomuxc: could not request pin 26 (MX6UL_PAD_GPIO1_IO03) from group adc1grp on device 20e0000.iomuxc
[ 4.271801] vf610-adc 2198000.adc: Error applying setting, reverse things back
[ 4.279399] vf610-adc: probe of 2198000.adc failed with error -22
这表明,在内核配置时其实启用了vf610,但是在申请引脚的时候出现了MX6UL_PAD_GPIO1_IO03被tsc占用的情况。
在设备树中,tsc的引脚是:
TSC引脚
而ADC1的引脚是:
ADC1引脚
很明显,这两个外设共同使用了GPIO1_IO3以及GPIO1_IO4这两个引脚,因此不能同时使用。
但是我在对比自己的设备树和模组代码里的设备树时发现,两者的tsc节点都是启用的,并不存在谁注释了引脚或者status是‘disable’的情况,这就让我有点头疼了,到底是什么导致它的设备树可以运行,而我的设备树不能运行,既然就是因为tsc占用IO导致的,那理应都有问题啊!
最后我再认真比对使用模组代码中的设备树时发现以下打印:
[ 2.817382] imx6ul-pinctrl 20e0000.iomuxc: pin MX6UL_PAD_GPIO1_IO01 already requested by 2010000.ecspi; cannot claim for 2040000.tsc
[ 2.829622] imx6ul-pinctrl 20e0000.iomuxc: pin-24 (2040000.tsc) status -22
[ 2.836636] imx6ul-pinctrl 20e0000.iomuxc: could not request pin 24 (MX6UL_PAD_GPIO1_IO01) from group tscgrp on device 20e0000.iomuxc
[ 2.848825] imx6ul-tsc 2040000.tsc: Error applying setting, reverse things back
[ 2.856266] imx6ul-tsc: probe of 2040000.tsc failed with error -22
天呐!这也太坑爹了!官方的设备树能用是因为:
spi占用了tsc的引脚→tsc没起来→tsc引脚没占用→adc可以申请到引脚了→生成设备文件
【3】目前的解决办法:
在设备树中将 tsc结点的status直接设置为disable就完事了,反正模组代码里也是因为其他设备占用tsc导致它起不来。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值