From nobody Fri Oct 23 22:01:28 2026 X-Original-To: dev-commits-src-main@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 4jBH6J4qqQz6wWpK for ; Fri, 23 Oct 2026 22:01:28 +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 4jBH6J4J3Mz3Bpy for ; Fri, 23 Oct 2026 22:01:28 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1792792888; 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=vD/KFYoFPLwb9H0HaYX6c8plj/iHRsniEfestK3iQgsQDRXRXxHfmCSKSjJmbABTv0Q6hC NuJp1TgSQb7tLRUrNgESKtofT0CKfFpoNgAB/W+U3ZdNmDEWh0ysYVm+TurZ8lR3gqPVfM c8WiLikkv4GaZgUnE41ZfVHB5OWyHDSU4uaNsi2XFdyrxFNn+d0xzMEclleZEZMZELPe4r FCDrdx68yrik5ifLLfy06zGeCAbWNm9JWkpS7Cj4dozCxIad75bKyKl7RsZSNTpS8rfg1z n/pKx11pC0zo/Vt9YFQEjQTO4S3y3sGUFPUQzk6YWCuPOcLzoZyRPtxnnPzSrA== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1792792888; b=O5/tdAeXfJXvCRCrlg2BITi3Becq5SBAnH1fr/3puNw4lxTBu63aVt5ASJcvL0mfyYzXVW YmoAi+zcmpo8ZaOv8Tvmv4mD0Tax5jcSzgSQ9CPv5PMedbaDFcWZ4IndYMWMU0pBrbkM6g jwVZ/xufL/RV391qtGTTmlQnFqzLluG+Uc31EyiuubhsHX3W75Tc8ZOnVEDioSvZabTGUe 8ZAnlOG+oQkFO1zB94jX9iiBPGME11hKQd/EtJOuM4Ak9oCnmx+fgEXmsSswXyzzlpHnHJ Fp0MuDjhTuQhiQ8RlL7Af2xSW7iUSozg4f9ThfUE6mhtqliZfAn+/s+troLQEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1792792888; 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=WVaOBfi9xmM2/GFCu9VorsWXfHGqLMyUHAyCFsRGgOraxQK+YEK265PiaSrPkhdV1TjnK7 tHUKyngJ4kDBiUkPocBRzce/m+qxaoXW0L5MaqZM3TLBldrIjhwi4KjDo0onyqGn3JAkGX MsAOC/CSrzR5sDcmc7+BvN90Q0bTRzZmLbxVnHOazP6iAQPCBBWLew7YRElwYzBGxHS2ms v7826kPiRxCfY+R/1VNCE3tH/t6zTTlMjRVwNgcFzoK0+zhYdwfERm5pnT/jGW6/xpXEXm TLSf7B/sVK4MwD+5AuFzVfmiS/EqV+xRqvMgk3Z3rFlEzBSu4zfjtC83fxoGig== 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 4jBH6J3yGQzppX for ; Fri, 23 Oct 2026 22:01:28 +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-main X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: Commit messages for the main branch 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)