Message ID | 1386663654-14498-1-git-send-email-haijun.zhang@freescale.com |
---|---|
State | Superseded |
Delegated to: | Pantelis Antoniou |
Headers | show |
Hi, Pantelis These are the newest version of this patch set. Expect your advice. Regards & Thanks. -- Haijun > -----Original Message----- > From: Haijun Zhang [mailto:haijun.zhang@freescale.com] > Sent: Tuesday, December 10, 2013 4:21 PM > To: panto@antoniou-consulting.com > Cc: u-boot@lists.denx.de; Xie Xiaobo-R63061; Sun York-R58495; > trini@ti.com; sbabic@denx.de; rjbarnet@rockwellcollins.com; > jh80.chung@samsung.com; michael@amarulasolutions.com; Zhang Haijun-B42677; > Zhang Haijun-B42677 > Subject: [PATCH 1/7 V4] mmc: Add some usefull macro definition > > From: Haijun Zhang <Haijun.Zhang@freescale.com> > > Add command class define. > Add mmc erase and secure erase define. > Add secure erase and trim support bit define. > > Signed-off-by: Haijun Zhang <haijun.zhang@freescale.com> > --- > changes for V4: > - no changes > changes for V3: > - No changes > > include/mmc.h | 50 +++++++++++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 49 insertions(+), 1 deletion(-) > > diff --git a/include/mmc.h b/include/mmc.h index cb558da..08f0f3e 100644 > --- a/include/mmc.h > +++ b/include/mmc.h > @@ -53,6 +53,7 @@ > #define COMM_ERR -18 /* Communications Error */ > #define TIMEOUT -19 > #define IN_PROGRESS -20 /* operation is in progress */ > +#define NOT_SUPPORT -21 /* Operation is not support */ > > #define MMC_CMD_GO_IDLE_STATE 0 > #define MMC_CMD_SEND_OP_COND 1 > @@ -105,6 +106,39 @@ > #define OCR_VOLTAGE_MASK 0x007FFF80 > #define OCR_ACCESS_MODE 0x60000000 > > +/* > + * Card Command Classes (CCC) > + * > + * (0) Basic protocol functions (CMD0,1,2,3,4,7,9,10,12,13,15) > + * (and for SPI, CMD58,59) > + * (1) Stream read commands (CMD11) > + * (2) Block read commands (CMD16,17,18) > + * (3) Stream write commands (CMD20) > + * (4) Block write commands (CMD16,24,25,26,27) > + * (5) Ability to erase blocks (CMD32,33,34,35,36,37,38,39) > + * (6) Able to write protect blocks (CMD28,29,30) > + * (7) Able to lock down card (CMD16,CMD42) > + * (8) Application specific (CMD55,56,57,ACMD*) > + * (9) I/O mode (CMD5,39,40,52,53) > + * (10) High speed switch (CMD6,34,35,36,37,50) */ > +#define CCC_BASIC (1<<0) > +#define CCC_STREAM_READ (1<<1) > +#define CCC_BLOCK_READ (1<<2) > +#define CCC_STREAM_WRITE (1<<3) > +#define CCC_BLOCK_WRITE (1<<4) > +#define CCC_ERASE (1<<5) > +#define CCC_WRITE_PROT (1<<6) > +#define CCC_LOCK_CARD (1<<7) > +#define CCC_APP_SPEC (1<<8) > +#define CCC_IO_MODE (1<<9) > +#define CCC_SWITCH (1<<10) > + > +#define MMC_ERASE_ARG 0x00000000 > +#define MMC_SECURE_ERASE_ARG 0x80000000 > +#define MMC_TRIM_ARG 0x00000001 > +#define MMC_DISCARD_ARG 0x00000003 > + > #define SECURE_ERASE 0x80000000 > > #define MMC_STATUS_MASK (~0x0206BF7F) > @@ -160,8 +194,12 @@ > #define EXT_CSD_CARD_TYPE 196 /* RO */ > #define EXT_CSD_SEC_CNT 212 /* RO, 4 bytes */ > #define EXT_CSD_HC_WP_GRP_SIZE 221 /* RO */ > +#define EXT_CSD_REL_WR_SEC_C 222 /* RO */ > +#define EXT_CSD_ERASE_TIMEOUT_MULT 223 /* RO */ > #define EXT_CSD_HC_ERASE_GRP_SIZE 224 /* RO */ > #define EXT_CSD_BOOT_MULT 226 /* RO */ > +#define EXT_CSD_SEC_ERASE_MULT 230 /* RO */ > +#define EXT_CSD_SEC_FEATURE_SUPPORT 231 /* RO */ > > /* > * EXT_CSD field definitions > @@ -178,6 +216,12 @@ > #define EXT_CSD_BUS_WIDTH_4 1 /* Card is in 4 bit mode */ > #define EXT_CSD_BUS_WIDTH_8 2 /* Card is in 8 bit mode */ > > +/* EXT_CSD[231] */ > +#define EXT_CSD_SEC_ER_EN (1<<0) > +#define EXT_CSD_SEC_BD_BLK_EN (1<<2) > +#define EXT_CSD_SEC_GB_CL_EN (1<<4) > +#define EXT_CSD_SEC_SANITIZE (1<<6) /* v4.5 later */ > + > #define EXT_CSD_BOOT_ACK_ENABLE (1 << 6) > #define EXT_CSD_BOOT_PARTITION_ENABLE (1 << 3) > #define EXT_CSD_PARTITION_ACCESS_ENABLE (1 << 0) > @@ -187,7 +231,6 @@ > #define EXT_CSD_BOOT_PART_NUM(x) (x << 3) > #define EXT_CSD_PARTITION_ACCESS(x) (x << 0) > > - > #define R1_ILLEGAL_COMMAND (1 << 22) > #define R1_APP_CMD (1 << 5) > > @@ -268,10 +311,15 @@ struct mmc { > ushort rca; > char part_config; > char part_num; > + ushort cmdclass; > uint tran_speed; > uint read_bl_len; > uint write_bl_len; > uint erase_grp_size; > + uint erase_timeout_mult; > + char sec_feature_support; > + uint sec_erase_mult; > + uint sec_erase_timeout; > u64 capacity; > u64 capacity_user; > u64 capacity_boot; > -- > 1.8.4.1 >
Hi, Haijun. On 12/10/2013 05:20 PM, Haijun Zhang wrote: > From: Haijun Zhang <Haijun.Zhang@freescale.com> > > Add command class define. > Add mmc erase and secure erase define. > Add secure erase and trim support bit define. > > Signed-off-by: Haijun Zhang <haijun.zhang@freescale.com> > --- > changes for V4: > - no changes > changes for V3: > - No changes > > include/mmc.h | 50 +++++++++++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 49 insertions(+), 1 deletion(-) > > diff --git a/include/mmc.h b/include/mmc.h > index cb558da..08f0f3e 100644 > --- a/include/mmc.h > +++ b/include/mmc.h > @@ -53,6 +53,7 @@ > #define COMM_ERR -18 /* Communications Error */ > #define TIMEOUT -19 > #define IN_PROGRESS -20 /* operation is in progress */ > +#define NOT_SUPPORT -21 /* Operation is not support */ > > #define MMC_CMD_GO_IDLE_STATE 0 > #define MMC_CMD_SEND_OP_COND 1 > @@ -105,6 +106,39 @@ > #define OCR_VOLTAGE_MASK 0x007FFF80 > #define OCR_ACCESS_MODE 0x60000000 > > +/* > + * Card Command Classes (CCC) > + * > + * (0) Basic protocol functions (CMD0,1,2,3,4,7,9,10,12,13,15) > + * (and for SPI, CMD58,59) > + * (1) Stream read commands (CMD11) > + * (2) Block read commands (CMD16,17,18) > + * (3) Stream write commands (CMD20) > + * (4) Block write commands (CMD16,24,25,26,27) > + * (5) Ability to erase blocks (CMD32,33,34,35,36,37,38,39) > + * (6) Able to write protect blocks (CMD28,29,30) > + * (7) Able to lock down card (CMD16,CMD42) > + * (8) Application specific (CMD55,56,57,ACMD*) > + * (9) I/O mode (CMD5,39,40,52,53) > + * (10) High speed switch (CMD6,34,35,36,37,50) > + */ > +#define CCC_BASIC (1<<0) > +#define CCC_STREAM_READ (1<<1) > +#define CCC_BLOCK_READ (1<<2) > +#define CCC_STREAM_WRITE (1<<3) > +#define CCC_BLOCK_WRITE (1<<4) > +#define CCC_ERASE (1<<5) > +#define CCC_WRITE_PROT (1<<6) > +#define CCC_LOCK_CARD (1<<7) > +#define CCC_APP_SPEC (1<<8) > +#define CCC_IO_MODE (1<<9) > +#define CCC_SWITCH (1<<10) > + > +#define MMC_ERASE_ARG 0x00000000 > +#define MMC_SECURE_ERASE_ARG 0x80000000 > +#define MMC_TRIM_ARG 0x00000001 > +#define MMC_DISCARD_ARG 0x00000003 > + > #define SECURE_ERASE 0x80000000 > > #define MMC_STATUS_MASK (~0x0206BF7F) > @@ -160,8 +194,12 @@ > #define EXT_CSD_CARD_TYPE 196 /* RO */ > #define EXT_CSD_SEC_CNT 212 /* RO, 4 bytes */ > #define EXT_CSD_HC_WP_GRP_SIZE 221 /* RO */ > +#define EXT_CSD_REL_WR_SEC_C 222 /* RO */ > +#define EXT_CSD_ERASE_TIMEOUT_MULT 223 /* RO */ > #define EXT_CSD_HC_ERASE_GRP_SIZE 224 /* RO */ > #define EXT_CSD_BOOT_MULT 226 /* RO */ > +#define EXT_CSD_SEC_ERASE_MULT 230 /* RO */ > +#define EXT_CSD_SEC_FEATURE_SUPPORT 231 /* RO */ > > /* > * EXT_CSD field definitions > @@ -178,6 +216,12 @@ > #define EXT_CSD_BUS_WIDTH_4 1 /* Card is in 4 bit mode */ > #define EXT_CSD_BUS_WIDTH_8 2 /* Card is in 8 bit mode */ > > +/* EXT_CSD[231] */ If you want to add the comment for EXT_CSD[231], I think good like this. /* SEC_FEATURE_SUPPORT[231] Field definitions */ Best Regards, Jaehoon Chung > +#define EXT_CSD_SEC_ER_EN (1<<0) > +#define EXT_CSD_SEC_BD_BLK_EN (1<<2) > +#define EXT_CSD_SEC_GB_CL_EN (1<<4) > +#define EXT_CSD_SEC_SANITIZE (1<<6) /* v4.5 later */ > + > #define EXT_CSD_BOOT_ACK_ENABLE (1 << 6) > #define EXT_CSD_BOOT_PARTITION_ENABLE (1 << 3) > #define EXT_CSD_PARTITION_ACCESS_ENABLE (1 << 0) > @@ -187,7 +231,6 @@ > #define EXT_CSD_BOOT_PART_NUM(x) (x << 3) > #define EXT_CSD_PARTITION_ACCESS(x) (x << 0) > > - > #define R1_ILLEGAL_COMMAND (1 << 22) > #define R1_APP_CMD (1 << 5) > > @@ -268,10 +311,15 @@ struct mmc { > ushort rca; > char part_config; > char part_num; > + ushort cmdclass; > uint tran_speed; > uint read_bl_len; > uint write_bl_len; > uint erase_grp_size; > + uint erase_timeout_mult; > + char sec_feature_support; > + uint sec_erase_mult; > + uint sec_erase_timeout; > u64 capacity; > u64 capacity_user; > u64 capacity_boot; >
diff --git a/include/mmc.h b/include/mmc.h index cb558da..08f0f3e 100644 --- a/include/mmc.h +++ b/include/mmc.h @@ -53,6 +53,7 @@ #define COMM_ERR -18 /* Communications Error */ #define TIMEOUT -19 #define IN_PROGRESS -20 /* operation is in progress */ +#define NOT_SUPPORT -21 /* Operation is not support */ #define MMC_CMD_GO_IDLE_STATE 0 #define MMC_CMD_SEND_OP_COND 1 @@ -105,6 +106,39 @@ #define OCR_VOLTAGE_MASK 0x007FFF80 #define OCR_ACCESS_MODE 0x60000000 +/* + * Card Command Classes (CCC) + * + * (0) Basic protocol functions (CMD0,1,2,3,4,7,9,10,12,13,15) + * (and for SPI, CMD58,59) + * (1) Stream read commands (CMD11) + * (2) Block read commands (CMD16,17,18) + * (3) Stream write commands (CMD20) + * (4) Block write commands (CMD16,24,25,26,27) + * (5) Ability to erase blocks (CMD32,33,34,35,36,37,38,39) + * (6) Able to write protect blocks (CMD28,29,30) + * (7) Able to lock down card (CMD16,CMD42) + * (8) Application specific (CMD55,56,57,ACMD*) + * (9) I/O mode (CMD5,39,40,52,53) + * (10) High speed switch (CMD6,34,35,36,37,50) + */ +#define CCC_BASIC (1<<0) +#define CCC_STREAM_READ (1<<1) +#define CCC_BLOCK_READ (1<<2) +#define CCC_STREAM_WRITE (1<<3) +#define CCC_BLOCK_WRITE (1<<4) +#define CCC_ERASE (1<<5) +#define CCC_WRITE_PROT (1<<6) +#define CCC_LOCK_CARD (1<<7) +#define CCC_APP_SPEC (1<<8) +#define CCC_IO_MODE (1<<9) +#define CCC_SWITCH (1<<10) + +#define MMC_ERASE_ARG 0x00000000 +#define MMC_SECURE_ERASE_ARG 0x80000000 +#define MMC_TRIM_ARG 0x00000001 +#define MMC_DISCARD_ARG 0x00000003 + #define SECURE_ERASE 0x80000000 #define MMC_STATUS_MASK (~0x0206BF7F) @@ -160,8 +194,12 @@ #define EXT_CSD_CARD_TYPE 196 /* RO */ #define EXT_CSD_SEC_CNT 212 /* RO, 4 bytes */ #define EXT_CSD_HC_WP_GRP_SIZE 221 /* RO */ +#define EXT_CSD_REL_WR_SEC_C 222 /* RO */ +#define EXT_CSD_ERASE_TIMEOUT_MULT 223 /* RO */ #define EXT_CSD_HC_ERASE_GRP_SIZE 224 /* RO */ #define EXT_CSD_BOOT_MULT 226 /* RO */ +#define EXT_CSD_SEC_ERASE_MULT 230 /* RO */ +#define EXT_CSD_SEC_FEATURE_SUPPORT 231 /* RO */ /* * EXT_CSD field definitions @@ -178,6 +216,12 @@ #define EXT_CSD_BUS_WIDTH_4 1 /* Card is in 4 bit mode */ #define EXT_CSD_BUS_WIDTH_8 2 /* Card is in 8 bit mode */ +/* EXT_CSD[231] */ +#define EXT_CSD_SEC_ER_EN (1<<0) +#define EXT_CSD_SEC_BD_BLK_EN (1<<2) +#define EXT_CSD_SEC_GB_CL_EN (1<<4) +#define EXT_CSD_SEC_SANITIZE (1<<6) /* v4.5 later */ + #define EXT_CSD_BOOT_ACK_ENABLE (1 << 6) #define EXT_CSD_BOOT_PARTITION_ENABLE (1 << 3) #define EXT_CSD_PARTITION_ACCESS_ENABLE (1 << 0) @@ -187,7 +231,6 @@ #define EXT_CSD_BOOT_PART_NUM(x) (x << 3) #define EXT_CSD_PARTITION_ACCESS(x) (x << 0) - #define R1_ILLEGAL_COMMAND (1 << 22) #define R1_APP_CMD (1 << 5) @@ -268,10 +311,15 @@ struct mmc { ushort rca; char part_config; char part_num; + ushort cmdclass; uint tran_speed; uint read_bl_len; uint write_bl_len; uint erase_grp_size; + uint erase_timeout_mult; + char sec_feature_support; + uint sec_erase_mult; + uint sec_erase_timeout; u64 capacity; u64 capacity_user; u64 capacity_boot;