* 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...
相对于GPIO_DT_SPEC_GET_BY_IDX,GPIO_DT_SPEC_GET,在使用GPIO_DT_SPEC_GET_BY_IDX_OR,GPIO_DT_SPEC_GET_OR时,如果在device tree中找不到对应gpio的属性则将gpio_dt_spec赋值为一个指定的默认值。 下面的例子展示了如何在上面提到的node节点中获取第二个GPIO(index=1)的gpio_dt_spec。 const struct gpio...
将以下代码复制到main.c 上图代码删除位置: #define RGB_R_NODE DT_ALIAS(led_rgb_red) #define RGB_G_NODE DT_ALIAS(led_rgb_green) #define RGB_B_NODE DT_ALIAS(led_rgb_blue) static const struct gpio_dt_spec rgb_r = GPIO_DT_SPEC_GET(RGB_R_NODE, gpios); static const struct gpio_dt...
将以下代码复制到main.c 上图代码删除位置: #define RGB_R_NODE DT_ALIAS(led_rgb_red) #define RGB_G_NODE DT_ALIAS(led_rgb_green) #define RGB_B_NODE DT_ALIAS(led_rgb_blue) static const struct gpio_dt_spec rgb_r = GPIO_DT_SPEC_GET(RGB_R_NODE, gpios); static const struct gpio_dt...
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 的配置信息,结构体内容如下: ...
int gpio_pin_set_dt(const struct gpio_dt_spec *spec, int value) Copy 参数说明 字段说明 spec GPIO配置信息结构体,从设备树配置获取 value 分配给引脚的值 如果GPIO 配置为 GPIO_ACTIVE_HIGH,则 gpio_pin_set() 函数等效于gpio_pin_set_raw()。 读GPIO 读输入引脚的逻辑电平 int gpio_pin_get(const...
GPIO控制器在DT中的表示 驱动架构和数据结构 此类设备的驱动程序应提供以下内容: 建立GPIO方向(输入输出)的方法。 用于访问GPIO值的方法(get和set)。 将给定的GPIO映射到IRQ并返回相关的编号的方法。 一个表示对其方法的调用是否可以休眠的标志。这一点非常重要。
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)); ...
const struct of_phandle_args *gpiospec, u32 *flags);};下⾯是结构中每个元素的含义:request 是特定芯⽚激活的可选回调函数。如果提供了,在调⽤gpio_request()或gpiod_get()时,它会在分配GPIO之前执⾏。free 是⼀个可选的回调函数,⽤于特定芯⽚的释放。如果提供了,那么在调⽤gpiod_put(...
(gpio_cfg->mulsel != SUNXI_PINCFG_UNPACK_VALUE(config)) { pr_warn("failed! mul value isn't equal as dt.n"); return -EINVAL; } /*check pull config */ if (gpio_cfg->pull != GPIO_PULL_DEFAULT) { config = SUNXI_PINCFG_PACK(SUNXI_PINCFG_TYPE_PUD, 0xFFFF); pin_config_get(...