All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH] mmc: remove the MMC_DATA_STREAM flag
@ 2016-01-14 12:08 Jaehoon Chung
  2016-01-15 17:01 ` Ludovic Desroches
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Jaehoon Chung @ 2016-01-14 12:08 UTC (permalink / raw)
  To: linux-mmc
  Cc: Ulf Hansson, Ludovic Desroches, Sonic Zhang, Krzysztof Kozlowski,
	Benjamin Herrenschmidt, Fabio Estevam, Robert Jarzmik, Ben Dooks,
	Hans de Goede, Adrian Hunter

It's not set to MMC_DATA_STREAM anywhere.
It seems that it had used with CMD11/20. But now CMD11/20 didn't also use.
I didn't know what is exactly, so i sent the patch as just RFC. 
If i get some comments for this, i will resend the patch after separate to each host controller.

If MMC_DATA_STREAM can be removed, then flags of data should be then one of MMC_DATA_READ and MMC_DATA_WRITE.

Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
---
 drivers/mmc/card/block.c       |  6 +++---
 drivers/mmc/host/atmel-mci.c   |  9 ++-------
 drivers/mmc/host/bfin_sdh.c    |  3 ---
 drivers/mmc/host/davinci_mmc.c | 15 +++------------
 drivers/mmc/host/dw_mmc.c      |  2 --
 drivers/mmc/host/jz4740_mmc.c  |  2 --
 drivers/mmc/host/mxcmmc.c      |  3 ---
 drivers/mmc/host/pxamci.c      |  6 ------
 drivers/mmc/host/s3cmci.c      |  3 +--
 drivers/mmc/host/sunxi-mmc.c   |  5 -----
 include/linux/mmc/core.h       |  1 -
 11 files changed, 9 insertions(+), 46 deletions(-)

diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
index 5914263..e7449cb 100644
--- a/drivers/mmc/card/block.c
+++ b/drivers/mmc/card/block.c
@@ -1525,13 +1525,13 @@ static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq,
 	}
 	if (rq_data_dir(req) == READ) {
 		brq->cmd.opcode = readcmd;
-		brq->data.flags |= MMC_DATA_READ;
+		brq->data.flags = MMC_DATA_READ;
 		if (brq->mrq.stop)
 			brq->stop.flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 |
 					MMC_CMD_AC;
 	} else {
 		brq->cmd.opcode = writecmd;
-		brq->data.flags |= MMC_DATA_WRITE;
+		brq->data.flags = MMC_DATA_WRITE;
 		if (brq->mrq.stop)
 			brq->stop.flags = MMC_RSP_SPI_R1B | MMC_RSP_R1B |
 					MMC_CMD_AC;
@@ -1800,7 +1800,7 @@ static void mmc_blk_packed_hdr_wrq_prep(struct mmc_queue_req *mqrq,
 
 	brq->data.blksz = 512;
 	brq->data.blocks = packed->blocks + hdr_blocks;
-	brq->data.flags |= MMC_DATA_WRITE;
+	brq->data.flags = MMC_DATA_WRITE;
 
 	brq->stop.opcode = MMC_STOP_TRANSMISSION;
 	brq->stop.arg = 0;
diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c
index a36ebda..e0c8c51 100644
--- a/drivers/mmc/host/atmel-mci.c
+++ b/drivers/mmc/host/atmel-mci.c
@@ -849,9 +849,7 @@ static u32 atmci_prepare_command(struct mmc_host *mmc,
 		if (cmd->opcode == SD_IO_RW_EXTENDED) {
 			cmdr |= ATMCI_CMDR_SDIO_BLOCK;
 		} else {
-			if (data->flags & MMC_DATA_STREAM)
-				cmdr |= ATMCI_CMDR_STREAM;
-			else if (data->blocks > 1)
+			if (data->blocks > 1)
 				cmdr |= ATMCI_CMDR_MULTI_BLOCK;
 			else
 				cmdr |= ATMCI_CMDR_BLOCK;
@@ -1372,10 +1370,7 @@ static void atmci_start_request(struct atmel_mci *host,
 		host->stop_cmdr |= ATMCI_CMDR_STOP_XFER;
 		if (!(data->flags & MMC_DATA_WRITE))
 			host->stop_cmdr |= ATMCI_CMDR_TRDIR_READ;
-		if (data->flags & MMC_DATA_STREAM)
-			host->stop_cmdr |= ATMCI_CMDR_STREAM;
-		else
-			host->stop_cmdr |= ATMCI_CMDR_MULTI_BLOCK;
+		host->stop_cmdr |= ATMCI_CMDR_MULTI_BLOCK;
 	}
 
 	/*
diff --git a/drivers/mmc/host/bfin_sdh.c b/drivers/mmc/host/bfin_sdh.c
index 2b7f37e..526231e 100644
--- a/drivers/mmc/host/bfin_sdh.c
+++ b/drivers/mmc/host/bfin_sdh.c
@@ -126,9 +126,6 @@ static int sdh_setup_data(struct sdh_host *host, struct mmc_data *data)
 	length = data->blksz * data->blocks;
 	bfin_write_SDH_DATA_LGTH(length);
 
-	if (data->flags & MMC_DATA_STREAM)
-		data_ctl |= DTX_MODE;
-
 	if (data->flags & MMC_DATA_READ)
 		data_ctl |= DTX_DIR;
 	/* Only supports power-of-2 block size */
diff --git a/drivers/mmc/host/davinci_mmc.c b/drivers/mmc/host/davinci_mmc.c
index ea2a2eb..693144e 100644
--- a/drivers/mmc/host/davinci_mmc.c
+++ b/drivers/mmc/host/davinci_mmc.c
@@ -346,10 +346,6 @@ static void mmc_davinci_start_command(struct mmc_davinci_host *host,
 	if (cmd->data)
 		cmd_reg |= MMCCMD_WDATX;
 
-	/* Setting whether stream or block transfer */
-	if (cmd->flags & MMC_DATA_STREAM)
-		cmd_reg |= MMCCMD_STRMTP;
-
 	/* Setting whether data read or write */
 	if (host->data_dir == DAVINCI_MMC_DATADIR_WRITE)
 		cmd_reg |= MMCCMD_DTRW;
@@ -568,8 +564,7 @@ mmc_davinci_prepare_data(struct mmc_davinci_host *host, struct mmc_request *req)
 		return;
 	}
 
-	dev_dbg(mmc_dev(host->mmc), "%s %s, %d blocks of %d bytes\n",
-		(data->flags & MMC_DATA_STREAM) ? "stream" : "block",
+	dev_dbg(mmc_dev(host->mmc), "%s, %d blocks of %d bytes\n",
 		(data->flags & MMC_DATA_WRITE) ? "write" : "read",
 		data->blocks, data->blksz);
 	dev_dbg(mmc_dev(host->mmc), "  DTO %d cycles + %d ns\n",
@@ -584,22 +579,18 @@ mmc_davinci_prepare_data(struct mmc_davinci_host *host, struct mmc_request *req)
 	writel(data->blksz, host->base + DAVINCI_MMCBLEN);
 
 	/* Configure the FIFO */
-	switch (data->flags & MMC_DATA_WRITE) {
-	case MMC_DATA_WRITE:
+	if (data->flags & MMC_DATA_WRITE) {
 		host->data_dir = DAVINCI_MMC_DATADIR_WRITE;
 		writel(fifo_lev | MMCFIFOCTL_FIFODIR_WR | MMCFIFOCTL_FIFORST,
 			host->base + DAVINCI_MMCFIFOCTL);
 		writel(fifo_lev | MMCFIFOCTL_FIFODIR_WR,
 			host->base + DAVINCI_MMCFIFOCTL);
-		break;
-
-	default:
+	} else {
 		host->data_dir = DAVINCI_MMC_DATADIR_READ;
 		writel(fifo_lev | MMCFIFOCTL_FIFODIR_RD | MMCFIFOCTL_FIFORST,
 			host->base + DAVINCI_MMCFIFOCTL);
 		writel(fifo_lev | MMCFIFOCTL_FIFODIR_RD,
 			host->base + DAVINCI_MMCFIFOCTL);
-		break;
 	}
 
 	host->buffer = NULL;
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index fddbcb6..b542c42 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -290,8 +290,6 @@ static u32 dw_mci_prepare_command(struct mmc_host *mmc, struct mmc_command *cmd)
 	data = cmd->data;
 	if (data) {
 		cmdr |= SDMMC_CMD_DAT_EXP;
-		if (data->flags & MMC_DATA_STREAM)
-			cmdr |= SDMMC_CMD_STRM_MODE;
 		if (data->flags & MMC_DATA_WRITE)
 			cmdr |= SDMMC_CMD_DAT_WR;
 	}
diff --git a/drivers/mmc/host/jz4740_mmc.c b/drivers/mmc/host/jz4740_mmc.c
index 76e8bce..03ddf0e 100644
--- a/drivers/mmc/host/jz4740_mmc.c
+++ b/drivers/mmc/host/jz4740_mmc.c
@@ -660,8 +660,6 @@ static void jz4740_mmc_send_command(struct jz4740_mmc_host *host,
 		cmdat |= JZ_MMC_CMDAT_DATA_EN;
 		if (cmd->data->flags & MMC_DATA_WRITE)
 			cmdat |= JZ_MMC_CMDAT_WRITE;
-		if (cmd->data->flags & MMC_DATA_STREAM)
-			cmdat |= JZ_MMC_CMDAT_STREAM;
 		if (host->use_dma)
 			cmdat |= JZ_MMC_CMDAT_DMA_EN;
 
diff --git a/drivers/mmc/host/mxcmmc.c b/drivers/mmc/host/mxcmmc.c
index d110f9e..3d1ea5e 100644
--- a/drivers/mmc/host/mxcmmc.c
+++ b/drivers/mmc/host/mxcmmc.c
@@ -307,9 +307,6 @@ static int mxcmci_setup_data(struct mxcmci_host *host, struct mmc_data *data)
 	enum dma_transfer_direction slave_dirn;
 	int i, nents;
 
-	if (data->flags & MMC_DATA_STREAM)
-		nob = 0xffff;
-
 	host->data = data;
 	data->bytes_xfered = 0;
 
diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c
index ce08896..4285d3a 100644
--- a/drivers/mmc/host/pxamci.c
+++ b/drivers/mmc/host/pxamci.c
@@ -191,9 +191,6 @@ static void pxamci_setup_data(struct pxamci_host *host, struct mmc_data *data)
 
 	host->data = data;
 
-	if (data->flags & MMC_DATA_STREAM)
-		nob = 0xffff;
-
 	writel(nob, host->base + MMC_NOB);
 	writel(data->blksz, host->base + MMC_BLKLEN);
 
@@ -443,9 +440,6 @@ static void pxamci_request(struct mmc_host *mmc, struct mmc_request *mrq)
 		cmdat |= CMDAT_DATAEN | CMDAT_DMAEN;
 		if (mrq->data->flags & MMC_DATA_WRITE)
 			cmdat |= CMDAT_WRITE;
-
-		if (mrq->data->flags & MMC_DATA_STREAM)
-			cmdat |= CMDAT_STREAM;
 	}
 
 	pxamci_start_cmd(host, mrq->cmd, cmdat);
diff --git a/drivers/mmc/host/s3cmci.c b/drivers/mmc/host/s3cmci.c
index 6291d50..39814f3 100644
--- a/drivers/mmc/host/s3cmci.c
+++ b/drivers/mmc/host/s3cmci.c
@@ -1014,8 +1014,7 @@ static int s3cmci_setup_data(struct s3cmci_host *host, struct mmc_data *data)
 	if (host->bus_width == MMC_BUS_WIDTH_4)
 		dcon |= S3C2410_SDIDCON_WIDEBUS;
 
-	if (!(data->flags & MMC_DATA_STREAM))
-		dcon |= S3C2410_SDIDCON_BLOCKMODE;
+	dcon |= S3C2410_SDIDCON_BLOCKMODE;
 
 	if (data->flags & MMC_DATA_WRITE) {
 		dcon |= S3C2410_SDIDCON_TXAFTERRESP;
diff --git a/drivers/mmc/host/sunxi-mmc.c b/drivers/mmc/host/sunxi-mmc.c
index 83de82b..d61c58e 100644
--- a/drivers/mmc/host/sunxi-mmc.c
+++ b/drivers/mmc/host/sunxi-mmc.c
@@ -815,11 +815,6 @@ static void sunxi_mmc_request(struct mmc_host *mmc, struct mmc_request *mrq)
 
 		if ((cmd->flags & MMC_CMD_MASK) == MMC_CMD_ADTC) {
 			cmd_val |= SDXC_DATA_EXPIRE | SDXC_WAIT_PRE_OVER;
-			if (cmd->data->flags & MMC_DATA_STREAM) {
-				imask |= SDXC_AUTO_COMMAND_DONE;
-				cmd_val |= SDXC_SEQUENCE_MODE |
-					   SDXC_SEND_AUTO_STOP;
-			}
 
 			if (cmd->data->stop) {
 				imask |= SDXC_AUTO_COMMAND_DONE;
diff --git a/include/linux/mmc/core.h b/include/linux/mmc/core.h
index 37967b6..b01e77d 100644
--- a/include/linux/mmc/core.h
+++ b/include/linux/mmc/core.h
@@ -113,7 +113,6 @@ struct mmc_data {
 
 #define MMC_DATA_WRITE	(1 << 8)
 #define MMC_DATA_READ	(1 << 9)
-#define MMC_DATA_STREAM	(1 << 10)
 
 	unsigned int		bytes_xfered;
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [RFC PATCH] mmc: remove the MMC_DATA_STREAM flag
  2016-01-14 12:08 [RFC PATCH] mmc: remove the MMC_DATA_STREAM flag Jaehoon Chung
@ 2016-01-15 17:01 ` Ludovic Desroches
  2016-01-22  1:18   ` Jaehoon Chung
  2016-01-23 17:59 ` Robert Jarzmik
  2016-01-27 14:16 ` Ulf Hansson
  2 siblings, 1 reply; 6+ messages in thread
From: Ludovic Desroches @ 2016-01-15 17:01 UTC (permalink / raw)
  To: Jaehoon Chung
  Cc: linux-mmc, Ulf Hansson, Ludovic Desroches, Sonic Zhang,
	Krzysztof Kozlowski, Benjamin Herrenschmidt, Fabio Estevam,
	Robert Jarzmik, Ben Dooks, Hans de Goede, Adrian Hunter

On Thu, Jan 14, 2016 at 09:08:31PM +0900, Jaehoon Chung wrote:
> It's not set to MMC_DATA_STREAM anywhere.
> It seems that it had used with CMD11/20. But now CMD11/20 didn't also use.
> I didn't know what is exactly, so i sent the patch as just RFC. 
> If i get some comments for this, i will resend the patch after separate to each host controller.
> 
> If MMC_DATA_STREAM can be removed, then flags of data should be then one of MMC_DATA_READ and MMC_DATA_WRITE.
> 
> Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
> ---
>  drivers/mmc/card/block.c       |  6 +++---
>  drivers/mmc/host/atmel-mci.c   |  9 ++-------

Hi,

Since I don't have use case in mind of data stream instead of blocks and
it became dead code, you can add my
Acked-by: Ludovic Desroches <ludovic.desroches@atmel.com>

for atmel-mci.c.

Regards

Ludovic

>  drivers/mmc/host/bfin_sdh.c    |  3 ---
>  drivers/mmc/host/davinci_mmc.c | 15 +++------------
>  drivers/mmc/host/dw_mmc.c      |  2 --
>  drivers/mmc/host/jz4740_mmc.c  |  2 --
>  drivers/mmc/host/mxcmmc.c      |  3 ---
>  drivers/mmc/host/pxamci.c      |  6 ------
>  drivers/mmc/host/s3cmci.c      |  3 +--
>  drivers/mmc/host/sunxi-mmc.c   |  5 -----
>  include/linux/mmc/core.h       |  1 -
>  11 files changed, 9 insertions(+), 46 deletions(-)
> 
> diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
> index 5914263..e7449cb 100644
> --- a/drivers/mmc/card/block.c
> +++ b/drivers/mmc/card/block.c
> @@ -1525,13 +1525,13 @@ static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq,
>  	}
>  	if (rq_data_dir(req) == READ) {
>  		brq->cmd.opcode = readcmd;
> -		brq->data.flags |= MMC_DATA_READ;
> +		brq->data.flags = MMC_DATA_READ;
>  		if (brq->mrq.stop)
>  			brq->stop.flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 |
>  					MMC_CMD_AC;
>  	} else {
>  		brq->cmd.opcode = writecmd;
> -		brq->data.flags |= MMC_DATA_WRITE;
> +		brq->data.flags = MMC_DATA_WRITE;
>  		if (brq->mrq.stop)
>  			brq->stop.flags = MMC_RSP_SPI_R1B | MMC_RSP_R1B |
>  					MMC_CMD_AC;
> @@ -1800,7 +1800,7 @@ static void mmc_blk_packed_hdr_wrq_prep(struct mmc_queue_req *mqrq,
>  
>  	brq->data.blksz = 512;
>  	brq->data.blocks = packed->blocks + hdr_blocks;
> -	brq->data.flags |= MMC_DATA_WRITE;
> +	brq->data.flags = MMC_DATA_WRITE;
>  
>  	brq->stop.opcode = MMC_STOP_TRANSMISSION;
>  	brq->stop.arg = 0;
> diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c
> index a36ebda..e0c8c51 100644
> --- a/drivers/mmc/host/atmel-mci.c
> +++ b/drivers/mmc/host/atmel-mci.c
> @@ -849,9 +849,7 @@ static u32 atmci_prepare_command(struct mmc_host *mmc,
>  		if (cmd->opcode == SD_IO_RW_EXTENDED) {
>  			cmdr |= ATMCI_CMDR_SDIO_BLOCK;
>  		} else {
> -			if (data->flags & MMC_DATA_STREAM)
> -				cmdr |= ATMCI_CMDR_STREAM;
> -			else if (data->blocks > 1)
> +			if (data->blocks > 1)
>  				cmdr |= ATMCI_CMDR_MULTI_BLOCK;
>  			else
>  				cmdr |= ATMCI_CMDR_BLOCK;
> @@ -1372,10 +1370,7 @@ static void atmci_start_request(struct atmel_mci *host,
>  		host->stop_cmdr |= ATMCI_CMDR_STOP_XFER;
>  		if (!(data->flags & MMC_DATA_WRITE))
>  			host->stop_cmdr |= ATMCI_CMDR_TRDIR_READ;
> -		if (data->flags & MMC_DATA_STREAM)
> -			host->stop_cmdr |= ATMCI_CMDR_STREAM;
> -		else
> -			host->stop_cmdr |= ATMCI_CMDR_MULTI_BLOCK;
> +		host->stop_cmdr |= ATMCI_CMDR_MULTI_BLOCK;
>  	}
>  
>  	/*
> diff --git a/drivers/mmc/host/bfin_sdh.c b/drivers/mmc/host/bfin_sdh.c
> index 2b7f37e..526231e 100644
> --- a/drivers/mmc/host/bfin_sdh.c
> +++ b/drivers/mmc/host/bfin_sdh.c
> @@ -126,9 +126,6 @@ static int sdh_setup_data(struct sdh_host *host, struct mmc_data *data)
>  	length = data->blksz * data->blocks;
>  	bfin_write_SDH_DATA_LGTH(length);
>  
> -	if (data->flags & MMC_DATA_STREAM)
> -		data_ctl |= DTX_MODE;
> -
>  	if (data->flags & MMC_DATA_READ)
>  		data_ctl |= DTX_DIR;
>  	/* Only supports power-of-2 block size */
> diff --git a/drivers/mmc/host/davinci_mmc.c b/drivers/mmc/host/davinci_mmc.c
> index ea2a2eb..693144e 100644
> --- a/drivers/mmc/host/davinci_mmc.c
> +++ b/drivers/mmc/host/davinci_mmc.c
> @@ -346,10 +346,6 @@ static void mmc_davinci_start_command(struct mmc_davinci_host *host,
>  	if (cmd->data)
>  		cmd_reg |= MMCCMD_WDATX;
>  
> -	/* Setting whether stream or block transfer */
> -	if (cmd->flags & MMC_DATA_STREAM)
> -		cmd_reg |= MMCCMD_STRMTP;
> -
>  	/* Setting whether data read or write */
>  	if (host->data_dir == DAVINCI_MMC_DATADIR_WRITE)
>  		cmd_reg |= MMCCMD_DTRW;
> @@ -568,8 +564,7 @@ mmc_davinci_prepare_data(struct mmc_davinci_host *host, struct mmc_request *req)
>  		return;
>  	}
>  
> -	dev_dbg(mmc_dev(host->mmc), "%s %s, %d blocks of %d bytes\n",
> -		(data->flags & MMC_DATA_STREAM) ? "stream" : "block",
> +	dev_dbg(mmc_dev(host->mmc), "%s, %d blocks of %d bytes\n",
>  		(data->flags & MMC_DATA_WRITE) ? "write" : "read",
>  		data->blocks, data->blksz);
>  	dev_dbg(mmc_dev(host->mmc), "  DTO %d cycles + %d ns\n",
> @@ -584,22 +579,18 @@ mmc_davinci_prepare_data(struct mmc_davinci_host *host, struct mmc_request *req)
>  	writel(data->blksz, host->base + DAVINCI_MMCBLEN);
>  
>  	/* Configure the FIFO */
> -	switch (data->flags & MMC_DATA_WRITE) {
> -	case MMC_DATA_WRITE:
> +	if (data->flags & MMC_DATA_WRITE) {
>  		host->data_dir = DAVINCI_MMC_DATADIR_WRITE;
>  		writel(fifo_lev | MMCFIFOCTL_FIFODIR_WR | MMCFIFOCTL_FIFORST,
>  			host->base + DAVINCI_MMCFIFOCTL);
>  		writel(fifo_lev | MMCFIFOCTL_FIFODIR_WR,
>  			host->base + DAVINCI_MMCFIFOCTL);
> -		break;
> -
> -	default:
> +	} else {
>  		host->data_dir = DAVINCI_MMC_DATADIR_READ;
>  		writel(fifo_lev | MMCFIFOCTL_FIFODIR_RD | MMCFIFOCTL_FIFORST,
>  			host->base + DAVINCI_MMCFIFOCTL);
>  		writel(fifo_lev | MMCFIFOCTL_FIFODIR_RD,
>  			host->base + DAVINCI_MMCFIFOCTL);
> -		break;
>  	}
>  
>  	host->buffer = NULL;
> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> index fddbcb6..b542c42 100644
> --- a/drivers/mmc/host/dw_mmc.c
> +++ b/drivers/mmc/host/dw_mmc.c
> @@ -290,8 +290,6 @@ static u32 dw_mci_prepare_command(struct mmc_host *mmc, struct mmc_command *cmd)
>  	data = cmd->data;
>  	if (data) {
>  		cmdr |= SDMMC_CMD_DAT_EXP;
> -		if (data->flags & MMC_DATA_STREAM)
> -			cmdr |= SDMMC_CMD_STRM_MODE;
>  		if (data->flags & MMC_DATA_WRITE)
>  			cmdr |= SDMMC_CMD_DAT_WR;
>  	}
> diff --git a/drivers/mmc/host/jz4740_mmc.c b/drivers/mmc/host/jz4740_mmc.c
> index 76e8bce..03ddf0e 100644
> --- a/drivers/mmc/host/jz4740_mmc.c
> +++ b/drivers/mmc/host/jz4740_mmc.c
> @@ -660,8 +660,6 @@ static void jz4740_mmc_send_command(struct jz4740_mmc_host *host,
>  		cmdat |= JZ_MMC_CMDAT_DATA_EN;
>  		if (cmd->data->flags & MMC_DATA_WRITE)
>  			cmdat |= JZ_MMC_CMDAT_WRITE;
> -		if (cmd->data->flags & MMC_DATA_STREAM)
> -			cmdat |= JZ_MMC_CMDAT_STREAM;
>  		if (host->use_dma)
>  			cmdat |= JZ_MMC_CMDAT_DMA_EN;
>  
> diff --git a/drivers/mmc/host/mxcmmc.c b/drivers/mmc/host/mxcmmc.c
> index d110f9e..3d1ea5e 100644
> --- a/drivers/mmc/host/mxcmmc.c
> +++ b/drivers/mmc/host/mxcmmc.c
> @@ -307,9 +307,6 @@ static int mxcmci_setup_data(struct mxcmci_host *host, struct mmc_data *data)
>  	enum dma_transfer_direction slave_dirn;
>  	int i, nents;
>  
> -	if (data->flags & MMC_DATA_STREAM)
> -		nob = 0xffff;
> -
>  	host->data = data;
>  	data->bytes_xfered = 0;
>  
> diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c
> index ce08896..4285d3a 100644
> --- a/drivers/mmc/host/pxamci.c
> +++ b/drivers/mmc/host/pxamci.c
> @@ -191,9 +191,6 @@ static void pxamci_setup_data(struct pxamci_host *host, struct mmc_data *data)
>  
>  	host->data = data;
>  
> -	if (data->flags & MMC_DATA_STREAM)
> -		nob = 0xffff;
> -
>  	writel(nob, host->base + MMC_NOB);
>  	writel(data->blksz, host->base + MMC_BLKLEN);
>  
> @@ -443,9 +440,6 @@ static void pxamci_request(struct mmc_host *mmc, struct mmc_request *mrq)
>  		cmdat |= CMDAT_DATAEN | CMDAT_DMAEN;
>  		if (mrq->data->flags & MMC_DATA_WRITE)
>  			cmdat |= CMDAT_WRITE;
> -
> -		if (mrq->data->flags & MMC_DATA_STREAM)
> -			cmdat |= CMDAT_STREAM;
>  	}
>  
>  	pxamci_start_cmd(host, mrq->cmd, cmdat);
> diff --git a/drivers/mmc/host/s3cmci.c b/drivers/mmc/host/s3cmci.c
> index 6291d50..39814f3 100644
> --- a/drivers/mmc/host/s3cmci.c
> +++ b/drivers/mmc/host/s3cmci.c
> @@ -1014,8 +1014,7 @@ static int s3cmci_setup_data(struct s3cmci_host *host, struct mmc_data *data)
>  	if (host->bus_width == MMC_BUS_WIDTH_4)
>  		dcon |= S3C2410_SDIDCON_WIDEBUS;
>  
> -	if (!(data->flags & MMC_DATA_STREAM))
> -		dcon |= S3C2410_SDIDCON_BLOCKMODE;
> +	dcon |= S3C2410_SDIDCON_BLOCKMODE;
>  
>  	if (data->flags & MMC_DATA_WRITE) {
>  		dcon |= S3C2410_SDIDCON_TXAFTERRESP;
> diff --git a/drivers/mmc/host/sunxi-mmc.c b/drivers/mmc/host/sunxi-mmc.c
> index 83de82b..d61c58e 100644
> --- a/drivers/mmc/host/sunxi-mmc.c
> +++ b/drivers/mmc/host/sunxi-mmc.c
> @@ -815,11 +815,6 @@ static void sunxi_mmc_request(struct mmc_host *mmc, struct mmc_request *mrq)
>  
>  		if ((cmd->flags & MMC_CMD_MASK) == MMC_CMD_ADTC) {
>  			cmd_val |= SDXC_DATA_EXPIRE | SDXC_WAIT_PRE_OVER;
> -			if (cmd->data->flags & MMC_DATA_STREAM) {
> -				imask |= SDXC_AUTO_COMMAND_DONE;
> -				cmd_val |= SDXC_SEQUENCE_MODE |
> -					   SDXC_SEND_AUTO_STOP;
> -			}
>  
>  			if (cmd->data->stop) {
>  				imask |= SDXC_AUTO_COMMAND_DONE;
> diff --git a/include/linux/mmc/core.h b/include/linux/mmc/core.h
> index 37967b6..b01e77d 100644
> --- a/include/linux/mmc/core.h
> +++ b/include/linux/mmc/core.h
> @@ -113,7 +113,6 @@ struct mmc_data {
>  
>  #define MMC_DATA_WRITE	(1 << 8)
>  #define MMC_DATA_READ	(1 << 9)
> -#define MMC_DATA_STREAM	(1 << 10)
>  
>  	unsigned int		bytes_xfered;
>  
> -- 
> 1.9.1

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [RFC PATCH] mmc: remove the MMC_DATA_STREAM flag
  2016-01-15 17:01 ` Ludovic Desroches
