From: Victor Shih <victor.shih@genesyslogic.com.tw>
Due to a flaw in the hardware design, the GL9763e replay timer frequently
times out when ASPM is enabled. As a result, the warning messages will
often appear in the system log when the system accesses the GL9763e
PCI config. Therefore, the replay timer timeout must be masked.
Also rename the gli_set_gl9763e() to gl9763e_hw_setting() for consistency.
Signed-off-by: Victor Shih <victor.shih@genesyslogic.com.tw>
Cc: stable@vger.kernel.org
---
drivers/mmc/host/sdhci-pci-gli.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/mmc/host/sdhci-pci-gli.c b/drivers/mmc/host/sdhci-pci-gli.c
index 98ee3191b02f..7165dde9b6b8 100644
--- a/drivers/mmc/host/sdhci-pci-gli.c
+++ b/drivers/mmc/host/sdhci-pci-gli.c
@@ -1753,7 +1753,7 @@ static int gl9763e_add_host(struct sdhci_pci_slot *slot)
return ret;
}
-static void gli_set_gl9763e(struct sdhci_pci_slot *slot)
+static void gl9763e_hw_setting(struct sdhci_pci_slot *slot)
{
struct pci_dev *pdev = slot->chip->pdev;
u32 value;
@@ -1782,6 +1782,9 @@ static void gli_set_gl9763e(struct sdhci_pci_slot *slot)
value |= FIELD_PREP(GLI_9763E_HS400_RXDLY, GLI_9763E_HS400_RXDLY_5);
pci_write_config_dword(pdev, PCIE_GLI_9763E_CLKRXDLY, value);
+ /* mask the replay timer timeout of AER */
+ sdhci_gli_mask_replay_timer_timeout(pdev);
+
pci_read_config_dword(pdev, PCIE_GLI_9763E_VHS, &value);
value &= ~GLI_9763E_VHS_REV;
value |= FIELD_PREP(GLI_9763E_VHS_REV, GLI_9763E_VHS_REV_R);
@@ -1925,7 +1928,7 @@ static int gli_probe_slot_gl9763e(struct sdhci_pci_slot *slot)
gli_pcie_enable_msi(slot);
host->mmc_host_ops.hs400_enhanced_strobe =
gl9763e_hs400_enhanced_strobe;
- gli_set_gl9763e(slot);
+ gl9763e_hw_setting(slot);
sdhci_enable_v4_mode(host);
return 0;
--
2.43.0
On 25/07/2025 13:52, Victor Shih wrote: > From: Victor Shih <victor.shih@genesyslogic.com.tw> > > Due to a flaw in the hardware design, the GL9763e replay timer frequently > times out when ASPM is enabled. As a result, the warning messages will > often appear in the system log when the system accesses the GL9763e > PCI config. Therefore, the replay timer timeout must be masked. > > Also rename the gli_set_gl9763e() to gl9763e_hw_setting() for consistency. Should be a separate patch > > Signed-off-by: Victor Shih <victor.shih@genesyslogic.com.tw> It is preferred to have a fixes tag as well. What about Fixes: 1ae1d2d6e555e ("mmc: sdhci-pci-gli: Add Genesys Logic GL9763E support") > Cc: stable@vger.kernel.org > --- > drivers/mmc/host/sdhci-pci-gli.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/drivers/mmc/host/sdhci-pci-gli.c b/drivers/mmc/host/sdhci-pci-gli.c > index 98ee3191b02f..7165dde9b6b8 100644 > --- a/drivers/mmc/host/sdhci-pci-gli.c > +++ b/drivers/mmc/host/sdhci-pci-gli.c > @@ -1753,7 +1753,7 @@ static int gl9763e_add_host(struct sdhci_pci_slot *slot) > return ret; > } > > -static void gli_set_gl9763e(struct sdhci_pci_slot *slot) > +static void gl9763e_hw_setting(struct sdhci_pci_slot *slot) > { > struct pci_dev *pdev = slot->chip->pdev; > u32 value; > @@ -1782,6 +1782,9 @@ static void gli_set_gl9763e(struct sdhci_pci_slot *slot) > value |= FIELD_PREP(GLI_9763E_HS400_RXDLY, GLI_9763E_HS400_RXDLY_5); > pci_write_config_dword(pdev, PCIE_GLI_9763E_CLKRXDLY, value); > > + /* mask the replay timer timeout of AER */ > + sdhci_gli_mask_replay_timer_timeout(pdev); > + > pci_read_config_dword(pdev, PCIE_GLI_9763E_VHS, &value); > value &= ~GLI_9763E_VHS_REV; > value |= FIELD_PREP(GLI_9763E_VHS_REV, GLI_9763E_VHS_REV_R); > @@ -1925,7 +1928,7 @@ static int gli_probe_slot_gl9763e(struct sdhci_pci_slot *slot) > gli_pcie_enable_msi(slot); > host->mmc_host_ops.hs400_enhanced_strobe = > gl9763e_hs400_enhanced_strobe; > - gli_set_gl9763e(slot); > + gl9763e_hw_setting(slot); > sdhci_enable_v4_mode(host); > > return 0;
On Mon, Jul 28, 2025 at 2:56 PM Adrian Hunter <adrian.hunter@intel.com> wrote: > > On 25/07/2025 13:52, Victor Shih wrote: > > From: Victor Shih <victor.shih@genesyslogic.com.tw> > > > > Due to a flaw in the hardware design, the GL9763e replay timer frequently > > times out when ASPM is enabled. As a result, the warning messages will > > often appear in the system log when the system accesses the GL9763e > > PCI config. Therefore, the replay timer timeout must be masked. > > > > Also rename the gli_set_gl9763e() to gl9763e_hw_setting() for consistency. > > Should be a separate patch > Hi, Adrian I will split it into two patches in the next version. Thanks, Victor Shih > > > > Signed-off-by: Victor Shih <victor.shih@genesyslogic.com.tw> > > It is preferred to have a fixes tag as well. What about > > Fixes: 1ae1d2d6e555e ("mmc: sdhci-pci-gli: Add Genesys Logic GL9763E support") > Hi, Adrian I will add this fixes tag in the next version. Thanks, Victor Shih > > Cc: stable@vger.kernel.org > > --- > > drivers/mmc/host/sdhci-pci-gli.c | 7 +++++-- > > 1 file changed, 5 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/mmc/host/sdhci-pci-gli.c b/drivers/mmc/host/sdhci-pci-gli.c > > index 98ee3191b02f..7165dde9b6b8 100644 > > --- a/drivers/mmc/host/sdhci-pci-gli.c > > +++ b/drivers/mmc/host/sdhci-pci-gli.c > > @@ -1753,7 +1753,7 @@ static int gl9763e_add_host(struct sdhci_pci_slot *slot) > > return ret; > > } > > > > -static void gli_set_gl9763e(struct sdhci_pci_slot *slot) > > +static void gl9763e_hw_setting(struct sdhci_pci_slot *slot) > > { > > struct pci_dev *pdev = slot->chip->pdev; > > u32 value; > > @@ -1782,6 +1782,9 @@ static void gli_set_gl9763e(struct sdhci_pci_slot *slot) > > value |= FIELD_PREP(GLI_9763E_HS400_RXDLY, GLI_9763E_HS400_RXDLY_5); > > pci_write_config_dword(pdev, PCIE_GLI_9763E_CLKRXDLY, value); > > > > + /* mask the replay timer timeout of AER */ > > + sdhci_gli_mask_replay_timer_timeout(pdev); > > + > > pci_read_config_dword(pdev, PCIE_GLI_9763E_VHS, &value); > > value &= ~GLI_9763E_VHS_REV; > > value |= FIELD_PREP(GLI_9763E_VHS_REV, GLI_9763E_VHS_REV_R); > > @@ -1925,7 +1928,7 @@ static int gli_probe_slot_gl9763e(struct sdhci_pci_slot *slot) > > gli_pcie_enable_msi(slot); > > host->mmc_host_ops.hs400_enhanced_strobe = > > gl9763e_hs400_enhanced_strobe; > > - gli_set_gl9763e(slot); > > + gl9763e_hw_setting(slot); > > sdhci_enable_v4_mode(host); > > > > return 0; >
© 2016 - 2025 Red Hat, Inc.