pin control & dts详解,含实际代码

dts位于

linux/arch/arm/boot/dts


1.接口(此部分摘自http://www.wowotech.net/gpio_subsystem/pin-control-subsystem.html)

(1)devm_pinctrl_get和pinctrl_get。devm_pinctrl_get是Resource managed版本的pinctrl_get,核心还是pinctrl_get函数。这两个接口都是获取设备(设备模型中的struct device)的pin control state holder(struct pinctrl)。pin control state holder不是静态定义的,一般在第一次调用该函数的时候会动态创建。

(2)devm_pinctrl_put和pinctrl_put。是(1)接口中的逆函数。devm_pinctrl_get和pinctrl_get获取句柄的时候申请了很多资源,在devm_pinctrl_put和pinctrl_put可以释放。需要注意的是多次调用get函数不会重复分配资源,只会reference count加一,在put中referrenct count减一,当count==0的时候才释放该device的pin control state holder持有的所有资源。

(3)pinctrl_lookup_state。根据state name在pin control state holder找到对应的pin control state。具体的state是各个device自己定义的,不过pin control subsystem自己定义了一些标准的pin control state,定义在pinctrl-state.h文件中:

(4)pinctrl_select_state。设定一个具体的pin control state接口。


2.具体过程(含具体代码):

2.1 driver-->


                spi->dev.of_node=of_find_compatible_node(NULL, NULL, "mediatek,mt6735-finger");





2.2 dtsi-->(相当于dts的头文件)

                finger: finger {
                               compatible = "mediatek,mt6735-finger";
                };
2.3 dts-->

                    &finger {
                        pinctrl-names = "fp_default", "finger_rst_high", "finger_rst_low","eint_as_int", "eint_in_low", "eint_in_float", "miso_pull_up",
                         "miso_pull_disable","finger_power_low","finger_power_high","finger_mode_as_cs","finger_mode_as_ck","finger_mode_as_mi","finger_mode_as_mo";
                        pinctrl-0 = <&fp_default>;
                        pinctrl-1 = <&fp_rst_high>;
                        pinctrl-2 = <&fp_rst_low>;
                        pinctrl-3 = <&fp_eint_as_int>;
                        pinctrl-4 = <&fp_eint_in_low>;
                        pinctrl-5 = <&fp_eint_in_float>;
                        pinctrl-6 = &

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值