Самому стало интересно, полез искать где сам драйвер лежит и не нашел!!!
Ничего не понимаю, подключение драйвера есть (ссылки на extern функции), а самого драйвера нет , если нароете что на эту тему, отпишитесь плиз здесь.
Драйвер лежит тут: http://avr32linux.org/twiki/bin/view/Main/AtmelIsiDriver
Патч собственно драйвера вроде бы не avr32-специфичный и должен пойти и на SAM9260, но glue code лучше всего делать по образцу уже имеющегося в ванильном ядре кода для SAM9263.
Кроме того, этот патч не применить к ядрам 2.6.28 и новее из-за небольших изменений структур в V4L2. Я поправил исходник и вроде бы оно собирается, но мне не на чем проверить работоспособность. Выкладываю все четыре патча: http://vap.name/tmp/ISI_PATCHES-2.6.30.tar.gz
Можно взять сенсор от мобильника какого-нибуть - с небольшим разрешением помоему в пределах 100 руб даже есть. Правда надо искать такой для которого даташит есть и потом у нокий какой-то убогий интерфейс последовательный используется - не подойдут. Попадется в руки что-то подходящее - обязательно займусь, тем более isi вроде через pdc может заполнять кадровый буфер в rgb 5:6:5 - можно натравить его на кадровый буфер моего драйвера lcd от сименса чтобы он туда скидывал данные - будет показывать практически не загружая процессор :)
Запустил ADV7180 + ISI (собственная плата, проц - 9260, ядро 2.6.30). Детали, если кому интересно:
1) Драйвер для ISI взял из 2.6.27-at91-exp.2.patch (качается с maxim.org.za). Доработок немного: в 2.6.30 есть отличия от 2.6.27 в части v4l2 интерфейса (мелочи).
2) Драйвер для ADV7180 набросал сам (инициализация I2C,конфигурация на этапе загрузки по примеру из PDF )
3) Программы для чтения картинок (через read и mmap) - тоже сам.
Вроде все работает: картинки корректно сдираются через preview и codec path.
Но есть и непонятное: при кодировке YCrCb 4:2:2 в RGB 5:5:5 (фича preview path) по какой-то причине инвертируется 5-ти битная цветовая компонента G (натурально инвертируется: ~0x1F). Зачем, почему - пока не понял.
И еще.
Существуют-ли источники PAL/NTSC/SECAM-сигнала с прогрессивной разверкой? Я подключал фотоаппарат и DVD-плеер (PAL) - на обоих interlaced, что является штатной ситуацией для ADV7180 (поднимается бит), и проблемой для Atmel'а 9260. Решение пока вижу только в новых процессорах (9G20,9G45).
можем обсудить, если у кого-то есть к тому интерес.
Я тоже запускал ADV7180 на плате SK-AT91SAM9260. Драйвер модуля ISI также взял из вышеупомянутого патча + собственный драйвер для ADV7180. Кроме того, пришлось добавить startup-код в ядро по примеру sam9263.
Испытания захвата картинки проводил с помощью утилиты capture с сайта avr32linux.org. Захват картинки с /dev/video0 работает, нужно только в параметре модуля ISI указать порядок компонентов сигнала - YCbYCr, который от драйвера ждет утилита capture.
Для корректного захвата картинки также нужно устранить горизонтальное и вертикальное смещение, присутствующее в телевизионном кадре. Это можно сделать либо настройкой ADV7180 на смещение сигналов синхронизации, либо задав отступы от сигналов синхронизации в модуле ISI.
Для захвата потокового видео я использовал утилиту ffmpeg. Захват видео производил с устройства /dev/video1 (preview path). Корректного захвата видео удалось добиться только после некоторых исправлений драйвера atmel-isi:
1. для ffmpeg требуется, чтобы каждый кадр имел штамп времени, похоже он их упорядочивает по времени, хотя иного порядка быть не может. В обработчик прерываний добавил установку времени захвата кадра.
2. выбор способа перестановки компонентов YCbCr написан неправильно. Исправил в соответствии с докой, иначе получаем зелено-фиолетовые кадры.
3. увеличил число буферов с 4 до 8-16 в зависимости от размера картинки. Это позволило избежать потери кадров в драйвере из-за больших задержек в Linux.
В итоге получилось захватывать видео вплоть до 176x144, 25Гц в mpeg1 со 100% загрузкой процессора. Полукадры чересстрочного видео (176x72) при этом растягивались программно утилитой ffmpeg.
У меня все источники видео тоже чересстрочные. Вроде как есть современные видеокамеры с прогрессивной разверткой, но я такие не встречал.
Посмотрел доки на 9G20 и 9G45. У 9G20 ISI-модуль один в один как у 9260. У 9G45 модуль версии 2, но никаких решений проблемы захвата чересстрочного видео я там не нашел.
проблема в том, что 9260 не позволяет содрать два подряд идущих кадра без потери в качестве (RGB 5:5:5). в 9G45 в codec path добавили FIFO, что позволит получать картинки в YCrCb 4:2:2
(по поводу 9G20 я, возможно, погорячился)
стоит задача определения движения путем сранения подряд идущих кадров. кадр = полукадр1 + полукадр2. то есть приходится ставить FRATE=1 и размер preview = размеру "сенсора" (720x576 для PAL), что сильно грузит PDC (а значит аукнется рано или поздно)
в 9G45 можно сжимать картинку в preview до 320x200 (к примеру), сравнивать, и если надо - читать через codec два полуфрейма.