Date: Sun, 8 Dec 2013 23:06:12 +0100 From: Milan Obuch <freebsd-mips@dino.sk> To: Adrian Chadd <adrian@freebsd.org> Cc: freebsd-mips@freebsd.org Subject: Re: AR934x initial support is now in the tree - partial success on RB2011 Message-ID: <20131208230612.290d2611@zeta.dino.sk> In-Reply-To: <CAJ-VmomPjqmZhDvpFHxqv-dpGEPN%2BgS=tR11EMdpH=Vej8TvKA@mail.gmail.com> References: <CAJ-VmomPjqmZhDvpFHxqv-dpGEPN%2BgS=tR11EMdpH=Vej8TvKA@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --] On Tue, 15 Oct 2013 21:29:40 -0700 Adrian Chadd <adrian@freebsd.org> wrote: > Hi all, > > The initial AR934x support is now in the tree. > > The basics: > > * the basic hacks needed to bring up mips74k support is now in the > tree; > * I've added MIPS bus space barriers to things; > * on-board wifi works; > * slow UART works (ie, rs232 console); > * on-chip switch support works (but no VLAN support - see below); > * on-chip USB probes/attaches fine; > * ethernet seems to work fine. > > It passes packets and such! > > What I haven't yet done (and I'll accept patches!) > > * the fast UART code from the AR933x should work for the fast UART > port but I haven't yet tested it! > > * I haven't tried USB yet! > > * taught the arswitch code about the VLAN registers for the AR934x > on-chip switch. > > * taught the ath(4) driver to use the bus space barrier stuff. So the > wifi is likely going to be angry at us for a while. > > * There's no support for the newer switch chips (AR8327 in > particular.) > > * NAND, I2S support, etc. > > Thanks! > > > -adrian > Hi, I was able to build kernel for ethernet boot on RouterBoard 2011L. My configs are based on DB120, but some parts are left out (there is no wifi on my device). See attachments. However, it does not fully boot - kernel seems to be up and running, but neither USB nor ethernet works for me, this means no way to mount rootfs. Also there is a dmesg (actually serial console log) attached. It seems there is OpenWrt working on this device, see dmesg I found at https://dev.openwrt.org/attachment/ticket/13585/log, but I was not able to verify this. I need openwrt-ar71xx-nand-vmlinux-initramfs.elf file as I do not want to erase MikroTik's RouterOS from the device, yet, but every one I found was just too old to support correctly RB2011L. I found also a page describing a way to build OpenWrt on FreeBSD at http://caia.swin.edu.au/urp/diffuse/openwrt/buildunderfreebsd.html, but it did not work for me, tested on both 9.2-STABLE and 10.0-BETA4 systems. I have no Linux setup available, so I could not try to build OpenWrt this way either. I am now out of ideas, so would appreciate anything I could test to troubleshoot the issues I see. Oh, I have both ports 1 (gigabit, so on Ar8327 switch, necessary to do a ethernet boot on the device) and 6 (100 Mbit, on Ar8227 according to manufacturer's page found at http://wiki.mikrotik.com/wiki/Manual:Switch_Chip_Features). Also, if someone could build for me OpenWrt for this device suitable for netbooting, that would be also great - at least I could verify it really works so we could try to find relevant bits from OpenWrt's sources, for ethernet support it could be seen at https://dev.openwrt.org/browser/trunk/target/linux/generic/files/drivers/net/phy/ar8216.c, but finding the relevant bits in this 2584 lines of code intended for various Atheros switches is not (yet) easy for me :( There was a time when rootfs could be embedded easily in kernel, but I found no method to do id on current sources. If there is any method to do this, it will be possible to mount rootfs from md based ram disk and do some debugging on the RB2011 itself, thus overcoming the troubles with not (yet) working ethernet and USB on this device. Regards, Milan [-- Attachment #2 --] # # Routerboard 2011 # # $FreeBSD$ # machine mips mips ident "RB2011" cpu CPU_MIPS74KC makeoptions KERNLOADADDR=0x80050000 options HZ=1000 files "../atheros/files.ar71xx" hints "RB2011.hints" makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols makeoptions MODULES_OVERRIDE="" options DDB options KDB options ALQ options SCHED_4BSD #4BSD scheduler options INET #InterNETworking options PSEUDOFS #Pseudo-filesystem framework options _KPOSIX_PRIORITY_SCHEDULING #Posix P1003_1B real-time extensions options FFS #Berkeley Fast Filesystem options NO_FFS_SNAPSHOT # We don't require snapshot support options AR71XX_REALMEM=128*1024*1024 # Don't include the SCSI/CAM strings in the default build options SCSI_NO_SENSE_STRINGS options SCSI_NO_OP_STRINGS # .. And no sysctl strings options NO_SYSCTL_DESCR # Limit IO size options NBUF=128 device mii device arge # For etherswitch support options ARGE_MDIO device miiproxy device etherswitch device arswitch device usb options USB_EHCI_BIG_ENDIAN_DESC # handle big-endian byte order options USB_DEBUG options USB_HOST_ALIGN=32 # AR71XX (MIPS in general?) requires this device ehci device scbus device umass device da device spibus device ar71xx_spi device mx25l device ar71xx_wdog device uart device uart_ar71xx device loop device ether device md device bpf device random device if_bridge device gpio device gpioled options NFSCL # Network Filesystem Client options NFS_ROOT # NFS usable as /, requires NFSCL options BOOTP options BOOTP_NFSROOT options BOOTP_NFSV3 options BOOTP_WIRED_TO=arge1 options BOOTP_COMPAT options ROOTDEVNAME=\"nfs:192.168.16.11:/data/mips/nfsroot\" # GEOM modules #device geom_uzip # compressed in-memory filesystem hackery! #options GEOM_UZIP # Boot from the first MFS uzip #options ROOTDEVNAME=\"ufs:md0.uzip\" #options MD_ROOT #options MD_ROOT_SIZE="6144" [-- Attachment #3 --] hint.apb.0.at="nexus0" hint.apb.0.irq=4 # uart0 hint.uart.0.at="apb0" # NB: This isn't an ns8250 UART hint.uart.0.maddr=0x18020003 hint.uart.0.msize=0x18 hint.uart.0.irq=3 #ehci - note the 0x100 offset for the AR913x/AR724x hint.ehci.0.at="nexus0" hint.ehci.0.maddr=0x1b000100 hint.ehci.0.msize=0x00001000 hint.ehci.0.irq=1 # SPI flash hint.spi.0.at="nexus0" hint.spi.0.maddr=0x1f000000 hint.spi.0.msize=0x10 hint.mx25l.0.at="spibus0" hint.mx25l.0.cs=0 # Watchdog hint.ar71xx_wdog.0.at="nexus0" # The GPIO function and pin mask is configured per-board hint.gpio.0.at="apb0" hint.gpio.0.maddr=0x18040000 hint.gpio.0.msize=0x1000 hint.gpio.0.irq=2 hint.arge.0.at="nexus0" hint.arge.0.maddr=0x19000000 hint.arge.0.msize=0x1000 hint.arge.0.irq=2 # XXX OpenWRT DB120 BSP doesn't have media/duplex set? hint.arge.0.phymask=0x0 hint.arge.0.media=1000 hint.arge.0.fduplex=1 hint.arge.0.miimode=3 # RGMII hint.arge.0.pll_1000=0x06000000 # arge0 - MII, autoneg, phy(4) #hint.arge.0.phymask=0x10 # PHY4 #hint.arge.0.mdio=mdioproxy1 # .. off of the switch mdiobus hint.arge.1.at="nexus0" hint.arge.1.maddr=0x1a000000 hint.arge.1.msize=0x1000 hint.arge.1.irq=3 # arge1 - lock up to 1000/full hint.arge.1.phymask=0x0 # Nothing attached here (XXX?) hint.arge.1.media=1000 hint.arge.1.fduplex=1 hint.arge.1.miimode=1 # GMII # mdiobus0 on arge0 hint.argemdio.0.at="nexus0" hint.argemdio.0.maddr=0x19000000 hint.argemdio.0.msize=0x1000 hint.argemdio.0.order=0 # mdiobus1 on arge1 hint.argemdio.1.at="nexus0" hint.argemdio.1.maddr=0x1a000000 hint.argemdio.1.msize=0x1000 hint.argemdio.1.order=0 # DB120 GMAC configuration # + AR934X_ETH_CFG_RGMII_GMAC0 (1 << 0) # + AR934X_ETH_CFG_SW_ONLY_MODE (1 << 6) hint.ar934x_gmac.0.gmac_cfg=0x41 # GMAC0 here - connected to an AR8327 hint.arswitch.0.at="mdio0" hint.arswitch.0.is_7240=0 hint.arswitch.0.is_9340=0 # not the internal switch! hint.arswitch.0.numphys=6 hint.arswitch.0.phy4cpu=0 hint.arswitch.0.is_rgmii=1 hint.arswitch.0.is_gmii=0 # Embedded switch on the AR9344 hint.arswitch.1.at="mdio1" hint.arswitch.1.is_7240=0 hint.arswitch.1.is_9340=1 hint.arswitch.1.numphys=5 hint.arswitch.1.phy4cpu=0 # phy 4 is not a "CPU port" PHY here hint.arswitch.1.is_rgmii=0 hint.arswitch.1.is_gmii=1 # arge1 <-> switch PHY is GMII [-- Attachment #4 --] jumping to kernel code CPU platform: Atheros AR9344 rev 2 CPU Frequency=600 MHz CPU DDR Frequency=450 MHz CPU AHB Frequency=200 MHz platform frequency: 600 MHz CPU reference clock: 25 MHz CPU MDIO clock: 25 MHz arguments: a0 = 0000000b a1 = a15e2a00 a2 = 00000000 a3 = 00000000 Cmd line: console=ttyS0,115200 parts=1 boot_part_size=4194304 gpio=249403 HZ=300000000 mem=128M kmac=D4:CA:6D:6F:47:63 board=2011US ver=3.07 boot=1 mlc=5 Environment: envp is invalid Cache info: picache_stride = 4096 picache_loopcount = 16 pdcache_stride = 4096 pdcache_loopcount = 8 cpu0: MIPS Technologies processor v76.151 MMU: Standard TLB, 32 entries L1 i-cache: 4 ways of 512 sets, 32 bytes per line L1 d-cache: 4 ways of 256 sets, 32 bytes per line Config1=0xbee3519e<PerfCount,WatchRegs,MIPS16,EJTAG> Config3=0x2c20 ar934x_chip_init_gmac: gmac_cfg=0x00000041 ar934x_configure_gmac: ETH_CFG=0x00000001 KDB: debugger backends: ddb KDB: current backend: ddb Copyright (c) 1992-2013 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD is a registered trademark of The FreeBSD Foundation. FreeBSD 11.0-CURRENT #0: Sun Dec 8 14:50:56 CET 2013 root@zeta.dino.sk:/data/mips/obj/mips.mips/data/src.11/sys/RB2011 mips gcc version 4.2.1 20070831 patched [FreeBSD] real memory = 134217728 (131072K bytes) avail memory = 126369792 (120MB) random device not loaded; using insecure entropy random: <Software, Yarrow> initialized nexus0: <MIPS32 root nexus> clock0: <Generic MIPS32 ticker> on nexus0 Timecounter "MIPS32" frequency 300000000 Hz quality 800 Event timer "MIPS32" frequency 300000000 Hz quality 800 argemdio0: <Atheros AR71xx built-in ethernet interface, MDIO controller> at mem 0x19000000-0x19000fff on nexus0 mdio0: <MDIO> on argemdio0 mdioproxy0: <MII/MDIO proxy, MDIO side> on mdio0 argemdio1: <Atheros AR71xx built-in ethernet interface, MDIO controller> at mem 0x1a000000-0x1a000fff on nexus0 mdio1: <MDIO> on argemdio1 mdioproxy1: <MII/MDIO proxy, MDIO side> on mdio1 arswitch1: <Atheros AR9340 Ethernet Switch> on mdio1 arswitch1: ar9340_hw_global_setup: GMII arswitch1: ar9340_hw_global_setup: PHY4 - Local arswitch1: attaching PHY 0 failed arswitch1: attaching PHY 1 failed arswitch1: attaching PHY 2 failed arswitch1: attaching PHY 3 failed arswitch1: attaching PHY 4 failed device_attach: arswitch1 attach returned 6 apb0 at irq 4 on nexus0 uart0: <16550 or compatible> on apb0 uart0: console (115200,n,8,1) gpio0: <Atheros AR71XX GPIO driver> on apb0 gpio0: [GIANT-LOCKED] gpio0: gpio pinmask=0x0 gpioc0: <GPIO controller> on gpio0 gpiobus0: <GPIO bus> on gpio0 ehci0: <AR71XX Integrated USB 2.0 controller> at mem 0x1b000100-0x1b0010ff irq 1 on nexus0 usbus0: set host controller mode usbus0: EHCI version 1.0 usbus0: set host controller mode usbus0 on ehci0 spi0: <AR71XX SPI> at mem 0x1f000000-0x1f00000f on nexus0 spibus0: <spibus bus> on spi0 mx25l0: <M25Pxx Flash Family> at cs 0 on spibus0 mx25l0: w25x10, sector 65536 bytes, 2 sectors ar71xx_wdog0: <Atheros AR71XX watchdog timer> on nexus0 arge0: <Atheros AR71xx built-in ethernet interface> at mem 0x19000000-0x19000fff irq 2 on nexus0 arge0: arge_attach: overriding MII mode to 'RGMII' arge0: finishing attachment, phymask 0000, proxy null arge0: Ethernet address: d4:ca:6d:6f:47:63 arge1: <Atheros AR71xx built-in ethernet interface> at mem 0x1a000000-0x1a000fff irq 3 on nexus0 arge1: arge_attach: overriding MII mode to 'GMII' arge1: finishing attachment, phymask 0000, proxy null arge1: Ethernet address: d4:ca:6d:6f:47:64 Timecounters tick every 1.000 msec usbus0: 480Mbps High Speed USB v2.0 bootpc_init: wired to interface 'arge0' Sending DHCP Discover packet from interface arge0 (d4:ca:6d:6f:47:63) ugen0.1: <Atheros> at usbus0 uhub0: <Atheros EHCI root HUB, class 9/0, rev 2.00/1.00, addr 1> on usbus0 uhub0: 1 port with 1 removable, self powered usb_alloc_device: set address 2 failed (USB_ERR_STALLED, ignored) usbd_setup_device_desc: getting device descriptor at addr 2 failed, USB_ERR_STALLED usbd_req_re_enumerate: addr=2, set address failed! (USB_ERR_STALLED, ignored) usbd_setup_device_desc: getting device descriptor at addr 2 failed, USB_ERR_STALLED usbd_req_re_enumerate: addr=2, set address failed! (USB_ERR_STALLED, ignored) usbd_setup_device_desc: getting device descriptor at addr 2 failed, USB_ERR_STALLED usbd_req_re_enumerate: addr=2, set address failed! (USB_ERR_STALLED, ignored) usbd_setup_device_desc: getting device descriptor at addr 2 failed, USB_ERR_STALLED usbd_req_re_enumerate: addr=2, set address failed! (USB_ERR_STALLED, ignored) usbd_setup_device_desc: getting device descriptor at addr 2 failed, USB_ERR_STALLED ugen0.2: <Unknown> at usbus0 (disconnected) uhub_reattach_port: could not allocate new device DHCP/BOOTP timeout for server 255.255.255.255 DHCP/BOOTP timeout for server 255.255.255.255 random: unblocking device. DHCP/BOOTP timeout for server 255.255.255.255
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20131208230612.290d2611>
