Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp4314212pxb; Tue, 31 Aug 2021 01:58:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxoBpD6a4o4riYYloJDb8oC/Do9JfuUJuGQU5/MdPYB3vYR5ecC5vROHZohtt1FeaAvKnbS X-Received: by 2002:a05:6e02:1288:: with SMTP id y8mr19310106ilq.206.1630400339078; Tue, 31 Aug 2021 01:58:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1630400339; cv=none; d=google.com; s=arc-20160816; b=ees+NFVTSKBcq6uD5Nwlf+KzhyftySoEIGoQixtGGzKA+KtLWRpL2y+U08YKHdupKt boc1njFJft2SoCdia8jCvw0xOiNGL+X54pbWjqsS939i9WpFFtVlcuzlobxM85TJxSOd AXjnNeOPsU/4PcwUJQAocnYQerhY+qmgQ/cR6XJwk9dPs6xnhAhArNS2uDOQrUQxQVHQ k2VArmktDCpEOooY0kmeU2P8bzUiVLhcvjJulUcy/4TDOWqksdvPpN+MNixVTjgs3rnz 6wjvIWsxhl+6Wirkwd6GcbVC9E35UPT8SAKED8hXu91w2ZPD/P6AMbhcpIKMiBqfcPVF zDEw== 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=f3XIX8NXG+2iNukuh/S0H+YLTCYXM96IHFhM5mVBjM8=; b=K8PD8ZcvrreXFcVjKOm+Wiw+R2uKhruAfGdVderyoRdTH3joGJC/C3w1sO94TirM4f 4QGAis9Dj1Lh8pgY10bKhivrAm0Va2sylUrfRxuz+5syK2fg9E3c2DHALRfB54Xa9QRq +dbyND9x/dlUCIsxL1vjC1WeyQhQl6W/nscX23acVLQDmVL9W0hTQdfFbTugvcAPVTWN Yp2P/MBBOIcqT/8mww1rX6IhEbpwP9OW+Q9xAeSgMLfYDN4eQSal5b2fFKoNLk23u4wJ Wi6s2wTHer3VB2QwhQBTHvcKkGVILRGogqV7/AQYIrD0EhaCqonuSGsSkoyjNXruswQ5 I2CQ== 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 l3si16686302ioq.2.2021.08.31.01.58.46; Tue, 31 Aug 2021 01:58:59 -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 S240447AbhHaI6D (ORCPT + 99 others); Tue, 31 Aug 2021 04:58:03 -0400 Received: from alexa-out.qualcomm.com ([129.46.98.28]:52061 "EHLO alexa-out.qualcomm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240421AbhHaI6A (ORCPT ); Tue, 31 Aug 2021 04:58:00 -0400 Received: from ironmsg07-lv.qualcomm.com ([10.47.202.151]) by alexa-out.qualcomm.com with ESMTP; 31 Aug 2021 01:57:05 -0700 X-QCInternal: smtphost Received: from ironmsg02-blr.qualcomm.com ([10.86.208.131]) by ironmsg07-lv.qualcomm.com with ESMTP/TLS/AES256-SHA; 31 Aug 2021 01:57:04 -0700 X-QCInternal: smtphost Received: from mdalam-linux.qualcomm.com ([10.201.2.71]) by ironmsg02-blr.qualcomm.com with ESMTP; 31 Aug 2021 14:26:46 +0530 Received: by mdalam-linux.qualcomm.com (Postfix, from userid 466583) id B43B022298; Tue, 31 Aug 2021 14:26:44 +0530 (IST) From: Md Sadre Alam To: miquel.raynal@bootlin.com, mani@kernel.org, boris.brezillon@collabora.com, linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org Cc: mdalam@codeaurora.org, sricharan@codeaurora.org, stable@kernel.org Subject: [PATCH V2] mtd: rawnand: qcom: Update code word value for raw read Date: Tue, 31 Aug 2021 14:26:40 +0530 Message-Id: <1630400200-2522-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. Cc: stable@kernel.org Signed-off-by: Md Sadre Alam [V2] * Added stable tags --- 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