27#if (HAL_USE_MMC_SPI == TRUE) || (HAL_USE_SDC == TRUE) || defined(__DOXYGEN__) 
   64  unsigned startidx, endidx, startoff;
 
   69  startidx = start / 32U;
 
   70  startoff = start % 32U;
 
   72  endmask  = ((uint32_t)1U << ((end % 32U) + 1U)) - 1U;
 
   75  if (startidx < endidx) {
 
   76    return (data[startidx] >> startoff) |               
 
   77           ((data[endidx] & endmask) << (32U - startoff));
 
   79  return (data[startidx] & endmask) >> startoff;        
 
 
  104    return ((a + 1U) << (b + 2U)) << (c - 9U);  
 
 
  129  return ((uint32_t)ext_csd[215] << 24U) +
 
  130         ((uint32_t)ext_csd[214] << 16U) +
 
  131         ((uint32_t)ext_csd[213] << 8U)  +
 
  132         (uint32_t)ext_csd[212];
 
 
#define MMCSD_CID_MMC_PNM4_SLICE
 
#define MMCSD_CID_MMC_CRC_SLICE
 
#define MMCSD_CID_MMC_PSN_SLICE
 
#define MMCSD_CSD_10_CRC_SLICE
 
#define MMCSD_CSD_20_WP_GRP_ENABLE_SLICE
 
#define MMCSD_CSD_10_COPY_SLICE
 
void _mmcsd_unpack_csd_v10(const MMCSDBlockDevice *sdcp, unpacked_sdc_csd_10_t *csd10)
Unpacks SDC CSD v1.0 array in structure.
 
#define MMCSD_CSD_MMC_R2W_FACTOR_SLICE
 
#define MMCSD_CSD_20_R2W_FACTOR_SLICE
 
#define MMCSD_CSD_20_WRITE_BL_PARTIAL_SLICE
 
#define MMCSD_CSD_10_ERASE_SECTOR_SIZE_SLICE
 
#define MMCSD_CSD_10_WRITE_BL_LEN_SLICE
 
#define MMCSD_CSD_10_READ_BLK_MISALIGN_SLICE
 
#define MMCSD_CSD_MMC_ERASE_GRP_SIZE_SLICE
 
#define MMCSD_CSD_20_ERASE_BLK_EN_SLICE
 
#define MMCSD_CSD_MMC_DSR_IMP_SLICE
 
#define MMCSD_CSD_MMC_CSD_STRUCTURE_SLICE
 
#define MMCSD_CSD_10_FILE_FORMAT_SLICE
 
void _mmcsd_unpack_mmc_cid(const MMCSDBlockDevice *sdcp, unpacked_mmc_cid_t *cidmmc)
Unpacks MMC CID array in structure.
 
void _mmcsd_unpack_sdc_cid(const MMCSDBlockDevice *sdcp, unpacked_sdc_cid_t *cidsdc)
Unpacks SDC CID array in structure.
 
#define MMCSD_CID_SDC_PRV_N_SLICE
 
#define MMCSD_CSD_MMC_VDD_W_CURR_MAX_SLICE
 
#define MMCSD_CSD_10_TAAC_SLICE
 
#define MMCSD_CSD_MMC_VDD_W_CURR_MIN_SLICE
 
#define MMCSD_CSD_MMC_FILE_FORMAT_GRP_SLICE
 
#define MMCSD_CID_MMC_MID_SLICE
 
#define MMCSD_CID_SDC_PNM0_SLICE
 
#define MMCSD_CID_SDC_PNM1_SLICE
 
#define MMCSD_CSD_MMC_READ_BLK_MISALIGN_SLICE
 
#define MMCSD_CSD_10_DSR_IMP_SLICE
 
#define MMCSD_CID_SDC_PRV_M_SLICE
 
#define MMCSD_CSD_20_NSAC_SLICE
 
#define MMCSD_CSD_MMC_CRC_SLICE
 
#define MMCSD_CSD_10_WRITE_BL_PARTIAL_SLICE
 
#define MMCSD_CSD_20_FILE_FORMAT_GRP_SLICE
 
#define MMCSD_CSD_10_TMP_WRITE_PROTECT_SLICE
 
void _mmcsd_unpack_csd_v20(const MMCSDBlockDevice *sdcp, unpacked_sdc_csd_20_t *csd20)
Unpacks SDC CSD v2.0 array in structure.
 
#define MMCSD_CSD_10_WRITE_BLK_MISALIGN_SLICE
 
#define MMCSD_CSD_MMC_WRITE_BL_PARTIAL_SLICE
 
#define MMCSD_CSD_MMC_SPEC_VERS_SLICE
 
#define MMCSD_CSD_10_ERASE_BLK_EN_SLICE
 
#define MMCSD_CID_SDC_OID_SLICE
 
#define MMCSD_CSD_10_R2W_FACTOR_SLICE
 
#define MMCSD_CSD_MMC_READ_BL_LEN_SLICE
 
#define MMCSD_CSD_10_FILE_FORMAT_GRP_SLICE
 
#define MMCSD_CSD_MMC_ECC_SLICE
 
#define MMCSD_CSD_MMC_VDD_R_CURR_MAX_SLICE
 
#define MMCSD_CSD_MMC_COPY_SLICE
 
#define MMCSD_CSD_MMC_FILE_FORMAT_SLICE
 
#define MMCSD_CSD_10_WP_GRP_SIZE_SLICE
 
#define MMCSD_CSD_MMC_WRITE_BLK_MISALIGN_SLICE
 
#define MMCSD_CSD_20_COPY_SLICE
 
#define MMCSD_CSD_20_READ_BLK_MISALIGN_SLICE
 
#define MMCSD_CSD_MMC_C_SIZE_MULT_SLICE
 
#define MMCSD_CSD_20_WRITE_BLK_MISALIGN_SLICE
 
#define MMCSD_CSD_20_DSR_IMP_SLICE
 
#define MMCSD_CSD_MMC_CCC_SLICE
 
#define MMCSD_CSD_MMC_READ_BL_PARTIAL_SLICE
 
#define MMCSD_CID_MMC_PNM1_SLICE
 
#define MMCSD_CSD_MMC_TRAN_SPEED_SLICE
 
#define MMCSD_CSD_MMC_TAAC_SLICE
 
#define MMCSD_CID_SDC_PNM2_SLICE
 
#define MMCSD_CSD_20_WP_GRP_SIZE_SLICE
 
#define MMCSD_CSD_10_C_SIZE_SLICE
 
#define MMCSD_CID_MMC_MDT_M_SLICE
 
#define MMCSD_CSD_MMC_PERM_WRITE_PROTECT_SLICE
 
#define MMCSD_CID_SDC_CRC_SLICE
 
#define MMCSD_CSD_20_WRITE_BL_LEN_SLICE
 
uint32_t _mmcsd_get_slice(const uint32_t *data, uint32_t end, uint32_t start)
Gets a bit field from a words array.
 
#define MMCSD_CSD_10_PERM_WRITE_PROTECT_SLICE
 
#define MMCSD_CSD_20_CCC_SLICE
 
#define MMCSD_CSD_20_PERM_WRITE_PROTECT_SLICE
 
#define MMCSD_CSD_10_NSAC_SLICE
 
#define MMCSD_CID_SDC_PNM3_SLICE
 
#define MMCSD_CSD_10_WP_GRP_ENABLE_SLICE
 
#define MMCSD_CSD_MMC_WP_GRP_SIZE_SLICE
 
#define MMCSD_CSD_MMC_NSAC_SLICE
 
uint32_t _mmcsd_get_capacity(const uint32_t *csd)
Extract card capacity from a CSD.
 
#define MMCSD_CID_MMC_PRV_M_SLICE
 
#define MMCSD_CID_MMC_PNM0_SLICE
 
#define MMCSD_CSD_MMC_WP_GRP_ENABLE_SLICE
 
#define MMCSD_CSD_MMC_TMP_WRITE_PROTECT_SLICE
 
#define MMCSD_CID_MMC_PRV_N_SLICE
 
void _mmcsd_unpack_csd_mmc(const MMCSDBlockDevice *sdcp, unpacked_mmc_csd_t *csdmmc)
Unpacks MMC CSD array in structure.
 
#define MMCSD_CSD_20_READ_BL_PARTIAL_SLICE
 
#define MMCSD_CSD_20_TMP_WRITE_PROTECT_SLICE
 
#define MMCSD_CID_SDC_PSN_SLICE
 
#define MMCSD_CSD_20_CSD_STRUCTURE_SLICE
 
#define MMCSD_CSD_MMC_VDD_R_CURR_MIN_SLICE
 
#define MMCSD_CSD_10_CCC_SLICE
 
#define MMCSD_CSD_10_READ_BL_LEN_SLICE
 
#define MMCSD_CSD_20_ERASE_SECTOR_SIZE_SLICE
 
#define MMCSD_CSD_10_C_SIZE_MULT_SLICE
 
#define MMCSD_CID_MMC_PNM3_SLICE
 
#define MMCSD_CID_MMC_PNM5_SLICE
 
#define MMCSD_CSD_20_CRC_SLICE
 
#define MMCSD_CSD_20_READ_BL_LEN_SLICE
 
#define MMCSD_CSD_MMC_WRITE_BL_LEN_SLICE
 
#define MMCSD_CSD_10_TRANS_SPEED_SLICE
 
#define MMCSD_CID_SDC_PNM4_SLICE
 
#define MMCSD_CSD_10_READ_BL_PARTIAL_SLICE
 
#define MMCSD_CID_MMC_PNM2_SLICE
 
uint32_t _mmcsd_get_capacity_ext(const uint8_t *ext_csd)
Extract MMC card capacity from EXT_CSD.
 
#define MMCSD_CID_MMC_MDT_Y_SLICE
 
#define MMCSD_CSD_10_CSD_STRUCTURE_SLICE
 
#define MMCSD_CSD_20_FILE_FORMAT_SLICE
 
#define MMCSD_CSD_MMC_ERASE_GRP_MULT_SLICE
 
#define MMCSD_CSD_20_TAAC_SLICE
 
#define MMCSD_CID_SDC_MDT_M_SLICE
 
#define MMCSD_CSD_MMC_C_SIZE_SLICE
 
#define MMCSD_CID_MMC_OID_SLICE
 
#define MMCSD_CID_SDC_MID_SLICE
 
#define MMCSD_CID_SDC_MDT_Y_SLICE
 
#define MMCSD_CSD_20_C_SIZE_SLICE
 
#define MMCSD_CSD_20_TRANS_SPEED_SLICE
 
#define osalDbgCheck(c)
Function parameters check.
 
MCC/SD block device class.
 
Unpacked CID register from MMC.
 
Unpacked CSD register from MMC.
 
uint8_t write_blk_misalign
 
uint8_t tmp_write_protect
 
uint8_t perm_write_protect
 
uint8_t read_blk_misalign
 
Unpacked CID register from SDC.
 
Unpacked CSD v1.0 register from SDC.
 
uint8_t tmp_write_protect
 
uint8_t perm_write_protect
 
uint8_t write_blk_misalign
 
uint8_t erase_sector_size
 
uint8_t read_blk_misalign
 
Unpacked CSD v2.0 register from SDC.
 
uint8_t write_blk_misalign
 
uint8_t read_blk_misalign
 
uint8_t erase_sector_size
 
uint8_t tmp_write_protect
 
uint8_t perm_write_protect