Jury093
Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата Так, это все объяснение для умных людей, а вот если как для идиота который это все видит первый раз в жизни, куда смотреть че делать?:)
читайте внимательно - вам уже ответили:
Код вызов ioctl VIDIOC_S_INPUT, который в драйвере ADV7180 вообще не реализован
Цитата Из этого всего я понял что VIDIOC_S_INPUT не должен сработать, но тогда что? Какие методы могут мне помочь в решении проблемы?
метод прост, как гвоздь:
- написать самому
- найти человека, который допишет поддержку
- ждать, когда появится новый драйвер с нужными функциями..
На любой вопрос есть любой ответ.
mibin
Пункты: 7688
Регистрация: 22.05.2012
Пол: Мужчина
достаточно ли будет добавить вот таких строчек кода с измененным адресом в конце?
соответственно с каким-то условным разделением.
Код adv7180_write_reg(ADV7180_INPUT_CTL, 0x00);
0000 Composite CVBS input on AIN1
0001 Composite CVBS input on AIN2
0010 Composite CVBS input on AIN3
0011 Composite CVBS input on AIN4
0100 Composite CVBS input on AIN5
0101 Composite CVBS input on AIN6
И вообще могу ли я эту функцию вызвать у себя в программе и все?
mibin
Пункты: 7688
Регистрация: 22.05.2012
Пол: Мужчина
Такая реализация вообще возможна или это все делается гораздо сложнее?
Jury093
Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата И вообще могу ли я эту функцию вызвать у себя в программе и все?
ну вы даете! я бы уже сто раз попробовал самостоятельно - дописать кусок кода хотя бы на пару входов, пересобрать и проверить функционирование..
функцию, которую пропишете в драйвере? конечно можете..
На любой вопрос есть любой ответ.
mibin
Пункты: 7688
Регистрация: 22.05.2012
Пол: Мужчина
Да я на работе и пока в состоянии только теорию развивать, в 8 часов буду дома и сяду и буду делать, по Вашему мне теорию развивать очень нравится...сижу мучаюсь быстрее бы 6 часов...
mibin
Пункты: 7688
Регистрация: 22.05.2012
Пол: Мужчина
Цитата функцию, которую пропишете в драйвере? конечно можете..
Нет, а прям вот эту функцию (adv7180_write_reg(ADV7180_INPUT_CTL, 0x00);) я вызвать могу? ведь я драйвере я бы написал что-то типа:
Код static void adv7180_hard_reset(int cvbs) {
dev_dbg(&adv7180_data.i2c_client->dev, "In adv7180:adv7180_hard_reset\n");
switch(cvbs)
case 1: {/* Set CVBS input on AIN1 */
adv7180_write_reg(ADV7180_INPUT_CTL, 0x00);
break;
}
case 2: {/* Set CVBS input on AIN1 */
adv7180_write_reg(ADV7180_INPUT_CTL, 0x01);
break;
}
case 3: {/* Set CVBS input on AIN1 */
adv7180_write_reg(ADV7180_INPUT_CTL, 0x02);
break;
}
case 4: {/* Set CVBS input on AIN1 */
adv7180_write_reg(ADV7180_INPUT_CTL, 0x03);
break;
}
case 5: {/* Set CVBS input on AIN1 */
adv7180_write_reg(ADV7180_INPUT_CTL, 0x03);
break;
}
default: {
/*
* Set YPbPr input on AIN1,4,5 and normal
* operations(autodection of all stds).
*/
adv7180_write_reg(ADV7180_INPUT_CTL, 0x09);
}
}
leh
Пункты: 1646
Регистрация: 07.06.2009
Пол: Мужчина
Из: Волгоград
Цитата Нет, а прям вот эту функцию (adv7180_write_reg(ADV7180_INPUT_CTL, 0x00);) я вызвать могу?
Безусловно нет, это реализуется только в драйвере. Для выполнения таких функций из уровня приложения как раз и существует системный вызов ioctl с различными командами, одной из которых является VIDIOC_S_INPUT.
У меня сейчас используется вариант драйвера, где номер канала выбирается параметром input=<номер>. Ссылка на пропатченый
драйвер .
Это позволяет менять канал только при запуске модуля. Сам планирую делать это "на лету" с помощью ioctl, но пока до этого руки не дошли, ибо не первоочередная задача.
mibin
Пункты: 7688
Регистрация: 22.05.2012
Пол: Мужчина
Хорошо я понял, а как меняется инициализация используя этот драйвер?
leh
Пункты: 1646
Регистрация: 07.06.2009
Пол: Мужчина
Из: Волгоград
Для начала надо собрать его в виде модуля, а потом можете запускать его с разными значениями input:
insmod adv7180_tvin.ko input=1
или
insmod adv7180_tvin.ko input=2
... и т.д.
mibin
Пункты: 7688
Регистрация: 22.05.2012
Пол: Мужчина
Это похоже в консоли, а внутри программы такие измкнения сделать возможно?