Am Fri, Nov 25, 2022 at 12:52:24AM +0000 schrieb Peter Stuge: > Jan Stary wrote: > > Here is the cpsw problem: > > > > -cpsw0 at omsysc46: version 1.12 (0), address 90:59:af:82:2e:7e > > +cpsw0 at omsysc46: version 1.12 (0), address 00:00:00:00:00:00 > > I confirm this on beaglebone black but I'm not sure it's actually a > dtb bug, more on that below. > > I could anyway DHCP and ping with great success with the zero address. > > > > > I reverted the change that switches from the 'old' cpsw switch driver > > > model to the 'new' one. This should allow is to update the dtbs. > > > > I don't know what the old/new model is, > > I too am a bit confused, Patrick can you please clarify 'old' and 'new'? > > > Does it have to do with these two sibling fragments? > > ethernet@0 { > compatible = "ti,am335x-cpsw", "ti,cpsw"; > > switch@0 { > compatible = "ti,am335x-cpsw-switch", "ti,cpsw-switch"; > > (Only the former is (currently) matched by OpenBSD if_cpsw.c.) >
Yup. Apparently the Linux device trees have both, and a commit in Linux 5.15 switched the beaglebone from the one representation style to the other. > > > but the version in this dtb breaks my bbb. > > In a way it may be making things more correct, just not yet complete. Eh, well yes and no. If it causes a regression because our drivers aren't expecting the changes in the .dts then it's a question of "does anyone actually adjust our drivers?". I don't have the machine, so instead of re-writing cpsw(4) to fit the new-style I'd rather have a small revert that makes OpenBSD continue to work on the machine. > For one, both the dtb from Nov 1 snapshot miniroot-am335x-72.img and > Patrick's dtb have mac-address = [00 00 00 00 00 00]; for both slaves > (= PHYs). (Though I don't believe that this value is ever used.) > > Working on the cpsw driver I was silently wondering where the nonzero > MAC on my beaglebone black comes from and I still don't know the answer. > Either local-mac-address or from hardware registers. For cpsw(4) it's local-mac-address. U-Boot configures those on bootup. Usually there needs to be a /aliases/ethernet0 or so pointing to the correct node for U-Boot to set it correctly. It's possible that this changes as well. I will have a look. Cheers, Patrick > > Here's a boot log: > > --8<-- Nov 1 snapshot miniroot > U-Boot SPL 2021.10 (Aug 13 2022 - 07:42:11 -0600) > Trying to boot from MMC1 > > > U-Boot 2021.10 (Aug 13 2022 - 07:42:11 -0600) > > CPU : AM335X-GP rev 2.1 > Model: TI AM335x BeagleBone Black > DRAM: 512 MiB > WDT: Started with servicing (60s timeout) > NAND: 0 MiB > MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1 > Loading Environment from FAT... Unable to read "uboot.env" from mmc0:1... > <ethaddr> not set. Validating first E-fuse MAC > Net: eth2: ethernet@4a100000, eth3: usb_ether > Hit any key to stop autoboot: 0 > -->8-- > > Does "<ethaddr> not set. Validating first E-fuse MAC" mean that > U-Boot reads the fused MAC_ID0 from the am335x control module and > writes it into the CPSW registers? > > > Booting Patrick's U-Boot (MLO and u-boot.img) with the older snapshot > dtb I see the same message from U-Boot and cpsw0 has nonzero address. > > After also copying Patrick's dtb to the memory card I still see the > same message from U-Boot but cpsw0 now has zero address. > > After writing the full Nov 1 snapshot again and copying only the new dtb > over it I also see the message from U-Boot but cpsw0 again has zero address. > > In all these tries, env print ethaddr in U-Boot always shows nonzero address. > > > As I understand the driver, cpsw0 will always have a zero address if > the "ti,cpsw" device tree node has either no child nodes at all or > none named "local-mac-address". > > If a "local-mac-address" child node exists then that address is used. > > (if_cpsw.c:364 cpsw_attach() calling cpsw_get_port_config() ff.) > > Neither the snapshot dtb nor Patrick's dtb contain "local-mac-address" so > is U-Boot modifying only the older dtb (why!?) or what is going on here? > > > //Peter >