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