Lines Matching full:eqos
185 struct tegra_eqos *eqos = priv; in tegra_eqos_fix_speed() local
207 dev_err(eqos->dev, "invalid speed %u\n", speed); in tegra_eqos_fix_speed()
213 value = readl(eqos->regs + SDMEMCOMPPADCTRL); in tegra_eqos_fix_speed()
215 writel(value, eqos->regs + SDMEMCOMPPADCTRL); in tegra_eqos_fix_speed()
219 value = readl(eqos->regs + AUTO_CAL_CONFIG); in tegra_eqos_fix_speed()
221 writel(value, eqos->regs + AUTO_CAL_CONFIG); in tegra_eqos_fix_speed()
223 err = readl_poll_timeout_atomic(eqos->regs + AUTO_CAL_STATUS, in tegra_eqos_fix_speed()
228 dev_err(eqos->dev, "calibration did not start\n"); in tegra_eqos_fix_speed()
232 err = readl_poll_timeout_atomic(eqos->regs + AUTO_CAL_STATUS, in tegra_eqos_fix_speed()
237 dev_err(eqos->dev, "calibration didn't finish\n"); in tegra_eqos_fix_speed()
242 value = readl(eqos->regs + SDMEMCOMPPADCTRL); in tegra_eqos_fix_speed()
244 writel(value, eqos->regs + SDMEMCOMPPADCTRL); in tegra_eqos_fix_speed()
246 value = readl(eqos->regs + AUTO_CAL_CONFIG); in tegra_eqos_fix_speed()
248 writel(value, eqos->regs + AUTO_CAL_CONFIG); in tegra_eqos_fix_speed()
251 err = clk_set_rate(eqos->clk_tx, rate); in tegra_eqos_fix_speed()
253 dev_err(eqos->dev, "failed to set TX rate: %d\n", err); in tegra_eqos_fix_speed()
258 struct tegra_eqos *eqos = priv; in tegra_eqos_init() local
262 rate = clk_get_rate(eqos->clk_slave); in tegra_eqos_init()
265 writel(value, eqos->regs + GMAC_1US_TIC_COUNTER); in tegra_eqos_init()
275 struct tegra_eqos *eqos; in tegra_eqos_probe() local
278 eqos = devm_kzalloc(&pdev->dev, sizeof(*eqos), GFP_KERNEL); in tegra_eqos_probe()
279 if (!eqos) { in tegra_eqos_probe()
284 eqos->dev = &pdev->dev; in tegra_eqos_probe()
285 eqos->regs = res->addr; in tegra_eqos_probe()
290 eqos->clk_master = devm_clk_get(&pdev->dev, "master_bus"); in tegra_eqos_probe()
291 if (IS_ERR(eqos->clk_master)) { in tegra_eqos_probe()
292 err = PTR_ERR(eqos->clk_master); in tegra_eqos_probe()
296 err = clk_prepare_enable(eqos->clk_master); in tegra_eqos_probe()
300 eqos->clk_slave = devm_clk_get(&pdev->dev, "slave_bus"); in tegra_eqos_probe()
301 if (IS_ERR(eqos->clk_slave)) { in tegra_eqos_probe()
302 err = PTR_ERR(eqos->clk_slave); in tegra_eqos_probe()
306 data->stmmac_clk = eqos->clk_slave; in tegra_eqos_probe()
308 err = clk_prepare_enable(eqos->clk_slave); in tegra_eqos_probe()
312 eqos->clk_rx = devm_clk_get(&pdev->dev, "rx"); in tegra_eqos_probe()
313 if (IS_ERR(eqos->clk_rx)) { in tegra_eqos_probe()
314 err = PTR_ERR(eqos->clk_rx); in tegra_eqos_probe()
318 err = clk_prepare_enable(eqos->clk_rx); in tegra_eqos_probe()
322 eqos->clk_tx = devm_clk_get(&pdev->dev, "tx"); in tegra_eqos_probe()
323 if (IS_ERR(eqos->clk_tx)) { in tegra_eqos_probe()
324 err = PTR_ERR(eqos->clk_tx); in tegra_eqos_probe()
328 err = clk_prepare_enable(eqos->clk_tx); in tegra_eqos_probe()
332 eqos->reset = devm_gpiod_get(&pdev->dev, "phy-reset", GPIOD_OUT_HIGH); in tegra_eqos_probe()
333 if (IS_ERR(eqos->reset)) { in tegra_eqos_probe()
334 err = PTR_ERR(eqos->reset); in tegra_eqos_probe()
339 gpiod_set_value(eqos->reset, 0); in tegra_eqos_probe()
344 eqos->rst = devm_reset_control_get(&pdev->dev, "eqos"); in tegra_eqos_probe()
345 if (IS_ERR(eqos->rst)) { in tegra_eqos_probe()
346 err = PTR_ERR(eqos->rst); in tegra_eqos_probe()
350 err = reset_control_assert(eqos->rst); in tegra_eqos_probe()
356 err = reset_control_deassert(eqos->rst); in tegra_eqos_probe()
365 data->bsp_priv = eqos; in tegra_eqos_probe()
368 err = tegra_eqos_init(pdev, eqos); in tegra_eqos_probe()
373 return eqos; in tegra_eqos_probe()
376 reset_control_assert(eqos->rst); in tegra_eqos_probe()
378 gpiod_set_value(eqos->reset, 1); in tegra_eqos_probe()
380 clk_disable_unprepare(eqos->clk_tx); in tegra_eqos_probe()
382 clk_disable_unprepare(eqos->clk_rx); in tegra_eqos_probe()
384 clk_disable_unprepare(eqos->clk_slave); in tegra_eqos_probe()
386 clk_disable_unprepare(eqos->clk_master); in tegra_eqos_probe()
388 eqos = ERR_PTR(err); in tegra_eqos_probe()
394 struct tegra_eqos *eqos = get_stmmac_bsp_priv(&pdev->dev); in tegra_eqos_remove() local
396 reset_control_assert(eqos->rst); in tegra_eqos_remove()
397 gpiod_set_value(eqos->reset, 1); in tegra_eqos_remove()
398 clk_disable_unprepare(eqos->clk_tx); in tegra_eqos_remove()
399 clk_disable_unprepare(eqos->clk_rx); in tegra_eqos_remove()
400 clk_disable_unprepare(eqos->clk_slave); in tegra_eqos_remove()
401 clk_disable_unprepare(eqos->clk_master); in tegra_eqos_remove()
505 { .compatible = "nvidia,tegra186-eqos", .data = &tegra_eqos_data },