Ich werde durch Quellnetzwerktreiber und dieseWarum ist es erforderlich, Uhr Informationen des System-Bus in Linux Netzwerktreiber zu bekommen?
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);
In ersten Anweisung devm_clk_get (& pdev-> dev "ahb2_gmac") in Probe-Funktion finden, wir Bus (AHB2) Uhr bekommen und hier clk_get_rate (priv-> miiclk), wir bekommen die mii interterface uhr
Was purpore es dient (die bus und mii uhr bekommen), wie es hilft in richtigen emac operationen?
Die Hardware muss möglicherweise die Frequenz der Uhren kennen, um ihre interne Uhr zu kalibrieren, die zur Berechnung der Übertragungsgeschwindigkeiten verwendet wird. –
Dies ist wahrscheinlich im Datenblatt für eines der beteiligten Hardwareteile angegeben. – immibis
Es kann so einfach sein, nur sicherzustellen, dass das Gerät getaktet ist (über den Aktivierungsaufruf), damit das System nicht blockiert wird, indem versucht wird, darauf zuzugreifen. Ohne zu wissen, ob und wo die 'busclk'-Variable selbst für irgendetwas verwendet wird, ist es schwer zu sagen. – Notlikethat