mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 00:04:15 +08:00
mtd: rawnand: add basic sandisk manufacturer ops
Add basic Sandisk manufacturer ops support to get SDTNQGAMA timing data with the nand_get_sdr_timings() function. Signed-off-by: Johan Jonker <jbx6244@gmail.com> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Link: https://lore.kernel.org/linux-mtd/aaf4580a-a368-8f70-c9c4-21b5ed4dd599@gmail.com
This commit is contained in:
parent
46c37b99b5
commit
12ac188b93
@ -67,5 +67,6 @@ nand-objs += nand_esmt.o
|
||||
nand-objs += nand_hynix.o
|
||||
nand-objs += nand_macronix.o
|
||||
nand-objs += nand_micron.o
|
||||
nand-objs += nand_sandisk.o
|
||||
nand-objs += nand_samsung.o
|
||||
nand-objs += nand_toshiba.o
|
||||
|
@ -73,6 +73,7 @@ extern const struct nand_manufacturer_ops hynix_nand_manuf_ops;
|
||||
extern const struct nand_manufacturer_ops macronix_nand_manuf_ops;
|
||||
extern const struct nand_manufacturer_ops micron_nand_manuf_ops;
|
||||
extern const struct nand_manufacturer_ops samsung_nand_manuf_ops;
|
||||
extern const struct nand_manufacturer_ops sandisk_nand_manuf_ops;
|
||||
extern const struct nand_manufacturer_ops toshiba_nand_manuf_ops;
|
||||
|
||||
/* MLC pairing schemes */
|
||||
|
@ -188,7 +188,7 @@ static const struct nand_manufacturer_desc nand_manufacturer_descs[] = {
|
||||
{NAND_MFR_NATIONAL, "National"},
|
||||
{NAND_MFR_RENESAS, "Renesas"},
|
||||
{NAND_MFR_SAMSUNG, "Samsung", &samsung_nand_manuf_ops},
|
||||
{NAND_MFR_SANDISK, "SanDisk"},
|
||||
{NAND_MFR_SANDISK, "SanDisk", &sandisk_nand_manuf_ops},
|
||||
{NAND_MFR_STMICRO, "ST Micro"},
|
||||
{NAND_MFR_TOSHIBA, "Toshiba", &toshiba_nand_manuf_ops},
|
||||
{NAND_MFR_WINBOND, "Winbond"},
|
||||
|
26
drivers/mtd/nand/raw/nand_sandisk.c
Normal file
26
drivers/mtd/nand/raw/nand_sandisk.c
Normal file
@ -0,0 +1,26 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "internals.h"
|
||||
|
||||
static int
|
||||
sdtnqgama_choose_interface_config(struct nand_chip *chip,
|
||||
struct nand_interface_config *iface)
|
||||
{
|
||||
onfi_fill_interface_config(chip, iface, NAND_SDR_IFACE, 0);
|
||||
|
||||
return nand_choose_best_sdr_timings(chip, iface, NULL);
|
||||
}
|
||||
|
||||
static int sandisk_nand_init(struct nand_chip *chip)
|
||||
{
|
||||
if (!strncmp("SDTNQGAMA", chip->parameters.model,
|
||||
sizeof("SDTNQGAMA") - 1))
|
||||
chip->ops.choose_interface_config =
|
||||
&sdtnqgama_choose_interface_config;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
const struct nand_manufacturer_ops sandisk_nand_manuf_ops = {
|
||||
.init = sandisk_nand_init,
|
||||
};
|
Loading…
Reference in New Issue
Block a user