hi,
i managed to bring the target up and patch in vsc8504 phy support for 5.4 kernel but 2 of 4 ports are not working.
device specs:
- octeon 7130 soc
- 4gb emmc
- 4mb spi flash (is irrelevant since it only stores uboot and we do not touch it)
- 3x rj45 and 1x sfp gbe ports. they run by vsc8504 phy and i have trouble getting it up correctly up (only first ethernet and sfp port work)
- 1x usb3.0 port
it has two SGMII (QSGMII?) from a SOC.
as far as i see first SGMII is connected to VSC8504 and have 4 (4, 5, 6, 7) ports populated as described in table bellow.
Which MII it is | Which MD | Which mdio | Mac | Physical port name
mdio-octeon0 octeth0 4 fc:ec:da:03:bf:17 eth3
mdio-octeon0 octeth1 5 fc:ec:da:03:bf:18 eth0
mdio-octeon0 octeth2 6 fc:ec:da:03:bf:19 eth1
mdio-octeon0 octeth3 7 fc:ec:da:03:bf:1a eth2
mdio-octeon1 - - -
Octeon ubnt_e300(ram)# mii device
MII devices: 'mdio-octeon0' 'mdio-octeon1'
Current device: 'mdio-octeon0'
Octeon ubnt_e300(ram)# mdio list
mdio-octeon0:
4 - Vitesse VSC8504 <--> octeth0
5 - Vitesse VSC8504 <--> octeth1
6 - Vitesse VSC8504 <--> octeth2
7 - Vitesse VSC8504 <--> octeth3
mdio-octeon1:
VSC8504 phy is compatible with either Vitesse or Microchip kernel module when patched in.
In later kernels there is just Microchip since Vitesse is superseeded by Microchip due to acquision in 2015.
Patching to 5.4 as Vitesse does not require external firmware but patching as Microchip does require one.
root@OpenWrt:/# ls -1 /sys/bus/mdio_bus/drivers/Vitesse\ VSC8504/
8001180000001800:04
8001180000001800:05
8001180000001800:06
8001180000001800:07
bind
uevent
unbind
root@OpenWrt:/# cat /sys/bus/mdio_bus/drivers/Vitesse\ VSC8504/8001180000001800:0*/phy_interface
sgmii
sgmii
gmii
gmii
stock firmware same command:
root@er4:/home/damex# cat /sys/bus/mdio_bus/drivers/Vitesse\ VSC8504/8001180000001800:0*/phy_interface
sgmii
sgmii
sgmii
sgmii
Interfaces that is detected as sgmii have working network but ones that is detected as gmii is not.
any idea where to proceed?
working tree: https://github.com/damex/openwrt/tree/edgerouter4
how to run openwrt to try/test (runs completely from memory):
- build and copy openwrt-octeon-ubnt_edgerouter4-initramfs-kernel.bin to fat32 formatted usb flash drive
- connect usb flash drive
- connect serial cable
- reboot to uboot
- run 'usb start' to bring usb flash drive up
- run 'fatload usb 0:1 0x20000000 openwrt-octeon-ubnt_edgerouter4-initramfs-kernel.bin' to load kernel+initramfs from usb flash drive to memory
- run 'bootoctlinux 0 numcores=4 endbootargs mem=0' to actually boot that kernel+initramfs.
extras:
extracted dts from openwrt: https://gist.github.com/damex/4ef058621a834083630d0afd5b53147a
extracted dts from uboot: https://gist.github.com/damex/8e70be278ff54c5beecd26810261c93c
uboot boot log: https://gist.github.com/damex/99d4b58b981549dce2eeb1a328998a9a
stock firmware boot log: https://gist.github.com/damex/c54fb989500e584443a2a2e258593ec9
openwrt boot log: https://gist.github.com/damex/65d90e7b546f09112457a947f10b5c2c