Message ID | 20231208032145.2143580-4-ricky_wu@realtek.com |
---|---|
State | New |
Headers | show |
Series | Support new card reader rts5264 | expand |
On Fri, 8 Dec 2023 at 04:22, Ricky Wu <ricky_wu@realtek.com> wrote: > > rts5264 can support sd express card, so add the id in sd express card init > to do rts5264 register setting when the sd express card insert > > Signed-off-by: Ricky Wu <ricky_wu@realtek.com> Greg, unless you think it's too late to get this in for v6.8, feel free to pick this mmc patch too as a part of the series. Acked-by: Ulf Hansson <ulf.hansson@linaro.org> Kind regards Uffe > --- > v3: split up mmc part from v2 patch > v4: split new definition up from v3 > --- > --- > drivers/mmc/host/rtsx_pci_sdmmc.c | 17 ++++++++++++++++- > 1 file changed, 16 insertions(+), 1 deletion(-) > > diff --git a/drivers/mmc/host/rtsx_pci_sdmmc.c b/drivers/mmc/host/rtsx_pci_sdmmc.c > index 87d78432a1e0..7dfe7c4e0077 100644 > --- a/drivers/mmc/host/rtsx_pci_sdmmc.c > +++ b/drivers/mmc/host/rtsx_pci_sdmmc.c > @@ -7,6 +7,7 @@ > * Wei WANG <wei_wang@realsil.com.cn> > */ > > +#include <linux/pci.h> > #include <linux/module.h> > #include <linux/slab.h> > #include <linux/highmem.h> > @@ -947,7 +948,7 @@ static int sd_power_on(struct realtek_pci_sdmmc *host, unsigned char power_mode) > /* send at least 74 clocks */ > rtsx_pci_write_register(pcr, SD_BUS_STAT, SD_CLK_TOGGLE_EN, SD_CLK_TOGGLE_EN); > > - if (PCI_PID(pcr) == PID_5261) { > + if ((PCI_PID(pcr) == PID_5261) || (PCI_PID(pcr) == PID_5264)) { > /* > * If test mode is set switch to SD Express mandatorily, > * this is only for factory testing. > @@ -1364,6 +1365,14 @@ static int sdmmc_init_sd_express(struct mmc_host *mmc, struct mmc_ios *ios) > struct realtek_pci_sdmmc *host = mmc_priv(mmc); > struct rtsx_pcr *pcr = host->pcr; > > + if (PCI_PID(pcr) == PID_5264) { > + pcie_capability_clear_and_set_word(pcr->pci, PCI_EXP_LNKCTL2, > + PCI_EXP_LNKCTL2_TLS, PCI_EXP_LNKCTL2_TLS_2_5GT); > + pci_write_config_byte(pcr->pci, 0x80e, 0x02); > + pcie_capability_clear_and_set_word(pcr->pci, PCI_EXP_LNKCTL2, > + PCI_EXP_LNKCTL2_TLS, PCI_EXP_LNKCTL2_TLS_5_0GT); > + } > + > /* Set relink_time for changing to PCIe card */ > relink_time = 0x8FFF; > > @@ -1379,6 +1388,12 @@ static int sdmmc_init_sd_express(struct mmc_host *mmc, struct mmc_ios *ios) > if (pcr->ops->disable_auto_blink) > pcr->ops->disable_auto_blink(pcr); > > + if (PCI_PID(pcr) == PID_5264) { > + rtsx_pci_write_register(pcr, RTS5264_AUTOLOAD_CFG2, > + RTS5264_CHIP_RST_N_SEL, RTS5264_CHIP_RST_N_SEL); > + rtsx_pci_write_register(pcr, GPIO_CTL, 0x02, 0x00); > + } > + > /* For PCIe/NVMe mode can't enter delink issue */ > pcr->hw_param.interrupt_en &= ~(SD_INT_EN); > rtsx_pci_writel(pcr, RTSX_BIER, pcr->hw_param.interrupt_en); > -- > 2.25.1 >
On Fri, Jan 05, 2024 at 11:16:52AM +0100, Ulf Hansson wrote: > On Fri, 8 Dec 2023 at 04:22, Ricky Wu <ricky_wu@realtek.com> wrote: > > > > rts5264 can support sd express card, so add the id in sd express card init > > to do rts5264 register setting when the sd express card insert > > > > Signed-off-by: Ricky Wu <ricky_wu@realtek.com> > > Greg, unless you think it's too late to get this in for v6.8, feel > free to pick this mmc patch too as a part of the series. > > Acked-by: Ulf Hansson <ulf.hansson@linaro.org> These are all part of my tree, and have been so for 3 weeks now, and in linux-next. thanks, greg k-h
diff --git a/drivers/mmc/host/rtsx_pci_sdmmc.c b/drivers/mmc/host/rtsx_pci_sdmmc.c index 87d78432a1e0..7dfe7c4e0077 100644 --- a/drivers/mmc/host/rtsx_pci_sdmmc.c +++ b/drivers/mmc/host/rtsx_pci_sdmmc.c @@ -7,6 +7,7 @@ * Wei WANG <wei_wang@realsil.com.cn> */ +#include <linux/pci.h> #include <linux/module.h> #include <linux/slab.h> #include <linux/highmem.h> @@ -947,7 +948,7 @@ static int sd_power_on(struct realtek_pci_sdmmc *host, unsigned char power_mode) /* send at least 74 clocks */ rtsx_pci_write_register(pcr, SD_BUS_STAT, SD_CLK_TOGGLE_EN, SD_CLK_TOGGLE_EN); - if (PCI_PID(pcr) == PID_5261) { + if ((PCI_PID(pcr) == PID_5261) || (PCI_PID(pcr) == PID_5264)) { /* * If test mode is set switch to SD Express mandatorily, * this is only for factory testing. @@ -1364,6 +1365,14 @@ static int sdmmc_init_sd_express(struct mmc_host *mmc, struct mmc_ios *ios) struct realtek_pci_sdmmc *host = mmc_priv(mmc); struct rtsx_pcr *pcr = host->pcr; + if (PCI_PID(pcr) == PID_5264) { + pcie_capability_clear_and_set_word(pcr->pci, PCI_EXP_LNKCTL2, + PCI_EXP_LNKCTL2_TLS, PCI_EXP_LNKCTL2_TLS_2_5GT); + pci_write_config_byte(pcr->pci, 0x80e, 0x02); + pcie_capability_clear_and_set_word(pcr->pci, PCI_EXP_LNKCTL2, + PCI_EXP_LNKCTL2_TLS, PCI_EXP_LNKCTL2_TLS_5_0GT); + } + /* Set relink_time for changing to PCIe card */ relink_time = 0x8FFF; @@ -1379,6 +1388,12 @@ static int sdmmc_init_sd_express(struct mmc_host *mmc, struct mmc_ios *ios) if (pcr->ops->disable_auto_blink) pcr->ops->disable_auto_blink(pcr); + if (PCI_PID(pcr) == PID_5264) { + rtsx_pci_write_register(pcr, RTS5264_AUTOLOAD_CFG2, + RTS5264_CHIP_RST_N_SEL, RTS5264_CHIP_RST_N_SEL); + rtsx_pci_write_register(pcr, GPIO_CTL, 0x02, 0x00); + } + /* For PCIe/NVMe mode can't enter delink issue */ pcr->hw_param.interrupt_en &= ~(SD_INT_EN); rtsx_pci_writel(pcr, RTSX_BIER, pcr->hw_param.interrupt_en);
rts5264 can support sd express card, so add the id in sd express card init to do rts5264 register setting when the sd express card insert Signed-off-by: Ricky Wu <ricky_wu@realtek.com> --- v3: split up mmc part from v2 patch v4: split new definition up from v3 --- --- drivers/mmc/host/rtsx_pci_sdmmc.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-)