summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Tarnyagin <dmitry.tarnyagin@stericsson.com>2011-06-15 15:00:52 +0200
committerPhilippe LANGLAIS <philippe.langlais@stericsson.com>2011-10-12 13:40:25 +0200
commit033b8d2a992e339e2dfdeb83144efa41695e4068 (patch)
treeff3bc2b31053de9cf93c04272cd685e9de41c66c
parentec5783dca7dc3b075c9fcb018838df7308ec32e5 (diff)
cw1200: Document and optimize device reset sequence.
Some devices have problems with reset if WRESET is active (low) when device is being powered on. Additional WRESET cycle is required for these devices. Change-Id: I117c1776e3819260ec7f4aa4e0d14174eb3f7e82 Signed-off-by: Dmitry Tarnyagin <dmitry.tarnyagin@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/25624 Reviewed-by: Philippe LANGLAIS <philippe.langlais@stericsson.com> Reviewed-by: Robert MARKLUND <robert.marklund@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/27063 Reviewed-by: Bartosz MARKOWSKI <bartosz.markowski@tieto.com> Tested-by: Bartosz MARKOWSKI <bartosz.markowski@tieto.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/33477
-rw-r--r--drivers/staging/cw1200/cw1200_sdio.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/staging/cw1200/cw1200_sdio.c b/drivers/staging/cw1200/cw1200_sdio.c
index 0438c5ec7cb..ae07267dc99 100644
--- a/drivers/staging/cw1200/cw1200_sdio.c
+++ b/drivers/staging/cw1200/cw1200_sdio.c
@@ -258,12 +258,19 @@ static int cw1200_sdio_on(const struct cw1200_platform_data *pdata)
{
const struct resource *reset = pdata->reset;
gpio_request(reset->start, reset->name);
+ gpio_direction_output(reset->start, 1);
+ /* It is not stated in the datasheet, but at least some of devices
+ * have problems with reset if this stage is omited. */
+ msleep(50);
gpio_direction_output(reset->start, 0);
+ /* A valid reset shall be obtained by maintaining WRESETN
+ * active (low) for at least two cycles of LP_CLK after VDDIO
+ * is stable within it operating range. */
msleep(1);
gpio_set_value(reset->start, 1);
- /* The host should wait 30 ms after the WRESETN release
+ /* The host should wait 32 ms after the WRESETN release
* for the on-chip LDO to stabilize */
- msleep(30);
+ msleep(32);
cw1200_detect_card(pdata);
return 0;
}