package/uboot-xburst/files/drivers/mmc/jz_mmc.c |
558 | 558 | if (retval = mmc_unpack_r1(&request, &r1, 0)) |
559 | 559 | goto exit; |
560 | 560 | |
561 | | if (sd2_0) |
562 | | src /= len; |
| 561 | if (!sd2_0) |
| 562 | src *= mmcinfo.block_len; |
563 | 563 | |
564 | 564 | mmc_send_cmd(&request, MMC_CMD_READ_SINGLE_BLOCK, src, 1, len, RESPONSE_R1, dst); |
565 | 565 | if (retval = mmc_unpack_r1(&request, &r1, 0)) |
... | ... | |
571 | 571 | |
572 | 572 | ulong mmc_bread(int dev_num, ulong blkstart, ulong blkcnt, ulong *dst) |
573 | 573 | { |
574 | | if (!mmc_ready) { |
575 | | printf("Please initial the MMC first\n"); |
576 | | return -1; |
577 | | } |
578 | | |
579 | | int i = 0; |
580 | | ulong src = blkstart * mmcinfo.block_len; |
581 | | ulong dst_tmp = dst; |
| 574 | if (!mmc_ready) { |
| 575 | printf("Please initial the MMC first\n"); |
| 576 | return -1; |
| 577 | } |
| 578 | |
| 579 | int i = 0; |
| 580 | ulong dst_tmp = dst; |
582 | 581 | |
583 | | for (i = 0; i < blkcnt; i++) { |
584 | | if ((mmc_block_read((uchar *)(dst_tmp), src, mmcinfo.block_len)) < 0) |
| 582 | for (i = 0; i < blkcnt; i++) { |
| 583 | if ((mmc_block_read((uchar *)(dst_tmp), blkstart, mmcinfo.block_len)) < 0) |
585 | 584 | return -1; |
586 | 585 | |
587 | | dst_tmp += mmcinfo.block_len; |
588 | | src += mmcinfo.block_len; |
| 586 | dst_tmp += mmcinfo.block_len; |
| 587 | blkstart++; |
589 | 588 | } |
590 | 589 | |
591 | | return i; |
| 590 | return i; |
592 | 591 | } |
593 | 592 | |
594 | 593 | int mmc_select_card(void) |
... | ... | |
1165 | 1164 | } |
1166 | 1165 | |
1167 | 1166 | void mmc_send_cmd(struct mmc_request *request, int cmd, u32 arg, |
1168 | | u16 nob, u16 block_len, enum mmc_rsp_t rtype, u8 *buffer) |
| 1167 | u16 nob, u16 block_len, enum mmc_rsp_t rtype, u8 *buffer) |
1169 | 1168 | { |
1170 | 1169 | request->cmd = cmd; |
1171 | 1170 | request->arg = arg; |