Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:0
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:4
Форум » starterkit.ru » Embedded Linux
ADV7180 и Video4Linux2
Jury093
Добавлено 30.01.2013 14:48 Сообщение: 41
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Так, это все объяснение для умных людей, а вот если как для идиота который это все видит первый раз в жизни, куда смотреть че делать?:)

читайте внимательно - вам уже ответили:
Код
вызов ioctl VIDIOC_S_INPUT, который в драйвере ADV7180 вообще не реализован


Цитата
Из этого всего я понял что VIDIOC_S_INPUT не должен сработать, но тогда что? Какие методы могут мне помочь в решении проблемы?

метод прост, как гвоздь:
- написать самому
- найти человека, который допишет поддержку
- ждать, когда появится новый драйвер с нужными функциями..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
mibin
Добавлено 30.01.2013 15:07 Редактировалось 30.01.2013 15:42 Сообщение: 42
mibin
5

Пункты: 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
Добавлено 30.01.2013 15:52 Сообщение: 43
mibin
5

Пункты: 7688
Регистрация: 22.05.2012
Пол: Мужчина
Такая реализация вообще возможна или это все делается гораздо сложнее?
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 30.01.2013 16:30 Сообщение: 44
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
И вообще могу ли я эту функцию вызвать у себя в программе и все?

ну вы даете! я бы уже сто раз попробовал самостоятельно - дописать кусок кода хотя бы на пару входов, пересобрать и проверить функционирование..

функцию, которую пропишете в драйвере? конечно можете..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
mibin
Добавлено 30.01.2013 16:38 Сообщение: 45
mibin
5

Пункты: 7688
Регистрация: 22.05.2012
Пол: Мужчина
Да я на работе и пока в состоянии только теорию развивать, в 8 часов буду дома и сяду и буду делать, по Вашему мне теорию развивать очень нравится...сижу мучаюсь быстрее бы 6 часов...
Спуститься к концу Подняться к началу
Персональная информация
mibin
Добавлено 30.01.2013 16:46 Редактировалось 30.01.2013 16:47 Сообщение: 46
mibin
5

Пункты: 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
Добавлено 30.01.2013 18:51 Сообщение: 47
leh
5

Пункты: 1646
Регистрация: 07.06.2009
Пол: Мужчина
Из: Волгоград
Цитата
Нет, а прям вот эту функцию (adv7180_write_reg(ADV7180_INPUT_CTL, 0x00);) я вызвать могу?

Безусловно нет, это реализуется только в драйвере. Для выполнения таких функций из уровня приложения как раз и существует системный вызов ioctl с различными командами, одной из которых является VIDIOC_S_INPUT.
У меня сейчас используется вариант драйвера, где номер канала выбирается параметром input=<номер>. Ссылка на пропатченый драйвер.
Это позволяет менять канал только при запуске модуля. Сам планирую делать это "на лету" с помощью ioctl, но пока до этого руки не дошли, ибо не первоочередная задача.
Спуститься к концу Подняться к началу
Персональная информация
mibin
Добавлено 30.01.2013 20:11 Сообщение: 48
mibin
5

Пункты: 7688
Регистрация: 22.05.2012
Пол: Мужчина
Хорошо я понял, а как меняется инициализация используя этот драйвер?
Спуститься к концу Подняться к началу
Персональная информация
leh
Добавлено 30.01.2013 20:27 Сообщение: 49
leh
5

Пункты: 1646
Регистрация: 07.06.2009
Пол: Мужчина
Из: Волгоград
Для начала надо собрать его в виде модуля, а потом можете запускать его с разными значениями input:

insmod adv7180_tvin.ko input=1
или
insmod adv7180_tvin.ko input=2
... и т.д.
Спуститься к концу Подняться к началу
Персональная информация
mibin
Добавлено 30.01.2013 20:46 Сообщение: 50
mibin
5

Пункты: 7688
Регистрация: 22.05.2012
Пол: Мужчина
Это похоже в консоли, а внутри программы такие измкнения сделать возможно?
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux