/* Customer function to control hw specific wlan gpios */
void
dhd_customer_gpio_wlan_ctrl(int onoff)
{
	switch (onoff) {
		case WLAN_RESET_OFF:
			WL_TRACE(("%s: call customer specific GPIO to insert WLAN RESET\n",
				__FUNCTION__));
#ifdef FIH_HW
			bcm4330_wifi_suspend();  //FIH-ADD+
#endif
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(2);
#endif /* CUSTOMER_HW */
#ifdef CUSTOMER_HW2
			wifi_set_power(0, 0);
#endif
			//WL_ERROR(("=========== WLAN placed in RESET ========\n"));
		break;

		case WLAN_RESET_ON:
			WL_TRACE(("%s: callc customer specific GPIO to remove WLAN RESET\n",
				__FUNCTION__));
#ifdef FIH_HW
			bcm4330_wifi_resume();  //FIH-ADD+
#endif
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(2);
#endif /* CUSTOMER_HW */
#ifdef CUSTOMER_HW2
			wifi_set_power(1, 0);
#endif
			//WL_ERROR(("=========== WLAN going back to live  ========\n"));
		break;

		case WLAN_POWER_OFF:
			WL_TRACE(("%s: call customer specific GPIO to turn off WL_REG_ON\n",
				__FUNCTION__));
#ifdef FIH_HW
			wifi_power(0);  //FIH-ADD+
#endif
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(1);
#endif /* CUSTOMER_HW */
		break;

		case WLAN_POWER_ON:
			WL_TRACE(("%s: call customer specific GPIO to turn on WL_REG_ON\n",
				__FUNCTION__));
#ifdef FIH_HW
			wifi_power(1);  //FIH-ADD+
#endif
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(1);
			/* Lets customer power to get stable */
			OSL_DELAY(200);
#endif /* CUSTOMER_HW */
		break;
	}
}
/* Customer function to control hw specific wlan gpios */
void
dhd_customer_gpio_wlan_ctrl(int onoff)
{
	switch (onoff) {
		case WLAN_RESET_OFF:
			WL_TRACE(("%s: call customer specific GPIO to insert WLAN RESET\n",
				__FUNCTION__));
#if defined(CONFIG_LGE_BCM432X_PATCH)
			gpio_set_value(CONFIG_BCM4329_GPIO_WL_RESET, 0);
#endif

#ifdef CUSTOMER_HW
			bcm_wlan_power_off(2);
#endif /* CUSTOMER_HW */
#ifdef CUSTOMER_HW2
			wifi_set_power(0, 0);
#endif
			WL_ERROR(("=========== WLAN placed in RESET ========\n"));
		break;

		case WLAN_RESET_ON:
			WL_TRACE(("%s: callc customer specific GPIO to remove WLAN RESET\n",
				__FUNCTION__));
#if defined(CONFIG_LGE_BCM432X_PATCH)
			gpio_set_value(CONFIG_BCM4329_GPIO_WL_RESET, 1);
			mdelay(150);	//mingi
#endif
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(2);
#endif /* CUSTOMER_HW */
#ifdef CUSTOMER_HW2
			wifi_set_power(1, 0);
#endif
			WL_ERROR(("=========== WLAN going back to live  ========\n"));
		break;

		case WLAN_POWER_OFF:
			WL_TRACE(("%s: call customer specific GPIO to turn off WL_REG_ON\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(1);
#endif /* CUSTOMER_HW */
		break;

		case WLAN_POWER_ON:
			WL_TRACE(("%s: call customer specific GPIO to turn on WL_REG_ON\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(1);
#endif /* CUSTOMER_HW */
			/* Lets customer power to get stable */
			OSL_DELAY(500);
		break;
	}
}
示例#3
0
/* Customer function to control hw specific wlan gpios */
void
dhd_customer_gpio_wlan_ctrl(int onoff)
{
	switch (onoff) {
		case WLAN_RESET_OFF:
			WL_TRACE(("%s: call customer specific GPIO to insert WLAN RESET\n",
				__FUNCTION__));
#if defined (CUSTOMER_HW_SAMSUNG)
			wlan_setup_power(POWER_OFF, 2);
#elif defined(CUSTOMER_HW)
			bcm_wlan_power_off(2);
#elif defined(CUSTOMER_HW2)
			wifi_set_power(0, 0);
#endif
			WL_ERROR(("=========== WLAN placed in RESET ========\n"));
		break;

		case WLAN_RESET_ON:
			WL_TRACE(("%s: callc customer specific GPIO to remove WLAN RESET\n",
				__FUNCTION__));
#if defined(CUSTOMER_HW_SAMSUNG)
			wlan_setup_power(POWER_ON, 2);
#elif defined(CUSTOMER_HW)
			bcm_wlan_power_on(2);
#elif defined(CUSTOMER_HW2)
			wifi_set_power(1, 0);
#endif
			WL_ERROR(("=========== WLAN going back to live  ========\n"));
		break;

		case WLAN_POWER_OFF:
			WL_TRACE(("%s: call customer specific GPIO to turn off WL_REG_ON\n",
				__FUNCTION__));
#if defined(CUSTOMER_HW_SAMSUNG)
			wlan_setup_power(POWER_OFF, 1);
#elif defined(CUSTOMER_HW)
			bcm_wlan_power_off(1);
#endif /* CUSTOMER_HW || CUSTOMER_HW_SAMSUNG */
		break;

		case WLAN_POWER_ON:
			WL_TRACE(("%s: call customer specific GPIO to turn on WL_REG_ON\n",
				__FUNCTION__));
#if defined(CUSTOMER_HW_SAMSUNG)
			wlan_setup_power(POWER_ON, 1);
#elif defined(CUSTOMER_HW)
			bcm_wlan_power_on(1);
			/* Lets customer power to get stable */
			OSL_DELAY(50);
#endif /* CUSTOMER_HW || CUSTOMER_HW_SAMSUNG */
		break;
	}
}
/* Customer function to control hw specific wlan gpios */
void
dhd_customer_gpio_wlan_ctrl(int onoff)
{
	switch (onoff) {
		case WLAN_RESET_OFF:
			WL_TRACE(("%s: call customer specific GPIO to insert WLAN RESET\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(2);
#endif /* CUSTOMER_HW */
#ifdef CUSTOMER_HW2
			wifi_set_power(0, 0);
#endif
			WL_ERROR(("=========== WLAN placed in RESET ========\n"));
		break;

		case WLAN_RESET_ON:
			WL_TRACE(("%s: callc customer specific GPIO to remove WLAN RESET\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(2);
#endif /* CUSTOMER_HW */
#ifdef CUSTOMER_HW2
			wifi_set_power(1, 0);
#endif
			WL_ERROR(("=========== WLAN going back to live  ========\n"));
		break;

		case WLAN_POWER_OFF:
			WL_TRACE(("%s: call customer specific GPIO to turn off WL_REG_ON\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(1);
#endif /* CUSTOMER_HW */
			remove_proc_entry("q_wlan", NULL);	
			q_wlan_flag = 0;
		break;

		case WLAN_POWER_ON:
			WL_TRACE(("%s: call customer specific GPIO to turn on WL_REG_ON\n",
				__FUNCTION__));
			entry = create_proc_read_entry("q_wlan", 0, NULL, q_proc_call, NULL);
			if (!entry)
				printk("cl: unable to create proc file.\n");
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(1);
#endif 
			/* Lets customer power to get stable */
			OSL_DELAY(50);
		break;
	}
}
示例#5
0
/* Customer function to control hw specific wlan gpios */
void
dhd_customer_gpio_wlan_ctrl(int onoff)
{
	switch (onoff) {
		case WLAN_RESET_OFF:
			WL_TRACE(("%s: call customer specific GPIO to insert WLAN RESET\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(2);
#endif /* CUSTOMER_HW */
#if defined(CUSTOMER_HW2)
			wifi_set_power(0, 0);
#endif
			mdelay(100);
			WL_ERROR(("=========== WLAN placed in RESET ========\n"));
		break;

		case WLAN_RESET_ON:
			WL_TRACE(("%s: callc customer specific GPIO to remove WLAN RESET\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(2);
#endif /* CUSTOMER_HW */
#if defined(CUSTOMER_HW2)
			wifi_set_power(1, 0);
#endif
			mdelay(100);
			WL_ERROR(("=========== WLAN going back to live  ========\n"));
		break;

		case WLAN_POWER_OFF:
			WL_TRACE(("%s: call customer specific GPIO to turn off WL_REG_ON\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(1);
#endif /* CUSTOMER_HW */
			WL_ERROR(("=========== WLAN placed in POWER OFF ========\n"));
		break;

		case WLAN_POWER_ON:
			WL_TRACE(("%s: call customer specific GPIO to turn on WL_REG_ON\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(1);
#endif /* CUSTOMER_HW */
			/* Lets customer power to get stable */
			mdelay(100);
			WL_ERROR(("=========== WLAN placed in POWER ON ========\n"));
		break;
	}
}
示例#6
0
/* Customer function to control hw specific wlan gpios */
void
dhd_customer_gpio_wlan_ctrl(int onoff)
{
	switch (onoff) {
		case WLAN_RESET_OFF:
			WL_TRACE(("%s: call customer specific GPIO to assert WLAN RESET\n",
				__FUNCTION__));
#ifdef CONFIG_WIFI_CONTROL_EXPORT
			bcm_wlan_power_off(2);
#endif /* CUSTOMER_HW */
#ifdef CONFIG_WIFI_CONTROL_FUNC
			wifi_set_power(0, 0);
#endif
			WL_ERROR(("=========== WLAN placed in RESET ========\n"));
		break;

		case WLAN_RESET_ON:
			WL_TRACE(("%s: callc customer specific GPIO to remove WLAN RESET\n",
				__FUNCTION__));
#ifdef CONFIG_WIFI_CONTROL_EXPORT
			bcm_wlan_power_on(2);
#endif /* CUSTOMER_HW */
#ifdef CONFIG_WIFI_CONTROL_FUNC
			wifi_set_power(1, 0);
#endif
			WL_ERROR(("=========== WLAN going back to live  ========\n"));
		break;

		case WLAN_POWER_OFF:
			WL_TRACE(("%s: call customer specific GPIO to turn off WL_REG_ON\n",
				__FUNCTION__));
#ifdef CONFIG_WIFI_CONTROL_EXPORT
			bcm_wlan_power_off(1);
#endif /* CONFIG_WIFI_CONTROL_EXPORT */
		// In case if we use platform device removal of the device turns off the power
		break;

		case WLAN_POWER_ON:
			WL_TRACE(("%s: call customer specific GPIO to turn on WL_REG_ON\n",
				__FUNCTION__));
#ifdef CONFIG_WIFI_CONTROL_EXPORT
			bcm_wlan_power_on(1);
#endif /* CONFIG_WIFI_CONTROL_EXPORT */
		// In case if we use platform device it will be done in add function 
			/* Lets customer power to get stable */
//			OSL_DELAY(500);
		break;
	}
}
static ssize_t bcm_ap6181_manual_set(struct device *dev,
				struct device_attribute *attr,
				const char *buf, size_t count)
{
        int ret = 0;
        /* rlt8723bs default state is power on */
        static int init_state = 1;

        if (strncmp(buf, "0", 1) == 0) {
                if (!init_state)
                        goto out;
                ret = bcm_wlan_power_off(NORMAL);
                init_state = 0;
        } else if (strncmp(buf, "1", 1) == 0) {
                if (init_state)
                        goto out;
                ret = bcm_wlan_power_on(NORMAL);
                init_state = 1;
        } else
                ret = -1;
        if (ret)
                pr_warn("===>%s bcm_ap6181 power ctl fail\n", __func__);

out:
	return count;
}
void
dhd_customer_gpio_wlan_ctrl(int onoff)
{
	switch (onoff) {
		case WLAN_RESET_OFF:
			WL_TRACE(("%s: call customer specific GPIO to insert WLAN RESET\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(2);
#endif 
#ifdef CUSTOMER_HW2
			wifi_set_power(0, 0);
#endif
			WL_ERROR(("=========== WLAN placed in RESET ========\n"));
		break;

		case WLAN_RESET_ON:
			WL_TRACE(("%s: callc customer specific GPIO to remove WLAN RESET\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(2);
#endif 
#ifdef CUSTOMER_HW2
			wifi_set_power(1, 0);
#endif
			WL_ERROR(("=========== WLAN going back to live  ========\n"));
		break;

		case WLAN_POWER_OFF:
			WL_TRACE(("%s: call customer specific GPIO to turn off WL_REG_ON\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(1);
#endif 
		break;

		case WLAN_POWER_ON:
			WL_TRACE(("%s: call customer specific GPIO to turn on WL_REG_ON\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(1);
			
			OSL_DELAY(200);
#endif 
		break;
	}
}
示例#9
0
void
dhd_customer_gpio_wlan_ctrl(int onoff)
{
    switch (onoff) {
    case WLAN_RESET_OFF:
        WL_TRACE(("%s: call customer specific GPIO to insert WLAN RESET\n",
                  __FUNCTION__));
#ifdef CUSTOMER_HW
        bcm_wlan_power_off(2);
#endif
#if 1

#if defined(CONFIG_MACH_EVT0) || defined(CONFIG_MACH_EVT0_1) ||defined( CONFIG_MACH_EVB)
        gpio_set_value(78,0);
#elif defined CONFIG_MACH_EVT1
        gpio_set_value(76,0);
#else
        gpio_set_value(76,0);
#endif

        mdelay(100);
#if defined(CONFIG_MACH_EVT0) || defined(CONFIG_MACH_EVT0_1) ||defined( CONFIG_MACH_EVB)
        gpio_set_value(78,1);
#elif defined CONFIG_MACH_EVT1
        gpio_set_value(76,1);
#else
        gpio_set_value(76,1);
#endif

        mdelay(100);

#if defined(CONFIG_MACH_EVT0) || defined(CONFIG_MACH_EVT0_1) ||defined( CONFIG_MACH_EVB)
        gpio_set_value(78,0);
#elif defined CONFIG_MACH_EVT1
        gpio_set_value(76,0);
#else
        gpio_set_value(76,0);
#endif

        mdelay(100);


#if defined(CONFIG_MACH_EVT0) || defined(CONFIG_MACH_EVT0_1) || defined(CONFIG_MACH_EVT1)
        gpio_set_value(147,0);
#elif defined CONFIG_MACH_EVB
        gpio_set_value(142,0);
#else
        gpio_set_value(147,0);
#endif

#endif

        WL_ERROR(("=========== WLAN placed in RESET ========\n"));
        break;

    case WLAN_RESET_ON:
        WL_TRACE(("%s: callc customer specific GPIO to remove WLAN RESET\n",
                  __FUNCTION__));
#ifdef CUSTOMER_HW
        bcm_wlan_power_on(2);
#endif
#if 1
        gpio_tlmm_config(GPIO_CFG(62,1,GPIO_OUTPUT,GPIO_NO_PULL,GPIO_8MA),GPIO_ENABLE);
        gpio_tlmm_config(GPIO_CFG(63,1,GPIO_OUTPUT,GPIO_PULL_UP,GPIO_8MA),GPIO_ENABLE);
        gpio_tlmm_config(GPIO_CFG(64,1,GPIO_OUTPUT,GPIO_PULL_UP,GPIO_4MA),GPIO_ENABLE);
        gpio_tlmm_config(GPIO_CFG(65,1,GPIO_OUTPUT,GPIO_PULL_UP,GPIO_4MA),GPIO_ENABLE);
        gpio_tlmm_config(GPIO_CFG(66,1,GPIO_OUTPUT,GPIO_PULL_UP,GPIO_4MA),GPIO_ENABLE);
        gpio_tlmm_config(GPIO_CFG(67,1,GPIO_OUTPUT,GPIO_PULL_UP,GPIO_4MA),GPIO_ENABLE);
        gpio_tlmm_config(GPIO_CFG(94,0,GPIO_INPUT,GPIO_NO_PULL,GPIO_4MA),GPIO_ENABLE);

#if defined(CONFIG_MACH_EVT0) || defined(CONFIG_MACH_EVT0_1) || defined(CONFIG_MACH_EVT1)
        gpio_tlmm_config(GPIO_CFG(147,0,GPIO_OUTPUT,GPIO_PULL_DOWN,GPIO_2MA),GPIO_ENABLE);
#elif defined CONFIG_MACH_EVB
        gpio_tlmm_config(GPIO_CFG(142,0,GPIO_OUTPUT,GPIO_PULL_DOWN,GPIO_2MA),GPIO_ENABLE);
#else
        gpio_tlmm_config(GPIO_CFG(147,0,GPIO_OUTPUT,GPIO_PULL_DOWN,GPIO_2MA),GPIO_ENABLE);
#endif

#if defined(CONFIG_MACH_EVT0) || defined(CONFIG_MACH_EVT0_1) ||defined( CONFIG_MACH_EVB)
        gpio_tlmm_config(GPIO_CFG(78,0,GPIO_OUTPUT,GPIO_PULL_DOWN,GPIO_2MA),GPIO_ENABLE);
#elif defined CONFIG_MACH_EVT1
        gpio_tlmm_config(GPIO_CFG(76,0,GPIO_OUTPUT,GPIO_PULL_DOWN,GPIO_2MA),GPIO_ENABLE);
#else
        gpio_tlmm_config(GPIO_CFG(76,0,GPIO_OUTPUT,GPIO_PULL_DOWN,GPIO_2MA),GPIO_ENABLE);
#endif

#if !(defined(CONFIG_MACH_EVB))
        gpio_tlmm_config(GPIO_CFG(30,0,GPIO_OUTPUT,GPIO_PULL_DOWN,GPIO_2MA),GPIO_ENABLE);
#endif

#if defined(CONFIG_MACH_EVT0) || defined(CONFIG_MACH_EVT0_1) || defined(CONFIG_MACH_EVT1)
        gpio_set_value(147,1);
#elif defined CONFIG_MACH_EVB
        gpio_set_value(142,1);
#else
        gpio_set_value(147,1);
#endif

        mdelay(100);

#if defined(CONFIG_MACH_EVT0) || defined(CONFIG_MACH_EVT0_1) ||defined( CONFIG_MACH_EVB)
        gpio_set_value(78,1);
#elif defined CONFIG_MACH_EVT1
        gpio_set_value(76,1);
#else
        gpio_set_value(76,1);
#endif

        PM_LOG_EVENT(PM_LOG_ON,PM_LOG_WIFI);

#if !(defined(CONFIG_MACH_EVB))

        if(gpio_get_value(29)==0) {
            gpio_set_value(27,1);
            printk("WLAN init: bt pulse start **************\n");
            mdelay(100);
            gpio_set_value(27,0);
            printk("WLAN init: bt pulse done ***************\n");
        }

#endif


#if !(defined(CONFIG_MACH_EVB))
        gpio_set_value(30,1);
        mdelay(100);
#endif

#endif



        WL_ERROR(("=========== WLAN going back to live  ========\n"));
        break;

    case WLAN_POWER_OFF:
        WL_TRACE(("%s: call customer specific GPIO to turn off WL_REG_ON\n",
                  __FUNCTION__));
#ifdef CUSTOMER_HW
        bcm_wlan_power_off(1);
#endif
        break;

    case WLAN_POWER_ON:
        WL_TRACE(("%s: call customer specific GPIO to turn on WL_REG_ON\n",
                  __FUNCTION__));
#ifdef CUSTOMER_HW
        bcm_wlan_power_on(1);
#endif

        OSL_DELAY(500);
        break;
    }
}
示例#10
0
/* Customer function to control hw specific wlan gpios */
void
dhd_customer_gpio_wlan_ctrl(int onoff)
{
	switch (onoff) {
		case WLAN_RESET_OFF:
			WL_TRACE(("%s: call customer specific GPIO to insert WLAN RESET\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(2);
#endif /* CUSTOMER_HW */
#ifdef CUSTOMER_HW2
			wifi_set_power(0, 0);
#endif
			WL_ERROR(("=========== WLAN placed in RESET ========\n"));

#if !defined(CONFIG_WIFI_CONTROL_FUNC)
			gpio_tlmm_config(GPIO_CFG(CONFIG_BCMDHD_GPIO_WL_RESET, 0, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA), GPIO_CFG_ENABLE);
			
			gpio_set_value(CONFIG_BCMDHD_GPIO_WL_RESET, 0);
			mdelay(200);

			disable_irq(gpio_to_irq(CONFIG_BCMDHD_GPIO_WL_RESET));
			mdelay(200);
#endif			
		break;

		case WLAN_RESET_ON:
			WL_TRACE(("%s: callc customer specific GPIO to remove WLAN RESET\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(2);
#endif /* CUSTOMER_HW */
#ifdef CUSTOMER_HW2
			wifi_set_power(1, 0);
#endif
			WL_ERROR(("=========== WLAN going back to live  ========\n"));
#if !defined(CONFIG_WIFI_CONTROL_FUNC)
			gpio_tlmm_config(GPIO_CFG(CONFIG_BCMDHD_GPIO_WL_RESET, 0, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA), GPIO_CFG_ENABLE);
			
			gpio_set_value(CONFIG_BCMDHD_GPIO_WL_RESET, 1);
			mdelay(200);
				
			enable_irq(gpio_to_irq(CONFIG_BCMDHD_GPIO_WL_RESET));
			mdelay(200);
#endif
		break;

		case WLAN_POWER_OFF:
			WL_TRACE(("%s: call customer specific GPIO to turn off WL_REG_ON\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(1);
#endif /* CUSTOMER_HW */

		break;

		case WLAN_POWER_ON:
			WL_TRACE(("%s: call customer specific GPIO to turn on WL_REG_ON\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(1);
			/* Lets customer power to get stable */
			OSL_DELAY(200);
#endif /* CUSTOMER_HW */

		break;
	}
}
示例#11
0
/* Customer function to control hw specific wlan gpios */
void
dhd_customer_gpio_wlan_ctrl(int onoff)
{
	switch (onoff) {
		case WLAN_RESET_OFF:
			WL_TRACE(("%s: call customer specific GPIO to insert WLAN RESET\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(2);
#endif /* CUSTOMER_HW */
#ifdef CONFIG_MACH_MAHIMAHI
			wifi_set_power(0, 0);
#elif defined(CUSTOMER_HW_PT)
			gpio_set_value(dhd_wl_reset_gpio, 0);
			printk("WLAN_RESET_OFF[%d]\n",
				gpio_get_value(dhd_wl_reset_gpio));
#endif
			WL_ERROR(("=========== WLAN placed in RESET ========\n"));
		break;

		case WLAN_RESET_ON:
			WL_TRACE(("%s: callc customer specific GPIO to remove WLAN RESET\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(2);
#endif /* CUSTOMER_HW */
#ifdef CONFIG_MACH_MAHIMAHI
			wifi_set_power(1, 0);
#elif defined(CUSTOMER_HW_PT)
			gpio_set_value(dhd_wl_reset_gpio, 1);
			printk("WLAN_RESET_ON[%d]\n",
				gpio_get_value(dhd_wl_reset_gpio));
#endif
			WL_ERROR(("=========== WLAN going back to live  ========\n"));
		break;

		case WLAN_POWER_OFF:
			WL_TRACE(("%s: call customer specific GPIO to turn off WL_REG_ON\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(1);
#endif /* CUSTOMER_HW */
#if defined(CUSTOMER_HW_PT) && !defined(CONFIG_MACH_MAHIMAHI)
			gpio_set_value(dhd_wl_reset_gpio, 0);
			printk("WLAN_POWER_OFF[%d]\n",
				gpio_get_value(dhd_wl_reset_gpio));
#endif
		break;

		case WLAN_POWER_ON:
			WL_TRACE(("%s: call customer specific GPIO to turn on WL_REG_ON\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(1);
#endif /* CUSTOMER_HW */
#if defined(CUSTOMER_HW_PT) && !defined(CONFIG_MACH_MAHIMAHI)
			gpio_set_value(dhd_wl_reset_gpio, 1);
			printk("WLAN_POWER_ON[%d]\n",
				gpio_get_value(dhd_wl_reset_gpio));
#endif
			/* Lets customer power to get stable */
			OSL_DELAY(200);
		break;
	}
}
示例#12
0
/* Customer function to control hw specific wlan gpios */
void
dhd_customer_gpio_wlan_ctrl(int onoff)
{
	switch (onoff) {
		case WLAN_RESET_OFF:
			WL_TRACE(("%s: call customer specific GPIO to insert WLAN RESET\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(2);
#endif /* CUSTOMER_HW */
#ifdef CUSTOMER_HW2
			wifi_set_power(0, 0);
#endif
#ifdef  CONFIG_LCT_AE770
			gpio_set_value(116, 0); //116 wifi pwd for ae770 //21 //123 is for aw70 project
#else
                    gpio_set_value(21, 0);  //123 is for aw70 project
#endif        
			WL_ERROR(("=========== WLAN placed in RESET ========\n"));
		break;

		case WLAN_RESET_ON:
			WL_TRACE(("%s: callc customer specific GPIO to remove WLAN RESET\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(2);
#endif /* CUSTOMER_HW */
#ifdef CUSTOMER_HW2
			wifi_set_power(1, 0);
#endif
#ifdef  CONFIG_LCT_AE770
			gpio_set_value(116, 1); //116 wifi pwd for ae770 //21 //123 is for aw70 project
#else
                    gpio_set_value(21, 1);  //123 is for aw70 project
#endif        
			OSL_DELAY(200);
			WL_ERROR(("=========== WLAN going back to live  ========\n"));
		break;

		case WLAN_POWER_OFF:
			WL_TRACE(("%s: call customer specific GPIO to turn off WL_REG_ON\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(1);
#endif /* CUSTOMER_HW */
#ifdef  CONFIG_LCT_AE770
			gpio_set_value(116, 0); //116 wifi pwd for ae770 //21 //123 is for aw70 project
			//wifi_detect_change(1);

#else
                    gpio_set_value(21, 0);  //123 is for aw70 project
                    wifi_detect_change(1);
#endif        
		break;

		case WLAN_POWER_ON:
			WL_TRACE(("%s: call customer specific GPIO to turn on WL_REG_ON\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(1);
#endif /* CUSTOMER_HW */
#ifdef  CONFIG_LCT_AE770
			gpio_set_value(116, 1); //116 wifi pwd for ae770 //21 //123 is for aw70 project
#else
                    gpio_set_value(21, 1);  //123 is for aw70 project
#endif          
			/* Lets customer power to get stable */
			OSL_DELAY(200);
			wifi_detect_change(1);
		break;
	}
}
示例#13
0
/* Customer function to control hw specific wlan gpios */
void
dhd_customer_gpio_wlan_ctrl(int onoff)
{
	int ret;
	switch (onoff) {
		case WLAN_RESET_OFF:
			WL_TRACE(("%s: call customer specific GPIO to insert WLAN RESET\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(2);
#endif /* CUSTOMER_HW */
#ifdef CUSTOMER_HW2
			//wifi_set_power(0, 0);
//			wifi_set_reset(0, 0);
#endif
			WL_ERROR(("=========== WLAN placed in RESET ========\n"));
			ret = IW8101_wlan_power_off(RESET);
			if(ret < 0){
				printk("IW8101_wlan_power_off reset failed");
			}
		break;

		case WLAN_RESET_ON:
			WL_TRACE(("%s: callc customer specific GPIO to remove WLAN RESET\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(2);
#endif /* CUSTOMER_HW */
#ifdef CUSTOMER_HW2
			//wifi_set_power(1, 0);
			//wifi_set_reset(1, 0);
#endif
			WL_ERROR(("=========== WLAN going back to live  ========\n"));
			
			ret = IW8101_wlan_power_on(RESET);
			if(ret < 0){
				printk("IW8101_wlan_power_on reset failed");
			}
		break;

		case WLAN_POWER_OFF:
			WL_TRACE(("%s: call customer specific GPIO to turn off WL_REG_ON\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(1);
#endif /* CUSTOMER_HW */
			ret = IW8101_wlan_power_off(NORMAL);
			if(ret < 0){
				printk("IW8101_wlan_power_off failed");
			}
		break;

		case WLAN_POWER_ON:
			WL_TRACE(("%s: call customer specific GPIO to turn on WL_REG_ON\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(1);
			/* Lets customer power to get stable */
			OSL_DELAY(200);
#endif /* CUSTOMER_HW */
			ret = IW8101_wlan_power_on(NORMAL);
			if(ret < 0){
				printk("IW8101_wlan_power_on failed");
			}
			OSL_DELAY(300);
		break;
	}
}
/* Customer function to control hw specific wlan gpios */
void
dhd_customer_gpio_wlan_ctrl(int onoff)
{

	switch (onoff) {
		case WLAN_RESET_OFF:
		{
			WL_TRACE(("%s: call customer specific GPIO to insert WLAN RESET\n", __FUNCTION__));
			mmc_pm_gpio_ctrl("bcm40181_shdn", 0);
			mmc_pm_gpio_ctrl("bcm40181_vcc_en", 0);
			mmc_pm_gpio_ctrl("bcm40181_vdd_en", 0);
			printk("[bcm40181]: bcm40181_shdn=>0 !!\n");

#ifdef CUSTOMER_HW
			bcm_wlan_power_off(2);
#endif /* CUSTOMER_HW */

#ifdef CONFIG_MACH_MAHIMAHI
			wifi_set_power(0, 0);
#endif
			WL_ERROR(("=========== WLAN placed in RESET ========\n"));
		}
		break;

		case WLAN_RESET_ON:
		{
			WL_TRACE(("%s: callc customer specific GPIO to remove WLAN RESET\n", __FUNCTION__));
			mmc_pm_gpio_ctrl("bcm40181_vcc_en", 1);
			udelay(100);
			mmc_pm_gpio_ctrl("bcm40181_shdn", 1);
			udelay(50);
			mmc_pm_gpio_ctrl("bcm40181_vdd_en", 1);
			printk("[bcm40181]: bcm40181_shdn=>1 !!\n");

#ifdef CUSTOMER_HW
			bcm_wlan_power_on(2);
#endif /* CUSTOMER_HW */

#ifdef CONFIG_MACH_MAHIMAHI
			wifi_set_power(1, 0);
#endif
			WL_ERROR(("=========== WLAN going back to live  ========\n"));
		}
		break;

		case WLAN_POWER_OFF:
		{
			WL_TRACE(("%s: call customer specific GPIO to turn off WL_REG_ON\n", __FUNCTION__));
			mmc_pm_gpio_ctrl("bcm40181_shdn", 0);
			mmc_pm_gpio_ctrl("bcm40181_vcc_en", 0);
			mmc_pm_gpio_ctrl("bcm40181_vdd_en", 0);
			sunximmc_rescan_card(3, 0);

#ifdef CUSTOMER_HW
			bcm_wlan_power_off(1);
#endif /* CUSTOMER_HW */
		}
		break;

		case WLAN_POWER_ON:
		{
			WL_TRACE(("%s: call customer specific GPIO to turn on WL_REG_ON\n", __FUNCTION__));
			mmc_pm_gpio_ctrl("bcm40181_vcc_en", 1);
			udelay(100);
			mmc_pm_gpio_ctrl("bcm40181_shdn", 1);
			udelay(50);
			mmc_pm_gpio_ctrl("bcm40181_vdd_en", 1);			

#ifdef CUSTOMER_HW
			bcm_wlan_power_on(1);
#endif /* CUSTOMER_HW */
			/* Lets customer power to get stable */
			OSL_DELAY(200);
            sunximmc_rescan_card(3, 1);
		}
		break;
	}
}
示例#15
0
void
dhd_customer_gpio_wlan_ctrl(int onoff)
#endif 

{
	switch (onoff) {
		case WLAN_RESET_OFF:
			WL_TRACE(("%s: call customer specific GPIO to insert WLAN RESET\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(2);
#endif 
			WL_ERROR(("=========== WLAN placed in RESET ========\n"));

#if defined(CONFIG_LGE_BCM432X_PATCH)
			if (gpio_get_value(CONFIG_BCM4325_GPIO_WL_RESET)) {
				if(irq_detect_ctrl)
					disable_irq(gpio_to_irq(CONFIG_BCM4325_GPIO_WL_RESET));
				gpio_set_value(CONFIG_BCM4325_GPIO_WL_RESET, 0);
			}
#endif 

		break;

		case WLAN_RESET_ON:
			WL_TRACE(("%s: callc customer specific GPIO to remove WLAN RESET\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(2);
#endif 
			WL_ERROR(("=========== WLAN going back to live  ========\n"));

#if defined(CONFIG_LGE_BCM432X_PATCH)
			if (!gpio_get_value(CONFIG_BCM4325_GPIO_WL_RESET)) { 
				gpio_set_value(CONFIG_BCM4325_GPIO_WL_RESET, 1);
				if(irq_detect_ctrl)
					enable_irq(gpio_to_irq(CONFIG_BCM4325_GPIO_WL_RESET));
			}
#endif 
		
		break;

		case WLAN_POWER_OFF:
			WL_TRACE(("%s: call customer specific GPIO to turn off WL_REG_ON\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(1);
#endif 

#if defined(CONFIG_LGE_BCM432X_PATCH)
#ifdef CONFIG_BCM4325_GPIO_WL_REGON
			if (!gpio_get_value(CONFIG_BCM4325_GPIO_BT_RESET)) {
				gpio_set_value(CONFIG_BCM4325_GPIO_WL_REGON, 0);
			}
#endif 

#endif 

		break;

		case WLAN_POWER_ON:
			WL_TRACE(("%s: call customer specific GPIO to turn on WL_REG_ON\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(1);
#endif 

#if defined(CONFIG_LGE_BCM432X_PATCH)

#ifdef CONFIG_BCM4325_GPIO_WL_REGON
			if (!gpio_get_value(CONFIG_BCM4325_GPIO_WL_REGON)) { 
				gpio_set_value(CONFIG_BCM4325_GPIO_WL_REGON, 1);
				mdelay(150);
			}
#endif 

#else 
			
			OSL_DELAY(500);
#endif 

		break;
	}
}
示例#16
0
/* Customer function to control hw specific wlan gpios */
void
dhd_customer_gpio_wlan_ctrl(int onoff)
{
#if defined CUSTOMER_ALLWINNER && defined CONFIG_SW_MMC_POWER_CONTROL
    unsigned int mod_sel = mmc_pm_get_mod_type();
#endif

	switch (onoff) {
		case WLAN_RESET_OFF:
			WL_TRACE(("%s: call customer specific GPIO to insert WLAN RESET\n",
				__FUNCTION__));
/* winner's power control */
#if defined CUSTOMER_ALLWINNER && defined CONFIG_SW_MMC_POWER_CONTROL
            switch (mod_sel)
            {
                case 2: /* usi bm01a */
                    mmc_pm_gpio_ctrl("usi_bm01a_wl_rst", 0);
                    mmc_pm_gpio_ctrl("usi_bm01a_wl_regon", 0);
                    break;
                case 5: /* swb b23 */
                    mmc_pm_gpio_ctrl("swbb23_wl_shdn", 0);
                    break;
                default:
                    printk("[bcm4329]: no wifi module matched !!\n");
            }
#endif

#ifdef CUSTOMER_HW
			bcm_wlan_power_off(2);
#endif /* CUSTOMER_HW */
#ifdef CUSTOMER_HW2
			wifi_set_power(0, 0);
#endif
			WL_ERROR(("=========== WLAN placed in RESET ========\n"));
		break;

		case WLAN_RESET_ON:
			WL_TRACE(("%s: callc customer specific GPIO to remove WLAN RESET\n",
				__FUNCTION__));
/* winner's power control */
#if defined CUSTOMER_ALLWINNER && defined CONFIG_SW_MMC_POWER_CONTROL
            switch (mod_sel)
            {
                case 2: /* usi bm01a */
                    mmc_pm_gpio_ctrl("usi_bm01a_wl_regon", 1);
                    mmc_pm_gpio_ctrl("usi_bm01a_wl_rst", 1);
                    break;
                case 5: /* swb b23 */
                    mmc_pm_gpio_ctrl("swbb23_wl_shdn", 1);
                    break;
                default:
                    printk("[bcm4329]: no wifi module matched !!\n");
            }
#endif

#ifdef CUSTOMER_HW
			bcm_wlan_power_on(2);
#endif /* CUSTOMER_HW */
#ifdef CUSTOMER_HW2
			wifi_set_power(1, 0);
#endif
			WL_ERROR(("=========== WLAN going back to live  ========\n"));
			
			OSL_DELAY(10000);
		break;

		case WLAN_POWER_OFF:
			WL_TRACE(("%s: call customer specific GPIO to turn off WL_REG_ON\n",
				__FUNCTION__));
/* winner's power control */
#if defined CUSTOMER_ALLWINNER && defined CONFIG_SW_MMC_POWER_CONTROL
            switch (mod_sel)
            {
                case 2: /* usi bm01a */
                    mmc_pm_gpio_ctrl("usi_bm01a_wl_rst", 0);
                    mmc_pm_gpio_ctrl("usi_bm01a_wl_regon", 0);
                    break;
                case 5: /* swb b23 */
                    mmc_pm_gpio_ctrl("swbb23_wl_shdn", 0);
                    break;
                default:
                    printk("[bcm4329]: no wifi module matched !!\n");
            }
            sw_mmc_rescan_card(3, 0);
#endif
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(1);
#endif /* CUSTOMER_HW */
		break;

		case WLAN_POWER_ON:
			WL_TRACE(("%s: call customer specific GPIO to turn on WL_REG_ON\n",
				__FUNCTION__));
/* winner's power control */
#if defined CUSTOMER_ALLWINNER && defined CONFIG_SW_MMC_POWER_CONTROL
            switch (mod_sel)
            {
                case 2: /* usi bm01a */
                    mmc_pm_gpio_ctrl("usi_bm01a_wl_regon", 1);
                    mmc_pm_gpio_ctrl("usi_bm01a_wl_rst", 1);
                    break;
                case 5: /* swb b23 */
                    mmc_pm_gpio_ctrl("swbb23_wl_shdn", 1);
                    break;
                default:
                    printk("[bcm4329]: no wifi module matched !!\n");
            }
#endif
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(1);
#endif /* CUSTOMER_HW */
			/* Lets customer power to get stable */
			OSL_DELAY(200);
#if defined CUSTOMER_ALLWINNER && defined CONFIG_SW_MMC_POWER_CONTROL
            sw_mmc_rescan_card(3, 1);
#endif
		break;
	}
}
/* Customer function to control hw specific wlan gpios */
void
dhd_customer_gpio_wlan_ctrl(int onoff)
{
#if defined CONFIG_MMC_SUNXI_POWER_CONTROL
    unsigned int mod_sel = mmc_pm_get_mod_type();
    if (mod_sel != 6) {
        printk("Config Error: not for huawei mw269x sdio wifi module\n");
    }
#endif
	switch (onoff) {
		case WLAN_RESET_OFF:
			WL_TRACE(("%s: call customer specific GPIO to insert WLAN RESET\n",
				__FUNCTION__));
#if defined CONFIG_MMC_SUNXI_POWER_CONTROL
            mmc_pm_gpio_ctrl("hw_mw269x_wl_enb", 0);
#endif
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(2);
#endif /* CUSTOMER_HW */
#ifdef CUSTOMER_HW2
			wifi_set_power(0, 0);
#endif
			WL_ERROR(("=========== WLAN placed in RESET ========\n"));
		break;

		case WLAN_RESET_ON:
			WL_TRACE(("%s: callc customer specific GPIO to remove WLAN RESET\n",
				__FUNCTION__));
#if defined CONFIG_MMC_SUNXI_POWER_CONTROL
            mmc_pm_gpio_ctrl("hw_mw269x_wl_enb", 1);
#endif
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(2);
#endif /* CUSTOMER_HW */
#ifdef CUSTOMER_HW2
			wifi_set_power(1, 0);
#endif
			WL_ERROR(("=========== WLAN going back to live  ========\n"));
			OSL_DELAY(10000);
		break;

		case WLAN_POWER_OFF:
			WL_TRACE(("%s: call customer specific GPIO to turn off WL_REG_ON\n",
				__FUNCTION__));
#if defined CONFIG_MMC_SUNXI_POWER_CONTROL
            mmc_pm_gpio_ctrl("hw_mw269x_wl_enb", 0);
            sunximmc_rescan_card(SDIOID, 0);
#endif
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(1);
#endif /* CUSTOMER_HW */
		break;

		case WLAN_POWER_ON:
			WL_TRACE(("%s: call customer specific GPIO to turn on WL_REG_ON\n",
				__FUNCTION__));
#if defined CONFIG_MMC_SUNXI_POWER_CONTROL
            mmc_pm_gpio_ctrl("hw_mw269x_wl_enb", 1);
#endif
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(1);
#endif /* CUSTOMER_HW */
			/* Lets customer power to get stable */
			OSL_DELAY(200);
#if defined CONFIG_MMC_SUNXI_POWER_CONTROL
            sunximmc_rescan_card(SDIOID, 1);
#endif /* CUSTOMER_HW */
		break;
	}
}
示例#18
0
/* Customer function to control hw specific wlan gpios */
void
dhd_customer_gpio_wlan_ctrl(int onoff)
{
	switch (onoff) {
		case WLAN_RESET_OFF:
			WL_TRACE(("%s: call customer specific GPIO to insert WLAN RESET\n",
				__FUNCTION__));
#if defined(CONFIG_LGE_BCM432X_PATCH)
			if (get_hw_rev() <= REV_1_2)
			{
				disable_irq(gpio_to_irq(TEGRA_GPIO_PQ5));	//by sjpark 11-03-10
				gpio_set_value(TEGRA_GPIO_PQ5, 0);
				interrupt_en_flag = 1;		//by sjpark 11-03-11
			}
			else
			{
				disable_irq(gpio_to_irq(TEGRA_GPIO_PU2));       //by sjpark 11-03-10
				gpio_set_value(TEGRA_GPIO_PU2, 0);
				interrupt_en_flag = 1;		//by sjpark 11-03-11
			}
#endif

#ifdef CUSTOMER_HW
			bcm_wlan_power_off(2);
#endif /* CUSTOMER_HW */
#ifdef CUSTOMER_HW2
			wifi_set_power(0, 0);
#endif
			WL_ERROR(("=========== WLAN placed in RESET ========\n"));
		break;

		case WLAN_RESET_ON:
			WL_TRACE(("%s: callc customer specific GPIO to remove WLAN RESET\n",
				__FUNCTION__));
#if defined(CONFIG_LGE_BCM432X_PATCH)
			if (get_hw_rev() <= REV_1_2)
				gpio_set_value(TEGRA_GPIO_PQ5, 1);
			else
				gpio_set_value(TEGRA_GPIO_PU2, 1);
			mdelay(150);
#endif
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(2);
#endif /* CUSTOMER_HW */
#ifdef CUSTOMER_HW2
			wifi_set_power(1, 0);
#endif
			WL_ERROR(("=========== WLAN going back to live  ========\n"));
		break;

		case WLAN_POWER_OFF:
			WL_TRACE(("%s: call customer specific GPIO to turn off WL_REG_ON\n",
				__FUNCTION__));
#if defined(CONFIG_LGE_BCM432X_PATCH)
			if (get_hw_rev() <= REV_1_2)
			{
				gpio_set_value(TEGRA_GPIO_PQ5, 0);
				if(interrupt_en_flag == 1){
					printk("[sj-debug] POWER OFF : enable irq.\n");
					enable_irq(gpio_to_irq(TEGRA_GPIO_PQ5));	//by sjpark 11-03-10
					interrupt_en_flag = 0;		//by sjpark 11-03-11
				}
			}
			else
			{
				gpio_set_value(TEGRA_GPIO_PU2, 0);
				if(interrupt_en_flag == 1){
					printk("[sj-debug] POWER OFF : enable irq.\n");
					enable_irq(gpio_to_irq(TEGRA_GPIO_PU2));	//by sjpark 11-03-10
					interrupt_en_flag = 0;		//by sjpark 11-03-11
				}
			}

			mdelay(150);
/* always turn on 32k clock */
//			clk_disable(wifi_32k_clk);

#endif
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(1);
#endif /* CUSTOMER_HW */
		break;

		case WLAN_POWER_ON:
			WL_TRACE(("%s: call customer specific GPIO to turn on WL_REG_ON\n",
				__FUNCTION__));
#if defined(CONFIG_LGE_BCM432X_PATCH)
/* Always turn on 32k clock
			wifi_32k_clk = clk_get_sys(NULL, "blink");
			if (IS_ERR(wifi_32k_clk)) {
				pr_err("%s: unable to get blink clock\n", __func__);
				//return PTR_ERR(wifi_32k_clk);
			}

			clk_enable(wifi_32k_clk);
			printk("[Wi-Fi] wifi_32k_clk is enabled\n");
*/
			if (get_hw_rev() <= REV_1_2) {
				gpio_set_value(TEGRA_GPIO_PQ5, 1);
			} else {
				gpio_set_value(TEGRA_GPIO_PU2, 1);
			}
			mdelay(150);

#endif
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(1);
#endif /* CUSTOMER_HW */
			/* Lets customer power to get stable */
			OSL_DELAY(200);
		break;
	}
}
示例#19
0
/* Customer function to control hw specific wlan gpios */
void
dhd_customer_gpio_wlan_ctrl(int onoff)
{
	switch (onoff) {
		case WLAN_RESET_OFF:
			WL_TRACE(("%s: call customer specific GPIO to insert WLAN RESET\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(2);
#endif /* CUSTOMER_HW */
#if defined(CUSTOMER_HW2)
			wifi_set_power(0, WIFI_TURNOFF_DELAY);
#endif
#ifdef CUSTOMER_HW_AMLOGIC
			//extern_wifi_set_enable(0);
#endif /* CUSTOMER_HW_AMLOGIC */
			WL_ERROR(("=========== WLAN placed in RESET ========\n"));
		break;

		case WLAN_RESET_ON:
			WL_TRACE(("%s: call customer specific GPIO to remove WLAN RESET\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(2);
			OSL_DELAY(200);
#endif /* CUSTOMER_HW */
#if defined(CUSTOMER_HW2)
			wifi_set_power(1, 200);
#endif
#ifdef CUSTOMER_HW_AMLOGIC
			extern_wifi_set_enable(0);
			mdelay(200);
			extern_wifi_set_enable(1);
			mdelay(200);
			sdio_reinit();
#endif /* CUSTOMER_HW_AMLOGIC */
			mdelay(100);
			WL_ERROR(("=========== WLAN going back to live  ========\n"));
		break;

		case WLAN_POWER_OFF:
			WL_TRACE(("%s: call customer specific GPIO to turn off WL_REG_ON\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(1);
#endif /* CUSTOMER_HW */

#ifdef CUSTOMER_HW_AMLOGIC
			extern_wifi_set_enable(0);
#endif /* CUSTOMER_HW_AMLOGIC */
			WL_ERROR(("=========== WLAN placed in POWER OFF ========\n"));
		break;

		case WLAN_POWER_ON:
			WL_TRACE(("%s: call customer specific GPIO to turn on WL_REG_ON\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(1);
#endif /* CUSTOMER_HW */

#ifdef CUSTOMER_HW_AMLOGIC
			extern_wifi_set_enable(0);
			mdelay(200);
			extern_wifi_set_enable(1);
			mdelay(200);
			sdio_reinit();
#endif /* CUSTOMER_HW_AMLOGIC */
			/* Lets customer power to get stable */
			OSL_DELAY(200);
			WL_ERROR(("=========== WLAN placed in POWER ON ========\n"));
		break;
	}
}
示例#20
0
/* Customer function to control hw specific wlan gpios */
void
dhd_customer_gpio_wlan_ctrl(int onoff)
{
	switch (onoff) {
		case WLAN_RESET_OFF:
			WL_TRACE(("%s: call customer specific GPIO to insert WLAN RESET\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(2);
#endif /* CUSTOMER_HW */
#ifdef CONFIG_MACH_MAHIMAHI
			wifi_set_power(0, 0);
#endif
			WL_ERROR(("=========== WLAN placed in RESET ========\n"));

/* LGE_CHANGE_S [[email protected]] 2009-05-14, support start/stop */
#if defined(CONFIG_LGE_BCM432X_PATCH) && defined(CONFIG_ARCH_MSM)
            if (gpio_get_value(CONFIG_BCM4330_GPIO_WL_RESET)) {
                disable_irq(gpio_to_irq(CONFIG_BCM4330_GPIO_WL_RESET));
                gpio_set_value(CONFIG_BCM4330_GPIO_WL_RESET, 0);
            }
#endif /* defined(CONFIG_LGE_BCM432X_PATCH) && defined(CONFIG_ARCH_MSM) */
/* LGE_CHANGE_E [[email protected]] 2009-05-14, support start/stop */

		break;

		case WLAN_RESET_ON:
			WL_TRACE(("%s: callc customer specific GPIO to remove WLAN RESET\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(2);
#endif /* CUSTOMER_HW */
#ifdef CONFIG_MACH_MAHIMAHI
			wifi_set_power(1, 0);
#endif
			WL_ERROR(("=========== WLAN going back to live  ========\n"));

/* LGE_CHANGE_S [[email protected]] 2009-05-14, support start/stop */
#if defined(CONFIG_LGE_BCM432X_PATCH) && defined(CONFIG_ARCH_MSM)
            if (!gpio_get_value(CONFIG_BCM4330_GPIO_WL_RESET)) {
                gpio_set_value(CONFIG_BCM4330_GPIO_WL_RESET, 1);

                mdelay(150);

                enable_irq(gpio_to_irq(CONFIG_BCM4330_GPIO_WL_RESET));
            }
#endif /* defined(CONFIG_LGE_BCM432X_PATCH) && defined(CONFIG_ARCH_MSM) */
/* LGE_CHANGE_E [[email protected]] 2009-05-14, support start/stop */

		break;

		case WLAN_POWER_OFF:
			WL_TRACE(("%s: call customer specific GPIO to turn off WL_REG_ON\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_off(1);
#endif /* CUSTOMER_HW */

/* LGE_CHANGE_S [[email protected]] 2009-03-05, for gpio set in dhd_linux */
#if defined(CONFIG_LGE_BCM432X_PATCH) && defined(CONFIG_ARCH_MSM)
			//gpio_tlmm_config(GPIO_CFG(CONFIG_BCM4330_GPIO_WL_RESET, 0, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_2MA), GPIO_ENABLE);
			if (!gpio_get_value(CONFIG_BCM4330_GPIO_WL_RESET)) {
				gpio_set_value(CONFIG_BCM4330_GPIO_WL_RESET, 1);
				enable_irq(gpio_to_irq(CONFIG_BCM4330_GPIO_WL_RESET));
			}
			gpio_set_value(CONFIG_BCM4330_GPIO_WL_RESET, 0);
			//gpio_tlmm_config(GPIO_CFG(CONFIG_BCM4330_GPIO_WL_RESET, 0, GPIO_INPUT, GPIO_NO_PULL, GPIO_2MA), GPIO_ENABLE);
#endif /* defined(CONFIG_LGE_BCM432X_PATCH) && defined(CONFIG_ARCH_MSM) */
/* LGE_CHANGE_E [[email protected]] 2009-03-05, for gpio set in dhd_linux */

		break;

		case WLAN_POWER_ON:
			WL_TRACE(("%s: call customer specific GPIO to turn on WL_REG_ON\n",
				__FUNCTION__));
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(1);
#endif /* CUSTOMER_HW */


/* LGE_CHANGE_S [[email protected]] 2009-03-05, for gpio set in dhd_linux */
#if defined(CONFIG_LGE_BCM432X_PATCH) && defined(CONFIG_ARCH_MSM)
	        gpio_set_value(CONFIG_BCM4330_GPIO_WL_RESET, 1);
#endif /* defined(CONFIG_LGE_BCM432X_PATCH) && defined(CONFIG_ARCH_MSM) */
/* LGE_CHANGE_E [[email protected]] 2009-03-05, for gpio set in dhd_linux */

			/* Lets customer power to get stable */
			OSL_DELAY(200);
		break;
	}
}