From patchwork Mon Jan 17 11:18:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dario Binacchi X-Patchwork-Id: 1580731 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=Td78qFsc; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amarulasolutions.com header.i=@amarulasolutions.com header.a=rsa-sha256 header.s=google header.b=IB+KjWd8; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4JcqF50GP8z9s9c for ; Mon, 17 Jan 2022 22:19:53 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=gUxBXklnovH7wVHiK5uG95PMDojvD6UToqskfTonas8=; b=Td78qFscZOvsUv Y4Q6rOZ9xoucOgT0ig6y8gUMp5BQwpLVzE/ezp1y2KXStHebZsxilHRX6BYvLYrADf+Ge1mx8syew QlsOru3W3GvWTbfrQHhfO9A45hCBhzQS8/SGfBCrS3H0BWhl4YuVr5dEK/rYVoE8KEc7qn0Lbj4sk YURoQxqxTbMCt9alOTAnTvhyIuXwcFWCaCG7PI/+mZPQPCuNmE7AIafeDIO+wDGWUbxdKGKnvRpeI Wam9j0S45AN54uIEdYH7uh6jpP6kTbWHKWY4Pn8AMAw31BtDFAi+RO+Zp5NLWUSQ4Yt0BsBVLYh9T 4THYMgQJaxujH9eSZA9Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1n9Q2b-00Ed7Z-Kw; Mon, 17 Jan 2022 11:19:13 +0000 Received: from mail-ed1-x532.google.com ([2a00:1450:4864:20::532]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1n9Q21-00EcvN-MO for linux-mtd@lists.infradead.org; Mon, 17 Jan 2022 11:18:39 +0000 Received: by mail-ed1-x532.google.com with SMTP id 15so30877256edx.9 for ; Mon, 17 Jan 2022 03:18:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Iq4FM2PRLAcot9iAnDMYHV6yAJ0nWXkPdknU80um0hk=; b=IB+KjWd8cHfC4D1zKJykFmFfRmcOLwb4vXLkbsk9WocfSgH8I5Zsn7Q+ReAXfRq4tI dgQzZE03Y58DdmDRXhZYG8Z1dqsocUfJLE9StlBfkTwhCilKOfJFi1teHXEhCe1mWArK n6fxSeoQ62y8Jjc5gCCy3wM37psn7FkhoDwa4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Iq4FM2PRLAcot9iAnDMYHV6yAJ0nWXkPdknU80um0hk=; b=opv7gcYQzQNyY4BrdEyu8TvG1JLeBXVb4IQWSsXcBL2Xsoetz9k/WgmM9zbJ1LqkYA CNv953q+V/vXXFugtk3P7IgLcLIuAr+ZTokXLdCbBixy5wRz83gBckTCmVWs4UM/8YBY AqvfrmJucl36A5ctMFa+QgmfmAWZktEpk2dPxaZkmAqcznotxiV2467/qO4iBS4t1XZN wo1NY6fCGh6fpVSdZL//sC5y9SB10S/tAT2fPrHSb51oKQFifMwO49AfxKzxQfXqju8H SsHU2qmIpnbYbH274M65ZZKD9y6VhUIwzfoaDAyofL/qALtma+EsNjuUxD2y9EZXN71B 0jzA== X-Gm-Message-State: AOAM531aR5WSFJUeCYqD6DtdrxWOsyGkHjQIgm651lRCLmCd6r1lsOZ5 YqqPr+8Ug6PNNU0ckZOT9KXtpA== X-Google-Smtp-Source: ABdhPJz17OYx8Igx0F5Esesia6peK+Jesr70iLxwxSwJi0kzRAjt0Ua+ypjgQwM6s3j3r35pU8cc2g== X-Received: by 2002:a17:907:3da4:: with SMTP id he36mr1872514ejc.707.1642418316340; Mon, 17 Jan 2022 03:18:36 -0800 (PST) Received: from dario-ThinkPad-T14s-Gen-2i.homenet.telecomitalia.it (host-82-52-8-210.retail.telecomitalia.it. [82.52.8.210]) by smtp.gmail.com with ESMTPSA id f11sm5142713edv.67.2022.01.17.03.18.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Jan 2022 03:18:35 -0800 (PST) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: Michael Trimarchi , Dario Binacchi , Boris Brezillon , Han Xu , Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , linux-mtd@lists.infradead.org Subject: [RFC PATCH v2 2/5] mtd: rawnand: gpmi: fix controller timings setting Date: Mon, 17 Jan 2022 12:18:26 +0100 Message-Id: <20220117111829.1811997-3-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220117111829.1811997-1-dario.binacchi@amarulasolutions.com> References: <20220117111829.1811997-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220117_031837_781191_178FCF32 X-CRM114-Status: GOOD ( 13.92 ) X-Spam-Score: -0.2 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Set the controller registers according to the real clock rate. The controller registers configuration (setup, hold, timeout, ... cycles) depends on the clock rate of the GPMI. Using the real rate inst [...] Content analysis details: (-0.2 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2a00:1450:4864:20:0:0:0:532 listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -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_EF Message has a valid DKIM or DK signature from envelope-from domain X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Set the controller registers according to the real clock rate. The controller registers configuration (setup, hold, timeout, ... cycles) depends on the clock rate of the GPMI. Using the real rate instead of the ideal one, avoids that this inaccuracy (required_rate - real_rate) affects the registers setting. This patch has been tested on two custom boards with i.MX28 and i.MX6 SOCs: - i.MX28: required rate 100MHz, real rate 99.3MHz - i.MX6 required rate 100MHz, real rate 99MHz Fixes: b1206122069a ("mtd: rawnand: gpmi: use core timings instead of an empirical derivation") Co-developed-by: Michael Trimarchi Signed-off-by: Michael Trimarchi Signed-off-by: Dario Binacchi --- Changes in v2: - Improve the commit description. - give examples of frequencies on my setup. drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c b/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c index 1b64c5a5140d..73c3bf59b55e 100644 --- a/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c +++ b/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c @@ -648,6 +648,7 @@ static void gpmi_nfc_compute_timings(struct gpmi_nand_data *this, const struct nand_sdr_timings *sdr) { struct gpmi_nfc_hardware_timing *hw = &this->hw; + struct resources *r = &this->resources; unsigned int dll_threshold_ps = this->devdata->max_chain_delay; unsigned int period_ps, reference_period_ps; unsigned int data_setup_cycles, data_hold_cycles, addr_setup_cycles; @@ -671,6 +672,8 @@ static void gpmi_nfc_compute_timings(struct gpmi_nand_data *this, wrn_dly_sel = BV_GPMI_CTRL1_WRN_DLY_SEL_NO_DELAY; } + hw->clk_rate = clk_round_rate(r->clock[0], hw->clk_rate); + /* SDR core timings are given in picoseconds */ period_ps = div_u64((u64)NSEC_PER_SEC * 1000, hw->clk_rate); From patchwork Mon Jan 17 11:18:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dario Binacchi X-Patchwork-Id: 1580732 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=pgQyxWGI; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amarulasolutions.com header.i=@amarulasolutions.com header.a=rsa-sha256 header.s=google header.b=VIXTBpMj; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4JcqFP3C1Cz9s9c for ; Mon, 17 Jan 2022 22:20:09 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=AO7OULf/GUOsCN8nTwtPghhIunYWypE5SbCECl8qAoE=; b=pgQyxWGIQIEasj fk5A0ZKjshVtw9pjY50typrMLqzgaREPqYqkdIQcK2Z/2qmNY+jL+NkXXdOyneSxPajUWzC2jvpIX pgJ1fqVViJVHq3qh7wii7id90qK9idfpCvEZsrJ7OXA+hVCnrsbumBLDDRUVNQurX9KBq4msFL9gI jhD4cH6wdRxpnZAl0YOPVN24lW2uYW0W7oIQvKjef+Hpr+ztpWSIY2aAVvjzhfqRNe02wQfZ3mpXq feOz0rgsyAj3ybiezIPRZA1XmqZO+hli1dU1xWhLaQ5a40eACchBQVkqML3YZKS0GVbP0t6b/Y8Cp 7HI1q1KaspQSNnMh5lZw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1n9Q2q-00EdCh-M0; Mon, 17 Jan 2022 11:19:28 +0000 Received: from mail-ed1-x52b.google.com ([2a00:1450:4864:20::52b]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1n9Q22-00EcwB-P2 for linux-mtd@lists.infradead.org; Mon, 17 Jan 2022 11:18:40 +0000 Received: by mail-ed1-x52b.google.com with SMTP id q25so64136020edb.2 for ; Mon, 17 Jan 2022 03:18:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Gk6v+zkr/8Bz9MIGt4fGPVyLyGj2QkozkhBTdVX/PUo=; b=VIXTBpMjhqZKt4rQ3FtVXzMnmqezrKxs8k1eSDAutK1Jfyt7mC1LZ7DYG5m4sXOeYE K94/xRWf2H3fKlAcYXE4wuT6fRf8oiALFqZaYyy3N5mNLpqL9tX+SAmcHQHkhIFd2EZm 3CkbiYwRHinLAv3PxmapAgT73USBoOxYY/nb4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Gk6v+zkr/8Bz9MIGt4fGPVyLyGj2QkozkhBTdVX/PUo=; b=uZzqS1oxjpRw9Z6Nv9oYBkqt9euZqg9/RUTM1MHzMYxK0bpIHXy6P5DuYpHRbMZV6m E1qKKcdXgn08D1llbH25C8baZpNzb3a7zpbXMv8q1B59yhTNuD/bnvkaWs7FKIU+O6FG lQYVCLhKnvPdPl9iuaNH28rqPPR2wFr/vPSALZIg1Xmu+UU79/7gHnlgnAT1cmKmeQ8z BbSrThWy6u5Vgm2kP0DdyU4/Xj8w0OVeMU47WmCCxpCAb9rJWdSMyj6NjJ4qn2Cv22Lr byGfQPZVtkazEAbHh+9OMZISAEPvmzc2/AppS+L8S2AWIOfugnqBbN9QIueg0Mam5NMo QpGg== X-Gm-Message-State: AOAM532RgyqnQnCdzHSVWw+V382ID6oXXKoxu/tw+GIynZASmW+e4E0D A7DujsWaqgpd/Znp+9/VXmq9Mw== X-Google-Smtp-Source: ABdhPJzfcTUuKvzsSykyLHp6DawCurAnU7xOZb2fKrRxwC5e0xT0BSoq7Nb96brhwacD7RdAXwP73A== X-Received: by 2002:a17:906:49c4:: with SMTP id w4mr16071378ejv.745.1642418317529; Mon, 17 Jan 2022 03:18:37 -0800 (PST) Received: from dario-ThinkPad-T14s-Gen-2i.homenet.telecomitalia.it (host-82-52-8-210.retail.telecomitalia.it. [82.52.8.210]) by smtp.gmail.com with ESMTPSA id f11sm5142713edv.67.2022.01.17.03.18.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Jan 2022 03:18:37 -0800 (PST) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: Michael Trimarchi , Dario Binacchi , Han Xu , Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , linux-mtd@lists.infradead.org Subject: [RFC PATCH v2 3/5] mtd: rawnand: gpmi: use a table to get EDO mode setup Date: Mon, 17 Jan 2022 12:18:27 +0100 Message-Id: <20220117111829.1811997-4-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220117111829.1811997-1-dario.binacchi@amarulasolutions.com> References: <20220117111829.1811997-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220117_031838_849362_D4E2F689 X-CRM114-Status: GOOD ( 15.89 ) X-Spam-Score: -0.2 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: This is a preparation patch for the upcoming validation of the GPMI controller clock rate. Co-developed-by: Michael Trimarchi Signed-off-by: Michael Trimarchi Signed-off-by: Dario Binacchi Content analysis details: (-0.2 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2a00:1450:4864:20:0:0:0:52b listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -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_EF Message has a valid DKIM or DK signature from envelope-from domain X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org This is a preparation patch for the upcoming validation of the GPMI controller clock rate. Co-developed-by: Michael Trimarchi Signed-off-by: Michael Trimarchi Signed-off-by: Dario Binacchi Signed-off-by: Michael Trimarchi Signed-off-by: Dario Binacchi Signed-off-by: Sascha Hauer --- Changes in v2: - Add the patch to the series. drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 43 +++++++++++++++------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c b/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c index 73c3bf59b55e..4ac695aa5131 100644 --- a/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c +++ b/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c @@ -570,6 +570,27 @@ static int bch_set_geometry(struct gpmi_nand_data *this) return ret; } +struct edo_mode { + u32 tRC_min; + long clk_rate; + u8 wrn_dly_sel; +}; + +static const struct edo_mode edo_modes[] = { + {.tRC_min = 30000, .clk_rate = 22000000, + .wrn_dly_sel = BV_GPMI_CTRL1_WRN_DLY_SEL_4_TO_8NS}, + {.tRC_min = 30000, .clk_rate = 22000000, + .wrn_dly_sel = BV_GPMI_CTRL1_WRN_DLY_SEL_4_TO_8NS}, + {.tRC_min = 30000, .clk_rate = 22000000, + .wrn_dly_sel = BV_GPMI_CTRL1_WRN_DLY_SEL_4_TO_8NS}, + {.tRC_min = 30000, .clk_rate = 22000000, + .wrn_dly_sel = BV_GPMI_CTRL1_WRN_DLY_SEL_4_TO_8NS}, + {.tRC_min = 25000, .clk_rate = 80000000, + .wrn_dly_sel = BV_GPMI_CTRL1_WRN_DLY_SEL_NO_DELAY}, + {.tRC_min = 20000, .clk_rate = 100000000, + .wrn_dly_sel = BV_GPMI_CTRL1_WRN_DLY_SEL_NO_DELAY}, +}; + /* * <1> Firstly, we should know what's the GPMI-clock means. * The GPMI-clock is the internal clock in the gpmi nand controller. @@ -657,22 +678,18 @@ static void gpmi_nfc_compute_timings(struct gpmi_nand_data *this, int sample_delay_ps, sample_delay_factor; u16 busy_timeout_cycles; u8 wrn_dly_sel; + int i, emode = ARRAY_SIZE(edo_modes) - 1; - if (sdr->tRC_min >= 30000) { - /* ONFI non-EDO modes [0-3] */ - hw->clk_rate = 22000000; - wrn_dly_sel = BV_GPMI_CTRL1_WRN_DLY_SEL_4_TO_8NS; - } else if (sdr->tRC_min >= 25000) { - /* ONFI EDO mode 4 */ - hw->clk_rate = 80000000; - wrn_dly_sel = BV_GPMI_CTRL1_WRN_DLY_SEL_NO_DELAY; - } else { - /* ONFI EDO mode 5 */ - hw->clk_rate = 100000000; - wrn_dly_sel = BV_GPMI_CTRL1_WRN_DLY_SEL_NO_DELAY; + /* Search the required EDO mode */ + for (i = 0; i < ARRAY_SIZE(edo_modes); i++) { + if (sdr->tRC_min >= edo_modes[i].tRC_min) { + emode = i; + break; + } } - hw->clk_rate = clk_round_rate(r->clock[0], hw->clk_rate); + hw->clk_rate = clk_round_rate(r->clock[0], edo_modes[emode].clk_rate); + wrn_dly_sel = edo_modes[emode].wrn_dly_sel; /* SDR core timings are given in picoseconds */ period_ps = div_u64((u64)NSEC_PER_SEC * 1000, hw->clk_rate); From patchwork Mon Jan 17 11:18:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dario Binacchi X-Patchwork-Id: 1580733 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=g6OB0fqG; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amarulasolutions.com header.i=@amarulasolutions.com header.a=rsa-sha256 header.s=google header.b=eWWQ7Eq1; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4JcqFs1fYBz9s9c for ; Mon, 17 Jan 2022 22:20:33 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=sxp27PmgAN6HOe9YTIm4oMm/akbpiwXlobU78EUXdbs=; b=g6OB0fqGg8LdWk 5+vTG13PNoc7nTnTmTdGZczwGkLduupeRJJkSRO3dF+ab7yaYNUQ527UfKUedaU+KEWd6/e98VVrB hsxseMhfVk9b34rxqlF0Qy6s/GUuHR/AUfDnPAJIu8pcOtIKFY75pIdFdkZD3nNA+V90WUQkt4VfL s7oK49rtVWV2Fun2iszG1BoBEk0PiDMl83vl43p/R5cWgQ11KoEW7n5u1rRXLEB0lcarU4pHaRYBX 1NUHKE36CJckmkU/zad6tufjTFNOuelNcNBapRyfaeNDZSYkA1dqVW20ojMyiLzGAz0XMrOIZQ9yg e27pahRXiNeIoqf3Idqw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1n9Q3C-00EdLw-PS; Mon, 17 Jan 2022 11:19:50 +0000 Received: from mail-ed1-x52e.google.com ([2a00:1450:4864:20::52e]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1n9Q23-00Ecwv-UU for linux-mtd@lists.infradead.org; Mon, 17 Jan 2022 11:18:42 +0000 Received: by mail-ed1-x52e.google.com with SMTP id 15so30877730edx.9 for ; Mon, 17 Jan 2022 03:18:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=rYAxWnkHpq4eLp+nj5R4UJZTq/38ciAyZxzk+5L5YEQ=; b=eWWQ7Eq1ASjSoU3wXNkl4+S5loKAQAt6PHa0+A+R68n6ZX5g1AtMr+BiZZZpZ6Z5AE iEGu53zcXhZOap7+ZljQcAbLB0ltF7on2EyRPjGk+LstprLVfHsXl2msjJAmSNkx9ypG DhmZeYUTj77qcJfSepUEXPuy5/JX+JrviPo3s= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rYAxWnkHpq4eLp+nj5R4UJZTq/38ciAyZxzk+5L5YEQ=; b=njUwVUd2EalV061i5dce9xZQLTf5rswNwm6gpNTKlPvj/8Ti+dEZ6pYm3/et/sAEq2 hd4Gpn7ZFz3xTarnBLPUpir2XjklKVem1xHVqbiWFkbiQSZf49wy+0avEmm3D1Y43CTR eqB6MY8kJMFmCkF+65rr25MImja1NgbUTDt/BX6Vlo4JhXPxBc3ANN7KhJS7jAY/EVGH B36hTzDnTupnHTLBqVSlHWnTprl+PrN5P6ydyAxsKrvw8gP5HFj5f5Mhr7hbQ8RDyAKK nAoUdeEdtQwwgJZlTKMkP0JpEk5F5Cy3EKVr/5aXFT7ooiWaUwbXm5dik4x5Ym69WH0k Y7+w== X-Gm-Message-State: AOAM531Sq1X+5l/XQL8dnl9q1w4Powm8EIT2ShytinkoXtWS0tVTlR+J Q5cca/pOTN9YlKW1YuDAHCG+Dw== X-Google-Smtp-Source: ABdhPJyKn6QCfHVFoBCjZsxSClHN31Hb+zRcpoNFpkT5JrofnLdT2dc7CAPh354e/9IyUsaWWHYUIw== X-Received: by 2002:aa7:c945:: with SMTP id h5mr20209214edt.187.1642418318723; Mon, 17 Jan 2022 03:18:38 -0800 (PST) Received: from dario-ThinkPad-T14s-Gen-2i.homenet.telecomitalia.it (host-82-52-8-210.retail.telecomitalia.it. [82.52.8.210]) by smtp.gmail.com with ESMTPSA id f11sm5142713edv.67.2022.01.17.03.18.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Jan 2022 03:18:38 -0800 (PST) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: Michael Trimarchi , Dario Binacchi , Han Xu , Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , linux-mtd@lists.infradead.org Subject: [RFC PATCH v2 4/5] mtd: rawnand: gpmi: validate controller clock rate Date: Mon, 17 Jan 2022 12:18:28 +0100 Message-Id: <20220117111829.1811997-5-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220117111829.1811997-1-dario.binacchi@amarulasolutions.com> References: <20220117111829.1811997-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220117_031840_061987_BD97381C X-CRM114-Status: GOOD ( 22.83 ) X-Spam-Score: -0.2 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: What to do when the real rate of the gpmi clock is not equal to the required one? The solutions proposed in [1] did not lead to a conclusion on how to validate the clock rate, so, inspired by the docu [...] Content analysis details: (-0.2 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2a00:1450:4864:20:0:0:0:52e listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -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_EF Message has a valid DKIM or DK signature from envelope-from domain X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org What to do when the real rate of the gpmi clock is not equal to the required one? The solutions proposed in [1] did not lead to a conclusion on how to validate the clock rate, so, inspired by the document [2], I consider the rate correct only if not lower or equal to the rate of the previous edo mode. In fact, in chapter 4.16.2 (NV-DDR) of the document [2], it is written that "If the host selects timing mode n, then its clock period shall be faster than the clock period of timing mode n-1 and slower than or equal to the clock period of timing mode n.". I thought that it could therefore also be used in this case, without therefore having to define the valid rate ranges empirically. For example, suppose that gpmi_nfc_compute_timings() is called for edo mode 5 configuration (100MHz, from the `edo_modes' table) but the rate returned by clk_round_rate() is 80MHz (edo mode 4 from the `edo_modes' table). In this case gpmi_nfc_compute_timings() will return error, and will be called again for edo mode 4 configuration, which this time will be successful. [1] https://lore.kernel.org/r/20210702065350.209646-5-ebiggers@kernel.org [2] http://www.onfi.org/-/media/client/onfi/specs/onfi_3_0_gold.pdf?la=en Co-developed-by: Michael Trimarchi Signed-off-by: Michael Trimarchi Signed-off-by: Dario Binacchi --- Changes in v2: - Fix commit description. - Add an example to the commit description to better understand the problem solved by the patch. - Split the patch. drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 24 ++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c b/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c index 4ac695aa5131..7ae7a37775a3 100644 --- a/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c +++ b/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c @@ -665,8 +665,8 @@ static const struct edo_mode edo_modes[] = { * RDN_DELAY = ----------------------- {3} * RP */ -static void gpmi_nfc_compute_timings(struct gpmi_nand_data *this, - const struct nand_sdr_timings *sdr) +static int gpmi_nfc_compute_timings(struct gpmi_nand_data *this, + const struct nand_sdr_timings *sdr) { struct gpmi_nfc_hardware_timing *hw = &this->hw; struct resources *r = &this->resources; @@ -679,6 +679,7 @@ static void gpmi_nfc_compute_timings(struct gpmi_nand_data *this, u16 busy_timeout_cycles; u8 wrn_dly_sel; int i, emode = ARRAY_SIZE(edo_modes) - 1; + long clk_rate; /* Search the required EDO mode */ for (i = 0; i < ARRAY_SIZE(edo_modes); i++) { @@ -688,7 +689,18 @@ static void gpmi_nfc_compute_timings(struct gpmi_nand_data *this, } } - hw->clk_rate = clk_round_rate(r->clock[0], edo_modes[emode].clk_rate); + clk_rate = clk_round_rate(r->clock[0], edo_modes[emode].clk_rate); + if (emode > 0 && !(clk_rate <= edo_modes[emode].clk_rate && + clk_rate > edo_modes[emode - 1].clk_rate)) { + dev_err(this->dev, + "edo mode %d clock setting: expected %ld, got %ld\n", + emode, edo_modes[emode].clk_rate, clk_rate); + return -ENOTSUPP; + } + + dev_dbg(this->dev, "edo mode %d @ %ld Hz\n", emode, clk_rate); + + hw->clk_rate = clk_rate; wrn_dly_sel = edo_modes[emode].wrn_dly_sel; /* SDR core timings are given in picoseconds */ @@ -731,6 +743,7 @@ static void gpmi_nfc_compute_timings(struct gpmi_nand_data *this, hw->ctrl1n |= BF_GPMI_CTRL1_RDN_DELAY(sample_delay_factor) | BM_GPMI_CTRL1_DLL_ENABLE | (use_half_period ? BM_GPMI_CTRL1_HALF_PERIOD : 0); + return 0; } static int gpmi_nfc_apply_timings(struct gpmi_nand_data *this) @@ -786,6 +799,7 @@ static int gpmi_setup_interface(struct nand_chip *chip, int chipnr, { struct gpmi_nand_data *this = nand_get_controller_data(chip); const struct nand_sdr_timings *sdr; + int ret; /* Retrieve required NAND timings */ sdr = nand_get_sdr_timings(conf); @@ -801,7 +815,9 @@ static int gpmi_setup_interface(struct nand_chip *chip, int chipnr, return 0; /* Do the actual derivation of the controller timings */ - gpmi_nfc_compute_timings(this, sdr); + ret = gpmi_nfc_compute_timings(this, sdr); + if (ret) + return ret; this->hw.must_apply_timings = true; From patchwork Mon Jan 17 11:18:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Dario Binacchi X-Patchwork-Id: 1580734 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=mzijRA+f; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amarulasolutions.com header.i=@amarulasolutions.com header.a=rsa-sha256 header.s=google header.b=H68wnCWC; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4JcqGv1c8Yz9s9c for ; Mon, 17 Jan 2022 22:21:27 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=R7hU9LzvfPLd5TJNiCJisAnfpjTxzjBZ7fvydah9HiQ=; b=mzijRA+fNBiyeJ 5yuMGG1oriBDx2G0vdimSC0DIfpUnJPfZTmaPg7OdAuBopHVMSCPEyYg4KTqEmYCaCuNjhsVzGP03 keOTjXSPTamuyilCUoM2F6LrF/D7D9Pxvzt0PqD4wRaGCs2yyRYoTyHgVWJkgP2XRFvg69nZ5Clrk 3Z0wAShC+6xpBUqLLLXCFiskcqAQENt1NIhCTFc7Zq2NPnoOWZKRPav8AfFpZu96wsHQxxj6gcnqS S8wZsaTLN781MIeieJS4stYk3XSmnYQJdv9WCltRKwR8FSE9vRf3VxVNbd5pn3tFNk5GOIGkqYOfQ hgnrM1WlhHsYho9u8eCw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1n9Q3k-00EdZx-5Q; Mon, 17 Jan 2022 11:20:24 +0000 Received: from mail-ed1-x52b.google.com ([2a00:1450:4864:20::52b]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1n9Q25-00EcxS-6Q for linux-mtd@lists.infradead.org; Mon, 17 Jan 2022 11:18:43 +0000 Received: by mail-ed1-x52b.google.com with SMTP id k15so63984273edk.13 for ; Mon, 17 Jan 2022 03:18:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=1U+MO7BClWc4cGfvNBl6cQXhNHZ2EpawrE7wpyjmSlU=; b=H68wnCWCkg20QgNO8XJpB6pf6OSiPm1Nv2FITEANqlmGTdw2efMMfOEbbWmNs9ajC9 46SEzeFfEUUG1Q/9PaOAZouyJ8WfFBMtiGHqKWTh4ATWtEAnoAmpTTA7L0zQqcpY85gy RCaHaQrgR8L7gGP6hTcWXy4Wk0mTaW2Y4VInA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=1U+MO7BClWc4cGfvNBl6cQXhNHZ2EpawrE7wpyjmSlU=; b=rlfWeTHyrY5KW/b9vqWAT5mYqe1mOlsS01BvF6jnJsCygOzIgYaSq9p6mH1pk0ln0S QoySBg3yGPiZHhZKV/4iwMXxHQG/d70DIvIUzko/5L0Xk9K1eat4iW+A+lfA/o9a56AN v2DgiIIdOJtVB7qa7WyB0/2YlzqSu5QzJWWkeuJVPu3vUbIA8GYXbaIpO88ZzU0zBDdy i25GN25Vj4LS60ChjiL8NKLjf4QhkIpUJMztliEWXwWTaSL+Zr8Bbq4uUqJkDai2d083 cK26P+CY2imbl2eLyEzKGpi9A2Uuqby3yPfT+QFOBHeQuPoPDwMo4PaG2+3eRpZRa/oJ uoEg== X-Gm-Message-State: AOAM533AcP6FYPlvaXUFCdRNfy/6qaga9DkAb+1DeslmAMIBIjqQIPj8 usACkJdGko6ZJpAXDeBSP+nbwA== X-Google-Smtp-Source: ABdhPJwYitGMTeD2cK5kj6+zGxi4gy5j3Ikqrx28OOGxKCPjSf2TZwLzdfYgk1MnXae2y9supUWsRQ== X-Received: by 2002:a17:906:8cf:: with SMTP id o15mr15146840eje.603.1642418320033; Mon, 17 Jan 2022 03:18:40 -0800 (PST) Received: from dario-ThinkPad-T14s-Gen-2i.homenet.telecomitalia.it (host-82-52-8-210.retail.telecomitalia.it. [82.52.8.210]) by smtp.gmail.com with ESMTPSA id f11sm5142713edv.67.2022.01.17.03.18.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Jan 2022 03:18:39 -0800 (PST) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: Michael Trimarchi , Dario Binacchi , Han Xu , Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , linux-mtd@lists.infradead.org Subject: [RFC PATCH v2 5/5] mtd: rawnand: gpmi: support fast edo timings for mx28 Date: Mon, 17 Jan 2022 12:18:29 +0100 Message-Id: <20220117111829.1811997-6-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220117111829.1811997-1-dario.binacchi@amarulasolutions.com> References: <20220117111829.1811997-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220117_031841_305897_3D68D4AC X-CRM114-Status: GOOD ( 15.69 ) X-Spam-Score: -0.2 (/) X-Spam-Report: =?unknown-8bit?q?Spam_detection_software=2C_running_on_the_sy?= =?unknown-8bit?q?stem_=22bombadil=2Einfradead=2Eorg=22=2C?= =?unknown-8bit?q?_has_NOT_identified_this_incoming_email_as_spam=2E__The_ori?= =?unknown-8bit?q?ginal?= =?unknown-8bit?q?_message_has_been_attached_to_this_so_you_can_view_it_or_la?= =?unknown-8bit?q?bel?= =?unknown-8bit?q?_similar_future_email=2E__If_you_have_any_questions=2C_see?= =?unknown-8bit?q?_the_administrator_of_that_system_for_details=2E?= =?unknown-8bit?q?_?= =?unknown-8bit?q?_Content_preview=3A__In_the_i=2EMX28_manual_=28MCIMX28RM=2C?= =?unknown-8bit?q?_Rev=2E_1=2C_2010=29_you_can_find?= =?unknown-8bit?q?_an_example_=2815=2E2=2E4_High-Speed_NAND_Timing=29_of_how_?= =?unknown-8bit?q?to_configure_the_GPMI_controller?= =?unknown-8bit?q?_to_manage_High-Speed_=E2=80=8B=E2=80=8BNAND_devices=2C_so_?= =?unknown-8bit?q?it_was_wrong_=5B=2E=2E=2E=5D_?= =?unknown-8bit?q?_?= =?unknown-8bit?q?_Content_analysis_details=3A___=28-0=2E2_points=2C_5=2E0_re?= =?unknown-8bit?q?quired=29?= =?unknown-8bit?q?_?= =?unknown-8bit?q?_pts_rule_name______________description?= =?unknown-8bit?q?_----_----------------------_------------------------------?= =?unknown-8bit?q?--------------------?= =?unknown-8bit?q?_-0=2E0_RCVD=5FIN=5FDNSWL=5FNONE_____RBL=3A_Sender_listed_a?= =?unknown-8bit?q?t_https=3A//www=2Ednswl=2Eorg/=2C?= =?unknown-8bit?q?_no_trust?= =?unknown-8bit?b?IFsyYTAwOjE0NTA6NDg2NDoyMDowOjA6MDo1MmIgbGlzdGVkIGluXQ==?= =?unknown-8bit?b?IFtsaXN0LmRuc3dsLm9yZ10=?= =?unknown-8bit?q?_-0=2E0_SPF=5FPASS_______________SPF=3A_sender_matches_SPF_?= =?unknown-8bit?q?record?= =?unknown-8bit?q?_0=2E0_SPF=5FHELO=5FNONE__________SPF=3A_HELO_does_not_publ?= =?unknown-8bit?q?ish_an_SPF_Record?= =?unknown-8bit?q?_-0=2E1_DKIM=5FVALID=5FAU__________Message_has_a_valid_DKIM?= =?unknown-8bit?q?_or_DK_signature_from?= =?unknown-8bit?q?_author=27s_domain?= =?unknown-8bit?q?_-0=2E1_DKIM=5FVALID_____________Message_has_at_least_one_v?= =?unknown-8bit?q?alid_DKIM_or_DK_signature?= =?unknown-8bit?q?_0=2E1_DKIM=5FSIGNED____________Message_has_a_DKIM_or_DK_si?= =?unknown-8bit?q?gnature=2C_not_necessarily?= =?unknown-8bit?q?_valid?= =?unknown-8bit?q?_-0=2E1_DKIM=5FVALID=5FEF__________Message_has_a_valid_DKIM?= =?unknown-8bit?q?_or_DK_signature_from?= =?unknown-8bit?q?_envelope-from_domain?= X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org In the i.MX28 manual (MCIMX28RM, Rev. 1, 2010) you can find an example (15.2.4 High-Speed NAND Timing) of how to configure the GPMI controller to manage High-Speed ​​NAND devices, so it was wrong to assume that only i.MX6 can achieve EDO timings. This patch has been tested on a 2048/64 byte NAND (Micron MT29F2G08ABAEAH4). Kernel mtd tests: - mtd_nandbiterrs - mtd_nandecctest - mtd_oobtest - mtd_pagetest - mtd_readtest - mtd_speedtest - mtd_stresstest - mtd_subpagetest - mtd_torturetest [cycles_count = 10000000] run without errors. Before this patch (mode 0): --------------------------- eraseblock write speed is 2098 KiB/s eraseblock read speed is 2680 KiB/s page write speed is 1689 KiB/s page read speed is 2522 KiB/s 2 page write speed is 1899 KiB/s 2 page read speed is 2579 KiB/s erase speed is 128000 KiB/s 2x multi-block erase speed is 73142 KiB/s 4x multi-block erase speed is 204800 KiB/s 8x multi-block erase speed is 256000 KiB/s 16x multi-block erase speed is 256000 KiB/s 32x multi-block erase speed is 256000 KiB/s 64x multi-block erase speed is 256000 KiB/s After this patch (mode 5): ------------------------- eraseblock write speed is 3390 KiB/s eraseblock read speed is 5688 KiB/s page write speed is 2680 KiB/s page read speed is 4876 KiB/s 2 page write speed is 2909 KiB/s 2 page read speed is 5224 KiB/s erase speed is 170666 KiB/s 2x multi-block erase speed is 204800 KiB/s 4x multi-block erase speed is 256000 KiB/s 8x multi-block erase speed is 256000 KiB/s 16x multi-block erase speed is 256000 KiB/s 32x multi-block erase speed is 256000 KiB/s 64x multi-block erase speed is 256000 KiB/s Co-developed-by: Michael Trimarchi Signed-off-by: Michael Trimarchi Signed-off-by: Dario Binacchi --- Changes in v2: - Improve the commit message. - Move the patch to the end of the series. drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c b/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c index 7ae7a37775a3..7b9191a70ed1 100644 --- a/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c +++ b/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c @@ -806,8 +806,8 @@ static int gpmi_setup_interface(struct nand_chip *chip, int chipnr, if (IS_ERR(sdr)) return PTR_ERR(sdr); - /* Only MX6 GPMI controller can reach EDO timings */ - if (sdr->tRC_min <= 25000 && !GPMI_IS_MX6(this)) + /* Only MX28/MX6 GPMI controller can reach EDO timings */ + if (sdr->tRC_min <= 25000 && !GPMI_IS_MX28(this) && !GPMI_IS_MX6(this)) return -ENOTSUPP; /* Stop here if this call was just a check */