Я пытаюсь добавить контакт сброса на устройство i2c, с которым я работаю.Похоже, что результаты получения свойства возвращают нуль.Можно ли таким образом обработать GPIO?
Определение дерева устройств выглядит как THI
&PICO_DWARF_I2C1 {
status = "okay";
goodix: gt811@38 {
compatible = "goodix,gt811";
interrupts = <GPIO_NO(PICO_EXT_GPIO_P44) 2>;
reset-gpios = <GPIO_NO(PICO_EXT_GPIO_P32) GPIO_ACTIVE_LOW>;
touchscreen-size-x = <1024>;
touchscreen-size-y = <600>;
};
};
Источник выглядит следующим образом.Другие компоненты, которые работают, но опущены, такие как reg info и все такое.С этими булавками я борюсь.
static int goodix_get_gpio_config(struct goodix_ts_data *ts)
{
int error;
struct device *dev;
struct gpio_desc *gpiod;
if (!ts->client)
return -EINVAL;
dev = &ts->client->dev;
struct device_node *np = &dev->of_node;
/* Get the interrupt GPIO pin number */
gpiod = of_get_property(dev->of_node, "interrupts", NULL);
if (IS_ERR(gpiod)) {
error = PTR_ERR(gpiod);
if (error != -EPROBE_DEFER)
dev_dbg(dev, "Failed to get %s GPIO: %d\n",
GOODIX_GPIO_INT_NAME, error);
return error;
}
ts->int_pin = gpiod;
/* Get the reset line GPIO pin number */
gpiod = of_get_property(dev->of_node, "reset-gpios", NULL);
if (IS_ERR(gpiod)) {
error = PTR_ERR(gpiod);
if (error != -EPROBE_DEFER)
dev_dbg(dev, "Failed to get %s GPIO: %d\n",
GOODIX_GPIO_RST_NAME, error);
return error;
}
ts->reset_pin = gpiod;
return 0;
}
Это правильный подход или я должен вызывать другую функцию?