diff options
author | Dmitry Tarnyagin <dmitry.tarnyagin@stericsson.com> | 2011-06-15 15:00:52 +0200 |
---|---|---|
committer | Philippe LANGLAIS <philippe.langlais@stericsson.com> | 2011-10-12 13:40:25 +0200 |
commit | 033b8d2a992e339e2dfdeb83144efa41695e4068 (patch) | |
tree | ff3bc2b31053de9cf93c04272cd685e9de41c66c | |
parent | ec5783dca7dc3b075c9fcb018838df7308ec32e5 (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.c | 11 |
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; } |