SDMMC IO voltage:

Modify a numerical definition of small flaws.Not suitable for the use of the original property is double.
  Please modify your own board-xxx-sdmmc-config.c youself, Reference to this example.
This commit is contained in:
xbw
2013-02-22 09:11:07 +08:00
parent 3a52ad0c5f
commit 46d8e4e587
2 changed files with 23 additions and 17 deletions

View File

@@ -38,18 +38,18 @@
*/
#define RK29SDK_SD_CARD_PWR_EN RK30_PIN3_PA1
#define RK29SDK_SD_CARD_PWR_EN_LEVEL GPIO_LOW
double rk31sdk_get_sdmmc0_pin_io_voltage(void)
int rk31sdk_get_sdmmc0_pin_io_voltage(void)
{
double voltage;
int voltage;
#define RK31SDK_SET_SDMMC0_PIN_VOLTAGE
/******************************************************************************
/**************************************************************************************
** Please tell me how much voltage of your SDMMC0-pin in your project.
**
** <20><><EFBFBD><EFBFBD>: <20>е<EFBFBD><D0B5><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SDMMC0<43><30><EFBFBD>ڵ<EFBFBD>RK<52><4B><EFBFBD>ص<EFBFBD>IO<49><EFBFBD><E9A3AC><EFBFBD><EFBFBD>1.8V, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3.3V,
** <20><><EFBFBD>м<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽת<C6BD><D7AA>.<2E><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>voltageֵΪ 1.8
******************************************************************************/
voltage = 3.3;
** <20><><EFBFBD>м<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽת<C6BD><D7AA>.<2E><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>voltageֵΪ 1.8V(<28><>1800mv)
***************************************************************************************/
voltage = 3300; //default the voltage 3300mv.
return voltage;
}
@@ -132,23 +132,25 @@ double rk31sdk_get_sdmmc0_pin_io_voltage(void)
#endif // #if COMBO_MODULE_MT6620_CDT--#endif
#endif
double rk31sdk_get_sdio_wifi_voltage(void)
int rk31sdk_get_sdio_wifi_voltage(void)
{
double voltage;
int voltage;
/******************************************************************************
** Please tell me how much wifi-module uses voltage in your project.
******************************************************************************/
#if defined(CONFIG_BCM4329) || defined(CONFIG_BCM4319) || defined(CONFIG_RK903) || defined(CONFIG_RK901)
voltage = 1.8 ; //power 1.8V
voltage = 1800 ; //power 1800mV
#elif defined(CONFIG_MT5931_MT6622)||defined(CONFIG_MT5931)||defined(CONFIG_MT6620)
voltage = 2.8 ; //power 2.8V
voltage = 1800 ; //power 1800V
#elif defined(CONFIG_MT6620)
voltage = 2800 ; //power 2800V
#elif defined(CONFIG_RDA5990)||defined(CONFIG_RTL8723AS)
voltage = 3.3 ; //power 3.3V
voltage = 3300 ; //power 3300V
#else
//default, sdio use 3.0V
voltage = 3.0 ; //power 3.0V
voltage = 3000 ; //power 3000V
#endif
return voltage;

View File

@@ -15,7 +15,7 @@
**************************************************************************************************/
//use the new iomux-API
#if defined(CONFIG_ARCH_RK3066B)||defined(CONFIG_ARCH_RK3168)||defined(CONFIG_ARCH_RK3188)
#if 1//defined(CONFIG_ARCH_RK3066B)||defined(CONFIG_ARCH_RK3168)||defined(CONFIG_ARCH_RK3188)
#define SDMMC_USE_NEW_IOMUX_API 1
#else
#define SDMMC_USE_NEW_IOMUX_API 0
@@ -63,14 +63,14 @@
int rk31sdk_wifi_voltage_select(void)
{
double voltage;
int voltage;
int voltage_flag = 0;
voltage = rk31sdk_get_sdio_wifi_voltage();
if(voltage >= 2.7)
if(voltage >= 2700)
voltage_flag = 0;
else if(voltage <= 2.0)
else if(voltage <= 2000)
voltage_flag = 1;
else
voltage_flag = 1;
@@ -777,6 +777,10 @@ static void rk29_sdmmc_set_iomux_mmc0(unsigned int bus_width)
break;
case 0xFFFF: //gpio_reset
{
#if (!!SDMMC_USE_NEW_IOMUX_API) && !defined(CONFIG_SDMMC0_RK29_SDCARD_DET_FROM_GPIO)
iomux_set(MMC0_DETN);
#endif
#if !(!!SDMMC_USE_NEW_IOMUX_API)
rk30_mux_api_set(rksdmmc0_gpio_init.power_en_gpio.iomux.name, rksdmmc0_gpio_init.power_en_gpio.iomux.fgpio);
#endif
@@ -807,7 +811,7 @@ static void rk29_sdmmc_set_iomux_mmc0(unsigned int bus_width)
//IO voltage(vccio);
#ifdef RK31SDK_SET_SDMMC0_PIN_VOLTAGE
if(rk31sdk_get_sdmmc0_pin_io_voltage() > 3.0)
if(rk31sdk_get_sdmmc0_pin_io_voltage() > 2700)
SDMMC_write_grf_reg(GRF_IO_CON4, (SDMMC0_IO_VOLTAGE_MASK |SDMMC0_IO_VOLTAGE_33)); //set SDMMC0 pin to 3.3v
else
SDMMC_write_grf_reg(GRF_IO_CON4, (SDMMC0_IO_VOLTAGE_MASK |SDMMC0_IO_VOLTAGE_18));//set SDMMC0 pin to 1.8v