* 3. 通过dt提供的引脚号,找到对应引脚的gpio_desc */structgpio_desc *of_get_named_gpiod_flags(structdevice_node *np,constchar*propname,intindex,enumof_gpio_flags *flags){structof_phandle_argsgpiospec;structgpio_chip*chip;structgpio_desc*desc;intret;/* * propname:当前node的属性名 * "#gp...
原本打算参考 sunxi-wdt.c 的框架,利用定时器自己写一个,无意中发现内核已经有 gpio_wdt.c 驱动程序,其原理也是通过内核定时器实现喂狗。因其使用了 of_get_gpio_flags() 接口获取 GPIO 信息,和 gpio-keys.c 驱动一样,该接口存在内存越界的问题,需要略作修改才能使用。
{compatible="allwinner,sun50iw9p1-pinctrl";//兼容属性,用于驱动和设备绑定reg=<0x00x0300b0000x00x400>;//寄存器基地址0x0300b000和范围0x400interrupts=<GIC_SPI51IRQ_TYPE_LEVEL_HIGH>,/* AW1823_GIC_Spec: GPIOA: 83-32=51 */<GIC_SPI52IRQ_TYPE_LEVEL_HIGH>,<GIC_SPI53IRQ_TYPE_LEVEL_HIGH>...
pr_warn("step2: get device[%s] pin count.n", dev_name(dev)); ret = dt_get_gpio_list(node, &gpio_list, &gpio_count); if (ret < 0 || gpio_count == 0) { pr_warn(" devices own 0 pin resource or look for main key failed!n"); return -EINVAL; } pr_warn("step3: get de...
原本打算参考 sunxi-wdt.c 的框架,利用定时器自己写一个,无意中发现内核已经有 gpio_wdt.c 驱动程序,其原理也是通过内核定时器实现喂狗。因其使用了 of_get_gpio_flags() 接口获取 GPIO 信息,和 gpio-keys.c 驱动一样,该接口存在内存越界的问题,需要略作修改才能使用。
Is there a working example with usinggpio_dt_spec for accessing gpios? I used the code provided fromhttps://docs.zephyrproject.org/latest/reference/peripherals/gpio.html#c.GPIO_DT_SPEC_GET_BY_IDX But it can not resolve the macros for the Devicetree....
intgpio_pin_interrupt_configure_dt(conststructgpio_dt_spec*spec,gpio_flags_t flags) 参数说明 字段说明 specGPIO配置信息结构体,从设备树配置获取 flags中断配置标志 gpio_dt_spec为 GPIO 的设备树配置结构体,通过GPIO_DT_SPEC_GET_OR()接口从设备树获取 GPIO 的配置信息,结构体内容如下: ...
/home/arima/zephyrproject/zephyr/include/zephyr/drivers/gpio.h:369:9: note: in expansion of macro 'GPIO_DT_SPEC_GET_BY_IDX' 369 | GPIO_DT_SPEC_GET_BY_IDX(node_id, prop, 0) | ^~~~ /home/arima/zephyrproject/my_projects/Hello_World_00/src/main.c:5:41: note: in expansion of ma...
ret = dt_get_gpio_list(node, &gpio_list, &gpio_count); if (ret < 0 || gpio_count == 0) { pr_warn(" devices own 0 pin resource or look for main key failed!\n"); return -EINVAL; } pr_warn("step3: get device[%s] pin configure and check.\n", dev_name(dev)); ...
gpio_dt_spec可以通过以下宏由device tree在具有gpio属性的节点中获取 GPIO_DT_SPEC_GET_BY_IDX GPIO_DT_SPEC_GET_BY_IDX_OR GPIO_DT_SPEC_GET GPIO_DT_SPEC_GET_OR 其中GPIO_DT_SPEC_GET,GPIO_DT_SPEC_GET_OR是获取节点GPIO列表中的第一个GPIO(index=0)的gpio_dt_spec;而GPIO_DT_SPEC_GET_BY_IDX,...