On Fri, Mar 16, 2012 at 07:08:57PM +0530, Venkatraman S wrote:
> From: Balaji T K <balaj...@ti.com>
> 
> Enable Auto-CMD12 for multi block read/write on HSMMC
> Tested on OMAP4430, OMAP3430 and OMAP2430 SDP
> 
> Signed-off-by: Balaji T K <balaj...@ti.com>
> Signed-off-by: Venkatraman S <svenk...@ti.com>
> ---
>  drivers/mmc/host/omap_hsmmc.c |   16 +++++++++++++---
>  1 file changed, 13 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
> index f29e1a2..a9ffd70 100644
> --- a/drivers/mmc/host/omap_hsmmc.c
> +++ b/drivers/mmc/host/omap_hsmmc.c
> @@ -85,6 +85,7 @@
>  #define BRR_ENABLE           (1 << 5)
>  #define DTO_ENABLE           (1 << 20)
>  #define INIT_STREAM          (1 << 1)
> +#define ACEN_ACMD12          (1 << 2)
>  #define DP_SELECT            (1 << 21)
>  #define DDIR                 (1 << 4)
>  #define DMA_EN                       0x1
> @@ -115,6 +116,7 @@
>  #define OMAP_MMC_MAX_CLOCK   52000000
>  #define DRIVER_NAME          "omap_hsmmc"
>  
> +#define AUTO_CMD12           (1 << 0)        /* Auto CMD12 support */
>  /*
>   * One controller can have multiple slots, like on some omap boards using
>   * omap.c controller driver. Luckily this is not currently done on any known
> @@ -175,6 +177,7 @@ struct omap_hsmmc_host {
>       int                     reqs_blocked;
>       int                     use_reg;
>       int                     req_in_progress;
> +     unsigned int            flags;
>       struct omap_hsmmc_next  next_data;
>  
>       struct  omap_mmc_platform_data  *pdata;
> @@ -766,6 +769,8 @@ omap_hsmmc_start_command(struct omap_hsmmc_host *host, 
> struct mmc_command *cmd,
>               cmdtype = 0x3;
>  
>       cmdreg = (cmd->opcode << 24) | (resptype << 16) | (cmdtype << 22);
> +     if ((host->flags & AUTO_CMD12) && mmc_op_multi(cmd->opcode))
> +             cmdreg |= ACEN_ACMD12;
>  
>       if (data) {
>               cmdreg |= DP_SELECT | MSBS | BCE;
> @@ -837,11 +842,15 @@ omap_hsmmc_xfer_done(struct omap_hsmmc_host *host, 
> struct mmc_data *data)
>       else
>               data->bytes_xfered = 0;
>  
> -     if (!data->stop) {
> +     if (data->stop && ((!(host->flags & AUTO_CMD12)) || data->error)) {
> +             omap_hsmmc_start_command(host, data->stop, NULL);
> +     }
> +     else {

while adding the braces, you broke the coding style. Please fix.

-- 
balbi

Attachment: signature.asc
Description: Digital signature

Reply via email to