Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp696913pxb; Thu, 2 Sep 2021 12:53:50 -0700 (PDT) X-Google-Smtp-Source: ABdhPJytlYcFt0tA16ZYnnSGuVzcF7/bQVPdAqnosAFFLOM+ToC/x+8iJpts70BPoHP146PNrzj8 X-Received: by 2002:a05:6e02:b43:: with SMTP id f3mr3520995ilu.260.1630612430339; Thu, 02 Sep 2021 12:53:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1630612430; cv=none; d=google.com; s=arc-20160816; b=Zi/mK0AQVmt4fxbJ/8iwdpbRYNlNWfvLDdmVQas2O1lmnWcixkG2xlVzFsq659tDp+ 1Tm37t+ZI0vDGauhsQzlkNuuo5w81l21RrKxHDbqCk4Q5+O+mC7V2nG/06M0/EWriMUP 9b9QlRd2ZxMufU5l6C5CBE1KHiBON7s/S+f/9iQjVIzQI+4qnt4X4AA9mel2Aex2CvUr DSnBltxk2PnPswdVAwzVm5tltMrWWkLj9K5qgIsMfKhAH6N3Eaj/Wap2SYV1YjcOypdw t9QHwVhg/QBy5kvShQIulBO0BGI1aKcNKxjYivlv2h/vaORzXGBpTVoAHXztq9ziqOln T70Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from; bh=65+QAKI1d6tCTen9XmI3EtjwMuiY7BTai+D2Ir4arHc=; b=UYkj4RdekfpHCHUgJArXxW5WZp9Vkag6dV5v+LN3WNhbIB15khc2kH3L165mVJDAsi DNVIJ4duv9A/+3M7rzjl/U45H1fPRhDt4h7D+BVWbH6k7IAD2ed4NW6GDkx8sMQaLDNK o2mtkjaQ1YX/7Uo9teurkcf/xLfr/n/sl+vaVLbMgkrHJQVX297oAwABcFD+q2tFtzOs 8emV5dofTXlh5WyCaglohepNnT1Hr4UlvqP70pjVp1b8mCgedjVKYwnnfD2jNZFmqG7Y VsTY2B1bLQN/3XZKVXaqAd3TsSV4OfCt8FFgam0NMuYwfvVAt8o8cmsgL2JOclqV3l0H JJuw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r11si3820387ill.21.2021.09.02.12.53.32; Thu, 02 Sep 2021 12:53:50 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233632AbhIBFuj (ORCPT + 99 others); Thu, 2 Sep 2021 01:50:39 -0400 Received: from alexa-out.qualcomm.com ([129.46.98.28]:37007 "EHLO alexa-out.qualcomm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231831AbhIBFui (ORCPT ); Thu, 2 Sep 2021 01:50:38 -0400 Received: from ironmsg07-lv.qualcomm.com ([10.47.202.151]) by alexa-out.qualcomm.com with ESMTP; 01 Sep 2021 22:49:39 -0700 X-QCInternal: smtphost Received: from ironmsg01-blr.qualcomm.com ([10.86.208.130]) by ironmsg07-lv.qualcomm.com with ESMTP/TLS/AES256-SHA; 01 Sep 2021 22:49:38 -0700 X-QCInternal: smtphost Received: from mdalam-linux.qualcomm.com ([10.201.2.71]) by ironmsg01-blr.qualcomm.com with ESMTP; 02 Sep 2021 11:19:27 +0530 Received: by mdalam-linux.qualcomm.com (Postfix, from userid 466583) id CA1A922372; Thu, 2 Sep 2021 11:19:25 +0530 (IST) From: Md Sadre Alam To: miquel.raynal@bootlin.com, mani@kernel.org, linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org Cc: mdalam@codeaurora.org, sricharan@codeaurora.org, stable@kernel.org Subject: [PATCH V4] mtd: rawnand: qcom: Update code word value for raw read Date: Thu, 2 Sep 2021 11:19:23 +0530 Message-Id: <1630561763-18486-1-git-send-email-mdalam@codeaurora.org> X-Mailer: git-send-email 2.7.4 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From QPIC V2 onwards there is a separate register to read last code word "QPIC_NAND_READ_LOCATION_LAST_CW_n". qcom_nandc_read_cw_raw() is used to read only one code word at a time. If we will configure number of code words to 1 in in QPIC_NAND_DEV0_CFG0 register then QPIC controller thinks its reading the last code word, since from QPIC V2 onwards we are having separate register to read the last code word, we have to configure "QPIC_NAND_READ_LOCATION_LAST_CW_n" register to fetch data from controller buffer to system memory. Fixes: 503ee5aa ("mtd: rawnand: qcom: update last code word register") Cc: stable@kernel.org Signed-off-by: Md Sadre Alam --- [V4] * Added commit message * Added changelog In commit 503ee5aa added QPIC V2 support. Since QPIC V2 onwards there is separate register to get last CW data. If total number of CW configred is 1 then , QPIC controller treat this as last CW and software shhould copy data to memory via QPIC_NAND_READ_LOCATION_LAST_CW_n register instead of QPIC_NAND_READ_LOCATION_n. Since in raw read we are configuring total number of CW 1, this change fixes this if total number of CW 1 then make this as last CW. raw_cw = ecc->steps - 1; since ecc->steps holds total number of CWs. drivers/mtd/nand/raw/qcom_nandc.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/mtd/nand/raw/qcom_nandc.c b/drivers/mtd/nand/raw/qcom_nandc.c index ef0bade..04e6f7b 100644 --- a/drivers/mtd/nand/raw/qcom_nandc.c +++ b/drivers/mtd/nand/raw/qcom_nandc.c @@ -1676,13 +1676,17 @@ qcom_nandc_read_cw_raw(struct mtd_info *mtd, struct nand_chip *chip, struct nand_ecc_ctrl *ecc = &chip->ecc; int data_size1, data_size2, oob_size1, oob_size2; int ret, reg_off = FLASH_BUF_ACC, read_loc = 0; + int raw_cw = cw; nand_read_page_op(chip, page, 0, NULL, 0); host->use_ecc = false; + if (nandc->props->qpic_v2) + raw_cw = ecc->steps - 1; + clear_bam_transaction(nandc); set_address(host, host->cw_size * cw, page); - update_rw_regs(host, 1, true, cw); + update_rw_regs(host, 1, true, raw_cw); config_nand_page_read(chip); data_size1 = mtd->writesize - host->cw_size * (ecc->steps - 1); @@ -1711,7 +1715,7 @@ qcom_nandc_read_cw_raw(struct mtd_info *mtd, struct nand_chip *chip, nandc_set_read_loc(chip, cw, 3, read_loc, oob_size2, 1); } - config_nand_cw_read(chip, false, cw); + config_nand_cw_read(chip, false, raw_cw); read_data_dma(nandc, reg_off, data_buf, data_size1, 0); reg_off += data_size1; -- 2.7.4