Я запутался из-за условия is_open_drain в linux драйвере ядра i2 c -gpio. c - PullRequest
0 голосов
/ 24 февраля 2020

Я думаю, что следующее условие if (pdata->sda_is_open_drain) в i2 c -gpio. c перевернуто, так как вывод открытого типа стока не может быть установлен на 1 в режиме вывода. Я не уверен, почему вывод sda можно настроить как выходной высокий, если pdata->sda_is_open_drain истинно.


static void i2c_gpio_setsda_val(void *data, int state)
{
    struct i2c_gpio_platform_data *pdata = data;

    gpio_set_value(pdata->sda_pin, state);
}

if (pdata->sda_is_open_drain) {
        gpio_direction_output(pdata->sda_pin, 1);
        bit_data->setsda = i2c_gpio_setsda_val;
} else {
        gpio_direction_input(pdata->sda_pin);
        bit_data->setsda = i2c_gpio_setsda_dir;
}

Вышеприведенный фрагмент кода отсюда

Кто-нибудь может это объяснить? Спасибо.

...