diff options
Diffstat (limited to 'drivers/net/wireless/bcmdhd/hardkernel.c')
-rw-r--r-- | drivers/net/wireless/bcmdhd/hardkernel.c | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/drivers/net/wireless/bcmdhd/hardkernel.c b/drivers/net/wireless/bcmdhd/hardkernel.c new file mode 100644 index 000000000000..088f3e33e87c --- /dev/null +++ b/drivers/net/wireless/bcmdhd/hardkernel.c @@ -0,0 +1,114 @@ +/* +* Customer code to add GPIO control during WLAN start/stop +* Copyright (C) 1999-2011, Broadcom Corporation +* +* Unless you and Broadcom execute a separate written software license +* agreement governing use of this software, this software is licensed to you +* under the terms of the GNU General Public License version 2 (the "GPL"), +* available at http://www.broadcom.com/licenses/GPLv2.php, with the +* following added to such license: +* +* As a special exception, the copyright holders of this software give you +* permission to link this software with independent modules, and to copy and +* distribute the resulting executable under terms of your choice, provided that +* you also meet, for each linked independent module, the terms and conditions of +* the license of that module. An independent module is a module which is not +* derived from this software. The special exception does not apply to any +* modifications of the software. +* +* Notwithstanding the above, under no circumstances may you combine this +* software in any way with any other Broadcom software provided under a license +* other than the GPL, without Broadcom's express prior written consent. +* +* $Id: dhd_custom_gpio.c,v 1.2.42.1 2010-10-19 00:41:09 Exp $ +*/ + +#include <typedefs.h> +#include <linuxver.h> +#include <osl.h> +#include <bcmutils.h> + +#include <dngl_stats.h> +#include <dhd.h> + +#include <wlioctl.h> +#include <wl_iw.h> + +#include <mach/gpio.h> +#include <mach/regs-gpio.h> +#include <plat/gpio-cfg.h> + +#ifdef CUSTOMER_HW +//---------------------------------------------------------------------------------------------------------------- +// +// ADD Hardkernel +// +//---------------------------------------------------------------------------------------------------------------- +#if defined(CONFIG_MACH_ODROID_4X12)||defined(CONFIG_MACH_ODROID_4210) +#include <plat/sdhci.h> +#include <plat/devs.h> // modifed plat-samsung/dev-hsmmcX.c EXPORT_SYMBOL(s3c_device_hsmmcx) added + +#if defined(CONFIG_MACH_ODROID_4210) + #define sdmmc_channel s3c_device_hsmmc0 +#endif + +#if defined(CONFIG_MACH_ODROID_4X12) + #define sdmmc_channel s3c_device_hsmmc3 +#endif + +void bcm_wlan_power_on(int flag) +{ + if (flag == 1) { + printk("======== PULL WL_REG_ON HIGH! ========\n"); + gpio_set_value(EXYNOS4_GPK1(0), 0); + mdelay(100); + gpio_set_value(EXYNOS4_GPK1(0), 1); + mdelay(100); + printk("======== Enable sdhci presence change! ========\n"); + sdhci_s3c_force_presence_change(&sdmmc_channel, 1); + } + else { + printk("======== PULL WL_REG_ON HIGH! (flag = %d) ========\n", flag); + gpio_set_value(EXYNOS4_GPK1(0), 1); + mdelay(100); + } +} + +void bcm_wlan_power_off(int flag) +{ + if (flag == 1) { + printk("======== Disable sdhci presence change! ========\n"); + sdhci_s3c_force_presence_change(&sdmmc_channel, 0); + mdelay(100); + printk("======== PULL WL_REG_ON LOW! ========\n"); + gpio_set_value(EXYNOS4_GPK1(0), 0); + mdelay(100); + } + else { + printk("======== PULL WL_REG_ON LOW! (flag = %d) ========\n", flag); + gpio_set_value(EXYNOS4_GPK1(0), 0); + mdelay(100); + } +} +#else + +void bcm_wlan_power_on(int flag) +{ + printk("%s : device power on error!! (no sdmmc define) (flag = %d)\n", __func__, flag); +} + +void bcm_wlan_power_off(int flag) +{ + printk("%s : device power off error!! (no sdmmc define) (flag = %d)\n", __func__, flag); +} + +#endif //#if defined(CONFIG_MACH_ODROID_4X12)||defined(CONFIG_MACH_ODROID_4210) +//---------------------------------------------------------------------------------------------------------------- +// +// END Hardkernel +// +//---------------------------------------------------------------------------------------------------------------- +EXPORT_SYMBOL(bcm_wlan_power_off); +EXPORT_SYMBOL(bcm_wlan_power_on); + +#endif /* CUSTOMER_HW */ |