From d184a35c4d3ee42f46e7520e2bec5eb4fc04b389 Mon Sep 17 00:00:00 2001
From: =?utf8?q?=E9=BB=84=E6=B6=9B?= <huangtao@rock-chips.com>
Date: Thu, 17 Jan 2013 14:37:13 +0800
Subject: [PATCH] Revert "board-rk30-sdk-sdmmc: use new iomux api on rk3066b
 and support rk3188"

This reverts commit 32ffe95a23530773c994889b5deca53d964b3fb1.
---
 arch/arm/mach-rk30/board-rk30-sdk-sdmmc.c | 160 ++++++++++++----------
 1 file changed, 88 insertions(+), 72 deletions(-)

diff --git a/arch/arm/mach-rk30/board-rk30-sdk-sdmmc.c b/arch/arm/mach-rk30/board-rk30-sdk-sdmmc.c
index 0a3ff16772eb..a278ae54c1ad 100755
--- a/arch/arm/mach-rk30/board-rk30-sdk-sdmmc.c
+++ b/arch/arm/mach-rk30/board-rk30-sdk-sdmmc.c
@@ -77,14 +77,14 @@
 #define RK29SDK_SD_CARD_DETECT_IOMUX_FGPIO      GPIO2L_GPIO2A2
 #define RK29SDK_SD_CARD_DETECT_IOMUX_FMUX       GPIO2L_SDMMC0_DETECT_N
 
-#elif defined(CONFIG_ARCH_RK3066B) || defined(CONFIG_ARCH_RK3188)
+#elif defined(CONFIG_ARCH_RK3066B)
 //refer to file /arch/arm/mach-rk30/include/mach/iomux-rk3066b.h
 //define reset-pin
 #define RK29SDK_SD_CARD_DETECT_N                RK30_PIN3_PB0  //According to your own project to set the value of card-detect-pin.
 #define RK29SDK_SD_CARD_INSERT_LEVEL            GPIO_LOW         // set the voltage of insert-card. Please pay attention to the default setting.
-#define RK29SDK_SD_CARD_DETECT_PIN_NAME         "mmc0_detn"
-#define RK29SDK_SD_CARD_DETECT_IOMUX_FGPIO      GPIO3_B0
-#define RK29SDK_SD_CARD_DETECT_IOMUX_FMUX       MMC0_DETN
+#define RK29SDK_SD_CARD_DETECT_PIN_NAME         GPIO3B0_SDMMC0DETECTN_NAME
+#define RK29SDK_SD_CARD_DETECT_IOMUX_FGPIO      GPIO3B_GPIO3B0
+#define RK29SDK_SD_CARD_DETECT_IOMUX_FMUX       GPIO3B_SDMMC0DETECTN
 
 #elif defined(CONFIG_ARCH_RK30)&& !defined(CONFIG_ARCH_RK3066B) //for RK30,RK3066 SDK
 //refer to file /arch/arm/mach-rk30/include/mach/Iomux.h
@@ -349,49 +349,49 @@
             #endif
         #endif// #endif --#if !defined(CONFIG_USE_SDMMC0_FOR_WIFI_DEVELOP_BOARD)
     #endif 
-#elif defined(CONFIG_ARCH_RK3066B) || defined(CONFIG_ARCH_RK3188)//refer to file /arch/arm/mach-rk30/include/mach/iomux-rk3066b.h
+#elif defined(CONFIG_ARCH_RK3066B)//refer to file /arch/arm/mach-rk30/include/mach/iomux-rk3066b.h
     #define WIFI_HOST_WAKE RK30_PIN3_PD2
          
     #if defined(CONFIG_RTL8192CU) || defined(CONFIG_RTL8188EU) 
         #define RK30SDK_WIFI_GPIO_POWER_N               RK30_PIN3_PD0            
         #define RK30SDK_WIFI_GPIO_POWER_ENABLE_VALUE    GPIO_LOW//GPIO_HIGH        
-        #define RK30SDK_WIFI_GPIO_POWER_PIN_NAME        "wifi_power"
-        #define RK30SDK_WIFI_GPIO_POWER_IOMUX_FGPIO     GPIO3_D0
+        #define RK30SDK_WIFI_GPIO_POWER_PIN_NAME        GPIO3D0_SDMMC1PWREN_MIIMD_NAME
+        #define RK30SDK_WIFI_GPIO_POWER_IOMUX_FGPIO     GPIO3D_GPIO3D0
         
     #elif defined(CONFIG_BCM4329) || defined(CONFIG_BCM4319) || defined(CONFIG_RK903) || defined(CONFIG_RK901)
         #define RK30SDK_WIFI_GPIO_POWER_N               RK30_PIN3_PD0                 
         #define RK30SDK_WIFI_GPIO_POWER_ENABLE_VALUE    GPIO_HIGH                   
