Linux教程

linux ATA驱动中的宏AHCI_MAX_CLKS

本文主要是介绍linux ATA驱动中的宏AHCI_MAX_CLKS,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

源码疑问

Linux ATA驱动中libahci_platform_enable_clks函数会开启platform clocks,函数原型为drivers/ata/libahci_platform.c

int ahci_platform_enable_clks(struct ahci_host_priv *hpriv)
{
  int c, rc;
  for(c=0; c < AHCI_MAX_CLKS && hpriv->clks[c]; c++){
    rc = clk_prepare_enable(hpriv->clks[c]);
    if(rc)
        goto disable_unprepare_clk;
  }
  return 0;

disable_unprepare_clk:
    while(--c >= 0)
      clk_disable_unprepare(hpriv->clks[c]);
     return rc;
}
EXPORT_SYMBOL_GPL(ahci_platform_enable_clks);

问题:AHCI_MAX_CLKS

在drivers/ata/ahci.h文件中定义其为枚举变量AHCI_MAX_CLKS = 5,理解代码为什么会是5的时候参考AHCI1.3 && SATA3.0 && Synopsys SATA手册,只在Synopsys SATA手册找到clock domains中存在,具体应用如下:

在https://www.kernel.org/doc/html/v4.18/driver-api/libata.html#libata-driver-api查找相关变量,未果!

这篇关于linux ATA驱动中的宏AHCI_MAX_CLKS的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!