[PATCH v2 10/32] swim: Add track zero recalibration delay
Finn Thain <[email protected]>
| Newsgroups | org.kernel.vger.linux-m68k,org.kernel.vger.linux-block,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <45b77aeeec9775000f46750766ae1186f76c879e.1786929430.git.fthain@linux-m68k.org> |
The UPD72070 spec indicates that the track zero sensor can take 3 ms to stabilize following a STEP command so add a call to msleep(). Remove the duplicate swim_readbit() call as there's no need for that once the sensor signal has stabilized. Reviewed-by: Laurent Vivier <[email protected]> Fixes: 8852ecd97488 ("m68k: mac - Add SWIM floppy support") Signed-off-by: Finn Thain <[email protected]> --- drivers/block/swim.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/drivers/block/swim.c b/drivers/block/swim.c index 9abf93bc0980..c9cd0748c878 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -402,16 +402,15 @@ static inline int swim_track00(struct swim __iomem *base) for (try = 0; try < 100; try++) { swim_select(base, RELAX); + msleep(3); + if (swim_readbit(base, TRACK_ZERO)) - break; + return 0; if (swim_step(base)) - return -1; + break; } - if (swim_readbit(base, TRACK_ZERO)) - return 0; - pr_err("swim: track zero recalibration failed\n"); return -1; } -- 2.52.0