@ 2016-01-22  1:18   ` Jaehoon Chung
  0 siblings, 0 replies; 6+ messages in thread
From: Jaehoon Chung @ 2016-01-22  1:18 UTC (permalink / raw)
  To: linux-mmc, Ulf Hansson, Sonic Zhang, Krzysztof Kozlowski,
	Benjamin Herrenschmidt, Fabio Estevam, Robert Jarzmik, Ben Dooks,
	Hans de Goede, Adrian Hunter

Hi,

On 01/16/2016 02:01 AM, Ludovic Desroches wrote:
> On Thu, Jan 14, 2016 at 09:08:31PM +0900, Jaehoon Chung wrote:
>> It's not set to MMC_DATA_STREAM anywhere.
>> It seems that it had used with CMD11/20. But now CMD11/20 didn't also use.
>> I didn't know what is exactly, so i sent the patch as just RFC. 
>> If i get some comments for this, i will resend the patch after separate to each host controller.
>>
>> If MMC_DATA_STREAM can be removed, then flags of data should be then one of MMC_DATA_READ and MMC_DATA_WRITE.
>>
>> Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
>> ---
>>  drivers/mmc/card/block.c       |  6 +++---
>>  drivers/mmc/host/atmel-mci.c   |  9 ++-------
> 
> Hi,
> 
> Since I don't have use case in mind of data stream instead of blocks and
> it became dead code, you can add my
> Acked-by: Ludovic Desroches <ludovic.desroches@atmel.com>


Ludovic, Thanks for reviewing this.

Do other guys have any comment? If give me the comment, it's helpful to me.

Best Regards,
Jaehoon Chung

> 
> for atmel-mci.c.
> 
> Regards
> 
> Ludovic
> 
>>  drivers/mmc/host/bfin_sdh.c    |  3 ---
>>  drivers/mmc/host/davinci_mmc.c | 15 +++------------
>>  drivers/mmc/host/dw_mmc.c      |  2 --
>>  drivers/mmc/host/jz4740_mmc.c  |  2 --
>>  drivers/mmc/host/mxcmmc.c      |  3 ---
>>  drivers/mmc/host/pxamci.c      |  6 ------
>>  drivers/mmc/host/s3cmci.c      |  3 +--
>>  drivers/mmc/host/sunxi-mmc.c   |  5 -----
>>  include/linux/mmc/core.h       |  1 -
>>  11 files changed, 9 insertions(+), 46 deletions(-)
>>
>> diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
>> index 5914263..e7449cb 100644
>> --- a/drivers/mmc/card/block.c
>> +++ b/drivers/mmc/card/block.c
>> @@ -1525,13 +1525,13 @@ static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq,
>>  	}
>>  	if (rq_data_dir(req) == READ) {
>>  		brq->cmd.opcode = readcmd;
>> -		brq->data.flags |= MMC_DATA_READ;
>> +		brq->data.flags = MMC_DATA_READ;
>>  		if (brq->mrq.stop)
>>  			brq->stop.flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 |
>>  					MMC_CMD_AC;
>>  	} else {
>>  		brq->cmd.opcode = writecmd;
>> -		brq->data.flags |= MMC_DATA_WRITE;
>> +		brq->data.flags = MMC_DATA_WRITE;
>>  		if (brq->mrq.stop)
>>  			brq->stop.flags = MMC_RSP_SPI_R1B | MMC_RSP_R1B |
>>  					MMC_CMD_AC;
>> @@ -1800,7 +1800,7 @@ static void mmc_blk_packed_hdr_wrq_prep(struct mmc_queue_req *mqrq,
>>  
>>  	brq->data.blksz = 512;
>>  	brq->data.blocks = packed->blocks + hdr_blocks;
>> -	brq->data.flags |= MMC_DATA_WRITE;
>> +	brq->data.flags = MMC_DATA_WRITE;
>>  
>>  	brq->stop.opcode = MMC_STOP_TRANSMISSION;
>>  	brq->stop.arg = 0;
>> diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c
>> index a36ebda..e0c8c51 100644
>> --- a/drivers/mmc/host/atmel-mci.c
>> +++ b/drivers/mmc/host/atmel-mci.c
>> @@ -849,9 +849,7 @@ static u32 atmci_prepare_command(struct mmc_host *mmc,
>>  		if (cmd->opcode == SD_IO_RW_EXTENDED) {
>>  			cmdr |= ATMCI_CMDR_SDIO_BLOCK;
>>  		} else {
>> -			if (data->flags & MMC_DATA_STREAM)
>> -				cmdr |= ATMCI_CMDR_STREAM;
>> -			else if (data->blocks > 1)
>> +			if (data->blocks > 1)
>>  				cmdr |= ATMCI_CMDR_MULTI_BLOCK;
>>  			else
>>  				cmdr |= ATMCI_CMDR_BLOCK;
>> @@ -1372,10 +1370,7 @@ static void atmci_start_request(struct atmel_mci *host,
>>  		host->stop_cmdr |= ATMCI_CMDR_STOP_XFER;
>>  		if (!(data->flags & MMC_DATA_WRITE))
>>  			host->stop_cmdr |= ATMCI_CMDR_TRDIR_READ;
>> -		if (data->flags & MMC_DATA_STREAM)
>> -			host->stop_cmdr |= ATMCI_CMDR_STREAM;
>> -		else
>> -			host->stop_cmdr |= ATMCI_CMDR_MULTI_BLOCK;
>> +		host->stop_cmdr |= ATMCI_CMDR_MULTI_BLOCK;
>>  	}
>>  
>>  	/*
>> diff --git a/drivers/mmc/host/bfin_sdh.c b/drivers/mmc/host/bfin_sdh.c
>> index 2b7f37e..526231e 100644
>> --- a/drivers/mmc/host/bfin_sdh.c
>> +++ b/drivers/mmc/host/bfin_sdh.c
>> @@ -126,9 +126,6 @@ static int sdh_setup_data(struct sdh_host *host, struct mmc_data *data)
>>  	length = data->blksz * data->blocks;
>>  	bfin_write_SDH_DATA_LGTH(length);
>>  
>> -	if (data->flags & MMC_DATA_STREAM)
>> -		data_ctl |= DTX_MODE;
>> -
>>  	if (data->flags & MMC_DATA_READ)
>>  		data_ctl |= DTX_DIR;
>>  	/* Only supports power-of-2 block size */
>> diff --git a/drivers/mmc/host/davinci_mmc.c b/drivers/mmc/host/davinci_mmc.c
>> index ea2a2eb..693144e 100644
>> --- a/drivers/mmc/host/davinci_mmc.c
>> +++ b/drivers/mmc/host/davinci_mmc.c
>> @@ -346,10 +346,6 @@ static void mmc_davinci_start_command(struct mmc_davinci_host *host,
>>  	if (cmd->data)
>>  		cmd_reg |= MMCCMD_WDATX;
>>  
>> -	/* Setting whether stream or block transfer */
>> -	if (cmd->flags & MMC_DATA_STREAM)
>> -		cmd_reg |= MMCCMD_STRMTP;
>> -
>>  	/* Setting whether data read or write */
>>  	if (host->data_dir == DAVINCI_MMC_DATADIR_WRITE)
>>  		cmd_reg |= MMCCMD_DTRW;
>> @@ -568,8 +564,7 @@ mmc_davinci_prepare_data(struct mmc_davinci_host *host, struct mmc_request *req)
>>  		return;
>>  	}
>>  
>> -	dev_dbg(mmc_dev(host->mmc), "%s %s, %d blocks of %d bytes\n",
>> -		(data->flags & MMC_DATA_STREAM) ? "stream" : "block",
>> +	dev_dbg(mmc_dev(host->mmc), "%s, %d blocks of %d bytes\n",
>>  		(data->flags & MMC_DATA_WRITE) ? "write" : "read",
>>  		data->blocks, data->blksz);
>>  	dev_dbg(mmc_dev(host->mmc), "  DTO %d cycles + %d ns\n",
>> @@ -584,22 +579,18 @@ mmc_davinci_prepare_data(struct mmc_davinci_host *host, struct mmc_request *req)
>>  	writel(data->blksz, host->base + DAVINCI_MMCBLEN);
>>  
>>  	/* Configure the FIFO */
>> -	switch (data->flags & MMC_DATA_WRITE) {
>> -	case MMC_DATA_WRITE:
>> +	if (data->flags & MMC_DATA_WRITE) {
>>  		host->data_dir = DAVINCI_MMC_DATADIR_WRITE;
>>  		writel(fifo_lev | MMCFIFOCTL_FIFODIR_WR | MMCFIFOCTL_FIFORST,
>>  			host->base + DAVINCI_MMCFIFOCTL);
>>  		writel(fifo_lev | MMCFIFOCTL_FIFODIR_WR,
>>  			host->base + DAVINCI_MMCFIFOCTL);
>> -		break;
>> -
>> -	default:
>> +	} else {
>>  		host->data_dir = DAVINCI_MMC_DATADIR_READ;
>>  		writel(fifo_lev | MMCFIFOCTL_FIFODIR_RD | MMCFIFOCTL_FIFORST,
>>  			host->base + DAVINCI_MMCFIFOCTL);
>>  		writel(fifo_lev | MMCFIFOCTL_FIFODIR_RD,
>>  			host->base + DAVINCI_MMCFIFOCTL);
>> -		break;
>>  	}
>>  
>>  	host->buffer = NULL;
>> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
>> index fddbcb6..b542c42 100644
>> --- a/drivers/mmc/host/dw_mmc.c
>> +++ b/drivers/mmc/host/dw_mmc.c
>> @@ -290,8 +290,6 @@ static u32 dw_mci_prepare_command(struct mmc_host *mmc, struct mmc_command *cmd)
>>  	data = cmd->data;
>>  	if (data) {
>>  		cmdr |= SDMMC_CMD_DAT_EXP;
>> -		if (data->flags & MMC_DATA_STREAM)
>> -			cmdr |= SDMMC_CMD_STRM_MODE;
>>  		if (data->flags & MMC_DATA_WRITE)
>>  			cmdr |= SDMMC_CMD_DAT_WR;
>>  	}
>> diff --git a/drivers/mmc/host/jz4740_mmc.c b/drivers/mmc/host/jz4740_mmc.c
>> index 76e8bce..03ddf0e 100644
>> --- a/drivers/mmc/host/jz4740_mmc.c
>> +++ b/drivers/mmc/host/jz4740_mmc.c
>> @@ -660,8 +660,6 @@ static void jz4740_mmc_send_command(struct jz4740_mmc_host *host,
>>  		cmdat |= JZ_MMC_CMDAT_DATA_EN;
>>  		if (cmd->data->flags & MMC_DATA_WRITE)
>>  			cmdat |= JZ_MMC_CMDAT_WRITE;
>> -		if (cmd->data->flags & MMC_DATA_STREAM)
>> -			cmdat |= JZ_MMC_CMDAT_STREAM;
>>  		if (host->use_dma)
>>  			cmdat |= JZ_MMC_CMDAT_DMA_EN;
>>  
>> diff --git a/drivers/mmc/host/mxcmmc.c b/drivers/mmc/host/mxcmmc.c
>> index d110f9e..3d1ea5e 100644
>> --- a/drivers/mmc/host/mxcmmc.c
>> +++ b/drivers/mmc/host/mxcmmc.c
>> @@ -307,9 +307,6 @@ static int mxcmci_setup_data(struct mxcmci_host *host, struct mmc_data *data)
>>  	enum dma_transfer_direction slave_dirn;
>>  	int i, nents;
>>  
>> -	if (data->flags & MMC_DATA_STREAM)
>> -		nob = 0xffff;
>> -
>>  	host->data = data;
>>  	data->bytes_xfered = 0;
>>  
>> diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c
>> index ce08896..4285d3a 100644
>> --- a/drivers/mmc/host/pxamci.c
>> +++ b/drivers/mmc/host/pxamci.c
>> @@ -191,9 +191,6 @@ static void pxamci_setup_data(struct pxamci_host *host, struct mmc_data *data)
>>  
>>  	host->data = data;
>>  
>> -	if (data->flags & MMC_DATA_STREAM)
>> -		nob = 0xffff;
>> -
>>  	writel(nob, host->base + MMC_NOB);
>>  	writel(data->blksz, host->base + MMC_BLKLEN);
>>  
>> @@ -443,9 +440,6 @@ static void pxamci_request(struct mmc_host *mmc, struct mmc_request *mrq)
>>  		cmdat |= CMDAT_DATAEN | CMDAT_DMAEN;
>>  		if (mrq->data->flags & MMC_DATA_WRITE)
>>  			cmdat |= CMDAT_WRITE;
>> -
>> -		if (mrq->data->flags & MMC_DATA_STREAM)
>> -			cmdat |= CMDAT_STREAM;
>>  	}
>>  
>>  	pxamci_start_cmd(host, mrq->cmd, cmdat);
>> diff --git a/drivers/mmc/host/s3cmci.c b/drivers/mmc/host/s3cmci.c
>> index 6291d50..39814f3 100644
>> --- a/drivers/mmc/host/s3cmci.c
>> +++ b/drivers/mmc/host/s3cmci.c
>> @@ -1014,8 +1014,7 @@ static int s3cmci_setup_data(struct s3cmci_host *host, struct mmc_data *data)
>>  	if (host->bus_width == MMC_BUS_WIDTH_4)
>>  		dcon |= S3C2410_SDIDCON_WIDEBUS;
>>  
>> -	if (!(data->flags & MMC_DATA_STREAM))
>> -		dcon |= S3C2410_SDIDCON_BLOCKMODE;
>> +	dcon |= S3C2410_SDIDCON_BLOCKMODE;
>>  
>>  	if (data->flags & MMC_DATA_WRITE) {
>>  		dcon |= S3C2410_SDIDCON_TXAFTERRESP;
>> diff --git a/drivers/mmc/host/sunxi-mmc.c b/drivers/mmc/host/sunxi-mmc.c
>> index 83de82b..d61c58e 100644
>> --- a/drivers/mmc/host/sunxi-mmc.c
>> +++ b/drivers/mmc/host/sunxi-mmc.c
>> @@ -815,11 +815,6 @@ static void sunxi_mmc_request(struct mmc_host *mmc, struct mmc_request *mrq)
>>  
>>  		if ((cmd->flags & MMC_CMD_MASK) == MMC_CMD_ADTC) {
>>  			cmd_val |= SDXC_DATA_EXPIRE | SDXC_WAIT_PRE_OVER;
>> -			if (cmd->data->flags & MMC_DATA_STREAM) {
>> -				imask |= SDXC_AUTO_COMMAND_DONE;
>> -				cmd_val |= SDXC_SEQUENCE_MODE |
>> -					   SDXC_SEND_AUTO_STOP;
>> -			}
>>  
>>  			if (cmd->data->stop) {
>>  				imask |= SDXC_AUTO_COMMAND_DONE;
>> diff --git a/include/linux/mmc/core.h b/include/linux/mmc/core.h
>> index 37967b6..b01e77d 100644
>> --- a/include/linux/mmc/core.h
>> +++ b/include/linux/mmc/core.h
>> @@ -113,7 +113,6 @@ struct mmc_data {
>>  
>>  #define MMC_DATA_WRITE	(1 << 8)
>>  #define MMC_DATA_READ	(1 << 9)
>> -#define MMC_DATA_STREAM	(1 << 10)
>>  
>>  	unsigned int		bytes_xfered;
>>  
>> -- 
>> 1.9.1
> 
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [RFC PATCH] mmc: remove the MMC_DATA_STREAM flag
  2016-01-14 12:08 [RFC PATCH] mmc: remove the MMC_DATA_STREAM flag Jaehoon Chung
  2016-01-15 17:01 ` Ludovic Desroches
