lkml.org 
[lkml]   [2009]   [Jul]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/2] mg_disk: fix reading invalid status when use polling driver
    Date
    When using polling driver, little delay is required to access
    status register. Without this, host might read invalid status.

    Signed-off-by: unsik Kim <donari75@gmail.com>
    ---
    drivers/block/mg_disk.c | 10 ++++++++++
    1 files changed, 10 insertions(+), 0 deletions(-)

    diff --git a/drivers/block/mg_disk.c b/drivers/block/mg_disk.c
    index 26371d5..6d7fbaa 100644
    --- a/drivers/block/mg_disk.c
    +++ b/drivers/block/mg_disk.c
    @@ -218,6 +218,16 @@ static unsigned int mg_wait(struct mg_host *host, u32 expect, u32 msec)
    host->error = MG_ERR_NONE;
    expire = jiffies + msecs_to_jiffies(msec);

    + /* These 2 times dummy status read prevents reading invalid
    + * status. A very little time (3 times of mflash operating clk)
    + * is required for busy bit is set. Use dummy read instead of
    + * busy wait, because mflash's PLL is machine dependent.
    + */
    + if (prv_data->use_polling) {
    + status = inb((unsigned long)host->dev_base + MG_REG_STATUS);
    + status = inb((unsigned long)host->dev_base + MG_REG_STATUS);
    + }
    +
    status = inb((unsigned long)host->dev_base + MG_REG_STATUS);

    do {
    --
    1.6.0.6


    \
     
     \ /
      Last update: 2009-07-23 07:03    [W:0.021 / U:0.016 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site