lkml.org 
[lkml]   [2020]   [Aug]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 159/228] mtd: rawnand: qcom: avoid write to unavailable register
    Date
    From: Sivaprakash Murugesan <sivaprak@codeaurora.org>

    commit 443440cc4a901af462239d286cd10721aa1c7dfc upstream.

    SFLASHC_BURST_CFG is only available on older ipq NAND platforms, this
    register has been removed when the NAND controller got implemented in
    the qpic controller.

    Avoid writing this register on devices which are based on qpic NAND
    controller.

    Fixes: dce84760b09f ("mtd: nand: qcom: Support for IPQ8074 QPIC NAND controller")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sivaprakash Murugesan <sivaprak@codeaurora.org>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/1591948696-16015-2-git-send-email-sivaprak@codeaurora.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/mtd/nand/qcom_nandc.c | 7 ++++++-
    1 file changed, 6 insertions(+), 1 deletion(-)

    --- a/drivers/mtd/nand/qcom_nandc.c
    +++ b/drivers/mtd/nand/qcom_nandc.c
    @@ -435,11 +435,13 @@ struct qcom_nand_host {
    * among different NAND controllers.
    * @ecc_modes - ecc mode for NAND
    * @is_bam - whether NAND controller is using BAM
    + * @is_qpic - whether NAND CTRL is part of qpic IP
    * @dev_cmd_reg_start - NAND_DEV_CMD_* registers starting offset
    */
    struct qcom_nandc_props {
    u32 ecc_modes;
    bool is_bam;
    + bool is_qpic;
    u32 dev_cmd_reg_start;
    };

    @@ -2508,7 +2510,8 @@ static int qcom_nandc_setup(struct qcom_
    u32 nand_ctrl;

    /* kill onenand */
    - nandc_write(nandc, SFLASHC_BURST_CFG, 0);
    + if (!nandc->props->is_qpic)
    + nandc_write(nandc, SFLASHC_BURST_CFG, 0);
    nandc_write(nandc, dev_cmd_reg_addr(nandc, NAND_DEV_CMD_VLD),
    NAND_DEV_CMD_VLD_VAL);

    @@ -2779,12 +2782,14 @@ static const struct qcom_nandc_props ipq
    static const struct qcom_nandc_props ipq4019_nandc_props = {
    .ecc_modes = (ECC_BCH_4BIT | ECC_BCH_8BIT),
    .is_bam = true,
    + .is_qpic = true,
    .dev_cmd_reg_start = 0x0,
    };

    static const struct qcom_nandc_props ipq8074_nandc_props = {
    .ecc_modes = (ECC_BCH_4BIT | ECC_BCH_8BIT),
    .is_bam = true,
    + .is_qpic = true,
    .dev_cmd_reg_start = 0x7000,
    };


    \
     
     \ /
      Last update: 2020-08-20 12:51    [W:4.033 / U:0.076 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site