@ 2016-01-23 17:59 ` Robert Jarzmik
  2016-01-25  2:10   ` Jaehoon Chung
  2016-01-27 14:16 ` Ulf Hansson
  2 siblings, 1 reply; 6+ messages in thread
From: Robert Jarzmik @ 2016-01-23 17:59 UTC (permalink / raw)
  To: Jaehoon Chung
  Cc: linux-mmc, Ulf Hansson, Ludovic Desroches, Sonic Zhang,
	Krzysztof Kozlowski, Benjamin Herrenschmidt, Fabio Estevam,
	Ben Dooks, Hans de Goede, Adrian Hunter

Jaehoon Chung <jh80.chung@samsung.com> writes:

> It's not set to MMC_DATA_STREAM anywhere.
> It seems that it had used with CMD11/20. But now CMD11/20 didn't also use.
> I didn't know what is exactly, so i sent the patch as just RFC. 
> If i get some comments for this, i will resend the patch after separate to each host controller.
>
> If MMC_DATA_STREAM can be removed, then flags of data should be then one of
> MMC_DATA_READ and MMC_DATA_WRITE.
The commit message won't pass checkpatch, will it ?

> --- a/drivers/mmc/card/block.c
> +++ b/drivers/mmc/card/block.c
> @@ -1525,13 +1525,13 @@ static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq,
>  	}
>  	if (rq_data_dir(req) == READ) {
>  		brq->cmd.opcode = readcmd;
> -		brq->data.flags |= MMC_DATA_READ;
> +		brq->data.flags = MMC_DATA_READ;
Why this chunk ? If the caller had already set some flags of its own, why
overwrite them ? That has no connection to MMC_DATA_STREAM I can see.
...
> -		brq->data.flags |= MMC_DATA_WRITE;
> +		brq->data.flags = MMC_DATA_WRITE;
Ditto.
> -	brq->data.flags |= MMC_DATA_WRITE;
> +	brq->data.flags = MMC_DATA_WRITE;
Ditto.

... drivers not within my area zapped ...

> diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c
> index ce08896..4285d3a 100644
> --- a/drivers/mmc/host/pxamci.c
> +++ b/drivers/mmc/host/pxamci.c
Works for me.

Cheers.

-- 
Robert

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [RFC PATCH] mmc: remove the MMC_DATA_STREAM flag
  2016-01-23 17:59 ` Robert Jarzmik
