[Android driver] pinctrl control gpio writing

自己也简单总结下,方便下次写

 

1.头文件
        #include <linux/pinctrl/consumer.h>

2.四个指针
        struct pinctrl* pintrl;
        struct pinctrl_state *pins_default;       
                                 //"default"标签的gpio,在驱动probe之前会设置成default对应的gpio状态
                                //pinctrl.c, 关键字default_state
        struct pinctrl_state *rst_output0, *rst_output1;
                                //一个引脚一般两种电平,一般是高低,对应dtsi里两个标签

--------------------------
pdev是platform驱动匹配probe调用来的

    //先获得一些指针,忽略一些检查指针有效的函数
    pinctrl = devm_pinctrl_get(&pdev->dev);
    pins_default = pinctrl_lookup_state(pinctrl1, "default");
    rst_output0 = pinctrl_lookup_state(pinctrl1, "state_rst_output0");
    rst_output1 = pinctrl_lookup_state(pinctrl1, "state_rst_output1");

    //然后在需要设置高低的地方,使引脚电平生效,设置高或低
    pinctrl_select_state(pinctrl, rst_output1);
    pinctrl_select_state(pinctrl, rst_output0); 

In dtsi, the string name corresponds to it, default is not set here

照着写

 

Guess you like

Origin blog.csdn.net/John_chaos/article/details/109293046