diff mbox series

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

Message ID 20201230090401.12627-1-ricky_wu@realtek.com (mailing list archive)
State New, archived
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.
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,