@ 2016-01-25  2:10   ` Jaehoon Chung
  0 siblings, 0 replies; 6+ messages in thread
From: Jaehoon Chung @ 2016-01-25  2:10 UTC (permalink / raw)
  To: Robert Jarzmik
  Cc: linux-mmc, Ulf Hansson, Ludovic Desroches, Sonic Zhang,
	Krzysztof Kozlowski, Benjamin Herrenschmidt, Fabio Estevam,
	Ben Dooks, Hans de Goede, Adrian Hunter, Andi Shyti

Hi, Robert.

On 01/24/2016 02:59 AM, Robert Jarzmik wrote:
> Jaehoon Chung <jh80.chung@samsung.com> writes:
> 
>> It's not set to MMC_DATA_STREAM anywhere.
>> It seems that it had used with CMD11/20. But now CMD11/20 didn't also use.
>> I didn't know what is exactly, so i sent the patch as just RFC. 
>> If i get some comments for this, i will resend the patch after separate to each host controller.
>>
>> If MMC_DATA_STREAM can be removed, then flags of data should be then one of
>> MMC_DATA_READ and MMC_DATA_WRITE.
> The commit message won't pass checkpatch, will it ?

As you know, I mentioned if i get other comments, i will resend the patch.
This patch is RFC patch.

> 
>> --- a/drivers/mmc/card/block.c
>> +++ b/drivers/mmc/card/block.c
>> @@ -1525,13 +1525,13 @@ static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq,
>>  	}
>>  	if (rq_data_dir(req) == READ) {
>>  		brq->cmd.opcode = readcmd;
>> -		brq->data.flags |= MMC_DATA_READ;
>> +		brq->data.flags = MMC_DATA_READ;
> Why this chunk ? If the caller had already set some flags of its own, why
> overwrite them ? That has no connection to MMC_DATA_STREAM I can see.

If MMC_DATA_STREAM is removed, there are only two flags MMC_DATA_READ and MMC_DATA_WRITE.
Are there other flags, except MMC_DATA_READ, MMC_DATA_WRITE?
READ and WRITE can not use together.

If i missed other flags, let me know, plz. 

Best Regards,
Jaehoon Chung

> ...
>> -		brq->data.flags |= MMC_DATA_WRITE;
>> +		brq->data.flags = MMC_DATA_WRITE;
> Ditto.
>> -	brq->data.flags |= MMC_DATA_WRITE;
>> +	brq->data.flags = MMC_DATA_WRITE;
> Ditto.
> 
> ... drivers not within my area zapped ...
> 
>> diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c
>> index ce08896..4285d3a 100644
>> --- a/drivers/mmc/host/pxamci.c
>> +++ b/drivers/mmc/host/pxamci.c
> Works for me.
> 
> Cheers.
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [RFC PATCH] mmc: remove the MMC_DATA_STREAM flag
  2016-01-14 12:08 [RFC PATCH] mmc: remove the MMC_DATA_STREAM flag Jaehoon Chung
  2016-01-15 17:01 ` Ludovic Desroches
  2016-01-23 17:59 ` Robert Jarzmik
@ 2016-01-27 14:16 ` Ulf Hansson
  2 siblings, 0 replies; 6+ messages in thread
