Commit 707116b6 authored by Jakub Kicinski's avatar Jakub Kicinski

Merge branch 'net-ethernet-mtk_eth_soc-add-basic-support-for-mt7988-soc'

Daniel Golle says:

====================
net: ethernet: mtk_eth_soc: add basic support for MT7988 SoC

The MediaTek MT7988 SoC introduces a new version (3) of the NETSYS
block and comes with three instead of two MACs.

The first MAC can be internally connected to a built-in Gigabit
Ethernet switch with four 1000M/100M/10M twisted pair user ports.

The second MAC can be internally connected to a built-in 2500Base-T
Ethernet PHY.

There are two SerDes units which can be operated in USXGMII, 10GBase-(K)R,
5GBase-R, 2500Base-X, 1000Base-X or SGMII interface mode.

This series adds initial support for NETSYS v3 and the first MAC of the
MT7988 SoC connecting the built-in DSA switch.

The switch is supported since commit 110c18bf ("net: dsa: mt7530:
introduce driver for MT7988 built-in switch").

Basic support for the 1000M/100M/10M built-in PHYs connected to the
switch ports is present since commit ("98c485ea net: phy: add
driver for MediaTek SoC built-in GE PHYs").
====================

Link: https://lore.kernel.org/r/cover.1690246066.git.daniel@makrotopia.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents ac3cb6de 445eb644
...@@ -19,10 +19,12 @@ properties: ...@@ -19,10 +19,12 @@ properties:
enum: enum:
- mediatek,mt2701-eth - mediatek,mt2701-eth
- mediatek,mt7623-eth - mediatek,mt7623-eth
- mediatek,mt7621-eth
- mediatek,mt7622-eth - mediatek,mt7622-eth
- mediatek,mt7629-eth - mediatek,mt7629-eth
- mediatek,mt7981-eth - mediatek,mt7981-eth
- mediatek,mt7986-eth - mediatek,mt7986-eth
- mediatek,mt7988-eth
- ralink,rt5350-eth - ralink,rt5350-eth
reg: reg:
...@@ -32,7 +34,7 @@ properties: ...@@ -32,7 +34,7 @@ properties:
clock-names: true clock-names: true
interrupts: interrupts:
minItems: 3 minItems: 1
maxItems: 4 maxItems: 4
power-domains: power-domains:
...@@ -60,6 +62,12 @@ properties: ...@@ -60,6 +62,12 @@ properties:
Phandle to the mediatek hifsys controller used to provide various clocks Phandle to the mediatek hifsys controller used to provide various clocks
and reset to the system. and reset to the system.
mediatek,infracfg:
$ref: /schemas/types.yaml#/definitions/phandle
description:
Phandle to the syscon node that handles the path from GMAC to
PHY variants.
mediatek,sgmiisys: mediatek,sgmiisys:
$ref: /schemas/types.yaml#/definitions/phandle-array $ref: /schemas/types.yaml#/definitions/phandle-array
minItems: 1 minItems: 1
...@@ -121,6 +129,8 @@ allOf: ...@@ -121,6 +129,8 @@ allOf:
- const: gp1 - const: gp1
- const: gp2 - const: gp2
mediatek,infracfg: false
mediatek,pctl: mediatek,pctl:
$ref: /schemas/types.yaml#/definitions/phandle $ref: /schemas/types.yaml#/definitions/phandle
description: description:
...@@ -131,6 +141,32 @@ allOf: ...@@ -131,6 +141,32 @@ allOf:
mediatek,wed-pcie: false mediatek,wed-pcie: false
- if:
properties:
compatible:
contains:
enum:
- mediatek,mt7621-eth
then:
properties:
interrupts:
maxItems: 1
clocks:
minItems: 2
maxItems: 2
clock-names:
items:
- const: ethif
- const: fe
mediatek,infracfg: false
mediatek,wed: false
mediatek,wed-pcie: false
- if: - if:
properties: properties:
compatible: compatible:
...@@ -159,6 +195,8 @@ allOf: ...@@ -159,6 +195,8 @@ allOf:
- const: sgmii_ck - const: sgmii_ck
- const: eth2pll - const: eth2pll
mediatek,infracfg: false
mediatek,sgmiisys: mediatek,sgmiisys:
minItems: 1 minItems: 1
maxItems: 1 maxItems: 1
...@@ -204,12 +242,6 @@ allOf: ...@@ -204,12 +242,6 @@ allOf:
- const: sgmii_ck - const: sgmii_ck
- const: eth2pll - const: eth2pll
mediatek,infracfg:
$ref: /schemas/types.yaml#/definitions/phandle
description:
Phandle to the syscon node that handles the path from GMAC to
PHY variants.
mediatek,sgmiisys: mediatek,sgmiisys:
minItems: 2 minItems: 2
maxItems: 2 maxItems: 2
...@@ -250,6 +282,8 @@ allOf: ...@@ -250,6 +282,8 @@ allOf:
- const: netsys0 - const: netsys0
- const: netsys1 - const: netsys1
mediatek,infracfg: false
mediatek,sgmiisys: mediatek,sgmiisys:
minItems: 2 minItems: 2
maxItems: 2 maxItems: 2
...@@ -286,6 +320,67 @@ allOf: ...@@ -286,6 +320,67 @@ allOf:
- const: netsys0 - const: netsys0
- const: netsys1 - const: netsys1
mediatek,infracfg: false
mediatek,sgmiisys:
minItems: 2
maxItems: 2
- if:
properties:
compatible:
contains:
const: mediatek,mt7988-eth
then:
properties:
interrupts:
minItems: 4
clocks:
minItems: 34
maxItems: 34
clock-names:
items:
- const: crypto
- const: fe
- const: gp2
- const: gp1
- const: gp3
- const: ethwarp_wocpu2
- const: ethwarp_wocpu1
- const: ethwarp_wocpu0
- const: esw
- const: netsys0
- const: netsys1
- const: sgmii_tx250m
- const: sgmii_rx250m
- const: sgmii2_tx250m
- const: sgmii2_rx250m
- const: top_usxgmii0_sel
- const: top_usxgmii1_sel
- const: top_sgm0_sel
- const: top_sgm1_sel
- const: top_xfi_phy0_xtal_sel
- const: top_xfi_phy1_xtal_sel
- const: top_eth_gmii_sel
- const: top_eth_refck_50m_sel
- const: top_eth_sys_200m_sel
- const: top_eth_sys_sel
- const: top_eth_xgmii_sel
- const: top_eth_mii_sel
- const: top_netsys_sel
- const: top_netsys_500m_sel
- const: top_netsys_pao_2x_sel
- const: top_netsys_sync_250m_sel
- const: top_netsys_ppefb_250m_sel
- const: top_netsys_warp_sel
- const: wocpu1
- const: wocpu0
- const: xgp1
- const: xgp2
- const: xgp3
mediatek,sgmiisys: mediatek,sgmiisys:
minItems: 2 minItems: 2
maxItems: 2 maxItems: 2
......
...@@ -15,10 +15,10 @@ ...@@ -15,10 +15,10 @@
struct mtk_eth_muxc { struct mtk_eth_muxc {
const char *name; const char *name;
int cap_bit; int cap_bit;
int (*set_path)(struct mtk_eth *eth, int path); int (*set_path)(struct mtk_eth *eth, u64 path);
}; };
static const char *mtk_eth_path_name(int path) static const char *mtk_eth_path_name(u64 path)
{ {
switch (path) { switch (path) {
case MTK_ETH_PATH_GMAC1_RGMII: case MTK_ETH_PATH_GMAC1_RGMII:
...@@ -40,10 +40,10 @@ static const char *mtk_eth_path_name(int path) ...@@ -40,10 +40,10 @@ static const char *mtk_eth_path_name(int path)
} }
} }
static int set_mux_gdm1_to_gmac1_esw(struct mtk_eth *eth, int path) static int set_mux_gdm1_to_gmac1_esw(struct mtk_eth *eth, u64 path)
{ {
bool updated = true; bool updated = true;
u32 val, mask, set; u32 mask, set, reg;
switch (path) { switch (path) {
case MTK_ETH_PATH_GMAC1_SGMII: case MTK_ETH_PATH_GMAC1_SGMII:
...@@ -59,11 +59,13 @@ static int set_mux_gdm1_to_gmac1_esw(struct mtk_eth *eth, int path) ...@@ -59,11 +59,13 @@ static int set_mux_gdm1_to_gmac1_esw(struct mtk_eth *eth, int path)
break; break;
} }
if (updated) { if (mtk_is_netsys_v3_or_greater(eth))
val = mtk_r32(eth, MTK_MAC_MISC); reg = MTK_MAC_MISC_V3;
val = (val & mask) | set; else
mtk_w32(eth, val, MTK_MAC_MISC); reg = MTK_MAC_MISC;
}
if (updated)
mtk_m32(eth, mask, set, reg);
dev_dbg(eth->dev, "path %s in %s updated = %d\n", dev_dbg(eth->dev, "path %s in %s updated = %d\n",
mtk_eth_path_name(path), __func__, updated); mtk_eth_path_name(path), __func__, updated);
...@@ -71,7 +73,7 @@ static int set_mux_gdm1_to_gmac1_esw(struct mtk_eth *eth, int path) ...@@ -71,7 +73,7 @@ static int set_mux_gdm1_to_gmac1_esw(struct mtk_eth *eth, int path)
return 0; return 0;
} }
static int set_mux_gmac2_gmac0_to_gephy(struct mtk_eth *eth, int path) static int set_mux_gmac2_gmac0_to_gephy(struct mtk_eth *eth, u64 path)
{ {
unsigned int val = 0; unsigned int val = 0;
bool updated = true; bool updated = true;
...@@ -94,7 +96,7 @@ static int set_mux_gmac2_gmac0_to_gephy(struct mtk_eth *eth, int path) ...@@ -94,7 +96,7 @@ static int set_mux_gmac2_gmac0_to_gephy(struct mtk_eth *eth, int path)
return 0; return 0;
} }
static int set_mux_u3_gmac2_to_qphy(struct mtk_eth *eth, int path) static int set_mux_u3_gmac2_to_qphy(struct mtk_eth *eth, u64 path)
{ {
unsigned int val = 0, mask = 0, reg = 0; unsigned int val = 0, mask = 0, reg = 0;
bool updated = true; bool updated = true;
...@@ -125,7 +127,7 @@ static int set_mux_u3_gmac2_to_qphy(struct mtk_eth *eth, int path) ...@@ -125,7 +127,7 @@ static int set_mux_u3_gmac2_to_qphy(struct mtk_eth *eth, int path)
return 0; return 0;
} }
static int set_mux_gmac1_gmac2_to_sgmii_rgmii(struct mtk_eth *eth, int path) static int set_mux_gmac1_gmac2_to_sgmii_rgmii(struct mtk_eth *eth, u64 path)
{ {
unsigned int val = 0; unsigned int val = 0;
bool updated = true; bool updated = true;
...@@ -163,7 +165,7 @@ static int set_mux_gmac1_gmac2_to_sgmii_rgmii(struct mtk_eth *eth, int path) ...@@ -163,7 +165,7 @@ static int set_mux_gmac1_gmac2_to_sgmii_rgmii(struct mtk_eth *eth, int path)
return 0; return 0;
} }
static int set_mux_gmac12_to_gephy_sgmii(struct mtk_eth *eth, int path) static int set_mux_gmac12_to_gephy_sgmii(struct mtk_eth *eth, u64 path)
{ {
unsigned int val = 0; unsigned int val = 0;
bool updated = true; bool updated = true;
...@@ -218,7 +220,7 @@ static const struct mtk_eth_muxc mtk_eth_muxc[] = { ...@@ -218,7 +220,7 @@ static const struct mtk_eth_muxc mtk_eth_muxc[] = {
}, },
}; };
static int mtk_eth_mux_setup(struct mtk_eth *eth, int path) static int mtk_eth_mux_setup(struct mtk_eth *eth, u64 path)
{ {
int i, err = 0; int i, err = 0;
...@@ -249,7 +251,7 @@ static int mtk_eth_mux_setup(struct mtk_eth *eth, int path) ...@@ -249,7 +251,7 @@ static int mtk_eth_mux_setup(struct mtk_eth *eth, int path)
int mtk_gmac_sgmii_path_setup(struct mtk_eth *eth, int mac_id) int mtk_gmac_sgmii_path_setup(struct mtk_eth *eth, int mac_id)
{ {
int path; u64 path;
path = (mac_id == 0) ? MTK_ETH_PATH_GMAC1_SGMII : path = (mac_id == 0) ? MTK_ETH_PATH_GMAC1_SGMII :
MTK_ETH_PATH_GMAC2_SGMII; MTK_ETH_PATH_GMAC2_SGMII;
...@@ -260,7 +262,7 @@ int mtk_gmac_sgmii_path_setup(struct mtk_eth *eth, int mac_id) ...@@ -260,7 +262,7 @@ int mtk_gmac_sgmii_path_setup(struct mtk_eth *eth, int mac_id)
int mtk_gmac_gephy_path_setup(struct mtk_eth *eth, int mac_id) int mtk_gmac_gephy_path_setup(struct mtk_eth *eth, int mac_id)
{ {
int path = 0; u64 path = 0;
if (mac_id == 1) if (mac_id == 1)
path = MTK_ETH_PATH_GMAC2_GEPHY; path = MTK_ETH_PATH_GMAC2_GEPHY;
...@@ -274,7 +276,7 @@ int mtk_gmac_gephy_path_setup(struct mtk_eth *eth, int mac_id) ...@@ -274,7 +276,7 @@ int mtk_gmac_gephy_path_setup(struct mtk_eth *eth, int mac_id)
int mtk_gmac_rgmii_path_setup(struct mtk_eth *eth, int mac_id) int mtk_gmac_rgmii_path_setup(struct mtk_eth *eth, int mac_id)
{ {
int path; u64 path;
path = (mac_id == 0) ? MTK_ETH_PATH_GMAC1_RGMII : path = (mac_id == 0) ? MTK_ETH_PATH_GMAC1_RGMII :
MTK_ETH_PATH_GMAC2_RGMII; MTK_ETH_PATH_GMAC2_RGMII;
......
This diff is collapsed.
This diff is collapsed.
...@@ -208,7 +208,7 @@ int mtk_foe_entry_prepare(struct mtk_eth *eth, struct mtk_foe_entry *entry, ...@@ -208,7 +208,7 @@ int mtk_foe_entry_prepare(struct mtk_eth *eth, struct mtk_foe_entry *entry,
memset(entry, 0, sizeof(*entry)); memset(entry, 0, sizeof(*entry));
if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) { if (mtk_is_netsys_v2_or_greater(eth)) {
val = FIELD_PREP(MTK_FOE_IB1_STATE, MTK_FOE_STATE_BIND) | val = FIELD_PREP(MTK_FOE_IB1_STATE, MTK_FOE_STATE_BIND) |
FIELD_PREP(MTK_FOE_IB1_PACKET_TYPE_V2, type) | FIELD_PREP(MTK_FOE_IB1_PACKET_TYPE_V2, type) |
FIELD_PREP(MTK_FOE_IB1_UDP, l4proto == IPPROTO_UDP) | FIELD_PREP(MTK_FOE_IB1_UDP, l4proto == IPPROTO_UDP) |
...@@ -272,7 +272,7 @@ int mtk_foe_entry_set_pse_port(struct mtk_eth *eth, ...@@ -272,7 +272,7 @@ int mtk_foe_entry_set_pse_port(struct mtk_eth *eth,
u32 *ib2 = mtk_foe_entry_ib2(eth, entry); u32 *ib2 = mtk_foe_entry_ib2(eth, entry);
u32 val = *ib2; u32 val = *ib2;
if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) { if (mtk_is_netsys_v2_or_greater(eth)) {
val &= ~MTK_FOE_IB2_DEST_PORT_V2; val &= ~MTK_FOE_IB2_DEST_PORT_V2;
val |= FIELD_PREP(MTK_FOE_IB2_DEST_PORT_V2, port); val |= FIELD_PREP(MTK_FOE_IB2_DEST_PORT_V2, port);
} else { } else {
...@@ -423,7 +423,7 @@ int mtk_foe_entry_set_wdma(struct mtk_eth *eth, struct mtk_foe_entry *entry, ...@@ -423,7 +423,7 @@ int mtk_foe_entry_set_wdma(struct mtk_eth *eth, struct mtk_foe_entry *entry,
struct mtk_foe_mac_info *l2 = mtk_foe_entry_l2(eth, entry); struct mtk_foe_mac_info *l2 = mtk_foe_entry_l2(eth, entry);
u32 *ib2 = mtk_foe_entry_ib2(eth, entry); u32 *ib2 = mtk_foe_entry_ib2(eth, entry);
if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) { if (mtk_is_netsys_v2_or_greater(eth)) {
*ib2 &= ~MTK_FOE_IB2_PORT_MG_V2; *ib2 &= ~MTK_FOE_IB2_PORT_MG_V2;
*ib2 |= FIELD_PREP(MTK_FOE_IB2_RX_IDX, txq) | *ib2 |= FIELD_PREP(MTK_FOE_IB2_RX_IDX, txq) |
MTK_FOE_IB2_WDMA_WINFO_V2; MTK_FOE_IB2_WDMA_WINFO_V2;
...@@ -447,7 +447,7 @@ int mtk_foe_entry_set_queue(struct mtk_eth *eth, struct mtk_foe_entry *entry, ...@@ -447,7 +447,7 @@ int mtk_foe_entry_set_queue(struct mtk_eth *eth, struct mtk_foe_entry *entry,
{ {
u32 *ib2 = mtk_foe_entry_ib2(eth, entry); u32 *ib2 = mtk_foe_entry_ib2(eth, entry);
if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) { if (mtk_is_netsys_v2_or_greater(eth)) {
*ib2 &= ~MTK_FOE_IB2_QID_V2; *ib2 &= ~MTK_FOE_IB2_QID_V2;
*ib2 |= FIELD_PREP(MTK_FOE_IB2_QID_V2, queue); *ib2 |= FIELD_PREP(MTK_FOE_IB2_QID_V2, queue);
*ib2 |= MTK_FOE_IB2_PSE_QOS_V2; *ib2 |= MTK_FOE_IB2_PSE_QOS_V2;
...@@ -603,7 +603,7 @@ __mtk_foe_entry_commit(struct mtk_ppe *ppe, struct mtk_foe_entry *entry, ...@@ -603,7 +603,7 @@ __mtk_foe_entry_commit(struct mtk_ppe *ppe, struct mtk_foe_entry *entry,
struct mtk_foe_entry *hwe; struct mtk_foe_entry *hwe;
u32 val; u32 val;
if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) { if (mtk_is_netsys_v2_or_greater(eth)) {
entry->ib1 &= ~MTK_FOE_IB1_BIND_TIMESTAMP_V2; entry->ib1 &= ~MTK_FOE_IB1_BIND_TIMESTAMP_V2;
entry->ib1 |= FIELD_PREP(MTK_FOE_IB1_BIND_TIMESTAMP_V2, entry->ib1 |= FIELD_PREP(MTK_FOE_IB1_BIND_TIMESTAMP_V2,
timestamp); timestamp);
...@@ -619,7 +619,7 @@ __mtk_foe_entry_commit(struct mtk_ppe *ppe, struct mtk_foe_entry *entry, ...@@ -619,7 +619,7 @@ __mtk_foe_entry_commit(struct mtk_ppe *ppe, struct mtk_foe_entry *entry,
hwe->ib1 = entry->ib1; hwe->ib1 = entry->ib1;
if (ppe->accounting) { if (ppe->accounting) {
if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) if (mtk_is_netsys_v2_or_greater(eth))
val = MTK_FOE_IB2_MIB_CNT_V2; val = MTK_FOE_IB2_MIB_CNT_V2;
else else
val = MTK_FOE_IB2_MIB_CNT; val = MTK_FOE_IB2_MIB_CNT;
...@@ -979,7 +979,7 @@ void mtk_ppe_start(struct mtk_ppe *ppe) ...@@ -979,7 +979,7 @@ void mtk_ppe_start(struct mtk_ppe *ppe)
MTK_PPE_SCAN_MODE_KEEPALIVE_AGE) | MTK_PPE_SCAN_MODE_KEEPALIVE_AGE) |
FIELD_PREP(MTK_PPE_TB_CFG_ENTRY_NUM, FIELD_PREP(MTK_PPE_TB_CFG_ENTRY_NUM,
MTK_PPE_ENTRIES_SHIFT); MTK_PPE_ENTRIES_SHIFT);
if (MTK_HAS_CAPS(ppe->eth->soc->caps, MTK_NETSYS_V2)) if (mtk_is_netsys_v2_or_greater(ppe->eth))
val |= MTK_PPE_TB_CFG_INFO_SEL; val |= MTK_PPE_TB_CFG_INFO_SEL;
ppe_w32(ppe, MTK_PPE_TB_CFG, val); ppe_w32(ppe, MTK_PPE_TB_CFG, val);
...@@ -995,7 +995,7 @@ void mtk_ppe_start(struct mtk_ppe *ppe) ...@@ -995,7 +995,7 @@ void mtk_ppe_start(struct mtk_ppe *ppe)
MTK_PPE_FLOW_CFG_IP4_NAPT | MTK_PPE_FLOW_CFG_IP4_NAPT |
MTK_PPE_FLOW_CFG_IP4_DSLITE | MTK_PPE_FLOW_CFG_IP4_DSLITE |
MTK_PPE_FLOW_CFG_IP4_NAT_FRAG; MTK_PPE_FLOW_CFG_IP4_NAT_FRAG;
if (MTK_HAS_CAPS(ppe->eth->soc->caps, MTK_NETSYS_V2)) if (mtk_is_netsys_v2_or_greater(ppe->eth))
val |= MTK_PPE_MD_TOAP_BYP_CRSN0 | val |= MTK_PPE_MD_TOAP_BYP_CRSN0 |
MTK_PPE_MD_TOAP_BYP_CRSN1 | MTK_PPE_MD_TOAP_BYP_CRSN1 |
MTK_PPE_MD_TOAP_BYP_CRSN2 | MTK_PPE_MD_TOAP_BYP_CRSN2 |
...@@ -1037,7 +1037,7 @@ void mtk_ppe_start(struct mtk_ppe *ppe) ...@@ -1037,7 +1037,7 @@ void mtk_ppe_start(struct mtk_ppe *ppe)
ppe_w32(ppe, MTK_PPE_DEFAULT_CPU_PORT, 0); ppe_w32(ppe, MTK_PPE_DEFAULT_CPU_PORT, 0);
if (MTK_HAS_CAPS(ppe->eth->soc->caps, MTK_NETSYS_V2)) { if (mtk_is_netsys_v2_or_greater(ppe->eth)) {
ppe_w32(ppe, MTK_PPE_DEFAULT_CPU_PORT1, 0xcb777); ppe_w32(ppe, MTK_PPE_DEFAULT_CPU_PORT1, 0xcb777);
ppe_w32(ppe, MTK_PPE_SBW_CTRL, 0x7f); ppe_w32(ppe, MTK_PPE_SBW_CTRL, 0x7f);
} }
......
...@@ -193,7 +193,7 @@ mtk_flow_set_output_device(struct mtk_eth *eth, struct mtk_foe_entry *foe, ...@@ -193,7 +193,7 @@ mtk_flow_set_output_device(struct mtk_eth *eth, struct mtk_foe_entry *foe,
if (mtk_flow_get_wdma_info(dev, dest_mac, &info) == 0) { if (mtk_flow_get_wdma_info(dev, dest_mac, &info) == 0) {
mtk_foe_entry_set_wdma(eth, foe, info.wdma_idx, info.queue, mtk_foe_entry_set_wdma(eth, foe, info.wdma_idx, info.queue,
info.bss, info.wcid); info.bss, info.wcid);
if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) { if (mtk_is_netsys_v2_or_greater(eth)) {
switch (info.wdma_idx) { switch (info.wdma_idx) {
case 0: case 0:
pse_port = 8; pse_port = 8;
......
...@@ -1091,7 +1091,7 @@ mtk_wed_rx_reset(struct mtk_wed_device *dev) ...@@ -1091,7 +1091,7 @@ mtk_wed_rx_reset(struct mtk_wed_device *dev)
} else { } else {
struct mtk_eth *eth = dev->hw->eth; struct mtk_eth *eth = dev->hw->eth;
if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) if (mtk_is_netsys_v2_or_greater(eth))
wed_set(dev, MTK_WED_RESET_IDX, wed_set(dev, MTK_WED_RESET_IDX,
MTK_WED_RESET_IDX_RX_V2); MTK_WED_RESET_IDX_RX_V2);
else else
...@@ -1907,7 +1907,7 @@ void mtk_wed_add_hw(struct device_node *np, struct mtk_eth *eth, ...@@ -1907,7 +1907,7 @@ void mtk_wed_add_hw(struct device_node *np, struct mtk_eth *eth,
hw->wdma = wdma; hw->wdma = wdma;
hw->index = index; hw->index = index;
hw->irq = irq; hw->irq = irq;
hw->version = MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2) ? 2 : 1; hw->version = mtk_is_netsys_v1(eth) ? 1 : 2;
if (hw->version == 1) { if (hw->version == 1) {
hw->mirror = syscon_regmap_lookup_by_phandle(eth_np, hw->mirror = syscon_regmap_lookup_by_phandle(eth_np,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment