diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2020-07-21 16:23:35 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2020-07-22 13:34:27 +0200 |
commit | ed86a9877d05b99088a409a7603828b818a433dc (patch) | |
tree | 436f0f9618360dd11ed87d858ea4292988fac325 /drivers/misc/cardreader/rts5228.c | |
parent | 22bf3251d7b7da0339f41ec27f2c3d4e0ec02255 (diff) | |
download | linux-ed86a9877d05b99088a409a7603828b818a433dc.tar.gz linux-ed86a9877d05b99088a409a7603828b818a433dc.tar.bz2 linux-ed86a9877d05b99088a409a7603828b818a433dc.zip |
misc: rtsx: Find L1 PM Substates capability instead of hard-coding
Instead of hard-coding the location of the L1 PM Substates capability based
on the Device ID, search for it in the extended capabilities list. This
works for any device, as long as it implements the L1 PM Substates
capability correctly, so it doesn't require maintenance as new devices are
added. No functional change intended.
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Link: https://lore.kernel.org/r/20200721212336.1159079-5-helgaas@kernel.org
[ minor addition due to differences in my tree - gregkh]
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/misc/cardreader/rts5228.c')
-rw-r--r-- | drivers/misc/cardreader/rts5228.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/misc/cardreader/rts5228.c b/drivers/misc/cardreader/rts5228.c index 448929829de4..f5716c631104 100644 --- a/drivers/misc/cardreader/rts5228.c +++ b/drivers/misc/cardreader/rts5228.c @@ -379,11 +379,16 @@ static void rts5228_process_ocp(struct rtsx_pcr *pcr) static void rts5228_init_from_cfg(struct rtsx_pcr *pcr) { + struct pci_dev *pdev = pcr->pci; + int l1ss; u32 lval; struct rtsx_cr_option *option = &pcr->option; - pci_read_config_dword(pcr->pci, PCR_ASPM_SETTING_REG1, &lval); + l1ss = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_L1SS); + if (!l1ss) + return; + pci_read_config_dword(pdev, l1ss + PCI_L1SS_CTL1, &lval); if (0 == (lval & 0x0F)) rtsx_pci_enable_oobs_polling(pcr); |