devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v8 00/12] net: ethernet: mtk_eth_soc: various enhancements
@ 2023-02-17 14:52 Daniel Golle
  2023-02-17 14:53 ` [PATCH v8 02/12] dt-bindings: net: mediatek,net: add mt7981-eth binding Daniel Golle
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Daniel Golle @ 2023-02-17 14:52 UTC (permalink / raw)
  To: devicetree, Rob Herring, Krzysztof Kozlowski, netdev,
	linux-mediatek, linux-arm-kernel, linux-kernel, Russell King,
	Heiner Kallweit, Lorenzo Bianconi, Mark Lee, John Crispin,
	Felix Fietkau, AngeloGioacchino Del Regno, Matthias Brugger,
	DENG Qingfang, Landen Chao, Sean Wang, Paolo Abeni,
	Jakub Kicinski, Eric Dumazet, David S. Miller, Vladimir Oltean,
	Florian Fainelli, Andrew Lunn
  Cc: Jianhui Zhao, Bjørn Mork

This series brings a variety of fixes and enhancements for mtk_eth_soc,
adds support for the MT7981 SoC and facilitates sharing the SGMII PCS
code between mtk_eth_soc and mt7530.

Note that this series depends on commit 697c3892d825
("regmap: apply reg_base and reg_downshift for single register ops") to
not break mt7530 pcs register access.

The whole series has been tested on MT7622+MT7531 (BPi-R64),
MT7623+MT7530 (BPi-R2) and MT7981+GPY211 (GL.iNet GL-MT3000).

Changes since v7:
 * move mediatek,sgmiisys.yaml to more appropriate folder
 * don't include <linux/phylink.h> twice in PCS driver, sort includes

Changes since v6:
 * label MAC MCR bit 12 in 08/12, MediaTek replied explaining its function

Changes since v5:
 * drop dev pointer also from struct mtk_sgmii, pass it as function
   paramter instead
 * address comments left for dt-bindings
 * minor improvements to commit messages

Changes since v4:
 * remove unused dev pointer in struct pcs_mtk_lynxi
 * squash link timer check into correct follow-up patch

Changes since v3:
 * remove unused #define's
 * use BMCR_* instead of #define'ing our own constants
 * return before changing registers in case of invalid link timer

Changes since v2:
 * improve dt-bindings, convert sgmisys bindings to dt-schema yaml
 * fix typo

Changes since v1:
 * apply reverse xmas tree everywhere
 * improve commit descriptions
 * add dt binding documentation
 * various small changes addressing all comments received for v1


Daniel Golle (12):
  net: ethernet: mtk_eth_soc: add support for MT7981 SoC
  dt-bindings: net: mediatek,net: add mt7981-eth binding
  dt-bindings: arm: mediatek: sgmiisys: Convert to DT schema
  dt-bindings: arm: mediatek: sgmiisys: add MT7981 SoC
  net: ethernet: mtk_eth_soc: set MDIO bus clock frequency
  net: ethernet: mtk_eth_soc: reset PCS state
  net: ethernet: mtk_eth_soc: only write values if needed
  net: ethernet: mtk_eth_soc: fix RX data corruption issue
  net: ethernet: mtk_eth_soc: ppe: add support for flow accounting
  net: pcs: add driver for MediaTek SGMII PCS
  net: ethernet: mtk_eth_soc: switch to external PCS driver
  net: dsa: mt7530: use external PCS driver

 .../arm/mediatek/mediatek,sgmiisys.txt        |  27 --
 .../devicetree/bindings/net/mediatek,net.yaml |  52 ++-
 .../bindings/pcs/mediatek,sgmiisys.yaml       |  55 ++++
 MAINTAINERS                                   |   7 +
 drivers/net/dsa/Kconfig                       |   1 +
 drivers/net/dsa/mt7530.c                      | 277 ++++------------
 drivers/net/dsa/mt7530.h                      |  47 +--
 drivers/net/ethernet/mediatek/Kconfig         |   2 +
 drivers/net/ethernet/mediatek/mtk_eth_path.c  |  14 +-
 drivers/net/ethernet/mediatek/mtk_eth_soc.c   |  67 +++-
 drivers/net/ethernet/mediatek/mtk_eth_soc.h   | 105 +++---
 drivers/net/ethernet/mediatek/mtk_ppe.c       | 114 ++++++-
 drivers/net/ethernet/mediatek/mtk_ppe.h       |  25 +-
 .../net/ethernet/mediatek/mtk_ppe_debugfs.c   |   9 +-
 .../net/ethernet/mediatek/mtk_ppe_offload.c   |   8 +
 drivers/net/ethernet/mediatek/mtk_ppe_regs.h  |  14 +
 drivers/net/ethernet/mediatek/mtk_sgmii.c     | 192 ++---------
 drivers/net/pcs/Kconfig                       |   7 +
 drivers/net/pcs/Makefile                      |   1 +
 drivers/net/pcs/pcs-mtk-lynxi.c               | 302 ++++++++++++++++++
 include/linux/pcs/pcs-mtk-lynxi.h             |  13 +
 21 files changed, 801 insertions(+), 538 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/arm/mediatek/mediatek,sgmiisys.txt
 create mode 100644 Documentation/devicetree/bindings/pcs/mediatek,sgmiisys.yaml
 create mode 100644 drivers/net/pcs/pcs-mtk-lynxi.c
 create mode 100644 include/linux/pcs/pcs-mtk-lynxi.h


base-commit: c068f40300a0eaa34f7105d137a5560b86951aa9
-- 
2.39.2


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH v8 02/12] dt-bindings: net: mediatek,net: add mt7981-eth binding
  2023-02-17 14:52 [PATCH v8 00/12] net: ethernet: mtk_eth_soc: various enhancements Daniel Golle
@ 2023-02-17 14:53 ` Daniel Golle
  2023-02-17 14:53 ` [PATCH v8 03/12] dt-bindings: arm: mediatek: sgmiisys: Convert to DT schema Daniel Golle
  2023-02-17 14:53 ` [PATCH v8 04/12] dt-bindings: arm: mediatek: sgmiisys: add MT7981 SoC Daniel Golle
  2 siblings, 0 replies; 4+ messages in thread
