Драйвер управления контактами freescale imx, как рассчитываются группы?

Я пытаюсь понять драйвер контроллера выводов im.X из ядра Linux. http://lxr.free-electrons.com/source/drivers/pinctrl/pinctrl-imx.c?v=3.10#L513

Я сбросил значения info->ngroups = 38 и info->nfunctions = 2, но не понял, как значение info->ngroups было рассчитано до 38, это уважаемые файлы DTS?

http://lxr.free-electrons.com/source/arch/arm/boot/dts/imx6q.dtsi?v=4.1#L104


person Milan    schedule 27.04.2017    source источник


Ответы (1)


Это потому, что файл DTS, на который вы ссылаетесь, имеет расширение .dtsi. Это не настоящая плата DTS, и она (должна быть) включена в другой файл DTS, например imx6q-sbc6x.dts. В этом файле DTS определены другие функции с дополнительными контактами, поэтому вы можете иметь, например, nfunctions = 2 и ngroups = 38.

Если вы найдете правильный файл DTS для своей платы, эти числа должны «совпасть» с тем, что вы видите в дампе.

person Longfield    schedule 27.04.2017
comment
Спасибо за ответ, то, что вы сказали, имеет смысл для меня. imx6q-nitrogen6x.dts - это фактический файл платы, который включает imx6q.dtsi и imx6qdl-nitrogen6x.dtsi, но все еще не может понять, как здесь считается 38 и всего 2 функции? - person Milan; 27.04.2017
comment
Что ж, 2 функции — это 2 дочерних элемента узла iomuxc@020e0000, а именно ipu2 из imx6q.dtsi и imx6q-nitrogen6x из imx6qdl-nitrogen6x.dtsi. Затем 38 групп являются дочерними группами этих двух узлов, например, ipu2grp-1 или enetgrp соответственно. - person Longfield; 28.04.2017