All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marek Vasut <marex@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 1/4] mmc: fsl_esdhc: Add CMD11 support to switch to 1.8V
Date: Tue, 17 Feb 2015 20:41:44 +0100	[thread overview]
Message-ID: <201502172041.44596.marex@denx.de> (raw)
In-Reply-To: <1424176966-24749-1-git-send-email-otavio@ossystems.com.br>

On Tuesday, February 17, 2015 at 01:42:43 PM, Otavio Salvador wrote:
> This adds support to switch to 1.8V in case CMD11 succeeds.
> 
> Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
> ---
> 
> Changes in v2:
> - Fixed split string (Marek)
> 
>  drivers/mmc/fsl_esdhc.c | 29 ++++++++++++++++++++++-------
>  include/fsl_esdhc.h     |  2 ++
>  include/mmc.h           |  1 +
>  3 files changed, 25 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c
> index c55eb28..6a3e147 100644
> --- a/drivers/mmc/fsl_esdhc.c
> +++ b/drivers/mmc/fsl_esdhc.c
> @@ -54,19 +54,21 @@ struct fsl_esdhc {
>  	uint    fevt;		/* Force event register */
>  	uint    admaes;		/* ADMA error status register */
>  	uint    adsaddr;	/* ADMA system address register */
> -	char    reserved2[160];	/* reserved */
> +	char    reserved2[100];	/* reserved */
> +	uint    vendorspec;	/* Vendor Specific register */
> +	char    reserved3[59];	/* reserved */
>  	uint    hostver;	/* Host controller version register */
> -	char    reserved3[4];	/* reserved */
> -	uint    dmaerraddr;	/* DMA error address register */
>  	char    reserved4[4];	/* reserved */
> -	uint    dmaerrattr;	/* DMA error attribute register */
> +	uint    dmaerraddr;	/* DMA error address register */
>  	char    reserved5[4];	/* reserved */
> +	uint    dmaerrattr;	/* DMA error attribute register */
> +	char    reserved6[4];	/* reserved */
>  	uint    hostcapblt2;	/* Host controller capabilities register 2 */
> -	char    reserved6[8];	/* reserved */
> +	char    reserved7[8];	/* reserved */
>  	uint    tcr;		/* Tuning control register */
> -	char    reserved7[28];	/* reserved */
> +	char    reserved8[28];	/* reserved */
>  	uint    sddirctl;	/* SD direction control register */
> -	char    reserved8[712];	/* reserved */
> +	char    reserved9[712];	/* reserved */
>  	uint    scr;		/* eSDHC control register */
>  };
> 
> @@ -341,6 +343,15 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
> struct mmc_data *data) goto out;
>  	}
> 
> +	/* Switch voltage to 1.8V if CMD11 succeeded */
> +	if (cmd->cmdidx == SD_CMD_SWITCH_UHS18V) {
> +		esdhc_setbits32(&regs->vendorspec, ESDHC_VENDORSPEC_VSELECT);
> +
> +		printf("Run CMD11 1.8V switch\n");
> +		/* Sleep for 5 ms - max time for card to switch to 1.8V */
> +		udelay(5000);
> +	}
> +
>  	/* Workaround for ESDHC errata ENGcm03648 */
>  	if (!data && (cmd->resp_type & MMC_RSP_BUSY)) {
>  		int timeout = 2500;
> @@ -413,6 +424,10 @@ out:
>  			while ((esdhc_read32(&regs->sysctl) & SYSCTL_RSTD))
>  				;

This endless loop could use fixing ... anyone ?

>  		}
> +
> +		/* If this was CMD11, then notify that power cycle is needed */
> +		if (cmd->cmdidx == SD_CMD_SWITCH_UHS18V)
> +			printf("CMD11 to switch to 1.8V mode failed, card 
requires power
> cycle.\n"); }
> 
>  	esdhc_write32(&regs->irqstat, -1);

Reviewed-by: Marek Vasut <marex@denx.de>

  parent reply	other threads:[~2015-02-17 19:41 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-17 12:42 [U-Boot] [PATCH v2 1/4] mmc: fsl_esdhc: Add CMD11 support to switch to 1.8V Otavio Salvador
2015-02-17 12:42 ` [U-Boot] [PATCH v2 2/4] mmc: fsl_esdhc: Add support to force VSELECT set Otavio Salvador
2015-02-23  8:19   ` Stefano Babic
2015-02-17 12:42 ` [U-Boot] [PATCH v2 3/4] imx: mx6sl: Extend USDHC SD2 pins to support 8-wire use Otavio Salvador
2015-02-23  8:19   ` Stefano Babic
2015-02-17 12:42 ` [U-Boot] [PATCH v2 4/4] warp: Add initial WaRP Board support Otavio Salvador
2015-02-23  8:19   ` Stefano Babic
2015-02-17 19:41 ` Marek Vasut [this message]
2015-02-23  8:19 ` [U-Boot] [PATCH v2 1/4] mmc: fsl_esdhc: Add CMD11 support to switch to 1.8V Stefano Babic

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201502172041.44596.marex@denx.de \
    --to=marex@denx.de \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.