Lines Matching refs:ext_csd
659 static int mmc_send_ext_csd(struct mmc *mmc, u8 *ext_csd) in mmc_send_ext_csd() argument
668 memcpy(ext_csd, mmc_ext_csd, 512); in mmc_send_ext_csd()
679 data.dest = (char *)ext_csd; in mmc_send_ext_csd()
685 memcpy(mmc_ext_csd, ext_csd, 512); in mmc_send_ext_csd()
693 memcpy(mmc_ecsd_base, ext_csd, 512); in mmc_send_ext_csd()
779 ALLOC_CACHE_ALIGN_BUFFER(u8, ext_csd, MMC_MAX_BLOCK_LEN); in mmc_select_bus_width()
788 err = mmc_send_ext_csd(mmc, ext_csd); in mmc_select_bus_width()
823 if ((ext_csd[EXT_CSD_PARTITIONING_SUPPORT] == in mmc_select_bus_width()
825 (ext_csd[EXT_CSD_HC_WP_GRP_SIZE] == in mmc_select_bus_width()
827 (ext_csd[EXT_CSD_REV] == test_csd[EXT_CSD_REV]) && in mmc_select_bus_width()
828 (ext_csd[EXT_CSD_HC_ERASE_GRP_SIZE] == in mmc_select_bus_width()
830 !memcmp(&ext_csd[EXT_CSD_SEC_CNT], in mmc_select_bus_width()
1104 static u32 mmc_select_card_type(struct mmc *mmc, u8 *ext_csd) argument
1109 card_type = ext_csd[EXT_CSD_CARD_TYPE];
1146 ext_csd[EXT_CSD_STROBE_SUPPORT] &&
1172 ALLOC_CACHE_ALIGN_BUFFER(u8, ext_csd, MMC_MAX_BLOCK_LEN);
1187 err = mmc_send_ext_csd(mmc, ext_csd);
1192 avail_type = mmc_select_card_type(mmc, ext_csd);
1292 ALLOC_CACHE_ALIGN_BUFFER(u8, ext_csd, MMC_MAX_BLOCK_LEN);
1351 err = mmc_send_ext_csd(mmc, ext_csd);
1356 (ext_csd[EXT_CSD_MAX_ENH_SIZE_MULT+2] << 16) +
1357 (ext_csd[EXT_CSD_MAX_ENH_SIZE_MULT+1] << 8) +
1358 ext_csd[EXT_CSD_MAX_ENH_SIZE_MULT];
1369 wr_rel_set = ext_csd[EXT_CSD_WR_REL_SET];
1385 if (wr_rel_set != ext_csd[EXT_CSD_WR_REL_SET] &&
1386 !(ext_csd[EXT_CSD_WR_REL_PARAM] & EXT_CSD_HS_CTRL_REL)) {
1392 if (ext_csd[EXT_CSD_PARTITION_SETTING] &
1402 if (!(ext_csd[EXT_CSD_ERASE_GROUP_DEF] & 0x01)) {
1409 ext_csd[EXT_CSD_ERASE_GROUP_DEF] = 1;
1413 ext_csd[EXT_CSD_HC_ERASE_GRP_SIZE] * 1024;
1453 if (wr_rel_set != ext_csd[EXT_CSD_WR_REL_SET]) {
1737 ALLOC_CACHE_ALIGN_BUFFER(u8, ext_csd, MMC_MAX_BLOCK_LEN);
1893 err = mmc_send_ext_csd(mmc, ext_csd);
1896 if (ext_csd[EXT_CSD_REV] >= 2) {
1902 capacity = ext_csd[EXT_CSD_SEC_CNT] << 0
1903 | ext_csd[EXT_CSD_SEC_CNT + 1] << 8
1904 | ext_csd[EXT_CSD_SEC_CNT + 2] << 16
1905 | ext_csd[EXT_CSD_SEC_CNT + 3] << 24;
1911 switch (ext_csd[EXT_CSD_REV]) {
1940 part_completed = !!(ext_csd[EXT_CSD_PARTITION_SETTING] &
1944 mmc->part_support = ext_csd[EXT_CSD_PARTITIONING_SUPPORT];
1945 if ((ext_csd[EXT_CSD_PARTITIONING_SUPPORT] & PART_SUPPORT) ||
1946 ext_csd[EXT_CSD_BOOT_MULT])
1947 mmc->part_config = ext_csd[EXT_CSD_PART_CONF];
1949 (ext_csd[EXT_CSD_PARTITIONING_SUPPORT] & ENHNCD_SUPPORT))
1950 mmc->part_attr = ext_csd[EXT_CSD_PARTITIONS_ATTRIBUTE];
1951 if (ext_csd[EXT_CSD_SEC_FEATURE_SUPPORT] & EXT_CSD_SEC_GB_CL_EN)
1954 mmc->capacity_boot = ext_csd[EXT_CSD_BOOT_MULT] << 17;
1956 mmc->capacity_rpmb = ext_csd[EXT_CSD_RPMB_MULT] << 17;
1960 uint mult = (ext_csd[idx + 2] << 16) +
1961 (ext_csd[idx + 1] << 8) + ext_csd[idx];
1968 ext_csd[EXT_CSD_HC_ERASE_GRP_SIZE];
1969 mmc->capacity_gp[i] *= ext_csd[EXT_CSD_HC_WP_GRP_SIZE];
1975 (ext_csd[EXT_CSD_ENH_SIZE_MULT+2] << 16) +
1976 (ext_csd[EXT_CSD_ENH_SIZE_MULT+1] << 8) +
1977 ext_csd[EXT_CSD_ENH_SIZE_MULT];
1978 mmc->enh_user_size *= ext_csd[EXT_CSD_HC_ERASE_GRP_SIZE];
1979 mmc->enh_user_size *= ext_csd[EXT_CSD_HC_WP_GRP_SIZE];
1982 (ext_csd[EXT_CSD_ENH_START_ADDR+3] << 24) +
1983 (ext_csd[EXT_CSD_ENH_START_ADDR+2] << 16) +
1984 (ext_csd[EXT_CSD_ENH_START_ADDR+1] << 8) +
1985 ext_csd[EXT_CSD_ENH_START_ADDR];
1997 if ((ext_csd[EXT_CSD_PARTITIONING_SUPPORT] & PART_SUPPORT) &&
1998 (ext_csd[EXT_CSD_PARTITIONS_ATTRIBUTE] & PART_ENH_ATTRIB))
2007 ext_csd[EXT_CSD_ERASE_GROUP_DEF] = 1;
2010 if (ext_csd[EXT_CSD_ERASE_GROUP_DEF] & 0x01) {
2013 ext_csd[EXT_CSD_HC_ERASE_GRP_SIZE] * 1024;
2020 capacity = (ext_csd[EXT_CSD_SEC_CNT]) |
2021 (ext_csd[EXT_CSD_SEC_CNT + 1] << 8) |
2022 (ext_csd[EXT_CSD_SEC_CNT + 2] << 16) |
2023 (ext_csd[EXT_CSD_SEC_CNT + 3] << 24);
2037 * ext_csd[EXT_CSD_HC_ERASE_GRP_SIZE]
2038 * ext_csd[EXT_CSD_HC_WP_GRP_SIZE];
2040 mmc->wr_rel_set = ext_csd[EXT_CSD_WR_REL_SET];
2042 mmc->raw_driver_strength = ext_csd[EXT_CSD_DRIVER_STRENGTH];
2448 ALLOC_CACHE_ALIGN_BUFFER(u8, ext_csd, MMC_MAX_BLOCK_LEN);
2450 err = mmc_send_ext_csd(mmc, ext_csd);
2456 if (!(ext_csd[EXT_CSD_BKOPS_SUPPORT] & 0x1)) {
2461 if (ext_csd[EXT_CSD_BKOPS_EN] & 0x1) {