Ник:
Пароль:

Контакты

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

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Процессорные модули » SK-iMX6S/D-SODIMM
i.mx6 - как изменить Device Tree
sasamy
Добавлено 10.11.2014 10:42 Редактировалось 10.11.2014 11:03
0
Сообщение: 1
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Цитата

Плата SK-iMX6D-SODIMM, поменять хочу пин детектирования карты SD1, пин сброса mPCIE, добавить пин сброса usb hub, добавить карту памяти SD2, поменять звуковой кодек на sgtl5000(как на sreliteab), убрать из инициализации АЦП ADV7180 чтение и запись регистров по i2c(то есть работать с ним как с уже настоенным), добавить шину памяти pseudo sram.
Вот для примера заменить пин детектирования карты SD1 с GPIO_1_10(MX6Q_PAD_SD2_CLK__GPIO_1_10) на GPIO_4_12(MX6Q_PAD_KEY_COL3__GPIO_4_12).


Для знакомства с Device Tree рекомендую вводный материал

http://events.linuxfoundation.org/sites/events/files/slides/petazzoni-device-tree-dummies.pdf

и документацию в исходниках ядра

linux-imx_3.10.17_1.0.2_ga-sk/Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt
fsl,imx6q-pinctrl.txt
fsl,imx6dl-pinctrl.txt

В pinctrl фрискейл есть специальная группа

&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog>;

hog {
pinctrl_hog: hoggrp {

/* SD1 CD */
MX6QDL_PAD_SD2_CLK__GPIO1_IO10 0x80000000
/* mPCIe reset */
MX6QDL_PAD_SD2_DAT3__GPIO1_IO12 0x80000000

здесь можно описывать пины которые нужно всегда инициализировать независимо от периферийного блока - например GPIO.
См. файл arch/arm/boot/dts/imx6q-pinfunc.h для quad - dual, imx6dl-pinfunc.h - для dual lite - solo.
Тут описаны все возможные варианты настройки пинов, для PAD_KEY_COL3

grep "PAD_KEY_COL3" imx6q-pinfunc.h
#define MX6QDL_PAD_KEY_COL3__ECSPI1_SS3 0x210 0x5e0 0x80c 0x0 0x1
#define MX6QDL_PAD_KEY_COL3__ENET_CRS 0x210 0x5e0 0x000 0x1 0x0
#define MX6QDL_PAD_KEY_COL3__HDMI_TX_DDC_SCL 0x210 0x5e0 0x890 0x2 0x1
#define MX6QDL_PAD_KEY_COL3__KEY_COL3 0x210 0x5e0 0x000 0x3 0x0
#define MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x210 0x5e0 0x8a0 0x4 0x1
#define MX6QDL_PAD_KEY_COL3__GPIO4_IO12 0x210 0x5e0 0x000 0x5 0x0
#define MX6QDL_PAD_KEY_COL3__SPDIF_IN 0x210 0x5e0 0x914 0x6 0x2

Добавляем его описание а группе hog в imx6qdl-sodimm.dtsi

/* SD1 CD */
MX6QDL_PAD_KEY_COL3__GPIO4_IO12 0x80000000

пин настроен, теперь нужно сообщить драйверу usdhc GPIO для детектирования карты

&usdhc1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usdhc1_sodimm>;
vmmc-supply = <&reg_3p3v>;
keep-power-in-suspend;
enable-sdio-wakeup;
no-1-8-v;
cd-gpios = <&gpio4 12 0>;
status = "okay";

сразу проверяйте - не конфликтует ли пин с тем что уже прописано в device tree, например в данном случае этот пин конфликтует с spdif-in - так что его надо либо отключать (например оставить только spdif-out) или переназначать ему входной пин если это возможно.

пин сброса mPCIE - аналогично, только указывается номер GPIO для драйвера pcie

&pcie {
reset-gpio = <&gpio1 12 0>;
status = "okay";
};

добавить пин сброса usb hub - в драйверах USB хоста есть пин управления питанием, сброс внешнего хаба я не встречал, но думаю что в u-boot это сделать проще

добавить карту памяти SD2 - посмотрите для начала, возможно ли это на данном модуле. Сначала нужно исключить конфликты по пинам, потом добавить аналогично usdhc1

поменять звуковой кодек на sgtl5000(как на sreliteab) - смотрите DTS файл sabrelite и замените tlv320 на sgtl5000

убрать из инициализации АЦП ADV7180 чтение и запись регистров по i2c - это к DTS не относится - иправляйте в драйвере adv7180 как вам надо

добавить шину памяти pseudo sram - с weim иметь дело не приходилось - поищите на форме Freescale, в DTS прописана настройка пинов как было в старом ядре 3.0.35 и включен драйвер weim.

&weim {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_weim_sodimm>;
#address-cells = <2>;
#size-cells = <1>;
ranges = <0 0 0x08000000 0x08000000>;
status = "okay";
};

по аналогии с какой-то из референсных плат
Спуститься к концу Подняться к началу
Персональная информация
lexx666
Добавлено 25.12.2014 16:39 Сообщение: 2
lexx666
3.83

Пункты: 11780
Регистрация: 28.07.2011
Пол: Мужчина
Из: Барнаул
При изненении конфига и device tree для imx6 имел такую проблему...
1) Есть драйвер rtc-snvs.c в котором есть соотвествующий код.

if (!pm_power_off)
pm_power_off = snvs_poweroff;


2) Есть драйвер gpio-poweroff.c, в котором есть аналогичный вызов

if (pm_power_off != NULL) {
pr_err("%s: pm_power_off function already registered",
__func__);
return -EBUSY;
}

