RFC: add support for eMMC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> 
>> -----Original Message-----
>> From: Philip Rakity [mailto:prakity@xxxxxxxxxxx]
>> Sent: Sunday, March 20, 2011 11:41 AM
>> To: Nath, Arindam
>> Subject: eMMC now working on old patch set -- SDIO more complicated
>> 
>> Hi Arindam,
>> 
>> Have eMMC working.  Note the comment about voltage !
>> 
>> SDIO cannot validate as trace lines for plug in card are too long to
>> support SDR50.  If I force the clock down to 50MHz then it is okay.
>> says ultra high speed.  Not a validation but a data point.
>> 
>> I will need a host->ops in sdhci.c -- already have a patch for this but
>> will resubmit.  Our controller requires we set 18V enable when we do
>> UHS.  Setting the bit does not affect the voltage.
>> 
>> Philip
>> 
>> 
>> diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
>> index 87dae37..b51165c 100644
>> --- a/drivers/mmc/core/core.c
>> +++ b/drivers/mmc/core/core.c
>> @@ -718,7 +718,7 @@ void mmc_set_bus_width_ddr(struct mmc_host *host,
>> unsigned int width,
>> 			   unsigned int ddr)
>> {
>> 	host->ios.bus_width = width;
>> -	host->ios.ddr = ddr;
>> +	host->ios.timing = ddr;
>> 	mmc_set_ios(host);
>> }
>> 
>> diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
>> index 14e95f3..d3896b8 100644
>> --- a/drivers/mmc/core/mmc.c
>> +++ b/drivers/mmc/core/mmc.c
>> @@ -20,6 +20,7 @@
>> #include "core.h"
>> #include "bus.h"
>> #include "mmc_ops.h"
>> +#include "sd_ops.h"
>> 
>> static const unsigned int tran_exp[] = {
>> 	10000,		100000,		1000000,	10000000,
>> @@ -668,8 +669,27 @@ static int mmc_init_card(struct mmc_host *host,
>> u32 ocr,
>> 				1 << bus_width, ddr);
>> 			goto free_card;
>> 		} else if (ddr) {
>> +			/*
>> +			 * eMMC cards can support 3.3V to 1.2V i/o (vccq)
>> +			 * signaling.
>> +			 *
>> +			 * EXT_CSD_CARD_TYPE_DDR_1_8V means 3.3V or 1.8V vccq.
>> +			 *
>> +			 * 1.8V vccq at 3.3V core voltage (vcc) is not required
>> +			 * in the JEDEC spec for DDR.
>> +			 *
>> +			 * Do not force change in vccq since we are obviously
>> +			 * working and no change to vccq is needed.
>> +			 *
>> +			 * WARNING: eMMC rules are NOT the same as SD DDR
>> +			 */
>> +			if (ddr == EXT_CSD_CARD_TYPE_DDR_1_2V) {
>> +				err = mmc_start_voltage_switch(host);
>> +				if (err)
>> +					goto err;
>> +			}
>> 			mmc_card_set_ddr_mode(card);
>> -			mmc_set_bus_width_ddr(card->host, bus_width, ddr);
>> +			mmc_set_bus_width_ddr(card->host, bus_width,
>> MMC_TIMING_UHS_DDR50);
>> 		}
>> 	}
>> 
>> 
>> 
>> 
> 
> 

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


[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux