Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp933842pxb; Wed, 6 Apr 2022 04:43:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzLl2nmRJZdg6jX2fdqVlcvqkvuCQ2Knogn/a6v+B8HsuefYbVwpmWC2qrVFfZhekB3QPs2 X-Received: by 2002:a17:902:e74d:b0:156:9d3c:4271 with SMTP id p13-20020a170902e74d00b001569d3c4271mr8229042plf.79.1649245403063; Wed, 06 Apr 2022 04:43:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649245403; cv=none; d=google.com; s=arc-20160816; b=M75UQBTryXjmJd3JOVhDfYw7CtD1gjh/c3AxVRLilsFIG7Mxi+K2SGQppD+WY/I84x 11PP2lAbG+LcmMJU1WmULFbnuWiPbk3vuXZnqZ5/RLO6E4Yea/Z2uD6TXqr1DjzmKyax pGBOmiLWyi0BJcd2IFdLJIAaJdVSPh086KR63c1SSbhugWASDfnQR885tllFs791rdqM 4LGYTQ4wqwgSt6qid5HMcK0ZuGsIMigS4bI7zkvXhKaHBTBpqFDpX4XQOhqzN4y8i6LT phWpRQvmMWlRGqQAGhGXF/W5l2CP8ID9YzVLMkEUlA5m7SU0YlXg1YEqml1wzMvjnUma NPwA== 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=Gc4iA+RXa1V5wtmo5QCwkt4wtv8sV8zv/AJF3xhy5vM=; b=pCvJR6wajszYWkXVVo9M+OWWCIxJUiG39k3s/P07MdqJ1LMUORHFkN4FWO/OMs2hkY 9B3qo1FxkCCndy8h11JmvxZIhcJN4xOFpseYz+ns4VO9vv3V+B9soRHeTWzqdB5b/A4+ 173cIQdJJ8WeXSxccvf/K2gR/n8ylaLbuO0Qck9zefSldTVSWTBzBIQj1XIS0HRkTMJv 5qBL3KWQ0EyOajoVZLqhwW7hIBBpmSiMKJGyYjLZisOJf5RUJSSl6+Z4Cz0n00GnmdXW 8SlVjxMAntIHceYu0xEWu6uyWusqY7Zy/mGbaBJicbY4zerUtsRsXpQicu++aoQ5KYZn rMKA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="oZ4Mq/s6"; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 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. [23.128.96.19]) by mx.google.com with ESMTPS id s1-20020a63d041000000b003816043f063si15306752pgi.600.2022.04.06.04.43.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Apr 2022 04:43:23 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="oZ4Mq/s6"; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 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 A1225378CE3; Wed, 6 Apr 2022 03:00:29 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235987AbiDEVaC (ORCPT + 99 others); Tue, 5 Apr 2022 17:30:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50648 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1358019AbiDEK1t (ORCPT ); Tue, 5 Apr 2022 06:27:49 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 973E968322; Tue, 5 Apr 2022 03:13:01 -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 4D793B81C8A; Tue, 5 Apr 2022 10:13:00 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9E80CC385A1; Tue, 5 Apr 2022 10:12:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1649153579; bh=KvyvzQPXz7RhdPUnpKmA80E4ZfWCmM5CXc2XYEh5Uk8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=oZ4Mq/s6FJuHG62Dkpsd6IBFkgom2m+D8t3q2A1No9vh6FJPnm1Wcba3L3pCBRvQW 2jF9WdmbOUZfxnRET/QZY9kPwQ7M9Sz49f4Guvx8f5P3fLC6VmOIXgsME1CWoJf9cf jJBmzzVHLt79B4uSxEOR99+lPGy6J5LbM9uqIS/g= 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.10 271/599] mtd: rawnand: gpmi: fix controller timings setting Date: Tue, 5 Apr 2022 09:29:25 +0200 Message-Id: <20220405070306.902365839@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220405070258.802373272@linuxfoundation.org> References: <20220405070258.802373272@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 cb7631145700..92e8ca56f566 100644 --- a/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c +++ b/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c @@ -646,6 +646,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; @@ -669,6 +670,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