#linux-kernel #embedded-linux #udev #device-tree #android-firmware
#linux-ядро #встроенный-linux #udev #устройство-дерево #android-прошивка
Вопрос:
Я получаю сообщение об ошибке, указанное в журналах загрузки, когда загружается мое ядро 4.2 armv7l (и аппаратное обеспечение OMAP35xSOM-LV, плата LogicPD).
[ 14.893432] omap_ssi 48058000.ssi-controller: ssi controller 0 initialized (2 ports)!
[ 14.959777] omap_ssi_port 4805a000.ssi-port: couldn't get cawake gpio (err=-2)!
[ 15.034698] omap_ssi_port: probe of 4805a000.ssi-port failed with error -2
[ 15.130096] omap_ssi_port 4805b000.ssi-port: couldn't get cawake gpio (err=-2)!
Я вижу, что этот контроллер порта ssi отключен в одном из файлов дерева устройств (omap3.dtsi), но все равно эта ошибка появляется при загрузке ядра. Как подавить эту ошибку? Я новичок в концепции дерева устройств. Для большей ясности соответствующий код внутри omap3.dtsi, ссылающийся на обсуждаемые порты, выглядит следующим образом:
ssi: ssi-controller@48058000 {
compatible = "ti,omap3-ssi";
ti,hwmods = "ssi";
status = "disabled";
reg = <0x48058000 0x1000>, <0x48059000 0x1000>;
reg-names = "sys", "gdd";
interrupts = <71>;
interrupt-names = "gdd_mpu";
#address-cells = <1>;
#size-cells = <1>;
ranges;
ssi_port1: ssi-port@4805a000 {
compatible = "ti,omap3-ssi-port";
reg = <0x4805a000 0x800>, <0x4805a800 0x800>;
reg-names = "tx", "rx";
interrupts = <67>, <68>;
};
ssi_port2: ssi-port@4805b000 {
compatible = "ti,omap3-ssi-port";
reg = <0x4805b000 0x800>, <0x4805b800 0x800>;
reg-names = "tx", "rx";
interrupts = <69>, <70>;
};
};
Комментарии:
1. Файлы .dtsi должны быть включены в другие файлы .dtsi или в основной файл .dts. Таким образом, хотя контроллер порта ssi отключен в файле omap3.dtsi, он, вероятно, включен в каком-либо другом файле .dtsi или .dts.
2. Ссылка на порт ssi @ 48058000 (как показано в журналах) отсутствует в других файлах dtsi, за исключением файла omap3.dtsi. Файл включен в файл dts, относящийся к моей плате, поэтому я не уверен, как отображается ссылка на файл ssi-port @ 4805a000, даже если он отключен (см. Рис.). Обновлен вопрос, чтобы включить фрагмент кода в обсуждение.
3.Если
amp;ssi {
}
в файле dts основной платы (или в каком-либо другом включенном файле .dtsi) нет блока, который его включает, единственное, что я могу придумать, это то, что, возможно, файл .dtbo загружается загрузчиком вашей платы или самой системой Linux (если ядроисправлено, чтобы разрешить загрузку оверлеев DTB из пользовательского пространства).4. Ошибка должна действительно возникать, когда
ti,ssi-cawake-gpio
свойство отсутствует (из узла"ti,omap3-ssi-port"
совместимого устройства). Указывает ли cat / proc/device-tree/ ocp @68000000/ ssi-controller @ 48058000/status , что контроллер SSI «в порядке» или «отключен»? Существует ли /proc/device-tree/ocp@68000000/ssi-controller@48058000/ssi-port@4805a000/ti, ssi-cawake-gpio ?5. Документы перечислены
ti,ssi-cawake-gpio
в разделе «Требуемые свойства подузла порта» для контроллера OMAP SSI, но описывают свойство следующим образом: «Определяет, какой пин-код GPIO используется для обозначения событий CAWAKE для порта. Это необязательное свойство, зависящее от платы. Если он отсутствует, порт не будет включен «. Язык сбивает с толку, поскольку он является как обязательным, так и необязательным (?!), Но, возможно, это нормальное поведение. Если это нормально, то уровень серьезности журнала «ОШИБКА» кажется немного чрезмерным.
Ответ №1:
Предупреждение может быть подавлено изнутри drivers/hsi/ controllers/omap_ssi_port.c. Документ сохраняет cawake gpio в качестве необязательного компонента. Поскольку gpio cawake — это просто мультиплексированная форма (а не фактический аппаратный вывод), нет никакого смысла отключать его внутри дерева устройств (по крайней мере, для серии omap3).
cawake_gpio = devm_gpiod_get(amp;pd->dev, "ti,ssi-cawake", GPIOD_IN);
/* if (IS_ERR(cawake_gpio)) {
err = PTR_ERR(cawake_gpio);
dev_err(amp;pd->dev, "couldn't get cawake gpio (err=%d)!n", err);
goto error;
}
*/
Комментарии:
1. В качестве альтернативы, можно попробовать использовать эту ссылку -> e2e.ti.com/support/microcontrollers/other/f /…