通过of_get_gpio()函数来获取gpios的内容
/ {
buzzer {
compatible = "ti,am335x-buzzer";
gpios = <&gpio1 28 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&buzzer_gpio_default>;
status = "okay";
};
};
驱动:
buzzer_pin = of_get_gpio(pdev->dev.of_node, 0);
result = gpio_request(buzzer_pin, "gpio_buzzer");
通过of_get_named_gpio()函数匹配名字来获取
/ {
watchdog:watchdog{
compatible = "am335x,watchdog";
enable-gpios = <&gpio0 27 0>;
feed-gpios = <&gpio1 12 0>;
};
}
驱动
drivers/watchdog/am335x_watchdog.c
feeddog_pin = of_get_named_gpio(pdev->dev.of_node, "feed-gpios", 0);
if (!gpio_is_valid(feeddog_pin)) {
dev_warn(&pdev->dev, "no watchdog feed pin available");
return -EINVAL;
}
ret = devm_gpio_request_one(&pdev->dev, feeddog_pin, GPIOF_OUT_INIT_LOW,
"feeddog_pin");
if (ret < 0)
return ret;
wathdog_enable_pin = of_get_named_gpio(pdev->dev.of_node, "enable-gpios", 0);
if (!gpio_is_valid(wathdog_enable_pin)) {
dev_warn(&pdev->dev, "no watchdog enable pin available");
return -EINVAL;
}
ret = devm_gpio_request_one(&pdev->dev, wathdog_enable_pin, GPIOF_OUT_INIT_LOW,
"wathdog_enable_pin");
if (ret < 0)
return ret;