From nobody Sat Feb 7 13:05:33 2026 Received: from mail-ua1-f48.google.com (mail-ua1-f48.google.com [209.85.222.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D36E8343D71 for ; Tue, 20 Jan 2026 06:28:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768890531; cv=none; b=W+QqauDOSTY+qW/InK5LetYsWFHxUX4mMWzhDkUH+W6gYQs263O3ef2TdtZbK5P1j2vWn1BwnhjIIJPiuDldzRmm1sOaGcdKaSKG5dSJjbdPKqTqBbaITLcOT6HEW1YU3ThjyLnYe4x2lM4htUgNnWIRToOidQAFkvvcUixj1Wc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768890531; c=relaxed/simple; bh=0+Y9hEB70xxqyIY6tsWCzgo3WT4f+mm90U6/OsPJkFU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aB36T+ZnVqqXKfvGjVtR02ylQSo78PjrNyZ3GwQWBwqgQHj8bsEDpxLFSJoQ1Qs9oQo5zX5r6ro65Dh6Avr41pbqkXePlG5y2UCr2VBciLHZ1rehKYdU4FTDEfQlaMrJjiMasa2cD99P7UcQuPQM+EY25HinjgiMwj+YvFeZzQo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=KAufSGkq; arc=none smtp.client-ip=209.85.222.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="KAufSGkq" Received: by mail-ua1-f48.google.com with SMTP id a1e0cc1a2514c-944168e8c5fso3296236241.2 for ; Mon, 19 Jan 2026 22:28:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768890529; x=1769495329; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9/P4vB6ZrTUYfKL01JZTaSnR0v+y3e+rmtwAP48/qa4=; b=KAufSGkq5cTbRZCyEuO7DwLduwuUNjf90V9kOgLmZyJqWZA/EZsLSf9L7n6gWKI5a7 SaUOQuyQ11cQ+bgej+JDgxiQMG12JjuKrDdQaEf+SLkgeMYnD/CssJY3j0ayZH/HrImF cGmXi92lJoAN8ouUq/cZbV6VzR82EvWuyr4R4AIJLB/KYvzNIJlMXBoMaaxirGLy1+K5 0F84vH4Zet/Dq7DYIoAYBl7pnvqk2eb48lJZd1nIjKyxAfNjNBnUTIE9InlZJyrpEnF2 T80vC2E+yoqrONtiSgfrLmgnKw1laZs/KkEqB8TXt80pc5bPDMJMj/XokENfMwgvmb+/ g3kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768890529; x=1769495329; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=9/P4vB6ZrTUYfKL01JZTaSnR0v+y3e+rmtwAP48/qa4=; b=GBdKIa2pDQfhWlEOz0vR63Tud9UzXOy2k2yymZJIA7zqBndhK7jNXcrjuPa6gq5lCf yge8J+3lZGKmK6RXcaNWZ9/Op7RDpxfr7y/cIXuE6a7zaFKj1IZP2UT2yasaTv4vh2lU i5WuXr1FuRf+z2FTZXeD1MEQvJPSyg8bK/bFCM1utMaF2jXtkm/FlXztw80TnRpvGkCW tRfmPMpYYIO2lNBBULaRV3JLuPjisBQ7+6ZUTVyUnfNyFPqHwFFKNfVSIsQDpz2nVIT4 WTGWlx0ppIw+I8w2eJTdq8+ZhtFr089RoHaNDr7NVchz025sjYbpGDXUWCjVcN5l70/g fmLg== X-Forwarded-Encrypted: i=1; AJvYcCU2khUwMdQxvuNM2Jjzp9x4AEk7IQdU2RCYHRLD8GfQegQ4WQq27ut5vj9LOYDrEGmrcDNwsUDXODkd1JI=@vger.kernel.org X-Gm-Message-State: AOJu0YzHlhQhTFlGrParpb4qaWlMhIIdrXRxPF7sdRRhhJlic7wSUBVO m4BczsFJ6O+5bfqrvnq1I3mBpKD+1TqsAWfqZ61tELck1sBu8MlfQGcG X-Gm-Gg: AZuq6aL3bFi8JeTRjeC3485EcJoPFvTJUzN19kHWPJF+VZoR1ySHo5zaWzK7HCRGrbs ay2X9MWtGR+yn9kjIV4s46XrFRX94RvPFehqF/Asbuj5zmb8KO1TvJdQ50fqqybaDV8468UhUPq LlooCl+pbqaKJmpbQGrAPhieC87X52YlgqBQ6KBox8jdCz9aMeL+lO29O1jnQ96MR6rfjhX5BvR bAblQSxbCRRmKI+D7VymmaoD8fRDw9DKTyUpkVUIps7GHnXSCZah1OrC6gAkdAXB4kLsCHYeKsj ozpz0p1nxLHodYIPFF0OW4tHY/aB9QJ5Bib1xrfj4NlftZkVKJhA3vKTKATszeJ3MTTcUNNtacs HOChMw2b8uEz9EzOiKNopg3krQt3GSJij1nrOLbs4t5y7zxVPhewYdcpS0QgtttzCRbGf8+34Y7 e+m/y+CXS3nKSZKwfu3JfK X-Received: by 2002:a05:7300:6d1f:b0:2b0:4e86:8157 with SMTP id 5a478bee46e88-2b6b46eb100mr10720484eec.17.1768883786512; Mon, 19 Jan 2026 20:36:26 -0800 (PST) Received: from localhost ([2001:19f0:ac00:4eb8:5400:5ff:fe30:7df3]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2b6b3502c91sm15459859eec.9.2026.01.19.20.36.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Jan 2026 20:36:26 -0800 (PST) From: Inochi Amaoto To: Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Maxime Coquelin , Alexandre Torgue , Richard Cochran , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , "Russell King (Oracle)" , Yanteng Si , Yao Zi , Vladimir Oltean , Lad Prabhakar , Inochi Amaoto , Choong Yong Liang , Maxime Chevallier , Chen-Yu Tsai , Shangjuan Wei , Boon Khai Ng , Quentin Schulz , Giuseppe Cavallaro , Jose Abreu Cc: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, Longbin Li Subject: [PATCH net-next 1/3] dt-bindings: net: Add support for Spacemit K3 dwmac Date: Tue, 20 Jan 2026 12:36:06 +0800 Message-ID: <20260120043609.910302-2-inochiama@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120043609.910302-1-inochiama@gmail.com> References: <20260120043609.910302-1-inochiama@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The GMAC IP on Spacemit K3 is almost a standard Synopsys DesignWare MAC (version 5.40a) with some extra clock. Add necessary compatible string for this device. Signed-off-by: Inochi Amaoto --- .../devicetree/bindings/net/snps,dwmac.yaml | 3 + .../bindings/net/spacemit,k3-dwmac.yaml | 107 ++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 Documentation/devicetree/bindings/net/spacemit,k3-dwmac= .yaml diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Docume= ntation/devicetree/bindings/net/snps,dwmac.yaml index dd3c72e8363e..3c2c6cb6b10b 100644 --- a/Documentation/devicetree/bindings/net/snps,dwmac.yaml +++ b/Documentation/devicetree/bindings/net/snps,dwmac.yaml @@ -34,6 +34,7 @@ select: - snps,dwmac-5.10a - snps,dwmac-5.20 - snps,dwmac-5.30a + - snps,dwmac-5.40a - snps,dwxgmac - snps,dwxgmac-2.10 =20 @@ -108,6 +109,7 @@ properties: - snps,dwmac-5.10a - snps,dwmac-5.20 - snps,dwmac-5.30a + - snps,dwmac-5.40a - snps,dwxgmac - snps,dwxgmac-2.10 - sophgo,sg2042-dwmac @@ -653,6 +655,7 @@ allOf: - snps,dwmac-5.10a - snps,dwmac-5.20 - snps,dwmac-5.30a + - snps,dwmac-5.40a - snps,dwxgmac - snps,dwxgmac-2.10 - st,spear600-gmac diff --git a/Documentation/devicetree/bindings/net/spacemit,k3-dwmac.yaml b= /Documentation/devicetree/bindings/net/spacemit,k3-dwmac.yaml new file mode 100644 index 000000000000..58dd98f79e8a --- /dev/null +++ b/Documentation/devicetree/bindings/net/spacemit,k3-dwmac.yaml @@ -0,0 +1,107 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/net/spacemit,k3-dwmac.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Spacemit K3 DWMAC glue layer + +maintainers: + - Inochi Amaoto + +select: + properties: + compatible: + contains: + const: spacemit,k3-dwmac + required: + - compatible + +properties: + compatible: + items: + - const: spacemit,k3-dwmac + - const: snps,dwmac-5.40a + + reg: + maxItems: 1 + + clocks: + minItems: 3 + items: + - description: GMAC main clock + - description: PTP clock + - description: TX clock + - description: PHY clock + + clock-names: + minItems: 3 + items: + - const: stmmaceth + - const: ptp_ref + - const: tx + - const: phy + + interrupts: + minItems: 1 + items: + - description: MAC interrupt + - description: MAC wake interrupt + + interrupt-names: + minItems: 1 + items: + - const: macirq + - const: eth_wake_irq + + resets: + maxItems: 1 + + reset-names: + const: stmmaceth + + spacemit,apmu: + $ref: /schemas/types.yaml#/definitions/phandle-array + items: + - items: + - description: phandle to the syscon node which control the glue= register + - description: offset of the control register + - description: offset of the dline register + + description: + A phandle to syscon with offset to control registers for this MAC + +required: + - compatible + - reg + - clocks + - clock-names + - interrupts + - interrupt-names + - resets + - reset-names + +allOf: + - $ref: snps,dwmac.yaml# + +unevaluatedProperties: false + +examples: + - | + #include + + eth0: ethernet@cac80000 { + compatible =3D "spacemit,k3-dwmac", "snps,dwmac-5.40a"; + reg =3D <0xcac80000 0x2000>; + clocks =3D <&syscon_apmu 66>, <&syscon_apmu 68>, + <&syscon_apmu 69>; + clock-names =3D "stmmaceth", "ptp_ref", "tx"; + interrupts =3D <131 IRQ_TYPE_LEVEL_HIGH>, <276 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names =3D "macirq", "eth_wake_irq"; + phy-mode =3D "rgmii-id"; + phy-handle =3D <&phy0>; + resets =3D <&syscon_apmu 67>; + reset-names =3D "stmmaceth"; + spacemit,apmu =3D <&syscon_apmu 0x384 0x38c>; + }; + --=20 2.52.0 From nobody Sat Feb 7 13:05:33 2026 Received: from mail-dy1-f170.google.com (mail-dy1-f170.google.com [74.125.82.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5717D352FB1 for ; Tue, 20 Jan 2026 04:36:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768883792; cv=none; b=EY8J6qkX0m6U3T99/qt5kiNVj5cHoH8J5NhMT2oBaL4kfjLpRAPL0AK3rDAVTI/m3xVUU0hQG7s96dYOA13nIwqp+g22rw2I2FRpmS0aabKIWnvT5GGqdSL60sc8EpyLMcNSoictq5IbWG2vA639QeyLxyZDhB+lBH4lJiJItQU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768883792; c=relaxed/simple; bh=RbmYS+GbmO5r9aIsVbkZb99LO5fpXfIwGvbgj9g6qUI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=O4iaLI0JF5pJzaVuLLo+4Hxfnxn7Uac5/CM5esPtvt2t7XRvZyCrZQLWeR18tirOeKVlFMC1Avq+TdDeCigHu/JhFRZz5SP15EPc2xDYi8ptfSpPhhXrrQ9ISdMeyQwR7nHeaFPYqQIKhiZsTonohIANaRxZtyQE+Y6t7S+PSSo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=fDIrnssH; arc=none smtp.client-ip=74.125.82.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="fDIrnssH" Received: by mail-dy1-f170.google.com with SMTP id 5a478bee46e88-2b6f5a9cecaso948885eec.0 for ; Mon, 19 Jan 2026 20:36:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768883790; x=1769488590; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=yB8/RdUGEfLZjhmXdp52kQTD2QqD1w42DdvzuHTbkg0=; b=fDIrnssHsZHhl1JrOcn8DT3G7fCEhTDqkTCHS/kruE5DdkNGBzbJskcjkpVIdd6uc2 Al25X2f+DM6rXYGCeEk3f1URs566WG8zRjrj0Yn1HO1Gs/+X+Ruenv2yNjhxoNIQNAhi ONDG2V1qjwkGB3AUuXEvHd+UGzxip9nrhPmQTQ7v9YfGA2RiqmcWEUKEdKiacUyEMyVo DZkJLS+Ea8NXwENx3TbfMgBpdDQ4Ieh5nNksR9HUszR974MCHG6T6kqImpS47lCZB86v 1FZQQIzcA3XcGO4StBhMaRSkZcDu6XQOVexIbZ4TnkHsAC8FHL5vxJKj8JxZgI+0ypog I/Fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768883790; x=1769488590; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=yB8/RdUGEfLZjhmXdp52kQTD2QqD1w42DdvzuHTbkg0=; b=WOM6Fkcfr6dQSdCEqzTz1XkmPYXvFbmHDNykdnXYarSXQI0f3XeBKnD6Vy6HTaS4tA x1HdL2ebFccDYBWuvEUGm82vbepA0Sfnncr7NbzkSGZHPh5PaaFcrEbsHNto7zLL7ta/ MmqA8qrlbnQ21OhjHpeEI3cDf9FTu9bImBGQM4kmLKxj5FiiKxNM1skCLCBf5kZ3Axg4 ETQkrDa2lhb9OBAMmxbP5j/k9LQj2o4SqglsIaCz4kRlTAZ4NsVco8NYUpyxjO7H6+9P sd5ww6p6+pOH6UXJwjpFXS4Y6T+gLXL75ChacaAXjxTN2d6DCZCJlDlq7y+CFztbOGae 923g== X-Forwarded-Encrypted: i=1; AJvYcCVVYf5AI+9oHVmLzLQVJt/pJqMtQtRL1VYbBZGsORQdBAYcnbLSmuJDg1oplHmtatfJvUUYbkyTOHkhpXY=@vger.kernel.org X-Gm-Message-State: AOJu0YzIMYCh6UQLliPsw4wvb8jNJ2UAuqSxEZqZz5RwJiGiKH5nXxo2 iBjgrZRRk2ReAFERk/laKQMWi36iwaV/X4HscwsaA6uno3nOVXJc5Jgs X-Gm-Gg: AZuq6aJqoaBIHcOJqNqhLryWN50KTEQJVALme0VphuVPpNE60hHvw046FM1obwglptQ /Vi4SVK4TlAnS+LjRQvSgL4bu0iHtnif50Ky7ISi2Ypu6yY4MxgA0SXGko5qTuYi9qYRtrwk7sy OnPTNo+ZE8xq10b8ZQSdnbfFw/o1HFjO6vTQFsorM/haQqfea+mXvQYHXnZiA9R27nmPb0nBZGH eiByJimXjMLMEAT/DYQeHjPXzPtF5PnIQ5jbWEKolibGkDTQqK4V3QJaFTAe86bd7pyHunwmPmv TGDNhPGOp+eMC2nzoxe6HdK+jBJwOETNZ/j7vz16UonfkG0xxKJNStC0q8Q4pdQupZFGycBcPcY JNQOkOjMy4lVWu9Y2tAU+RvKrF7yT7G/PUEiqPg0FtD7/KiEFmNAp82sWUS3ZCZvGRvH2b8LxQs rJUrdoitKKLRMfz/HKYPwC X-Received: by 2002:a05:7301:9f09:b0:2ae:5e93:b6d with SMTP id 5a478bee46e88-2b6fd7e55f9mr304430eec.38.1768883790053; Mon, 19 Jan 2026 20:36:30 -0800 (PST) Received: from localhost ([2001:19f0:ac00:4eb8:5400:5ff:fe30:7df3]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2b6fc2820a2sm1030314eec.35.2026.01.19.20.36.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Jan 2026 20:36:29 -0800 (PST) From: Inochi Amaoto To: Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Maxime Coquelin , Alexandre Torgue , Richard Cochran , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , "Russell King (Oracle)" , Yanteng Si , Yao Zi , Vladimir Oltean , Lad Prabhakar , Inochi Amaoto , Choong Yong Liang , Maxime Chevallier , Chen-Yu Tsai , Shangjuan Wei , Boon Khai Ng , Quentin Schulz , Giuseppe Cavallaro , Jose Abreu Cc: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, Longbin Li Subject: [PATCH net-next 2/3] net: stmmac: platform: Add snps,dwmac-5.40a IP compatible string Date: Tue, 20 Jan 2026 12:36:07 +0800 Message-ID: <20260120043609.910302-3-inochiama@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120043609.910302-1-inochiama@gmail.com> References: <20260120043609.910302-1-inochiama@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add compatible string for 5.40a version that can avoid to define some platform data in the glue layer. Signed-off-by: Inochi Amaoto --- drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/driver= s/net/ethernet/stmicro/stmmac/stmmac_platform.c index 8979a50b5507..54c7b1537ab9 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c @@ -396,6 +396,7 @@ static const char * const stmmac_gmac4_compats[] =3D { "snps,dwmac-5.10a", "snps,dwmac-5.20", "snps,dwmac-5.30a", + "snps,dwmac-5.40a", NULL }; =20 --=20 2.52.0 From nobody Sat Feb 7 13:05:33 2026 Received: from mail-dl1-f44.google.com (mail-dl1-f44.google.com [74.125.82.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 208CB3570B5 for ; Tue, 20 Jan 2026 04:36:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768883796; cv=none; b=e3JYWeANvgqej61b46EBLpea+4CYJmaj80a2pnyhjNpjD3rzcZaRXMv5kr5ksjJvJ2Cvs8VrpejN4+4IPbCzSaaPPk2NHFfys1J5UMvZvHUuAOUkV6ScImW0S4GojHvAvuADWJDklgjbHG8e8/VWOXycIMWcyBrXQmhGyYb8Cr0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768883796; c=relaxed/simple; bh=3tH/+6lIxO4URvJgO1n8gy+tjRuroAKNkBz1xRvUGX4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QRflfz7mkdfDmQM9+n6S9dL397H/XMYFqmy+E0tcm88xXjtPlbM5NR3OI+qX1/DoeFkUURhVgLg2Wq/KoWkra+cvRHk/mduuEBERVBT3BXBdbBnN9xRjGW/CphPZLJ6SRQuMykUW8gT3JABwRUyHTE6MBQ7UL8QwGAkHSc2QFrQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=fVAfMYHL; arc=none smtp.client-ip=74.125.82.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="fVAfMYHL" Received: by mail-dl1-f44.google.com with SMTP id a92af1059eb24-12336c0a8b6so10539403c88.1 for ; Mon, 19 Jan 2026 20:36:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768883794; x=1769488594; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wyReD0FGPHyCNo3ka9EshiTdpLiW7lhhWJbYHeoeAsk=; b=fVAfMYHLBeYXHSXJgPefI7JpULQC9uRR0QbhaMokhm6Rx39lwV0LtTQhPIkkEIDNIn de7h1bY0g68d+uUyPVY/bk4X4Lu+sG5BrPJ+GNWpNcRZNUy50OPdgcT7W//nbvvEjKRs p8sFe8fdDruhx8PftdzaFjo2feu1gl+OUW79ED0nfDyFlGHGU7tFujSs9yf0KCKjq/Gi y7KGLEaqJpofig9U4bg7UDjCmvyvtKlYqM0iPfDGFFzB++t+cgr1qmFpQobYDE+++6Ts w7W4gAJF70w72yvylTri5PFvkrVKkouqZjHAJrnCT6n30g0047V4qLX2+XgWNQEFx0wg pAGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768883794; x=1769488594; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=wyReD0FGPHyCNo3ka9EshiTdpLiW7lhhWJbYHeoeAsk=; b=vJ8MPqHIbwaZ1QWfjV8SZiZasFNIBK+eW7epUycq5eQ4kLUcxEXasBZ0BK2YnJ7CIB EmBOi+fG/TitfMzfphZ7tr/S7pbd0T/jSyPxhK8uC1ByMQqpv1AckEv9EOl+XCT3i5Xy zwub1euSkCpbnkmLjfD7zj3UiDRyNuA+TW8DhzKPLkhKcj6hwPWwOUykOYE1s9Rm1b6a 3pBE07nvemkrTCAezPQqpUVwXO43UjNVOJika9o520Qn3vEy+yJ3cIKvs9kl+0bN+zJ3 0S4LBYnKfyUfYZVFZEwCeRvDffPCucQyxJ9wym448U4vS7aTdABwO7AwXlvGnTX15Zw9 zhuA== X-Forwarded-Encrypted: i=1; AJvYcCV2qIw0QWHU820XuLKwIWDDMI0Q76M5V9492GJUdfUzy+WV8h3wuVsWCYOAelL21HhED8e/tA5ztLIpbCk=@vger.kernel.org X-Gm-Message-State: AOJu0YxOkjsrx2rxn+9UMklRVEKduYuYsx6+dW60pk7rfN9W1W14E32X b6zGQaShAF4tAx25oI47VvYBoERiI1O95hIPdpnpRBqxxJs8HHBYF86N X-Gm-Gg: AY/fxX5jO8+tAZDXzwB7ATRgteFhae4hHjNKAaHZgRZrY9vJWwi/9cnfCVYrohU6Nlw 5BuIgC3GIV43Yc90wxIWkFjAE1YLjc8W9/4sd8Mt1Q87s2TjQKKLCbhzrN4P3tAtbSeE3X/X7Q8 XBRBJmFdmdRH8IoCcH2ahGE97QM5bKqj7Ow5sAYv9Xw5fx3LoHq9+hj9HBE4uZeEyrxhYeX1Pl4 QLsc2XV/yYR4F0CFz+V8IEgkPTcGkGVNaOZpXr1UkuKdLCN4HTx17Xqpp3blpp2sBA7MdW/Phzd ILrsrXrVXj6KBgiW+x+QhUua2hQRbfZeGdHR5bn9p/jNkvyLnoTq1JtgVeHYRU79c9gP+1mPpqL 9i0uM0YNyfNdiIqVpWcD1C1Jr69nvxfs3GBBP+mL1s1o7KlJ4mSsnBPnjWFs3U4NRjy+RLKMyYU Nwu1+mP1uoF6bVnOZM+702 X-Received: by 2002:a05:7022:2385:b0:119:e569:fb9b with SMTP id a92af1059eb24-1244a6fca7cmr8955362c88.10.1768883794022; Mon, 19 Jan 2026 20:36:34 -0800 (PST) Received: from localhost ([2001:19f0:ac00:4eb8:5400:5ff:fe30:7df3]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2b6bd8e7cd9sm14617890eec.16.2026.01.19.20.36.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Jan 2026 20:36:33 -0800 (PST) From: Inochi Amaoto To: Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Maxime Coquelin , Alexandre Torgue , Richard Cochran , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , "Russell King (Oracle)" , Yanteng Si , Yao Zi , Vladimir Oltean , Lad Prabhakar , Inochi Amaoto , Choong Yong Liang , Maxime Chevallier , Chen-Yu Tsai , Shangjuan Wei , Boon Khai Ng , Quentin Schulz , Giuseppe Cavallaro , Jose Abreu Cc: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, Longbin Li Subject: [PATCH net-next 3/3] net: stmmac: Add glue layer for Spacemit K3 SoC Date: Tue, 20 Jan 2026 12:36:08 +0800 Message-ID: <20260120043609.910302-4-inochiama@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120043609.910302-1-inochiama@gmail.com> References: <20260120043609.910302-1-inochiama@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Adds Spacemit dwmac driver support on the Spacemit K3 SoC. Signed-off-by: Inochi Amaoto --- drivers/net/ethernet/stmicro/stmmac/Kconfig | 12 + drivers/net/ethernet/stmicro/stmmac/Makefile | 1 + .../ethernet/stmicro/stmmac/dwmac-spacemit.c | 224 ++++++++++++++++++ 3 files changed, 237 insertions(+) create mode 100644 drivers/net/ethernet/stmicro/stmmac/dwmac-spacemit.c diff --git a/drivers/net/ethernet/stmicro/stmmac/Kconfig b/drivers/net/ethe= rnet/stmicro/stmmac/Kconfig index 907fe2e927f0..583a4692f5da 100644 --- a/drivers/net/ethernet/stmicro/stmmac/Kconfig +++ b/drivers/net/ethernet/stmicro/stmmac/Kconfig @@ -216,6 +216,18 @@ config DWMAC_SOPHGO for the stmmac device driver. This driver is used for the ethernet controllers on various Sophgo SoCs. =20 +config DWMAC_SPACEMIT + tristate "Spacemit dwmac support" + depends on OF && (ARCH_SPACEMIT || COMPILE_TEST) + select MFD_SYSCON + default m if ARCH_SPACEMIT + help + Support for ethernet controllers on Spacemit RISC-V SoCs + + This selects the Spacemit platform specific glue layer support + for the stmmac device driver. This driver is used for the + Spacemit K3 ethernet controllers. + config DWMAC_STARFIVE tristate "StarFive dwmac support" depends on OF && (ARCH_STARFIVE || COMPILE_TEST) diff --git a/drivers/net/ethernet/stmicro/stmmac/Makefile b/drivers/net/eth= ernet/stmicro/stmmac/Makefile index 7bf528731034..9e32045631d8 100644 --- a/drivers/net/ethernet/stmicro/stmmac/Makefile +++ b/drivers/net/ethernet/stmicro/stmmac/Makefile @@ -27,6 +27,7 @@ obj-$(CONFIG_DWMAC_RZN1) +=3D dwmac-rzn1.o obj-$(CONFIG_DWMAC_S32) +=3D dwmac-s32.o obj-$(CONFIG_DWMAC_SOCFPGA) +=3D dwmac-altr-socfpga.o obj-$(CONFIG_DWMAC_SOPHGO) +=3D dwmac-sophgo.o +obj-$(CONFIG_DWMAC_SPACEMIT) +=3D dwmac-spacemit.o obj-$(CONFIG_DWMAC_STARFIVE) +=3D dwmac-starfive.o obj-$(CONFIG_DWMAC_STI) +=3D dwmac-sti.o obj-$(CONFIG_DWMAC_STM32) +=3D dwmac-stm32.o diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-spacemit.c b/drivers= /net/ethernet/stmicro/stmmac/dwmac-spacemit.c new file mode 100644 index 000000000000..72744e60d02a --- /dev/null +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-spacemit.c @@ -0,0 +1,224 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Spacemit DWMAC platform driver + * + * Copyright (C) 2026 Inochi Amaoto + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "stmmac_platform.h" + +/* ctrl register bits */ +#define PHY_INTF_RGMII BIT(3) +#define PHY_INTF_MII BIT(4) + +#define WAKE_IRQ_EN BIT(9) +#define PHY_IRQ_EN BIT(12) + +/* dline register bits */ +#define RGMII_RX_DLINE_EN BIT(0) +#define RGMII_RX_DLINE_STEP GENMASK(5, 4) +#define RGMII_RX_DLINE_CODE GENMASK(15, 8) +#define RGMII_TX_DLINE_EN BIT(16) +#define RGMII_TX_DLINE_STEP GENMASK(21, 20) +#define RGMII_TX_DLINE_CODE GENMASK(31, 24) + +#define MAX_DLINE_DELAY_CODE 0xff + +struct spacemit_dwmac { + struct device *dev; + struct clk *tx; +}; + +/* Note: the delay step value is at 0.1ps */ +static const unsigned int k3_delay_step_10x[4] =3D { + 367, 493, 559, 685 +}; + +static int spacemit_dwmac_set_delay(struct regmap *apmu, + unsigned int dline_offset, + unsigned int tx_code, unsigned int tx_config, + unsigned int rx_code, unsigned int rx_config) +{ + unsigned int mask, val; + + mask =3D RGMII_RX_DLINE_STEP | RGMII_TX_DLINE_CODE | RGMII_TX_DLINE_EN | + RGMII_TX_DLINE_STEP | RGMII_RX_DLINE_CODE | RGMII_RX_DLINE_EN; + val =3D FIELD_PREP(RGMII_TX_DLINE_CODE, tx_config) | + FIELD_PREP(RGMII_TX_DLINE_CODE, tx_code) | RGMII_TX_DLINE_EN | + FIELD_PREP(RGMII_TX_DLINE_CODE, rx_config) | + FIELD_PREP(RGMII_RX_DLINE_CODE, rx_code) | RGMII_RX_DLINE_EN; + + return regmap_update_bits(apmu, dline_offset, mask, val); +} + +static int spacemit_dwmac_detected_delay_value(unsigned int delay, + unsigned int *config) +{ + int i; + int code, best_code =3D 0; + unsigned int best_delay =3D 0; + unsigned int best_config =3D 0; + + if (delay =3D=3D 0) + return 0; + + for (i =3D 0; i < ARRAY_SIZE(k3_delay_step_10x); i++) { + unsigned int step =3D k3_delay_step_10x[i]; + + for (code =3D 1; code <=3D MAX_DLINE_DELAY_CODE; code++) { + /* + * Note K3 require a specific factor for calculate + * the delay, in this scenario it is 0.9. So the + * formula is code * step / 10 * 0.9 + */ + unsigned int tmp =3D code * step * 9 / 10 / 10; + + if (abs(tmp - delay) < abs(best_delay - delay)) { + best_code =3D code; + best_delay =3D tmp; + best_config =3D i; + } + } + } + + *config =3D best_config; + + return best_code; +} + +static int spacemit_dwmac_fix_delay(struct plat_stmmacenet_data *plat_dat, + struct regmap *apmu, + unsigned int dline_offset, + unsigned int tx_delay, unsigned int rx_delay) +{ + bool mac_rxid =3D rx_delay !=3D 0; + bool mac_txid =3D tx_delay !=3D 0; + unsigned int rx_config =3D 0; + unsigned int tx_config =3D 0; + unsigned int rx_code; + unsigned int tx_code; + + plat_dat->phy_interface =3D phy_fix_phy_mode_for_mac_delays(plat_dat->phy= _interface, + mac_txid, + mac_rxid); + + if (plat_dat->phy_interface =3D=3D PHY_INTERFACE_MODE_NA) + return -EINVAL; + + rx_code =3D spacemit_dwmac_detected_delay_value(rx_delay, &rx_config); + tx_code =3D spacemit_dwmac_detected_delay_value(tx_delay, &tx_config); + + return spacemit_dwmac_set_delay(apmu, dline_offset, + tx_code, tx_config, + rx_code, rx_config); +} + +static int spacemit_dwmac_update_ifconfig(struct plat_stmmacenet_data *pla= t_dat, + struct stmmac_resources *stmmac_res, + struct regmap *apmu, + unsigned int ctrl_offset) +{ + unsigned int mask =3D PHY_INTF_MII | PHY_INTF_RGMII | WAKE_IRQ_EN; + unsigned int val =3D 0; + + switch (plat_dat->phy_interface) { + case PHY_INTERFACE_MODE_MII: + val |=3D PHY_INTF_MII; + break; + + case PHY_INTERFACE_MODE_RMII: + break; + + case PHY_INTERFACE_MODE_RGMII: + case PHY_INTERFACE_MODE_RGMII_ID: + case PHY_INTERFACE_MODE_RGMII_RXID: + case PHY_INTERFACE_MODE_RGMII_TXID: + val |=3D PHY_INTF_RGMII; + break; + + default: + return -EOPNOTSUPP; + } + + if (stmmac_res->wol_irq >=3D 0) + val |=3D WAKE_IRQ_EN; + + return regmap_update_bits(apmu, ctrl_offset, mask, val); +} + +static int spacemit_dwmac_probe(struct platform_device *pdev) +{ + struct plat_stmmacenet_data *plat_dat; + struct stmmac_resources stmmac_res; + struct device *dev =3D &pdev->dev; + unsigned int rx_delay =3D 0; + unsigned int tx_delay =3D 0; + struct regmap *apmu; + unsigned int offset[2]; + int ret; + + ret =3D stmmac_get_platform_resources(pdev, &stmmac_res); + if (ret) + return dev_err_probe(dev, ret, + "failed to get platform resources\n"); + + plat_dat =3D devm_stmmac_probe_config_dt(pdev, stmmac_res.mac); + if (IS_ERR(plat_dat)) + return dev_err_probe(dev, PTR_ERR(plat_dat), + "failed to parse DT parameters\n"); + + plat_dat->clk_tx_i =3D devm_clk_get_enabled(&pdev->dev, "tx"); + if (IS_ERR(plat_dat->clk_tx_i)) + return dev_err_probe(&pdev->dev, PTR_ERR(plat_dat->clk_tx_i), + "failed to get tx clock\n"); + + apmu =3D syscon_regmap_lookup_by_phandle_args(pdev->dev.of_node, "spacemi= t,apmu", 2, offset); + if (IS_ERR(apmu)) + return dev_err_probe(dev, PTR_ERR(apmu), + "Failed to get apmu regmap\n"); + + ret =3D spacemit_dwmac_update_ifconfig(plat_dat, &stmmac_res, + apmu, offset[0]); + if (ret) + return dev_err_probe(dev, ret, "Failed to configure ifconfig\n"); + + of_property_read_u32(pdev->dev.of_node, "tx-internal-delay-ps", &tx_delay= ); + of_property_read_u32(pdev->dev.of_node, "rx-internal-delay-ps", &rx_delay= ); + + ret =3D spacemit_dwmac_fix_delay(plat_dat, apmu, offset[1], tx_delay, rx_= delay); + if (ret) + return dev_err_probe(dev, ret, "Failed to configure delay\n"); + + return stmmac_dvr_probe(dev, plat_dat, &stmmac_res); +} + +static const struct of_device_id spacemit_dwmac_match[] =3D { + { .compatible =3D "spacemit,k3-dwmac" }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, spacemit_dwmac_match); + +static struct platform_driver spacemit_dwmac_driver =3D { + .probe =3D spacemit_dwmac_probe, + .remove =3D stmmac_pltfr_remove, + .driver =3D { + .name =3D "spacemit-dwmac", + .pm =3D &stmmac_pltfr_pm_ops, + .of_match_table =3D spacemit_dwmac_match, + }, +}; +module_platform_driver(spacemit_dwmac_driver); + +MODULE_AUTHOR("Inochi Amaoto "); +MODULE_DESCRIPTION("Spacemit DWMAC platform driver"); +MODULE_LICENSE("GPL"); --=20 2.52.0