Skip to content

Commit 197c9e9

Browse files
LorenzoBianconidavem330
authored andcommitted
net: ethernet: mtk_eth_soc: introduce support for mt7986 chipset
Add support for mt7986-eth driver available on mt7986 soc. Tested-by: Sam Shih <[email protected]> Signed-off-by: Lorenzo Bianconi <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 4d64269 commit 197c9e9

File tree

2 files changed

+72
-1
lines changed

2 files changed

+72
-1
lines changed

drivers/net/ethernet/mediatek/mtk_eth_soc.c

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,43 @@ static const struct mtk_reg_map mt7628_reg_map = {
8787
},
8888
};
8989

90+
static const struct mtk_reg_map mt7986_reg_map = {
91+
.tx_irq_mask = 0x461c,
92+
.tx_irq_status = 0x4618,
93+
.pdma = {
94+
.rx_ptr = 0x6100,
95+
.rx_cnt_cfg = 0x6104,
96+
.pcrx_ptr = 0x6108,
97+
.glo_cfg = 0x6204,
98+
.rst_idx = 0x6208,
99+
.delay_irq = 0x620c,
100+
.irq_status = 0x6220,
101+
.irq_mask = 0x6228,
102+
.int_grp = 0x6250,
103+
},
104+
.qdma = {
105+
.qtx_cfg = 0x4400,
106+
.rx_ptr = 0x4500,
107+
.rx_cnt_cfg = 0x4504,
108+
.qcrx_ptr = 0x4508,
109+
.glo_cfg = 0x4604,
110+
.rst_idx = 0x4608,
111+
.delay_irq = 0x460c,
112+
.fc_th = 0x4610,
113+
.int_grp = 0x4620,
114+
.hred = 0x4644,
115+
.ctx_ptr = 0x4700,
116+
.dtx_ptr = 0x4704,
117+
.crx_ptr = 0x4710,
118+
.drx_ptr = 0x4714,
119+
.fq_head = 0x4720,
120+
.fq_tail = 0x4724,
121+
.fq_count = 0x4728,
122+
.fq_blen = 0x472c,
123+
},
124+
.gdm1_cnt = 0x1c00,
125+
};
126+
90127
/* strings used by ethtool */
91128
static const struct mtk_ethtool_stats {
92129
char str[ETH_GSTRING_LEN];
@@ -110,7 +147,7 @@ static const char * const mtk_clks_source_name[] = {
110147
"ethif", "sgmiitop", "esw", "gp0", "gp1", "gp2", "fe", "trgpll",
111148
"sgmii_tx250m", "sgmii_rx250m", "sgmii_cdr_ref", "sgmii_cdr_fb",
112149
"sgmii2_tx250m", "sgmii2_rx250m", "sgmii2_cdr_ref", "sgmii2_cdr_fb",
113-
"sgmii_ck", "eth2pll",
150+
"sgmii_ck", "eth2pll", "wocpu0", "wocpu1", "netsys0", "netsys1"
114151
};
115152

116153
void mtk_w32(struct mtk_eth *eth, u32 val, unsigned reg)
@@ -3694,6 +3731,21 @@ static const struct mtk_soc_data mt7629_data = {
36943731
},
36953732
};
36963733

3734+
static const struct mtk_soc_data mt7986_data = {
3735+
.reg_map = &mt7986_reg_map,
3736+
.ana_rgc3 = 0x128,
3737+
.caps = MT7986_CAPS,
3738+
.required_clks = MT7986_CLKS_BITMAP,
3739+
.required_pctl = false,
3740+
.txrx = {
3741+
.txd_size = sizeof(struct mtk_tx_dma_v2),
3742+
.rxd_size = sizeof(struct mtk_rx_dma_v2),
3743+
.rx_irq_done_mask = MTK_RX_DONE_INT_V2,
3744+
.dma_max_len = MTK_TX_DMA_BUF_LEN_V2,
3745+
.dma_len_offset = 8,
3746+
},
3747+
};
3748+
36973749
static const struct mtk_soc_data rt5350_data = {
36983750
.reg_map = &mt7628_reg_map,
36993751
.caps = MT7628_CAPS,
@@ -3716,6 +3768,7 @@ const struct of_device_id of_mtk_match[] = {
37163768
{ .compatible = "mediatek,mt7622-eth", .data = &mt7622_data},
37173769
{ .compatible = "mediatek,mt7623-eth", .data = &mt7623_data},
37183770
{ .compatible = "mediatek,mt7629-eth", .data = &mt7629_data},
3771+
{ .compatible = "mediatek,mt7986-eth", .data = &mt7986_data},
37193772
{ .compatible = "ralink,rt5350-eth", .data = &rt5350_data},
37203773
{},
37213774
};

drivers/net/ethernet/mediatek/mtk_eth_soc.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -627,6 +627,10 @@ enum mtk_clks_map {
627627
MTK_CLK_SGMII2_CDR_FB,
628628
MTK_CLK_SGMII_CK,
629629
MTK_CLK_ETH2PLL,
630+
MTK_CLK_WOCPU0,
631+
MTK_CLK_WOCPU1,
632+
MTK_CLK_NETSYS0,
633+
MTK_CLK_NETSYS1,
630634
MTK_CLK_MAX
631635
};
632636

@@ -657,6 +661,16 @@ enum mtk_clks_map {
657661
BIT(MTK_CLK_SGMII2_CDR_FB) | \
658662
BIT(MTK_CLK_SGMII_CK) | \
659663
BIT(MTK_CLK_ETH2PLL) | BIT(MTK_CLK_SGMIITOP))
664+
#define MT7986_CLKS_BITMAP (BIT(MTK_CLK_FE) | BIT(MTK_CLK_GP2) | BIT(MTK_CLK_GP1) | \
665+
BIT(MTK_CLK_WOCPU1) | BIT(MTK_CLK_WOCPU0) | \
666+
BIT(MTK_CLK_SGMII_TX_250M) | \
667+
BIT(MTK_CLK_SGMII_RX_250M) | \
668+
BIT(MTK_CLK_SGMII_CDR_REF) | \
669+
BIT(MTK_CLK_SGMII_CDR_FB) | \
670+
BIT(MTK_CLK_SGMII2_TX_250M) | \
671+
BIT(MTK_CLK_SGMII2_RX_250M) | \
672+
BIT(MTK_CLK_SGMII2_CDR_REF) | \
673+
BIT(MTK_CLK_SGMII2_CDR_FB))
660674

661675
enum mtk_dev_state {
662676
MTK_HW_INIT,
@@ -855,6 +869,10 @@ enum mkt_eth_capabilities {
855869
MTK_MUX_U3_GMAC2_TO_QPHY | \
856870
MTK_MUX_GMAC12_TO_GEPHY_SGMII | MTK_QDMA)
857871

872+
#define MT7986_CAPS (MTK_GMAC1_SGMII | MTK_GMAC2_SGMII | \
873+
MTK_MUX_GMAC12_TO_GEPHY_SGMII | MTK_QDMA | \
874+
MTK_NETSYS_V2 | MTK_RSTCTRL_PPE1)
875+
858876
struct mtk_tx_dma_desc_info {
859877
dma_addr_t addr;
860878
u32 size;

0 commit comments

Comments
 (0)