在 iMX.6 上无需配置设备树即可控制 GPIO
Control GPIO without Device Tree configure on iMX.6
在没有 DT(设备树)的旧 iMX.6 BSP 上,GPIO 由以下代码控制:
#define SABRESD_SHUTDOWN IMX_GPIO_NR(4, 15)
gpio_request(SABRESD_SHUTDOWN, "shutdown");
gpio_direction_output(SABRESD_SHUTDOWN, 1);
gpio_set_value(SABRESD_SHUTDOWN, 0);
gpio_free(SABRESD_SHUTDOWN);
但是在新的 BSP 上,我不能再使用 IMX_GPIO_NR
。相反,of_get_named_gpio
提供对 DT 中定义的 GPIO 的访问。但这有点复杂,因为我们的产品从不更改 GPIO 端口。
我的问题是,是否可以在没有 DT 定义的情况下控制 GPIO(仅使用旧方法)?
首先,如果您使用的是较新的内核,我建议您移植代码以支持最新的功能。否则——不适应内核何必升级?
其次,永不言败。
#define IMX_GPIO_NR(bank, nr) (((bank) - 1) * 32 + (nr))
在没有 DT(设备树)的旧 iMX.6 BSP 上,GPIO 由以下代码控制:
#define SABRESD_SHUTDOWN IMX_GPIO_NR(4, 15)
gpio_request(SABRESD_SHUTDOWN, "shutdown");
gpio_direction_output(SABRESD_SHUTDOWN, 1);
gpio_set_value(SABRESD_SHUTDOWN, 0);
gpio_free(SABRESD_SHUTDOWN);
但是在新的 BSP 上,我不能再使用 IMX_GPIO_NR
。相反,of_get_named_gpio
提供对 DT 中定义的 GPIO 的访问。但这有点复杂,因为我们的产品从不更改 GPIO 端口。
我的问题是,是否可以在没有 DT 定义的情况下控制 GPIO(仅使用旧方法)?
首先,如果您使用的是较新的内核,我建议您移植代码以支持最新的功能。否则——不适应内核何必升级?
其次,永不言败。
#define IMX_GPIO_NR(bank, nr) (((bank) - 1) * 32 + (nr))