Lines Matching +full:keembay +full:- +full:dwmac

1 // SPDX-License-Identifier: GPL-2.0
2 /* Intel DWMAC platform driver
37 { .compatible = "intel,keembay-dwmac", .data = &kmb_data },
46 struct intel_dwmac *dwmac; in intel_eth_plat_probe() local
56 dev_err(&pdev->dev, "dt configuration failed\n"); in intel_eth_plat_probe()
60 dwmac = devm_kzalloc(&pdev->dev, sizeof(*dwmac), GFP_KERNEL); in intel_eth_plat_probe()
61 if (!dwmac) in intel_eth_plat_probe()
62 return -ENOMEM; in intel_eth_plat_probe()
64 dwmac->dev = &pdev->dev; in intel_eth_plat_probe()
65 dwmac->tx_clk = NULL; in intel_eth_plat_probe()
72 dwmac->data = device_get_match_data(&pdev->dev); in intel_eth_plat_probe()
75 if (dwmac->data->tx_clk_en) { in intel_eth_plat_probe()
76 dwmac->tx_clk = devm_clk_get(&pdev->dev, "tx_clk"); in intel_eth_plat_probe()
77 if (IS_ERR(dwmac->tx_clk)) in intel_eth_plat_probe()
78 return PTR_ERR(dwmac->tx_clk); in intel_eth_plat_probe()
80 ret = clk_prepare_enable(dwmac->tx_clk); in intel_eth_plat_probe()
82 dev_err(&pdev->dev, in intel_eth_plat_probe()
88 rate = clk_get_rate(dwmac->tx_clk); in intel_eth_plat_probe()
89 if (dwmac->data->tx_clk_rate && in intel_eth_plat_probe()
90 rate != dwmac->data->tx_clk_rate) { in intel_eth_plat_probe()
91 rate = dwmac->data->tx_clk_rate; in intel_eth_plat_probe()
92 ret = clk_set_rate(dwmac->tx_clk, rate); in intel_eth_plat_probe()
94 dev_err(&pdev->dev, in intel_eth_plat_probe()
101 rate = clk_get_rate(plat_dat->clk_ptp_ref); in intel_eth_plat_probe()
102 if (dwmac->data->ptp_ref_clk_rate && in intel_eth_plat_probe()
103 rate != dwmac->data->ptp_ref_clk_rate) { in intel_eth_plat_probe()
104 rate = dwmac->data->ptp_ref_clk_rate; in intel_eth_plat_probe()
105 ret = clk_set_rate(plat_dat->clk_ptp_ref, rate); in intel_eth_plat_probe()
107 dev_err(&pdev->dev, in intel_eth_plat_probe()
114 plat_dat->clk_tx_i = dwmac->tx_clk; in intel_eth_plat_probe()
115 plat_dat->set_clk_tx_rate = stmmac_set_clk_tx_rate; in intel_eth_plat_probe()
117 plat_dat->bsp_priv = dwmac; in intel_eth_plat_probe()
118 plat_dat->eee_usecs_rate = plat_dat->clk_ptp_rate; in intel_eth_plat_probe()
120 if (plat_dat->eee_usecs_rate > 0) { in intel_eth_plat_probe()
123 tx_lpi_usec = (plat_dat->eee_usecs_rate / 1000000) - 1; in intel_eth_plat_probe()
127 ret = stmmac_dvr_probe(&pdev->dev, plat_dat, &stmmac_res); in intel_eth_plat_probe()
134 if (dwmac->data->tx_clk_en) in intel_eth_plat_probe()
135 clk_disable_unprepare(dwmac->tx_clk); in intel_eth_plat_probe()
141 struct intel_dwmac *dwmac = get_stmmac_bsp_priv(&pdev->dev); in intel_eth_plat_remove() local
144 if (dwmac->data->tx_clk_en) in intel_eth_plat_remove()
145 clk_disable_unprepare(dwmac->tx_clk); in intel_eth_plat_remove()
152 .name = "intel-eth-plat",
160 MODULE_DESCRIPTION("Intel DWMAC platform driver");