From: Daniel Golle @ 2023-02-17 14:53 UTC (permalink / raw)
  To: devicetree, Rob Herring, Krzysztof Kozlowski, netdev,
	linux-mediatek, linux-arm-kernel, linux-kernel, Russell King,
	Heiner Kallweit, Lorenzo Bianconi, Mark Lee, John Crispin,
	Felix Fietkau, AngeloGioacchino Del Regno, Matthias Brugger,
	DENG Qingfang, Landen Chao, Sean Wang, Paolo Abeni,
	Jakub Kicinski, Eric Dumazet, David S. Miller, Vladimir Oltean,
	Florian Fainelli, Andrew Lunn
  Cc: Jianhui Zhao, Bjørn Mork

Introduce DT bindings for the MT7981 SoC to mediatek,net.yaml.

Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
---
 .../devicetree/bindings/net/mediatek,net.yaml | 52 +++++++++++++++++--
 1 file changed, 47 insertions(+), 5 deletions(-)

diff --git a/Documentation/devicetree/bindings/net/mediatek,net.yaml b/Documentation/devicetree/bindings/net/mediatek,net.yaml
index 7ef696204c5a..925ab2982d54 100644
--- a/Documentation/devicetree/bindings/net/mediatek,net.yaml
+++ b/Documentation/devicetree/bindings/net/mediatek,net.yaml
@@ -21,6 +21,7 @@ properties:
       - mediatek,mt7623-eth
       - mediatek,mt7622-eth
       - mediatek,mt7629-eth
+      - mediatek,mt7981-eth
       - mediatek,mt7986-eth
       - ralink,rt5350-eth
 
@@ -78,6 +79,11 @@ properties:
     description:
       List of phandles to wireless ethernet dispatch nodes.
 
+  mediatek,wed-pcie:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      Phandle to the mediatek wed-pcie controller.
+
   dma-coherent: true
 
   mdio-bus:
@@ -123,6 +129,8 @@ allOf:
 
         mediatek,wed: false
 
+        mediatek,wed-pci: false
+
   - if:
       properties:
         compatible:
@@ -206,6 +214,45 @@ allOf:
 
         mediatek,wed: false
 
+        mediatek,wed-pci: false
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: mediatek,mt7981-eth
+    then:
+      properties:
+        interrupts:
+          minItems: 4
+
+        clocks:
+          minItems: 15
+          maxItems: 15
+
+        clock-names:
+          items:
+            - const: fe
+            - const: gp2
+            - const: gp1
+            - const: wocpu0
+            - const: sgmii_ck
+            - const: sgmii_tx250m
+            - const: sgmii_rx250m
+            - const: sgmii_cdr_ref
+            - const: sgmii_cdr_fb
+            - const: sgmii2_tx250m
+            - const: sgmii2_rx250m
+            - const: sgmii2_cdr_ref
+            - const: sgmii2_cdr_fb
+            - const: netsys0
+            - const: netsys1
+
+        mediatek,sgmiisys:
+          minItems: 2
+          maxItems: 2
+
+
   - if:
       properties:
         compatible:
