在没有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(只使用旧方法)?
答案 0 :(得分:2)
首先,如果您使用的是较新的内核,我建议您移植代码以支持最新功能。否则 - 如果你不愿意适应它,为什么还要打扰升级内核呢?
其次,永远不要说永远。
#define IMX_GPIO_NR(bank, nr) (((bank) - 1) * 32 + (nr))