mmc: support packed write command for eMMC4.5 device
This patch supports packed write command of eMMC4.5 device. Several writes can be grouped in packed command and all data of the individual commands can be sent in a single transfer on the bus. [tlinder@codeaurora.org: Difference in definition: R1_EXP_EVENT -- > R1_EXCEPTION_EVENT] (cherry picked from commit 53f8f574c6c68687098cd064af8224da44de2484) Change-Id: I26ee7c0b957a3aec5e4ffc6d6df806ea38435784 Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com> Reviewed-by: Maya Erez <merez@codeaurora.org> Reviewed-by: Namjae Jeon <linkinjeon@gmail.com> Signed-off-by: Tatyana Brokhman <tlinder@codeaurora.org> (cherry picked from commit 6d24bc3b6e86412cbfbc37377bbbf196cbdebce9)
This commit is contained in:
committed by
Stephen Boyd
parent
20bafab63b
commit
37e288ec83
@@ -300,6 +300,11 @@ static inline void mmc_part_add(struct mmc_card *card, unsigned int size,
|
||||
card->nr_parts++;
|
||||
}
|
||||
|
||||
static inline bool mmc_large_sec(struct mmc_card *card)
|
||||
{
|
||||
return card->ext_csd.data_sector_size == 4096;
|
||||
}
|
||||
|
||||
/*
|
||||
* The world is not perfect and supplies us with broken mmc/sdio devices.
|
||||
* For at least some of these bugs we need a work-around.
|
||||
|
||||
@@ -18,6 +18,9 @@ struct mmc_request;
|
||||
struct mmc_command {
|
||||
u32 opcode;
|
||||
u32 arg;
|
||||
#define MMC_CMD23_ARG_REL_WR (1 << 31)
|
||||
#define MMC_CMD23_ARG_PACKED ((0 << 31) | (1 << 30))
|
||||
#define MMC_CMD23_ARG_TAG_REQ (1 << 29)
|
||||
u32 resp[4];
|
||||
unsigned int flags; /* expected response type */
|
||||
#define MMC_RSP_PRESENT (1 << 0)
|
||||
@@ -148,6 +151,7 @@ extern int mmc_wait_for_app_cmd(struct mmc_host *, struct mmc_card *,
|
||||
extern void mmc_start_bkops(struct mmc_card *card, bool from_exception);
|
||||
extern int __mmc_switch(struct mmc_card *, u8, u8, u8, unsigned int, bool);
|
||||
extern int mmc_switch(struct mmc_card *, u8, u8, u8, unsigned int);
|
||||
extern int mmc_send_ext_csd(struct mmc_card *card, u8 *ext_csd);
|
||||
|
||||
#define MMC_ERASE_ARG 0x00000000
|
||||
#define MMC_SECURE_ERASE_ARG 0x80000000
|
||||
|
||||
Reference in New Issue
Block a user