Commit 8e9c238c authored by Linus Torvalds's avatar Linus Torvalds

Merge master.kernel.org:/home/rmk/linux-2.6-mmc

parents f17578de 7225b3fd
...@@ -495,6 +495,7 @@ static void mmc_decode_cid(struct mmc_card *card) ...@@ -495,6 +495,7 @@ static void mmc_decode_cid(struct mmc_card *card)
case 2: /* MMC v2.0 - v2.2 */ case 2: /* MMC v2.0 - v2.2 */
case 3: /* MMC v3.1 - v3.3 */ case 3: /* MMC v3.1 - v3.3 */
case 4: /* MMC v4 */
card->cid.manfid = UNSTUFF_BITS(resp, 120, 8); card->cid.manfid = UNSTUFF_BITS(resp, 120, 8);
card->cid.oemid = UNSTUFF_BITS(resp, 104, 16); card->cid.oemid = UNSTUFF_BITS(resp, 104, 16);
card->cid.prod_name[0] = UNSTUFF_BITS(resp, 96, 8); card->cid.prod_name[0] = UNSTUFF_BITS(resp, 96, 8);
......
...@@ -187,7 +187,13 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req) ...@@ -187,7 +187,13 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req)
brq.data.flags |= MMC_DATA_WRITE; brq.data.flags |= MMC_DATA_WRITE;
brq.data.blocks = 1; brq.data.blocks = 1;
} }
brq.mrq.stop = brq.data.blocks > 1 ? &brq.stop : NULL;
if (brq.data.blocks > 1) {
brq.data.flags |= MMC_DATA_MULTI;
brq.mrq.stop = &brq.stop;
} else {
brq.mrq.stop = NULL;
}
brq.data.sg = mq->sg; brq.data.sg = mq->sg;
brq.data.sg_len = blk_rq_map_sg(req->q, req, brq.data.sg); brq.data.sg_len = blk_rq_map_sg(req->q, req, brq.data.sg);
......
This diff is collapsed.
...@@ -27,14 +27,15 @@ struct mmc_command { ...@@ -27,14 +27,15 @@ struct mmc_command {
#define MMC_RSP_MASK (3 << 0) #define MMC_RSP_MASK (3 << 0)
#define MMC_RSP_CRC (1 << 3) /* expect valid crc */ #define MMC_RSP_CRC (1 << 3) /* expect valid crc */
#define MMC_RSP_BUSY (1 << 4) /* card may send busy */ #define MMC_RSP_BUSY (1 << 4) /* card may send busy */
#define MMC_RSP_OPCODE (1 << 5) /* response contains opcode */
/* /*
* These are the response types, and correspond to valid bit * These are the response types, and correspond to valid bit
* patterns of the above flags. One additional valid pattern * patterns of the above flags. One additional valid pattern
* is all zeros, which means we don't expect a response. * is all zeros, which means we don't expect a response.
*/ */
#define MMC_RSP_R1 (MMC_RSP_SHORT|MMC_RSP_CRC) #define MMC_RSP_R1 (MMC_RSP_SHORT|MMC_RSP_CRC|MMC_RSP_OPCODE)
#define MMC_RSP_R1B (MMC_RSP_SHORT|MMC_RSP_CRC|MMC_RSP_BUSY) #define MMC_RSP_R1B (MMC_RSP_SHORT|MMC_RSP_CRC|MMC_RSP_OPCODE|MMC_RSP_BUSY)
#define MMC_RSP_R2 (MMC_RSP_LONG|MMC_RSP_CRC) #define MMC_RSP_R2 (MMC_RSP_LONG|MMC_RSP_CRC)
#define MMC_RSP_R3 (MMC_RSP_SHORT) #define MMC_RSP_R3 (MMC_RSP_SHORT)
#define MMC_RSP_R6 (MMC_RSP_SHORT|MMC_RSP_CRC) #define MMC_RSP_R6 (MMC_RSP_SHORT|MMC_RSP_CRC)
...@@ -64,6 +65,7 @@ struct mmc_data { ...@@ -64,6 +65,7 @@ struct mmc_data {
#define MMC_DATA_WRITE (1 << 8) #define MMC_DATA_WRITE (1 << 8)
#define MMC_DATA_READ (1 << 9) #define MMC_DATA_READ (1 << 9)
#define MMC_DATA_STREAM (1 << 10) #define MMC_DATA_STREAM (1 << 10)
#define MMC_DATA_MULTI (1 << 11)
unsigned int bytes_xfered; unsigned int bytes_xfered;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment