From nobody Fri Oct 23 22:01:28 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4jBH6P6x5qz6wXBR for ; Fri, 23 Oct 2026 22:01:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4jBH6P4cjSz3BwL for ; Fri, 23 Oct 2026 22:01:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1792792893; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=zcp3Xvu96k0vLcKiOLWKwUHYHRhvBTvt97tbGewXz1I=; b=GXn3bCUAoI+zf0zCy+WEHGInqMylkbMzaCFHJxccy+afujvv7uwYx2j3gSfPJVBxQb2P3/ xb4JyiH/L8iqtIvD+8mQ+gvoaJlTcp8fd5tXeUVtxYPqJIjMMiEudT71kXoXldezo4+7Xs nTHrAu5hRJI7mWqf8kV5vlMCRIhvtUMxOQ3CavzQmKkDnOIHtd4qt2w5IRxqJVb701Zp+V nafLuRq6Vh+/Z++FpzEuRx0495mIoUaxkS+564p65xESrQpIUR4HCgkkrAT1PxaAk5SbGs D4levXlp69WR+RtNdSQOMo5QcNW1K6Wq8QGoA8hOj7N2/V5kyYXBOxKHAd/KLA== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1792792893; b=yzErsvtoY/OctQaVKpT7hnRHPiolIHRMbBysMqzVTQD8YDc2KtNdvjMrqXSEh5eQ+a8U0c jbX8E8R2thB+r/PKlpBLnd4dvh/Yt2F0VZoD2NQALjXerGYWIUrCE7YhzqHQuakguS33fX rmRO3MQuTn5uD+nu2B+Dq/jEkoRN/fdSe8Sm2XJBwmNCy/jZpqA2l0NX/ydLX5GhMEqshn gHjTWnD1Ex79vT52EvZIcCva1B/CI2VgK7hvYktWVIBut+1pURia/zaJ9LEr+Fig32Z6vt WoSDMJqal5MIFLYxlXNyhG201hgviuN1000RMURgjcJ7YAIS/LDfRDNpBxN0/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1792792893; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=zcp3Xvu96k0vLcKiOLWKwUHYHRhvBTvt97tbGewXz1I=; b=Ve5m5WV/DP0mCBLxYMp8WfYk3IaA3sbxlpvcw5+nwxejWRXf8LVaSER33NNcdNBHkhEl0w kT4Ez8tiKShWNVtWLxH9Oztk9ymkMhZFZTYNeBStinUDgmv8BdlPw8Fp0Z2LJACysYC0P7 515qEmXMQF0fBpKF4OR+ULJv3z002yG/xN56GBtEjvzJ8iC0/Jfj4h5Scqk65sNTDjhe7W aM9JlnAENOraEYceuQRY9J37kvQIDwAQXQdA8h3buWXgLZCwsLlPxVf5U+Rak7BORCvjPa U29v7aHl0buytSmhpOWnuSaDg1GCa9GTXfxG5LANfdsKq511FzvdZ+gRHBDiag== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4jBH6P4HPpzpkn for ; Fri, 23 Oct 2026 22:01:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3f18f by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 23 Oct 2026 22:01:28 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Ed Maste Subject: git: dc4c75c9a3c3 - main - smsc: Support external PHY List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: Commit messages for all branches of the src repository List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: emaste X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: dc4c75c9a3c3611af451da13990e49e267551475 Auto-Submitted: auto-generated Date: Fri, 23 Oct 2026 22:01:28 +0000 Message-Id: <6adbd938.3f18f.4224ef4a@gitrepo.freebsd.org> The branch main has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=dc4c75c9a3c3611af451da13990e49e267551475 commit dc4c75c9a3c3611af451da13990e49e267551475 Author: Ed Maste AuthorDate: 2026-10-14 01:04:24 +0000 Commit: Ed Maste CommitDate: 2026-10-23 22:00:48 +0000 smsc: Support external PHY SMSC_HW_CFG_PSEL indicates that an external PHY is present. Skip the internal PHY initialization when set and store the ID of the detected PHY. Reviewed by: br Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D60744 --- sys/dev/usb/net/if_smsc.c | 39 +++++++++++++++++++++++++++++++-------- sys/dev/usb/net/if_smscreg.h | 1 + 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/sys/dev/usb/net/if_smsc.c b/sys/dev/usb/net/if_smsc.c index 5803a5bd1bcf..3144eb7e8917 100644 --- a/sys/dev/usb/net/if_smsc.c +++ b/sys/dev/usb/net/if_smsc.c @@ -1449,11 +1449,12 @@ smsc_chip_init(struct smsc_softc *sc) /* Vlan */ smsc_write_reg(sc, SMSC_VLAN1, (uint32_t)ETHERTYPE_VLAN); - /* - * Initialise the PHY - */ - if ((err = smsc_phy_init(sc)) != 0) - goto init_failed; + if ((sc->sc_flags & SMSC_FLAG_EXT_PHY) == 0) { + /* Initialise the PHY */ + err = smsc_phy_init(sc); + if (err != 0) + goto init_failed; + } /* * Start TX @@ -1621,14 +1622,12 @@ smsc_attach_post(struct usb_ether *ue) { struct smsc_softc *sc = uether_getsc(ue); struct ether_addr eaddr; - uint32_t mac_h, mac_l; + uint32_t hwcfg, mac_h, mac_l; int err; int i; smsc_dbg_printf(sc, "smsc_attach_post\n"); - /* Setup some of the basics */ - sc->sc_phyno = 1; /* Attempt to get the mac address, if an EEPROM is not attached this * will just return FF:FF:FF:FF:FF:FF, so in such cases we invent a MAC @@ -1636,6 +1635,15 @@ smsc_attach_post(struct usb_ether *ue) */ memset(sc->sc_ue.ue_eaddr, 0xff, ETHER_ADDR_LEN); + smsc_read_reg(sc, SMSC_HW_CFG, &hwcfg); + if (hwcfg & SMSC_HW_CFG_PSEL) { + smsc_dbg_printf(sc, "HW_CFG indicates external PHY\n"); + sc->sc_flags |= SMSC_FLAG_EXT_PHY; + sc->sc_phyno = MII_PHY_ANY; + } else { + sc->sc_phyno = 1; + } + /* Check if there is already a MAC address in the register */ if ((smsc_read_reg(sc, SMSC_MAC_ADDRL, &mac_l) == 0) && (smsc_read_reg(sc, SMSC_MAC_ADDRH, &mac_h) == 0)) { @@ -1688,6 +1696,8 @@ static int smsc_attach_post_sub(struct usb_ether *ue) { struct smsc_softc *sc; + struct mii_softc *miisc; + struct mii_data *mii; if_t ifp; int error; @@ -1718,6 +1728,19 @@ smsc_attach_post_sub(struct usb_ether *ue) error = mii_attach(ue->ue_dev, &ue->ue_miibus, ifp, uether_ifmedia_upd, ue->ue_methods->ue_mii_sts, BMSR_DEFCAPMASK, sc->sc_phyno, MII_OFFSET_ANY, 0); + + if (error != 0) + goto fail; + + if (sc->sc_phyno == MII_PHY_ANY) { + /* Store the actual PHY address we found. */ + mii = device_get_softc(ue->ue_miibus); + miisc = LIST_FIRST(&mii->mii_phys); + if (miisc != NULL) + sc->sc_phyno = miisc->mii_phy; + } + +fail: bus_topo_unlock(); return (error); diff --git a/sys/dev/usb/net/if_smscreg.h b/sys/dev/usb/net/if_smscreg.h index 1d27b661b16e..be18caf7627a 100644 --- a/sys/dev/usb/net/if_smscreg.h +++ b/sys/dev/usb/net/if_smscreg.h @@ -268,6 +268,7 @@ struct smsc_softc { uint32_t sc_flags; #define SMSC_FLAG_LINK 0x0001 #define SMSC_FLAG_LAN9514 0x1000 /* LAN9514 */ +#define SMSC_FLAG_EXT_PHY 0x2000 /* External PHY (HW_CFG.PSEL) */ }; #define SMSC_LOCK(_sc) mtx_lock(&(_sc)->sc_mtx)