Форум Beholder
http://beholder.ru/bb/

Драйвер для тюнера Behold TV T7 под Linux
http://beholder.ru/bb/viewtopic.php?f=11&t=14101
Страница 2 из 22

Автор:  BTVSoft [ 11 дек 2014, 12:53 ]
Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux

Вот пример функции 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 [ 11 дек 2014, 13:15 ]
Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux

ua0lnj, ты же приживлял мои диффы на другие исходники, от того же вендора, но более свежие. У тебя с ними да, патч микрокода грузился минуту, ты у меня ещё тогда уточнял этот момент.

На тех, “старых” исходниках, с которыми работал я, патч микрокода загружается 17-18 секунд.
По-видимому, разница в константе, задающей частоту квадратной шины.

Точнее сказать не могу. Я сейчас на фрилансе, в той конторе более не работаю. Под рукой больше нет ни той машины, где я возился с тюнером, ни самого тюнера, ни возможности нормально поработать с исходниками. Пишу всё по памяти.

Мне кажется, ты не совсем понял вот что: не может лечь произвольный патч микрокода на микрокод, уже находящийся внутри чипа в его ПЗУ и прошитый ещё на заводе.
Только патч, подходящий к имеющей версии микрокода не будет отвергнут чипом.
Именно так я кормил патчи от фирмвари LG. По одному, пока чип его не съел. :-)

В тех исходниках, с которыми работал я, хорошо виден алгоритм определения версии чипа, и подбора подходящего патча.
Впрочем, спасибо ещё раз BTVSoft, алгоритм уже опубликован в этом треде.

Автор:  ua0lnj [ 11 дек 2014, 17:05 ]
Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux

Не, я думал смысл как раз в том, что чип одинаковый, А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 [ 12 дек 2014, 14:02 ]
Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux

Патчи перебирать не нужно, получаем результат команды 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 [ 12 дек 2014, 15:22 ]
Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux

Опять меня не поняли.
Драйвер на линухе у меня работает, я сделал переключение входов и индикатор уровня тоже. Остались только проблемы, которые я описал выше.

Я хочу понять следующее. В DVBSKY платах используется точно такой же чип с такой же ревизией А30, как у Бехольдера.
Почему в бехольдер не грузится патч от DVBSKY?
Я не могу проверить версию билда А30 у DVBSKY, у меня нет этой платы. Пытаюсь попросить это сделать разработчиком линуховых дров, пока только отговорки, никто реально не посмотрел версию билда.
Понятно что в А20, А30 и В40 грузятся свои патчи. Тут же А30 патч от DVBSKY не гузится в А30 чип от Бехольда. Вот это мне не понятно.

Автор:  Demod [ 13 дек 2014, 15:38 ]
Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux

ua0lnj, ЕМНИП, в исходниках DVBSky, которые были у меня, патчи были только под демодулятор ревизии A20.
PS:
Прямая ссылка именно на те исходники, с которыми я работал, ещё действует. :-) Посмотри сам:
http://members.quicknet.nl/pe63/dvbsky-v4l.tar.gz

Автор:  ua0lnj [ 13 дек 2014, 16:29 ]
Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux

Просто скачай текущий медиа_билд, и посмотри там :)
Про старые исходники ДВБСкая можно забыть.

Автор:  Demod [ 13 дек 2014, 18:52 ]
Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux

Значит, они пытаются лить в A30 неподходящий патч, либо у них баг в коде. Без вариантов.

Я тебе “старый” код привёл как доказательство того, что тогда, у DVBSky применялась ревизия A20. В этих исходниках больше нет никакого другого патча, кроме как для A20.

Патчи для RF тюнера не рассматриваем.

Автор:  ua0lnj [ 14 дек 2014, 16:53 ]
Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux

Возможно в медиа_билд А30 делали не на основе ДВБСкая, а какого-то другого тюнера, их сейчас с si2168 уже много развелось.
Может быть действительно у них там баг, но убедить их можно будет только когда ещё кто-нибудь пожалуется...

Автор:  ua0lnj [ 03 янв 2015, 15:57 ]
Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux

BTVSoft, подскажи если можно, как перевести saa7133 в 400 КГц режим i2c шины. Это делается непосредственно командой в любой момент, или нужна какая-то последовательность, или клиент на шине si2168 может дать команду перехода в этот режим?

Автор:  BTVSoft [ 13 янв 2015, 16:19 ]
Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux

ua0lnj

SCL 100/400 на SAA713x переключается 1 регистром. Переключать нужно до старта любой транзакции.

Регистр 0x0182, бит (1<<6).
0: Slow
1: Fast

Автор:  Ильдар [ 03 апр 2015, 12:16 ]
Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux

писал(а):
Поскольку Бехольдер не стал помогать мне в доработке дров, я не смог объяснить разработчикам Linux Media тонкостей в работе тюнера, и скорее всего драйвер в ядро не попадёт. Я выкладываю патч, который получился с помощью патча Demoda, и в результате моего общения с Antti Palosaari. Если у кого-нибудь хватит умения, то он доведёт его до ядра, у меня на это нет времени и знаний.
....
Патч сделан на текущий media_build.


Пытаюсь сейчас поправить media_build в соответствии с diff'ом вручную, поскольку патчем он не наложился - видимо, media_build уже поменялся достаточно сильно.

Вопрос ещё такой: насколько данный патч применим для T8? Там будет достаточно несколько констант поменять в соответствии с соседним тредом или всё намного сложнее? Какие вообще тюнеры из выпускающихся лучше брать для цифрового тв под линуксом, Т8 или Cruise?

Автор:  ua0lnj [ 07 апр 2015, 02:06 ]
Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux

Последнее что делал я выкладываю тут http://linuxdvb.org.ru/wbb/index.php?pa ... eadID=1725
Состояние работоспособное, но не доделанное, сделать быструю загрузку фирмваре я пока не смог, из-за этого в ядро его не принимают.
Для Т8 не поможет, там другие чипы стоят, я даже не смотрел что получится.
Производитель официально линукс не поддерживает, поэтому все новые тюнера просто так не запустятся.
Если есть знания для разработки, пробуй написать патч сам, пиши на форуме вопросы, кто сможет подскажет.

Автор:  and2 [ 17 май 2015, 05:48 ]
Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux

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?)

Автор:  ua0lnj [ 20 май 2015, 16:21 ]
Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux

http://linuxdvb.org.ru/wbb/index.php?pa ... #post26870
И читать нужно последние по дате сообщения, а не первые, а вообще неплохо все.
Обрати внимание на изменение названия файла фирмваре.

Страница 2 из 22 Часовой пояс: UTC + 3 часа