Skip to contentSkip to conversation

mmc: remove the MMC_DATA_STREAM flag

RFC PATCH In review Jaehoon Chung 4 participants 6 messages Jan 14, 2016 – Jan 27, 2016

Subsystems (7)
lore
Share & tools
lore

Jaehoon Chung

author maintainer
#0 lore raw

RFC PATCH 1/1 mmc: remove the MMC_DATA_STREAM flag

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.

---
 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(-)
drivers/mmc/card/block.c +3 -3
index 5914263..e7449cb 100644
@@ -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;
drivers/mmc/host/atmel-mci.c +2 -7
index a36ebda..e0c8c51 100644
@@ -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;
 	}
 
 	/*
drivers/mmc/host/bfin_sdh.c +0 -3
index 2b7f37e..526231e 100644
@@ -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 */
drivers/mmc/host/davinci_mmc.c +3 -12
index ea2a2eb..693144e 100644
@@ -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;
drivers/mmc/host/dw_mmc.c +0 -2
index fddbcb6..b542c42 100644
@@ -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;
 	}
drivers/mmc/host/jz4740_mmc.c +0 -2
index 76e8bce..03ddf0e 100644
@@ -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;
 
drivers/mmc/host/mxcmmc.c +0 -3
index d110f9e..3d1ea5e 100644
@@ -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;
 
drivers/mmc/host/pxamci.c +0 -6
index ce08896..4285d3a 100644
@@ -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);
drivers/mmc/host/s3cmci.c +1 -2
index 6291d50..39814f3 100644
@@ -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;
drivers/mmc/host/sunxi-mmc.c +0 -5
index 83de82b..d61c58e 100644
@@ -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;
include/linux/mmc/core.h +0 -1
index 37967b6..b01e77d 100644
@@ -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;
 
Signature · 1 line
1.9.1
Acked-by on v1 1/1
#1 lore raw
Quoted 11 lines · Jaehoon Chung

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.

---
 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

for atmel-mci.c.

Regards

Ludovic

Quoted 239 lines
 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(-)
drivers/mmc/card/block.c +3 -3
index 5914263..e7449cb 100644
@@ -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;
drivers/mmc/host/atmel-mci.c +2 -7
index a36ebda..e0c8c51 100644
@@ -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;
 	}
 
 	/*
drivers/mmc/host/bfin_sdh.c +0 -3
index 2b7f37e..526231e 100644
@@ -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 */
drivers/mmc/host/davinci_mmc.c +3 -12
index ea2a2eb..693144e 100644
@@ -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;
drivers/mmc/host/dw_mmc.c +0 -2
index fddbcb6..b542c42 100644
@@ -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;
 	}
drivers/mmc/host/jz4740_mmc.c +0 -2
index 76e8bce..03ddf0e 100644
@@ -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;
 
drivers/mmc/host/mxcmmc.c +0 -3
index d110f9e..3d1ea5e 100644
@@ -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;
 
drivers/mmc/host/pxamci.c +0 -6
index ce08896..4285d3a 100644
@@ -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);
drivers/mmc/host/s3cmci.c +1 -2
index 6291d50..39814f3 100644
@@ -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;
drivers/mmc/host/sunxi-mmc.c +0 -5
index 83de82b..d61c58e 100644
@@ -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;
include/linux/mmc/core.h +0 -1
index 37967b6..b01e77d 100644
@@ -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;
 
Signature · 1 line
1.9.1
author maintainer
#2 lore raw

Hi,

Quoted 13 lines · Ludovic Desroches
Quoted 11 lines · Jaehoon Chung

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.

---
 drivers/mmc/card/block.c       |  6 +++---
 drivers/mmc/host/atmel-mci.c   |  9 ++-------
Quoted 5 lines

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

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

Quoted 248 lines

for atmel-mci.c.

Regards

Ludovic

Quoted 239 lines
 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(-)
drivers/mmc/card/block.c +3 -3
index 5914263..e7449cb 100644
@@ -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;
drivers/mmc/host/atmel-mci.c +2 -7
index a36ebda..e0c8c51 100644
@@ -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;
 	}
 
 	/*
drivers/mmc/host/bfin_sdh.c +0 -3
index 2b7f37e..526231e 100644
@@ -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 */
drivers/mmc/host/davinci_mmc.c +3 -12
index ea2a2eb..693144e 100644
@@ -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;
drivers/mmc/host/dw_mmc.c +0 -2
index fddbcb6..b542c42 100644
@@ -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;
 	}
