コード例 #1
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;
}
コード例 #2
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;
}
コード例 #3
0
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;
}