mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 02:15:45 +01:00 
			
		
		
		
	mtd: nand: Move Macronix specific initialization in nand_macronix.c
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 <michael@amarulasolutions.com> Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
This commit is contained in:
		| @@ -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_SIMPLE) += nand_spl_simple.o | ||||||
| obj-$(CONFIG_SPL_NAND_LOAD) += nand_spl_load.o | obj-$(CONFIG_SPL_NAND_LOAD) += nand_spl_load.o | ||||||
| obj-$(CONFIG_SPL_NAND_ECC) += nand_ecc.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 | 				nand_samsung.o nand_toshiba.o | ||||||
| obj-$(CONFIG_SPL_NAND_IDENT) += nand_ids.o nand_timings.o | obj-$(CONFIG_SPL_NAND_IDENT) += nand_ids.o nand_timings.o | ||||||
| obj-$(CONFIG_TPL_NAND_INIT) += nand.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_base.o | ||||||
| obj-y += nand_amd.o | obj-y += nand_amd.o | ||||||
| obj-y += nand_hynix.o | obj-y += nand_hynix.o | ||||||
|  | obj-y += nand_macronix.o | ||||||
| obj-y += nand_micron.o | obj-y += nand_micron.o | ||||||
| obj-y += nand_samsung.o | obj-y += nand_samsung.o | ||||||
| obj-y += nand_toshiba.o | obj-y += nand_toshiba.o | ||||||
|   | |||||||
| @@ -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, | static void nand_decode_bbm_options(struct mtd_info *mtd, | ||||||
| 				    struct nand_chip *chip) | 				    struct nand_chip *chip) | ||||||
| { | { | ||||||
| 	int maf_id = chip->id.data[0]; |  | ||||||
|  |  | ||||||
| 	/* Set the bad block position */ | 	/* Set the bad block position */ | ||||||
| 	if (mtd->writesize > 512 || (chip->options & NAND_BUSWIDTH_16)) | 	if (mtd->writesize > 512 || (chip->options & NAND_BUSWIDTH_16)) | ||||||
| 		chip->badblockpos = NAND_LARGE_BADBLOCK_POS; | 		chip->badblockpos = NAND_LARGE_BADBLOCK_POS; | ||||||
| 	else | 	else | ||||||
| 		chip->badblockpos = NAND_SMALL_BADBLOCK_POS; | 		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) | static inline bool is_full_id_nand(struct nand_flash_dev *type) | ||||||
|   | |||||||
| @@ -197,7 +197,7 @@ struct nand_manufacturers nand_manuf_ids[] = { | |||||||
| 	{NAND_MFR_HYNIX, "Hynix", &hynix_nand_manuf_ops}, | 	{NAND_MFR_HYNIX, "Hynix", &hynix_nand_manuf_ops}, | ||||||
| 	{NAND_MFR_MICRON, "Micron", µn_nand_manuf_ops}, | 	{NAND_MFR_MICRON, "Micron", µn_nand_manuf_ops}, | ||||||
| 	{NAND_MFR_AMD, "AMD/Spansion", &amd_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_EON, "Eon"}, | ||||||
| 	{NAND_MFR_SANDISK, "SanDisk"}, | 	{NAND_MFR_SANDISK, "SanDisk"}, | ||||||
| 	{NAND_MFR_INTEL, "Intel"}, | 	{NAND_MFR_INTEL, "Intel"}, | ||||||
|   | |||||||
							
								
								
									
										31
									
								
								drivers/mtd/nand/raw/nand_macronix.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								drivers/mtd/nand/raw/nand_macronix.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | |||||||
|  | // SPDX-License-Identifier: GPL-2.0+ | ||||||
|  | /* | ||||||
|  |  * Copyright (C) 2017 Free Electrons | ||||||
|  |  * Copyright (C) 2017 NextThing Co | ||||||
|  |  * | ||||||
|  |  * Author: Boris Brezillon <boris.brezillon@free-electrons.com> | ||||||
|  |  * | ||||||
|  |  * 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 <linux/mtd/rawnand.h> | ||||||
|  |  | ||||||
|  | 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, | ||||||
|  | }; | ||||||
| @@ -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 hynix_nand_manuf_ops; | ||||||
| extern const struct nand_manufacturer_ops micron_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 amd_nand_manuf_ops; | ||||||
|  | extern const struct nand_manufacturer_ops macronix_nand_manuf_ops; | ||||||
|  |  | ||||||
| int nand_default_bbt(struct mtd_info *mtd); | int nand_default_bbt(struct mtd_info *mtd); | ||||||
| int nand_markbad_bbt(struct mtd_info *mtd, loff_t offs); | int nand_markbad_bbt(struct mtd_info *mtd, loff_t offs); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user