static int rk29sdk_wifi_power(int on) { pr_info("%s: %d\n", __func__, on); if (on){ gpio_set_value(RK30SDK_WIFI_GPIO_POWER_N, GPIO_HIGH); #if defined(CONFIG_SDMMC1_RK29) && !defined(CONFIG_SDMMC_RK29_OLD) rk29_sdmmc_gpio_open(1, 1); //added by xbw at 2011-10-13 #endif //gpio_set_value(RK29SDK_WIFI_GPIO_RESET_N, GPIO_HIGH); mdelay(100); pr_info("wifi turn on power\n"); }else{ // if (!rk29sdk_bt_power_state){ gpio_set_value(RK30SDK_WIFI_GPIO_POWER_N, GPIO_LOW); #if defined(CONFIG_SDMMC1_RK29) && !defined(CONFIG_SDMMC_RK29_OLD) rk29_sdmmc_gpio_open(1, 0); //added by xbw at 2011-10-13 #endif mdelay(100); pr_info("wifi shut off power\n"); // }else // { // pr_info("wifi shouldn't shut off power, bt is using it!\n"); // } //gpio_set_value(RK29SDK_WIFI_GPIO_RESET_N, GPIO_LOW); } // rk29sdk_wifi_power_state = on; return 0; }
int rk29sdk_wifi_power(int on) { pr_info("%s: %d\n", __func__, on); if (on){ #ifdef CONFIG_MACH_RK_FAC if(wifi_pwr!=-1) port_output_on(wifi_pwr); #else gpio_set_value(rk_platform_wifi_gpio.power_n.io, rk_platform_wifi_gpio.power_n.enable); #endif mdelay(50); #if defined(CONFIG_USE_SDMMC0_FOR_WIFI_DEVELOP_BOARD) rk29_sdmmc_gpio_open(0, 1); #else rk29_sdmmc_gpio_open(1, 1); #endif #ifdef RK30SDK_WIFI_GPIO_RESET_N if (rk_platform_wifi_gpio.reset_n.io != INVALID_GPIO) gpio_set_value(rk_platform_wifi_gpio.reset_n.io, rk_platform_wifi_gpio.reset_n.enable); #endif mdelay(100); pr_info("wifi turn on power\n"); }else{ // if (!rk29sdk_bt_power_state){ #ifdef CONFIG_MACH_RK_FAC if(wifi_pwr!=-1) port_output_off(wifi_pwr); #else gpio_set_value(rk_platform_wifi_gpio.power_n.io, !(rk_platform_wifi_gpio.power_n.enable)); #endif #if defined(CONFIG_USE_SDMMC0_FOR_WIFI_DEVELOP_BOARD) rk29_sdmmc_gpio_open(0, 0); #else rk29_sdmmc_gpio_open(1, 0); #endif mdelay(100); pr_info("wifi shut off power\n"); // }else // { // pr_info("wifi shouldn't shut off power, bt is using it!\n"); // } #ifdef RK30SDK_WIFI_GPIO_RESET_N if (rk_platform_wifi_gpio.reset_n.io != INVALID_GPIO) gpio_set_value(rk_platform_wifi_gpio.reset_n.io, !(rk_platform_wifi_gpio.reset_n.enable)); #endif } // rk29sdk_wifi_power_state = on; return 0; }
static void rk29_sdmmc_set_iomux_mmc0(unsigned int bus_width) { switch (bus_width) { case 1://SDMMC_CTYPE_4BIT: { rk30_mux_api_set(GPIO3B3_SDMMC0DATA1_NAME, GPIO3B_SDMMC0_DATA1); rk30_mux_api_set(GPIO3B4_SDMMC0DATA2_NAME, GPIO3B_SDMMC0_DATA2); rk30_mux_api_set(GPIO3B5_SDMMC0DATA3_NAME, GPIO3B_SDMMC0_DATA3); } break; case 0x10000://SDMMC_CTYPE_8BIT: break; case 0xFFFF: //gpio_reset { rk30_mux_api_set(GPIO3A7_SDMMC0PWREN_NAME, GPIO3A_GPIO3A7); gpio_request(RK30_PIN3_PA7,"sdmmc-power"); gpio_direction_output(RK30_PIN3_PA7,GPIO_HIGH); //power-off #if 0 //replace the power control into rk29_sdmmc_set_ios(); modifyed by xbw at 2012-08-12 rk29_sdmmc_gpio_open(0, 0); gpio_direction_output(RK30_PIN3_PA7,GPIO_LOW); //power-on rk29_sdmmc_gpio_open(0, 1); #endif } break; default: //case 0://SDMMC_CTYPE_1BIT: { rk30_mux_api_set(GPIO3B1_SDMMC0CMD_NAME, GPIO3B_SDMMC0_CMD); rk30_mux_api_set(GPIO3B0_SDMMC0CLKOUT_NAME, GPIO3B_SDMMC0_CLKOUT); rk30_mux_api_set(GPIO3B2_SDMMC0DATA0_NAME, GPIO3B_SDMMC0_DATA0); rk30_mux_api_set(GPIO3B3_SDMMC0DATA1_NAME, GPIO3B_GPIO3B3); gpio_request(RK30_PIN3_PB3, "mmc0-data1"); gpio_direction_output(RK30_PIN3_PB3,GPIO_HIGH);//set mmc0-data1 to high. rk30_mux_api_set(GPIO3B4_SDMMC0DATA2_NAME, GPIO3B_GPIO3B4); gpio_request(RK30_PIN3_PB4, "mmc0-data2"); gpio_direction_output(RK30_PIN3_PB4,GPIO_HIGH);//set mmc0-data2 to high. rk30_mux_api_set(GPIO3B5_SDMMC0DATA3_NAME, GPIO3B_GPIO3B5); gpio_request(RK30_PIN3_PB5, "mmc0-data3"); gpio_direction_output(RK30_PIN3_PB5,GPIO_HIGH);//set mmc0-data3 to high. } break; } }
static void rk29_sdmmc_set_iomux_mmc0(unsigned int bus_width) { switch (bus_width) { case 1://SDMMC_CTYPE_4BIT: { rk30_mux_api_set(GPIO3A5_SDMMC0DATA1_NAME, GPIO3A_SDMMC0DATA1); rk30_mux_api_set(GPIO3A6_SDMMC0DATA2_NAME, GPIO3A_SDMMC0DATA2); rk30_mux_api_set(GPIO3A7_SDMMC0DATA3_NAME, GPIO3A_SDMMC0DATA3); } break; case 0x10000://SDMMC_CTYPE_8BIT: break; case 0xFFFF: //gpio_reset { rk30_mux_api_set(GPIO3A1_SDMMC0PWREN_NAME, GPIO3A_GPIO3A1); gpio_request(RK30_PIN3_PA1,"sdmmc-power"); gpio_direction_output(RK30_PIN3_PA1,GPIO_HIGH); //power-off rk29_sdmmc_gpio_open(0, 0); gpio_direction_output(RK30_PIN3_PA1,GPIO_LOW); //power-on rk29_sdmmc_gpio_open(0, 1); } break; default: //case 0://SDMMC_CTYPE_1BIT: { rk30_mux_api_set(GPIO3A3_SDMMC0CMD_NAME, GPIO3A_SDMMC0CMD); rk30_mux_api_set(GPIO3A2_SDMMC0CLKOUT_NAME, GPIO3A_SDMMC0CLKOUT); rk30_mux_api_set(GPIO3A4_SDMMC0DATA0_NAME, GPIO3A_SDMMC0DATA0); rk30_mux_api_set(GPIO3A5_SDMMC0DATA1_NAME, GPIO3A_GPIO3A5); gpio_request(RK30_PIN3_PA5, "mmc0-data1"); gpio_direction_output(RK30_PIN3_PA5,GPIO_HIGH);//set mmc0-data1 to high. rk30_mux_api_set(GPIO3A6_SDMMC0DATA2_NAME, GPIO3A_GPIO3A6); gpio_request(RK30_PIN3_PA5, "mmc0-data2"); gpio_direction_output(RK30_PIN3_PA5,GPIO_HIGH);//set mmc0-data2 to high. rk30_mux_api_set(GPIO3A7_SDMMC0DATA3_NAME, GPIO3A_GPIO3A7); gpio_request(RK30_PIN3_PA7, "mmc0-data3"); gpio_direction_output(RK30_PIN3_PA7,GPIO_HIGH);//set mmc0-data3 to high. } break; } }
int rk29sdk_wifi_power(int on) { pr_info("%s: %d\n", __func__, on); /* //<--- Galland: not sure of the level for reset (probably active low since it's named reset_n?) rk29_sdmmc_gpio_open(1, 0); rk29sdk_wifi_combo_module_power(1); mdelay(100); rk29sdk_wifi_combo_module_reset(0); mdelay(100); rk29sdk_wifi_combo_module_reset(1); mdelay(100); rk29_sdmmc_gpio_open(1, 1); rk29sdk_wifi_power_state = 1; //Galland ---> */ if (on){ #if defined(CONFIG_SDMMC1_RK29) && !defined(CONFIG_SDMMC_RK29_OLD) #if defined(CONFIG_USE_SDMMC0_FOR_WIFI_DEVELOP_BOARD) rk29_sdmmc_gpio_open(0, 1); #else rk29_sdmmc_gpio_open(1, 0); mdelay(10); rk29_sdmmc_gpio_open(1, 1); #endif #endif mdelay(100); pr_info("wifi turn on power\n"); } else { #if defined(CONFIG_SDMMC1_RK29) && !defined(CONFIG_SDMMC_RK29_OLD) #if defined(CONFIG_USE_SDMMC0_FOR_WIFI_DEVELOP_BOARD) rk29_sdmmc_gpio_open(0, 0); #else rk29_sdmmc_gpio_open(1, 0); #endif #endif mdelay(100); pr_info("wifi shut off power\n"); } rk29sdk_wifi_power_state = on; return 0; }
static int __init rk29sdk_wifi_bt_gpio_control_init(void) { rk29sdk_init_wifi_mem(); rk29_mux_api_set(rk_platform_wifi_gpio.power_n.iomux.name, rk_platform_wifi_gpio.power_n.iomux.fgpio); if (rk_platform_wifi_gpio.power_n.io != INVALID_GPIO) { if (gpio_request(rk_platform_wifi_gpio.power_n.io, "wifi_power")) { pr_info("%s: request wifi power gpio failed\n", __func__); return -1; } } #ifdef RK30SDK_WIFI_GPIO_RESET_N if (rk_platform_wifi_gpio.reset_n.io != INVALID_GPIO) { if (gpio_request(rk_platform_wifi_gpio.reset_n.io, "wifi reset")) { pr_info("%s: request wifi reset gpio failed\n", __func__); gpio_free(rk_platform_wifi_gpio.power_n.io); return -1; } } #endif if (rk_platform_wifi_gpio.power_n.io != INVALID_GPIO) gpio_direction_output(rk_platform_wifi_gpio.power_n.io, !(rk_platform_wifi_gpio.power_n.enable) ); #ifdef RK30SDK_WIFI_GPIO_RESET_N if (rk_platform_wifi_gpio.reset_n.io != INVALID_GPIO) gpio_direction_output(rk_platform_wifi_gpio.reset_n.io, !(rk_platform_wifi_gpio.reset_n.enable) ); #endif #if defined(CONFIG_SDMMC1_RK29) && !defined(CONFIG_SDMMC_RK29_OLD) #if !defined(CONFIG_MT5931) && !defined(CONFIG_MT5931_MT6622) #if !(!!SDMMC_USE_NEW_IOMUX_API) rk29_mux_api_set(rksdmmc1_gpio_init.data1_gpio.iomux.name, rksdmmc1_gpio_init.data1_gpio.iomux.fgpio); #endif 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. #if !(!!SDMMC_USE_NEW_IOMUX_API) rk29_mux_api_set(rksdmmc1_gpio_init.data2_gpio.iomux.name, rksdmmc1_gpio_init.data2_gpio.iomux.fgpio); #endif 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. #if !(!!SDMMC_USE_NEW_IOMUX_API) rk29_mux_api_set(rksdmmc1_gpio_init.data3_gpio.iomux.name, rksdmmc1_gpio_init.data3_gpio.iomux.fgpio); #endif 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 rk29_sdmmc_gpio_open(1, 0); //added by xbw at 2011-10-13 #endif pr_info("%s: init finished\n",__func__); return 0; }
static int rk29sdk_wab_power(int on) { pr_info("%s: %d\n", __func__, on); if (on){ gpio_set_value(rk_platform_wifi_gpio.power_n.io, rk_platform_wifi_gpio.power_n.enable); mdelay(50); #if defined(CONFIG_SDMMC1_RK29) && !defined(CONFIG_SDMMC_RK29_OLD) rk29_sdmmc_gpio_open(1, 1); //added by xbw at 2011-10-13 #endif #ifdef RK30SDK_WIFI_GPIO_RESET_N if (rk_platform_wifi_gpio.reset_n.io != INVALID_GPIO) gpio_set_value(rk_platform_wifi_gpio.reset_n.io, rk_platform_wifi_gpio.reset_n.enable); #endif mdelay(100); pr_info("wifi turn on power\n"); }else{ // if (!rk29sdk_bt_power_state){ gpio_set_value(rk_platform_wifi_gpio.power_n.io, !(rk_platform_wifi_gpio.power_n.enable)); #if defined(CONFIG_SDMMC1_RK29) && !defined(CONFIG_SDMMC_RK29_OLD) rk29_sdmmc_gpio_open(1, 0); //added by xbw at 2011-10-13 #endif mdelay(100); pr_info("wifi shut off power\n"); // }else // { // pr_info("wifi shouldn't shut off power, bt is using it!\n"); // } #ifdef RK30SDK_WIFI_GPIO_RESET_N if (rk_platform_wifi_gpio.reset_n.io != INVALID_GPIO) gpio_set_value(rk_platform_wifi_gpio.reset_n.io, !(rk_platform_wifi_gpio.reset_n.enable)); #endif } // rk29sdk_wifi_power_state = on; return 0; }
static int __init rk29sdk_wifi_bt_gpio_control_init(void) { rk29sdk_init_wifi_mem(); #if 0 rk29_mux_api_set(GPIO3D0_SDMMC1PWREN_NAME, GPIO3D_GPIO3D0); if (gpio_request(RK30SDK_WIFI_GPIO_POWER_N, "wifi_power")) { pr_info("%s: request wifi power gpio failed\n", __func__); return -1; } /*if (gpio_request(RK29SDK_WIFI_GPIO_RESET_N, "wifi reset")) { pr_info("%s: request wifi reset gpio failed\n", __func__); gpio_free(RK30SDK_WIFI_GPIO_POWER_N); return -1; } if (gpio_request(RK29SDK_BT_GPIO_RESET_N, "bt reset")) { pr_info("%s: request bt reset gpio failed\n", __func__); gpio_free(RK29SDK_WIFI_GPIO_RESET_N); return -1; }*/ gpio_direction_output(RK30SDK_WIFI_GPIO_POWER_N, GPIO_LOW); //gpio_direction_output(RK29SDK_WIFI_GPIO_RESET_N, GPIO_LOW); //gpio_direction_output(RK29SDK_BT_GPIO_RESET_N, GPIO_LOW); #endif #if defined(CONFIG_SDMMC1_RK29) && !defined(CONFIG_SDMMC_RK29_OLD) rk29_mux_api_set(GPIO3C2_SDMMC1DATA1_NAME, GPIO3C_GPIO3C2); gpio_request(RK30_PIN3_PC2, "mmc1-data1"); gpio_direction_output(RK30_PIN3_PC2,GPIO_LOW);//set mmc1-data1 to low. rk29_mux_api_set(GPIO3C3_SDMMC1DATA2_NAME, GPIO3C_GPIO3C3); gpio_request(RK30_PIN3_PC3, "mmc1-data2"); gpio_direction_output(RK30_PIN3_PC3,GPIO_LOW);//set mmc1-data2 to low. rk29_mux_api_set(GPIO3C4_SDMMC1DATA3_NAME, GPIO3C_GPIO3C4); gpio_request(RK30_PIN3_PC4, "mmc1-data3"); gpio_direction_output(RK30_PIN3_PC4,GPIO_LOW);//set mmc1-data3 to low. rk29_sdmmc_gpio_open(1, 0); //added by xbw at 2011-10-13 #endif pr_info("%s: init finished\n",__func__); return 0; }
int rk29sdk_wifi_power(int on) { pr_info("%s: %d\n", __func__, on); if (on){ #if defined(CONFIG_SDMMC1_RK29) && !defined(CONFIG_SDMMC_RK29_OLD) #if defined(CONFIG_USE_SDMMC0_FOR_WIFI_DEVELOP_BOARD) rk29_sdmmc_gpio_open(0, 1); #else rk29_sdmmc_gpio_open(1, 0); mdelay(10); rk29_sdmmc_gpio_open(1, 1); #endif #endif mdelay(100); pr_info("wifi turn on power\n"); } else { #if defined(CONFIG_SDMMC1_RK29) && !defined(CONFIG_SDMMC_RK29_OLD) #if defined(CONFIG_USE_SDMMC0_FOR_WIFI_DEVELOP_BOARD) rk29_sdmmc_gpio_open(0, 0); #else rk29_sdmmc_gpio_open(1, 0); #endif #endif mdelay(100); pr_info("wifi shut off power\n"); } rk29sdk_wifi_power_state = on; return 0; }
static void rk29_sdmmc_set_iomux_mmc0(unsigned int bus_width) { switch (bus_width) { case 1://SDMMC_CTYPE_4BIT: { #if SDMMC_USE_NEW_IOMUX_API 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); #else 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); #endif } break; case 0x10000://SDMMC_CTYPE_8BIT: 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 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 #if 0 //replace the power control into rk29_sdmmc_set_ios(); modifyed by xbw at 2012-08-12 rk29_sdmmc_gpio_open(0, 0); gpio_direction_output(rksdmmc0_gpio_init.power_en_gpio.io, rksdmmc0_gpio_init.power_en_gpio.enable); //power-on rk29_sdmmc_gpio_open(0, 1); #endif } break; default: //case 0://SDMMC_CTYPE_1BIT: { #if SDMMC_USE_NEW_IOMUX_API 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); #else 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); #endif //IO voltage(vccio); #ifdef RK31SDK_SET_SDMMC0_PIN_VOLTAGE 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 #else //default set the voltage of SDMMC0 to 3.3V SDMMC_write_grf_reg(GRF_IO_CON4, (SDMMC0_IO_VOLTAGE_MASK |SDMMC0_IO_VOLTAGE_33)); #endif //sdmmc drive strength control SDMMC_write_grf_reg(GRF_IO_CON2, (SDMMC0_DRIVER_STRENGTH_MASK |SDMMC0_DRIVER_STRENGTH_8MA)); #if !(!!SDMMC_USE_NEW_IOMUX_API) rk30_mux_api_set(rksdmmc0_gpio_init.data1_gpio.iomux.name, rksdmmc0_gpio_init.data1_gpio.iomux.fgpio); #endif 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. #if !(!!SDMMC_USE_NEW_IOMUX_API) rk30_mux_api_set(rksdmmc0_gpio_init.data2_gpio.iomux.name, rksdmmc0_gpio_init.data2_gpio.iomux.fgpio); #endif 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. #if !(!!SDMMC_USE_NEW_IOMUX_API) rk30_mux_api_set(rksdmmc0_gpio_init.data3_gpio.iomux.name, rksdmmc0_gpio_init.data3_gpio.iomux.fgpio); #endif 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. } break; } }
static int __init rk29sdk_wifi_bt_gpio_control_init(void) { rk29sdk_init_wifi_mem(); #if !(!!SDMMC_USE_NEW_IOMUX_API) rk29_mux_api_set(rk_platform_wifi_gpio.power_n.iomux.name, rk_platform_wifi_gpio.power_n.iomux.fgpio); #endif #ifdef CONFIG_MACH_RK_FAC if(wifi_pwr!=-1) port_output_init(wifi_pwr, 1, "wifi_pwr"); #else if (rk_platform_wifi_gpio.power_n.io != INVALID_GPIO) { if (gpio_request(rk_platform_wifi_gpio.power_n.io, "wifi_power")) { pr_info("%s: request wifi power gpio failed\n", __func__); return -1; } } #endif #ifdef RK30SDK_WIFI_GPIO_RESET_N if (rk_platform_wifi_gpio.reset_n.io != INVALID_GPIO) { if (gpio_request(rk_platform_wifi_gpio.reset_n.io, "wifi reset")) { pr_info("%s: request wifi reset gpio failed\n", __func__); gpio_free(rk_platform_wifi_gpio.power_n.io); return -1; } } #endif #ifdef CONFIG_MACH_RK_FAC if(wifi_pwr!=-1) port_output_off(wifi_pwr); #else if (rk_platform_wifi_gpio.power_n.io != INVALID_GPIO) gpio_direction_output(rk_platform_wifi_gpio.power_n.io, !(rk_platform_wifi_gpio.power_n.enable) ); #endif #ifdef RK30SDK_WIFI_GPIO_RESET_N if (rk_platform_wifi_gpio.reset_n.io != INVALID_GPIO) gpio_direction_output(rk_platform_wifi_gpio.reset_n.io, !(rk_platform_wifi_gpio.reset_n.enable) ); #endif #if defined(CONFIG_ARCH_RK319X)|| defined(CONFIG_USE_SDMMC0_FOR_WIFI_DEVELOP_BOARD) ////////////////////////////////////////////////////////////////////////////////////////// //mmc0--used for Wifi; mmc1--used for sd-card in project RK3190 gpio_request(rksdmmc0_gpio_init.data1_gpio.io, "mmc0-data1"); gpio_direction_output(rksdmmc0_gpio_init.data1_gpio.io,GPIO_LOW);//set mmc1-data1 to low. gpio_request(rksdmmc1_gpio_init.data2_gpio.io, "mmc0-data2"); gpio_direction_output(rksdmmc1_gpio_init.data2_gpio.io,GPIO_LOW);//set mmc1-data2 to low. gpio_request(rksdmmc0_gpio_init.data3_gpio.io, "mmc0-data3"); gpio_direction_output(rksdmmc0_gpio_init.data3_gpio.io,GPIO_LOW);//set mmc1-data3 to low. rk29_sdmmc_gpio_open(0, 0); printk("%d..%s ====test ===\n",__LINE__, __FUNCTION__); ////////////////////////////////////////////////////////////////////////////////////////// #else //--#if defined(CONFIG_ARCH_RK319X) #if defined(CONFIG_SDMMC1_RK29) && !defined(CONFIG_SDMMC_RK29_OLD) #if !defined(CONFIG_MT5931) && !defined(CONFIG_MT5931_MT6622) #if !(!!SDMMC_USE_NEW_IOMUX_API) rk29_mux_api_set(rksdmmc1_gpio_init.data1_gpio.iomux.name, rksdmmc1_gpio_init.data1_gpio.iomux.fgpio); #endif 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. #if !(!!SDMMC_USE_NEW_IOMUX_API) rk29_mux_api_set(rksdmmc1_gpio_init.data2_gpio.iomux.name, rksdmmc1_gpio_init.data2_gpio.iomux.fgpio); #endif 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. #if !(!!SDMMC_USE_NEW_IOMUX_API) rk29_mux_api_set(rksdmmc1_gpio_init.data3_gpio.iomux.name, rksdmmc1_gpio_init.data3_gpio.iomux.fgpio); #endif 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 rk29_sdmmc_gpio_open(1, 0); //added by xbw at 2011-10-13 #endif #endif//--#else //--#if defined(CONFIG_ARCH_RK319X) pr_info("%s: init finished\n",__func__); return 0; }