From patchwork Thu Mar 30 06:46:09 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 96249 Delivered-To: patch@linaro.org Received: by 10.140.89.233 with SMTP id v96csp103835qgd; Wed, 29 Mar 2017 23:55:04 -0700 (PDT) X-Received: by 10.98.217.140 with SMTP id b12mr4448654pfl.136.1490856904356; Wed, 29 Mar 2017 23:55:04 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t9si1262655pfa.157.2017.03.29.23.55.04; Wed, 29 Mar 2017 23:55:04 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@nifty.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933386AbdC3GzB (ORCPT + 22 others); Thu, 30 Mar 2017 02:55:01 -0400 Received: from conuserg-07.nifty.com ([210.131.2.74]:40040 "EHLO conuserg-07.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932899AbdC3GtI (ORCPT ); Thu, 30 Mar 2017 02:49:08 -0400 Received: from pug.e01.socionext.com (p14092-ipngnfx01kyoto.kyoto.ocn.ne.jp [153.142.97.92]) (authenticated) by conuserg-07.nifty.com with ESMTP id v2U6kUcl015463; Thu, 30 Mar 2017 15:47:01 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-07.nifty.com v2U6kUcl015463 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1490856422; bh=QXb6nxWz0TYDDVdmwj+kDkL9EAQ3dwIVcJKSz15trWs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=13Jv/UwcStczx9bfNkLNcP5mEUbGWJMNJbU4cdqRKyoZg9fOo+9DXXFlRXIfhEABk lGHHObp5W4QhXQ0YyjxnUpmypRvQTkyOPh0JpLVZvFctT8rWJ6xkn41tbRUsXIucCL wTx/edkecK9zInb7nGYNKz9EtiApcqdilwAjXgVq6Jmi7Mo0ILKflWE2ekJVKmNHpe 343HV3URXHIYwZg1Qf4dnyI3RSuZmGogPARMbrXQhop8FrY7TyVpTfu8u1sWRuuh4i MhK28Fa2BArN9yiqorbmMserMVyFJeabY1kQoP/uNqyYX+zcZ7+/l+1NBdHUhzDiUW iy3sMUWll2QKQ== X-Nifty-SrcIP: [153.142.97.92] From: Masahiro Yamada To: linux-mtd@lists.infradead.org Cc: Enrico Jorns , Artem Bityutskiy , Dinh Nguyen , Boris Brezillon , Marek Vasut , Graham Moore , David Woodhouse , Masami Hiramatsu , Chuanxiao Dong , Jassi Brar , Masahiro Yamada , linux-kernel@vger.kernel.org, Brian Norris , Richard Weinberger , Cyrille Pitchen Subject: [PATCH v3 23/37] mtd: nand: denali: fix NAND_CMD_STATUS handling Date: Thu, 30 Mar 2017 15:46:09 +0900 Message-Id: <1490856383-31560-24-git-send-email-yamada.masahiro@socionext.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1490856383-31560-1-git-send-email-yamada.masahiro@socionext.com> References: <1490856383-31560-1-git-send-email-yamada.masahiro@socionext.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The current NAND_CMD_STATUS handling is weird; it just reads the WRITE_PROTECT register, and returns NAND_STATUS_WP if it is set. It does not send Read Status (0x70) command, so it is not helpful for checking the current device status. Signed-off-by: Masahiro Yamada --- Changes in v3: None Changes in v2: - Newly added drivers/mtd/nand/denali.c | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) -- 2.7.4 diff --git a/drivers/mtd/nand/denali.c b/drivers/mtd/nand/denali.c index 75b045e0..bca4fcd 100644 --- a/drivers/mtd/nand/denali.c +++ b/drivers/mtd/nand/denali.c @@ -107,21 +107,6 @@ static void write_byte_to_buf(struct denali_nand_info *denali, uint8_t byte) denali->buf.buf[denali->buf.tail++] = byte; } -/* reads the status of the device */ -static void read_status(struct denali_nand_info *denali) -{ - uint32_t cmd; - - /* initialize the data buffer to store status */ - reset_buf(denali); - - cmd = ioread32(denali->flash_reg + WRITE_PROTECT); - if (cmd) - write_byte_to_buf(denali, NAND_STATUS_WP); - else - write_byte_to_buf(denali, 0); -} - /* Reset the flash controller */ static uint16_t denali_nand_reset(struct denali_nand_info *denali) { @@ -893,7 +878,11 @@ static void denali_cmdfunc(struct mtd_info *mtd, unsigned int cmd, int col, switch (cmd) { case NAND_CMD_STATUS: - read_status(denali); + reset_buf(denali); + addr = MODE_11 | BANK(denali->flash_bank); + index_addr(denali, addr | 0, cmd); + index_addr_read_data(denali, addr | 2, &id); + write_byte_to_buf(denali, id); break; case NAND_CMD_READID: case NAND_CMD_PARAM: