Adiran,

snip for mmc_debug below

I will forward to you under full logs.

Philip

Without mod the following error occurs
==============================

mmc1: req done (CMD6): 0: 00000900 00000000 00000000 00000000
mmc1: clock 48000000Hz busmode 2 powermode 2 cs 0 Vdd 7 width 3 timing 1
pxa-sdh [platform_set_8_bit()]: EXIT: mmc1 SD_CE_ATA_2 = 1100
mmc1: new high speed MMC card at address 0001
mmc1: starting CMD16 arg 00000200 flags 00000095
pxa-sdh [platform_specific_card_detect()]: EXIT: mmc1 card_detect_ok = 0000
pxa-sdh [sdhci_irq()]: *** mmc1 got interrupt: 0x00000001
mmc1: req done (CMD16): 0: 00000900 00000000 00000000 00000000
mmcblk0: mmc1:0001 M2G1DD 1.90 GiB
 mmcblk0:<7>mmc1: starting CMD18 arg 00000000 flags 000000b5
mmc1:     blksz 512 blocks 8 flags 00000200 tsac 150 ms nsac 1000
mmc1:     CMD12 arg 00000000 flags 0000049d
pxa-sdh [platform_specific_card_detect()]: EXIT: mmc1 card_detect_ok = 0000
pxa-sdh [sdhci_irq()]: *** mmc1 got interrupt: 0x00000001
pxa-sdh [sdhci_irq()]: *** mmc1 got interrupt: 0x00000002
pxa-sdh [sdhci_irq()]: *** mmc1 got interrupt: 0x00000001
mmc1: req done (CMD18): 0: 00000900 00000000 00000000 00000000
mmc1:     4096 bytes transferred: 0
mmc1:     (CMD12): 0: 00000b00 00000000 00000000 00000000
 unknown partition table


with the patch 
===========

mmc1: req done (CMD6): 0: 00000900 00000000 00000000 00000000
mmc1: clock 48000000Hz busmode 2 powermode 2 cs 0 Vdd 7 width 3 timing 1
pxa-sdh [platform_set_8_bit()]: EXIT: mmc1 SD_CE_ATA_2 = 1100
mmc1: new high speed MMC card at address 0001
mmc1: starting CMD16 arg 00000200 flags 00000095
pxa-sdh [platform_specific_card_detect()]: EXIT: mmc1 card_detect_ok = 0000
pxa-sdh [sdhci_irq()]: *** mmc1 got interrupt: 0x00000001
mmc1: req done (CMD16): 0: 00000900 00000000 00000000 00000000
mmcblk0: mmc1:0001 M2G1DD 1.90 GiB
 mmcblk0:<7>mmc1: starting CMD18 arg 00000000 flags 000000b5
mmc1:     blksz 512 blocks 8 flags 00000200 tsac 150 ms nsac 1000
mmc1:     CMD12 arg 00000000 flags 0000049d
pxa-sdh [platform_specific_card_detect()]: EXIT: mmc1 card_detect_ok = 0000
pxa-sdh [sdhci_irq()]: *** mmc1 got interrupt: 0x00000001
pxa-sdh [sdhci_irq()]: *** mmc1 got interrupt: 0x00000002
pxa-sdh [sdhci_irq()]: *** mmc1 got interrupt: 0x00000001
mmc1: req done (CMD18): 0: 00000900 00000000 00000000 00000000
mmc1:     4096 bytes transferred: 0
mmc1:     (CMD12): 0: 00000b00 00000000 00000000 00000000
 p1 p2 p3 p4




On Mar 15, 2010, at 1:08 AM, Adrian Hunter wrote:

> Philip Rakity wrote:
>> Some eMMC chips have a boot partition that is meant to be used to load in 
>> low level boot code.
>> This partition is available when the chip is powered up.  Normally the boot 
>> loader would disable
>> access to the partition once boot code was loaded in before passing control 
>> to linux.  
>> 
>> if booting occurs from another device (not the eMMC chip) the partition will 
>> not be disabled by
>> the boot loader and control will be passed to linux.  This will cause linux 
>> to not recognize user
>> partitions on the chip unless access to the boot partition is deactivated.
>> 
>> See JEDEC Standard 84-A44 (eMMC 4.4 spec) -- Page 139
> 
> Page 139 doesn't say anything about why you need that switch command.
> Please provide a more useful reference or delete this.
> 
> Boot mode is terminated by CMD1, so that switch command should not
> be needed.  Please explain why it is needed in more detail.
> 
> That switch command should not be used for devices that do not
> support it e.g. eMMC 4.3 and before.
> 
> 
>> 
>> signed off by:  Philip Rakity <prak...@marvell.com>
>> diff -ru linux-2.6.32.8/drivers/mmc/core/mmc.c linux-2.6.32.8 
>> copy/drivers/mmc/core/mmc.c
>> --- linux-2.6.32.8/drivers/mmc/core/mmc.c    2010-02-09 04:57:19.000000000 
>> -0800
>> +++ linux-2.6.32.8 copy/drivers/mmc/core/mmc.c       2010-03-12 
>> 20:56:16.000000000 -0800
>> @@ -430,6 +432,13 @@
>>      }
>> 
>>      /*
>> +    * ensure eMMC private booting PARTITION is not enabled
>> +    * see JEDEC Standard No. 84-A44 - Page 139 
>> +    */
>> +    mmc_switch(card, EXT_CSD_CMD_SET_NORMAL,
>> +            EXT_CSD_BOOT_CONFIG, 0x0);
>> +
>> +    /*
>>       * Compute bus speed.
>>       */
>>      max_dtr = (unsigned int)-1;
>> diff -ru linux-2.6.32.8/include/linux/mmc/mmc.h linux-2.6.32.8 
>> copy/include/linux/mmc/mmc.h
>> --- linux-2.6.32.8/include/linux/mmc/mmc.h   2010-02-09 04:57:19.000000000 
>> -0800
>> +++ linux-2.6.32.8 copy/include/linux/mmc/mmc.h      2010-03-12 
>> 20:53:48.000000000 -0800
>> @@ -251,6 +252,7 @@
>>  * EXT_CSD fields
>>  */
>> 
>> +#define EXT_CSD_BOOT_CONFIG 179 /* R/W */
>> #define EXT_CSD_BUS_WIDTH    183     /* R/W */
>> #define EXT_CSD_HS_TIMING    185     /* R/W */
>> #define EXT_CSD_CARD_TYPE    196     /* RO */
>> 
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
>> the body of a message to majord...@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>> 
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to