static int wifi_probe(struct platform_device *pdev)
{
	struct wifi_platform_data *wifi_ctrl =
		(struct wifi_platform_data *)(pdev->dev.platform_data);

	wifi_irqres = platform_get_resource_byname(pdev, IORESOURCE_IRQ, "bcmdhd_wlan_irq");
	if (wifi_irqres == NULL)
		wifi_irqres = platform_get_resource_byname(pdev,
			IORESOURCE_IRQ, "bcm4329_wlan_irq");
	wifi_control_data = wifi_ctrl;
	wifi_set_power(1, 0);	/* Power On */
	wifi_set_carddetect(1);	/* CardDetect (0->1) */

	up(&wifi_control_sem);
	return 0;
}
Ejemplo n.º 2
0
static int wifi_probe(struct platform_device *pdev)
{
	struct wifi_platform_data *wifi_ctrl =
		(struct wifi_platform_data *)(pdev->dev.platform_data);
	int wifi_wake_gpio = 0;

	DBG_871X("## %s\n", __FUNCTION__);
	wifi_irqres = platform_get_resource_byname(pdev, IORESOURCE_IRQ, "bcmdhd_wlan_irq");

	if (wifi_irqres == NULL)
		wifi_irqres = platform_get_resource_byname(pdev,
			IORESOURCE_IRQ, "bcm4329_wlan_irq");
	else
		wifi_wake_gpio = wifi_irqres->start;

#ifdef CONFIG_GPIO_WAKEUP
	printk("%s: gpio:%d wifi_wake_gpio:%d\n", __func__,
			wifi_irqres->start, wifi_wake_gpio);

	if (wifi_wake_gpio > 0) {
#ifdef CONFIG_PLATFORM_INTEL_BYT
		wifi_configure_gpio();
#else //CONFIG_PLATFORM_INTEL_BYT
		gpio_request(wifi_wake_gpio, "oob_irq");
		gpio_direction_input(wifi_wake_gpio);
		oob_irq = gpio_to_irq(wifi_wake_gpio);
#endif //CONFIG_PLATFORM_INTEL_BYT
		printk("%s oob_irq:%d\n", __func__, oob_irq);
	}
	else if(wifi_irqres)
	{
		oob_irq = wifi_irqres->start;
		printk("%s oob_irq:%d\n", __func__, oob_irq);
	}
#endif
	wifi_control_data = wifi_ctrl;

	wifi_set_power(1, 0);	/* Power On */
	wifi_set_carddetect(1);	/* CardDetect (0->1) */

	up(&wifi_control_sem);
	return 0;
}
Ejemplo n.º 3
0
void META_WIFI_deinit(void)
{
    int count = 20; /* wait at most 10 seconds for completion */

    if (wifi_skfd > 0) {
        closeNetHandle(wifi_skfd);
        wifi_skfd = -1;
    }

    if (wifi_rmmod(DRIVER_MODULE_NAME) == 0) {
        while (count-- > 0) {
            if (!wifi_is_loaded())
                break;
            usleep(500000);
        }
        sched_yield();
        wifi_set_power(0);
    }
    wifi_init = 0;
    return;
}
Ejemplo n.º 4
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;
	}
}
/* 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;
	}
}
Ejemplo n.º 6
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;
	}
}
Ejemplo n.º 7
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)
			//star_wifi_power(0);
			gpio_set_value(177, 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)
			//star_wifi_power(1);
			gpio_set_value(177, 1);
			mdelay(200);
#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)
			//star_wifi_power(0);
			gpio_set_value(177, 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_LGE_BCM432X_PATCH)

			printk("[Wi-Fi] WLAN_RESET : %d\n",	gpio_get_value(177));
			//star_wifi_power(1);
			gpio_set_value(177, 1);
			mdelay(200);
			printk("[Wi-Fi] WLAN_RESET : %d\n",	gpio_get_value(177));
#endif
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(1);
#endif /* CUSTOMER_HW */
			/* Lets customer power to get stable */
			OSL_DELAY(500);
		break;
	}
}
/* Customer function to control hw specific wlan gpios */
void
dhd_customer_gpio_wlan_ctrl(int onoff)
{
    static int first = 1;
    static int sdc_id = 1;

    script_item_value_type_e type;
    script_item_u val;

    if (first == 1) {
        type = script_get_item("wifi_para", "wifi_sdc_id", &val);
        if (SCIRPT_ITEM_VALUE_TYPE_INT != type) {
            WL_ERROR(("failed to fetch sdio card's sdcid\n"));
            return -1;
        }
        sdc_id = val.val;
        first = 0;
    }

    switch (onoff) {
    case WLAN_RESET_OFF:
        WL_TRACE(("%s: call customer specific GPIO to insert WLAN RESET\n",
                  __FUNCTION__));
#ifdef CUSTOMER_HW
        wifi_pm_power(0);
#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
        wifi_pm_power(1);
#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
        wifi_pm_power(0);
        sw_mci_rescan_card(sdc_id, 0);
#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
        wifi_pm_power(1);
        sw_mci_rescan_card(sdc_id, 1);
        /* Lets customer power to get stable */
#endif /* CUSTOMER_HW */
        mdelay(100);
        WL_ERROR(("=========== WLAN placed in POWER ON ========\n"));
        break;
    }
}
Ejemplo n.º 9
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;
	}
}
Ejemplo n.º 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_SAMSUNG
			//bcm_wlan_power_off(2);
                        wlan_setup_power(0, 2);
#endif /* CUSTOMER_HW */
#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_SAMSUNG
			//bcm_wlan_power_on(2);
                        wlan_setup_power(1, 2);
#endif /* CUSTOMER_HW */
#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_SAMSUNG
			//bcm_wlan_power_off(1);
                        wlan_setup_power(0, 1);
#endif /* CUSTOMER_HW */
#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_SAMSUNG
			//bcm_wlan_power_on(1);
                        wlan_setup_power(1, 1);
#endif /* CUSTOMER_HW */
#ifdef CUSTOMER_HW
			bcm_wlan_power_on(1);
			/* Lets customer power to get stable */
			OSL_DELAY(50);
#endif /* CUSTOMER_HW */
		break;
	}
}
Ejemplo n.º 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;
	}
}
Ejemplo n.º 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;
	}
}
Ejemplo n.º 13
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;
	}
}
Ejemplo n.º 14
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;
	}
}
/* 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;
	}
}