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查找相关变量,未果!

posted @ 2021-11-08 14:21  合滨  阅读(180)  评论(0编辑  收藏  举报