Как написать драйвер для карты видео захвата с внешним мультиплексором?
Суть в том что я купил ORIENT SDVR-1604 лишь только потому, что там BT878A. Мне не хотелось пересобирать модули как я это делал для Saa7134.
эти произведения искусства от ORIENT - это клоны других карт (Hawell например)
Моя карта ну очень похожа на Kidocom4400 по фото и немного на GeoVision800, но работает только с модулями под GeoVision800 и то весьма условно - первая камера видна на всех /dev/videoN
Там хитрость в том, что в этих картах видео на BT878 вводится на MUX-N, а переключением, видимо, занимается внешний мультиплексор.
Обе эти похожие на мою карты устроены именно так - с внешним мультиплексором. Только у 4400 главный чип - второй, а у gv800 первый. Как считать номер чипа, от передней панели? Какой у меня понять не могу. Ну да фиг бы с ним.
Проблема в том что я не нашел никакой инфы. Лишь сухая статья на linuxtv.org как добавить поддержку для новой платы, но там вся сложность сводилась к поиску нужных gpio. И то, если я правильно понял, в тюнерах, gpio pins нужно трогать лишь для работы звука.
Во всем файле bttv-cards.c только 2 русских имени и помочь ничем не смогли. А те кто добавлял поддержку для gv800 kidocom4400 остались анонимными.
Я запускал Dscaler SpyReg и смотрел что происходит. Запускал BtSpy, которая дает готовые значения маски и gpiodata.
В чем затык. 1. У этих карт (Kidocom4400, gv800) видео заходит на другой MUX3 и 2 соответственно, а у меня на MUX0, но несмотря на это с драйвером от GV800 я все-таки удидел камеру. 2. для переключения камер в функциях muxesel_hook замароченный метод: сначала трогаем пин «выбор камеры», потом строб вкл., адрес камеры, строб выкл.
Как узнать что за пины отвечают за строб что за выкл?
когда работает DScaler у первого чипа поле GPIODATA скачет как заводное. Даже если видео берется лишь с одной карты. У других чипов поле GPIODATA не меняется. (менялось но логика не понятня - выбрал для захвата все камеры оно скакнуло, и опять застыло. снова отключил, снова включил - ноль реакции) init 0x800, mask 0x3c7007 странно, но инит не попадает в маску... BtSpy более сух в своих выводах.
cam1-0x305000 ;cam2-0x305001 ;cam3-0x305002 ;cam4-0x305003 ;cam5-0x305004 ;cam6-0x305005 ;cam7-0x305006 ;cam8-0x305007
cam9-0x0c5000 ;cam10-0x0c5001 ;cam11-0x0c5002 ;cam12-0x0c5003 ;cam13-0x0c5004 ;cam14-0x0c5005 ;cam15-0x0c5006 ;cam16-0x0c5007
Я смотрю на разводку карты и в доки к чипу BT878A - у меня другие неже ли в kidocomm4400 и gv800 пины используются.
Как это все узнать? какой пин за что отвечает?
Куда копать? (рус/англ статьи)
Заранее спасибо.