Извиняюсь за такое общее название, но не могу придумать ничего лучшего.
Я пытаюсь понять, где в drivers/i2c/
реализована последовательность протокола отправки битовых последовательностей START, ADDR, DATA, STOP согласно протоколу. Я хочу проверить протокол для отправки / получения в коде драйвера, вот и вся цель здесь.
Я использую Hikey 620 в качестве эталона с контроллером I2C DesignWare. Ниже приведен регистрационный код, который я вижу ( эликсир ):
static const struct i2c_algorithm i2c_dw_algo = {
.master_xfer = i2c_dw_xfer,
.functionality = i2c_dw_func,
};
Если я отслеживаю функцию i2c_dw_xfer
рекурсивно, последний вызов, который я смог увидеть, это readl_relaxed
, writel_relaxed
in i2c_dw_xfer_init()
( elixir ).
Помимо этого, все сборки. Являются ли эти readl
/ writel
фактической последовательностью последовательностей байтов начала / данных / остановки? Или я понимаю это совершенно неправильно?
В этом случае, пожалуйста, помогите и укажите мне правильный поток. Если то, что я получил, правильно, есть ли какой-то более простой код контроллера, который имеет более чистую реализацию и может использоваться в качестве справочного.