Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp917330pxb; Wed, 6 Apr 2022 04:13:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwIqDsl85g7PgcMeIh/sQOYC/5oXYLmnXV52uVQNFIDio7Ziw6EUpeZ9EuikvOL+/6xkTpq X-Received: by 2002:a05:6a00:1990:b0:4fa:b49c:d64b with SMTP id d16-20020a056a00199000b004fab49cd64bmr8246605pfl.82.1649243606675; Wed, 06 Apr 2022 04:13:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649243606; cv=none; d=google.com; s=arc-20160816; b=dWKZyUwPs5fmekrEfEqruPM1OCIrQviflHzBB2x72rOPmSXUh50AegRSBvQYPPG8oR sWys/Z9F1VoJi3Ji7xcLobsYuRVcWbz45uycL3X0v9xNxqfGJfbLwN+9qGIbQ5e/aEfo scWdD1jiZEJ5CKrDqoNrFQco7qsqq3JGfDwbA8LAqoVDk4S41UhRDNPPZEwvgg4ymM6q 9GuFt61xgMWcJjDjfjmnt5bvALv3LEDEgd+K2ATTr6yyYwarg4mAO1lKxlvRclxDcx3u DAP6Emh+ToFxv9g/Wz/NZpVyp61vqkxmN3tlUiGC1cREiDZfISZAQWP8SOI8VtEVU5nf CSJQ== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=KMfcZLXSOE1omfsVBUDDCb60LLDRylTA1PzK+oDOeZM=; b=0J+7KtLd1ZHs3//7hFCbLCZaQ/1ysUifpdlhc3yk/PdHFPzcItEJu7bs7fzD59oSgj c8mqfE6+944oGq7jVHUCusS+xO7nTpqM+KUghYZEHlgVm9KAciRIeD08pZuXfE8jLC+x hN++Hwh/gVY8Iz5jh+4Z/MaA4G16M03Imio7lGHGfKSZAkdiinws4+eP0t7sW0rPkbD9 u8A2c9MUhdiGk3hhgepKk2/ogtO/5t3fQlY5OkjaxeRJO3T01sRcqG+7jxupvuUeuINR Q4qdtknPN7Z6/07pujP0a1DRaw0GHpMJgXJDLrkAN8ALS3g0RwBbw+IgsuZPrfgz0kor UdHA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=0rAAEPYv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id nl11-20020a17090b384b00b001c7511dc330si5119242pjb.167.2022.04.06.04.13.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Apr 2022 04:13:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=0rAAEPYv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id A84A55D4BA6; Wed, 6 Apr 2022 02:38:38 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1574265AbiDEWzP (ORCPT + 99 others); Tue, 5 Apr 2022 18:55:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37026 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348824AbiDEJsj (ORCPT ); Tue, 5 Apr 2022 05:48:39 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A4322B0A40; Tue, 5 Apr 2022 02:36:22 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 61394B81C86; Tue, 5 Apr 2022 09:36:21 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B86F8C385A2; Tue, 5 Apr 2022 09:36:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1649151380; bh=CdfFcO1jIDuNdd+SI4m8yeunLS9mZcmGE5cesvhcQZA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=0rAAEPYvPSloGQUfJSo3fQurlhmtvD2k5UC8/TGGl+P4COKikFtXOkAuxN62/PSrt 6I1+Fgb1Se3I4D0kYhBQ+rE+ZSYkR0F1cANVAPZupXDqxBGkkYRVVzdil93K1fijOs Fd9FRx4KG6ajAI3cDqjnfZVBXP10imN0JsC7qcKI= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Michael Trimarchi , Dario Binacchi , Sascha Hauer , Miquel Raynal , Sasha Levin Subject: [PATCH 5.15 394/913] mtd: rawnand: gpmi: fix controller timings setting Date: Tue, 5 Apr 2022 09:24:16 +0200 Message-Id: <20220405070351.658328390@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220405070339.801210740@linuxfoundation.org> References: <20220405070339.801210740@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Dario Binacchi [ Upstream commit 2970bf5a32f079e1e9197411db4fe9faccb1503a ] 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 Tested-by: Sascha Hauer Reviewed-by: Sascha Hauer Signed-off-by: Miquel Raynal Link: https://lore.kernel.org/linux-mtd/20220118095434.35081-3-dario.binacchi@amarulasolutions.com Signed-off-by: Sasha Levin --- 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 668d69fe4cf2..b72b387c08ef 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.34.1