繁体   English   中英

为什么需要在linux网络驱动程序中获取系统总线的时钟信息?

[英]Why it is required to get clock information of system bus in linux Network driver?

我正在浏览网络驱动程序源并在探测功能中找到它

    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->dev, "ahb2_gmac") 中,我们得到了 Bus(AHB2) 时钟,在这里 clk_get_rate(priv->miiclk),我们得到了 mii 接口时钟

它服务的目的是什么(获取总线和 mii 时钟),它如何帮助正确的 emac 操作?

它正在获取 DTB 中指定的设备时钟设置,并将设备时钟速率启用和设置为相同。 如果不启用时钟,外设将无法运行。 有关最终时钟速率设置的详细信息,您可能需要查看数据表

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM