Чужой сенсор на чужом SoC: что не работает, когда «общий API» общий не до конца
<img src="https://habrastorage.org/getpro/habr/upload_files/f66/a70/c8d/f66a70c8dc2111230bc1ce115c8e49a0.png" /><p>Подключаем модуль камеры Raspberry Pi (Sony IMX708) к камерному SoC Rockchip RV1106. Делаем это в рамках разработки носимой камеры в ITSupportMe. Готового драйвера для IMX708 нет ни в дереве Rockchip, ни в мейнлайне — он живет только в форке Raspberry Pi под другое ядро и другую архитектуру видеотракта.</p><p>Формально subdev-API ядра единый: переноси код и пользуйся. Но на практике общего между двумя вендорскими деревьями осталось ровно столько, сколько каждый разработчик сохранил в своем форке. Где именно разошлись пути Rockchip и Raspberry Pi, пришлось выяснять в процессе отладки.</p><p>Во-первых, вызов STREAMON намертво падал из-за одного слова, которое в двух кодовых базах отвечало за противоположные вещи. Во-вторых, строка embedded-данных для работы фазового автофокуса (PDAF) оказалась высотой ровно в четыре линии по причине, которую не описывает ни один даташит. В-третьих, нашлось четвертое место в конфигурации, где обязательно нужно прописать новый сенсор, но об этом нет ни слова ни в одном руководстве Rockchip.</p><p>Разбираем по порядку, как решались эти проблемы, и как в итоге заставить железо работать вместе.</p> <a href="https://habr.com/ru/articles/1080626/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1080626#habracut">Читать далее</a>
