From 46d8e4e5875e6189d2faadf4b65846dd028331c3 Mon Sep 17 00:00:00 2001 From: xbw Date: Fri, 22 Feb 2013 09:11:07 +0800 Subject: [PATCH] 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. --- .../mach-rk30/board-rk3168-tb-sdmmc-conifg.c | 26 ++++++++++--------- arch/arm/plat-rk/rk-sdmmc-ops.c | 14 ++++++---- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/arch/arm/mach-rk30/board-rk3168-tb-sdmmc-conifg.c b/arch/arm/mach-rk30/board-rk3168-tb-sdmmc-conifg.c index 2f447b0dec30..98330d557fcf 100644 --- a/arch/arm/mach-rk30/board-rk3168-tb-sdmmc-conifg.c +++ b/arch/arm/mach-rk30/board-rk3168-tb-sdmmc-conifg.c @@ -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. ** ** ÀýÈç: ÓеÄÏîÄ¿£¬ËüµÄSDMMC0ËùÔÚµÄRKÖ÷¿ØµÄIO×飬ÏëÓÃ1.8V, ¶ø¿¨±¾ÉíÓÃ3.3V, - ** ¶øÖмäͨ¹ý¸öµçƽת»».ÄÇô£¬Äú´Ëʱ£¬Ó¦¸ÃÉèÖÃÏÂÃæµÄvoltageֵΪ 1.8 - ******************************************************************************/ - voltage = 3.3; + ** ¶øÖмäͨ¹ý¸öµçƽת»».ÄÇô£¬Äú´Ëʱ£¬Ó¦¸ÃÉèÖÃÏÂÃæµÄvoltageֵΪ 1.8V(¼´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; diff --git a/arch/arm/plat-rk/rk-sdmmc-ops.c b/arch/arm/plat-rk/rk-sdmmc-ops.c index 09a88d8f905e..784b7585c994 100644 --- a/arch/arm/plat-rk/rk-sdmmc-ops.c +++ b/arch/arm/plat-rk/rk-sdmmc-ops.c @@ -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 -- 2.34.1