diff options
author | Pierre Ossman <drzeus@drzeus.cx> | 2006-01-09 17:51:46 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2006-01-09 17:51:46 -0500 |
commit | 7225b3fd0b6e224235fc50a69f70479ff96d5602 (patch) | |
tree | 30dd999fd966cb572371eb99bb629625f720de35 | |
parent | 788ee7b09883515f3a72a8f2a980df5e94f37e2c (diff) |
[MMC] Indicate that R1/R1b contains command opcode
Some controllers actually check the first byte of the response (most
don't). This byte contains the command opcode for R1/R1b and all 1:s
for other types. The difference must be indicated to the controller
so it knows which reply to expect.
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
-rw-r--r-- | include/linux/mmc/mmc.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/include/linux/mmc/mmc.h b/include/linux/mmc/mmc.h index 86d491b3b73f..ccd3e13de1e8 100644 --- a/include/linux/mmc/mmc.h +++ b/include/linux/mmc/mmc.h | |||
@@ -27,14 +27,15 @@ struct mmc_command { | |||
27 | #define MMC_RSP_MASK (3 << 0) | 27 | #define MMC_RSP_MASK (3 << 0) |
28 | #define MMC_RSP_CRC (1 << 3) /* expect valid crc */ | 28 | #define MMC_RSP_CRC (1 << 3) /* expect valid crc */ |
29 | #define MMC_RSP_BUSY (1 << 4) /* card may send busy */ | 29 | #define MMC_RSP_BUSY (1 << 4) /* card may send busy */ |
30 | #define MMC_RSP_OPCODE (1 << 5) /* response contains opcode */ | ||
30 | 31 | ||
31 | /* | 32 | /* |
32 | * These are the response types, and correspond to valid bit | 33 | * These are the response types, and correspond to valid bit |
33 | * patterns of the above flags. One additional valid pattern | 34 | * patterns of the above flags. One additional valid pattern |
34 | * is all zeros, which means we don't expect a response. | 35 | * is all zeros, which means we don't expect a response. |
35 | */ | 36 | */ |
36 | #define MMC_RSP_R1 (MMC_RSP_SHORT|MMC_RSP_CRC) | 37 | #define MMC_RSP_R1 (MMC_RSP_SHORT|MMC_RSP_CRC|MMC_RSP_OPCODE) |
37 | #define MMC_RSP_R1B (MMC_RSP_SHORT|MMC_RSP_CRC|MMC_RSP_BUSY) | 38 | #define MMC_RSP_R1B (MMC_RSP_SHORT|MMC_RSP_CRC|MMC_RSP_OPCODE|MMC_RSP_BUSY) |
38 | #define MMC_RSP_R2 (MMC_RSP_LONG|MMC_RSP_CRC) | 39 | #define MMC_RSP_R2 (MMC_RSP_LONG|MMC_RSP_CRC) |
39 | #define MMC_RSP_R3 (MMC_RSP_SHORT) | 40 | #define MMC_RSP_R3 (MMC_RSP_SHORT) |
40 | #define MMC_RSP_R6 (MMC_RSP_SHORT|MMC_RSP_CRC) | 41 | #define MMC_RSP_R6 (MMC_RSP_SHORT|MMC_RSP_CRC) |