-        #define RK30SDK_WIFI_GPIO_POWER_PIN_NAME        "wifi_power"
-        #define RK30SDK_WIFI_GPIO_POWER_IOMUX_FGPIO     GPIO3_D0
+        #define RK30SDK_WIFI_GPIO_POWER_PIN_NAME        GPIO3D0_SDMMC1PWREN_MIIMD_NAME
+        #define RK30SDK_WIFI_GPIO_POWER_IOMUX_FGPIO     GPIO3D_GPIO3D0
 
         #define RK30SDK_WIFI_GPIO_RESET_N               RK30_PIN2_PA7
         #define RK30SDK_WIFI_GPIO_RESET_ENABLE_VALUE    GPIO_HIGH 
-        #define RK30SDK_WIFI_GPIO_RESET_PIN_NAME        "wifi_reset"
-        #define RK30SDK_WIFI_GPIO_RESET_IOMUX_FGPIO     GPIO2_A7
+        #define RK30SDK_WIFI_GPIO_RESET_PIN_NAME        GPIO2A7_LCDC1DATA7_SMCDATA7_TRACEDATA7_NAME
+        #define RK30SDK_WIFI_GPIO_RESET_IOMUX_FGPIO     GPIO2A_GPIO2A7
     
     #elif defined(CONFIG_MT5931_MT6622) || defined(CONFIG_MT5931)
 
 		#ifdef  CONFIG_MACH_RK3168_LR097 
 	    	#define RK30SDK_WIFI_GPIO_POWER_N               RK30_PIN3_PD0 
 	    	#define RK30SDK_WIFI_GPIO_POWER_ENABLE_VALUE    GPIO_HIGH
-        	#define RK30SDK_WIFI_GPIO_POWER_PIN_NAME        "wifi_power"
-        	#define RK30SDK_WIFI_GPIO_POWER_IOMUX_FGPIO     GPIO3_D0
+        	#define RK30SDK_WIFI_GPIO_POWER_PIN_NAME        GPIO3D0_SDMMC1PWREN_MIIMD_NAME
+        	#define RK30SDK_WIFI_GPIO_POWER_IOMUX_FGPIO     GPIO3D_GPIO3D0
  
         	//#define RK30SDK_WIFI_GPIO_RESET_N 	            RK30_PIN3_PD1
         	//#define RK30SDK_WIFI_GPIO_RESET_ENABLE_VALUE    GPIO_HIGH
-        	//#define RK30SDK_WIFI_GPIO_RESET_PIN_NAME        "wifi_reset"
-        	//#define RK30SDK_WIFI_GPIO_RESET_IOMUX_FGPIO     GPIO3_D1
+        	//#define RK30SDK_WIFI_GPIO_RESET_PIN_NAME        GPIO3D1_SDMMC1BACKENDPWR_MIIMDCLK_NAME
+        	//#define RK30SDK_WIFI_GPIO_RESET_IOMUX_FGPIO     GPIO3D_GPIO3D1
 
 		#else
         	#define RK30SDK_WIFI_GPIO_POWER_N               RK30_PIN0_PA5
         	#define RK30SDK_WIFI_GPIO_POWER_ENABLE_VALUE    GPIO_HIGH
-        	//#define RK30SDK_WIFI_GPIO_POWER_PIN_NAME        "wifi_power"
-        	//#define RK30SDK_WIFI_GPIO_POWER_IOMUX_FGPIO     GPIO3_D0
+        	//#define RK30SDK_WIFI_GPIO_POWER_PIN_NAME        GPIO3D0_SDMMC1PWREN_MIIMD_NAME
+        	//#define RK30SDK_WIFI_GPIO_POWER_IOMUX_FGPIO     GPIO3D_GPIO3D0
  
         	#define RK30SDK_WIFI_GPIO_RESET_N               RK30_PIN3_PD1
         	#define RK30SDK_WIFI_GPIO_RESET_ENABLE_VALUE    GPIO_HIGH
-        	#define RK30SDK_WIFI_GPIO_RESET_PIN_NAME        "wifi_reset"
-        	#define RK30SDK_WIFI_GPIO_RESET_IOMUX_FGPIO     GPIO3_D1
+        	#define RK30SDK_WIFI_GPIO_RESET_PIN_NAME        GPIO3D1_SDMMC1BACKENDPWR_MIIMDCLK_NAME
+        	#define RK30SDK_WIFI_GPIO_RESET_IOMUX_FGPIO     GPIO3D_GPIO3D1	
 		#endif
 
     #endif   
@@ -446,14 +446,14 @@
 #define RK29SDK_SD_CARD_PWR_EN_IOMUX_FGPIO      GPIO5H_GPIO5D5
 #define RK29SDK_SD_CARD_PWR_EN_IOMUX_FMUX       GPIO5H_SDMMC0_PWR_EN
 
-#elif defined(CONFIG_ARCH_RK3066B) || defined(CONFIG_ARCH_RK3188)
+#elif defined(CONFIG_ARCH_RK3066B)
 //refer to file /arch/arm/mach-rk30/include/mach/iomux-rk3066b.h
 //define PowerEn-pin
 #define RK29SDK_SD_CARD_PWR_EN                  RK30_PIN3_PA1
 #define RK29SDK_SD_CARD_PWR_EN_LEVEL            GPIO_LOW 
-#define RK29SDK_SD_CARD_PWR_EN_PIN_NAME         "mmc0_pwren"
-#define RK29SDK_SD_CARD_PWR_EN_IOMUX_FGPIO      GPIO3_A1
-#define RK29SDK_SD_CARD_PWR_EN_IOMUX_FMUX       MMC0_PWREN
+#define RK29SDK_SD_CARD_PWR_EN_PIN_NAME         GPIO3A1_SDMMC0PWREN_NAME
+#define RK29SDK_SD_CARD_PWR_EN_IOMUX_FGPIO      GPIO3A_GPIO3A1
+#define RK29SDK_SD_CARD_PWR_EN_IOMUX_FMUX       GPIO3A_SDMMC0PWREN
 
 #elif defined(CONFIG_ARCH_RK30)&& !defined(CONFIG_ARCH_RK3066B) //for RK30,RK3066 SDK
 //refer to file /arch/arm/mach-rk30/include/mach/Iomux.h
@@ -652,7 +652,7 @@ static struct rksdmmc_gpio_board rksdmmc1_gpio_init = {
 };
  // ---end -#if defined(CONFIG_ARCH_RK30)&& !defined(CONFIG_ARCH_RK3066B)
 
