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 ---