Lines Matching +full:mac +full:- +full:clk +full:- +full:tx

1 // SPDX-License-Identifier: GPL-2.0
5 * Copyright 2019-2024 NXP
9 #include <linux/clk.h>
10 #include <linux/clk-provider.h>
37 struct clk *tx_clk;
38 struct clk *rx_clk;
43 writel(PHY_INTF_SEL_RGMII, gmac->ctrl_sts); in s32_gmac_write_phy_intf_select()
45 dev_dbg(gmac->dev, "PHY mode set to %s\n", phy_modes(*gmac->intf_mode)); in s32_gmac_write_phy_intf_select()
55 /* Set initial TX interface clock */ in s32_gmac_init()
56 ret = clk_prepare_enable(gmac->tx_clk); in s32_gmac_init()
58 dev_err(&pdev->dev, "Can't enable tx clock\n"); in s32_gmac_init()
61 ret = clk_set_rate(gmac->tx_clk, GMAC_INTF_RATE_125M); in s32_gmac_init()
63 dev_err(&pdev->dev, "Can't set tx clock\n"); in s32_gmac_init()
68 ret = clk_prepare_enable(gmac->rx_clk); in s32_gmac_init()
70 dev_err(&pdev->dev, "Can't enable rx clock\n"); in s32_gmac_init()
73 ret = clk_set_rate(gmac->rx_clk, GMAC_INTF_RATE_125M); in s32_gmac_init()
75 dev_err(&pdev->dev, "Can't set rx clock\n"); in s32_gmac_init()
82 dev_err(&pdev->dev, "Can't set PHY interface mode\n"); in s32_gmac_init()
89 clk_disable_unprepare(gmac->rx_clk); in s32_gmac_init()
91 clk_disable_unprepare(gmac->tx_clk); in s32_gmac_init()
99 clk_disable_unprepare(gmac->tx_clk); in s32_gmac_exit()
100 clk_disable_unprepare(gmac->rx_clk); in s32_gmac_exit()
106 struct device *dev = &pdev->dev; in s32_dwmac_probe()
111 gmac = devm_kzalloc(&pdev->dev, sizeof(*gmac), GFP_KERNEL); in s32_dwmac_probe()
113 return -ENOMEM; in s32_dwmac_probe()
115 gmac->dev = &pdev->dev; in s32_dwmac_probe()
122 plat = devm_stmmac_probe_config_dt(pdev, res.mac); in s32_dwmac_probe()
128 gmac->ctrl_sts = devm_platform_get_and_ioremap_resource(pdev, 1, NULL); in s32_dwmac_probe()
129 if (IS_ERR(gmac->ctrl_sts)) in s32_dwmac_probe()
130 return dev_err_probe(dev, PTR_ERR(gmac->ctrl_sts), in s32_dwmac_probe()
133 /* tx clock */ in s32_dwmac_probe()
134 gmac->tx_clk = devm_clk_get(&pdev->dev, "tx"); in s32_dwmac_probe()
135 if (IS_ERR(gmac->tx_clk)) in s32_dwmac_probe()
136 return dev_err_probe(dev, PTR_ERR(gmac->tx_clk), in s32_dwmac_probe()
137 "tx clock not found\n"); in s32_dwmac_probe()
140 gmac->rx_clk = devm_clk_get(&pdev->dev, "rx"); in s32_dwmac_probe()
141 if (IS_ERR(gmac->rx_clk)) in s32_dwmac_probe()
142 return dev_err_probe(dev, PTR_ERR(gmac->rx_clk), in s32_dwmac_probe()
145 gmac->intf_mode = &plat->phy_interface; in s32_dwmac_probe()
146 gmac->ioaddr = res.addr; in s32_dwmac_probe()
149 plat->has_gmac4 = true; in s32_dwmac_probe()
150 plat->pmt = 1; in s32_dwmac_probe()
151 plat->flags |= STMMAC_FLAG_SPH_DISABLE; in s32_dwmac_probe()
152 plat->rx_fifo_size = 20480; in s32_dwmac_probe()
153 plat->tx_fifo_size = 20480; in s32_dwmac_probe()
155 plat->init = s32_gmac_init; in s32_dwmac_probe()
156 plat->exit = s32_gmac_exit; in s32_dwmac_probe()
158 plat->clk_tx_i = gmac->tx_clk; in s32_dwmac_probe()
159 plat->set_clk_tx_rate = stmmac_set_clk_tx_rate; in s32_dwmac_probe()
161 plat->bsp_priv = gmac; in s32_dwmac_probe()
167 { .compatible = "nxp,s32g2-dwmac" },
176 .name = "s32-dwmac",