diff --git a/Documentation/NuttX.html b/Documentation/NuttX.html index 29b09d13be8..2542e0df078 100644 --- a/Documentation/NuttX.html +++ b/Documentation/NuttX.html @@ -1656,7 +1656,7 @@ pascal-2.0 2010-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr> stdbool.h. This change was necessary for compatibility with NuttX-5.0. -buildroot-1.8 2010-xx-xx <spudmonkey@racsa.co.cr> +buildroot-1.8 2010-xx-xx * configs/cortexm3-defconfig-4.3.3: Added support for NuttX NXFLAT tools. @@ -1665,7 +1665,8 @@ buildroot-1.8 2010-xx-xx <spudmonkey@racsa.co.cr> * configs/m68hc12-defconfig-4.3.3: Update to m68ch11-defconfig. * configs/m68hc12-defconfig-3.4.6: There are problems building GCC 4.3.3 for the hc12. - + * configs/m32c-defconfig-4.2.4: Added genromfs + * configs/m32c-defconfig-4.3.3: Update to m32c-defconfig-4.2.4 diff --git a/drivers/mmcsd/mmcsd_csd.h b/drivers/mmcsd/mmcsd_csd.h index 448bababf6f..e35eacad5bf 100644 --- a/drivers/mmcsd/mmcsd_csd.h +++ b/drivers/mmcsd/mmcsd_csd.h @@ -283,7 +283,7 @@ /* C_SIZE 62-73 Device size */ #define MMCSD_CSD_CSIZE(csd) (((csd[6] & 3) << 10) | (csd[7] << 2) | (csd[8] >> 6)) -#define SD20_CSD_CSIZE(csd) (((csd[7] & 0x3f) << 16) | (csd[8] << 8) | csd[9]) +#define SD20_CSD_CSIZE(csd) ((((uint32_t)csd[7] & 0x3f) << 16) | (csd[8] << 8) | csd[9]) /* VDD_R_CURR_MIN 59-61 = Max. read current at Vcc min */ diff --git a/drivers/mmcsd/mmcsd_sdio.c b/drivers/mmcsd/mmcsd_sdio.c index 710fee47648..b2c090182c4 100644 --- a/drivers/mmcsd/mmcsd_sdio.c +++ b/drivers/mmcsd/mmcsd_sdio.c @@ -46,6 +46,7 @@ #include #include #include +#include #include #include #include @@ -74,10 +75,11 @@ /* Timing (all in units of microseconds) */ -#define MMCSD_POWERUP_DELAY 250 /* 74 clock cycles @ 400KHz = 185uS */ -#define MMCSD_IDLE_DELAY (50*1000) /* Short delay to allow change to IDLE state */ -#define MMCSD_DSR_DELAY (100*1000) /* Time to wait after setting DSR */ -#define MMCSD_CLK_DELAY (500*1000) /* Delay after changing clock speeds */ +#define MMCSD_ +#define MMCSD_POWERUP_DELAY ((useconds_t)250) /* 74 clock cycles @ 400KHz = 185uS */ +#define MMCSD_IDLE_DELAY ((useconds_t)50000) /* Short delay to allow change to IDLE state */ +#define MMCSD_DSR_DELAY ((useconds_t)100000) /* Time to wait after setting DSR */ +#define MMCSD_CLK_DELAY ((useconds_t)500000) /* Delay after changing clock speeds */ /* Data delays (all in units of milliseconds). * @@ -905,7 +907,7 @@ static int mmcsd_getR1(FAR struct mmcsd_state_s *priv, FAR uint32_t *r1) * R1 card status register. */ - mmcsd_sendcmdpoll(priv, MMCSD_CMD13, priv->rca << 16); + mmcsd_sendcmdpoll(priv, MMCSD_CMD13, (uint32_t)priv->rca << 16); ret = SDIO_RECVR1(priv->dev, MMCSD_CMD13, &localR1); if (ret == OK) { @@ -2210,7 +2212,7 @@ static int mmcsd_mmcinitialize(FAR struct mmcsd_state_s *priv) /* Select high speed MMC clocking (which may depend on the DSR setting) */ SDIO_CLOCK(priv->dev, CLOCK_MMC_TRANSFER); - up_udelay( MMCSD_CLK_DELAY); + up_udelay(MMCSD_CLK_DELAY); return OK; } #endif @@ -2294,7 +2296,7 @@ static int mmcsd_sdinitialize(FAR struct mmcsd_state_s *priv) * mode. */ - mmcsd_sendcmdpoll(priv, MMCSD_CMD9, priv->rca << 16); + mmcsd_sendcmdpoll(priv, MMCSD_CMD9, (uint32_t)priv->rca << 16); ret = SDIO_RECVR2(priv->dev, MMCSD_CMD9, csd); if (ret != OK) { @@ -2308,7 +2310,7 @@ static int mmcsd_sdinitialize(FAR struct mmcsd_state_s *priv) * card selected all of the time. */ - mmcsd_sendcmdpoll(priv, MMCSD_CMD7S, priv->rca << 16); + mmcsd_sendcmdpoll(priv, MMCSD_CMD7S, (uint32_t)priv->rca << 16); ret = mmcsd_recvR1(priv, MMCSD_CMD7S); if (ret != OK) { diff --git a/drivers/mmcsd/mmcsd_sdio.h b/drivers/mmcsd/mmcsd_sdio.h index 71765310c7f..e4eb02b3cb4 100644 --- a/drivers/mmcsd/mmcsd_sdio.h +++ b/drivers/mmcsd/mmcsd_sdio.h @@ -48,127 +48,128 @@ ********************************************************************************************/ /* CMD8 Argument: - * [31:12]: Reserved (shall be set to '0') * [11:8]: Supply Voltage (VHS) 0x1 (Range: 2.7-3.6 V) + * [31:12]: Reserved (shall be set to '0') + * [11:8]: Supply Voltage (VHS) 0x1 (Range: 2.7-3.6 V) * [7:0]: Check Pattern (recommended 0xaa) * CMD8 Response: R7 */ -#define MMCSD_CMD8VOLTAGE_SHIFT 8 /* Bits 8-11: Supply voltage */ -#define MMCSD_CMD8VOLTAGE_MASK (0x0f << MMCSD_CMD8VOLTAGE_SHIFT) -# define MMCSD_CMD8VOLTAGE_27 (0x01 << MMCSD_CMD8VOLTAGE_SHIFT) /* 2.7-3.6V */ -#define MMCSD_CMD8ECHO_SHIFT 0 /* Bits 0-7: Check pattern */ -#define MMCSD_CMD8ECHO_MASK (0xff << MMCSD_CMD8ECHO_SHIFT) -# define MMCSD_CMD8CHECKPATTERN (0xaa << MMCSD_CMD8ECHO_SHIFT) +#define MMCSD_CMD8VOLTAGE_SHIFT (8) /* Bits 8-11: Supply voltage */ +#define MMCSD_CMD8VOLTAGE_MASK ((uint32_t)0x0f << MMCSD_CMD8VOLTAGE_SHIFT) +# define MMCSD_CMD8VOLTAGE_27 ((uint32_t)0x01 << MMCSD_CMD8VOLTAGE_SHIFT) /* 2.7-3.6V */ +#define MMCSD_CMD8ECHO_SHIFT (0) /* Bits 0-7: Check pattern */ +#define MMCSD_CMD8ECHO_MASK ((uint32_t)0xff << MMCSD_CMD8ECHO_SHIFT) +# define MMCSD_CMD8CHECKPATTERN ((uint32_t)0xaa << MMCSD_CMD8ECHO_SHIFT) /* ACMD6 argument */ -#define MMCSD_ACMD6_BUSWIDTH_1 (0) /* Bus width = 1-bit */ -#define MMCSD_ACMD6_BUSWIDTH_4 (2) /* Bus width = 4-bit */ +#define MMCSD_ACMD6_BUSWIDTH_1 ((uint32_t)0) /* Bus width = 1-bit */ +#define MMCSD_ACMD6_BUSWIDTH_4 ((uint32_t)2) /* Bus width = 4-bit */ /* ACMD41 argument */ -#define MMCSD_ACMD41_VOLTAGEWINDOW 0x80100000 -#define MMCSD_ACMD41_HIGHCAPACITY (1 << 30) -#define MMCSD_ACMD41_STDCAPACITY (0) +#define MMCSD_ACMD41_VOLTAGEWINDOW ((uint32_t)0x80100000) +#define MMCSD_ACMD41_HIGHCAPACITY ((uint32_t)1 << 30) +#define MMCSD_ACMD41_STDCAPACITY ((uint32_t)0) /* ACMD42 argument */ -#define MMCSD_ACMD42_CD_DISCONNECT (0) /* Disconnect card detection logic */ -#define MMCSD_ACMD42_CD_CONNECT (1) /* Connect card detection logic */ +#define MMCSD_ACMD42_CD_DISCONNECT ((uint32_t)0) /* Disconnect card detection logic */ +#define MMCSD_ACMD42_CD_CONNECT ((uint32_t)1) /* Connect card detection logic */ /* R1 Card Status bit definitions */ -#define MMCSD_R1_OUTOFRANGE (1 << 31) /* Bad argument */ -#define MMCSD_R1_ADDRESSERROR (1 << 30) /* Bad address */ -#define MMCSD_R1_BLOCKLENERROR (1 << 29) /* Bad block length */ -#define MMCSD_R1_ERASESEQERROR (1 << 28) /* Erase cmd error */ -#define MMCSD_R1_ERASEPARAM (1 << 27) /* Bad write blocks */ -#define MMCSD_R1_WPVIOLATION (1 << 26) /* Erase access failure */ -#define MMCSD_R1_CARDISLOCKED (1 << 25) /* Card is locked */ -#define MMCSD_R1_LOCKUNLOCKFAILED (1 << 24) /* Password error */ -#define MMCSD_R1_COMCRCERROR (1 << 23) /* CRC error */ -#define MMCSD_R1_ILLEGALCOMMAND (1 << 22) /* Bad command */ -#define MMCSD_R1_CARDECCFAILED (1 << 21) /* Failed to correct data */ -#define MMCSD_R1_CCERROR (1 << 20) /* Card controller error */ -#define MMCSD_R1_ERROR (1 << 19) /* General error */ -#define MMCSD_R1_UNDERRUN (1 << 18) /* Underrun (MMC only) */ -#define MMCSD_R1_OVERRRUN (1 << 17) /* Overrun (MMC only) */ -#define MMCSD_R1_CIDCSDOVERWRITE (1 << 16) /* CID/CSD error */ -#define MMCSD_R1_WPERASESKIP (1 << 15) /* Not all erased */ -#define MMCSD_R1_CARDECCDISABLED (1 << 14) /* Internal ECC not used */ -#define MMCSD_R1_ERASERESET (1 << 13) /* Reset sequence cleared */ -#define MMCSD_R1_STATE_SHIFT (9) /* Current card state */ -#define MMCSD_R1_STATE_MASK (15 << MMCSD_R1_STATE_SHIFT) - /* Card identification mode states */ -# define MMCSD_R1_STATE_IDLE (0 << MMCSD_R1_STATE_SHIFT) /* 0=Idle state */ -# define MMCSD_R1_STATE_READY (1 << MMCSD_R1_STATE_SHIFT) /* 1=Ready state */ -# define MMCSD_R1_STATE_IDENT (2 << MMCSD_R1_STATE_SHIFT) /* 2=Identification state */ - /* Data transfer states */ -# define MMCSD_R1_STATE_STBY (3 << MMCSD_R1_STATE_SHIFT) /* 3=Standby state */ -# define MMCSD_R1_STATE_TRAN (4 << MMCSD_R1_STATE_SHIFT) /* 4=Transfer state */ -# define MMCSD_R1_STATE_DATA (5 << MMCSD_R1_STATE_SHIFT) /* 5=Sending data state */ -# define MMCSD_R1_STATE_RCV (6 << MMCSD_R1_STATE_SHIFT) /* 6=Receiving data state */ -# define MMCSD_R1_STATE_PRG (7 << MMCSD_R1_STATE_SHIFT) /* 7=Programming state */ -# define MMCSD_R1_STATE_DIS (8 << MMCSD_R1_STATE_SHIFT) /* 8=Disconnect state */ -#define MMCSD_R1_READYFORDATA (1 << 8) /* Buffer empty */ -#define MMCSD_R1_APPCMD (1 << 5) /* Next CMD is ACMD */ -#define MMCSD_R1_AKESEQERROR (1 << 3) /* Authentication error */ -#define MMCSD_R1_ERRORMASK 0xfdffe008 /* Error mask */ +#define MMCSD_R1_OUTOFRANGE ((uint32_t)1 << 31) /* Bad argument */ +#define MMCSD_R1_ADDRESSERROR ((uint32_t)1 << 30) /* Bad address */ +#define MMCSD_R1_BLOCKLENERROR ((uint32_t)1 << 29) /* Bad block length */ +#define MMCSD_R1_ERASESEQERROR ((uint32_t)1 << 28) /* Erase cmd error */ +#define MMCSD_R1_ERASEPARAM ((uint32_t)1 << 27) /* Bad write blocks */ +#define MMCSD_R1_WPVIOLATION ((uint32_t)1 << 26) /* Erase access failure */ +#define MMCSD_R1_CARDISLOCKED ((uint32_t)1 << 25) /* Card is locked */ +#define MMCSD_R1_LOCKUNLOCKFAILED ((uint32_t)1 << 24) /* Password error */ +#define MMCSD_R1_COMCRCERROR ((uint32_t)1 << 23) /* CRC error */ +#define MMCSD_R1_ILLEGALCOMMAND ((uint32_t)1 << 22) /* Bad command */ +#define MMCSD_R1_CARDECCFAILED ((uint32_t)1 << 21) /* Failed to correct data */ +#define MMCSD_R1_CCERROR ((uint32_t)1 << 20) /* Card controller error */ +#define MMCSD_R1_ERROR ((uint32_t)1 << 19) /* General error */ +#define MMCSD_R1_UNDERRUN ((uint32_t)1 << 18) /* Underrun (MMC only) */ +#define MMCSD_R1_OVERRRUN ((uint32_t)1 << 17) /* Overrun (MMC only) */ +#define MMCSD_R1_CIDCSDOVERWRITE ((uint32_t)1 << 16) /* CID/CSD error */ +#define MMCSD_R1_WPERASESKIP ((uint32_t)1 << 15) /* Not all erased */ +#define MMCSD_R1_CARDECCDISABLED ((uint32_t)1 << 14) /* Internal ECC not used */ +#define MMCSD_R1_ERASERESET ((uint32_t)1 << 13) /* Reset sequence cleared */ +#define MMCSD_R1_STATE_SHIFT (9) /* Current card state */ +#define MMCSD_R1_STATE_MASK ((uint32_t)15 << MMCSD_R1_STATE_SHIFT) + /* Card identification mode states */ +# define MMCSD_R1_STATE_IDLE ((uint32_t)0 << MMCSD_R1_STATE_SHIFT) /* 0=Idle state */ +# define MMCSD_R1_STATE_READY ((uint32_t)1 << MMCSD_R1_STATE_SHIFT) /* 1=Ready state */ +# define MMCSD_R1_STATE_IDENT ((uint32_t)2 << MMCSD_R1_STATE_SHIFT) /* 2=Identification state */ + /* Data transfer states */ +# define MMCSD_R1_STATE_STBY ((uint32_t)3 << MMCSD_R1_STATE_SHIFT) /* 3=Standby state */ +# define MMCSD_R1_STATE_TRAN ((uint32_t)4 << MMCSD_R1_STATE_SHIFT) /* 4=Transfer state */ +# define MMCSD_R1_STATE_DATA ((uint32_t)5 << MMCSD_R1_STATE_SHIFT) /* 5=Sending data state */ +# define MMCSD_R1_STATE_RCV ((uint32_t)6 << MMCSD_R1_STATE_SHIFT) /* 6=Receiving data state */ +# define MMCSD_R1_STATE_PRG ((uint32_t)7 << MMCSD_R1_STATE_SHIFT) /* 7=Programming state */ +# define MMCSD_R1_STATE_DIS ((uint32_t)8 << MMCSD_R1_STATE_SHIFT) /* 8=Disconnect state */ +#define MMCSD_R1_READYFORDATA ((uint32_t)1 << 8) /* Buffer empty */ +#define MMCSD_R1_APPCMD ((uint32_t)1 << 5) /* Next CMD is ACMD */ +#define MMCSD_R1_AKESEQERROR ((uint32_t)1 << 3) /* Authentication error */ +#define MMCSD_R1_ERRORMASK ((uint32_t)0xfdffe008) /* Error mask */ -#define IS_STATE(v,s) (((v)&MMCSD_R1_STATE_MASK)==(s)) +#define IS_STATE(v,s) ((((uint32_t)v)&MMCSD_R1_STATE_MASK)==(s)) /* R3 (OCR) */ -#define MMC_VDD_20_36 0x00ffff00 /* VDD voltage 2.0-3.6 */ +#define MMC_VDD_20_36 ((uint32_t)0x00ffff00) /* VDD voltage 2.0-3.6 */ -#define MMCSD_VDD_145_150 (1 << 0) /* VDD voltage 1.45 - 1.50 */ -#define MMCSD_VDD_150_155 (1 << 1) /* VDD voltage 1.50 - 1.55 */ -#define MMCSD_VDD_155_160 (1 << 2) /* VDD voltage 1.55 - 1.60 */ -#define MMCSD_VDD_160_165 (1 << 3) /* VDD voltage 1.60 - 1.65 */ -#define MMCSD_VDD_165_170 (1 << 4) /* VDD voltage 1.65 - 1.70 */ -#define MMCSD_VDD_17_18 (1 << 5) /* VDD voltage 1.7 - 1.8 */ -#define MMCSD_VDD_18_19 (1 << 6) /* VDD voltage 1.8 - 1.9 */ -#define MMCSD_VDD_19_20 (1 << 7) /* VDD voltage 1.9 - 2.0 */ -#define MMCSD_VDD_20_21 (1 << 8) /* VDD voltage 2.0-2.1 */ -#define MMCSD_VDD_21_22 (1 << 9) /* VDD voltage 2.1-2.2 */ -#define MMCSD_VDD_22_23 (1 << 10) /* VDD voltage 2.2-2.3 */ -#define MMCSD_VDD_23_24 (1 << 11) /* VDD voltage 2.3-2.4 */ -#define MMCSD_VDD_24_25 (1 << 12) /* VDD voltage 2.4-2.5 */ -#define MMCSD_VDD_25_26 (1 << 13) /* VDD voltage 2.5-2.6 */ -#define MMCSD_VDD_26_27 (1 << 14) /* VDD voltage 2.6-2.7 */ -#define MMCSD_VDD_27_28 (1 << 15) /* VDD voltage 2.7-2.8 */ -#define MMCSD_VDD_28_29 (1 << 16) /* VDD voltage 2.8-2.9 */ -#define MMCSD_VDD_29_30 (1 << 17) /* VDD voltage 2.9-3.0 */ -#define MMCSD_VDD_30_31 (1 << 18) /* VDD voltage 3.0-3.1 */ -#define MMCSD_VDD_31_32 (1 << 19) /* VDD voltage 3.1-3.2 */ -#define MMCSD_VDD_32_33 (1 << 20) /* VDD voltage 3.2-3.3 */ -#define MMCSD_VDD_33_34 (1 << 21) /* VDD voltage 3.3-3.4 */ -#define MMCSD_VDD_34_35 (1 << 22) /* VDD voltage 3.4-3.5 */ -#define MMCSD_VDD_35_36 (1 << 23) /* VDD voltage 3.5-3.6 */ -#define MMCSD_R3_HIGHCAPACITY (1 << 30) /* true: Card supports block addressing */ -#define MMCSD_CARD_BUSY (1 << 31) /* Card power-up busy bit */ +#define MMCSD_VDD_145_150 ((uint32_t)1 << 0) /* VDD voltage 1.45 - 1.50 */ +#define MMCSD_VDD_150_155 ((uint32_t)1 << 1) /* VDD voltage 1.50 - 1.55 */ +#define MMCSD_VDD_155_160 ((uint32_t)1 << 2) /* VDD voltage 1.55 - 1.60 */ +#define MMCSD_VDD_160_165 ((uint32_t)1 << 3) /* VDD voltage 1.60 - 1.65 */ +#define MMCSD_VDD_165_170 ((uint32_t)1 << 4) /* VDD voltage 1.65 - 1.70 */ +#define MMCSD_VDD_17_18 ((uint32_t)1 << 5) /* VDD voltage 1.7 - 1.8 */ +#define MMCSD_VDD_18_19 ((uint32_t)1 << 6) /* VDD voltage 1.8 - 1.9 */ +#define MMCSD_VDD_19_20 ((uint32_t)1 << 7) /* VDD voltage 1.9 - 2.0 */ +#define MMCSD_VDD_20_21 ((uint32_t)1 << 8) /* VDD voltage 2.0-2.1 */ +#define MMCSD_VDD_21_22 ((uint32_t)1 << 9) /* VDD voltage 2.1-2.2 */ +#define MMCSD_VDD_22_23 ((uint32_t)1 << 10) /* VDD voltage 2.2-2.3 */ +#define MMCSD_VDD_23_24 ((uint32_t)1 << 11) /* VDD voltage 2.3-2.4 */ +#define MMCSD_VDD_24_25 ((uint32_t)1 << 12) /* VDD voltage 2.4-2.5 */ +#define MMCSD_VDD_25_26 ((uint32_t)1 << 13) /* VDD voltage 2.5-2.6 */ +#define MMCSD_VDD_26_27 ((uint32_t)1 << 14) /* VDD voltage 2.6-2.7 */ +#define MMCSD_VDD_27_28 ((uint32_t)1 << 15) /* VDD voltage 2.7-2.8 */ +#define MMCSD_VDD_28_29 ((uint32_t)1 << 16) /* VDD voltage 2.8-2.9 */ +#define MMCSD_VDD_29_30 ((uint32_t)1 << 17) /* VDD voltage 2.9-3.0 */ +#define MMCSD_VDD_30_31 ((uint32_t)1 << 18) /* VDD voltage 3.0-3.1 */ +#define MMCSD_VDD_31_32 ((uint32_t)1 << 19) /* VDD voltage 3.1-3.2 */ +#define MMCSD_VDD_32_33 ((uint32_t)1 << 20) /* VDD voltage 3.2-3.3 */ +#define MMCSD_VDD_33_34 ((uint32_t)1 << 21) /* VDD voltage 3.3-3.4 */ +#define MMCSD_VDD_34_35 ((uint32_t)1 << 22) /* VDD voltage 3.4-3.5 */ +#define MMCSD_VDD_35_36 ((uint32_t)1 << 23) /* VDD voltage 3.5-3.6 */ +#define MMCSD_R3_HIGHCAPACITY ((uint32_t)1 << 30) /* true: Card supports block addressing */ +#define MMCSD_CARD_BUSY ((uint32_t)1 << 31) /* Card power-up busy bit */ /* R6 Card Status bit definitions */ -#define MMCSD_R6_RCA_SHIFT (16) /* New published RCA */ -#define MMCSD_R6_RCA_MASK (0xffff << MMCSD_R6_RCA_SHIFT) -#define MMCSD_R6_COMCRCERROR (1 << 15) /* CRC error */ -#define MMCSD_R6_ILLEGALCOMMAND (1 << 14) /* Bad command */ -#define MMCSD_R6_ERROR (1 << 13) /* General error */ -#define MMCSD_R6_STATE_SHIFT (9) /* Current card state */ -#define MMCSD_R6_STATE_MASK (15 << MMCSD_R6_STATE_SHIFT) - /* Card identification mode states */ -# define MMCSD_R6_STATE_IDLE (0 << MMCSD_R6_STATE_SHIFT) /* 0=Idle state */ -# define MMCSD_R6_STATE_READY (1 << MMCSD_R6_STATE_SHIFT) /* 1=Ready state */ -# define MMCSD_R6_STATE_IDENT (2 << MMCSD_R6_STATE_SHIFT) /* 2=Identification state */ - /* Data transfer states */ -# define MMCSD_R6_STATE_STBY (3 << MMCSD_R6_STATE_SHIFT) /* 3=Standby state */ -# define MMCSD_R6_STATE_TRAN (4 << MMCSD_R6_STATE_SHIFT) /* 4=Transfer state */ -# define MMCSD_R6_STATE_DATA (5 << MMCSD_R6_STATE_SHIFT) /* 5=Sending data state */ -# define MMCSD_R6_STATE_RCV (6 << MMCSD_R6_STATE_SHIFT) /* 6=Receiving data state */ -# define MMCSD_R6_STATE_PRG (7 << MMCSD_R6_STATE_SHIFT) /* 7=Programming state */ -# define MMCSD_R6_STATE_DIS (8 << MMCSD_R6_STATE_SHIFT) /* 8=Disconnect state */ -#define MMCSD_R6_ERRORMASK 0x0000e000 /* Error mask */ +#define MMCSD_R6_RCA_SHIFT (16) /* New published RCA */ +#define MMCSD_R6_RCA_MASK ((uint32_t)0xffff << MMCSD_R6_RCA_SHIFT) +#define MMCSD_R6_COMCRCERROR ((uint32_t)1 << 15) /* CRC error */ +#define MMCSD_R6_ILLEGALCOMMAND ((uint32_t)1 << 14) /* Bad command */ +#define MMCSD_R6_ERROR ((uint32_t)1 << 13) /* General error */ +#define MMCSD_R6_STATE_SHIFT (9) /* Current card state */ +#define MMCSD_R6_STATE_MASK ((uint32_t)15 << MMCSD_R6_STATE_SHIFT) + /* Card identification mode states */ +# define MMCSD_R6_STATE_IDLE ((uint32_t)0 << MMCSD_R6_STATE_SHIFT) /* 0=Idle state */ +# define MMCSD_R6_STATE_READY ((uint32_t)1 << MMCSD_R6_STATE_SHIFT) /* 1=Ready state */ +# define MMCSD_R6_STATE_IDENT ((uint32_t)2 << MMCSD_R6_STATE_SHIFT) /* 2=Identification state */ + /* Data transfer states */ +# define MMCSD_R6_STATE_STBY ((uint32_t)3 << MMCSD_R6_STATE_SHIFT) /* 3=Standby state */ +# define MMCSD_R6_STATE_TRAN ((uint32_t)4 << MMCSD_R6_STATE_SHIFT) /* 4=Transfer state */ +# define MMCSD_R6_STATE_DATA (5(uint32_t) << MMCSD_R6_STATE_SHIFT) /* 5=Sending data state */ +# define MMCSD_R6_STATE_RCV ((uint32_t)6 << MMCSD_R6_STATE_SHIFT) /* 6=Receiving data state */ +# define MMCSD_R6_STATE_PRG ((uint32_t)7 << MMCSD_R6_STATE_SHIFT) /* 7=Programming state */ +# define MMCSD_R6_STATE_DIS ((uint32_t) << MMCSD_R6_STATE_SHIFT) /* 8=Disconnect state */ +#define MMCSD_R6_ERRORMASK ((uint32_t)0x0000e00) /* Error mask */ /* SD Configuration Register (SCR) encoding */ @@ -179,14 +180,14 @@ /* Last 4 bytes of the 48-bit R7 response */ -#define MMCSD_R7VERSION_SHIFT 28 /* Bits 28-31: Command version number */ -#define MMCSD_R7VERSION_MASK (0x0f << MMCSD_R7VERSION_SHIFT) -#define MMCSD_R7VOLTAGE_SHIFT 8 /* Bits 8-11: Voltage accepted */ -#define MMCSD_R7VOLTAGE_MASK (0x0f << MMCSD_R7VOLTAGE_SHIFT) -# define MMCSD_R7VOLTAGE_27 (0x01 << MMCSD_R7VOLTAGE_SHIFT) /* 2.7-3.6V */ -#define MMCSD_R7ECHO_SHIFT 0 /* Bits 0-7: Echoed check pattern */ -#define MMCSD_R7ECHO_MASK (0xff << MMCSD_R7ECHO_SHIFT) -# define MMCSD_R7CHECKPATTERN (0xaa << MMCSD_R7ECHO_SHIFT) +#define MMCSD_R7VERSION_SHIFT (28) /* Bits 28-31: Command version number */ +#define MMCSD_R7VERSION_MASK ((uint32_t)0x0f << MMCSD_R7VERSION_SHIFT) +#define MMCSD_R7VOLTAGE_SHIFT (8) /* Bits 8-11: Voltage accepted */ +#define MMCSD_R7VOLTAGE_MASK ((uint32_t)0x0f << MMCSD_R7VOLTAGE_SHIFT) +# define MMCSD_R7VOLTAGE_27 ((uint32_t)0x01 << MMCSD_R7VOLTAGE_SHIFT) /* 2.7-3.6V */ +#define MMCSD_R7ECHO_SHIFT (0) /* Bits 0-7: Echoed check pattern */ +#define MMCSD_R7ECHO_MASK ((uint32_t)0xff << MMCSD_R7ECHO_SHIFT) +# define MMCSD_R7CHECKPATTERN ((uint32_t)0xaa << MMCSD_R7ECHO_SHIFT) /******************************************************************************************** * Public Types @@ -211,8 +212,8 @@ struct mmcsd_cid_s struct mmcsd_csd_s { - uint8_t csdstructure; /* 127:126 CSD structure */ - uint8_t mmcspecvers; /* 125:122 MMC Spec version (MMC only) */ + uint8_t csdstructure; /* 127:126 CSD structure */ + uint8_t mmcspecvers; /* 125:122 MMC Spec version (MMC only) */ struct { diff --git a/drivers/mmcsd/mmcsd_spi.c b/drivers/mmcsd/mmcsd_spi.c index 5dfe349bcc0..f1c2f9a7f5f 100644 --- a/drivers/mmcsd/mmcsd_spi.c +++ b/drivers/mmcsd/mmcsd_spi.c @@ -1570,7 +1570,7 @@ static int mmcsd_mediainitialize(FAR struct mmcsd_slot_s *slot) result = mmcsd_sendcmd(slot, &g_cmd55, 0); if (result == MMCSD_SPIR1_IDLESTATE || result == MMCSD_SPIR1_OK) { - result = mmcsd_sendcmd(slot, &g_acmd41, 1 << 30); + result = mmcsd_sendcmd(slot, &g_acmd41, (uint32_t)1 << 30); if (result == MMCSD_SPIR1_OK) { break; diff --git a/drivers/mmcsd/mmcsd_spi.h b/drivers/mmcsd/mmcsd_spi.h index 4e59296a4f7..055862bebda 100644 --- a/drivers/mmcsd/mmcsd_spi.h +++ b/drivers/mmcsd/mmcsd_spi.h @@ -121,13 +121,13 @@ /* Last 4 bytes of the 5 byte R7 response */ -#define MMCSD_SPIR7_VERSION_SHIFT 28 /* Bits 28-31: Command version number */ -#define MMCSD_SPIR7_VERSION_MASK (0x0f << MMCSD_SPIR7_VERSION_SHIFT) -#define MMCSD_SPIR7_VOLTAGE_SHIFT 8 /* Bits 8-11: Voltage accepted */ -#define MMCSD_SPIR7_VOLTAGE_MASK (0x0f << MMCSD_SPIR7_VOLTAGE_SHIFT) -#define MMCSD_SPIR7_VOLTAGE_27 (0x01 << MMCSD_SPIR7_VOLTAGE_SHIFT) /* 2.7-3.6V */ -#define MMCSD_SPIR7_ECHO_SHIFT 0 /* Bits 0-7: Echoed check pattern */ -#define MMCSD_SPIR7_ECHO_MASK (0xff << MMCSD_SPIR7_ECHO_SHIFT) +#define MMCSD_SPIR7_VERSION_SHIFT (28) /* Bits 28-31: Command version number */ +#define MMCSD_SPIR7_VERSION_MASK ((uint32_t)0x0f << MMCSD_SPIR7_VERSION_SHIFT) +#define MMCSD_SPIR7_VOLTAGE_SHIFT (8) /* Bits 8-11: Voltage accepted */ +#define MMCSD_SPIR7_VOLTAGE_MASK ((uint32_t)0x0f << MMCSD_SPIR7_VOLTAGE_SHIFT) +#define MMCSD_SPIR7_VOLTAGE_27 ((uint32_t)0x01 << MMCSD_SPIR7_VOLTAGE_SHIFT) /* 2.7-3.6V */ +#define MMCSD_SPIR7_ECHO_SHIFT (0) /* Bits 0-7: Echoed check pattern */ +#define MMCSD_SPIR7_ECHO_MASK ((uint32_t)0xff << MMCSD_SPIR7_ECHO_SHIFT) /* Data Response */ @@ -152,17 +152,17 @@ /* Operating Conditions register */ -#define MMCSD_OCR_V27 (1 << 15) /* Bit 15: 2.7-2.8V */ -#define MMCSD_OCR_V28 (1 << 16) /* Bit 16: 2.8-2.9V */ -#define MMCSD_OCR_V29 (1 << 17) /* Bit 17: 2.9-3.0V */ -#define MMCSD_OCR_V30 (1 << 18) /* Bit 18: 3.0-3.1V */ -#define MMCSD_OCR_V31 (1 << 19) /* Bit 19: 3.1-3.2V */ -#define MMCSD_OCR_V32 (1 << 20) /* Bit 20: 3.2-3.3V */ -#define MMCSD_OCR_V33 (1 << 21) /* Bit 21: 3.3-3.4V */ -#define MMCSD_OCR_V34 (1 << 22) /* Bit 22: 3.4-3.5V */ -#define MMCSD_OCR_V35 (1 << 23) /* Bit 23: 3.5-3.6V */ -#define MMCSD_OCR_CCS (1 << 30) /* Bit 30: Card capacity status */ -#define MMCSD_OCR_BUSY (1 << 31) /* Bit 31: Card powered up status bit */ +#define MMCSD_OCR_V27 ((uint32_t)1 << 15) /* Bit 15: 2.7-2.8V */ +#define MMCSD_OCR_V28 ((uint32_t)1 << 16) /* Bit 16: 2.8-2.9V */ +#define MMCSD_OCR_V29 ((uint32_t)1 << 17) /* Bit 17: 2.9-3.0V */ +#define MMCSD_OCR_V30 ((uint32_t)1 << 18) /* Bit 18: 3.0-3.1V */ +#define MMCSD_OCR_V31 ((uint32_t)1 << 19) /* Bit 19: 3.1-3.2V */ +#define MMCSD_OCR_V32 ((uint32_t)1 << 20) /* Bit 20: 3.2-3.3V */ +#define MMCSD_OCR_V33 ((uint32_t)1 << 21) /* Bit 21: 3.3-3.4V */ +#define MMCSD_OCR_V34 ((uint32_t)1 << 22) /* Bit 22: 3.4-3.5V */ +#define MMCSD_OCR_V35 ((uint32_t)1 << 23) /* Bit 23: 3.5-3.6V */ +#define MMCSD_OCR_CCS ((uint32_t)1 << 30) /* Bit 30: Card capacity status */ +#define MMCSD_OCR_BUSY ((uint32_t)1 << 31) /* Bit 31: Card powered up status bit */ /**************************************************************************** * Public Types