drivers/mmc/host/jz4740_mmc.c +0 -2
index 76e8bce..03ddf0e 100644
@@ -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;
 
drivers/mmc/host/mxcmmc.c +0 -3
index d110f9e..3d1ea5e 100644
@@ -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;
 
drivers/mmc/host/pxamci.c +0 -6
index ce08896..4285d3a 100644
@@ -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);
drivers/mmc/host/s3cmci.c +1 -2
index 6291d50..39814f3 100644
@@ -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;
drivers/mmc/host/sunxi-mmc.c +0 -5
index 83de82b..d61c58e 100644
@@ -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;
include/linux/mmc/core.h +0 -1
index 37967b6..b01e77d 100644
@@ -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;
 
Signature · 1 line
1.9.1
#3 lore raw
In reply to Jaehoon Chung
Quoted 7 lines · Jaehoon Chung

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 ?

drivers/mmc/card/block.c static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq, · line 1528

Quoted 8 lines
drivers/mmc/card/block.c +1 -1
@@ -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.
...

drivers/mmc/card/block.c static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq, · line 1529

Quoted 2 lines
drivers/mmc/card/block.c +1 -1
-		brq->data.flags |= MMC_DATA_WRITE;
+		brq->data.flags = MMC_DATA_WRITE;

Ditto.

drivers/mmc/card/block.c static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq, · line 1530

Quoted 2 lines
drivers/mmc/card/block.c +1 -1
-	brq->data.flags |= MMC_DATA_WRITE;
+	brq->data.flags = MMC_DATA_WRITE;

Ditto.

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

drivers/mmc/host/pxamci.c

Quoted 4 lines
drivers/mmc/host/pxamci.c +0 -0
index ce08896..4285d3a 100644

Works for me.

Cheers.

Signature · 1 line
Robert
author maintainer
#4 lore raw

Hi, Robert.

Quoted 10 lines · Robert Jarzmik
Quoted 7 lines · Jaehoon Chung

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.

Quoted 11 lines

drivers/mmc/card/block.c static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq, · line 1528

Quoted 9 lines
drivers/mmc/card/block.c +1 -1
@@ -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

Quoted 18 lines

...

drivers/mmc/card/block.c

Quoted 2 lines
drivers/mmc/card/block.c +1 -1
-		brq->data.flags |= MMC_DATA_WRITE;
+		brq->data.flags = MMC_DATA_WRITE;

Ditto.

drivers/mmc/card/block.c

Quoted 2 lines
drivers/mmc/card/block.c +1 -1
-	brq->data.flags |= MMC_DATA_WRITE;
+	brq->data.flags = MMC_DATA_WRITE;

Ditto.

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

drivers/mmc/host/pxamci.c

Quoted 4 lines
drivers/mmc/host/pxamci.c +0 -0
index ce08896..4285d3a 100644

Works for me.

Cheers.

#5 lore raw
In reply to Jaehoon Chung
Quoted 8 lines · Jaehoon Chung

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.

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

Quoted 242 lines
---
 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(-)
drivers/mmc/card/block.c +3 -3
index 5914263..e7449cb 100644
@@ -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;
drivers/mmc/host/atmel-mci.c +2 -7
index a36ebda..e0c8c51 100644
@@ -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;
        }
 
        /*
drivers/mmc/host/bfin_sdh.c +0 -3
index 2b7f37e..526231e 100644
@@ -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 */
drivers/mmc/host/davinci_mmc.c +3 -12
index ea2a2eb..693144e 100644
@@ -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;
drivers/mmc/host/dw_mmc.c +0 -2
index fddbcb6..b542c42 100644
@@ -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;
        }
drivers/mmc/host/jz4740_mmc.c +0 -2
index 76e8bce..03ddf0e 100644
@@ -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;
 
drivers/mmc/host/mxcmmc.c +0 -3
index d110f9e..3d1ea5e 100644
@@ -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;
 
drivers/mmc/host/pxamci.c +0 -6
index ce08896..4285d3a 100644
@@ -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);
drivers/mmc/host/s3cmci.c +1 -2
index 6291d50..39814f3 100644
@@ -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;
drivers/mmc/host/sunxi-mmc.c +0 -5
index 83de82b..d61c58e 100644
@@ -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;
include/linux/mmc/core.h +0 -2
index 37967b6..b01e77d 100644
@@ -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