-1
我会通过网络驱动程序的源,找到这个探头功能为什么需要在linux网络驱动程序中获取系统总线的时钟信息?
priv->busclk = devm_clk_get(&pdev->dev, "ahb2_gmac");
if (IS_ERR(priv->busclk)) {
ret = PTR_ERR(priv->busclk);
dev_err(&pdev->dev, "Cannot get AHB clock err=%d\n", ret);
return ret;
}
ret = clk_prepare_enable(priv->busclk);
if (ret != 0) {
dev_err(&pdev->dev, "Cannot prepare_enable busclk\n");
return ret;
}
cr = clk_get_rate(priv->miiclk);
dev_info(&pdev->dev, "Current MII clkrate %lu\n", cr);
ret = clk_set_rate(priv->miiclk, cr/4);
在第一条语句devm_clk_get(& pdev->开发,“ahb2_gmac”), 我们越来越总线(AHB2)时钟和这里clk_get_rate (priv-> miiclk),我们正在获取mii interterface时钟
它提供什么purpore(获取总线和mii时钟),它如何帮助正确的emac操作?
硬件可能需要知道时钟频率以校准其用于计算传输速度的内部时钟? –
这可能在数据表中针对涉及的硬件之一进行了规定。 – immibis
这可能非常简单,只需确保设备的时钟(通过启用调用),这样您就不会使试图访问它的系统死锁。不知道'busclk'变量本身是否被实际用于任何事情,在哪里都很难说。 – Notlikethat