diff mbox series

[1/2] mmc: rtsx: add delay before power on

Message ID 20201230090401.12627-1-ricky_wu@realtek.com
State Superseded
Headers show
Series [1/2] mmc: rtsx: add delay before power on | expand

Commit Message

Ricky WU Dec. 30, 2020, 9:04 a.m. UTC
From: Ricky Wu <ricky_wu@realtek.com>

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

Signed-off-by: Ricky Wu <ricky_wu@realtek.com>
---
 drivers/mmc/host/rtsx_pci_sdmmc.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Ulf Hansson Jan. 13, 2021, 9:58 a.m. UTC | #1
On Wed, 30 Dec 2020 at 10:04, <ricky_wu@realtek.com> wrote:
>

> From: Ricky Wu <ricky_wu@realtek.com>

>

> Make sure voltage below 0.5V before power on

> when do power cycle

>

> Signed-off-by: Ricky Wu <ricky_wu@realtek.com>

> ---

>  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
Ricky WU Jan. 13, 2021, 10:20 a.m. UTC | #2
> On Wed, 30 Dec 2020 at 10:04, <ricky_wu@realtek.com> wrote:

> >

> > From: Ricky Wu <ricky_wu@realtek.com>

> >

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

> >

> > Signed-off-by: Ricky Wu <ricky_wu@realtek.com>

> > ---

> >  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.
Ulf Hansson Jan. 13, 2021, 11:25 a.m. UTC | #3
On Wed, 30 Dec 2020 at 10:04, <ricky_wu@realtek.com> wrote:
>

> From: Ricky Wu <ricky_wu@realtek.com>

>

> Added flag MMC_CAP2_NO_SDIO to mmc->caps2

> Card Reader not support SDIO

>

> Signed-off-by: Ricky Wu <ricky_wu@realtek.com>


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

>
diff mbox series

Patch

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,