sasamy 11 16 января, 2020 Опубликовано 16 января, 2020 · Жалоба 4 minutes ago, Bear_ku said: На шине MDIO адрес при включении платы "0", после перезагрузки "1". и вы бодро говорите что с подключением все ОК ? Quote The VDDO_LEVEL configuration bit can be overwritten by software. PHYAD cannot be overwritten. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bear_ku 0 16 января, 2020 Опубликовано 16 января, 2020 · Жалоба 14 minutes ago, sasamy said: почему 7800 если у вас 7801 с внешним PHY, да и сомневаюсь что прописав PHY в DT это что-то изменит - PHY должен автоматом определяться. Осцилом не пробовали смотреть обмен по mdio ? для начала отладочные сообщения включите в драйвере Тут реально ошибка. Исправил на 7801, изменений нет. С отладочными сообщениями у меня проблема. Вроде бы и включил их в .config, размер библиотек вырос раза в 3. Но в dmesg новой информации, по крайней мере касательно интересующей темы, не появилось. Если подскажете как правильно сделать и куда смотреть, буду благодарен. По поводу осциллограмм написал выше. Обращение к PHY есть, но ответа нет, по крайней мере в том сообщении что я вижу. При этом адрес устройства в этом сообщении меняется, при включении "0", при перезагрузке "1". Но в обоих случаях PHY ничего не отвечает. Когда PHY проверял отдельно, он вел себя адекватно. 11 minutes ago, gosha-z said: А с чего вы вообще взяли, что для 7801 должен быть такой compatible? Вот цитата из документации: Required properties: - compatible: Should be one of "usb424,7800", "usb424,7801" or "usb424,7850". 11 minutes ago, sasamy said: и вы бодро говорите что с подключением все ОК ? Честно говоря не понял к чему это относится. Адрес выставляет LAN7801 и это программная часть, на PHY он задан подтяжкой к соответствующему уровню. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 1 16 января, 2020 Опубликовано 16 января, 2020 · Жалоба А покажите dmesg при включении LAN8701. И какой адрес выставлен на марвеле? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 11 16 января, 2020 Опубликовано 16 января, 2020 (изменено) · Жалоба 8 minutes ago, Bear_ku said: Честно говоря не понял к чему это относится. Адрес выставляет LAN7801 и это программная часть, на PHY он задан подтяжкой к соответствующему уровню. Адрес PHY устанавливается исключительно аппаратной конфигурацией - я вам даташит процитировал Quote 2.18.1 Hardware Configuration After the deassertion of RESETn the device will be hardware configured. The device is configured through the CONFIG pin не может он скакать с 0 на 1 если CONFIG подключен к VSS Изменено 16 января, 2020 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bear_ku 0 16 января, 2020 Опубликовано 16 января, 2020 · Жалоба Сейчас у меня к базовой плате подключено два одинаковых модуля. На одном адрес PHY "0", на другом "1". После включения (на пойманном осциллографе сообщении адрес 0, загрузились eth0 и eth1): [ 3.162884] usb 1-1.1: New USB device found, idVendor=0424, idProduct=7801, bcdDevice= 3.00 [ 3.177790] usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 3.266887] usb 1-1.2: new high-speed USB device number 4 using dwc_otg [ 3.365955] usb 1-1.2: New USB device found, idVendor=0424, idProduct=7801, bcdDevice= 3.00 [ 3.380600] usb 1-1.2: New USB device strings: Mfr=0, Product=0, SerialNumber=0 ... [ 10.741131] libphy: lan78xx-mdiobus: probed [ 10.741223] lan78xx 1-1.1:1.0 (unnamed net_device) (uninitialized): int urb period 64 [ 10.967083] libphy: lan78xx-mdiobus: probed [ 10.967241] lan78xx 1-1.2:1.0 (unnamed net_device) (uninitialized): int urb period 64 [ 10.998643] usbcore: registered new interface driver lan78xx При перезагрузке (на пойманном осциллографе сообщении адрес 1, загрузился только один eth0): [ 3.170826] usb 1-1.1: New USB device found, idVendor=0424, idProduct=7801, bcdDevice= 3.00 [ 3.185233] usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 3.211023] systemd[1]: System time before build time, advancing clock. [ 3.273810] usb 1-1.2: new high-speed USB device number 4 using dwc_otg [ 3.372948] usb 1-1.2: New USB device found, idVendor=0424, idProduct=7801, bcdDevice= 3.00 ... [ 9.754045] libphy: lan78xx-mdiobus: probed [ 9.754149] lan78xx 1-1.1:1.0 (unnamed net_device) (uninitialized): int urb period 64 [ 10.007435] libphy: lan78xx-mdiobus: probed [ 10.007467] lan78xx 1-1.2:1.0 (unnamed net_device) (uninitialized): int urb period 64 [ 10.015888] lan78xx 1-1.2:1.0 eth1: no PHY driver found [ 10.015902] lan78xx 1-1.2:1.0 eth1: lan7801: PHY Init Failed [ 10.055475] lan78xx: probe of 1-1.2:1.0 failed with error -5 [ 10.055645] usbcore: registered new interface driver lan78xx Согласен, адрес PHY не меняется. Меняется адрес в сообщении, он задается программно и PHY к нему отношение имеет только косвенное, т.е. может ответить на свой и молчать на чужой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 1 16 января, 2020 Опубликовано 16 января, 2020 · Жалоба А PHY подсистема вообще. и марвеловские драйвера в частности, в ядре включены? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 16 января, 2020 Опубликовано 16 января, 2020 · Жалоба 4 часа назад, gosha-z сказал: А PHY подсистема вообще. и марвеловские драйвера в частности, в ядре включены? хороший вопрос! всегда увлекательно распутывать чужие проблемы вытягивая из ТС крупицы информации :) из достоверно известного - связка запускается и даже отправляет/принимает пакеты, через раз теряется phy - это со слов ТС схемы, разводки, логов ядра, настроек не видно.. я бы отталкивался, что "phy пропадает", а это для mdc/mdio редкость.. т.е. проблема узловая - питание/тактирование lan78 - питание/тактирование 1512 встать осциллом на mdc/mdio и посмотреть на происходящее при нормальной работе и "потере" phy аналогично смотреть все питания при норме/падение временно чем-нить подменить источник тактовой 1512 это так, веером пальцев в небо.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bear_ku 0 17 января, 2020 Опубликовано 17 января, 2020 (изменено) · Жалоба Не разбираясь в вопросе, сложно собрать сразу всю необходимую информацию. PHY вообще не грузится, просто понимает это драйвер LAN7981 только после перезагрузки и тогда сетевое соединение уже не появляется в системе. При сборке ядра были добавлены модули: Deivice Drivers ---> Network device support ---> PHY Device support and Infrastructure ---> <M> Marvell PHYs USB Network Adapters ---> <M> Microchip LAN78XX Based USB Ethernet Adapters Вот модуль драйвера marvell на загруженной системе: pi@raspberrypi:/lib/modules/4.19.71-rt24-v7+/kernel/drivers/net/phy$ ls marvell.ko mdio-bitbang.ko Список загруженных системой модулей одинаковый при включении и перезагрузке: Module Size Used by sha256_generic 20480 0 cfg80211 626688 0 rfkill 28672 2 cfg80211 8021q 32768 0 garp 16384 1 8021q stp 16384 1 garp llc 16384 2 garp,stp lan78xx 49152 0 bcm2835_codec 36864 0 snd_bcm2835 24576 1 bcm2835_v4l2 45056 0 v4l2_mem2mem 24576 1 bcm2835_codec bcm2835_mmal_vchiq 32768 2 bcm2835_codec,bcm2835_v4l2 raspberrypi_hwmon 16384 0 v4l2_common 16384 1 bcm2835_v4l2 hwmon 16384 1 raspberrypi_hwmon videobuf2_dma_contig 20480 1 bcm2835_codec snd_pcm 98304 1 snd_bcm2835 videobuf2_vmalloc 16384 1 bcm2835_v4l2 videobuf2_memops 16384 2 videobuf2_dma_contig,videobuf2_vmalloc videobuf2_v4l2 24576 3 bcm2835_codec,bcm2835_v4l2,v4l2_mem2mem videobuf2_common 45056 4 bcm2835_codec,bcm2835_v4l2,v4l2_mem2mem,videobuf 2_v4l2 snd_timer 32768 1 snd_pcm snd 69632 5 snd_timer,snd_bcm2835,snd_pcm videodev 184320 6 bcm2835_codec,v4l2_common,videobuf2_common,bcm28 35_v4l2,v4l2_mem2mem,videobuf2_v4l2 media 36864 3 bcm2835_codec,videodev,v4l2_mem2mem vc_sm_cma 36864 1 bcm2835_mmal_vchiq uio_pdrv_genirq 16384 0 uio 20480 1 uio_pdrv_genirq fixed 16384 0 ip_tables 24576 0 x_tables 32768 1 ip_tables ipv6 454656 22 Т.е. видно что драйвер marvell даже и не думал грузиться. По крайней мере мне сказали что если модуль был загружен, то вряд ли его кто-то выгружал. Про питание уже писал, оно соответствует ДШ. Тактирование в норме. По отдельности обе микросхемы работают. Про MDIO уже выше писал, сигнал с LAN7981 идет, а вот ответа от PHY нет, по крайней в том запросе что ловится осциллографом. При этом если подключиться к этой шине (к выводам RPi), то регистры с PHY считываются без проблем. В схеме ничего секретного нет ( IM_61850.pdf ). Задавая тут вопрос, не думал что кто-то реально полезет со всем этим разбираться, просто надеялся на имеющийся опыт. А как может повлиять на MDIO разводка, вообще не представляю. Вырезки из логов выкладывал, вроде в dmesg ничего больше дела не касалось, но можно приложить и всю портянку. И о каких настройках идет речь? В системе все по умолчанию на данный момент, первое что начал делать это device tree, изменения в котором выложил выше. Изменено 17 января, 2020 пользователем Bear_ku Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 11 17 января, 2020 Опубликовано 17 января, 2020 (изменено) · Жалоба 3 hours ago, Bear_ku said: PHY вообще не грузится, просто понимает это драйвер LAN7981 только после перезагрузки потому что драйвер MAC его не видит на шине MDIO и все прекрасно поимает - если бы вы включили отладочные сообщения увидели бы сообщения драйвера об этом https://elixir.bootlin.com/linux/v4.19.96/source/drivers/net/usb/lan78xx.c#L2072 сейчас он молча предполагает что есть неуправляемый PHY с фиксированными параметрами - по умолчанию вывод ф-ций *_dbg отключен https://stackoverflow.com/questions/50504516/enable-linux-kernel-driver-dev-dbg-debug-messages 3 hours ago, Bear_ku said: По отдельности обе микросхемы работают. 3 hours ago, Bear_ku said: А как может повлиять на MDIO разводка, вообще не представляю. а какие вы ешё можете предложить варианты в такой ситуации ? Quote первое что начал делать это device tree через DT максимум что можно изменить - MAC-адрес который и без этого легко меняется из юзерспейс и поведение лампочек Изменено 17 января, 2020 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 17 января, 2020 Опубликовано 17 января, 2020 · Жалоба 3 часа назад, Bear_ku сказал: PHY вообще не грузится, просто понимает это драйвер LAN7981 только после перезагрузки и тогда сетевое соединение уже не появляется в системе. Вот модуль драйвера marvell на загруженной системе: Список загруженных системой модулей одинаковый при включении и перезагрузке: Т.е. видно что драйвер marvell даже и не думал грузиться. По крайней мере мне сказали что если модуль был загружен, то вряд ли его кто-то выгружал. Про питание уже писал, оно соответствует ДШ. Тактирование в норме. По отдельности обе микросхемы работают. Про MDIO уже выше писал, сигнал с LAN7981 идет, а вот ответа от PHY нет, по крайней в том запросе что ловится осциллографом. При этом если подключиться к этой шине (к выводам RPi), то регистры с PHY считываются без проблем. В схеме ничего секретного нет ( IM_61850.pdf ). Задавая тут вопрос, не думал что кто-то реально полезет со всем этим разбираться, просто надеялся на имеющийся опыт. А как может повлиять на MDIO разводка, вообще не представляю. Вырезки из логов выкладывал, вроде в dmesg ничего больше дела не касалось, но можно приложить и всю портянку. И о каких настройках идет речь? В системе все по умолчанию на данный момент, первое что начал делать это device tree, изменения в котором выложил выше. посмотрел схему, на вид ничего криминального, пара точек в соединениях отсутствует, но влиять не будут.. вопрос к сигналу reset_n от lan78 к 1512, по докам от LAN минимум прописан 1мкс, а что там по факту? т.к. у 1512 д.б. не менее 10мс, у марвелла с этим строго.. я бы еще Y1 (кварц) попробовал заменить на такой же или другого типа, у вас usb 3.1, а она более требовательна к частотам, чем та же usb 2.0 но более интересно - загрузка marvell.ko, как я ранее писал, с отладкой - детектит ли phy id, вам все равно с этим разбираться при работе с sfp ЗЫ еррату на lan78 не искали, может там какие косяки исправлены? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bear_ku 0 17 января, 2020 Опубликовано 17 января, 2020 (изменено) · Жалоба Драйвера на MAC смотрел, но сильно глубоко не копался. Как раз исходя из них и сделал вывод, что надо где-то указать используемый PHY. С включением питания надо разбираться отдельно, но при перезагрузке дело доходит до сообщения: ... phydev = phy_find_first(dev->mdiobus); if (!phydev) { ... } else { if (!phydev->drv) { netdev_err(dev->net, "no PHY driver found\n"); return NULL; } } Т.е. сам МАС "найден", а вот драйверы для него - нет. При этом в структурах сидят следующие значения: phydev->phy_id = 0 phydev->mdio->addr = 0 Значение в phy_id на сколько я понимаю должно соответствовать 88E1512, что явно далеко до истины. Вот разводка данной части, сигналы MDIO и MDC снизу, отдельно выделены. Слои TOP - зеленый, BOTTOM - желтый, GND - внутренний слой земли. Единственное что сигналы изначально на схеме были перепутаны и их пришлось перекинуть проводами, но тут не те скорости чтобы это на что-то повлияло. Подтяжка к питанию осталась на MDIO. 26 minutes ago, Jury093 said: вопрос к сигналу reset_n от lan78 к 1512, по докам от LAN минимум прописан 1мкс, а что там по факту? т.к. у 1512 д.б. не менее 10мс, у марвелла с этим строго.. я бы еще Y1 (кварц) попробовал заменить на такой же или другого типа, у вас usb 3.1, а она более требовательна к частотам, чем та же usb 2.0 Ресет проверю. А вот usb 3.1 тут по факту не используется, т.к. USB HUB 2.0. Или все равно это может на что-то повлиять? Изменено 17 января, 2020 пользователем Bear_ku Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 1 17 января, 2020 Опубликовано 17 января, 2020 · Жалоба А что мешает в конфиге ядра поменять 'M' на '*' на пробу? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 11 17 января, 2020 Опубликовано 17 января, 2020 (изменено) · Жалоба 1 hour ago, Jury093 said: вопрос к сигналу reset_n от lan78 к 1512, по докам от LAN минимум прописан 1мкс, а что там по факту? т.к. у 1512 д.б. не менее 10мс Если больше ничего в схеме не перепутано это по-моему единственное логическое объяснение. Можно попробовать разорвать линию RESETn, еше попробовать вручную сделать длитеьный сброс - вставить задержку на пару секунд перед вызовом phydev = phy_find_first(dev->mdiobus); и кратковременно проводком замкнуть на землю RESETn. Еще номиналы подтяжек на MDIO проверить - неизвестно что там реально запаяно. Изменено 17 января, 2020 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bear_ku 0 17 января, 2020 Опубликовано 17 января, 2020 · Жалоба 50 minutes ago, gosha-z said: А что мешает в конфиге ядра поменять 'M' на '*' на пробу? Делал. Никакого отличия. Но в случае модуля я знаю как посмотреть его загрузку, а вот если включить в ядро - нет ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 1 17 января, 2020 Опубликовано 17 января, 2020 · Жалоба Попробуйте следующий вариант DT: mac0: ethernet@0 { phy = <&phy0>; phy0: ethernet-phy@0 { reg = <0>; }; }; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться