From patchwork Wed Jul 20 16:22:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dario Binacchi X-Patchwork-Id: 2212 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-ej1-f70.google.com (mail-ej1-f70.google.com [209.85.218.70]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id F40D73F046 for ; Wed, 20 Jul 2022 18:23:02 +0200 (CEST) Received: by mail-ej1-f70.google.com with SMTP id hp13-20020a1709073e0d00b0072b812bc5e9sf4252458ejc.9 for ; Wed, 20 Jul 2022 09:23:02 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1658334182; cv=pass; d=google.com; s=arc-20160816; b=1LxzkA2iIToDszu28OBzBbdkJhksByVvDwYhmhkAvKsM3ZXvbsAME517DDr/Q4Xp4O RZ7bR3KY/11eKjVANOU+yFRv70mOBEHt2WgUYWRZiPKCC2akHhs7t9T9Iq+hBhNjheYV HKmwtmGuCbxvQWeoWI3K452ha00Go6gODLkdBAy3zLuX5/eBTQnvTkolt57YetOLf/W8 tvm9QszdM7yZWaW8jH1lPyMk2INR/08MjTNdx6VkxhWhruq/JYtpQ8jCZukvGRSce4CW sf66pgcTaYmvqvxkFFTJ/21GXdeHVvBE6sk+Sd8ADTCRiTw1QcAtn6rxaWymB823ZPGe 9pog== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=VUpUJjefdYqwIDL/s/KW2j6Mgjydarb1A7kXrCG78U4=; b=Al94J+W7CS7aXgA950z8Cikk2MJuWgVgmJfLU5w5I3XPf0RAvY/1/Isb4s/nBIzB7E +8VqGXeyMPXvkUGfplzMeAYXxAU7+sUi66Z0gcR9sCoZQ9+V1pY2l4mWUnABIqk2iNT+ MMXrS7CJs7a5CTDfnM1TOuD6QmBC/bwBndb5bVvu+D+csFEq/ntAc2XWgqPj6DzLnbsT 4dH430LJAm0h0LX22cXa1zL4LejyBAh7SUjnrUFGb+VR3iPnjB994zfsWShlSwkjoTq2 /UkGWbyLWF8a1Cq8DWW3la3f/wy1j47CU7KzZS4KPN2y0R0YHkDLxtO/RVFr4AU+h9GD xENg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=n7kI6py1; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com 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:x-original-sender:x-original-authentication-results :precedence:mailing-list:list-id:list-post:list-help:list-archive :list-unsubscribe; bh=VUpUJjefdYqwIDL/s/KW2j6Mgjydarb1A7kXrCG78U4=; b=lFCDRJE+iIE5WkE59CC2H8fNH8WDtzHGgFkbpnrRowB40C/Y2zSJj+Dj26XPXuH5vR jcg2b7rd0/iYkM9fpuDfs3JIHw5CLALtWHaBz9RFC2WxXyb6UgpZHAAnC8Tq/xKDo9c6 lmRuFw551cVrFfbJ4usxv+NJAoCABLtKtPUyI= 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:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :x-spam-checked-in-group:list-post:list-help:list-archive :list-unsubscribe; bh=VUpUJjefdYqwIDL/s/KW2j6Mgjydarb1A7kXrCG78U4=; b=aEOwayeHERuLblEB0nWqVNPnWEUA/4hyRY0cVTb8pR5sPdapxyRvw3JHZ6uCKG0/+m K4IwTPUbepJyMGs3OkuT8x/jWnily9BXoK27JJZwBlYBPg6JW0sJL9Opc3uAbww1Hb1G q81A/ab7xyvaDLzv5WZTtWrDm1WcvQlyD8If9UrVqZZ7JzjATIwpKbBQ+aomlmfoLCOk /eLDOd3ECj2PljJsvZgIHgF2BpTj30f2TXGP6SGwQnBS2sXYQMUpf0CGpathQXAFs0WL 3mka2c3idkw8rNAUarVfFdueaY35ccCre5uesFPnT4s1HjM4icHCqR+YoD48zwtcSO6a 0+Pg== X-Gm-Message-State: AJIora83+u6Lpzzq0WnFvZ3M1LRr4h7KyB/JTamDrsSxN0Uh12+5f67J dFEAJ1jSJgbWCY3WxbFz6WxmkJg4 X-Google-Smtp-Source: AGRyM1sE+fru4z4JSMOzZnxaOlPnDnglSDaASAtslLu0iovMHURmmDKWiR/NvzXHXBkwONHY8pQMhA== X-Received: by 2002:a05:6402:194d:b0:43a:82da:b0f3 with SMTP id f13-20020a056402194d00b0043a82dab0f3mr51592045edz.104.1658334182771; Wed, 20 Jul 2022 09:23:02 -0700 (PDT) X-BeenThere: linux-amarula@amarulasolutions.com Received: by 2002:a17:906:94cf:b0:726:2c39:8546 with SMTP id d15-20020a17090694cf00b007262c398546ls377289ejy.8.-pod-prod-gmail; Wed, 20 Jul 2022 09:23:01 -0700 (PDT) X-Received: by 2002:a17:907:c11:b0:72b:6932:831a with SMTP id ga17-20020a1709070c1100b0072b6932831amr37395836ejc.51.1658334181544; Wed, 20 Jul 2022 09:23:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1658334181; cv=none; d=google.com; s=arc-20160816; b=BbGHjAS9oJuzipi0bCninv2yoPED3/5LuRo1D3/KyYBZuE1Q24hPQLQJupjLVE8btJ 40ivp7+lFJGRYDH2SZeDJRYCvnpRdLg2gUL/6uGS2BC15kGgPk0JChdkHZv1xyGCXn38 BZj9rL4bUU1swnj/Ovz284+XSxQql5LxrXB1cqPkAphfmjeimeoPSwnTU4YXSPSwDmCR owR0NmPPsuLRqtI42CDP7zr6OyuAQ8ajgDS7cArn5FvHSHKhLkdJFY8ghNrhQOGjpHIU noHKk92U0tngLd0T+PluVlGN64kSjkok9BaQaOnGQuBGs0Oh0pAMLQNsiKbGuZLx2RRE FiTg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=FsZWT0Murd3SQ44lFE5DRzJg9mfkFK0I1DKwG/FJg6E=; b=HwBQfjvk6etVrAs5xocIBfievtrGXyuRXFHgBAhe1TRRR8Ym6ZJyMY9oN2CEyyeQSH ANXQzmo/9jGvPl5ISyQpfTIMXBRXrABLwHP4bmNPKvcn67NccUa4zCKgX4Gt+9dDF2W5 3xOFtTTW+03RY8QhTl8aORt1WPzfGoPdlKtPSzt7Np7OCzwhj7cX9vqsDIRdkY9TyM5t QKmyN/7mbChslx4+pkuGgOKsfXUdM1OOWE5eDrFle9zK4/oz6L8lLfBnonrygbfLE69v 2HBcSfh7Z0znVWWqZbFZzwPkfpk7SLe0OZENxb7D1C/0nm4Hh9jKs3WXAsaartbThJ35 ZzTg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=n7kI6py1; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41]) by mx.google.com with SMTPS id ky10-20020a170907778a00b0072b30279422sor6281552ejc.98.2022.07.20.09.23.01 for (Google Transport Security); Wed, 20 Jul 2022 09:23:01 -0700 (PDT) Received-SPF: pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41; X-Received: by 2002:a17:907:2c59:b0:72b:8ea2:5128 with SMTP id hf25-20020a1709072c5900b0072b8ea25128mr4596346ejc.590.1658334181307; Wed, 20 Jul 2022 09:23:01 -0700 (PDT) Received: from dario-ThinkPad-T14s-Gen-2i.pdxnet.pdxeng.ch (host-87-14-98-67.retail.telecomitalia.it. [87.14.98.67]) by smtp.gmail.com with ESMTPSA id jl10-20020a17090775ca00b0072ed9efc9dfsm8057839ejc.48.2022.07.20.09.23.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Jul 2022 09:23:00 -0700 (PDT) From: Dario Binacchi To: michael@amarulasolutions.com Cc: Amarula patchwork , Dario Binacchi Subject: [PATCH v3 11/13] mtd: nand: Move Macronix specific initialization in nand_macronix.c Date: Wed, 20 Jul 2022 18:22:14 +0200 Message-Id: <20220720162216.2397616-11-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220720162216.2397616-1-dario.binacchi@amarulasolutions.com> References: <20220720162216.2397616-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 X-Original-Sender: dario.binacchi@amarulasolutions.com X-Original-Authentication-Results: mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=n7kI6py1; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com Content-Type: text/plain; charset="UTF-8" Precedence: list Mailing-list: list linux-amarula@amarulasolutions.com; contact linux-amarula+owners@amarulasolutions.com List-ID: X-Spam-Checked-In-Group: linux-amarula@amarulasolutions.com X-Google-Group-Id: 476853432473 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , From: Michael Trimarchi Upstream linux commit 3b5206f4be9b65. Move Macronix specific initialization logic into nand_macronix.c. This is part of the "separate vendor specific code from core" cleanup process. Signed-off-by: Michael Trimarchi Signed-off-by: Dario Binacchi --- Changes in v3: - Use commit sha1 with 13 digits. - Add the SPDX-License-Identifier tag. - Fix code style warnings raised by patman. Changes in v2: - Use short-commit form - Remove linux info. Uboot seems that backport without add this extra information. - Adjust the include file in nand_macronix. drivers/mtd/nand/raw/Makefile | 4 +++- drivers/mtd/nand/raw/nand_base.c | 11 ---------- drivers/mtd/nand/raw/nand_ids.c | 2 +- drivers/mtd/nand/raw/nand_macronix.c | 31 ++++++++++++++++++++++++++++ include/linux/mtd/rawnand.h | 1 + 5 files changed, 36 insertions(+), 13 deletions(-) create mode 100644 drivers/mtd/nand/raw/nand_macronix.c diff --git a/drivers/mtd/nand/raw/Makefile b/drivers/mtd/nand/raw/Makefile index 9c2ced9925d8..a398aa9d8864 100644 --- a/drivers/mtd/nand/raw/Makefile +++ b/drivers/mtd/nand/raw/Makefile @@ -14,7 +14,8 @@ obj-$(CONFIG_SPL_NAND_DENALI) += denali_spl.o obj-$(CONFIG_SPL_NAND_SIMPLE) += nand_spl_simple.o obj-$(CONFIG_SPL_NAND_LOAD) += nand_spl_load.o obj-$(CONFIG_SPL_NAND_ECC) += nand_ecc.o -obj-$(CONFIG_SPL_NAND_BASE) += nand_base.o nand_amd.o nand_hynix.o nand_micron.o \ +obj-$(CONFIG_SPL_NAND_BASE) += nand_base.o nand_amd.o nand_hynix.o \ + nand_macronix.o nand_micron.o \ nand_samsung.o nand_toshiba.o obj-$(CONFIG_SPL_NAND_IDENT) += nand_ids.o nand_timings.o obj-$(CONFIG_TPL_NAND_INIT) += nand.o @@ -34,6 +35,7 @@ obj-y += nand_ecc.o obj-y += nand_base.o obj-y += nand_amd.o obj-y += nand_hynix.o +obj-y += nand_macronix.o obj-y += nand_micron.o obj-y += nand_samsung.o obj-y += nand_toshiba.o diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c index 68e6f4f14347..4b09a1128827 100644 --- a/drivers/mtd/nand/raw/nand_base.c +++ b/drivers/mtd/nand/raw/nand_base.c @@ -4217,22 +4217,11 @@ static void nand_decode_id(struct nand_chip *chip, struct nand_flash_dev *type) static void nand_decode_bbm_options(struct mtd_info *mtd, struct nand_chip *chip) { - int maf_id = chip->id.data[0]; - /* Set the bad block position */ if (mtd->writesize > 512 || (chip->options & NAND_BUSWIDTH_16)) chip->badblockpos = NAND_LARGE_BADBLOCK_POS; else chip->badblockpos = NAND_SMALL_BADBLOCK_POS; - - /* - * Bad block marker is stored in the last page of each block on Samsung - * and Hynix MLC devices; stored in first two pages of each block on - * Micron devices with 2KiB pages and on SLC Samsung, Hynix, Toshiba, - * AMD/Spansion, and Macronix. All others scan only the first page. - */ - if (nand_is_slc(chip) && maf_id == NAND_MFR_MACRONIX) - chip->bbt_options |= NAND_BBT_SCAN2NDPAGE; } static inline bool is_full_id_nand(struct nand_flash_dev *type) diff --git a/drivers/mtd/nand/raw/nand_ids.c b/drivers/mtd/nand/raw/nand_ids.c index c78f2e088040..7602dd30f169 100644 --- a/drivers/mtd/nand/raw/nand_ids.c +++ b/drivers/mtd/nand/raw/nand_ids.c @@ -197,7 +197,7 @@ struct nand_manufacturers nand_manuf_ids[] = { {NAND_MFR_HYNIX, "Hynix", &hynix_nand_manuf_ops}, {NAND_MFR_MICRON, "Micron", µn_nand_manuf_ops}, {NAND_MFR_AMD, "AMD/Spansion", &amd_nand_manuf_ops}, - {NAND_MFR_MACRONIX, "Macronix"}, + {NAND_MFR_MACRONIX, "Macronix", ¯onix_nand_manuf_ops}, {NAND_MFR_EON, "Eon"}, {NAND_MFR_SANDISK, "SanDisk"}, {NAND_MFR_INTEL, "Intel"}, diff --git a/drivers/mtd/nand/raw/nand_macronix.c b/drivers/mtd/nand/raw/nand_macronix.c new file mode 100644 index 000000000000..dc972e590922 --- /dev/null +++ b/drivers/mtd/nand/raw/nand_macronix.c @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2017 Free Electrons + * Copyright (C) 2017 NextThing Co + * + * Author: Boris Brezillon + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include + +static int macronix_nand_init(struct nand_chip *chip) +{ + if (nand_is_slc(chip)) + chip->bbt_options |= NAND_BBT_SCAN2NDPAGE; + + return 0; +} + +const struct nand_manufacturer_ops macronix_nand_manuf_ops = { + .init = macronix_nand_init, +}; diff --git a/include/linux/mtd/rawnand.h b/include/linux/mtd/rawnand.h index bb1a359a9c14..aa45558b3d41 100644 --- a/include/linux/mtd/rawnand.h +++ b/include/linux/mtd/rawnand.h @@ -1143,6 +1143,7 @@ extern const struct nand_manufacturer_ops samsung_nand_manuf_ops; extern const struct nand_manufacturer_ops hynix_nand_manuf_ops; extern const struct nand_manufacturer_ops micron_nand_manuf_ops; extern const struct nand_manufacturer_ops amd_nand_manuf_ops; +extern const struct nand_manufacturer_ops macronix_nand_manuf_ops; int nand_default_bbt(struct mtd_info *mtd); int nand_markbad_bbt(struct mtd_info *mtd, loff_t offs);