2023-11-29 03:50:11

by Ricky Wu

[permalink] [raw]
Subject: [PATCH v6 0/3] Support new card reader rts5264

Summary
=======
This series adds to support New card reader rts5264
patch#1
Going to have new files to define rts5264 funtions,
and rts5264 register definition
patch#2
Add rts5264 to rtsx_pcr driver
patch#3
This new reader rts5264 can support sd express card
so need add the id to ths sd_init flow of rtsx_sdmmc

Patch structure
===============
v5->v6:
add more description for individual patches

v4->v5:
add summary for this series

v3->v4:
split new definition part up from same patch

v2->v3:
split misc part and mmc part

v1->v2:
remove ic version check for rts5264

Ricky Wu(3):
misc: rtsx: add to support new card reader rts5264 new
definition and function
misc: rtsx: add to support new card reader rts5264
mmc: rtsx: add rts5264 to support sd express card

drivers/misc/cardreader/Makefile | 2 +-
drivers/misc/cardreader/rts5264.c | 886 +++++++++++++++++++++++++++++
drivers/misc/cardreader/rts5264.h | 278 +++++++++
drivers/misc/cardreader/rtsx_pcr.c | 30 +-
drivers/misc/cardreader/rtsx_pcr.h | 1 +
drivers/mmc/host/rtsx_pci_sdmmc.c | 17 +-
include/linux/rtsx_pci.h | 8 +
7 files changed, 1215 insertions(+), 7 deletions(-)
create mode 100644 drivers/misc/cardreader/rts5264.c
create mode 100644 drivers/misc/cardreader/rts5264.h


--
2.25.1


2023-11-29 03:50:30

by Ricky Wu

[permalink] [raw]
Subject: [PATCH v6 3/3] mmc: rtsx: add rts5264 to support sd express card

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 <[email protected]>
---
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 <[email protected]>
*/

+#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