Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp2971318pxb; Mon, 17 Jan 2022 09:13:00 -0800 (PST) X-Google-Smtp-Source: ABdhPJz4wtLplv6dm/9OaK3VTD4ruZwum7fUIHfvkPlqlDdbaMIUu/gQo7opI5BRvX9ykhb7d8kG X-Received: by 2002:a05:6a00:b45:b0:4bf:a112:fd0c with SMTP id p5-20020a056a000b4500b004bfa112fd0cmr21914964pfo.50.1642439580552; Mon, 17 Jan 2022 09:13:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1642439580; cv=none; d=google.com; s=arc-20160816; b=gMSJPtHcCvVOf8rMbw32WBOWc2SfLuukQXF/b24Rzi/tcw5sKUVNFHw8m8x3/cAxtD q4TYs1QS90u48Ew70tfw1nR25nvUxRMgpzOyvC6U7VFF8Rki0Y6FM+NwsBBkme4OTw4N KIV2HSpRB0bQSDi8q2thUQ9GHyn93uF2WSvouH4zPY8y7ffiYef8xzWP6O9cZJF1gErr WM/xbeKOaieaYd6GkSNEIP5EYAh9LOVJ0y5RjU4U9WklRU/gyF7qyYC/ZAKH5E6ucJG8 2HEa3CTNs2Ts6gOd/3rpCl9rqkNgOQ5hoFnaPPFDDlRgtLck9ZjdG3JhwivkvFyrSmeN 5jog== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Iq4FM2PRLAcot9iAnDMYHV6yAJ0nWXkPdknU80um0hk=; b=LFAm4LemStXa1YvcD97hCmrq8H8Jj1gHUu8Iyfb1FWB9fApXW+jkeaX+5aRc0JO2xM CeoQDRxR1EGaNpPcsznP8VnKb6UN/ZC+RBSqUeH7xL5Vpo7zZU1AqZzwTP1Awov7KQAu pC48BLqF3h7mrm5aIBFfR3xrfEof+hWscipz7CKUgfKfa9r4AfRq0FqKKHfP3/p4LiIt BSjT3ylgCHbimcqPTETBvXpt6wI9UZUVpJSfELQiMh2fKOhcomzTMEjTvYg5d/ip+4FU qU8AHHB9eNUVovrUnK/wuzfxpu1/WACsAWRS75HivvFWenrjeSvCYljE0DhBXJSoH5J5 Rsrw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=IB+KjWd8; 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 h31si11759008pgb.387.2022.01.17.09.12.45; Mon, 17 Jan 2022 09:13:00 -0800 (PST) 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; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=IB+KjWd8; 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 S236757AbiAQLSk (ORCPT + 99 others); Mon, 17 Jan 2022 06:18:40 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51082 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236488AbiAQLSi (ORCPT ); Mon, 17 Jan 2022 06:18:38 -0500 Received: from mail-ed1-x52e.google.com (mail-ed1-x52e.google.com [IPv6:2a00:1450:4864:20::52e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 016DAC061574 for ; Mon, 17 Jan 2022 03:18:38 -0800 (PST) Received: by mail-ed1-x52e.google.com with SMTP id k15so63983595edk.13 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=52ZQfms2VBqrlGs1lNjFWGZG2zKF1DSy7TmO8KI3YVTmTyK2ohqPv5TJV3BFkLt6RL rSkHrBvvIPP/JJ/HEauoGDDYf8+HS8pz2o6gqqzk47kO7nMG6safJsCHc5w7j2ngdrHN 2ZAMgsMVzIBJ7pqw1Kfc7s2dD7ulcV8jVMwdmwgpCevYFGLg6Yb6CvvFjQ4g52ImLA1s udRH8U1kjZK+ibN8evfNZ/XaeRN7RG6CmWZcQ/972/6r/p0yqrV/Mi2jJmPiHO6ko4Am gYIYyzxbI6XXDS7jMU4Qq7HHAgZEInl/eCQJCAnENMMtTNsrNBjnkaZIMke6MsGOzwRP mzlg== X-Gm-Message-State: AOAM531eSh6Ox4tJumpNd444tkKggtfw3h0u4cwikZ1zRrwpzA2/x8DL KJaUVsq9ljN4Pc/WMWBjzg0PE/uDXtzaEfGy 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 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.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); -- 2.32.0