高通msm8953 dts gpio驱动实例
时间: 2023-08-10 21:09:49 浏览: 330
GPIO驱动示例程序
以下是高通 MSM8953 SoC 上使用 DTS(Device Tree Source)描述的 GPIO 驱动实例:
```
&tlmm {
gpio_keys: gpio-keys {
compatible = "gpio-keys";
#address-cells = <1>;
#size-cells = <0>;
pinctrl-names = "default";
pinctrl-0 = <&button_pins>;
status = "okay";
button@4 {
label = "power";
gpios = <&tlmm 4 GPIO_ACTIVE_LOW>;
linux,code = <KEY_POWER>;
debounce-interval = <50>;
gpio-key,wakeup;
gpio-key,wakeup-source;
};
button@3 {
label = "volume_up";
gpios = <&tlmm 3 GPIO_ACTIVE_LOW>;
linux,code = <KEY_VOLUMEUP>;
debounce-interval = <50>;
};
button@2 {
label = "volume_down";
gpios = <&tlmm 2 GPIO_ACTIVE_LOW>;
linux,code = <KEY_VOLUMEDOWN>;
debounce-interval = <50>;
};
};
button_pins: button_pins {
pins = "gpio4", "gpio3", "gpio2";
function = "gpio_in";
drive-strength = <2>;
bias-disable;
};
};
```
在上面的示例中,我们定义了一个名为“gpio_keys”的节点,它表示一个 GPIO 按键设备。在该节点下,我们定义了三个名为“button@*”(*表示数字)的子节点,它们分别表示三个按键。每个按键节点都指定了其使用的 GPIO 引脚编号,所以我们需要在该文件中定义一个名为“button_pins”的节点,它表示我们将使用哪些 GPIO 引脚。在“button_pins”节点中,我们指定了使用 GPIO 引脚 2、3 和 4,它们的功能为“gpio_in”,表示我们将使用它们作为输入引脚,而不是输出引脚。最后,我们指定了每个按键的 Linux 按键代码(即在 Linux 内核中定义的按键码)、抖动时间和唤醒源等属性。
当系统启动时,内核会根据设备树中的 GPIO 配置自动加载相应的 GPIO 驱动程序。在本例中,内核将加载“gpio-keys”驱动程序,并将其绑定到我们定义的“gpio_keys”节点上。这样,我们就可以在 Linux 系统中使用这三个按键了。
阅读全文