SDMMC IO voltage:
authorxbw <xbw@rock-chips.com>
Fri, 22 Feb 2013 01:11:07 +0000 (09:11 +0800)
committerxbw <xbw@rock-chips.com>
Fri, 22 Feb 2013 01:11:07 +0000 (09:11 +0800)
  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.

arch/arm/mach-rk30/board-rk3168-tb-sdmmc-conifg.c
arch/arm/plat-rk/rk-sdmmc-ops.c

index 2f447b0dec3074f490f26bd75797d6a257efb823..98330d557fcff95671b8127554e76cfc9402feb7 100644 (file)
 */
 #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;
index 09a88d8f905eac476461682b15eae58db7bda4fe..784b7585c99420cae7773325095b20adfdd1f0e8 100644 (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
 
 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