diff options
author | Dmitry Tarnyagin <dmitry.tarnyagin@stericsson.com> | 2011-06-15 15:00:52 +0200 |
---|---|---|
committer | Robert Marklund <robert.marklund@stericsson.com> | 2011-10-05 12:16:19 +0200 |
commit | a85d2200bae1f17dfe0b73c42bc4a55e6d44abf0 (patch) | |
tree | 1242852c2c56a9dbc26c15e59301d68771e68264 | |
parent | cf348b23c42e71ff4a571a6f2861165d09fb9cd7 (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>
-rw-r--r-- | drivers/staging/cw1200/cw1200_sdio.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/staging/cw1200/cw1200_sdio.c b/drivers/staging/cw1200/cw1200_sdio.c index 235ac67cb75..e106129f4a3 100644 --- a/drivers/staging/cw1200/cw1200_sdio.c +++ b/drivers/staging/cw1200/cw1200_sdio.c @@ -259,10 +259,18 @@ 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); - msleep(100); + /* 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_set_value(reset->start, 0); - msleep(100); + /* 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 + * for the on-chip LDO to stabilize */ + msleep(30); cw1200_detect_card(pdata); return 0; } |