stmmac: dwmac-mediatek: Reuse more common features
authorBiao Huang <biao.huang@mediatek.com>
Mon, 14 Mar 2022 07:57:08 +0000 (15:57 +0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 16 Mar 2022 12:49:22 +0000 (12:49 +0000)
This patch makes dwmac-mediatek reuse more features
supported by stmmac_platform.c.

Signed-off-by: Biao Huang <biao.huang@mediatek.com>
Acked-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c

index 0ff57c2..8747aa4 100644 (file)
@@ -334,22 +334,20 @@ static int mediatek_dwmac_init(struct platform_device *pdev, void *priv)
        const struct mediatek_dwmac_variant *variant = plat->variant;
        int ret;
 
-       ret = dma_set_mask_and_coherent(plat->dev, DMA_BIT_MASK(variant->dma_bit_mask));
-       if (ret) {
-               dev_err(plat->dev, "No suitable DMA available, err = %d\n", ret);
-               return ret;
-       }
-
-       ret = variant->dwmac_set_phy_interface(plat);
-       if (ret) {
-               dev_err(plat->dev, "failed to set phy interface, err = %d\n", ret);
-               return ret;
+       if (variant->dwmac_set_phy_interface) {
+               ret = variant->dwmac_set_phy_interface(plat);
+               if (ret) {
+                       dev_err(plat->dev, "failed to set phy interface, err = %d\n", ret);
+                       return ret;
+               }
        }
 
-       ret = variant->dwmac_set_delay(plat);
-       if (ret) {
-               dev_err(plat->dev, "failed to set delay value, err = %d\n", ret);
-               return ret;
+       if (variant->dwmac_set_delay) {
+               ret = variant->dwmac_set_delay(plat);
+               if (ret) {
+                       dev_err(plat->dev, "failed to set delay value, err = %d\n", ret);
+                       return ret;
+               }
        }
 
        ret = clk_bulk_prepare_enable(plat->num_clks_to_config, plat->clks);
@@ -422,15 +420,15 @@ static int mediatek_dwmac_probe(struct platform_device *pdev)
                return PTR_ERR(plat_dat);
 
        plat_dat->interface = priv_plat->phy_mode;
-       plat_dat->has_gmac4 = 1;
-       plat_dat->has_gmac = 0;
-       plat_dat->pmt = 0;
+       plat_dat->use_phy_wol = 1;
        plat_dat->riwt_off = 1;
        plat_dat->maxmtu = ETH_DATA_LEN;
+       plat_dat->addr64 = priv_plat->variant->dma_bit_mask;
        plat_dat->bsp_priv = priv_plat;
        plat_dat->init = mediatek_dwmac_init;
        plat_dat->exit = mediatek_dwmac_exit;
        plat_dat->clks_config = mediatek_dwmac_clks_config;
+
        mediatek_dwmac_init(pdev, priv_plat);
 
        ret = stmmac_dvr_probe(&pdev->dev, plat_dat, &stmmac_res);