Our schematic had one more line set for the address than we thought and instead of unsoldering something, we just changed the address in the devicetree, and then it showed up. For our prototype we were using two dp83867 phys.I think the second phy came up as a undefined phy device even when it wasn't set correctly. That's how we knew it was there, just not right. If you are only seeing one phy, it leads me to believe it's not wired correctly or the phy chip is defective. You could monitor the mdio bus with an oscilloscope or bus analyzer to see if anything else responds when it boots. I think the phy sends an alive message during bootup. If it's not getting that... something is physically wrong. Hardware blames software, software blames hardware... :)
Ray. Sent from Yahoo Mail on Android On Thu, Jan 14, 2021 at 5:54 PM, acheesehead<acheeseh...@gmail.com> wrote: Ray, Thanks for the detailed response. Greatly appreciated! What was wrong with your schematic? And how did you get it to show up in dmesg? I have triple checked our schematic, the board layout and the resistors on the board itself. And, yes, the phy on address 4 is detected and works find. The phy on address 5 is not detected and does not work when connected to a switch. I am running debian 4.19. I am rebuilding the kernel with the MDIO ALIVE register overriden by a hard-coded mask of 0xffffffcf in davinci_mdio.c. That is the value I would expect. The mask is actually the inverted value of the MDIO ALIVE register. I suspect this register is populated by the boot ROM. I didn't get a chance to check if this modification to the davinci_mdio driver actually works on the board. Won't be until Mon. ToddOn Thursday, January 14, 2021 at 10:22:29 AM UTC-7 r.wil...@yahoo.com wrote: Correct me if I'm wrong, but what your saying is only one Ethernet PHY works and the other one doesn't (based on seeing in your dmesg only 4 came active)? Did you connect both to an unmanaged switch and still only seen 4? If so, it sounds like one of two things:1. The one designated as address 5 on the mdio bus is the wrong device address. Interestingly, I had a similar thing happen and we thought we identified the address according to the schematics but wasn't working. After recounting the binary numbers for the address based what lines where used to create the address in the schematic, we were off. It showed up in dmesg after that with the corrected mdio bus address. 2. Whenever you have two PHYS you have to do three things to get it to work better. A. Remove connmanctl ($ sudo apt remove connman) This is a network manager that doesn't play well with two phys unless you really know what you're doing (you have to give each phy a designator for it's MAC address with connmanctl). I found it's just easier to remove it from the Kernel. B. You should define two phys in the "interfaces" file located at /etc/network Change this: #auto eth0 #iface eth0 inet dhcp To (dhcp only): auto eth0 iface eth0 inet dhcp auto eth1 iface eth1 inet dhcp or To (static ip address): auto eth0 iface eth0 inet static address 192.168.50.1 netmask 255.255.255.0 auto eth1 iface eth1 inet static address 192.168.100.1 netmask 255.255.255.0 C. This one may be the biggest issue I seen with using two phys in older kernels as it will rename the second one really strange or not use it at all. If using an older Kernel, check for it to have /etc/udev/rules.d/70-persistent-net.rules If it has that file, you will need to edit it to remove the renaming and usage. The devleopment prototype I was working on had two PHYs and did not work correclty until I edited this file then both showed up after deisgnated in the interfaces file. If you need to know more about what to edit... reply and I'll help. Regards,Ray On Thursday, January 14, 2021, 9:02:48 AM CST, acheesehead <achee...@gmail.com> wrote: We are using a supported phy. The Atheros, just like on the TI EVM. The only differences between our board and the TI EVM are that we are using an oscillator to clock both phys instead of a crystal per phy and we have them wired to be MDIO addresses 4 & 5 instead of 0 & 1. I appreciate any help you can provide! On Wednesday, January 13, 2021 at 8:24:56 PM UTC-7 r.wil...@yahoo.com wrote: I think I can help if interested. I just finished supporting a custom project that used Bone Debian. The board used two ethernet PHYs. Setting everything up can be a pain. I can share what I did, but the actual PHYs just happened to have configuration stuff already installed so adding to a custom devicw tree was a bit simpler. If using an unsupported Ethernet Chip, you may have to see if they have a header file in C that can be imported into a device tree. Ray. Sent from Yahoo Mail on Android On Tue, Jan 12, 2021 at 11:52 AM, jeff....@gmail.com<jeff....@gmail.com> wrote: Also, we found that it was useful for custom board issues to consult both beagleboard.org and TI-E2E, but for the latter, it was necessary to switch to the TI-SDK builds as TI didn't support beagleboard/Debian builds at the time.. FYI, On Tuesday, January 12, 2021 at 12:43:08 PM UTC-5 jeff....@gmail.com wrote: I have a 3 year old BB-X15 with a dual PHY at home. I haven't touched Linux for a couple of years, but am trying to pick it back up on a hobby basis. We were working on a custom board with a dual PHY, but that effort was put on hold a couple of year's ago. Message me if you need me to try anything on the BB-X15 which could help with your custom board. If something useful flushes out then it should be posted in public forums. On my BB-X15, I just downloaded the latest image and did dmesg|grep mdio (without anything plugged into the Ethernet ports): debian@beaglebone:~$ dmesg|grep mdio[ 1.112050] davinci_mdio 48485000.mdio: davinci mdio revision 1.6, bus freq 1000000[ 1.112061] libphy: 48485000.mdio: probed[ 1.134048] davinci_mdio 48485000.mdio: phy[1]: device 48485000.mdio:01, driver Micrel KSZ9031 Gigabit PHY[ 1.134059] davinci_mdio 48485000.mdio: phy[2]: device 48485000.mdio:02, driver Micrel KSZ9031 Gigabit PHY[ 6.572870] Micrel KSZ9031 Gigabit PHY 48485000.mdio:01: attached PHY driver [Micrel KSZ9031 Gigabit PHY] (mii_bus:phy_addr=48485000.mdio:01, irq=POLL)[ 6.710705] Micrel KSZ9031 Gigabit PHY 48485000.mdio:02: attached PHY driver [Micrel KSZ9031 Gigabit PHY] (mii_bus:phy_addr=48485000.mdio:02, irq=POLL)[ 24.576701] Micrel KSZ9031 Gigabit PHY 48485000.mdio:01: attached PHY driver [Micrel KSZ9031 Gigabit PHY] (mii_bus:phy_addr=48485000.mdio:01, irq=POLL)[ 24.684787] Micrel KSZ9031 Gigabit PHY 48485000.mdio:02: attached PHY driver [Micrel KSZ9031 Gigabit PHY] (mii_bus:phy_addr=48485000.mdio:02, irq=POLL)debian@beaglebone:~$ debian@beaglebone:~$ uname -aLinux beaglebone 4.14.108-ti-r131 #1buster SMP PREEMPT Tue Mar 24 19:18:36 UTC 2020 armv7l GNU/Linuxdebian@beaglebone:~$ cat /etc/debian_version10.3 uname -rcat /etc/debian_version: Thanks! On Friday, January 8, 2021 at 2:13:17 PM UTC-5 acheesehead wrote: I meant dmesg | grep mdio. Here is output.beaglebone:~$ dmesg | grep mdio[ 1.319622] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6, bus freq 1000000[ 1.319638] davinci_mdio 4a101000.mdio: detected phy mask ffffffef[ 1.338962] libphy: 4a101000.mdio: probed[ 1.338993] davinci_mdio 4a101000.mdio: phy[4]: device 4a101000.mdio:04, driver Atheros 8035 ethernet[ 19.657691] Atheros 8035 ethernet 4a101000.mdio:04: attached PHY driver [Atheros 8035 ethernet] (mii_bus:phy_addr=4a101000.mdio:04, irq=POLL) Relevant portions of device tree: cpsw_default: cpsw-default { pinctrl-single,pins = < /* Slave 1 */ AM33XX_PADCONF(AM335X_PIN_MII1_TX_EN, PIN_OUTPUT_PULLDOWN, MUX_MODE2) /* mii1_txen.rgmii1_tctl */ AM33XX_PADCONF(AM335X_PIN_MII1_RX_DV, PIN_INPUT_PULLDOWN, MUX_MODE2) /* mii1_rxdv.rgmii1_rctl */ AM33XX_PADCONF(AM335X_PIN_MII1_TXD3, PIN_OUTPUT_PULLDOWN, MUX_MODE2) AM33XX_PADCONF(AM335X_PIN_MII1_TXD2, PIN_OUTPUT_PULLDOWN, MUX_MODE2) AM33XX_PADCONF(AM335X_PIN_MII1_TXD1, PIN_OUTPUT_PULLDOWN, MUX_MODE2) AM33XX_PADCONF(AM335X_PIN_MII1_TXD0, PIN_OUTPUT_PULLDOWN, MUX_MODE2) AM33XX_PADCONF(AM335X_PIN_MII1_TX_CLK, PIN_OUTPUT_PULLDOWN, MUX_MODE2) AM33XX_PADCONF(AM335X_PIN_MII1_RX_CLK, PIN_INPUT_PULLDOWN, MUX_MODE2) AM33XX_PADCONF(AM335X_PIN_MII1_RXD3, PIN_INPUT_PULLDOWN, MUX_MODE2) AM33XX_PADCONF(AM335X_PIN_MII1_RXD2, PIN_INPUT_PULLDOWN, MUX_MODE2) AM33XX_PADCONF(AM335X_PIN_MII1_RXD1, PIN_INPUT_PULLDOWN, MUX_MODE2) AM33XX_PADCONF(AM335X_PIN_MII1_RXD0, PIN_INPUT_PULLDOWN, MUX_MODE2) /* Slave 2 */ AM33XX_PADCONF(AM335X_PIN_GPMC_A0, PIN_OUTPUT_PULLDOWN, MUX_MODE2) /* mii2_txen.rgmii1_tctl */ AM33XX_PADCONF(AM335X_PIN_GPMC_A1, PIN_INPUT_PULLDOWN, MUX_MODE2) /* mii2_rxdv.rgmii1_rctl */ AM33XX_PADCONF(AM335X_PIN_GPMC_A2, PIN_OUTPUT_PULLDOWN, MUX_MODE2) AM33XX_PADCONF(AM335X_PIN_GPMC_A3, PIN_OUTPUT_PULLDOWN, MUX_MODE2) AM33XX_PADCONF(AM335X_PIN_GPMC_A4, PIN_OUTPUT_PULLDOWN, MUX_MODE2) AM33XX_PADCONF(AM335X_PIN_GPMC_A5, PIN_OUTPUT_PULLDOWN, MUX_MODE2) AM33XX_PADCONF(AM335X_PIN_GPMC_A6, PIN_OUTPUT_PULLDOWN, MUX_MODE2) AM33XX_PADCONF(AM335X_PIN_GPMC_A7, PIN_INPUT_PULLDOWN, MUX_MODE2) AM33XX_PADCONF(AM335X_PIN_GPMC_A8, PIN_INPUT_PULLDOWN, MUX_MODE2) AM33XX_PADCONF(AM335X_PIN_GPMC_A9, PIN_INPUT_PULLDOWN, MUX_MODE2) AM33XX_PADCONF(AM335X_PIN_GPMC_A10, PIN_INPUT_PULLDOWN, MUX_MODE2) AM33XX_PADCONF(AM335X_PIN_GPMC_A11, PIN_INPUT_PULLDOWN, MUX_MODE2) AM33XX_PADCONF(AM335X_PIN_MII1_RX_ER, PIN_OUTPUT_PULLDOWN, MUX_MODE7) /* reset line */ >; }; cpsw_sleep: cpsw-sleep { pinctrl-single,pins = < /* Slave 1 reset value */ AM33XX_PADCONF(AM335X_PIN_MII1_TX_EN, PIN_INPUT_PULLDOWN, MUX_MODE7) AM33XX_PADCONF(AM335X_PIN_MII1_RX_DV, PIN_INPUT_PULLDOWN, MUX_MODE7) AM33XX_PADCONF(AM335X_PIN_MII1_TXD3, PIN_INPUT_PULLDOWN, MUX_MODE7) AM33XX_PADCONF(AM335X_PIN_MII1_TXD2, PIN_INPUT_PULLDOWN, MUX_MODE7) AM33XX_PADCONF(AM335X_PIN_MII1_TXD1, PIN_INPUT_PULLDOWN, MUX_MODE7) AM33XX_PADCONF(AM335X_PIN_MII1_TXD0, PIN_INPUT_PULLDOWN, MUX_MODE7) AM33XX_PADCONF(AM335X_PIN_MII1_TX_CLK, PIN_INPUT_PULLDOWN, MUX_MODE7) AM33XX_PADCONF(AM335X_PIN_MII1_RX_CLK, PIN_INPUT_PULLDOWN, MUX_MODE7) AM33XX_PADCONF(AM335X_PIN_MII1_RXD3, PIN_INPUT_PULLDOWN, MUX_MODE7) AM33XX_PADCONF(AM335X_PIN_MII1_RXD2, PIN_INPUT_PULLDOWN, MUX_MODE7) AM33XX_PADCONF(AM335X_PIN_MII1_RXD1, PIN_INPUT_PULLDOWN, MUX_MODE7) AM33XX_PADCONF(AM335X_PIN_MII1_RXD0, PIN_INPUT_PULLDOWN, MUX_MODE7) /* Slave 2 */ AM33XX_PADCONF(AM335X_PIN_GPMC_A0, PIN_INPUT_PULLDOWN, MUX_MODE7) /* mii2_txen.rgmii1_tctl */ AM33XX_PADCONF(AM335X_PIN_GPMC_A1, PIN_INPUT_PULLDOWN, MUX_MODE7) /* mii2_rxdv.rgmii1_rctl */ AM33XX_PADCONF(AM335X_PIN_GPMC_A2, PIN_INPUT_PULLDOWN, MUX_MODE7) AM33XX_PADCONF(AM335X_PIN_GPMC_A3, PIN_INPUT_PULLDOWN, MUX_MODE7) AM33XX_PADCONF(AM335X_PIN_GPMC_A4, PIN_INPUT_PULLDOWN, MUX_MODE7) AM33XX_PADCONF(AM335X_PIN_GPMC_A5, PIN_INPUT_PULLDOWN, MUX_MODE7) AM33XX_PADCONF(AM335X_PIN_GPMC_A6, PIN_INPUT_PULLDOWN, MUX_MODE7) AM33XX_PADCONF(AM335X_PIN_GPMC_A7, PIN_INPUT_PULLDOWN, MUX_MODE7) AM33XX_PADCONF(AM335X_PIN_GPMC_A8, PIN_INPUT_PULLDOWN, MUX_MODE7) AM33XX_PADCONF(AM335X_PIN_GPMC_A9, PIN_INPUT_PULLDOWN, MUX_MODE7) AM33XX_PADCONF(AM335X_PIN_GPMC_A10, PIN_INPUT_PULLDOWN, MUX_MODE7) AM33XX_PADCONF(AM335X_PIN_GPMC_A11, PIN_INPUT_PULLDOWN, MUX_MODE7) >; }; &mac { pinctrl-names = "default", "sleep"; pinctrl-0 = <&cpsw_default>; pinctrl-1 = <&cpsw_sleep>; dual_emac = <1>; status = "okay";}; &davinci_mdio { pinctrl-names = "default", "sleep"; pinctrl-0 = <&davinci_mdio_default>; pinctrl-1 = <&davinci_mdio_sleep>; status = "okay";}; &cpsw_emac0 { phy_id = <&davinci_mdio>, <4>; phy-mode = "rgmii-txid"; dual_emac_res_vlan = <1>;}; &cpsw_emac1 { phy_id = <&davinci_mdio>, <5>; phy-mode = "rgmii-txid"; dual_emac_res_vlan = <2>;}; -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/782cf800-86be-4cb5-bb7e-80e561de5530n%40googlegroups.com. -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/ba29c81a-baf3-4dbc-9fc5-cf7567423a1dn%40googlegroups.com. -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/8d36ce42-b42d-4e3f-964f-32a35384b975n%40googlegroups.com. -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/1900748433.1278547.1610676735903%40mail.yahoo.com.