Skip to content

Commit 08ce36d

Browse files
Windrow14xiaoxiang781216
authored andcommitted
drivers/mmcsd/mmcsd_sdio.c|h: optimize macros for setting EXT_CSD
CMD6 can use these macros to set any writable EXT_CSD field, not just the bus width, so optimize these macro definitions to make them general. Signed-off-by: Yinzhe Wu <Yinzhe.Wu@sony.com> Reviewed-by: Yuezhang Mo <Yuezhang.Mo@sony.com> Reviewed-by: Jacky Cao <Jacky.Cao@sony.com> Tested-by: Yinzhe Wu <Yinzhe.Wu@sony.com>
1 parent 4f7f751 commit 08ce36d

File tree

2 files changed

+30
-18
lines changed

2 files changed

+30
-18
lines changed

drivers/mmcsd/mmcsd_sdio.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2522,8 +2522,7 @@ static int mmcsd_widebus(FAR struct mmcsd_state_s *priv)
25222522
*/
25232523

25242524
mmcsd_sendcmdpoll(priv, MMCSD_CMD6,
2525-
MMCSD_CMD6_MODE_WRITE_BYTE | MMCSD_CMD6_BUSWIDTH_RW |
2526-
MMCSD_CMD6_BUS_WIDTH_4);
2525+
MMC_CMD6_BUSWIDTH(EXT_CSD_BUS_WIDTH_4));
25272526
ret = mmcsd_recv_r1(priv, MMCSD_CMD6);
25282527

25292528
if (ret != OK)

drivers/mmcsd/mmcsd_sdio.h

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -40,23 +40,36 @@
4040
* [23:16] Location of target Byte in EXT_CSD
4141
* [15:08] Value Byte
4242
* [07:03] Always 0
43-
* [02:00] Command Set
43+
* [02:00] Command Set(Ignored if not used to change the command set)
4444
*/
45-
#define MMCSD_CMD6_BUSWIDTH_RWSHIFT (16)
46-
# define MMCSD_CMD6_BUSWIDTH_RW ((uint32_t)0xb7 << MMCSD_CMD6_BUSWIDTH_RWSHIFT) /* R/W */
47-
48-
#define MMCSD_CMD6_WRITE_BYTE_SHIFT (24)
49-
# define MMCSD_CMD6_MODE_CMD_SET ((uint32_t)0x00 << MMCSD_CMD6_WRITE_BYTE_SHIFT) /* Change the command set */
50-
# define MMCSD_CMD6_MODE_SET_BITS ((uint32_t)0x01 << MMCSD_CMD6_WRITE_BYTE_SHIFT) /* Set bits which are 1 in value */
51-
# define MMCSD_CMD6_MODE_CLEAR_BITS ((uint32_t)0x02 << MMCSD_CMD6_WRITE_BYTE_SHIFT) /* Clear bits which are 1 in value */
52-
# define MMCSD_CMD6_MODE_WRITE_BYTE ((uint32_t)0x03 << MMCSD_CMD6_WRITE_BYTE_SHIFT) /* Set target to value */
53-
54-
#define MMCSD_CMD6_BUS_WIDTH_SHIFT (8)
55-
# define MMCSD_CMD6_BUS_WIDTH_1 ((uint32_t)0x00 << MMCSD_CMD6_BUS_WIDTH_SHIFT) /* Card is in 1 bit mode */
56-
# define MMCSD_CMD6_BUS_WIDTH_4 ((uint32_t)0x01 << MMCSD_CMD6_BUS_WIDTH_SHIFT) /* Card is in 4 bit mode */
57-
# define MMCSD_CMD6_CSD_BUS_WIDTH_8 ((uint32_t)0x02 << MMCSD_CMD6_BUS_WIDTH_SHIFT) /* Card is in 8 bit mode */
58-
# define MMCSD_CMD6_DDR_BUS_WIDTH_4 ((uint32_t)0x05 << MMCSD_CMD6_BUS_WIDTH_SHIFT) /* Card is in 4 bit DDR mode */
59-
# define MMCSD_CMD6_DDR_BUS_WIDTH_8 ((uint32_t)0x06 << MMCSD_CMD6_BUS_WIDTH_SHIFT) /* Card is in 8 bit DDR mode */
45+
46+
#define MMC_CMD6_CMDSET_SHIFT (0)
47+
#define MMC_CMD6_VALUE_SHIFT (8)
48+
#define MMC_CMD6_INDEX_SHIFT (16)
49+
#define MMC_CMD6_MODE_SHIFT (24)
50+
51+
#define MMC_CMD6_CMDSET(cmdset) ((uint32_t)(cmdset) << MMC_CMD6_CMDSET_SHIFT)
52+
#define MMC_CMD6_VALUE(value) ((uint32_t)(value) << MMC_CMD6_VALUE_SHIFT)
53+
#define MMC_CMD6_INDEX(index) ((uint32_t)(index) << MMC_CMD6_INDEX_SHIFT)
54+
#define MMC_CMD6_MODE(mode) ((uint32_t)(mode) << MMC_CMD6_MODE_SHIFT)
55+
56+
#define MMC_CMD6_MODE_CMD_SET (0x00) /* Change the command set */
57+
#define MMC_CMD6_MODE_SET_BITS (0x01) /* Set bits which are 1 in value */
58+
#define MMC_CMD6_MODE_CLEAR_BITS (0x02) /* Clear bits which are 1 in value */
59+
#define MMC_CMD6_MODE_WRITE_BYTE (0x03) /* Set target to value */
60+
61+
#define EXT_CSD_BUS_WIDTH 183 /* WO */
62+
63+
/* EXT_CSD_BUS_WIDTH */
64+
#define EXT_CSD_BUS_WIDTH_1 (0x00) /* Card is in 1 bit mode */
65+
#define EXT_CSD_BUS_WIDTH_4 (0x01) /* Card is in 4 bit mode */
66+
#define EXT_CSD_BUS_WIDTH_8 (0x02) /* Card is in 8 bit mode */
67+
#define EXT_CSD_DDR_BUS_WIDTH_4 (0x05) /* Card is in 4 bit DDR mode */
68+
#define EXT_CSD_DDR_BUS_WIDTH_8 (0x06) /* Card is in 8 bit DDR mode */
69+
70+
#define MMC_CMD6_BUSWIDTH(width) (MMC_CMD6_VALUE(width) | \
71+
MMC_CMD6_INDEX(EXT_CSD_BUS_WIDTH) | \
72+
MMC_CMD6_MODE(MMC_CMD6_MODE_WRITE_BYTE))
6073

6174
/* CMD8 Argument:
6275
* [31:12]: Reserved (shall be set to '0')

0 commit comments

Comments
 (0)