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

1 // SPDX-License-Identifier: GPL-2.0
2 /* Intel DWMAC platform driver
33 struct intel_dwmac *dwmac = priv; in kmb_eth_fix_mac_speed() local
39 dev_err(dwmac->dev, "Invalid speed\n"); in kmb_eth_fix_mac_speed()
43 ret = clk_set_rate(dwmac->tx_clk, rate); in kmb_eth_fix_mac_speed()
45 dev_err(dwmac->dev, "Failed to configure tx clock rate\n"); in kmb_eth_fix_mac_speed()
56 { .compatible = "intel,keembay-dwmac", .data = &kmb_data },
65 struct intel_dwmac *dwmac; in intel_eth_plat_probe() local
75 dev_err(&pdev->dev, "dt configuration failed\n"); in intel_eth_plat_probe()
79 dwmac = devm_kzalloc(&pdev->dev, sizeof(*dwmac), GFP_KERNEL); in intel_eth_plat_probe()
80 if (!dwmac) in intel_eth_plat_probe()
81 return -ENOMEM; in intel_eth_plat_probe()
83 dwmac->dev = &pdev->dev; in intel_eth_plat_probe()
84 dwmac->tx_clk = NULL; in intel_eth_plat_probe()
91 dwmac->data = device_get_match_data(&pdev->dev); in intel_eth_plat_probe()
92 if (dwmac->data->fix_mac_speed) in intel_eth_plat_probe()
93 plat_dat->fix_mac_speed = dwmac->data->fix_mac_speed; in intel_eth_plat_probe()
96 if (dwmac->data->tx_clk_en) { in intel_eth_plat_probe()
97 dwmac->tx_clk = devm_clk_get(&pdev->dev, "tx_clk"); in intel_eth_plat_probe()
98 if (IS_ERR(dwmac->tx_clk)) in intel_eth_plat_probe()
99 return PTR_ERR(dwmac->tx_clk); in intel_eth_plat_probe()
101 ret = clk_prepare_enable(dwmac->tx_clk); in intel_eth_plat_probe()
103 dev_err(&pdev->dev, in intel_eth_plat_probe()
109 rate = clk_get_rate(dwmac->tx_clk); in intel_eth_plat_probe()
110 if (dwmac->data->tx_clk_rate && in intel_eth_plat_probe()
111 rate != dwmac->data->tx_clk_rate) { in intel_eth_plat_probe()
112 rate = dwmac->data->tx_clk_rate; in intel_eth_plat_probe()
113 ret = clk_set_rate(dwmac->tx_clk, rate); in intel_eth_plat_probe()
115 dev_err(&pdev->dev, in intel_eth_plat_probe()
122 rate = clk_get_rate(plat_dat->clk_ptp_ref); in intel_eth_plat_probe()
123 if (dwmac->data->ptp_ref_clk_rate && in intel_eth_plat_probe()
124 rate != dwmac->data->ptp_ref_clk_rate) { in intel_eth_plat_probe()
125 rate = dwmac->data->ptp_ref_clk_rate; in intel_eth_plat_probe()
126 ret = clk_set_rate(plat_dat->clk_ptp_ref, rate); in intel_eth_plat_probe()
128 dev_err(&pdev->dev, in intel_eth_plat_probe()
135 plat_dat->bsp_priv = dwmac; in intel_eth_plat_probe()
136 plat_dat->eee_usecs_rate = plat_dat->clk_ptp_rate; in intel_eth_plat_probe()
138 if (plat_dat->eee_usecs_rate > 0) { in intel_eth_plat_probe()
141 tx_lpi_usec = (plat_dat->eee_usecs_rate / 1000000) - 1; in intel_eth_plat_probe()
145 ret = stmmac_dvr_probe(&pdev->dev, plat_dat, &stmmac_res); in intel_eth_plat_probe()
152 if (dwmac->data->tx_clk_en) in intel_eth_plat_probe()
153 clk_disable_unprepare(dwmac->tx_clk); in intel_eth_plat_probe()
159 struct intel_dwmac *dwmac = get_stmmac_bsp_priv(&pdev->dev); in intel_eth_plat_remove() local
162 if (dwmac->data->tx_clk_en) in intel_eth_plat_remove()
163 clk_disable_unprepare(dwmac->tx_clk); in intel_eth_plat_remove()
170 .name = "intel-eth-plat",
178 MODULE_DESCRIPTION("Intel DWMAC platform driver");