lkml.org 
[lkml]   [2017]   [Sep]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 03/10] spi-nor: intel-spi: Fix broken software sequencing codes
    Date
    There are two bugs in current intel_spi_sw_cycle():

    - The 'data byte count' field should be the number of bytes
    transferred minus 1
    - SSFSTS_CTL is the offset from ispi->sregs, not ispi->base

    Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
    Cc: <stable@vger.kernel.org> # v4.11+
    Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>

    ---

    Changes in v2:
    - Add stable kernel tags in the commit message

    drivers/mtd/spi-nor/intel-spi.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    diff --git a/drivers/mtd/spi-nor/intel-spi.c b/drivers/mtd/spi-nor/intel-spi.c
    index 07626ca..263c6ab 100644
    --- a/drivers/mtd/spi-nor/intel-spi.c
    +++ b/drivers/mtd/spi-nor/intel-spi.c
    @@ -426,7 +426,7 @@ static int intel_spi_sw_cycle(struct intel_spi *ispi, u8 opcode, int len)
    if (ret < 0)
    return ret;

    - val = (len << SSFSTS_CTL_DBC_SHIFT) | SSFSTS_CTL_DS;
    + val = ((len - 1) << SSFSTS_CTL_DBC_SHIFT) | SSFSTS_CTL_DS;
    val |= ret << SSFSTS_CTL_COP_SHIFT;
    val |= SSFSTS_CTL_FCERR | SSFSTS_CTL_FDONE;
    val |= SSFSTS_CTL_SCGO;
    @@ -436,7 +436,7 @@ static int intel_spi_sw_cycle(struct intel_spi *ispi, u8 opcode, int len)
    if (ret)
    return ret;

    - status = readl(ispi->base + SSFSTS_CTL);
    + status = readl(ispi->sregs + SSFSTS_CTL);
    if (status & SSFSTS_CTL_FCERR)
    return -EIO;
    else if (status & SSFSTS_CTL_AEL)
    --
    2.9.2
    \
     
     \ /
      Last update: 2017-09-11 11:40    [W:4.089 / U:0.296 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site