Я думаю, что следующее условие 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;
}
Вышеприведенный фрагмент кода отсюда
Кто-нибудь может это объяснить? Спасибо.