@@ -242,11 +289,6 @@ allOf:
           minItems: 2
           maxItems: 2
 
-        mediatek,wed-pcie:
-          $ref: /schemas/types.yaml#/definitions/phandle
-          description:
-            Phandle to the mediatek wed-pcie controller.
-
 patternProperties:
   "^mac@[0-1]$":
     type: object
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH v8 03/12] dt-bindings: arm: mediatek: sgmiisys: Convert to DT schema
  2023-02-17 14:52 [PATCH v8 00/12] net: ethernet: mtk_eth_soc: various enhancements Daniel Golle
  2023-02-17 14:53 ` [PATCH v8 02/12] dt-bindings: net: mediatek,net: add mt7981-eth binding Daniel Golle
@ 2023-02-17 14:53 ` Daniel Golle
  2023-02-17 14:53 ` [PATCH v8 04/12] dt-bindings: arm: mediatek: sgmiisys: add MT7981 SoC Daniel Golle
  2 siblings, 0 replies; 4+ messages in thread
From: Daniel Golle @ 2023-02-17 14:53 UTC (permalink / raw)
  To: devicetree, Rob Herring, Krzysztof Kozlowski, netdev,
	linux-mediatek, linux-arm-kernel, linux-kernel, Russell King,
	Heiner Kallweit, Lorenzo Bianconi, Mark Lee, John Crispin,
	Felix Fietkau, AngeloGioacchino Del Regno, Matthias Brugger,
	DENG Qingfang, Landen Chao, Sean Wang, Paolo Abeni,
	Jakub Kicinski, Eric Dumazet, David S. Miller, Vladimir Oltean,
	Florian Fainelli, Andrew Lunn
  Cc: Jianhui Zhao, Bjørn Mork

Convert mediatek,sgmiiisys bindings to DT schema format.
Add maintainer Matthias Brugger, no maintainers were listed in the
original documentation.
As this node is also referenced by the Ethernet controller and used
as SGMII PCS add this fact to the description.
Move the file to Documentation/devicetree/bindings/pcs/ which seems more
appropriate given that the great majority of registers are related to
SGMII PCS functionality and only one register represents clock bits.

Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
---
 .../arm/mediatek/mediatek,sgmiisys.txt        | 27 ----------
 .../bindings/pcs/mediatek,sgmiisys.yaml       | 49 +++++++++++++++++++
 2 files changed, 49 insertions(+), 27 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/arm/mediatek/mediatek,sgmiisys.txt
 create mode 100644 Documentation/devicetree/bindings/pcs/mediatek,sgmiisys.yaml

diff --git a/Documentation/devicetree/bindings/arm/mediatek/mediatek,sgmiisys.txt b/Documentation/devicetree/bindings/arm/mediatek/mediatek,sgmiisys.txt
deleted file mode 100644
index d2c24c277514..000000000000
--- a/Documentation/devicetree/bindings/arm/mediatek/mediatek,sgmiisys.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-MediaTek SGMIISYS controller
-============================
-
-The MediaTek SGMIISYS controller provides various clocks to the system.
-
-Required Properties:
-
-- compatible: Should be:
-	- "mediatek,mt7622-sgmiisys", "syscon"
-	- "mediatek,mt7629-sgmiisys", "syscon"
-	- "mediatek,mt7981-sgmiisys_0", "syscon"
-	- "mediatek,mt7981-sgmiisys_1", "syscon"
-	- "mediatek,mt7986-sgmiisys_0", "syscon"
-	- "mediatek,mt7986-sgmiisys_1", "syscon"
-- #clock-cells: Must be 1
-
-The SGMIISYS controller uses the common clk binding from
-Documentation/devicetree/bindings/clock/clock-bindings.txt
-The available clocks are defined in dt-bindings/clock/mt*-clk.h.
-
-Example:
-
-sgmiisys: sgmiisys@1b128000 {
-	compatible = "mediatek,mt7622-sgmiisys", "syscon";
-	reg = <0 0x1b128000 0 0x1000>;
-	#clock-cells = <1>;
-};
diff --git a/Documentation/devicetree/bindings/pcs/mediatek,sgmiisys.yaml b/Documentation/devicetree/bindings/pcs/mediatek,sgmiisys.yaml
new file mode 100644
index 000000000000..7ed1577e7179
--- /dev/null
+++ b/Documentation/devicetree/bindings/pcs/mediatek,sgmiisys.yaml
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pcs/mediatek,sgmiisys.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: MediaTek SGMIISYS Controller
+
+maintainers:
+  - Matthias Brugger <matthias.bgg@gmail.com>
+
+description:
+  The MediaTek SGMIISYS controller provides a SGMII PCS and some clocks
+  to the ethernet subsystem to which it is attached.
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - mediatek,mt7622-sgmiisys
+          - mediatek,mt7629-sgmiisys
+          - mediatek,mt7986-sgmiisys_0
+          - mediatek,mt7986-sgmiisys_1
+      - const: syscon
+
+  reg:
+    maxItems: 1
+
+  '#clock-cells':
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - '#clock-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    soc {
+      #address-cells = <2>;
+      #size-cells = <2>;
+      sgmiisys: syscon@1b128000 {
+        compatible = "mediatek,mt7622-sgmiisys", "syscon";
+        reg = <0 0x1b128000 0 0x1000>;
+        #clock-cells = <1>;
+      };
+    };
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH v8 04/12] dt-bindings: arm: mediatek: sgmiisys: add MT7981 SoC
  2023-02-17 14:52 [PATCH v8 00/12] net: ethernet: mtk_eth_soc: various enhancements Daniel Golle
  2023-02-17 14:53 ` [PATCH v8 02/12] dt-bindings: net: mediatek,net: add mt7981-eth binding Daniel Golle
  2023-02-17 14:53 ` [PATCH v8 03/12] dt-bindings: arm: mediatek: sgmiisys: Convert to DT schema Daniel Golle
@ 2023-02-17 14:53 ` Daniel Golle
  2 siblings, 0 replies; 4+ messages in thread
