Первым делом стоит выяснить, возможно ли, что ваш драйвер IC уже реализован в ядре Linux или третьей стороной. Вы можете обнаружить, что нужный драйвер уже реализован. Попробуйте спросить своего поставщика SoC, могут ли они сказать, какая компания сделала макроячейку I2C, потому что вы ищете альтернативные драйверы. Опять же, вы можете обнаружить, что нужный вам драйвер уже существует.
Ты ищешь в правильном месте. Файл должен идти в шинах и должен реализовывать и регистрировать интерфейс драйвера. Вам также необходимо зарегистрировать устройство платформы, чтобы ядро, как обычно, подключало пару драйвер-устройство. У других SoC есть много примеров этого, если у вас их нет. Я не думаю, что вы обнаружите, что вам нужно взаимодействовать с i2c-core и i2c-dev.
Я бы искал файл небольшого размера и недавно измененный драйвер, если бы мне пришлось выбирать его в качестве базового.
SPI потребует примерно столько же усилий, сколько I2C. USB-гаджет будет значительно больше - в несколько раз больше усилий, необходимых для двух других задач, в зависимости от того, сколько потребуется работы по реализации. Я не хочу ставить номер для любой задачи. Если вам повезло, не все функциональные возможности необходимы (например, вас интересует режим ожидания с низким энергопотреблением?) И вы можете срезать углы.