Привязки дерева устройств для дополнительного контакта в узле i2c - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь добавить контакт сброса на устройство 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;
}

Это правильный подход или я должен вызывать другую функцию?

1 Ответ

0 голосов
/ 13 октября 2018

Проблема заключалась в том, что функция GPIO_NO () была ненужной в свойстве reset-gpios.После того, как оно было удалено, свойство загружено.

...