gpio 子系统

当管脚复用为GPIO子系统时候

  

&iomuxc {
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_hog_1>;
    imx6ul-evk {
        pinctrl_hog_1: hoggrp-1 {
            fsl,pins = <
                MX6UL_PAD_UART1_RTS_B__GPIO1_IO19   0x17059 /* SD1 CD */
                MX6UL_PAD_GPIO1_IO05__USDHC1_VSELECT    0x17059 /* SD1 VSELECT */
                MX6UL_PAD_GPIO1_IO09__GPIO1_IO09        0x17059 /* SD1 RESET */
            >;
        };
以              MX6UL_PAD_UART1_RTS_B__GPIO1_IO19   0x17059 /* SD1 CD */为例子
 
在设备树上找到
&usdhc1 {
    pinctrl-names = "default", "state_100mhz", "state_200mhz";
    pinctrl-0 = <&pinctrl_usdhc1>;
    pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
    pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
    cd-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>;
    keep-power-in-suspend;
    enable-sdio-wakeup;
    vmmc-supply = <&reg_sd1_vmmc>;
    status = "okay";
};
 
        pinctrl_usdhc1: usdhc1grp {
            fsl,pins = <
                MX6UL_PAD_SD1_CMD__USDHC1_CMD     0x17059
                MX6UL_PAD_SD1_CLK__USDHC1_CLK     0x10071
                MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x17059
                MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x17059
                MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x17059
                MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x17059
            >;
    cd-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>; 定义了一个叫cd-gpios的属性 
 此处使用了GPIO1_IO09
            gpio1: gpio@0209c000 {
                compatible = "fsl,imx6ul-gpio", "fsl,imx35-gpio";
                reg = <0x0209c000 0x4000>;
                interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
                         <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
                gpio-controller;
                #gpio-cells = <2>;
                interrupt-controller;
                #interrupt-cells = <2>;
            };
 
如何从设备树中获取要使用的GPIO信息 of函数
 
  结点  编号请求 输入输出 set get  
 
 1. 首先 获取到GPIO所处的设备节点,比如of_find_node_by_path
  2.  获取GPIO编号,of_get_named_gpio函数 ,返回值就是GPIO编号
   3. 请求此编号 gpio_request函数
  4. 设置GPIO输入输出 gpio_direction_input or output
 5. 输入 gpio_get_value ,输出 gpio_set_value
 
 
gpio驱动 
  
 
posted @ 2021-10-05 15:21  __help  阅读(223)  评论(0)    收藏  举报