From: Ulf Hansson @ 2016-01-27 14:16 UTC (permalink / raw)
  To: Jaehoon Chung
  Cc: linux-mmc, Ludovic Desroches, Sonic Zhang, Krzysztof Kozlowski,
	Benjamin Herrenschmidt, Fabio Estevam, Robert Jarzmik, Ben Dooks,
	Hans de Goede, Adrian Hunter

On 14 January 2016 at 13:08, Jaehoon Chung <jh80.chung@samsung.com> wrote:
> It's not set to MMC_DATA_STREAM anywhere.
> It seems that it had used with CMD11/20. But now CMD11/20 didn't also use.
> I didn't know what is exactly, so i sent the patch as just RFC.
> If i get some comments for this, i will resend the patch after separate to each host controller.
>
> If MMC_DATA_STREAM can be removed, then flags of data should be then one of MMC_DATA_READ and MMC_DATA_WRITE.
>
> Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>

This looks good to me. Please go ahead and send a non-RFC version that
I can pick up.

Whether you want to split it into several patches per host or not, I
don't have any strong preferences. Both ways works for me.

Kind regards
Uffe

> ---
>  drivers/mmc/card/block.c       |  6 +++---
>  drivers/mmc/host/atmel-mci.c   |  9 ++-------
>  drivers/mmc/host/bfin_sdh.c    |  3 ---
>  drivers/mmc/host/davinci_mmc.c | 15 +++------------
>  drivers/mmc/host/dw_mmc.c      |  2 --
>  drivers/mmc/host/jz4740_mmc.c  |  2 --
>  drivers/mmc/host/mxcmmc.c      |  3 ---
>  drivers/mmc/host/pxamci.c      |  6 ------
>  drivers/mmc/host/s3cmci.c      |  3 +--
>  drivers/mmc/host/sunxi-mmc.c   |  5 -----
>  include/linux/mmc/core.h       |  1 -
>  11 files changed, 9 insertions(+), 46 deletions(-)
>
> diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
> index 5914263..e7449cb 100644
> --- a/drivers/mmc/card/block.c
> +++ b/drivers/mmc/card/block.c
> @@ -1525,13 +1525,13 @@ static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq,
>         }
>         if (rq_data_dir(req) == READ) {
>                 brq->cmd.opcode = readcmd;
> -               brq->data.flags |= MMC_DATA_READ;
> +               brq->data.flags = MMC_DATA_READ;
>                 if (brq->mrq.stop)
>                         brq->stop.flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 |
>                                         MMC_CMD_AC;
>         } else {
>                 brq->cmd.opcode = writecmd;
> -               brq->data.flags |= MMC_DATA_WRITE;
> +               brq->data.flags = MMC_DATA_WRITE;
>                 if (brq->mrq.stop)
>                         brq->stop.flags = MMC_RSP_SPI_R1B | MMC_RSP_R1B |
>                                         MMC_CMD_AC;
> @@ -1800,7 +1800,7 @@ static void mmc_blk_packed_hdr_wrq_prep(struct mmc_queue_req *mqrq,
>
>         brq->data.blksz = 512;
>         brq->data.blocks = packed->blocks + hdr_blocks;
> -       brq->data.flags |= MMC_DATA_WRITE;
> +       brq->data.flags = MMC_DATA_WRITE;
>
>         brq->stop.opcode = MMC_STOP_TRANSMISSION;
>         brq->stop.arg = 0;
> diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c
> index a36ebda..e0c8c51 100644
> --- a/drivers/mmc/host/atmel-mci.c
> +++ b/drivers/mmc/host/atmel-mci.c
> @@ -849,9 +849,7 @@ static u32 atmci_prepare_command(struct mmc_host *mmc,
>                 if (cmd->opcode == SD_IO_RW_EXTENDED) {
>                         cmdr |= ATMCI_CMDR_SDIO_BLOCK;
>                 } else {
> -                       if (data->flags & MMC_DATA_STREAM)
> -                               cmdr |= ATMCI_CMDR_STREAM;
> -                       else if (data->blocks > 1)
> +                       if (data->blocks > 1)
>                                 cmdr |= ATMCI_CMDR_MULTI_BLOCK;
>                         else
>                                 cmdr |= ATMCI_CMDR_BLOCK;
> @@ -1372,10 +1370,7 @@ static void atmci_start_request(struct atmel_mci *host,
>                 host->stop_cmdr |= ATMCI_CMDR_STOP_XFER;
>                 if (!(data->flags & MMC_DATA_WRITE))
>                         host->stop_cmdr |= ATMCI_CMDR_TRDIR_READ;
> -               if (data->flags & MMC_DATA_STREAM)
> -                       host->stop_cmdr |= ATMCI_CMDR_STREAM;
> -               else
> -                       host->stop_cmdr |= ATMCI_CMDR_MULTI_BLOCK;
> +               host->stop_cmdr |= ATMCI_CMDR_MULTI_BLOCK;
>         }
>
>         /*
> diff --git a/drivers/mmc/host/bfin_sdh.c b/drivers/mmc/host/bfin_sdh.c
> index 2b7f37e..526231e 100644
> --- a/drivers/mmc/host/bfin_sdh.c
> +++ b/drivers/mmc/host/bfin_sdh.c
> @@ -126,9 +126,6 @@ static int sdh_setup_data(struct sdh_host *host, struct mmc_data *data)
>         length = data->blksz * data->blocks;
>         bfin_write_SDH_DATA_LGTH(length);
>
> -       if (data->flags & MMC_DATA_STREAM)
> -               data_ctl |= DTX_MODE;
> -
>         if (data->flags & MMC_DATA_READ)
>                 data_ctl |= DTX_DIR;
>         /* Only supports power-of-2 block size */
> diff --git a/drivers/mmc/host/davinci_mmc.c b/drivers/mmc/host/davinci_mmc.c
> index ea2a2eb..693144e 100644
> --- a/drivers/mmc/host/davinci_mmc.c
> +++ b/drivers/mmc/host/davinci_mmc.c
> @@ -346,10 +346,6 @@ static void mmc_davinci_start_command(struct mmc_davinci_host *host,
>         if (cmd->data)
>                 cmd_reg |= MMCCMD_WDATX;
>
> -       /* Setting whether stream or block transfer */
> -       if (cmd->flags & MMC_DATA_STREAM)
> -               cmd_reg |= MMCCMD_STRMTP;
> -
>         /* Setting whether data read or write */
>         if (host->data_dir == DAVINCI_MMC_DATADIR_WRITE)
>                 cmd_reg |= MMCCMD_DTRW;
> @@ -568,8 +564,7 @@ mmc_davinci_prepare_data(struct mmc_davinci_host *host, struct mmc_request *req)
>                 return;
>         }
>
> -       dev_dbg(mmc_dev(host->mmc), "%s %s, %d blocks of %d bytes\n",
> -               (data->flags & MMC_DATA_STREAM) ? "stream" : "block",
> +       dev_dbg(mmc_dev(host->mmc), "%s, %d blocks of %d bytes\n",
>                 (data->flags & MMC_DATA_WRITE) ? "write" : "read",
>                 data->blocks, data->blksz);
>         dev_dbg(mmc_dev(host->mmc), "  DTO %d cycles + %d ns\n",
> @@ -584,22 +579,18 @@ mmc_davinci_prepare_data(struct mmc_davinci_host *host, struct mmc_request *req)
>         writel(data->blksz, host->base + DAVINCI_MMCBLEN);
>
>         /* Configure the FIFO */
> -       switch (data->flags & MMC_DATA_WRITE) {
> -       case MMC_DATA_WRITE:
> +       if (data->flags & MMC_DATA_WRITE) {
>                 host->data_dir = DAVINCI_MMC_DATADIR_WRITE;
>                 writel(fifo_lev | MMCFIFOCTL_FIFODIR_WR | MMCFIFOCTL_FIFORST,
>                         host->base + DAVINCI_MMCFIFOCTL);
>                 writel(fifo_lev | MMCFIFOCTL_FIFODIR_WR,
>                         host->base + DAVINCI_MMCFIFOCTL);
> -               break;
> -
> -       default:
> +       } else {
>                 host->data_dir = DAVINCI_MMC_DATADIR_READ;
>                 writel(fifo_lev | MMCFIFOCTL_FIFODIR_RD | MMCFIFOCTL_FIFORST,
>                         host->base + DAVINCI_MMCFIFOCTL);
>                 writel(fifo_lev | MMCFIFOCTL_FIFODIR_RD,
>                         host->base + DAVINCI_MMCFIFOCTL);
> -               break;
>         }
>
>         host->buffer = NULL;
> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> index fddbcb6..b542c42 100644
> --- a/drivers/mmc/host/dw_mmc.c
> +++ b/drivers/mmc/host/dw_mmc.c
> @@ -290,8 +290,6 @@ static u32 dw_mci_prepare_command(struct mmc_host *mmc, struct mmc_command *cmd)
>         data = cmd->data;
>         if (data) {
>                 cmdr |= SDMMC_CMD_DAT_EXP;
> -               if (data->flags & MMC_DATA_STREAM)
> -                       cmdr |= SDMMC_CMD_STRM_MODE;
>                 if (data->flags & MMC_DATA_WRITE)
>                         cmdr |= SDMMC_CMD_DAT_WR;
>         }
> diff --git a/drivers/mmc/host/jz4740_mmc.c b/drivers/mmc/host/jz4740_mmc.c
> index 76e8bce..03ddf0e 100644
> --- a/drivers/mmc/host/jz4740_mmc.c
> +++ b/drivers/mmc/host/jz4740_mmc.c
> @@ -660,8 +660,6 @@ static void jz4740_mmc_send_command(struct jz4740_mmc_host *host,
>                 cmdat |= JZ_MMC_CMDAT_DATA_EN;
>                 if (cmd->data->flags & MMC_DATA_WRITE)
>                         cmdat |= JZ_MMC_CMDAT_WRITE;
> -               if (cmd->data->flags & MMC_DATA_STREAM)
> -                       cmdat |= JZ_MMC_CMDAT_STREAM;
>                 if (host->use_dma)
>                         cmdat |= JZ_MMC_CMDAT_DMA_EN;
>
> diff --git a/drivers/mmc/host/mxcmmc.c b/drivers/mmc/host/mxcmmc.c
> index d110f9e..3d1ea5e 100644
> --- a/drivers/mmc/host/mxcmmc.c
> +++ b/drivers/mmc/host/mxcmmc.c
> @@ -307,9 +307,6 @@ static int mxcmci_setup_data(struct mxcmci_host *host, struct mmc_data *data)
>         enum dma_transfer_direction slave_dirn;
>         int i, nents;
>
> -       if (data->flags & MMC_DATA_STREAM)
> -               nob = 0xffff;
> -
>         host->data = data;
>         data->bytes_xfered = 0;
>
> diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c
> index ce08896..4285d3a 100644
> --- a/drivers/mmc/host/pxamci.c
> +++ b/drivers/mmc/host/pxamci.c
> @@ -191,9 +191,6 @@ static void pxamci_setup_data(struct pxamci_host *host, struct mmc_data *data)
>
>         host->data = data;
>
> -       if (data->flags & MMC_DATA_STREAM)
> -               nob = 0xffff;
> -
>         writel(nob, host->base + MMC_NOB);
>         writel(data->blksz, host->base + MMC_BLKLEN);
>
> @@ -443,9 +440,6 @@ static void pxamci_request(struct mmc_host *mmc, struct mmc_request *mrq)
>                 cmdat |= CMDAT_DATAEN | CMDAT_DMAEN;
>                 if (mrq->data->flags & MMC_DATA_WRITE)
>                         cmdat |= CMDAT_WRITE;
> -
> -               if (mrq->data->flags & MMC_DATA_STREAM)
> -                       cmdat |= CMDAT_STREAM;
>         }
>
>         pxamci_start_cmd(host, mrq->cmd, cmdat);
> diff --git a/drivers/mmc/host/s3cmci.c b/drivers/mmc/host/s3cmci.c
> index 6291d50..39814f3 100644
> --- a/drivers/mmc/host/s3cmci.c
> +++ b/drivers/mmc/host/s3cmci.c
> @@ -1014,8 +1014,7 @@ static int s3cmci_setup_data(struct s3cmci_host *host, struct mmc_data *data)
>         if (host->bus_width == MMC_BUS_WIDTH_4)
>                 dcon |= S3C2410_SDIDCON_WIDEBUS;
>
> -       if (!(data->flags & MMC_DATA_STREAM))
> -               dcon |= S3C2410_SDIDCON_BLOCKMODE;
> +       dcon |= S3C2410_SDIDCON_BLOCKMODE;
>
>         if (data->flags & MMC_DATA_WRITE) {
>                 dcon |= S3C2410_SDIDCON_TXAFTERRESP;
> diff --git a/drivers/mmc/host/sunxi-mmc.c b/drivers/mmc/host/sunxi-mmc.c
> index 83de82b..d61c58e 100644
> --- a/drivers/mmc/host/sunxi-mmc.c
> +++ b/drivers/mmc/host/sunxi-mmc.c
> @@ -815,11 +815,6 @@ static void sunxi_mmc_request(struct mmc_host *mmc, struct mmc_request *mrq)
>
>                 if ((cmd->flags & MMC_CMD_MASK) == MMC_CMD_ADTC) {
>                         cmd_val |= SDXC_DATA_EXPIRE | SDXC_WAIT_PRE_OVER;
> -                       if (cmd->data->flags & MMC_DATA_STREAM) {
> -                               imask |= SDXC_AUTO_COMMAND_DONE;
> -                               cmd_val |= SDXC_SEQUENCE_MODE |
> -                                          SDXC_SEND_AUTO_STOP;
> -                       }
>
>                         if (cmd->data->stop) {
>                                 imask |= SDXC_AUTO_COMMAND_DONE;
> diff --git a/include/linux/mmc/core.h b/include/linux/mmc/core.h
> index 37967b6..b01e77d 100644
> --- a/include/linux/mmc/core.h
> +++ b/include/linux/mmc/core.h
> @@ -113,7 +113,6 @@ struct mmc_data {
>
>  #define MMC_DATA_WRITE (1 << 8)
>  #define MMC_DATA_READ  (1 << 9)
> -#define MMC_DATA_STREAM        (1 << 10)
>
>         unsigned int            bytes_xfered;
>
> --
> 1.9.1

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-01-27 14:16 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-01-14 12:08 [RFC PATCH] mmc: remove the MMC_DATA_STREAM flag Jaehoon Chung
2016-01-15 17:01 ` Ludovic Desroches
2016-01-22  1:18   ` Jaehoon Chung
2016-01-23 17:59 ` Robert Jarzmik
2016-01-25  2:10   ` Jaehoon Chung
2016-01-27 14:16 ` Ulf Hansson

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.