/*
 * rawnand_ops.c for sunxi rawnand ops
 *
 * Copyright (C) 2019 Allwinner.
 * SPDX-License-Identifier: GPL-2.0
 */
#ifndef __RAWNAND_OPS_H
#define __RAWNAND_OPS_H
#include "rawnand.h"

#define NAND_OPEN_BLOCK_CNT (8)

struct nand_phy_write_lsb_cache {
	unsigned int cache_use_status;
	struct _nand_physic_op_par tmp_npo;
};

struct df_read_page_end {
	int (*read_page_end)(struct _nand_physic_op_par *npo);
};

struct rawnand_ops {
	int (*erase_single_block)(struct _nand_physic_op_par *npo);
	int (*write_single_page)(struct _nand_physic_op_par *npo);
	int (*read_single_page)(struct _nand_physic_op_par *npo);
	int (*single_bad_block_check)(struct _nand_physic_op_par *npo);
	int (*single_bad_block_mark)(struct _nand_physic_op_par *npo);
	int (*erase_super_block)(struct _nand_physic_op_par *npo);
	int (*write_super_page)(struct _nand_physic_op_par *npo);
	int (*read_super_page)(struct _nand_physic_op_par *npo);
	int (*super_bad_block_check)(struct _nand_physic_op_par *npo);
	int (*super_bad_block_mark)(struct _nand_physic_op_par *npo);
};

extern struct df_read_page_end df_read_page_end;
extern struct rawnand_ops rawnand_ops;
extern struct nand_phy_write_lsb_cache nand_phy_w_cache[NAND_OPEN_BLOCK_CNT];
#endif
