On Fri, Mar 16, 2012 at 07:08:57PM +0530, Venkatraman S wrote: > From: Balaji T K <balajitk@xxxxxx> > > Enable Auto-CMD12 for multi block read/write on HSMMC > Tested on OMAP4430, OMAP3430 and OMAP2430 SDP > > Signed-off-by: Balaji T K <balajitk@xxxxxx> > Signed-off-by: Venkatraman S <svenkatr@xxxxxx> > --- > 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