Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp5647805rwl; Tue, 21 Mar 2023 23:44:48 -0700 (PDT) X-Google-Smtp-Source: AK7set8Nc1SIRR6cRdpHoLrb9O2E7J9kI8EYBM/xpPjqt1Khzrb714q/xRF7nBuRA16NoR77G6Fm X-Received: by 2002:a17:907:96a3:b0:930:1914:88fe with SMTP id hd35-20020a17090796a300b00930191488femr6930068ejc.68.1679467487859; Tue, 21 Mar 2023 23:44:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679467487; cv=none; d=google.com; s=arc-20160816; b=xgHlok+yRVk2ANIJy6T3qzTbaOLWbtGkMqPt1soXJdcyYv3lVFDdtvby6NWsdXQyve ax0QYIXSjGE0YtF5Xa12KWr8Vj1Iaf32iZYg7D84Bf1kRujxOj+Fc0ceg7XrnViSI1r4 h425Cv8zewQN4H8CTl6l5/tXv4mbHrrEFC1mkNeOMTRtkkx9SZz1bJllgXuytnYkG6DM faFYtPGi4I8On85H+CBIUt3iNxX6SK6T8XKcML+bN3RB03007ZB1jeG3bFpT3BrJvfe4 a9/W+KEeIFtGCCi7lB1Q2xfAsd4Df4mK2PS/FdiaROUMZb4iChj3mszEEMMHUIe//T9b xzEw== 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=7CqzcpXczhyO/MskUeS2f3sX+qT4MR1so+/9l/YtqFc=; b=T9FwRqL6HQ4gPKmS7xxCyL+xq6p+1POmbFxrHITs/1Z9zDgin/+D92/R5BSciIUXrz pTQOmWIwqGR5fCJdTmU5YFVHAgH92Ix6mwMrarE5W94YynDCH1vLBOSQOCep78Aits75 2NtQXcFx2OLZ/7R/Eqccv8bXS7M4Ojc2fDU8PSpvqmKFKFXYMcyZV3eFSYtIEQ1iqKWC zwrK6Ibk16bAGOVONzwu5D7+XcsFCYV7sy1RzHxFst9m5WtAjwNAsWiHXubojPD3H/ko tYYZJBWM4NMz3juVJcewDzy83xr8HWxGFZ06VnluqDcPIYxjhgo1zkgEmGQKvO7Pq23P HVcg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="FBY/smWU"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h16-20020a1709062dd000b00931d1a018casi13857773eji.169.2023.03.21.23.44.23; Tue, 21 Mar 2023 23:44:47 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="FBY/smWU"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230076AbjCVGlC (ORCPT + 99 others); Wed, 22 Mar 2023 02:41:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43288 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229995AbjCVGkp (ORCPT ); Wed, 22 Mar 2023 02:40:45 -0400 Received: from mail-lf1-x131.google.com (mail-lf1-x131.google.com [IPv6:2a00:1450:4864:20::131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 65B9C5BC83 for ; Tue, 21 Mar 2023 23:40:44 -0700 (PDT) Received: by mail-lf1-x131.google.com with SMTP id y15so22046534lfa.7 for ; Tue, 21 Mar 2023 23:40:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1679467242; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=7CqzcpXczhyO/MskUeS2f3sX+qT4MR1so+/9l/YtqFc=; b=FBY/smWUsRVvtCRBAfu8tQadv6JK++O9TapE/YI0DuNHxOCWLhDs9GYPplwqqpsBN5 zVkmNEZr7JO0NIFOnoRkM+/kA0/flpg7UlxvUyezgLe69esU9lgSuei0bOORS9cW03t1 8O8XnEfpk2qVI3bQiPy4QJnSZXgQ7q7V1jXrcR+WhYuWOVcQLkiKD56DbPzvluSBTO92 RHlyaPq42jgfy73Onu8iS27AINcP82/5iYD/pTUwGROob5gLLEgz1EGBXIjz90Z8JoJt yYfsDmgzPJoGKQj6sLskGF4mSscx1fjW8OZHqHrIpN6RDcuSMlS503Hd+hGOEiuI/eL2 TutA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679467242; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7CqzcpXczhyO/MskUeS2f3sX+qT4MR1so+/9l/YtqFc=; b=si/OrXoYGV6g0JOBdhTN80TEjOCaw1lCEUQ4QowNtGVidtbqKQM1KGw/gE5m0/WR4/ P8HrW7yd854SDEo87xUN45RmCjSR1/oGYcryyKZVRESnyP5xPE1vuOL89/1w77Wmjp+u lXOXp+7JueaNeC0lIIlVbB3xe0SOP0Lj0FJGAd8o09TlYNCVRnad4Ts68XN3KE+RPK0m NcGphwX/VqRQJl58BlxyqjFUEIDtZVaQCJ8ZLj4MBKZJFMUx9aa2vpDLVdEOck4yt4X/ 2jHnew3WdsONppzSxF7ss23hII2XpXSTDIuQnqFtjdCVOvYtl8ykbF3ZQpdD4v3seLtb sogA== X-Gm-Message-State: AO0yUKXTo+Nfo4GNjz1M7Ji9f4bYXuDb1WU1gX/eofXiVjYxtqI6cvYe F9571yq2ntGBECiKTKXF/jUNzgzK2Bw95egJBW4D7g== X-Received: by 2002:a05:6512:3751:b0:4a4:68b9:19e7 with SMTP id a17-20020a056512375100b004a468b919e7mr1642583lfs.15.1679467242589; Tue, 21 Mar 2023 23:40:42 -0700 (PDT) Received: from ta1.c.googlers.com.com (61.215.228.35.bc.googleusercontent.com. [35.228.215.61]) by smtp.gmail.com with ESMTPSA id n20-20020ac242d4000000b004dafde0e7b7sm2462255lfl.279.2023.03.21.23.40.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Mar 2023 23:40:41 -0700 (PDT) From: Tudor Ambarus To: michael@walle.cc, pratyush@kernel.org Cc: miquel.raynal@bootlin.com, richard@nod.at, Takahiro.Kuwano@infineon.com, bacem.daassi@infineon.com, linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, Tudor Ambarus , Pratyush Yadav Subject: [PATCH v4 07/11] mtd: spi-nor: Favor the BFPT-parsed set_4byte_addr_mode method Date: Wed, 22 Mar 2023 06:40:29 +0000 Message-Id: <20230322064033.2370483-8-tudor.ambarus@linaro.org> X-Mailer: git-send-email 2.40.0.rc1.284.g88254d51c5-goog In-Reply-To: <20230322064033.2370483-1-tudor.ambarus@linaro.org> References: <20230322064033.2370483-1-tudor.ambarus@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-0.2 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=unavailable 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 JESD216 SFDP defines in the BFPT standard methods to enter and exit the 4-Byte Address Mode. The flash parameters and settings that are retrieved from SFDP have higher precedence than the static initialized ones, because they should be more accurate and less error prone than those initialized statically. Favor the BFPT-parsed set_4byte_addr_mode method and use the generic core methods where possible. This patch may introduce regressions in case BFPT contains wrong data. The fix is to introduce a post_bfpt() fixup hook and update the wrong BFPT data. Signed-off-by: Tudor Ambarus Reviewed-by: Pratyush Yadav --- drivers/mtd/spi-nor/core.c | 7 ++++++- drivers/mtd/spi-nor/macronix.c | 8 +++++++- drivers/mtd/spi-nor/micron-st.c | 6 ++++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/drivers/mtd/spi-nor/core.c b/drivers/mtd/spi-nor/core.c index e212cc3c630d..2a08f8de97fa 100644 --- a/drivers/mtd/spi-nor/core.c +++ b/drivers/mtd/spi-nor/core.c @@ -2533,6 +2533,8 @@ static void spi_nor_init_fixup_flags(struct spi_nor *nor) */ static void spi_nor_late_init_params(struct spi_nor *nor) { + struct spi_nor_flash_parameter *params = nor->params; + if (nor->manufacturer && nor->manufacturer->fixups && nor->manufacturer->fixups->late_init) nor->manufacturer->fixups->late_init(nor); @@ -2540,6 +2542,10 @@ static void spi_nor_late_init_params(struct spi_nor *nor) if (nor->info->fixups && nor->info->fixups->late_init) nor->info->fixups->late_init(nor); + /* Default method kept for backward compatibility. */ + if (!params->set_4byte_addr_mode) + params->set_4byte_addr_mode = spi_nor_set_4byte_addr_mode_brwr; + spi_nor_init_flags(nor); spi_nor_init_fixup_flags(nor); @@ -2606,7 +2612,6 @@ static void spi_nor_init_default_params(struct spi_nor *nor) struct device_node *np = spi_nor_get_flash_node(nor); params->quad_enable = spi_nor_sr2_bit1_quad_enable; - params->set_4byte_addr_mode = spi_nor_set_4byte_addr_mode_brwr; params->otp.org = &info->otp_org; /* Default to 16-bit Write Status (01h) Command */ diff --git a/drivers/mtd/spi-nor/macronix.c b/drivers/mtd/spi-nor/macronix.c index 91a8fa7d4512..075a26945f2d 100644 --- a/drivers/mtd/spi-nor/macronix.c +++ b/drivers/mtd/spi-nor/macronix.c @@ -105,11 +105,17 @@ static const struct flash_info macronix_nor_parts[] = { static void macronix_nor_default_init(struct spi_nor *nor) { nor->params->quad_enable = spi_nor_sr1_bit6_quad_enable; - nor->params->set_4byte_addr_mode = spi_nor_set_4byte_addr_mode_en4b_ex4b; +} + +static void macronix_nor_late_init(struct spi_nor *nor) +{ + if (!nor->params->set_4byte_addr_mode) + nor->params->set_4byte_addr_mode = spi_nor_set_4byte_addr_mode_en4b_ex4b; } static const struct spi_nor_fixups macronix_nor_fixups = { .default_init = macronix_nor_default_init, + .late_init = macronix_nor_late_init, }; const struct spi_nor_manufacturer spi_nor_macronix = { diff --git a/drivers/mtd/spi-nor/micron-st.c b/drivers/mtd/spi-nor/micron-st.c index a75f0f4e1c38..4d5333b14807 100644 --- a/drivers/mtd/spi-nor/micron-st.c +++ b/drivers/mtd/spi-nor/micron-st.c @@ -425,13 +425,15 @@ static void micron_st_nor_default_init(struct spi_nor *nor) nor->flags |= SNOR_F_HAS_LOCK; nor->flags &= ~SNOR_F_HAS_16BIT_SR; nor->params->quad_enable = NULL; - nor->params->set_4byte_addr_mode = spi_nor_set_4byte_addr_mode_wren_en4b_ex4b; } static void micron_st_nor_late_init(struct spi_nor *nor) { + struct spi_nor_flash_parameter *params = nor->params; + if (nor->info->mfr_flags & USE_FSR) - nor->params->ready = micron_st_nor_ready; + params->ready = micron_st_nor_ready; + params->set_4byte_addr_mode = spi_nor_set_4byte_addr_mode_wren_en4b_ex4b; } static const struct spi_nor_fixups micron_st_nor_fixups = { -- 2.40.0.rc1.284.g88254d51c5-goog