Текущее время: 01 май 2025, 23:03 • Часовой пояс: UTC + 3 часа |
Драйвер для тюнера Behold TV T7 под Linux
Автор | Сообщение |
BTVSoft
|
|
Beholder |  |
Зарегистрирован: 19 авг 2004, 11:47 Сообщения: 190
|
Вот пример функции si2168_cmd_part_info Код: NTSTATUS si2168_cmd_part_info(tPART_INFO *part_info) { NTSTATUS ntStatus;
BYTE cmdBuffer[1] = {Si2168_PART_INFO_CMD}; BYTE rspBuffer[13] = {0};
ntStatus = si2168_cmd_rsp(cmdBuffer, sizeof(cmdBuffer), rspBuffer, sizeof(rspBuffer)); if (ntStatus != STATUS_SUCCESS) return ntStatus;
part_info->chiprev = rspBuffer[1] & 0x0F; part_info->part = rspBuffer[2]; part_info->pmajor = rspBuffer[3]; part_info->pminor = rspBuffer[4]; part_info->pbuild = rspBuffer[5]; part_info->serial = ((ULONG)rspBuffer[11] << 24) | ((ULONG)rspBuffer[10] << 16) | ((ULONG)rspBuffer[9] << 8) | ((ULONG)rspBuffer[8]); part_info->romid = rspBuffer[12];
DBGPRINT(("CHIP REV : %d\n", part_info->chiprev)); DBGPRINT(("CHIP PART : %d\n", part_info->part)); DBGPRINT(("CHIP PMAJOR: %c\n", part_info->pmajor)); DBGPRINT(("CHIP PMINOR: %c\n", part_info->pminor)); DBGPRINT(("CHIP PBUILD: %d\n", part_info->pbuild)); DBGPRINT(("CHIP SERIAL: %08X\n", part_info->serial )); DBGPRINT(("CHIP ROMID : %d\n", part_info->romid));
return STATUS_SUCCESS; }
Это проверочные константы: Код: #define Si2168A_ROM2_2_0_3_PART 68 #define Si2168A_ROM2_2_0_3_ROM 2 #define Si2168A_ROM2_2_0_3_PMAJOR '2' #define Si2168A_ROM2_2_0_3_PMINOR '0' #define Si2168A_ROM2_2_0_3_PBUILD 3
#define Si2168A_ROM3_3_0_2_PART 68 #define Si2168A_ROM3_3_0_2_ROM 3 #define Si2168A_ROM3_3_0_2_PMAJOR '3' #define Si2168A_ROM3_3_0_2_PMINOR '0' #define Si2168A_ROM3_3_0_2_PBUILD 2
#define Si2168B_ROM1_4_0_2_PART 68 #define Si2168B_ROM1_4_0_2_ROM 1 #define Si2168B_ROM1_4_0_2_PMAJOR '4' #define Si2168B_ROM1_4_0_2_PMINOR '0' #define Si2168B_ROM1_4_0_2_PBUILD 2
|
|
|
Demod
|
|
Зарегистрирован: 31 дек 2013, 09:22 Сообщения: 147
|
ua0lnj, ты же приживлял мои диффы на другие исходники, от того же вендора, но более свежие. У тебя с ними да, патч микрокода грузился минуту, ты у меня ещё тогда уточнял этот момент.
На тех, “старых” исходниках, с которыми работал я, патч микрокода загружается 17-18 секунд. По-видимому, разница в константе, задающей частоту квадратной шины.
Точнее сказать не могу. Я сейчас на фрилансе, в той конторе более не работаю. Под рукой больше нет ни той машины, где я возился с тюнером, ни самого тюнера, ни возможности нормально поработать с исходниками. Пишу всё по памяти.
Мне кажется, ты не совсем понял вот что: не может лечь произвольный патч микрокода на микрокод, уже находящийся внутри чипа в его ПЗУ и прошитый ещё на заводе. Только патч, подходящий к имеющей версии микрокода не будет отвергнут чипом. Именно так я кормил патчи от фирмвари LG. По одному, пока чип его не съел. :-)
В тех исходниках, с которыми работал я, хорошо виден алгоритм определения версии чипа, и подбора подходящего патча. Впрочем, спасибо ещё раз BTVSoft, алгоритм уже опубликован в этом треде.
|
|
|
ua0lnj
|
|
Зарегистрирован: 14 ноя 2013, 04:42 Сообщения: 70
|
Не, я думал смысл как раз в том, что чип одинаковый, А30 ревизии, что в Бехольде что в ДВБСкае, но фирмваре от ДВБСкай не грузится в Бехольд. Т.е. версия микрокода одинакова. Т.е. я предполагал, что чип одинаковый, разная обвязка и состояние регистров.
Возможно вот оно:
В линуховых дровах ревизия чипа определяется как #define SI2168_A30 ('A' << 24 | 68 << 16 | '3' << 8 | '0' << 0)
т.е. chip version Si2168-A30 не учитывается билд
#define Si2168A_ROM3_3_0_2_PBUILD 2
Вопрос какой билд у Силабса.
На выходных буду переваривать инфу от BTVSoft.
|
|
|
BTVSoft
|
|
Beholder |  |
Зарегистрирован: 19 авг 2004, 11:47 Сообщения: 190
|
Патчи перебирать не нужно, получаем результат команды Si2168_PART_INFO_CMD, смотрим что за чип, в A20 грузим свой патч, в A30 свой, в B40 свой (part также проверяется на (68 or 69)). Это делается 1 раз, до следующего аппаратного сброса или до снятия питания. После загрузки патча, чип можно уводить в слип через команду Si2168_POWER_DOWN_CMD (статус CTS не проверяется), после чего выводить его обратно через команду Si2168_START_CLK_CMD (с параметром Si2168_POWER_UP_CMD_WAKE_UP_WAKE_UP) любое кол-во раз, при этом патч больше не требуется.
Нюансы: 1) пин MP_A используется как IF_AGC_OUT, его нужно переводить в Z состояние при переключении в аналоговый режим и возвращать в нормальное состояние при переключении в DVB режим. 2) Переключение пинов через команду Si2168_DD_EXT_AGC_TER_CMD требует последующего исполнения Si2168_DD_RESTART_CMD, иначе пин не переключится, после Si2168_DD_RESTART_CMD нужно выждать минимум 10мс. 3) Пин GPIO_0 чипа Si2168 на T7 используется для переключения RF свитча (селектор антенного входа).
|
|
|
ua0lnj
|
|
Зарегистрирован: 14 ноя 2013, 04:42 Сообщения: 70
|
Опять меня не поняли. Драйвер на линухе у меня работает, я сделал переключение входов и индикатор уровня тоже. Остались только проблемы, которые я описал выше.
Я хочу понять следующее. В DVBSKY платах используется точно такой же чип с такой же ревизией А30, как у Бехольдера. Почему в бехольдер не грузится патч от DVBSKY? Я не могу проверить версию билда А30 у DVBSKY, у меня нет этой платы. Пытаюсь попросить это сделать разработчиком линуховых дров, пока только отговорки, никто реально не посмотрел версию билда. Понятно что в А20, А30 и В40 грузятся свои патчи. Тут же А30 патч от DVBSKY не гузится в А30 чип от Бехольда. Вот это мне не понятно.
|
|
|
Demod
|
|
Зарегистрирован: 31 дек 2013, 09:22 Сообщения: 147
|
ua0lnj, ЕМНИП, в исходниках DVBSky, которые были у меня, патчи были только под демодулятор ревизии A20. PS: Прямая ссылка именно на те исходники, с которыми я работал, ещё действует. :-) Посмотри сам: http://members.quicknet.nl/pe63/dvbsky-v4l.tar.gz
|
|
|
ua0lnj
|
|
Зарегистрирован: 14 ноя 2013, 04:42 Сообщения: 70
|
Просто скачай текущий медиа_билд, и посмотри там  Про старые исходники ДВБСкая можно забыть.
|
|
|
Demod
|
|
Зарегистрирован: 31 дек 2013, 09:22 Сообщения: 147
|
Значит, они пытаются лить в A30 неподходящий патч, либо у них баг в коде. Без вариантов.
Я тебе “старый” код привёл как доказательство того, что тогда, у DVBSky применялась ревизия A20. В этих исходниках больше нет никакого другого патча, кроме как для A20.
Патчи для RF тюнера не рассматриваем.
|
|
|
ua0lnj
|
|
Зарегистрирован: 14 ноя 2013, 04:42 Сообщения: 70
|
Возможно в медиа_билд А30 делали не на основе ДВБСкая, а какого-то другого тюнера, их сейчас с si2168 уже много развелось. Может быть действительно у них там баг, но убедить их можно будет только когда ещё кто-нибудь пожалуется...
|
|
|
ua0lnj
|
|
Зарегистрирован: 14 ноя 2013, 04:42 Сообщения: 70
|
BTVSoft, подскажи если можно, как перевести saa7133 в 400 КГц режим i2c шины. Это делается непосредственно командой в любой момент, или нужна какая-то последовательность, или клиент на шине si2168 может дать команду перехода в этот режим?
|
|
|
BTVSoft
|
|
Beholder |  |
Зарегистрирован: 19 авг 2004, 11:47 Сообщения: 190
|
ua0lnj
SCL 100/400 на SAA713x переключается 1 регистром. Переключать нужно до старта любой транзакции.
Регистр 0x0182, бит (1<<6). 0: Slow 1: Fast
|
|
|
Ильдар
|
|
Зарегистрирован: 04 июл 2011, 10:26 Сообщения: 9
|
ua0lnj писал(а): Поскольку Бехольдер не стал помогать мне в доработке дров, я не смог объяснить разработчикам Linux Media тонкостей в работе тюнера, и скорее всего драйвер в ядро не попадёт. Я выкладываю патч, который получился с помощью патча Demoda, и в результате моего общения с Antti Palosaari. Если у кого-нибудь хватит умения, то он доведёт его до ядра, у меня на это нет времени и знаний. .... Патч сделан на текущий media_build.
Пытаюсь сейчас поправить media_build в соответствии с diff'ом вручную, поскольку патчем он не наложился - видимо, media_build уже поменялся достаточно сильно. Вопрос ещё такой: насколько данный патч применим для T8? Там будет достаточно несколько констант поменять в соответствии с соседним тредом или всё намного сложнее? Какие вообще тюнеры из выпускающихся лучше брать для цифрового тв под линуксом, Т8 или Cruise?
|
|
|
ua0lnj
|
|
Зарегистрирован: 14 ноя 2013, 04:42 Сообщения: 70
|
Последнее что делал я выкладываю тут http://linuxdvb.org.ru/wbb/index.php?pa ... eadID=1725Состояние работоспособное, но не доделанное, сделать быструю загрузку фирмваре я пока не смог, из-за этого в ядро его не принимают. Для Т8 не поможет, там другие чипы стоят, я даже не смотрел что получится. Производитель официально линукс не поддерживает, поэтому все новые тюнера просто так не запустятся. Если есть знания для разработки, пробуй написать патч сам, пиши на форуме вопросы, кто сможет подскажет.
|
|
|
and2
|
|
Зарегистрирован: 17 авг 2013, 19:01 Сообщения: 106
|
ua0lnj У меня установлен второй системой mint (17.1) mate 64,тюнер T7. Увидел после перехода по ссылке два файла: 1.dvb-demod-si2168-30b20.fw.bz2 Фирмваре стандартно, кидать в /lib/firmware (ну я распакавал,переименовал и положил по указанному пути). 2.media_build-t7-250215.diff Про второй файл ничего не написано,как я понял нужно делать компиляцию ядра.Нашёл где то как это сделать,два варианта с p и -p в командной строке,указав на этот diff.В варианте p непонятки,в варианте -p пишет укажите какой то файл. Вот хотелось бы (если не сложно) более подробно чтобы был описан порядок действий (с нужными командами).Также,какой софт использовать (VLC?)
Behold TV T7,Behold TV Cruise
|
|
|
ua0lnj
|
|
Зарегистрирован: 14 ноя 2013, 04:42 Сообщения: 70
|
http://linuxdvb.org.ru/wbb/index.php?pa ... #post26870И читать нужно последние по дате сообщения, а не первые, а вообще неплохо все. Обрати внимание на изменение названия файла фирмваре.
|
|
|
Кто сейчас на конференции |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3 |
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения
|
|