linux/drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c

// SPDX-License-Identifier: GPL-2.0
/*
 * Ingenic JZ47xx NAND driver
 *
 * Copyright (c) 2015 Imagination Technologies
 * Author: Alex Smith <[email protected]>
 */

#include <linux/delay.h>
#include <linux/init.h>
#include <linux/io.h>
#include <linux/list.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/gpio/consumer.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/rawnand.h>
#include <linux/mtd/partitions.h>

#include <linux/jz4780-nemc.h>

#include "ingenic_ecc.h"

#define DRV_NAME

struct jz_soc_info {};

struct ingenic_nand_cs {};

struct ingenic_nfc {};

struct ingenic_nand {};

static inline struct ingenic_nand *to_ingenic_nand(struct mtd_info *mtd)
{}

static inline struct ingenic_nfc *to_ingenic_nfc(struct nand_controller *ctrl)
{}

static int qi_lb60_ooblayout_ecc(struct mtd_info *mtd, int section,
				 struct mtd_oob_region *oobregion)
{}

static int qi_lb60_ooblayout_free(struct mtd_info *mtd, int section,
				  struct mtd_oob_region *oobregion)
{}

static const struct mtd_ooblayout_ops qi_lb60_ooblayout_ops =;

static int jz4725b_ooblayout_ecc(struct mtd_info *mtd, int section,
				 struct mtd_oob_region *oobregion)
{}

static int jz4725b_ooblayout_free(struct mtd_info *mtd, int section,
				  struct mtd_oob_region *oobregion)
{}

static const struct mtd_ooblayout_ops jz4725b_ooblayout_ops =;

static void ingenic_nand_ecc_hwctl(struct nand_chip *chip, int mode)
{}

static int ingenic_nand_ecc_calculate(struct nand_chip *chip, const u8 *dat,
				      u8 *ecc_code)
{}

static int ingenic_nand_ecc_correct(struct nand_chip *chip, u8 *dat,
				    u8 *read_ecc, u8 *calc_ecc)
{}

static int ingenic_nand_attach_chip(struct nand_chip *chip)
{}

static int ingenic_nand_exec_instr(struct nand_chip *chip,
				   struct ingenic_nand_cs *cs,
				   const struct nand_op_instr *instr)
{}

static int ingenic_nand_exec_op(struct nand_chip *chip,
				const struct nand_operation *op,
				bool check_only)
{}

static const struct nand_controller_ops ingenic_nand_controller_ops =;

static int ingenic_nand_init_chip(struct platform_device *pdev,
				  struct ingenic_nfc *nfc,
				  struct device_node *np,
				  unsigned int chipnr)
{}

static void ingenic_nand_cleanup_chips(struct ingenic_nfc *nfc)
{}

static int ingenic_nand_init_chips(struct ingenic_nfc *nfc,
				   struct platform_device *pdev)
{}

static int ingenic_nand_probe(struct platform_device *pdev)
{}

static void ingenic_nand_remove(struct platform_device *pdev)
{}

static const struct jz_soc_info jz4740_soc_info =;

static const struct jz_soc_info jz4725b_soc_info =;

static const struct jz_soc_info jz4780_soc_info =;

static const struct of_device_id ingenic_nand_dt_match[] =;
MODULE_DEVICE_TABLE(of, ingenic_nand_dt_match);

static struct platform_driver ingenic_nand_driver =;
module_platform_driver();

MODULE_AUTHOR();
MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();