From nobody Fri Oct 30 14:03:33 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 4jGN9d27c1z6wwSN for ; Fri, 30 Oct 2026 14:03: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 4jGN9d1ZNbz4npS for ; Fri, 30 Oct 2026 14:03:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793369013; 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=BWzwlcycLvmAb4O/CjjHMAzs9B9f3nYoR2uG6TkTgf4=; b=GPqiYKAfCE7pFQJOJt/m3nc/DGv6NJ6jhTuYk5/XY/yMAhcHQgK9fgKSrKN/XQjWzCbiw5 4vyvgotdyhAuIMpy8LC0XW60E+Z2mJrozey+mBuSRH7PmHP/j7vOPnJmaDpqcLXLDWFQD8 wa32Ehy9ozeNT9QRkQSCKF664A7hFW8V/TGp42vwe4HSZb4yj0FqP+QVKTYLV3TC8zKH+V H3kwexHUGEjgpFTIhKRAOTt43mddx7ghglySADFuX4WQCw6TYR3Jes8eASEWW8Y5DQk7/E rDgQHQo6edU18Q/vlVStj92ZkNaMWCiaKPhFhxMq1CH0MduuIq2dr0xW+5D7Xw== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1793369013; b=Ol4Kno1KLcF4mf1IrFpRBallUFMUtcqxnK4S4UdpMJSvXBJAuhTL5hCz1MzQp5h1W96Hln CxZXHrG9Bcf97dUnWnyZptCfi2YTzKdRbLkoW6ctglLELS3xv5WOc41ByGHkYoTpB/WBMX FsKEj9MPSlAsQFjwibxgy6hmQPV7u8xJP5YL9tZgR2RddjNur+8DYPTRHY/q1zobr4TcGO /MLzPGrLRJhZW0B3wPDeTZ3canNFswDgPREKk15QHzMJeo9y6K1va53n7X0xvfF9DVLqyU sx6h7tMYQrawXbNK3uUjZa4BkqJtrPzp8Ko83rEVmCUe/qabgolJEw1LGZPkbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793369013; 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=BWzwlcycLvmAb4O/CjjHMAzs9B9f3nYoR2uG6TkTgf4=; b=V+iMMYSxecv8S4W66UXCts46fQpfYOJF9AxEOX4IVoJDraLAmIH840hpdAu5+6u9sqkYjG wkSpvW1rrGo8B/mhC6tyi6Zz7XHPTj+lPqziUzzeJKolUQmAOklIEXHxKjip72qW8ACJd9 CK/zhAuEM9aBz+pyvL0MkN9PgBkVCk+HeT4AxFxSJzzruAhyIhrEumOJkteYUCqnXNT53V ULzaVSvJy+9f6u/Obfy6AZLRfKOkvs1he69HJFNHlOPJqtnJbdlUKM8QITB8m+kdAKvJup lLJC4ZAlJsl4mjkTZg8IxvcUvCbIwIpiakUyr1gJJ64AfU9bm0xEhwKyNG+w7A== 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 4jGN9d1FBFzTCy for ; Fri, 30 Oct 2026 14:03:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 21f0b by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 30 Oct 2026 14:03:33 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Ed Maste Subject: git: 83d0eed50106 - main - lan867xphy: New driver for Microchip LAN8670/1/2 10BASE-T1S PHYs 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: 83d0eed501060a733753c57c85da3abab4c973ad Auto-Submitted: auto-generated Date: Fri, 30 Oct 2026 14:03:33 +0000 Message-Id: <6ae4a3b5.21f0b.50d71569@gitrepo.freebsd.org> The branch main has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=83d0eed501060a733753c57c85da3abab4c973ad commit 83d0eed501060a733753c57c85da3abab4c973ad Author: Ed Maste AuthorDate: 2026-05-04 22:45:56 +0000 Commit: Ed Maste CommitDate: 2026-10-30 14:03:21 +0000 lan867xphy: New driver for Microchip LAN8670/1/2 10BASE-T1S PHYs 10BASE-T1S is a Single Pair Ethernet (SPE) standard, intended for automotive and industrial applications. It supports a multidrop "mixing segment" of at least 25m with up to 8 nodes. This driver currently does not support per-silicon-revision config or PHY-Level Collision Avoidance (PLCA), but is sufficient for establishing basic connectivity. Device details are available in the "Microchip LAN8670/1/2 10BASE-T1S Ethernet PHY Transceiver Datasheet". Reviewed by: adrian Differential Revision: https://reviews.freebsd.org/D60979 --- sys/conf/files | 1 + sys/dev/mii/lan867xphy.c | 110 +++++++++++++++++++++++++++++++++++++++++++++++ sys/dev/mii/miidevs | 1 + sys/modules/mii/Makefile | 4 +- 4 files changed, 115 insertions(+), 1 deletion(-) diff --git a/sys/conf/files b/sys/conf/files index e83e27c54d4d..882070eddec2 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -2471,6 +2471,7 @@ dev/mii/gentbi.c optional miibus | gentbi dev/mii/icsphy.c optional miibus | icsphy dev/mii/ip1000phy.c optional miibus | ip1000phy dev/mii/jmphy.c optional miibus | jmphy +dev/mii/lan867xphy.c optional miibus | lan867xphy dev/mii/lxtphy.c optional miibus | lxtphy dev/mii/mcommphy.c optional miibus | mcommphy dev/mii/micphy.c optional miibus fdt | micphy fdt diff --git a/sys/dev/mii/lan867xphy.c b/sys/dev/mii/lan867xphy.c new file mode 100644 index 000000000000..6fe23959df86 --- /dev/null +++ b/sys/dev/mii/lan867xphy.c @@ -0,0 +1,110 @@ +/* + * Copyright 2026 Ed Maste + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +/* + * Microchip LAN8670/1/2 10BASE-T1S Single Pair Ethernet (SPE) PHY Driver. + * + * This driver is sufficient for basic connectivity with CSMA/CD. + * + * TODO: + * - Revision-specific configuration for C2 and D0 silicon + * - PHY-Level Collision Avoidance (PLCA) configuration + * - Sleep mode (C2, D0 and later) + * - Topology discovry (D0 and later) + * - Signal Quality Indicator (SQI) (C2, D0 and later) + * - Cable fault diagnostics (C2 and later) + * - Harness Defect Detection (D0 and later) + * - Link status (D0 and later) + */ + +#include +#include +#include +#include +#include + +#include +#include + +#include +#include "miidevs.h" +#include "miibus_if.h" + +static int lan867x_probe(device_t); +static int lan867x_attach(device_t); + +static int lan867xphy_service(struct mii_softc *, struct mii_data *, int); +static void lan867xphy_status(struct mii_softc *); + + +static const struct mii_phydesc lan867xphys[] = { + MII_PHY_DESC(SMSC, LAN867X), + MII_PHY_END +}; + +static const struct mii_phy_funcs lan867xphy_funcs = { + lan867xphy_service, + lan867xphy_status, + mii_phy_reset, +}; + +static int +lan867xphy_service(struct mii_softc *sc, struct mii_data *mii, int cmd) +{ + PHY_STATUS(sc); + mii_phy_update(sc, cmd); + return (0); +} + +static void +lan867xphy_status(struct mii_softc *sc) +{ + struct mii_data *mii = sc->mii_pdata; + + mii->mii_media_status = IFM_AVALID | IFM_ACTIVE; + mii->mii_media_active = IFM_ETHER | IFM_10_T1S | IFM_HDX; +} + +static int +lan867x_probe(device_t dev) +{ + return (mii_phy_dev_probe(dev, lan867xphys, BUS_PROBE_DEFAULT)); +} + +static int +lan867x_attach(device_t dev) +{ + struct mii_softc *sc = device_get_softc(dev); + int media; + + mii_phy_dev_attach(dev, MIIF_NOISOLATE | MIIF_NOMANPAUSE, + &lan867xphy_funcs, 0); + + PHY_RESET(sc); + + /* PHY supports 10BASE-T1S only, no negotiation. */ + media = IFM_MAKEWORD(IFM_ETHER, IFM_10_T1S, IFM_HDX, sc->mii_inst); + ifmedia_add(&sc->mii_pdata->mii_media, media, 0, NULL); + ifmedia_set(&sc->mii_pdata->mii_media, media); + + return (0); +} + +static device_method_t lan867x_methods[] = { + DEVMETHOD(device_probe, lan867x_probe), + DEVMETHOD(device_attach, lan867x_attach), + DEVMETHOD(device_detach, mii_phy_detach), + DEVMETHOD(device_shutdown, bus_generic_shutdown), + DEVMETHOD_END +}; + +static driver_t lan867x_driver = { + "lan867xphy", + lan867x_methods, + sizeof(struct mii_softc) +}; + +DRIVER_MODULE(lan867xphy, miibus, lan867x_driver, 0, 0); diff --git a/sys/dev/mii/miidevs b/sys/dev/mii/miidevs index 89d8e54a1843..c8c61c5f3b79 100644 --- a/sys/dev/mii/miidevs +++ b/sys/dev/mii/miidevs @@ -364,3 +364,4 @@ model xxXAQTI XMACII 0x0000 XaQti Corp. XMAC II gigabit interface /* Microchip (formerly SMSC) */ model SMSC LAN8710A 0x000F Microchip LAN8710A 10/100 interface model SMSC LAN8700 0x000C Microchip LAN8700 10/100 interface +model SMSC LAN867X 0x0016 Microchip LAN8670/1/2 10BASE-T1S PHY diff --git a/sys/modules/mii/Makefile b/sys/modules/mii/Makefile index 353d92a51167..9621212a1fbc 100644 --- a/sys/modules/mii/Makefile +++ b/sys/modules/mii/Makefile @@ -3,7 +3,9 @@ KMOD= miibus SRCS= acphy.c amphy.c atphy.c axphy.c bmtphy.c brgphy.c SRCS+= ciphy.c dp83822phy.c dp83867phy.c -SRCS+= e1000phy.c gentbi.c icsphy.c ip1000phy.c jmphy.c lxtphy.c +SRCS+= e1000phy.c gentbi.c icsphy.c ip1000phy.c jmphy.c +SRCS+= lan867xphy.c +SRCS+= lxtphy.c SRCS+= miibus_if.c mii.c mii_bitbang.c mii_physubr.c SRCS+= nsgphy.c nsphy.c nsphyter.c pnaphy.c qsphy.c SRCS+= rdcphy.c rgephy.c rlphy.c smcphy.c