kernel: backport phylink changes from mainline Linux
[openwrt/staging/jow.git] / target / linux / generic / pending-6.1 / 738-net-ethernet-mtk_eth_soc-set-coherent-mask-to-get-PP.patch
1 From dee3f591103910c8d8b2a6d57879ccd2a4be4b10 Mon Sep 17 00:00:00 2001
2 Message-ID: <dee3f591103910c8d8b2a6d57879ccd2a4be4b10.1706067287.git.daniel@makrotopia.org>
3 From: Daniel Golle <daniel@makrotopia.org>
4 Date: Wed, 24 Jan 2024 03:19:49 +0000
5 Subject: [PATCH net] net: ethernet: mtk_eth_soc: set coherent mask to get PPE
6 working
7 To: Felix Fietkau <nbd@nbd.name>,
8 Sean Wang <sean.wang@mediatek.com>,
9 Mark Lee <Mark-MC.Lee@mediatek.com>,
10 Lorenzo Bianconi <lorenzo@kernel.org>,
11 David S. Miller <davem@davemloft.net>,
12 Eric Dumazet <edumazet@google.com>,
13 Jakub Kicinski <kuba@kernel.org>,
14 Paolo Abeni <pabeni@redhat.com>,
15 Matthias Brugger <matthias.bgg@gmail.com>,
16 AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>,
17 Daniel Golle <daniel@makrotopia.org>,
18 netdev@vger.kernel.org,
19 linux-kernel@vger.kernel.org,
20 linux-arm-kernel@lists.infradead.org,
21 linux-mediatek@lists.infradead.org
22
23 Set DMA coherent mask to 32-bit which makes PPE offloading engine start
24 working on BPi-R4 which got 4 GiB of RAM.
25
26 Fixes: 2d75891ebc09 ("net: ethernet: mtk_eth_soc: support 36-bit DMA addressing on MT7988")
27 Suggested-by: Elad Yifee <eladwf@users.github.com>
28 Signed-off-by: Daniel Golle <daniel@makrotopia.org>
29 ---
30 drivers/net/ethernet/mediatek/mtk_eth_soc.c | 5 ++++-
31 1 file changed, 4 insertions(+), 1 deletion(-)
32
33 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
34 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
35 @@ -4885,7 +4885,10 @@ static int mtk_probe(struct platform_dev
36 }
37
38 if (MTK_HAS_CAPS(eth->soc->caps, MTK_36BIT_DMA)) {
39 - err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(36));
40 + err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(36));
41 + if (!err)
42 + err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32));
43 +
44 if (err) {
45 dev_err(&pdev->dev, "Wrong DMA config\n");
46 return -EINVAL;