summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorBartosz Markowski <bartosz.markowski@tieto.com>2011-12-06 12:46:29 +0100
committerPhilippe Langlais <philippe.langlais@stericsson.com>2012-05-22 11:06:34 +0200
commit96d472636ea3216270ec94f6a0c5c896dfcf8002 (patch)
tree32b321738ed779bb72a98fc0afc71f9e02ee1a6f /arch
parent5b3b5e0cc12f6ad8d7a4e3d96f29b4c06dc66a7e (diff)
u5500: cw1200: Remove requesting SDIO pins
The SDIO pins belongs to the SDIO driver and should be handled by the SDIO driver only. The reason that it has worked up until now is that the SDIO driver has just started using pm runtime. Since both WLAN and SDIO framework enable the pins, the number of users is set to two. SDIO tries to release the pins (after 50 ms of inactivity in order to save power), the usage count does not go down to 0 and therefore the pins are not reconfigured to GPIOs, which they must be when PL18X is not driving the pins due to power down). ST-Ericsson ID: 375493 ST-Ericsson Linux next: NA ST-Ericsson FOSS-OUT ID: NA Change-Id: Ibe3dfd32cb16a9d629a8c405e5723aec787a5ae6 Signed-off-by: Bartosz Markowski <bartosz.markowski@tieto.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/41183 Reviewed-by: QATOOLS Reviewed-by: QABUILD Reviewed-by: Srinidhi KASAGAR <srinidhi.kasagar@stericsson.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-ux500/board-u5500-wlan.c43
1 files changed, 2 insertions, 41 deletions
diff --git a/arch/arm/mach-ux500/board-u5500-wlan.c b/arch/arm/mach-ux500/board-u5500-wlan.c
index 8459ebd6aac..3683f3ad8bb 100644
--- a/arch/arm/mach-ux500/board-u5500-wlan.c
+++ b/arch/arm/mach-ux500/board-u5500-wlan.c
@@ -12,7 +12,6 @@
#include <linux/regulator/consumer.h>
#include <asm/mach-types.h>
#include <mach/irqs.h>
-#include <plat/pincfg.h>
#include "pins.h"
#include <mach/cw1200_plat.h>
@@ -44,38 +43,8 @@ const struct cw1200_platform_data *cw1200_u5500_get_platform_data(void)
}
EXPORT_SYMBOL_GPL(cw1200_u5500_get_platform_data);
-static int cw1200_pins_enable(bool enable)
-{
- struct ux500_pins *pins = NULL;
- int ret = 0;
-
- pins = ux500_pins_get("sdi3");
-
- if (!pins) {
- printk(KERN_ERR "cw1200: Pins are not found. "
- "Check platform data.\n");
- return -ENOENT;
- }
-
- if (enable)
- ret = ux500_pins_enable(pins);
- else
- ret = ux500_pins_disable(pins);
-
- if (ret)
- printk(KERN_ERR "cw1200: Pins can not be %s: %d.\n",
- enable ? "enabled" : "disabled",
- ret);
-
- ux500_pins_put(pins);
-
- return ret;
-}
-
int __init u5500_wlan_init(void)
{
- int ret;
-
if (machine_is_u5500()) {
cw1200_device.num_resources = ARRAY_SIZE(cw1200_u5500_resources);
cw1200_device.resource = cw1200_u5500_resources;
@@ -92,18 +61,10 @@ int __init u5500_wlan_init(void)
cw1200_device.dev.release = cw1200_release;
- ret = cw1200_pins_enable(true);
- if (WARN_ON(ret))
- return ret;
-
- ret = platform_device_register(&cw1200_device);
- if (ret)
- cw1200_pins_enable(false);
-
- return ret;
+ return platform_device_register(&cw1200_device);
}
static void cw1200_release(struct device *dev)
{
- cw1200_pins_enable(false);
+
}