Marvell kernel on Zyxel NSA310

Harri Haataja <[email protected]>
Newsgroups gmane.os.netbsd.ports.arm
Message-ID <[email protected]>
I used build.sh to build a 10 release install image and kernel to try on
a Zyxel NSA310. I did get it to boot via USB and install on a local
drive and boot from there after some twists. I didn't keep too careful
log, but here's a few things from my notes:

    ./build.sh -U -u -j2 -O /mnt/ssd/obj -m evbarm -a earmv5 install-image

I think this would have wanted to package a GENERIC kernel, but didn't
build one. I just copied a sheeva tgz as generic tgz and that worked as
an easy hack. I'd be using a different kernel to boot anyway. There
might be a way to inject a custom kernel config, but I didn't find
instructions.

Console pinout:  VCC TxD RxD [] GND 

    U-Boot 2017.07-tld-1 (Sep 05 2017 - 00:54:15 -0700)
    ZyXEL NSA310 1-Bay Power Media Server

    SoC:   Kirkwood 88F6281_A1
    DRAM:  256 MiB
    WARNING: Caches not enabled
    NAND:  128 MiB
    In:    serial
    Out:   serial
    Err:   serial
    Net:   egiga0
    PHY reset timed out
    MV88E1318 PHY initialized on egiga0
    Hit any key to stop autoboot:  0

There wasn't many, if any, guides on the variables that NetBSD might
want from uboot, but I ended up with these my mixing some posts I found:

    env set netbsd_add 0x800000
    env set netbsd_boot 'bootm $netbsd_add $bootargs'
    env set netbsd_bootcmd 'run netbsd_get ; run netbsd_set_args ; run netbsd_boot'
    env set netbsd_rootdev /dev/dk1
    env set netbsd_set_args 'setenv bootargs root=$netbsd_rootdev'
    env set bootcmd run netbsd_bootcmd
    env set netbsd_get 'ide reset; fatload ide 0 $netbsd_add $image_name'
    env set image_name netbsd.ub

https://blog.netbsd.org/tnf/entry/running_netbsd_on_the_lg was a likely
source for the general idea.

And the system runs, but the ethernet port doesn't work. dmesg:

    NetBSD 10.0 (XTLNSA) #1: Thu Aug 15 14:20:50 UTC 2024

    total memory = 256 MB
    avail memory = 245 MB
    mainbus0 (root)
    cpu0 at mainbus0 core 0: Sheeva 88SV131 rev 1 (ARM9E-S V5TE core)
    cpu0: DC enabled IC enabled WB enabled LABT branch prediction enabled
    cpu0: L1 16KB/32B 4-way (128 set) VIVT Instruction cache
    cpu0: L1 16KB/32B 4-way (128 set) write-back-locking-C VIVT Data cache
    mvsoc0 at mainbus0: Marvell 88F6281 Rev. A1  Kirkwood
    mvsoc0: CPU Clock 1200.000 MHz  SysClock 400.000 MHz  TClock 200.000 MHz
    mvsoctmr0 at mvsoc0 unit 0 offset 0x20300-0x203ff irq 65: Marvell SoC Timer
    mvsocgpp0 at mvsoc0 unit 0 offset 0x10100-0x101ff irq 35: Marvell SoC General Purpose I/O Port Interface
    mvsocgpp0: 50 gpio pins
    mvsocgpp0: interrupts 96..103, intr 35
    mvsocgpp0: interrupts 104..111, intr 36
    mvsocgpp0: interrupts 112..119, intr 37
    mvsocgpp0: interrupts 120..127, intr 38
    mvsocgpp0: interrupts 128..135, intr 39
    mvsocgpp0: interrupts 136..143, intr 40
    mvsocgpp0: interrupts 144..151, intr 41
    mvsocgpp0:   Data Out:                 	0x00000000
    mvsocgpp0:   Data Out Enable Control:  	0x00000000
    mvsocgpp0:   Data Blink Enable:        	0x10000000
    mvsocgpp0:   Data In Polarity:         	0x00000000
    mvsocgpp0:   Data In:                  	0x00000000
    mvsocgpp0:   Interrupt Cause:          	0x00000000
    mvsocgpp0:   Interrupt Mask:           	0x00000000
    mvsocgpp0:   Interrupt Level Mask:     	0x00000000
    mvsocgpp0:   High Data Out:            	0x00000000
    mvsocgpp0:   High Data Out Enable Ctrl:	0x00000000
    mvsocgpp0:   High Blink Enable:        	0x00000000
    mvsocgpp0:   High Data In Polarity:    	0x00000000
    mvsocgpp0:   High Data In:             	0x00000008
    mvsocgpp0:   High Interrupt Cause:     	0x00000000
    mvsocgpp0:   High Interrupt Mask:      	0x00000000
    mvsocgpp0:   High Interrupt Level Mask:	0x00000000
    gpio0 at mvsocgpp0: 50 pins
    mvsocrtc at mvsoc0 unit 0 not configured
    com0 at mvsoc0 unit 0 offset 0x12000-0x1201f irq 33: ns16550a, 16-byte FIFO
    com0: console
    com1 at mvsoc0 unit 1 offset 0x12100-0x1211f irq 34: ns16550a, 16-byte FIFO
    ehci0 at mvsoc0 unit 0 offset 0x50000-0x50fff irq 19: Marvell USB 2.0 Interface
    usb0 at ehci0: USB revision 2.0
    gtidmac0 at mvsoc0 unit 0 offset 0x60000-0x60fff: Marvell IDMA Controller/XOR Engine
    gtidmac0: XOR Engine 4 channels, intr 5, 6, 7, 8
    gttwsi0 at mvsoc0 unit 0 offset 0x11000-0x110ff irq 29: Marvell TWSI controller
    iic0 at gttwsi0: I2C bus
    mvcesa0 at mvsoc0 unit 0 offset 0x3d000-0x3dfff irq 22: Marvell Cryptographic Engines and Security Accelerator
    mvgbec0 at mvsoc0 unit 0 offset 0x70000-0x73fff: Marvell Gigabit Ethernet Controller
    mvgbe0 at mvgbec0 port 0 irq 11
    mvgbe0: Ethernet address 50:67:f0:69:87:70
    mvgbe0: no PHY found!
    mvgbec1 at mvsoc0 unit 1 offset 0x74000-0x77fff: Marvell Gigabit Ethernet Controller
    mvgbe at mvgbec1 port 0 not configured
    mvpex0 at mvsoc0 unit 0 offset 0x40000-0x41fff irq 9: Marvell PCI Express Interface
    mvpex0: can't read pcicfg space
    pci0 at mvpex0
    Marvell 88F6281 SoC Kirkwood (miscellaneous memory, revision 0x03) at pci0 dev 0 function 0 not configured
    mvpex0: can't read pcicfg space
    mvsata0 at mvsoc0 unit 0 offset 0x80000-0x87fff irq 21: Marvell Serial-ATA Host Controller (SATAHC)
    mvsata0: GenIIe, 1hc, 2port/hc
    atabus0 at mvsata0 channel 0
    atabus1 at mvsata0 channel 1
    mvsdio at mvsoc0 unit 0 not configured

Notably that no PHY found message sticks out. I see
http://mail-index.netbsd.org/port-arm/2022/10/18/msg007891.html for
example has a PHY detected with the same pci message as does
https://www.netbsd.org/~martin/evbarm-atf/Y2023_10/dmesg.txt (obviously
different boards, but still).

I couldn't find anything very obvious to change or configure though I've
made some tries and compared the configs to a few other boards'.

I thought I'd post my journey so far in case someone finds similar
messages or problems or happens to have ideas.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.