1. 程式人生 > >Android kernel dts gpio幾種常見設定的pinctrl配置

Android kernel dts gpio幾種常見設定的pinctrl配置

pinctrl的配置file是<project>.dts
備註:配置是以mt6735上gpio84舉例的
1.配置成輸入上拉
&pio {
test_pull_up: test_pull_up {
    pins_cmd_dat {
        pins = <PINMUX_GPIO84__FUNC_GPIO84>;
        slew-rate = <0>;
        bias-pull-up = <00>;
        };
    };
};
2.配置成輸入下拉
&pio {
    test_pull_down: test_pull_down {
        pins_cmd_dat {
            pins = <PINMUX_GPIO84__FUNC_GPIO84>;
            slew-rate = <0>;
            bias-pull-down = <00>;
        };
    };
};
3.配置成輸入pull disable
&pio {
    test_pull_none: test_pull_none {
        pins_cmd_dat {
            pins = <PINMUX_GPIO84__FUNC_GPIO84>;
            slew-rate = <0>;
            bias-disable;
            };
       };
};
4.配置成輸出high
&pio {
    test_out_high: test_out_high {
        pins_cmd_dat {
            pins = <PINMUX_GPIO84__FUNC_GPIO84>;
            slew-rate = <1>;
            bias-disable;
            output-high;
        };
    };
};
5.配置成輸出low
&pio {
    test_out_low: test_out_low {
        pins_cmd_dat {
            pins = <PINMUX_GPIO84__FUNC_GPIO84>;
            slew-rate = <1>;
            bias-disable;
            output-low;
        };
    };
};
6.配置成特定的mode
&pio {
    test_mode: test_mode {
        pins_cmd_dat {
            pins = <PINMUX_GPIO84__FUNC_KCOL0>;
        };
    };
};

高通除錯遇見過幾種坑

1。dts配置不對。導致驅動沒辦法控制。

2。dts裡面引腳被其他佔用。導致控制失敗

3。initrc裡面的某個service啟動的時候用掉了某個引腳。導致剛開始的幾十秒是好的。後面不對。