From patchwork Thu Feb 25 00:07:23 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 587795 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2001:1868:205::9]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 28DE4140775 for ; Thu, 25 Feb 2016 11:11:55 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=GWAKGkRM; dkim-atps=neutral Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1aYjVM-0007P3-U3; Thu, 25 Feb 2016 00:10:04 +0000 Received: from mail-pf0-x22e.google.com ([2607:f8b0:400e:c00::22e]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1aYjVK-00075g-EN for linux-mtd@lists.infradead.org; Thu, 25 Feb 2016 00:10:03 +0000 Received: by mail-pf0-x22e.google.com with SMTP id e127so21855447pfe.3 for ; Wed, 24 Feb 2016 16:09:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=ZvQwFKvPjpIRKTqIYv9/rW+6wR5rImIscv0HgLCFY0M=; b=GWAKGkRM+8aXqBmFMnA3ooVmOY6ZusVirEaF/OV7CsEnN93LMPdVVrVTEwCweEEDI0 hzldAy3NBEbGxP98gw3BrcxfGWLWmQLz7Yhp7rtjOpwAtZcXfKcNc3HO94JjFRF+cA9G bSjFRuReT+MDU7GBVtgfn6HmYxoDDBYhI2SkF0RP+sWqmWzR83si8a7eK480hIWTOL4r AJJ5pMIHxTRJdVU4mK1sLzcVGpiDknKVP4K2e3NBRdWTRqjDPlY7QMsBU6aRPfwvYFKH lbCcBQ7Sw8NLJzBn0YmD/zS+P2RVOxO7qVhQUArdBJIgjvk73GQUZtX1Og+eN8aqHWld 5meg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=ZvQwFKvPjpIRKTqIYv9/rW+6wR5rImIscv0HgLCFY0M=; b=LFdOJsdLMmrblrsYBcDY5K8N35RoPKUC+pek7WpVjJRUkb9nZqoo0NYSOsjkRXcHmn r67qFK3RPxspcn4Llgs7XS7Geuwpc9u+Zwko4jC6a5GUcpq4TMA/uJLFBqUb4KBxR4DD qN1ftds7elAE9mI15OaABZh5Q+DF+VFzOMPKznIfBtHrlnLLtijhDyRh8GslWk+rYig0 Aitq4VDIH9kZApyp1HXSjiVfPnUfWWRJYC8r7yUmTag/R9QiHXCHG/UEWl3oovd6sYd4 3Qds4nJ1N6uVPxv7gCu6mzU2hQfDqVF+c0kH0pD27XJK8/iqk6iKsHXp1ktWYQzZQEKR baSQ== X-Gm-Message-State: AG10YOSHAl1Ndhe7PgXmGw4dswkLDcR94OGW6hQ0+qp+0rGofBDz3cJGadzWN7BnB+nByg== X-Received: by 10.98.70.139 with SMTP id o11mr58951967pfi.123.1456358981587; Wed, 24 Feb 2016 16:09:41 -0800 (PST) Received: from fainelli-desktop.broadcom.com (5520-maca-inet1-outside.broadcom.com. [216.31.211.11]) by smtp.gmail.com with ESMTPSA id q16sm7458819pfi.80.2016.02.24.16.09.40 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 24 Feb 2016 16:09:40 -0800 (PST) From: Florian Fainelli To: linux-mtd@lists.infradead.org Subject: [PATCH] mtd: brcmnand: Fix v7.1 register offsets Date: Wed, 24 Feb 2016 16:07:23 -0800 Message-Id: <1456358843-16347-1-git-send-email-f.fainelli@gmail.com> X-Mailer: git-send-email 2.1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20160224_161002_599495_26552BA2 X-CRM114-Status: GOOD ( 10.59 ) X-Spam-Score: -2.7 (--) X-Spam-Report: SpamAssassin version 3.4.0 on bombadil.infradead.org summary: Content analysis details: (-2.7 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [2607:f8b0:400e:c00:0:0:0:22e listed in] [list.dnswl.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (f.fainelli[at]gmail.com) -0.0 SPF_PASS SPF: sender matches SPF record -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Florian Fainelli , Kamal Dasu , open list , "open list:BROADCOM STB NAND FLASH DRIVER" , Brian Norris , David Woodhouse MIME-Version: 1.0 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org The BRCMNAND controller revision 7.1 is almost 100% compatible with the previous v6.0 register offset layout, except for the Correctable Error Reporting Threshold registers. Fix this by adding another table with the correct offsets for CORR_THRESHOLD and CORR_THRESHOLD_EXT. Fixes: 27c5b17cd1b1 ("mtd: nand: add NAND driver "library" for Broadcom STB NAND controller") Signed-off-by: Florian Fainelli --- drivers/mtd/nand/brcmnand/brcmnand.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/drivers/mtd/nand/brcmnand/brcmnand.c b/drivers/mtd/nand/brcmnand/brcmnand.c index 844fc07d22cd..f7009c1cb90c 100644 --- a/drivers/mtd/nand/brcmnand/brcmnand.c +++ b/drivers/mtd/nand/brcmnand/brcmnand.c @@ -311,6 +311,36 @@ static const u16 brcmnand_regs_v60[] = { [BRCMNAND_FC_BASE] = 0x400, }; +/* BRCMNAND v7.1 */ +static const u16 brcmnand_regs_v71[] = { + [BRCMNAND_CMD_START] = 0x04, + [BRCMNAND_CMD_EXT_ADDRESS] = 0x08, + [BRCMNAND_CMD_ADDRESS] = 0x0c, + [BRCMNAND_INTFC_STATUS] = 0x14, + [BRCMNAND_CS_SELECT] = 0x18, + [BRCMNAND_CS_XOR] = 0x1c, + [BRCMNAND_LL_OP] = 0x20, + [BRCMNAND_CS0_BASE] = 0x50, + [BRCMNAND_CS1_BASE] = 0, + [BRCMNAND_CORR_THRESHOLD] = 0xdc, + [BRCMNAND_CORR_THRESHOLD_EXT] = 0xe0, + [BRCMNAND_UNCORR_COUNT] = 0xfc, + [BRCMNAND_CORR_COUNT] = 0x100, + [BRCMNAND_CORR_EXT_ADDR] = 0x10c, + [BRCMNAND_CORR_ADDR] = 0x110, + [BRCMNAND_UNCORR_EXT_ADDR] = 0x114, + [BRCMNAND_UNCORR_ADDR] = 0x118, + [BRCMNAND_SEMAPHORE] = 0x150, + [BRCMNAND_ID] = 0x194, + [BRCMNAND_ID_EXT] = 0x198, + [BRCMNAND_LL_RDATA] = 0x19c, + [BRCMNAND_OOB_READ_BASE] = 0x200, + [BRCMNAND_OOB_READ_10_BASE] = 0, + [BRCMNAND_OOB_WRITE_BASE] = 0x280, + [BRCMNAND_OOB_WRITE_10_BASE] = 0, + [BRCMNAND_FC_BASE] = 0x400, +}; + enum brcmnand_cs_reg { BRCMNAND_CS_CFG_EXT = 0, BRCMNAND_CS_CFG, @@ -406,7 +436,9 @@ static int brcmnand_revision_init(struct brcmnand_controller *ctrl) } /* Register offsets */ - if (ctrl->nand_version >= 0x0600) + if (ctrl->nand_version >= 0x0701) + ctrl->reg_offsets = brcmnand_regs_v71; + else if (ctrl->nand_version >= 0x0600) ctrl->reg_offsets = brcmnand_regs_v60; else if (ctrl->nand_version >= 0x0500) ctrl->reg_offsets = brcmnand_regs_v50;