mmc.c (9b1f942c09dd942e6de3185caa81c111b14de567) | mmc.c (0b453ffe28bb9227d86ddbe0893bd19c93f04ed7) |
---|---|
1/* 2 * Copyright 2008, Freescale Semiconductor, Inc 3 * Andy Fleming 4 * 5 * Based vaguely on the Linux code 6 * 7 * See file CREDITS for list of people who contributed to this 8 * project. --- 637 unchanged lines hidden (view full) --- 646 return err; 647 648 mmc->csd[0] = ((uint *)(cmd.response))[0]; 649 mmc->csd[1] = ((uint *)(cmd.response))[1]; 650 mmc->csd[2] = ((uint *)(cmd.response))[2]; 651 mmc->csd[3] = ((uint *)(cmd.response))[3]; 652 653 if (mmc->version == MMC_VERSION_UNKNOWN) { | 1/* 2 * Copyright 2008, Freescale Semiconductor, Inc 3 * Andy Fleming 4 * 5 * Based vaguely on the Linux code 6 * 7 * See file CREDITS for list of people who contributed to this 8 * project. --- 637 unchanged lines hidden (view full) --- 646 return err; 647 648 mmc->csd[0] = ((uint *)(cmd.response))[0]; 649 mmc->csd[1] = ((uint *)(cmd.response))[1]; 650 mmc->csd[2] = ((uint *)(cmd.response))[2]; 651 mmc->csd[3] = ((uint *)(cmd.response))[3]; 652 653 if (mmc->version == MMC_VERSION_UNKNOWN) { |
654 int version = (cmd.response[0] >> 2) & 0xf; | 654 int version = (cmd.response[0] >> 26) & 0xf; |
655 656 switch (version) { 657 case 0: 658 mmc->version = MMC_VERSION_1_2; 659 break; 660 case 1: 661 mmc->version = MMC_VERSION_1_4; 662 break; --- 8 unchanged lines hidden (view full) --- 671 break; 672 default: 673 mmc->version = MMC_VERSION_1_2; 674 break; 675 } 676 } 677 678 /* divide frequency by 10, since the mults are 10x bigger */ | 655 656 switch (version) { 657 case 0: 658 mmc->version = MMC_VERSION_1_2; 659 break; 660 case 1: 661 mmc->version = MMC_VERSION_1_4; 662 break; --- 8 unchanged lines hidden (view full) --- 671 break; 672 default: 673 mmc->version = MMC_VERSION_1_2; 674 break; 675 } 676 } 677 678 /* divide frequency by 10, since the mults are 10x bigger */ |
679 freq = fbase[(cmd.response[3] & 0x7)]; 680 mult = multipliers[((cmd.response[3] >> 3) & 0xf)]; | 679 freq = fbase[(cmd.response[0] & 0x7)]; 680 mult = multipliers[((cmd.response[0] >> 3) & 0xf)]; |
681 682 mmc->tran_speed = freq * mult; 683 684 mmc->read_bl_len = 1 << ((((uint *)(cmd.response))[1] >> 16) & 0xf); 685 686 if (IS_SD(mmc)) 687 mmc->write_bl_len = mmc->read_bl_len; 688 else --- 97 unchanged lines hidden (view full) --- 786 mmc_set_clock(mmc, 20000000); 787 } 788 789 /* fill in device description */ 790 mmc->block_dev.lun = 0; 791 mmc->block_dev.type = 0; 792 mmc->block_dev.blksz = mmc->read_bl_len; 793 mmc->block_dev.lba = lldiv(mmc->capacity, mmc->read_bl_len); | 681 682 mmc->tran_speed = freq * mult; 683 684 mmc->read_bl_len = 1 << ((((uint *)(cmd.response))[1] >> 16) & 0xf); 685 686 if (IS_SD(mmc)) 687 mmc->write_bl_len = mmc->read_bl_len; 688 else --- 97 unchanged lines hidden (view full) --- 786 mmc_set_clock(mmc, 20000000); 787 } 788 789 /* fill in device description */ 790 mmc->block_dev.lun = 0; 791 mmc->block_dev.type = 0; 792 mmc->block_dev.blksz = mmc->read_bl_len; 793 mmc->block_dev.lba = lldiv(mmc->capacity, mmc->read_bl_len); |
794 sprintf(mmc->block_dev.vendor,"Man %02x%02x%02x Snr %02x%02x%02x%02x", 795 mmc->cid[0], mmc->cid[1], mmc->cid[2], 796 mmc->cid[9], mmc->cid[10], mmc->cid[11], mmc->cid[12]); 797 sprintf(mmc->block_dev.product,"%c%c%c%c%c", mmc->cid[3], 798 mmc->cid[4], mmc->cid[5], mmc->cid[6], mmc->cid[7]); 799 sprintf(mmc->block_dev.revision,"%d.%d", mmc->cid[8] >> 4, 800 mmc->cid[8] & 0xf); | 794 sprintf(mmc->block_dev.vendor, "Man %06x Snr %08x", mmc->cid[0] >> 8, 795 (mmc->cid[2] << 8) | (mmc->cid[3] >> 24)); 796 sprintf(mmc->block_dev.product, "%c%c%c%c%c", mmc->cid[0] & 0xff, 797 (mmc->cid[1] >> 24), (mmc->cid[1] >> 16) & 0xff, 798 (mmc->cid[1] >> 8) & 0xff, mmc->cid[1] & 0xff); 799 sprintf(mmc->block_dev.revision, "%d.%d", mmc->cid[2] >> 28, 800 (mmc->cid[2] >> 24) & 0xf); |
801 init_part(&mmc->block_dev); 802 803 return 0; 804} 805 806int mmc_send_if_cond(struct mmc *mmc) 807{ 808 struct mmc_cmd cmd; --- 123 unchanged lines hidden --- | 801 init_part(&mmc->block_dev); 802 803 return 0; 804} 805 806int mmc_send_if_cond(struct mmc *mmc) 807{ 808 struct mmc_cmd cmd; --- 123 unchanged lines hidden --- |