Date: Tue, 22 May 2018 20:00:57 +0000 (UTC) From: Ed Maste <emaste@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r334063 - in head/sys/dev/usb: . net Message-ID: <201805222000.w4MK0vCj007355@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: emaste Date: Tue May 22 20:00:56 2018 New Revision: 334063 URL: https://svnweb.freebsd.org/changeset/base/334063 Log: if_muge: only attach to LAN7800 Chip ID This driver was developed for the LAN7800 and the register-compatible LAN7515 (found on Raspberry Pi 3B+) and has only been tested on those devices. Sponsored by: The FreeBSD Foundation Modified: head/sys/dev/usb/net/if_muge.c head/sys/dev/usb/net/if_mugereg.h head/sys/dev/usb/usbdevs Modified: head/sys/dev/usb/net/if_muge.c ============================================================================== --- head/sys/dev/usb/net/if_muge.c Tue May 22 19:24:57 2018 (r334062) +++ head/sys/dev/usb/net/if_muge.c Tue May 22 20:00:56 2018 (r334063) @@ -168,7 +168,8 @@ struct muge_softc { /* Settings for the mac control (MAC_CSR) register. */ uint32_t sc_rfe_ctl; uint32_t sc_mdix_ctl; - uint32_t sc_rev_id; + uint16_t chipid; + uint16_t chiprev; uint32_t sc_mchash_table[ETH_DP_SEL_VHF_HASH_LEN]; uint32_t sc_pfilter_table[MUGE_NUM_PFILTER_ADDRS_][2]; @@ -974,15 +975,20 @@ lan78xx_chip_init(struct muge_softc *sc) } /* Read and display the revision register. */ - if ((err = lan78xx_read_reg(sc, ETH_ID_REV, &sc->sc_rev_id)) < 0) { + if ((err = lan78xx_read_reg(sc, ETH_ID_REV, &buf)) < 0) { muge_warn_printf(sc, "failed to read ETH_ID_REV (err = %d)\n", err); goto init_failed; } - - device_printf(sc->sc_ue.ue_dev, "chip 0x%04lx, rev. %04lx\n", - (sc->sc_rev_id & ETH_ID_REV_CHIP_ID_MASK_) >> 16, - (sc->sc_rev_id & ETH_ID_REV_CHIP_REV_MASK_)); + sc->chipid = (buf & ETH_ID_REV_CHIP_ID_MASK_) >> 16; + sc->chiprev = buf & ETH_ID_REV_CHIP_REV_MASK_; + if (sc->chipid != ETH_ID_REV_CHIP_ID_7800_) { + muge_warn_printf(sc, "Chip ID 0x%04x not yet supported\n", + sc->chipid); + goto init_failed; + } + device_printf(sc->sc_ue.ue_dev, "Chip ID 0x%04x rev %04x\n", sc->chipid, + sc->chiprev); /* Respond to BULK-IN tokens with a NAK when RX FIFO is empty. */ if ((err = lan78xx_read_reg(sc, ETH_USB_CFG0, &buf)) != 0) { Modified: head/sys/dev/usb/net/if_mugereg.h ============================================================================== --- head/sys/dev/usb/net/if_mugereg.h Tue May 22 19:24:57 2018 (r334062) +++ head/sys/dev/usb/net/if_mugereg.h Tue May 22 20:00:56 2018 (r334063) @@ -47,6 +47,9 @@ #define ETH_ID_REV 0x000 #define ETH_ID_REV_CHIP_ID_MASK_ 0xFFFF0000UL #define ETH_ID_REV_CHIP_REV_MASK_ 0x0000FFFFUL +#define ETH_ID_REV_CHIP_ID_7800_ 0x7800 +#define ETH_ID_REV_CHIP_ID_7801_ 0x7801 +#define ETH_ID_REV_CHIP_ID_7850_ 0x7850 /* Device interrupt status register. */ #define ETH_INT_STS 0x00C Modified: head/sys/dev/usb/usbdevs ============================================================================== --- head/sys/dev/usb/usbdevs Tue May 22 19:24:57 2018 (r334062) +++ head/sys/dev/usb/usbdevs Tue May 22 20:00:56 2018 (r334063) @@ -4322,6 +4322,7 @@ product SMC2 2514HUB 0x2514 USB Hub product SMC3 2662WUSB 0xa002 2662W-AR Wireless product SMC2 LAN7800_ETH 0x7800 USB/Ethernet product SMC2 LAN7801_ETH 0x7801 USB/Ethernet +product SMC2 LAN7850_ETH 0x7850 USB/Ethernet product SMC2 LAN9500_ETH 0x9500 USB/Ethernet product SMC2 LAN9505_ETH 0x9505 USB/Ethernet product SMC2 LAN9530_ETH 0x9530 USB/Ethernet
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201805222000.w4MK0vCj007355>