Пока решил проблему так в rtc-snvs.c закоментировал строчки, gpio-poweroff загружается и работает... Если не комментировать то естественно драйвер gpio-poweroff не грузиться...

Но как установить порядок загрузки драйверов в dts файле? По уму то ?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 25.12.2014 17:27 Редактировалось 25.12.2014 17:30 Сообщение: 3
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Цитата

Но как установить порядок загрузки драйверов в dts файле?


Порядок инициализации модулей ядра слинкованных статически как и раньше зависит от положения Makefile и порядка следования правил сборки модулей внутри Makefile в дереве исходников ядра. Модули инициализируются друг за другом по порядку и на многоядерных системах - инициализация выполняется на одном ядре, распараллеливание процесса загрузки ядра в ванильном ядре пока не реализовано. Порядок энумерации однотипных устройств зависит от положения описания в DTS

http://starterkit.ru/html/index.php?name=forum&op=view&id=24078#24263

в последней версии ядра я как раз поставил usdhc3 на первое место
Спуститься к концу Подняться к началу
Персональная информация
korigo
Добавлено 13.12.2016 16:45 Редактировалось 13.12.2016 20:30 Сообщение: 4
korigo
0

Пункты: 1360
Регистрация: 23.11.2016
Здравствуйте!
Пытаемся подцепить к imx6sodimm ADV7181 в режиме ввода RGB 1024х768
Подскажите пожалуйста по аналогии с ADV7180 : как изменить ввод с CSI0 на CSI1 (определить с какого процессор будет брать видео) и где заложены настройки режима ввода для CSI (форматы, частоты).
Можно ли подключить одновременно оба csi для параллельного ввода (не принимая во внимание ограничения платы по пинам)
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 13.12.2016 20:50 Редактировалось 13.12.2016 21:10 Сообщение: 5
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Цитата

Пытаемся подцепить к imx6sodimm ADV7181 в режиме ввода RGB 1024х768


разве adv7181 такое может ?

http://www.analog.com/media/en/technical-documentation/data-sheets/ADV7181.pdf

насколько я понял он по сравнению с adv7180 больше потребляет и возможно меньше стоит, а так

Цитата

FEATURES
Multiformat video decoder supports NTSC-(J, M, 4.43),
PAL-(B/D/G/H/I/M/N), SECAM


https://community.nxp.com/thread/303792#comment-314664

Цитата

как изменить ввод с CSI0 на CSI1


теоретически - тут

Цитата

v4l2_cap_0 {
compatible = "fsl,imx6q-v4l2-capture";
ipu_id = <0>;
csi_id = <0>;
mclk_source = <0>;
ain_num = <1>;
status = "okay";
};


практически - не пробовал, тем более 2 одновременно..

Цитата

где заложены настройки режима ввода для CSI (форматы, частоты)


это должен сообщить драйвер подключаемого устройства - посмотрите исходники драйверов

linux_imx_4.1.15_1.1.0_ga-sk/drivers/media/platform/mxc/capture/

adv7180.c
mxc_v4l2_capture.c
Спуститься к концу Подняться к началу
Персональная информация
korigo
Добавлено 13.12.2016 21:07 Сообщение: 6
korigo
0

Пункты: 1360
Регистрация: 23.11.2016
Прошу прощения - несколько не точен - ADV7181C (D) этот может. Суть не в этом. Пытаюсь вникнуть в V4L - пока создается впечатление что CSI0 здесь заточен под параллельный ввод а CSI1 под MIPI
Спуститься к концу Подняться к началу
Персональная информация
korigo
Добавлено 13.12.2016 21:16 Сообщение: 7
korigo
0

Пункты: 1360
Регистрация: 23.11.2016
а в секции adv7180 csi_id что означает ?

adv7180: adv7180@21 {
compatible = "adv,adv7180";
reg = <0x21>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ipu1_csi_sodimm>;
....
csi_id = <0>;
mclk = <24000000>;
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 13.12.2016 21:33 Редактировалось 13.12.2016 21:40 Сообщение: 8
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Цитата

Пытаюсь вникнуть в V4L - пока создается впечатление что CSI0 здесь заточен под параллельный ввод а CSI1 под MIPI


Это не V4L заточен а сам процессор

http://cache.freescale.com/files/training/doc/ftf/2014/FTF-CON-F0119.pdf

стр 22 Video Input Ports In i.MX6 D/Q

Параллельный можно только к CSI0 подключить, а MIPI на любой через мультиплексоры

Цитата

Three ports; up to six input channels
Two parallel – connected directly to the IPUs; independent clock and format setting
One MIPI/CSI-2 – can transfer up to four concurrent channels


это для i.mx6D/Q у которого два IPU
Спуститься к концу Подняться к началу
Персональная информация
korigo
Добавлено 13.12.2016 22:12 Сообщение: 9
korigo
0

Пункты: 1360
Регистрация: 23.11.2016
У меня imx6s и для него несколько по другому- поскольку IPU только один то оба CSI коммутируют и параллельные порты
http://www.nxp.com/assets/documents/data/en/reference-manuals/IMX6SDLRM.pdf стр.446
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 13.12.2016 22:31 Редактировалось 13.12.2016 22:33 Сообщение: 10
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Цитата

У меня imx6s и для него несколько по другому- поскольку IPU только один то оба CSI коммутируют и параллельные порты


Тогда скомутируйте как нужно

стр 2067

37.4.14 GPR13 (IOMUXC_GPR13)

IPU_CSI0_MUX, IPU_CSI1_MUX

в коде это устанавливается тут

http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/tree/arch/arm/mach-imx/mach-imx6q.c?h=imx_4.1.15_1.0.0_ga#n239
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Процессорные модули » SK-iMX6S/D-SODIMM