2020-12-30 09:06:47

by Ricky Wu

[permalink] [raw]
Subject: [PATCH 1/2] mmc: rtsx: add delay before power on

From: Ricky Wu <[email protected]>

Make sure voltage below 0.5V before power on
when do power cycle

Signed-off-by: Ricky Wu <[email protected]>
---
drivers/mmc/host/rtsx_pci_sdmmc.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/mmc/host/rtsx_pci_sdmmc.c b/drivers/mmc/host/rtsx_pci_sdmmc.c
index e6f5bbce5685..d21b99962b36 100644
--- a/drivers/mmc/host/rtsx_pci_sdmmc.c
+++ b/drivers/mmc/host/rtsx_pci_sdmmc.c
@@ -906,6 +906,8 @@ static int sd_power_on(struct realtek_pci_sdmmc *host)
if (host->power_state == SDMMC_POWER_ON)
return 0;

+ mdelay(100);
+
rtsx_pci_init_cmd(pcr);
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_SELECT, 0x07, SD_MOD_SEL);
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_SHARE_MODE,
--
2.17.1


2020-12-30 09:06:58

by Ricky Wu

[permalink] [raw]
Subject: [PATCH 2/2] mmc: rtsx: Add MMC_CAP2_NO_SDIO flag

From: Ricky Wu <[email protected]>

Added flag MMC_CAP2_NO_SDIO to mmc->caps2
Card Reader not support SDIO

Signed-off-by: Ricky Wu <[email protected]>
---
drivers/mmc/host/rtsx_pci_sdmmc.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/mmc/host/rtsx_pci_sdmmc.c b/drivers/mmc/host/rtsx_pci_sdmmc.c
index d21b99962b36..6a8b0282f272 100644
--- a/drivers/mmc/host/rtsx_pci_sdmmc.c
+++ b/drivers/mmc/host/rtsx_pci_sdmmc.c
@@ -1427,7 +1427,8 @@ static void realtek_init_host(struct realtek_pci_sdmmc *host)
MMC_CAP_UHS_SDR12 | MMC_CAP_UHS_SDR25;
if (pcr->rtd3_en)
mmc->caps = mmc->caps | MMC_CAP_AGGRESSIVE_PM;
- mmc->caps2 = MMC_CAP2_NO_PRESCAN_POWERUP | MMC_CAP2_FULL_PWR_CYCLE;
+ mmc->caps2 = MMC_CAP2_NO_PRESCAN_POWERUP | MMC_CAP2_FULL_PWR_CYCLE |
+ MMC_CAP2_NO_SDIO;
mmc->max_current_330 = 400;
mmc->max_current_180 = 800;
mmc->ops = &realtek_pci_sdmmc_ops;
--
2.17.1

2021-01-13 10:02:32

by Ulf Hansson

[permalink] [raw]
Subject: Re: [PATCH 1/2] mmc: rtsx: add delay before power on

On Wed, 30 Dec 2020 at 10:04, <[email protected]> wrote:
>
> From: Ricky Wu <[email protected]>
>
> Make sure voltage below 0.5V before power on
> when do power cycle
>
> Signed-off-by: Ricky Wu <[email protected]>
> ---
> drivers/mmc/host/rtsx_pci_sdmmc.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/mmc/host/rtsx_pci_sdmmc.c b/drivers/mmc/host/rtsx_pci_sdmmc.c
> index e6f5bbce5685..d21b99962b36 100644
> --- a/drivers/mmc/host/rtsx_pci_sdmmc.c
> +++ b/drivers/mmc/host/rtsx_pci_sdmmc.c
> @@ -906,6 +906,8 @@ static int sd_power_on(struct realtek_pci_sdmmc *host)
> if (host->power_state == SDMMC_POWER_ON)
> return 0;
>
> + mdelay(100);
> +

Why exactly 100 ms? Can you at least add a comment about why in the code?

