• Manivannan Sadhasivam's avatar
    PCI: qcom: Enable ASPM for platforms supporting 1.9.0 ops · 9f4f3dfa
    Manivannan Sadhasivam authored
    ASPM is supported by Qcom host controllers/bridges on most of the recent
    platforms and so the devices tested so far. But for enabling ASPM by
    default (without using Kconfig, kernel command-line or sysfs), BIOS has
    to enable ASPM on both host bridge and downstream devices during boot.
    
    Unfortunately, none of the BIOS available on Qcom platforms enables
    ASPM. Due to this, the platforms making use of Qcom SoCs draw high power
    during runtime.
    
    To fix this power draw issue, users have to enable ASPM using Kconfig,
    kernel command-line, sysfs or the BIOS has to start enabling ASPM.
    
    The latter may happen in the future, but that won't address the issue on
    current platforms. Also, asking users to enable a feature to get the power
    management right would provide an unpleasant out-of-the-box experience.
    
    So the apt solution is to enable ASPM in the controller driver itself. And
    this is being accomplished by calling pci_enable_link_state() in the newly
    introduced host_post_init() callback for all the devices connected to the
    bus. This function enables all supported link low power states for both
    host bridge and the downstream devices.
    
    Due to limited testing, ASPM is only enabled for platforms making use of
    ops_1_9_0 callbacks.
    
    [kwilczynski: commit log]
    Link: https://lore.kernel.org/linux-pci/20231010155914.9516-3-manivannan.sadhasivam@linaro.orgSigned-off-by: default avatarManivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Signed-off-by: default avatarKrzysztof Wilczyński <kwilczynski@kernel.org>
    9f4f3dfa
pcie-qcom.c 43.6 KB