From c81d6835ff70b5f4132d1cef32329e4f0ecde220 Mon Sep 17 00:00:00 2001 From: Bartosz Markowski Date: Wed, 7 Dec 2011 11:36:21 +0100 Subject: u5500: WLAN: Adds prcmu_ctrl callback Adds prcmu_ctrl callback to u5500 WLAN platform data file. In u5500 platform cw1200 reset pin is connected to PRCMU. prcmu_resetout is used to set/unset RESOUT2_N_PIN by writing to PRCMU register (platform callback) ST-Ericsson Linux next: NA ST-Ericsson ID: 375493 ST-Ericsson FOSS-OUT ID: Trivial Change-Id: Iedfa62dcec0b0bb9bc67abb6ff8dc00b1b78f375 Signed-off-by: Bartosz Markowski Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/41359 Reviewed-by: QATOOLS Reviewed-by: QABUILD Reviewed-by: Srinidhi KASAGAR --- arch/arm/mach-ux500/board-u5500-wlan.c | 21 ++++++++++++++++++++- arch/arm/mach-ux500/include/mach/cw1200_plat.h | 2 ++ 2 files changed, 22 insertions(+), 1 deletion(-) (limited to 'arch') diff --git a/arch/arm/mach-ux500/board-u5500-wlan.c b/arch/arm/mach-ux500/board-u5500-wlan.c index 3683f3ad8bb..fd64089108a 100644 --- a/arch/arm/mach-ux500/board-u5500-wlan.c +++ b/arch/arm/mach-ux500/board-u5500-wlan.c @@ -10,12 +10,16 @@ #include #include #include +#include #include #include #include "pins.h" #include + static void cw1200_release(struct device *dev); +static int cw1200_prcmu_ctrl(const struct cw1200_platform_data *pdata, + bool enable); static struct resource cw1200_u5500_resources[] = { { @@ -26,7 +30,9 @@ static struct resource cw1200_u5500_resources[] = { }, }; -static struct cw1200_platform_data cw1200_u5500_platform_data = { 0 }; +static struct cw1200_platform_data cw1200_u5500_platform_data = { + .prcmu_ctrl = cw1200_prcmu_ctrl, +}; static struct platform_device cw1200_device = { .name = "cw1200_wlan", @@ -43,6 +49,19 @@ const struct cw1200_platform_data *cw1200_u5500_get_platform_data(void) } EXPORT_SYMBOL_GPL(cw1200_u5500_get_platform_data); +static int cw1200_prcmu_ctrl(const struct cw1200_platform_data *pdata, + bool enable) +{ + int ret; + + if (enable) + ret = prcmu_resetout(2, 1); + else + ret = prcmu_resetout(2, 0); + + return ret; +} + int __init u5500_wlan_init(void) { if (machine_is_u5500()) { diff --git a/arch/arm/mach-ux500/include/mach/cw1200_plat.h b/arch/arm/mach-ux500/include/mach/cw1200_plat.h index 4d30dbd3979..3a73183c9f8 100644 --- a/arch/arm/mach-ux500/include/mach/cw1200_plat.h +++ b/arch/arm/mach-ux500/include/mach/cw1200_plat.h @@ -18,6 +18,8 @@ struct cw1200_platform_data { bool enable); int (*clk_ctrl)(const struct cw1200_platform_data *pdata, bool enable); + int (*prcmu_ctrl)(const struct cw1200_platform_data *pdata, + bool enable); }; /* Declaration only. Should be implemented in arch/xxx/mach-yyy */ -- cgit v1.2.3