Moreover, I think you should convert to use msleep() rather than mdelay.

> rtsx_pci_init_cmd(pcr);
> rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_SELECT, 0x07, SD_MOD_SEL);
> rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_SHARE_MODE,
> --
> 2.17.1
>

Kind regards
Uffe

2021-01-13 10:22:52

by Ricky Wu

[permalink] [raw]
Subject: RE: [PATCH 1/2] mmc: rtsx: add delay before power on

> On Wed, 30 Dec 2020 at 10:04, <[email protected]> wrote:
> >
> > From: Ricky Wu <[email protected]>
> >
> > Make sure voltage below 0.5V before power on when do power cycle
> >
> > Signed-off-by: Ricky Wu <[email protected]>
> > ---
> > drivers/mmc/host/rtsx_pci_sdmmc.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/drivers/mmc/host/rtsx_pci_sdmmc.c
> > b/drivers/mmc/host/rtsx_pci_sdmmc.c
> > index e6f5bbce5685..d21b99962b36 100644
> > --- a/drivers/mmc/host/rtsx_pci_sdmmc.c
> > +++ b/drivers/mmc/host/rtsx_pci_sdmmc.c
> > @@ -906,6 +906,8 @@ static int sd_power_on(struct realtek_pci_sdmmc
> *host)
> > if (host->power_state == SDMMC_POWER_ON)
> > return 0;
> >
> > + mdelay(100);
> > +
>
> Why exactly 100 ms? Can you at least add a comment about why in the code?
>
> Moreover, I think you should convert to use msleep() rather than mdelay.
>

Because we need to make sure voltage below 0.5V before power on
mmc-core will do quickly power cycle at recognition card phase,
we need at least 100ms to make our device voltage below 0.5V

I will change mdelay() to msleep()

> > rtsx_pci_init_cmd(pcr);
> > rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_SELECT, 0x07,
> SD_MOD_SEL);
> > rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_SHARE_MODE,
> > --
> > 2.17.1
> >
>
> Kind regards
> Uffe
>
> ------Please consider the environment before printing this e-mail.

2021-01-13 11:29:01

by Ulf Hansson

[permalink] [raw]
Subject: Re: [PATCH 2/2] mmc: rtsx: Add MMC_CAP2_NO_SDIO flag

On Wed, 30 Dec 2020 at 10:04, <[email protected]> wrote:
>
> From: Ricky Wu <[email protected]>
>
> Added flag MMC_CAP2_NO_SDIO to mmc->caps2
> Card Reader not support SDIO
>
> Signed-off-by: Ricky Wu <[email protected]>

Applied for next, thanks!

Kind regards
Uffe


> ---
> drivers/mmc/host/rtsx_pci_sdmmc.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/host/rtsx_pci_sdmmc.c b/drivers/mmc/host/rtsx_pci_sdmmc.c
> index d21b99962b36..6a8b0282f272 100644
> --- a/drivers/mmc/host/rtsx_pci_sdmmc.c
> +++ b/drivers/mmc/host/rtsx_pci_sdmmc.c
> @@ -1427,7 +1427,8 @@ static void realtek_init_host(struct realtek_pci_sdmmc *host)
> MMC_CAP_UHS_SDR12 | MMC_CAP_UHS_SDR25;
> if (pcr->rtd3_en)
> mmc->caps = mmc->caps | MMC_CAP_AGGRESSIVE_PM;
> - mmc->caps2 = MMC_CAP2_NO_PRESCAN_POWERUP | MMC_CAP2_FULL_PWR_CYCLE;
> + mmc->caps2 = MMC_CAP2_NO_PRESCAN_POWERUP | MMC_CAP2_FULL_PWR_CYCLE |
> + MMC_CAP2_NO_SDIO;
> mmc->max_current_330 = 400;
> mmc->max_current_180 = 800;
> mmc->ops = &realtek_pci_sdmmc_ops;
> --
> 2.17.1
>