static void rts5260_set_aspm(struct rtsx_pcr *pcr, bool enable) { struct rtsx_cr_option *option = &pcr->option; u8 val = 0; if (pcr->aspm_enabled == enable) return; if (option->dev_aspm_mode == DEV_ASPM_DYNAMIC) { if (enable) val = pcr->aspm_en; rtsx_pci_update_cfg_byte(pcr, pcr->pcie_cap + PCI_EXP_LNKCTL, ASPM_MASK_NEG, val); } else if (option->dev_aspm_mode == DEV_ASPM_BACKDOOR) { u8 mask = FORCE_ASPM_VAL_MASK | FORCE_ASPM_CTL0; if (!enable) val = FORCE_ASPM_CTL0; rtsx_pci_write_register(pcr, ASPM_FORCE_CTL, mask, val); } pcr->aspm_enabled = enable; }
static inline void rtsx_pci_disable_aspm(struct rtsx_pcr *pcr) { rtsx_pci_update_cfg_byte(pcr, pcr->pcie_cap + PCI_EXP_LNKCTL, 0xFC, 0); }