-#elif defined(CONFIG_ARCH_RK3066B) || defined(CONFIG_ARCH_RK3188)
+#elif defined(CONFIG_ARCH_RK3066B)
 
 /*
 * define the gpio for sdmmc0
@@ -663,9 +663,9 @@ static struct rksdmmc_gpio_board rksdmmc0_gpio_init = {
         .io             = RK30_PIN3_PA2,
         .enable         = GPIO_HIGH,
         .iomux          = {
-            .name       = "mmc0_clkout",
-            .fgpio      = GPIO3_A2,
-            .fmux       = MMC0_CLKOUT,
+            .name       = GPIO3A2_SDMMC0CLKOUT_NAME,
+            .fgpio      = GPIO3A_GPIO3A2,
+            .fmux       = GPIO3A_SDMMC0CLKOUT,
         },
     },   
 
@@ -673,9 +673,9 @@ static struct rksdmmc_gpio_board rksdmmc0_gpio_init = {
         .io             = RK30_PIN3_PA3,
         .enable         = GPIO_HIGH,
         .iomux          = {
-            .name       = "mmc0_cmd",
-            .fgpio      = GPIO3_A3,
-            .fmux       = MMC0_CMD,
+            .name       = GPIO3A3_SDMMC0CMD_NAME,
+            .fgpio      = GPIO3A_GPIO3A3,
+            .fmux       = GPIO3A_SDMMC0CMD,
         },
     },      
 
@@ -683,9 +683,9 @@ static struct rksdmmc_gpio_board rksdmmc0_gpio_init = {
         .io             = RK30_PIN3_PA4,
         .enable         = GPIO_HIGH,
         .iomux          = {
-            .name       = "mmc0_d0",
-            .fgpio      = GPIO3_A4,
-            .fmux       = MMC0_D0,
+            .name       = GPIO3A4_SDMMC0DATA0_NAME,
+            .fgpio      = GPIO3A_GPIO3A4,
+            .fmux       = GPIO3A_SDMMC0DATA0,
         },
     },      
 
@@ -693,9 +693,9 @@ static struct rksdmmc_gpio_board rksdmmc0_gpio_init = {
         .io             = RK30_PIN3_PA5,
         .enable         = GPIO_HIGH,
         .iomux          = {
-            .name       = "mmc0_d1",
-            .fgpio      = GPIO3_A5,
-            .fmux       = MMC0_D1,
+            .name       = GPIO3A5_SDMMC0DATA1_NAME,
+            .fgpio      = GPIO3A_GPIO3A5,
+            .fmux       = GPIO3A_SDMMC0DATA1,
         },
     },      
 
@@ -703,9 +703,9 @@ static struct rksdmmc_gpio_board rksdmmc0_gpio_init = {
         .io             = RK30_PIN3_PA6,
         .enable         = GPIO_HIGH,
         .iomux          = {
-            .name       = "mmc_d2",
-            .fgpio      = GPIO3_A6,
-            .fmux       = MMC0_D2,
+            .name       = GPIO3A6_SDMMC0DATA2_NAME,
+            .fgpio      = GPIO3A_GPIO3A6,
+            .fmux       = GPIO3A_SDMMC0DATA2,
         },
     }, 
 
@@ -713,9 +713,9 @@ static struct rksdmmc_gpio_board rksdmmc0_gpio_init = {
         .io             = RK30_PIN3_PA7,
         .enable         = GPIO_HIGH,
         .iomux          = {
-            .name       = "mmc_d3",
-            .fgpio      = GPIO3_A7,
-            .fmux       = MMC0_D3,
+            .name       = GPIO3A7_SDMMC0DATA3_NAME,
+            .fgpio      = GPIO3A_GPIO3A7,
+            .fmux       = GPIO3A_SDMMC0DATA3,
         },
     }, 
 
@@ -774,9 +774,9 @@ static struct rksdmmc_gpio_board rksdmmc1_gpio_init = {
         .io             = RK30_PIN3_PC5,
         .enable         = GPIO_HIGH,
         .iomux          = {
-            .name       = "mmc1_clkout",
-            .fgpio      = GPIO3_C5,
-            .fmux       = MMC1_CLKOUT,
+            .name       = GPIO3C5_SDMMC1CLKOUT_RMIICLKOUT_RMIICLKIN_NAME,
+            .fgpio      = GPIO3C_GPIO3C5,
+            .fmux       = GPIO3C_SDMMC1CLKOUT,
         },
     },   
 
@@ -784,9 +784,9 @@ static struct rksdmmc_gpio_board rksdmmc1_gpio_init = {
         .io             = RK30_PIN3_PC0,
         .enable         = GPIO_HIGH,
         .iomux          = {
-            .name       = "mmc1_cmd",
-            .fgpio      = GPIO3_C0,
-            .fmux       = MMC1_CMD,
+            .name       = GPIO3C0_SDMMC1CMD_RMIITXEN_NAME,
+            .fgpio      = GPIO3C_GPIO3C0,
+            .fmux       = GPIO3C_SDMMC1CMD,
         },
     },      
 
@@ -794,9 +794,9 @@ static struct rksdmmc_gpio_board rksdmmc1_gpio_init = {
         .io             = RK30_PIN3_PC1,
         .enable         = GPIO_HIGH,
         .iomux          = {
-            .name       = "mmc1_d0",
-            .fgpio      = GPIO3_C1,
-            .fmux       = MMC1_D0,
+            .name       = GPIO3C1_SDMMC1DATA0_RMIITXD1_NAME,
+            .fgpio      = GPIO3C_GPIO3C1,
+            .fmux       = GPIO3C_SDMMC1DATA0,
         },
     },      
 
@@ -804,9 +804,9 @@ static struct rksdmmc_gpio_board rksdmmc1_gpio_init = {
         .io             = RK30_PIN3_PC2,
         .enable         = GPIO_HIGH,
         .iomux          = {
-            .name       = "mmc1_d1",
-            .fgpio      = GPIO3_C2,
-            .fmux       = MMC1_D1,
+            .name       = GPIO3C2_SDMMC1DATA1_RMIITXD0_NAME,
+            .fgpio      = GPIO3C_GPIO3C2,
+            .fmux       = GPIO3C_SDMMC1DATA1,
         },
     },      
 
@@ -814,9 +814,9 @@ static struct rksdmmc_gpio_board rksdmmc1_gpio_init = {
         .io             = RK30_PIN3_PC3,
         .enable         = GPIO_HIGH,
         .iomux          = {
-            .name       = "mmc1_d2",
-            .fgpio      = GPIO3_C3,
-            .fmux       = MMC1_D2,
+            .name       = GPIO3C3_SDMMC1DATA2_RMIIRXD0_NAME,
+            .fgpio      = GPIO3C_GPIO3C3,
+            .fmux       = GPIO3C_SDMMC1DATA2,
         },
     }, 
 
@@ -824,9 +824,9 @@ static struct rksdmmc_gpio_board rksdmmc1_gpio_init = {
         .io             = RK30_PIN3_PC4,
         .enable         = GPIO_HIGH,
         .iomux          = {
-            .name       = "mmc1_d3",
-            .fgpio      = GPIO3_C4,
-            .fmux       = MMC1_D3,
+            .name       = GPIO3C4_SDMMC1DATA3_RMIIRXD1_NAME,
+            .fgpio      = GPIO3C_GPIO3C4,
+            .fmux       = GPIO3C_SDMMC1DATA3,
         },
     }, 
 };
@@ -1042,21 +1042,27 @@ static void rk29_sdmmc_gpio_open(int device_id, int on)
             }
             else
             {
+                rk30_mux_api_set(rksdmmc0_gpio_init.clk_gpio.iomux.name, rksdmmc0_gpio_init.clk_gpio.iomux.fgpio);
                 gpio_request(rksdmmc0_gpio_init.clk_gpio.io, "mmc0-clk");
                 gpio_direction_output(rksdmmc0_gpio_init.clk_gpio.io,GPIO_LOW);//set mmc0-clk to low.
 
+                rk30_mux_api_set(rksdmmc0_gpio_init.cmd_gpio.iomux.name, rksdmmc0_gpio_init.cmd_gpio.iomux.fgpio);
                 gpio_request(rksdmmc0_gpio_init.cmd_gpio.io, "mmc0-cmd");
                 gpio_direction_output(rksdmmc0_gpio_init.cmd_gpio.io,GPIO_LOW);//set mmc0-cmd to low.
 
+                rk30_mux_api_set(rksdmmc0_gpio_init.data0_gpio.iomux.name, rksdmmc0_gpio_init.data0_gpio.iomux.fgpio);
                 gpio_request(rksdmmc0_gpio_init.data0_gpio.io, "mmc0-data0");
                 gpio_direction_output(rksdmmc0_gpio_init.data0_gpio.io,GPIO_LOW);//set mmc0-data0 to low.
 
+                rk30_mux_api_set(rksdmmc0_gpio_init.data1_gpio.iomux.name, rksdmmc0_gpio_init.data1_gpio.iomux.fgpio);
                 gpio_request(rksdmmc0_gpio_init.data1_gpio.io, "mmc0-data1");
                 gpio_direction_output(rksdmmc0_gpio_init.data1_gpio.io,GPIO_LOW);//set mmc0-data1 to low.
 
+                rk30_mux_api_set(rksdmmc0_gpio_init.data2_gpio.iomux.name, rksdmmc0_gpio_init.data2_gpio.iomux.fgpio);
                 gpio_request(rksdmmc0_gpio_init.data2_gpio.io, "mmc0-data2");
                 gpio_direction_output(rksdmmc0_gpio_init.data2_gpio.io,GPIO_LOW);//set mmc0-data2 to low.
 
+                rk30_mux_api_set(rksdmmc0_gpio_init.data3_gpio.iomux.name, rksdmmc0_gpio_init.data3_gpio.iomux.fgpio);
                 gpio_request(rksdmmc0_gpio_init.data3_gpio.io, "mmc0-data3");
                 gpio_direction_output(rksdmmc0_gpio_init.data3_gpio.io,GPIO_LOW);//set mmc0-data3 to low.
 
@@ -1081,22 +1087,28 @@ static void rk29_sdmmc_gpio_open(int device_id, int on)
             }
             else
             {
+                rk30_mux_api_set(rksdmmc1_gpio_init.clk_gpio.iomux.name, rksdmmc1_gpio_init.clk_gpio.iomux.fgpio);
                 gpio_request(rksdmmc1_gpio_init.clk_gpio.io, "mmc1-clk");
                 gpio_direction_output(rksdmmc1_gpio_init.clk_gpio.io,GPIO_LOW);//set mmc1-clk to low.
 
+                rk30_mux_api_set(rksdmmc1_gpio_init.cmd_gpio.iomux.name, rksdmmc1_gpio_init.cmd_gpio.iomux.fgpio);
                 gpio_request(rksdmmc1_gpio_init.cmd_gpio.io, "mmc1-cmd");
                 gpio_direction_output(rksdmmc1_gpio_init.cmd_gpio.io,GPIO_LOW);//set mmc1-cmd to low.
 
+                rk30_mux_api_set(rksdmmc1_gpio_init.data0_gpio.iomux.name, rksdmmc1_gpio_init.data0_gpio.iomux.fgpio);
                 gpio_request(rksdmmc1_gpio_init.data0_gpio.io, "mmc1-data0");
                 gpio_direction_output(rksdmmc1_gpio_init.data0_gpio.io,GPIO_LOW);//set mmc1-data0 to low.
                 
             #if defined(CONFIG_WIFI_COMBO_MODULE_CONTROL_FUNC) || defined(CONFIG_MT5931) || defined(CONFIG_MT5931_MT6622)
+                rk29_mux_api_set(rksdmmc1_gpio_init.data1_gpio.iomux.name, rksdmmc1_gpio_init.data1_gpio.iomux.fgpio);
                 gpio_request(rksdmmc1_gpio_init.data1_gpio.io, "mmc1-data1");
                 gpio_direction_output(rksdmmc1_gpio_init.data1_gpio.io,GPIO_LOW);//set mmc1-data1 to low.
 
+                rk29_mux_api_set(rksdmmc1_gpio_init.data2_gpio.iomux.name, rksdmmc1_gpio_init.data2_gpio.iomux.fgpio);
                 gpio_request(rksdmmc1_gpio_init.data2_gpio.io, "mmc1-data2");
                 gpio_direction_output(rksdmmc1_gpio_init.data2_gpio.io,GPIO_LOW);//set mmc1-data2 to low.
 
+                rk29_mux_api_set(rksdmmc1_gpio_init.data3_gpio.iomux.name, rksdmmc1_gpio_init.data3_gpio.iomux.fgpio);
                 gpio_request(rksdmmc1_gpio_init.data3_gpio.io, "mmc1-data3");
                 gpio_direction_output(rksdmmc1_gpio_init.data3_gpio.io,GPIO_LOW);//set mmc1-data3 to low.
            #endif
@@ -1121,9 +1133,9 @@ static void rk29_sdmmc_set_iomux_mmc0(unsigned int bus_width)
         
     	case 1://SDMMC_CTYPE_4BIT:
     	{
-            iomux_set(rksdmmc0_gpio_init.data1_gpio.iomux.fmux);
-            iomux_set(rksdmmc0_gpio_init.data2_gpio.iomux.fmux);
-            iomux_set(rksdmmc0_gpio_init.data3_gpio.iomux.fmux);
+        	rk30_mux_api_set(rksdmmc0_gpio_init.data1_gpio.iomux.name, rksdmmc0_gpio_init.data1_gpio.iomux.fmux);
+        	rk30_mux_api_set(rksdmmc0_gpio_init.data2_gpio.iomux.name, rksdmmc0_gpio_init.data2_gpio.iomux.fmux);
+        	rk30_mux_api_set(rksdmmc0_gpio_init.data3_gpio.iomux.name, rksdmmc0_gpio_init.data3_gpio.iomux.fmux);
     	}
     	break;
 
@@ -1131,6 +1143,7 @@ static void rk29_sdmmc_set_iomux_mmc0(unsigned int bus_width)
     	    break;
     	case 0xFFFF: //gpio_reset
     	{
+            rk30_mux_api_set(rksdmmc0_gpio_init.power_en_gpio.iomux.name, rksdmmc0_gpio_init.power_en_gpio.iomux.fgpio);
             gpio_request(rksdmmc0_gpio_init.power_en_gpio.io,"sdmmc-power");
             gpio_direction_output(rksdmmc0_gpio_init.power_en_gpio.io, !(rksdmmc0_gpio_init.power_en_gpio.enable)); //power-off
 
@@ -1146,16 +1159,19 @@ static void rk29_sdmmc_set_iomux_mmc0(unsigned int bus_width)
 
     	default: //case 0://SDMMC_CTYPE_1BIT:
         {
-        	iomux_set(rksdmmc0_gpio_init.cmd_gpio.iomux.fmux);
-        	iomux_set(rksdmmc0_gpio_init.clk_gpio.iomux.fmux);
-        	iomux_set(rksdmmc0_gpio_init.data0_gpio.iomux.fmux);
+        	rk30_mux_api_set(rksdmmc0_gpio_init.cmd_gpio.iomux.name, rksdmmc0_gpio_init.cmd_gpio.iomux.fmux);
+        	rk30_mux_api_set(rksdmmc0_gpio_init.clk_gpio.iomux.name, rksdmmc0_gpio_init.clk_gpio.iomux.fmux);
+        	rk30_mux_api_set(rksdmmc0_gpio_init.data0_gpio.iomux.name, rksdmmc0_gpio_init.data0_gpio.iomux.fmux);
 
+            rk30_mux_api_set(rksdmmc0_gpio_init.data1_gpio.iomux.name, rksdmmc0_gpio_init.data1_gpio.iomux.fgpio);
             gpio_request(rksdmmc0_gpio_init.data1_gpio.io, "mmc0-data1");
             gpio_direction_output(rksdmmc0_gpio_init.data1_gpio.io,GPIO_HIGH);//set mmc0-data1 to high.
 
+            rk30_mux_api_set(rksdmmc0_gpio_init.data2_gpio.iomux.name, rksdmmc0_gpio_init.data2_gpio.iomux.fgpio);
             gpio_request(rksdmmc0_gpio_init.data2_gpio.io, "mmc0-data2");
             gpio_direction_output(rksdmmc0_gpio_init.data2_gpio.io,GPIO_HIGH);//set mmc0-data2 to high.
 
+            rk30_mux_api_set(rksdmmc0_gpio_init.data3_gpio.iomux.name, rksdmmc0_gpio_init.data3_gpio.iomux.fgpio);
             gpio_request(rksdmmc0_gpio_init.data3_gpio.io, "mmc0-data3");
             gpio_direction_output(rksdmmc0_gpio_init.data3_gpio.io,GPIO_HIGH);//set mmc0-data3 to high.
     	}
@@ -1165,12 +1181,12 @@ static void rk29_sdmmc_set_iomux_mmc0(unsigned int bus_width)
 
 static void rk29_sdmmc_set_iomux_mmc1(unsigned int bus_width)
 {
-    iomux_set(rksdmmc1_gpio_init.cmd_gpio.iomux.fmux);
-    iomux_set(rksdmmc1_gpio_init.clk_gpio.iomux.fmux);
-    iomux_set(rksdmmc1_gpio_init.data0_gpio.iomux.fmux);
-    iomux_set(rksdmmc1_gpio_init.data1_gpio.iomux.fmux);
-    iomux_set(rksdmmc1_gpio_init.data2_gpio.iomux.fmux);
-    iomux_set(rksdmmc1_gpio_init.data3_gpio.iomux.fmux);
+    rk30_mux_api_set(rksdmmc1_gpio_init.cmd_gpio.iomux.name, rksdmmc1_gpio_init.cmd_gpio.iomux.fmux);
+    rk30_mux_api_set(rksdmmc1_gpio_init.clk_gpio.iomux.name, rksdmmc1_gpio_init.clk_gpio.iomux.fmux);
+    rk30_mux_api_set(rksdmmc1_gpio_init.data0_gpio.iomux.name, rksdmmc1_gpio_init.data0_gpio.iomux.fmux);
+    rk30_mux_api_set(rksdmmc1_gpio_init.data1_gpio.iomux.name, rksdmmc1_gpio_init.data1_gpio.iomux.fmux);
+    rk30_mux_api_set(rksdmmc1_gpio_init.data2_gpio.iomux.name, rksdmmc1_gpio_init.data2_gpio.iomux.fmux);
+    rk30_mux_api_set(rksdmmc1_gpio_init.data3_gpio.iomux.name, rksdmmc1_gpio_init.data3_gpio.iomux.fmux);
 }
 
 static void rk29_sdmmc_set_iomux_mmc2(unsigned int bus_width)
-- 
2.34.1