mmc.c (1937e5aa3b0ec0767a36580db654ef8918c09b84) | mmc.c (ab71188ce87ebb66192a5bdbbb9d58052bd32d93) |
---|---|
1/* 2 * Copyright 2008, Freescale Semiconductor, Inc 3 * Andy Fleming 4 * 5 * Based vaguely on the Linux code 6 * 7 * SPDX-License-Identifier: GPL-2.0+ 8 */ --- 863 unchanged lines hidden (view full) --- 872 } 873 874 /* divide frequency by 10, since the mults are 10x bigger */ 875 freq = fbase[(cmd.response[0] & 0x7)]; 876 mult = multipliers[((cmd.response[0] >> 3) & 0xf)]; 877 878 mmc->tran_speed = freq * mult; 879 | 1/* 2 * Copyright 2008, Freescale Semiconductor, Inc 3 * Andy Fleming 4 * 5 * Based vaguely on the Linux code 6 * 7 * SPDX-License-Identifier: GPL-2.0+ 8 */ --- 863 unchanged lines hidden (view full) --- 872 } 873 874 /* divide frequency by 10, since the mults are 10x bigger */ 875 freq = fbase[(cmd.response[0] & 0x7)]; 876 mult = multipliers[((cmd.response[0] >> 3) & 0xf)]; 877 878 mmc->tran_speed = freq * mult; 879 |
880 mmc->dsr_imp = ((cmd.response[1] >> 12) & 0x1); |
|
880 mmc->read_bl_len = 1 << ((cmd.response[1] >> 16) & 0xf); 881 882 if (IS_SD(mmc)) 883 mmc->write_bl_len = mmc->read_bl_len; 884 else 885 mmc->write_bl_len = 1 << ((cmd.response[3] >> 22) & 0xf); 886 887 if (mmc->high_capacity) { --- 14 unchanged lines hidden (view full) --- 902 mmc->capacity_gp[i] = 0; 903 904 if (mmc->read_bl_len > MMC_MAX_BLOCK_LEN) 905 mmc->read_bl_len = MMC_MAX_BLOCK_LEN; 906 907 if (mmc->write_bl_len > MMC_MAX_BLOCK_LEN) 908 mmc->write_bl_len = MMC_MAX_BLOCK_LEN; 909 | 881 mmc->read_bl_len = 1 << ((cmd.response[1] >> 16) & 0xf); 882 883 if (IS_SD(mmc)) 884 mmc->write_bl_len = mmc->read_bl_len; 885 else 886 mmc->write_bl_len = 1 << ((cmd.response[3] >> 22) & 0xf); 887 888 if (mmc->high_capacity) { --- 14 unchanged lines hidden (view full) --- 903 mmc->capacity_gp[i] = 0; 904 905 if (mmc->read_bl_len > MMC_MAX_BLOCK_LEN) 906 mmc->read_bl_len = MMC_MAX_BLOCK_LEN; 907 908 if (mmc->write_bl_len > MMC_MAX_BLOCK_LEN) 909 mmc->write_bl_len = MMC_MAX_BLOCK_LEN; 910 |
911 if ((mmc->dsr_imp) && (0xffffffff != mmc->dsr)) { 912 cmd.cmdidx = MMC_CMD_SET_DSR; 913 cmd.cmdarg = (mmc->dsr & 0xffff) << 16; 914 cmd.resp_type = MMC_RSP_NONE; 915 if (mmc_send_cmd(mmc, &cmd, NULL)) 916 printf("MMC: SET_DSR failed\n"); 917 } 918 |
|
910 /* Select the card, and put it into Transfer Mode */ 911 if (!mmc_host_is_spi(mmc)) { /* cmd not supported in spi */ 912 cmd.cmdidx = MMC_CMD_SELECT_CARD; 913 cmd.resp_type = MMC_RSP_R1; 914 cmd.cmdarg = mmc->rca << 16; 915 err = mmc_send_cmd(mmc, &cmd, NULL); 916 917 if (err) --- 240 unchanged lines hidden (view full) --- 1158 else 1159 mmc->version = SD_VERSION_2; 1160 1161 return 0; 1162} 1163 1164int mmc_register(struct mmc *mmc) 1165{ | 919 /* Select the card, and put it into Transfer Mode */ 920 if (!mmc_host_is_spi(mmc)) { /* cmd not supported in spi */ 921 cmd.cmdidx = MMC_CMD_SELECT_CARD; 922 cmd.resp_type = MMC_RSP_R1; 923 cmd.cmdarg = mmc->rca << 16; 924 err = mmc_send_cmd(mmc, &cmd, NULL); 925 926 if (err) --- 240 unchanged lines hidden (view full) --- 1167 else 1168 mmc->version = SD_VERSION_2; 1169 1170 return 0; 1171} 1172 1173int mmc_register(struct mmc *mmc) 1174{ |
1175 /* Setup dsr related values */ 1176 mmc->dsr_imp = 0; 1177 mmc->dsr = 0xffffffff; |
|
1166 /* Setup the universal parts of the block interface just once */ 1167 mmc->block_dev.if_type = IF_TYPE_MMC; 1168 mmc->block_dev.dev = cur_dev_num++; 1169 mmc->block_dev.removable = 1; 1170 mmc->block_dev.block_read = mmc_bread; 1171 mmc->block_dev.block_write = mmc_bwrite; 1172 mmc->block_dev.block_erase = mmc_berase; 1173 if (!mmc->b_max) --- 101 unchanged lines hidden (view full) --- 1275 err = mmc_start_init(mmc); 1276 1277 if (!err || err == IN_PROGRESS) 1278 err = mmc_complete_init(mmc); 1279 debug("%s: %d, time %lu\n", __func__, err, get_timer(start)); 1280 return err; 1281} 1282 | 1178 /* Setup the universal parts of the block interface just once */ 1179 mmc->block_dev.if_type = IF_TYPE_MMC; 1180 mmc->block_dev.dev = cur_dev_num++; 1181 mmc->block_dev.removable = 1; 1182 mmc->block_dev.block_read = mmc_bread; 1183 mmc->block_dev.block_write = mmc_bwrite; 1184 mmc->block_dev.block_erase = mmc_berase; 1185 if (!mmc->b_max) --- 101 unchanged lines hidden (view full) --- 1287 err = mmc_start_init(mmc); 1288 1289 if (!err || err == IN_PROGRESS) 1290 err = mmc_complete_init(mmc); 1291 debug("%s: %d, time %lu\n", __func__, err, get_timer(start)); 1292 return err; 1293} 1294 |
1295int mmc_set_dsr(struct mmc *mmc, u16 val) 1296{ 1297 mmc->dsr = val; 1298 return 0; 1299} 1300 |
|
1283/* 1284 * CPU and board-specific MMC initializations. Aliased function 1285 * signals caller to move on 1286 */ 1287static int __def_mmc_init(bd_t *bis) 1288{ 1289 return -1; 1290} --- 200 unchanged lines hidden --- | 1301/* 1302 * CPU and board-specific MMC initializations. Aliased function 1303 * signals caller to move on 1304 */ 1305static int __def_mmc_init(bd_t *bis) 1306{ 1307 return -1; 1308} --- 200 unchanged lines hidden --- |