From: Daniel Golle @ 2023-02-17 14:53 UTC (permalink / raw)
  To: devicetree, Rob Herring, Krzysztof Kozlowski, netdev,
	linux-mediatek, linux-arm-kernel, linux-kernel, Russell King,
	Heiner Kallweit, Lorenzo Bianconi, Mark Lee, John Crispin,
	Felix Fietkau, AngeloGioacchino Del Regno, Matthias Brugger,
	DENG Qingfang, Landen Chao, Sean Wang, Paolo Abeni,
	Jakub Kicinski, Eric Dumazet, David S. Miller, Vladimir Oltean,
	Florian Fainelli, Andrew Lunn
  Cc: Jianhui Zhao, Bjørn Mork

Add mediatek,pnswap boolean property needed on many boards using the
MediaTek MT7981 SoC.

Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
---
 .../devicetree/bindings/pcs/mediatek,sgmiisys.yaml          | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/Documentation/devicetree/bindings/pcs/mediatek,sgmiisys.yaml b/Documentation/devicetree/bindings/pcs/mediatek,sgmiisys.yaml
index 7ed1577e7179..68fbc1336254 100644
--- a/Documentation/devicetree/bindings/pcs/mediatek,sgmiisys.yaml
+++ b/Documentation/devicetree/bindings/pcs/mediatek,sgmiisys.yaml
@@ -19,6 +19,8 @@ properties:
       - enum:
           - mediatek,mt7622-sgmiisys
           - mediatek,mt7629-sgmiisys
+          - mediatek,mt7981-sgmiisys_0
+          - mediatek,mt7981-sgmiisys_1
           - mediatek,mt7986-sgmiisys_0
           - mediatek,mt7986-sgmiisys_1
       - const: syscon
@@ -29,6 +31,10 @@ properties:
   '#clock-cells':
     const: 1
 
+  mediatek,pnswap:
+    description: Invert polarity of the SGMII data lanes
+    type: boolean
+
 required:
   - compatible
   - reg
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2023-02-17 14:56 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-02-17 14:52 [PATCH v8 00/12] net: ethernet: mtk_eth_soc: various enhancements Daniel Golle
2023-02-17 14:53 ` [PATCH v8 02/12] dt-bindings: net: mediatek,net: add mt7981-eth binding Daniel Golle
2023-02-17 14:53 ` [PATCH v8 03/12] dt-bindings: arm: mediatek: sgmiisys: Convert to DT schema Daniel Golle
2023-02-17 14:53 ` [PATCH v8 04/12] dt-bindings: arm: mediatek: sgmiisys: add MT7981 SoC Daniel Golle

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).