lantiq: remove upstreamed patches from 6.12 kernel patchset
Remove upstreamed patches with version labels in their names. Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
This commit is contained in:
parent
c17b19f18e
commit
925f8492dd
16 changed files with 0 additions and 1206 deletions
|
@ -1,24 +0,0 @@
|
|||
From 1f803c95693f140bed46cd5581b97592e20b723e Mon Sep 17 00:00:00 2001
|
||||
From: Aleksander Jan Bajkowski <olek2@wp.pl>
|
||||
Date: Thu, 15 Aug 2024 09:49:56 +0200
|
||||
Subject: [PATCH] net: ethernet: lantiq_etop: remove unused variable
|
||||
|
||||
Remove a variable that has never been used.
|
||||
|
||||
Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
|
||||
Link: https://patch.msgid.link/20240815074956.155224-1-olek2@wp.pl
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/ethernet/lantiq_etop.c | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/ethernet/lantiq_etop.c
|
||||
+++ b/drivers/net/ethernet/lantiq_etop.c
|
||||
@@ -95,7 +95,6 @@ struct ltq_etop_priv {
|
||||
struct mii_bus *mii_bus;
|
||||
|
||||
struct ltq_etop_chan ch[MAX_DMA_CHAN];
|
||||
- int tx_free[MAX_DMA_CHAN >> 1];
|
||||
|
||||
int tx_burst_len;
|
||||
int rx_burst_len;
|
|
@ -1,31 +0,0 @@
|
|||
From 9283477e28913c1e7625c0a8d6959745e2431533 Mon Sep 17 00:00:00 2001
|
||||
From: Aleksander Jan Bajkowski <olek2@wp.pl>
|
||||
Date: Sat, 13 Jul 2024 19:09:20 +0200
|
||||
Subject: [PATCH] net: ethernet: lantiq_etop: remove redundant device name
|
||||
setup
|
||||
|
||||
The same name is set when allocating the netdevice structure in the
|
||||
alloc_etherdev_mq()->alloc_etherrdev_mqs() function. Therefore, there
|
||||
is no need to manually set it.
|
||||
|
||||
This fixes CheckPatch warnings:
|
||||
WARNING: Prefer strscpy over strcpy - see: https://github.com/KSPP/linux/issues/88
|
||||
strcpy(dev->name, "eth%d");
|
||||
|
||||
Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
|
||||
Link: https://patch.msgid.link/20240713170920.863171-1-olek2@wp.pl
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/ethernet/lantiq_etop.c | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/ethernet/lantiq_etop.c
|
||||
+++ b/drivers/net/ethernet/lantiq_etop.c
|
||||
@@ -676,7 +676,6 @@ ltq_etop_probe(struct platform_device *p
|
||||
err = -ENOMEM;
|
||||
goto err_out;
|
||||
}
|
||||
- strcpy(dev->name, "eth%d");
|
||||
dev->netdev_ops = <q_eth_netdev_ops;
|
||||
dev->ethtool_ops = <q_etop_ethtool_ops;
|
||||
priv = netdev_priv(dev);
|
|
@ -1,85 +0,0 @@
|
|||
From 5af43708d21c30e2f418cb25d337779c56d235f6 Mon Sep 17 00:00:00 2001
|
||||
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Date: Tue, 9 Jul 2024 00:20:54 +0200
|
||||
Subject: [PATCH] usb: dwc2: add support for other Lantiq SoCs
|
||||
|
||||
The size of the internal RAM of the DesignWare USB controller changed
|
||||
between the different Lantiq SoCs. We have the following sizes:
|
||||
|
||||
Amazon + Danube: 8 KByte
|
||||
Amazon SE + arx100: 2 KByte
|
||||
xrx200 + xrx300: 2.5 KByte
|
||||
|
||||
For Danube SoC we do not provide the params and let the driver decide
|
||||
to use sane defaults, for the Amazon SE and arx100 we use small fifos
|
||||
and for the xrx200 and xrx300 SCs a little bit bigger periodic fifo.
|
||||
The auto detection of max_transfer_size and max_packet_count should
|
||||
work, so remove it.
|
||||
|
||||
This patch is included in OpenWrt for many years.
|
||||
|
||||
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Acked-by: Minas Harutyunyan <hminas@synopsys.com>
|
||||
Link: https://lore.kernel.org/r/20240708222054.2727789-1-hauke@hauke-m.de
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/usb/dwc2/params.c | 30 +++++++++++++++++++++++++-----
|
||||
1 file changed, 25 insertions(+), 5 deletions(-)
|
||||
|
||||
--- a/drivers/usb/dwc2/params.c
|
||||
+++ b/drivers/usb/dwc2/params.c
|
||||
@@ -132,7 +132,15 @@ static void dwc2_set_rk_params(struct dw
|
||||
p->hird_threshold_en = false;
|
||||
}
|
||||
|
||||
-static void dwc2_set_ltq_params(struct dwc2_hsotg *hsotg)
|
||||
+static void dwc2_set_ltq_danube_params(struct dwc2_hsotg *hsotg)
|
||||
+{
|
||||
+ struct dwc2_core_params *p = &hsotg->params;
|
||||
+
|
||||
+ p->otg_caps.hnp_support = false;
|
||||
+ p->otg_caps.srp_support = false;
|
||||
+}
|
||||
+
|
||||
+static void dwc2_set_ltq_ase_params(struct dwc2_hsotg *hsotg)
|
||||
{
|
||||
struct dwc2_core_params *p = &hsotg->params;
|
||||
|
||||
@@ -141,12 +149,21 @@ static void dwc2_set_ltq_params(struct d
|
||||
p->host_rx_fifo_size = 288;
|
||||
p->host_nperio_tx_fifo_size = 128;
|
||||
p->host_perio_tx_fifo_size = 96;
|
||||
- p->max_transfer_size = 65535;
|
||||
- p->max_packet_count = 511;
|
||||
p->ahbcfg = GAHBCFG_HBSTLEN_INCR16 <<
|
||||
GAHBCFG_HBSTLEN_SHIFT;
|
||||
}
|
||||
|
||||
+static void dwc2_set_ltq_xrx200_params(struct dwc2_hsotg *hsotg)
|
||||
+{
|
||||
+ struct dwc2_core_params *p = &hsotg->params;
|
||||
+
|
||||
+ p->otg_caps.hnp_support = false;
|
||||
+ p->otg_caps.srp_support = false;
|
||||
+ p->host_rx_fifo_size = 288;
|
||||
+ p->host_nperio_tx_fifo_size = 128;
|
||||
+ p->host_perio_tx_fifo_size = 136;
|
||||
+}
|
||||
+
|
||||
static void dwc2_set_amlogic_params(struct dwc2_hsotg *hsotg)
|
||||
{
|
||||
struct dwc2_core_params *p = &hsotg->params;
|
||||
@@ -277,8 +294,11 @@ const struct of_device_id dwc2_of_match_
|
||||
{ .compatible = "ingenic,x1830-otg", .data = dwc2_set_x1600_params },
|
||||
{ .compatible = "ingenic,x2000-otg", .data = dwc2_set_x2000_params },
|
||||
{ .compatible = "rockchip,rk3066-usb", .data = dwc2_set_rk_params },
|
||||
- { .compatible = "lantiq,arx100-usb", .data = dwc2_set_ltq_params },
|
||||
- { .compatible = "lantiq,xrx200-usb", .data = dwc2_set_ltq_params },
|
||||
+ { .compatible = "lantiq,danube-usb", .data = &dwc2_set_ltq_danube_params },
|
||||
+ { .compatible = "lantiq,ase-usb", .data = &dwc2_set_ltq_ase_params },
|
||||
+ { .compatible = "lantiq,arx100-usb", .data = &dwc2_set_ltq_ase_params },
|
||||
+ { .compatible = "lantiq,xrx200-usb", .data = &dwc2_set_ltq_xrx200_params },
|
||||
+ { .compatible = "lantiq,xrx300-usb", .data = &dwc2_set_ltq_xrx200_params },
|
||||
{ .compatible = "snps,dwc2" },
|
||||
{ .compatible = "samsung,s3c6400-hsotg",
|
||||
.data = dwc2_set_s3c6400_params },
|
|
@ -1,51 +0,0 @@
|
|||
From 9c7a86c935074525f24cc20e78a7d5150e4600e3 Mon Sep 17 00:00:00 2001
|
||||
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Date: Tue, 9 Jul 2024 00:23:04 +0200
|
||||
Subject: [PATCH] MIPS: lantiq: improve USB initialization
|
||||
|
||||
This adds code to initialize the USB controller and PHY also on Danube,
|
||||
Amazon SE and AR10. This code is based on the Vendor driver from
|
||||
different UGW versions and compared to the hardware documentation.
|
||||
|
||||
This patch is included in OpenWrt for many years.
|
||||
|
||||
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
|
||||
---
|
||||
arch/mips/lantiq/xway/sysctrl.c | 20 ++++++++++++++++++++
|
||||
1 file changed, 20 insertions(+)
|
||||
|
||||
--- a/arch/mips/lantiq/xway/sysctrl.c
|
||||
+++ b/arch/mips/lantiq/xway/sysctrl.c
|
||||
@@ -247,6 +247,25 @@ static void pmu_disable(struct clk *clk)
|
||||
pr_warn("deactivating PMU module failed!");
|
||||
}
|
||||
|
||||
+static void usb_set_clock(void)
|
||||
+{
|
||||
+ unsigned int val = ltq_cgu_r32(ifccr);
|
||||
+
|
||||
+ if (of_machine_is_compatible("lantiq,ar10") ||
|
||||
+ of_machine_is_compatible("lantiq,grx390")) {
|
||||
+ val &= ~0x03; /* XTAL divided by 3 */
|
||||
+ } else if (of_machine_is_compatible("lantiq,ar9") ||
|
||||
+ of_machine_is_compatible("lantiq,vr9")) {
|
||||
+ /* TODO: this depends on the XTAL frequency */
|
||||
+ val |= 0x03; /* XTAL divided by 3 */
|
||||
+ } else if (of_machine_is_compatible("lantiq,ase")) {
|
||||
+ val |= 0x20; /* from XTAL */
|
||||
+ } else if (of_machine_is_compatible("lantiq,danube")) {
|
||||
+ val |= 0x30; /* 12 MHz, generated from 36 MHz */
|
||||
+ }
|
||||
+ ltq_cgu_w32(val, ifccr);
|
||||
+}
|
||||
+
|
||||
/* the pci enable helper */
|
||||
static int pci_enable(struct clk *clk)
|
||||
{
|
||||
@@ -588,4 +607,5 @@ void __init ltq_soc_init(void)
|
||||
clkdev_add_pmu("1e116000.mei", "dfe", 1, 0, PMU_DFE);
|
||||
clkdev_add_pmu("1e100400.serial", NULL, 1, 0, PMU_ASC0);
|
||||
}
|
||||
+ usb_set_clock();
|
||||
}
|
|
@ -1,392 +0,0 @@
|
|||
From c7f75954212b5e64f6b1f2375215b02fd79758ce Mon Sep 17 00:00:00 2001
|
||||
From: Martin Schiller <ms@dev.tdt.de>
|
||||
Date: Tue, 11 Jun 2024 15:54:23 +0200
|
||||
Subject: dt-bindings: net: dsa: lantiq,gswip: convert to YAML schema
|
||||
|
||||
Convert the lantiq,gswip bindings to YAML format.
|
||||
|
||||
Also add this new file to the MAINTAINERS file.
|
||||
|
||||
Furthermore, the CPU port has to specify a phy-mode and either a phy or
|
||||
a fixed-link. Since GSWIP is connected using a SoC internal protocol
|
||||
there's no PHY involved. Add phy-mode = "internal" and a fixed-link to
|
||||
the example code to describe the communication between the PMAC
|
||||
(Ethernet controller) and GSWIP switch.
|
||||
|
||||
Signed-off-by: Martin Schiller <ms@dev.tdt.de>
|
||||
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
|
||||
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20240611135434.3180973-2-ms@dev.tdt.de
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
.../devicetree/bindings/net/dsa/lantiq,gswip.yaml | 202 +++++++++++++++++++++
|
||||
.../devicetree/bindings/net/dsa/lantiq-gswip.txt | 146 ---------------
|
||||
MAINTAINERS | 1 +
|
||||
3 files changed, 203 insertions(+), 146 deletions(-)
|
||||
create mode 100644 Documentation/devicetree/bindings/net/dsa/lantiq,gswip.yaml
|
||||
delete mode 100644 Documentation/devicetree/bindings/net/dsa/lantiq-gswip.txt
|
||||
|
||||
--- /dev/null
|
||||
+++ b/Documentation/devicetree/bindings/net/dsa/lantiq,gswip.yaml
|
||||
@@ -0,0 +1,202 @@
|
||||
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
+%YAML 1.2
|
||||
+---
|
||||
+$id: http://devicetree.org/schemas/net/dsa/lantiq,gswip.yaml#
|
||||
+$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
+
|
||||
+title: Lantiq GSWIP Ethernet switches
|
||||
+
|
||||
+allOf:
|
||||
+ - $ref: dsa.yaml#/$defs/ethernet-ports
|
||||
+
|
||||
+maintainers:
|
||||
+ - Hauke Mehrtens <hauke@hauke-m.de>
|
||||
+
|
||||
+properties:
|
||||
+ compatible:
|
||||
+ enum:
|
||||
+ - lantiq,xrx200-gswip
|
||||
+ - lantiq,xrx300-gswip
|
||||
+ - lantiq,xrx330-gswip
|
||||
+
|
||||
+ reg:
|
||||
+ minItems: 3
|
||||
+ maxItems: 3
|
||||
+
|
||||
+ reg-names:
|
||||
+ items:
|
||||
+ - const: switch
|
||||
+ - const: mdio
|
||||
+ - const: mii
|
||||
+
|
||||
+ mdio:
|
||||
+ $ref: /schemas/net/mdio.yaml#
|
||||
+ unevaluatedProperties: false
|
||||
+
|
||||
+ properties:
|
||||
+ compatible:
|
||||
+ const: lantiq,xrx200-mdio
|
||||
+
|
||||
+ required:
|
||||
+ - compatible
|
||||
+
|
||||
+ gphy-fw:
|
||||
+ type: object
|
||||
+ properties:
|
||||
+ '#address-cells':
|
||||
+ const: 1
|
||||
+
|
||||
+ '#size-cells':
|
||||
+ const: 0
|
||||
+
|
||||
+ compatible:
|
||||
+ items:
|
||||
+ - enum:
|
||||
+ - lantiq,xrx200-gphy-fw
|
||||
+ - lantiq,xrx300-gphy-fw
|
||||
+ - lantiq,xrx330-gphy-fw
|
||||
+ - const: lantiq,gphy-fw
|
||||
+
|
||||
+ lantiq,rcu:
|
||||
+ $ref: /schemas/types.yaml#/definitions/phandle
|
||||
+ description: phandle to the RCU syscon
|
||||
+
|
||||
+ patternProperties:
|
||||
+ "^gphy@[0-9a-f]{1,2}$":
|
||||
+ type: object
|
||||
+
|
||||
+ additionalProperties: false
|
||||
+
|
||||
+ properties:
|
||||
+ reg:
|
||||
+ minimum: 0
|
||||
+ maximum: 255
|
||||
+ description:
|
||||
+ Offset of the GPHY firmware register in the RCU register range
|
||||
+
|
||||
+ resets:
|
||||
+ items:
|
||||
+ - description: GPHY reset line
|
||||
+
|
||||
+ reset-names:
|
||||
+ items:
|
||||
+ - const: gphy
|
||||
+
|
||||
+ required:
|
||||
+ - reg
|
||||
+
|
||||
+ required:
|
||||
+ - compatible
|
||||
+ - lantiq,rcu
|
||||
+
|
||||
+ additionalProperties: false
|
||||
+
|
||||
+required:
|
||||
+ - compatible
|
||||
+ - reg
|
||||
+
|
||||
+unevaluatedProperties: false
|
||||
+
|
||||
+examples:
|
||||
+ - |
|
||||
+ switch@e108000 {
|
||||
+ compatible = "lantiq,xrx200-gswip";
|
||||
+ reg = <0xe108000 0x3100>, /* switch */
|
||||
+ <0xe10b100 0xd8>, /* mdio */
|
||||
+ <0xe10b1d8 0x130>; /* mii */
|
||||
+ dsa,member = <0 0>;
|
||||
+
|
||||
+ ports {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "lan3";
|
||||
+ phy-mode = "rgmii";
|
||||
+ phy-handle = <&phy0>;
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan4";
|
||||
+ phy-mode = "rgmii";
|
||||
+ phy-handle = <&phy1>;
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan2";
|
||||
+ phy-mode = "internal";
|
||||
+ phy-handle = <&phy11>;
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "lan1";
|
||||
+ phy-mode = "internal";
|
||||
+ phy-handle = <&phy13>;
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "wan";
|
||||
+ phy-mode = "rgmii";
|
||||
+ phy-handle = <&phy5>;
|
||||
+ };
|
||||
+
|
||||
+ port@6 {
|
||||
+ reg = <0x6>;
|
||||
+ phy-mode = "internal";
|
||||
+ ethernet = <ð0>;
|
||||
+
|
||||
+ fixed-link {
|
||||
+ speed = <1000>;
|
||||
+ full-duplex;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ mdio {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ compatible = "lantiq,xrx200-mdio";
|
||||
+
|
||||
+ phy0: ethernet-phy@0 {
|
||||
+ reg = <0x0>;
|
||||
+ };
|
||||
+ phy1: ethernet-phy@1 {
|
||||
+ reg = <0x1>;
|
||||
+ };
|
||||
+ phy5: ethernet-phy@5 {
|
||||
+ reg = <0x5>;
|
||||
+ };
|
||||
+ phy11: ethernet-phy@11 {
|
||||
+ reg = <0x11>;
|
||||
+ };
|
||||
+ phy13: ethernet-phy@13 {
|
||||
+ reg = <0x13>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ gphy-fw {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ compatible = "lantiq,xrx200-gphy-fw", "lantiq,gphy-fw";
|
||||
+ lantiq,rcu = <&rcu0>;
|
||||
+
|
||||
+ gphy@20 {
|
||||
+ reg = <0x20>;
|
||||
+
|
||||
+ resets = <&reset0 31 30>;
|
||||
+ reset-names = "gphy";
|
||||
+ };
|
||||
+
|
||||
+ gphy@68 {
|
||||
+ reg = <0x68>;
|
||||
+
|
||||
+ resets = <&reset0 29 28>;
|
||||
+ reset-names = "gphy";
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
--- a/Documentation/devicetree/bindings/net/dsa/lantiq-gswip.txt
|
||||
+++ /dev/null
|
||||
@@ -1,146 +0,0 @@
|
||||
-Lantiq GSWIP Ethernet switches
|
||||
-==================================
|
||||
-
|
||||
-Required properties for GSWIP core:
|
||||
-
|
||||
-- compatible : "lantiq,xrx200-gswip" for the embedded GSWIP in the
|
||||
- xRX200 SoC
|
||||
- "lantiq,xrx300-gswip" for the embedded GSWIP in the
|
||||
- xRX300 SoC
|
||||
- "lantiq,xrx330-gswip" for the embedded GSWIP in the
|
||||
- xRX330 SoC
|
||||
-- reg : memory range of the GSWIP core registers
|
||||
- : memory range of the GSWIP MDIO registers
|
||||
- : memory range of the GSWIP MII registers
|
||||
-
|
||||
-See Documentation/devicetree/bindings/net/dsa/dsa.txt for a list of
|
||||
-additional required and optional properties.
|
||||
-
|
||||
-
|
||||
-Required properties for MDIO bus:
|
||||
-- compatible : "lantiq,xrx200-mdio" for the MDIO bus inside the GSWIP
|
||||
- core of the xRX200 SoC and the PHYs connected to it.
|
||||
-
|
||||
-See Documentation/devicetree/bindings/net/mdio.txt for a list of additional
|
||||
-required and optional properties.
|
||||
-
|
||||
-
|
||||
-Required properties for GPHY firmware loading:
|
||||
-- compatible : "lantiq,xrx200-gphy-fw", "lantiq,gphy-fw"
|
||||
- "lantiq,xrx300-gphy-fw", "lantiq,gphy-fw"
|
||||
- "lantiq,xrx330-gphy-fw", "lantiq,gphy-fw"
|
||||
- for the loading of the firmware into the embedded
|
||||
- GPHY core of the SoC.
|
||||
-- lantiq,rcu : reference to the rcu syscon
|
||||
-
|
||||
-The GPHY firmware loader has a list of GPHY entries, one for each
|
||||
-embedded GPHY
|
||||
-
|
||||
-- reg : Offset of the GPHY firmware register in the RCU
|
||||
- register range
|
||||
-- resets : list of resets of the embedded GPHY
|
||||
-- reset-names : list of names of the resets
|
||||
-
|
||||
-Example:
|
||||
-
|
||||
-Ethernet switch on the VRX200 SoC:
|
||||
-
|
||||
-switch@e108000 {
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
- compatible = "lantiq,xrx200-gswip";
|
||||
- reg = < 0xe108000 0x3100 /* switch */
|
||||
- 0xe10b100 0xd8 /* mdio */
|
||||
- 0xe10b1d8 0x130 /* mii */
|
||||
- >;
|
||||
- dsa,member = <0 0>;
|
||||
-
|
||||
- ports {
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
-
|
||||
- port@0 {
|
||||
- reg = <0>;
|
||||
- label = "lan3";
|
||||
- phy-mode = "rgmii";
|
||||
- phy-handle = <&phy0>;
|
||||
- };
|
||||
-
|
||||
- port@1 {
|
||||
- reg = <1>;
|
||||
- label = "lan4";
|
||||
- phy-mode = "rgmii";
|
||||
- phy-handle = <&phy1>;
|
||||
- };
|
||||
-
|
||||
- port@2 {
|
||||
- reg = <2>;
|
||||
- label = "lan2";
|
||||
- phy-mode = "internal";
|
||||
- phy-handle = <&phy11>;
|
||||
- };
|
||||
-
|
||||
- port@4 {
|
||||
- reg = <4>;
|
||||
- label = "lan1";
|
||||
- phy-mode = "internal";
|
||||
- phy-handle = <&phy13>;
|
||||
- };
|
||||
-
|
||||
- port@5 {
|
||||
- reg = <5>;
|
||||
- label = "wan";
|
||||
- phy-mode = "rgmii";
|
||||
- phy-handle = <&phy5>;
|
||||
- };
|
||||
-
|
||||
- port@6 {
|
||||
- reg = <0x6>;
|
||||
- ethernet = <ð0>;
|
||||
- };
|
||||
- };
|
||||
-
|
||||
- mdio {
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
- compatible = "lantiq,xrx200-mdio";
|
||||
- reg = <0>;
|
||||
-
|
||||
- phy0: ethernet-phy@0 {
|
||||
- reg = <0x0>;
|
||||
- };
|
||||
- phy1: ethernet-phy@1 {
|
||||
- reg = <0x1>;
|
||||
- };
|
||||
- phy5: ethernet-phy@5 {
|
||||
- reg = <0x5>;
|
||||
- };
|
||||
- phy11: ethernet-phy@11 {
|
||||
- reg = <0x11>;
|
||||
- };
|
||||
- phy13: ethernet-phy@13 {
|
||||
- reg = <0x13>;
|
||||
- };
|
||||
- };
|
||||
-
|
||||
- gphy-fw {
|
||||
- compatible = "lantiq,xrx200-gphy-fw", "lantiq,gphy-fw";
|
||||
- lantiq,rcu = <&rcu0>;
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
-
|
||||
- gphy@20 {
|
||||
- reg = <0x20>;
|
||||
-
|
||||
- resets = <&reset0 31 30>;
|
||||
- reset-names = "gphy";
|
||||
- };
|
||||
-
|
||||
- gphy@68 {
|
||||
- reg = <0x68>;
|
||||
-
|
||||
- resets = <&reset0 29 28>;
|
||||
- reset-names = "gphy";
|
||||
- };
|
||||
- };
|
||||
-};
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -11864,6 +11864,7 @@ LANTIQ / INTEL Ethernet drivers
|
||||
M: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
+F: Documentation/devicetree/bindings/net/dsa/lantiq,gswip.yaml
|
||||
F: drivers/net/dsa/lantiq_gswip.c
|
||||
F: drivers/net/dsa/lantiq_pce.h
|
||||
F: drivers/net/ethernet/lantiq_xrx200.c
|
|
@ -1,38 +0,0 @@
|
|||
From b98f122ebdac28b0c932f3f4474eb0927c39297b Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Tue, 11 Jun 2024 15:54:24 +0200
|
||||
Subject: net: dsa: lantiq_gswip: Only allow phy-mode = "internal" on the CPU
|
||||
port
|
||||
|
||||
Add the CPU port to gswip_xrx200_phylink_get_caps() and
|
||||
gswip_xrx300_phylink_get_caps(). It connects through a SoC-internal bus,
|
||||
so the only allowed phy-mode is PHY_INTERFACE_MODE_INTERNAL.
|
||||
|
||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
|
||||
Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Signed-off-by: Martin Schiller <ms@dev.tdt.de>
|
||||
Link: https://lore.kernel.org/r/20240611135434.3180973-3-ms@dev.tdt.de
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/dsa/lantiq_gswip.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
--- a/drivers/net/dsa/lantiq_gswip.c
|
||||
+++ b/drivers/net/dsa/lantiq_gswip.c
|
||||
@@ -1509,6 +1509,7 @@ static void gswip_xrx200_phylink_get_cap
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
+ case 6:
|
||||
__set_bit(PHY_INTERFACE_MODE_INTERNAL,
|
||||
config->supported_interfaces);
|
||||
break;
|
||||
@@ -1540,6 +1541,7 @@ static void gswip_xrx300_phylink_get_cap
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
+ case 6:
|
||||
__set_bit(PHY_INTERFACE_MODE_INTERNAL,
|
||||
config->supported_interfaces);
|
||||
break;
|
|
@ -1,82 +0,0 @@
|
|||
From dd6d364e1895211df8a8fe02c2a5a0b2a7049957 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Schiller <ms@dev.tdt.de>
|
||||
Date: Tue, 11 Jun 2024 15:54:25 +0200
|
||||
Subject: net: dsa: lantiq_gswip: add terminating \n where missing
|
||||
|
||||
Some dev_err are missing the terminating \n. Let's add that.
|
||||
|
||||
Suggested-by: Vladimir Oltean <olteanv@gmail.com>
|
||||
Signed-off-by: Martin Schiller <ms@dev.tdt.de>
|
||||
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
||||
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20240611135434.3180973-4-ms@dev.tdt.de
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/dsa/lantiq_gswip.c | 14 +++++++-------
|
||||
1 file changed, 7 insertions(+), 7 deletions(-)
|
||||
|
||||
--- a/drivers/net/dsa/lantiq_gswip.c
|
||||
+++ b/drivers/net/dsa/lantiq_gswip.c
|
||||
@@ -829,7 +829,7 @@ static int gswip_setup(struct dsa_switch
|
||||
|
||||
err = gswip_pce_load_microcode(priv);
|
||||
if (err) {
|
||||
- dev_err(priv->dev, "writing PCE microcode failed, %i", err);
|
||||
+ dev_err(priv->dev, "writing PCE microcode failed, %i\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -1780,7 +1780,7 @@ static u32 gswip_bcm_ram_entry_read(stru
|
||||
err = gswip_switch_r_timeout(priv, GSWIP_BM_RAM_CTRL,
|
||||
GSWIP_BM_RAM_CTRL_BAS);
|
||||
if (err) {
|
||||
- dev_err(priv->dev, "timeout while reading table: %u, index: %u",
|
||||
+ dev_err(priv->dev, "timeout while reading table: %u, index: %u\n",
|
||||
table, index);
|
||||
return 0;
|
||||
}
|
||||
@@ -2009,7 +2009,7 @@ static void gswip_gphy_fw_remove(struct
|
||||
|
||||
ret = regmap_write(priv->rcu_regmap, gphy_fw->fw_addr_offset, 0);
|
||||
if (ret)
|
||||
- dev_err(priv->dev, "can not reset GPHY FW pointer");
|
||||
+ dev_err(priv->dev, "can not reset GPHY FW pointer\n");
|
||||
|
||||
clk_disable_unprepare(gphy_fw->clk_gate);
|
||||
|
||||
@@ -2038,7 +2038,7 @@ static int gswip_gphy_fw_list(struct gsw
|
||||
priv->gphy_fw_name_cfg = &xrx200a2x_gphy_data;
|
||||
break;
|
||||
default:
|
||||
- dev_err(dev, "unknown GSWIP version: 0x%x", version);
|
||||
+ dev_err(dev, "unknown GSWIP version: 0x%x\n", version);
|
||||
return -ENOENT;
|
||||
}
|
||||
}
|
||||
@@ -2048,7 +2048,7 @@ static int gswip_gphy_fw_list(struct gsw
|
||||
priv->gphy_fw_name_cfg = match->data;
|
||||
|
||||
if (!priv->gphy_fw_name_cfg) {
|
||||
- dev_err(dev, "GPHY compatible type not supported");
|
||||
+ dev_err(dev, "GPHY compatible type not supported\n");
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
@@ -2150,7 +2150,7 @@ static int gswip_probe(struct platform_d
|
||||
return -EINVAL;
|
||||
break;
|
||||
default:
|
||||
- dev_err(dev, "unknown GSWIP version: 0x%x", version);
|
||||
+ dev_err(dev, "unknown GSWIP version: 0x%x\n", version);
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
@@ -2181,7 +2181,7 @@ static int gswip_probe(struct platform_d
|
||||
goto mdio_bus;
|
||||
}
|
||||
if (!dsa_is_cpu_port(priv->ds, priv->hw_info->cpu_port)) {
|
||||
- dev_err(dev, "wrong CPU port defined, HW only supports port: %i",
|
||||
+ dev_err(dev, "wrong CPU port defined, HW only supports port: %i\n",
|
||||
priv->hw_info->cpu_port);
|
||||
err = -EINVAL;
|
||||
goto disable_switch;
|
|
@ -1,149 +0,0 @@
|
|||
From 1763b155da022ac0f984463e68cb0cda8ffc1fe8 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Tue, 11 Jun 2024 15:54:26 +0200
|
||||
Subject: net: dsa: lantiq_gswip: Use dev_err_probe where appropriate
|
||||
|
||||
dev_err_probe() can be used to simplify the existing code. Also it means
|
||||
we get rid of the following warning which is seen whenever the PMAC
|
||||
(Ethernet controller which connects to GSWIP's CPU port) has not been
|
||||
probed yet:
|
||||
gswip 1e108000.switch: dsa switch register failed: -517
|
||||
|
||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
|
||||
Signed-off-by: Martin Schiller <ms@dev.tdt.de>
|
||||
Link: https://lore.kernel.org/r/20240611135434.3180973-5-ms@dev.tdt.de
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/dsa/lantiq_gswip.c | 53 ++++++++++++++++++++----------------------
|
||||
1 file changed, 25 insertions(+), 28 deletions(-)
|
||||
|
||||
--- a/drivers/net/dsa/lantiq_gswip.c
|
||||
+++ b/drivers/net/dsa/lantiq_gswip.c
|
||||
@@ -1919,11 +1919,9 @@ static int gswip_gphy_fw_load(struct gsw
|
||||
msleep(200);
|
||||
|
||||
ret = request_firmware(&fw, gphy_fw->fw_name, dev);
|
||||
- if (ret) {
|
||||
- dev_err(dev, "failed to load firmware: %s, error: %i\n",
|
||||
- gphy_fw->fw_name, ret);
|
||||
- return ret;
|
||||
- }
|
||||
+ if (ret)
|
||||
+ return dev_err_probe(dev, ret, "failed to load firmware: %s\n",
|
||||
+ gphy_fw->fw_name);
|
||||
|
||||
/* GPHY cores need the firmware code in a persistent and contiguous
|
||||
* memory area with a 16 kB boundary aligned start address.
|
||||
@@ -1936,9 +1934,9 @@ static int gswip_gphy_fw_load(struct gsw
|
||||
dev_addr = ALIGN(dma_addr, XRX200_GPHY_FW_ALIGN);
|
||||
memcpy(fw_addr, fw->data, fw->size);
|
||||
} else {
|
||||
- dev_err(dev, "failed to alloc firmware memory\n");
|
||||
release_firmware(fw);
|
||||
- return -ENOMEM;
|
||||
+ return dev_err_probe(dev, -ENOMEM,
|
||||
+ "failed to alloc firmware memory\n");
|
||||
}
|
||||
|
||||
release_firmware(fw);
|
||||
@@ -1965,8 +1963,8 @@ static int gswip_gphy_fw_probe(struct gs
|
||||
|
||||
gphy_fw->clk_gate = devm_clk_get(dev, gphyname);
|
||||
if (IS_ERR(gphy_fw->clk_gate)) {
|
||||
- dev_err(dev, "Failed to lookup gate clock\n");
|
||||
- return PTR_ERR(gphy_fw->clk_gate);
|
||||
+ return dev_err_probe(dev, PTR_ERR(gphy_fw->clk_gate),
|
||||
+ "Failed to lookup gate clock\n");
|
||||
}
|
||||
|
||||
ret = of_property_read_u32(gphy_fw_np, "reg", &gphy_fw->fw_addr_offset);
|
||||
@@ -1986,8 +1984,8 @@ static int gswip_gphy_fw_probe(struct gs
|
||||
gphy_fw->fw_name = priv->gphy_fw_name_cfg->ge_firmware_name;
|
||||
break;
|
||||
default:
|
||||
- dev_err(dev, "Unknown GPHY mode %d\n", gphy_mode);
|
||||
- return -EINVAL;
|
||||
+ return dev_err_probe(dev, -EINVAL, "Unknown GPHY mode %d\n",
|
||||
+ gphy_mode);
|
||||
}
|
||||
|
||||
gphy_fw->reset = of_reset_control_array_get_exclusive(gphy_fw_np);
|
||||
@@ -2038,8 +2036,9 @@ static int gswip_gphy_fw_list(struct gsw
|
||||
priv->gphy_fw_name_cfg = &xrx200a2x_gphy_data;
|
||||
break;
|
||||
default:
|
||||
- dev_err(dev, "unknown GSWIP version: 0x%x\n", version);
|
||||
- return -ENOENT;
|
||||
+ return dev_err_probe(dev, -ENOENT,
|
||||
+ "unknown GSWIP version: 0x%x\n",
|
||||
+ version);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2047,10 +2046,9 @@ static int gswip_gphy_fw_list(struct gsw
|
||||
if (match && match->data)
|
||||
priv->gphy_fw_name_cfg = match->data;
|
||||
|
||||
- if (!priv->gphy_fw_name_cfg) {
|
||||
- dev_err(dev, "GPHY compatible type not supported\n");
|
||||
- return -ENOENT;
|
||||
- }
|
||||
+ if (!priv->gphy_fw_name_cfg)
|
||||
+ return dev_err_probe(dev, -ENOENT,
|
||||
+ "GPHY compatible type not supported\n");
|
||||
|
||||
priv->num_gphy_fw = of_get_available_child_count(gphy_fw_list_np);
|
||||
if (!priv->num_gphy_fw)
|
||||
@@ -2150,8 +2148,8 @@ static int gswip_probe(struct platform_d
|
||||
return -EINVAL;
|
||||
break;
|
||||
default:
|
||||
- dev_err(dev, "unknown GSWIP version: 0x%x\n", version);
|
||||
- return -ENOENT;
|
||||
+ return dev_err_probe(dev, -ENOENT,
|
||||
+ "unknown GSWIP version: 0x%x\n", version);
|
||||
}
|
||||
|
||||
/* bring up the mdio bus */
|
||||
@@ -2159,10 +2157,9 @@ static int gswip_probe(struct platform_d
|
||||
if (gphy_fw_np) {
|
||||
err = gswip_gphy_fw_list(priv, gphy_fw_np, version);
|
||||
of_node_put(gphy_fw_np);
|
||||
- if (err) {
|
||||
- dev_err(dev, "gphy fw probe failed\n");
|
||||
- return err;
|
||||
- }
|
||||
+ if (err)
|
||||
+ return dev_err_probe(dev, err,
|
||||
+ "gphy fw probe failed\n");
|
||||
}
|
||||
|
||||
/* bring up the mdio bus */
|
||||
@@ -2170,20 +2167,20 @@ static int gswip_probe(struct platform_d
|
||||
if (mdio_np) {
|
||||
err = gswip_mdio(priv, mdio_np);
|
||||
if (err) {
|
||||
- dev_err(dev, "mdio probe failed\n");
|
||||
+ dev_err_probe(dev, err, "mdio probe failed\n");
|
||||
goto put_mdio_node;
|
||||
}
|
||||
}
|
||||
|
||||
err = dsa_register_switch(priv->ds);
|
||||
if (err) {
|
||||
- dev_err(dev, "dsa switch register failed: %i\n", err);
|
||||
+ dev_err_probe(dev, err, "dsa switch registration failed\n");
|
||||
goto mdio_bus;
|
||||
}
|
||||
if (!dsa_is_cpu_port(priv->ds, priv->hw_info->cpu_port)) {
|
||||
- dev_err(dev, "wrong CPU port defined, HW only supports port: %i\n",
|
||||
- priv->hw_info->cpu_port);
|
||||
- err = -EINVAL;
|
||||
+ err = dev_err_probe(dev, -EINVAL,
|
||||
+ "wrong CPU port defined, HW only supports port: %i\n",
|
||||
+ priv->hw_info->cpu_port);
|
||||
goto disable_switch;
|
||||
}
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
From f5ebf9ab60940b00c36dfe64add41c80f3daff6a Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Tue, 11 Jun 2024 15:54:27 +0200
|
||||
Subject: net: dsa: lantiq_gswip: Don't manually call gswip_port_enable()
|
||||
|
||||
We don't need to manually call gswip_port_enable() from within
|
||||
gswip_setup() for the CPU port. DSA does this automatically for us.
|
||||
|
||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
|
||||
Signed-off-by: Martin Schiller <ms@dev.tdt.de>
|
||||
Link: https://lore.kernel.org/r/20240611135434.3180973-6-ms@dev.tdt.de
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/dsa/lantiq_gswip.c | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
--- a/drivers/net/dsa/lantiq_gswip.c
|
||||
+++ b/drivers/net/dsa/lantiq_gswip.c
|
||||
@@ -891,8 +891,6 @@ static int gswip_setup(struct dsa_switch
|
||||
|
||||
ds->mtu_enforcement_ingress = true;
|
||||
|
||||
- gswip_port_enable(ds, cpu_port, NULL);
|
||||
-
|
||||
ds->configure_vlan_while_not_filtering = false;
|
||||
|
||||
return 0;
|
|
@ -1,73 +0,0 @@
|
|||
From 86b9ea6412af41914ef6549f85a849c3b987f4f3 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Schiller <ms@dev.tdt.de>
|
||||
Date: Tue, 11 Jun 2024 15:54:28 +0200
|
||||
Subject: net: dsa: lantiq_gswip: do also enable or disable cpu port
|
||||
|
||||
Before commit 74be4babe72f ("net: dsa: do not enable or disable non user
|
||||
ports"), gswip_port_enable/disable() were also executed for the cpu port
|
||||
in gswip_setup() which disabled the cpu port during initialization.
|
||||
|
||||
Let's restore this by removing the dsa_is_user_port checks. Also, let's
|
||||
clean up the gswip_port_enable() function so that we only have to check
|
||||
for the cpu port once. The operation reordering done here is safe.
|
||||
|
||||
Signed-off-by: Martin Schiller <ms@dev.tdt.de>
|
||||
Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20240611135434.3180973-7-ms@dev.tdt.de
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/dsa/lantiq_gswip.c | 24 ++++++++----------------
|
||||
1 file changed, 8 insertions(+), 16 deletions(-)
|
||||
|
||||
--- a/drivers/net/dsa/lantiq_gswip.c
|
||||
+++ b/drivers/net/dsa/lantiq_gswip.c
|
||||
@@ -688,13 +688,18 @@ static int gswip_port_enable(struct dsa_
|
||||
struct gswip_priv *priv = ds->priv;
|
||||
int err;
|
||||
|
||||
- if (!dsa_is_user_port(ds, port))
|
||||
- return 0;
|
||||
-
|
||||
if (!dsa_is_cpu_port(ds, port)) {
|
||||
+ u32 mdio_phy = 0;
|
||||
+
|
||||
err = gswip_add_single_port_br(priv, port, true);
|
||||
if (err)
|
||||
return err;
|
||||
+
|
||||
+ if (phydev)
|
||||
+ mdio_phy = phydev->mdio.addr & GSWIP_MDIO_PHY_ADDR_MASK;
|
||||
+
|
||||
+ gswip_mdio_mask(priv, GSWIP_MDIO_PHY_ADDR_MASK, mdio_phy,
|
||||
+ GSWIP_MDIO_PHYp(port));
|
||||
}
|
||||
|
||||
/* RMON Counter Enable for port */
|
||||
@@ -707,16 +712,6 @@ static int gswip_port_enable(struct dsa_
|
||||
gswip_switch_mask(priv, 0, GSWIP_SDMA_PCTRL_EN,
|
||||
GSWIP_SDMA_PCTRLp(port));
|
||||
|
||||
- if (!dsa_is_cpu_port(ds, port)) {
|
||||
- u32 mdio_phy = 0;
|
||||
-
|
||||
- if (phydev)
|
||||
- mdio_phy = phydev->mdio.addr & GSWIP_MDIO_PHY_ADDR_MASK;
|
||||
-
|
||||
- gswip_mdio_mask(priv, GSWIP_MDIO_PHY_ADDR_MASK, mdio_phy,
|
||||
- GSWIP_MDIO_PHYp(port));
|
||||
- }
|
||||
-
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -724,9 +719,6 @@ static void gswip_port_disable(struct ds
|
||||
{
|
||||
struct gswip_priv *priv = ds->priv;
|
||||
|
||||
- if (!dsa_is_user_port(ds, port))
|
||||
- return;
|
||||
-
|
||||
gswip_switch_mask(priv, GSWIP_FDMA_PCTRL_EN, 0,
|
||||
GSWIP_FDMA_PCTRLp(port));
|
||||
gswip_switch_mask(priv, GSWIP_SDMA_PCTRL_EN, 0,
|
|
@ -1,35 +0,0 @@
|
|||
From 7168ec1b06691295db6b335e5f5f6c86c7061213 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Tue, 11 Jun 2024 15:54:29 +0200
|
||||
Subject: net: dsa: lantiq_gswip: Use dsa_is_cpu_port() in
|
||||
gswip_port_change_mtu()
|
||||
|
||||
Make the check for the CPU port in gswip_port_change_mtu() consistent
|
||||
with other areas of the driver by using dsa_is_cpu_port().
|
||||
|
||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
|
||||
Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Signed-off-by: Martin Schiller <ms@dev.tdt.de>
|
||||
Link: https://lore.kernel.org/r/20240611135434.3180973-8-ms@dev.tdt.de
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/dsa/lantiq_gswip.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/net/dsa/lantiq_gswip.c
|
||||
+++ b/drivers/net/dsa/lantiq_gswip.c
|
||||
@@ -1457,12 +1457,11 @@ static int gswip_port_max_mtu(struct dsa
|
||||
static int gswip_port_change_mtu(struct dsa_switch *ds, int port, int new_mtu)
|
||||
{
|
||||
struct gswip_priv *priv = ds->priv;
|
||||
- int cpu_port = priv->hw_info->cpu_port;
|
||||
|
||||
/* CPU port always has maximum mtu of user ports, so use it to set
|
||||
* switch frame size, including 8 byte special header.
|
||||
*/
|
||||
- if (port == cpu_port) {
|
||||
+ if (dsa_is_cpu_port(ds, port)) {
|
||||
new_mtu += 8;
|
||||
gswip_switch_w(priv, VLAN_ETH_HLEN + new_mtu + ETH_FCS_LEN,
|
||||
GSWIP_MAC_FLEN);
|
|
@ -1,29 +0,0 @@
|
|||
From c927b6e47b5cc7324217bf5fe7e6ccd0633971a0 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Tue, 11 Jun 2024 15:54:30 +0200
|
||||
Subject: net: dsa: lantiq_gswip: Change literal 6 to ETH_ALEN
|
||||
|
||||
The addr variable in gswip_port_fdb_dump() stores a mac address. Use
|
||||
ETH_ALEN to make this consistent across other drivers.
|
||||
|
||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
|
||||
Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Signed-off-by: Martin Schiller <ms@dev.tdt.de>
|
||||
Link: https://lore.kernel.org/r/20240611135434.3180973-9-ms@dev.tdt.de
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/dsa/lantiq_gswip.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/dsa/lantiq_gswip.c
|
||||
+++ b/drivers/net/dsa/lantiq_gswip.c
|
||||
@@ -1406,7 +1406,7 @@ static int gswip_port_fdb_dump(struct ds
|
||||
{
|
||||
struct gswip_priv *priv = ds->priv;
|
||||
struct gswip_pce_table_entry mac_bridge = {0,};
|
||||
- unsigned char addr[6];
|
||||
+ unsigned char addr[ETH_ALEN];
|
||||
int i;
|
||||
int err;
|
||||
|
|
@ -1,82 +0,0 @@
|
|||
From e6c34597f89ac98c06176eed57f125252015a330 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Tue, 11 Jun 2024 15:54:31 +0200
|
||||
Subject: net: dsa: lantiq_gswip: Consistently use macros for the mac bridge
|
||||
table
|
||||
|
||||
Only bits [5:0] in mac_bridge.key[3] are reserved for the FID.
|
||||
Also, for dynamic (learned) entries, bits [7:4] in mac_bridge.val[0]
|
||||
represents the port.
|
||||
|
||||
Introduce new macros GSWIP_TABLE_MAC_BRIDGE_KEY3_FID and
|
||||
GSWIP_TABLE_MAC_BRIDGE_VAL0_PORT macro and use it throughout the driver.
|
||||
Also rename and update GSWIP_TABLE_MAC_BRIDGE_VAL1_STATIC to use the
|
||||
BIT() macro. This makes the driver code easier to understand.
|
||||
|
||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Signed-off-by: Martin Schiller <ms@dev.tdt.de>
|
||||
Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20240611135434.3180973-10-ms@dev.tdt.de
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/dsa/lantiq_gswip.c | 18 +++++++++++-------
|
||||
1 file changed, 11 insertions(+), 7 deletions(-)
|
||||
|
||||
--- a/drivers/net/dsa/lantiq_gswip.c
|
||||
+++ b/drivers/net/dsa/lantiq_gswip.c
|
||||
@@ -236,7 +236,9 @@
|
||||
#define GSWIP_TABLE_ACTIVE_VLAN 0x01
|
||||
#define GSWIP_TABLE_VLAN_MAPPING 0x02
|
||||
#define GSWIP_TABLE_MAC_BRIDGE 0x0b
|
||||
-#define GSWIP_TABLE_MAC_BRIDGE_STATIC 0x01 /* Static not, aging entry */
|
||||
+#define GSWIP_TABLE_MAC_BRIDGE_KEY3_FID GENMASK(5, 0) /* Filtering identifier */
|
||||
+#define GSWIP_TABLE_MAC_BRIDGE_VAL0_PORT GENMASK(7, 4) /* Port on learned entries */
|
||||
+#define GSWIP_TABLE_MAC_BRIDGE_VAL1_STATIC BIT(0) /* Static, non-aging entry */
|
||||
|
||||
#define XRX200_GPHY_FW_ALIGN (16 * 1024)
|
||||
|
||||
@@ -1297,10 +1299,11 @@ static void gswip_port_fast_age(struct d
|
||||
if (!mac_bridge.valid)
|
||||
continue;
|
||||
|
||||
- if (mac_bridge.val[1] & GSWIP_TABLE_MAC_BRIDGE_STATIC)
|
||||
+ if (mac_bridge.val[1] & GSWIP_TABLE_MAC_BRIDGE_VAL1_STATIC)
|
||||
continue;
|
||||
|
||||
- if (((mac_bridge.val[0] & GENMASK(7, 4)) >> 4) != port)
|
||||
+ if (port != FIELD_GET(GSWIP_TABLE_MAC_BRIDGE_VAL0_PORT,
|
||||
+ mac_bridge.val[0]))
|
||||
continue;
|
||||
|
||||
mac_bridge.valid = false;
|
||||
@@ -1375,9 +1378,9 @@ static int gswip_port_fdb(struct dsa_swi
|
||||
mac_bridge.key[0] = addr[5] | (addr[4] << 8);
|
||||
mac_bridge.key[1] = addr[3] | (addr[2] << 8);
|
||||
mac_bridge.key[2] = addr[1] | (addr[0] << 8);
|
||||
- mac_bridge.key[3] = fid;
|
||||
+ mac_bridge.key[3] = FIELD_PREP(GSWIP_TABLE_MAC_BRIDGE_KEY3_FID, fid);
|
||||
mac_bridge.val[0] = add ? BIT(port) : 0; /* port map */
|
||||
- mac_bridge.val[1] = GSWIP_TABLE_MAC_BRIDGE_STATIC;
|
||||
+ mac_bridge.val[1] = GSWIP_TABLE_MAC_BRIDGE_VAL1_STATIC;
|
||||
mac_bridge.valid = add;
|
||||
|
||||
err = gswip_pce_table_entry_write(priv, &mac_bridge);
|
||||
@@ -1431,14 +1434,15 @@ static int gswip_port_fdb_dump(struct ds
|
||||
addr[2] = (mac_bridge.key[1] >> 8) & 0xff;
|
||||
addr[1] = mac_bridge.key[2] & 0xff;
|
||||
addr[0] = (mac_bridge.key[2] >> 8) & 0xff;
|
||||
- if (mac_bridge.val[1] & GSWIP_TABLE_MAC_BRIDGE_STATIC) {
|
||||
+ if (mac_bridge.val[1] & GSWIP_TABLE_MAC_BRIDGE_VAL1_STATIC) {
|
||||
if (mac_bridge.val[0] & BIT(port)) {
|
||||
err = cb(addr, 0, true, data);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
} else {
|
||||
- if (((mac_bridge.val[0] & GENMASK(7, 4)) >> 4) == port) {
|
||||
+ if (port == FIELD_GET(GSWIP_TABLE_MAC_BRIDGE_VAL0_PORT,
|
||||
+ mac_bridge.val[0])) {
|
||||
err = cb(addr, 0, false, data);
|
||||
if (err)
|
||||
return err;
|
|
@ -1,35 +0,0 @@
|
|||
From b068706b7831ccf7c7f1a56a65862fbcc28d061f Mon Sep 17 00:00:00 2001
|
||||
From: Martin Schiller <ms@dev.tdt.de>
|
||||
Date: Tue, 11 Jun 2024 15:54:32 +0200
|
||||
Subject: net: dsa: lantiq_gswip: Remove dead code from
|
||||
gswip_add_single_port_br()
|
||||
|
||||
The port validation in gswip_add_single_port_br() is superfluous and
|
||||
can be omitted.
|
||||
|
||||
Suggested-by: Vladimir Oltean <olteanv@gmail.com>
|
||||
Signed-off-by: Martin Schiller <ms@dev.tdt.de>
|
||||
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20240611135434.3180973-11-ms@dev.tdt.de
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/dsa/lantiq_gswip.c | 6 ------
|
||||
1 file changed, 6 deletions(-)
|
||||
|
||||
--- a/drivers/net/dsa/lantiq_gswip.c
|
||||
+++ b/drivers/net/dsa/lantiq_gswip.c
|
||||
@@ -648,14 +648,8 @@ static int gswip_add_single_port_br(stru
|
||||
struct gswip_pce_table_entry vlan_active = {0,};
|
||||
struct gswip_pce_table_entry vlan_mapping = {0,};
|
||||
unsigned int cpu_port = priv->hw_info->cpu_port;
|
||||
- unsigned int max_ports = priv->hw_info->max_ports;
|
||||
int err;
|
||||
|
||||
- if (port >= max_ports) {
|
||||
- dev_err(priv->dev, "single port for %i supported\n", port);
|
||||
- return -EIO;
|
||||
- }
|
||||
-
|
||||
vlan_active.index = port + 1;
|
||||
vlan_active.table = GSWIP_TABLE_ACTIVE_VLAN;
|
||||
vlan_active.key[0] = 0; /* vid */
|
|
@ -1,41 +0,0 @@
|
|||
From e19fbe3996aae35a467ebad35ff2b8d84975a65c Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Tue, 11 Jun 2024 15:54:33 +0200
|
||||
Subject: net: dsa: lantiq_gswip: Update comments in
|
||||
gswip_port_vlan_filtering()
|
||||
|
||||
Update the comments in gswip_port_vlan_filtering() so it's clear that
|
||||
there are two separate cases, one for "tag based VLAN" and another one
|
||||
for "port based VLAN".
|
||||
|
||||
Suggested-by: Martin Schiller <ms@dev.tdt.de>
|
||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
|
||||
Signed-off-by: Martin Schiller <ms@dev.tdt.de>
|
||||
Link: https://lore.kernel.org/r/20240611135434.3180973-12-ms@dev.tdt.de
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/dsa/lantiq_gswip.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/net/dsa/lantiq_gswip.c
|
||||
+++ b/drivers/net/dsa/lantiq_gswip.c
|
||||
@@ -773,7 +773,7 @@ static int gswip_port_vlan_filtering(str
|
||||
}
|
||||
|
||||
if (vlan_filtering) {
|
||||
- /* Use port based VLAN tag */
|
||||
+ /* Use tag based VLAN */
|
||||
gswip_switch_mask(priv,
|
||||
GSWIP_PCE_VCTRL_VSR,
|
||||
GSWIP_PCE_VCTRL_UVR | GSWIP_PCE_VCTRL_VIMR |
|
||||
@@ -782,7 +782,7 @@ static int gswip_port_vlan_filtering(str
|
||||
gswip_switch_mask(priv, GSWIP_PCE_PCTRL_0_TVM, 0,
|
||||
GSWIP_PCE_PCTRL_0p(port));
|
||||
} else {
|
||||
- /* Use port based VLAN tag */
|
||||
+ /* Use port based VLAN */
|
||||
gswip_switch_mask(priv,
|
||||
GSWIP_PCE_VCTRL_UVR | GSWIP_PCE_VCTRL_VIMR |
|
||||
GSWIP_PCE_VCTRL_VEMR,
|
|
@ -1,30 +0,0 @@
|
|||
From 3b0a95ed7782dce88a5ef4860dcaab962cec9527 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Tue, 11 Jun 2024 15:54:34 +0200
|
||||
Subject: net: dsa: lantiq_gswip: Improve error message in gswip_port_fdb()
|
||||
|
||||
Print that no FID is found for bridge %s instead of the incorrect
|
||||
message that the port is not part of a bridge.
|
||||
|
||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
|
||||
Signed-off-by: Martin Schiller <ms@dev.tdt.de>
|
||||
Link: https://lore.kernel.org/r/20240611135434.3180973-13-ms@dev.tdt.de
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/dsa/lantiq_gswip.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/dsa/lantiq_gswip.c
|
||||
+++ b/drivers/net/dsa/lantiq_gswip.c
|
||||
@@ -1363,7 +1363,8 @@ static int gswip_port_fdb(struct dsa_swi
|
||||
}
|
||||
|
||||
if (fid == -1) {
|
||||
- dev_err(priv->dev, "Port not part of a bridge\n");
|
||||
+ dev_err(priv->dev, "no FID found for bridge %s\n",
|
||||
+ bridge->name);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
Loading…
Reference in a new issue