lornyin 发表于 2017-9-26 08:41:55

设备树下platform设备测试,获取GPIOS失败



我想体验下设备树,于是做了个测试,我想在设备树中描述个device,然后在driver获取device描述的资源(GPIO);


1。我在 myimx6ek314.dtsi 中添加了一个节点,如图:




引用的pinctrl_nandf_pad   在myimx6ek314-iomux.dtsi文件中。如下图。
(MX6QDL_PAD_NANDF_D3__GPIO2_IO03 第六个参数我修改过为0x80000000 0x40000000测试过。都无法获取GPIO)



2。然后我编译dts

#make dtbs

3。替换dtbs文件,重新烧写

4。编写 driver

http://paste.ubuntu.com/25617859/这里是代码

截图是我的probe代码,测试中driver、device已经匹配



*********************以下是板子的输出*****************************
root@myimx6ek314:~# insmod ds18b20.ko
imx6q-pinctrl 20e0000.iomuxc: pin MX6Q_PAD_NANDF_CS0 already requested by 20e0000.iomuxc; cannot claim for my-ds18b20.23
imx6q-pinctrl 20e0000.iomuxc: pin-185 (my-ds18b20.23) status -22
imx6q-pinctrl 20e0000.iomuxc: could not request pin 185 (MX6Q_PAD_NANDF_CS0) from group nandfpadgrpon device 20e0000.iomuxc
ds18b20 my-ds18b20.23: Error applying setting, reverse things back
probe!!!!!!!!!!
get_re errorroot@myimx6ek314:~#


,很奇怪的是,感觉获取出来是MX6Q_PAD_NANDF_CS0 (我设备树中描述的是MX6QDL_PAD_NANDF_D3__GPIO2_IO03 在底板的U14 ),一直获取失败,望指点我哪里出错了




软件01 发表于 2017-9-27 09:46:30

vim arch/arm/boot/dts/myimx6ek314.dtsi    默认已经配置了
&iomuxc {
      pinctrl-names = "default";
      pinctrl-0 = <&pinctrl_eim0_pad &pinctrl_eim2_pad &pinctrl_lcd_pad &pinct
rl_sd1_pad &pinctrl_sd2_pad &pinctrl_sd3_pad &pinctrl_enet_pad &pinctrl_gpio_pad
&pinctrl_gpio_mipi_csi &pinctrl_nandf_pad>;

你可也改
&iomuxc {
      pinctrl-names = "default";
      pinctrl-0 = <&pinctrl_eim0_pad &pinctrl_eim2_pad &pinctrl_lcd_pad &pinct
rl_sd1_pad &pinctrl_sd2_pad &pinctrl_sd3_pad &pinctrl_enet_pad &pinctrl_gpio_pad
&pinctrl_gpio_mipi_csi>;
或者直接把那个管脚重新定义一个{}里面,之前的那个pinctrl_nandf_pad需要的一个管脚屏蔽掉

lornyin 发表于 2017-9-28 08:38:01

感谢,已解决~~~~~~ pinctrl-0 = <&pinctrl_eim0_pad > 后 就会初始化并申请这些引脚吗

软件01 发表于 2017-9-28 09:30:10

lornyin 发表于 2017-9-28 08:38
感谢,已解决~~~~~~ pinctrl-0 =后 就会初始化并申请这些引脚吗

是的,不要重复定义
页: [1]
查看完整版本: 设备树下platform设备测试,获取GPIOS失败