/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
/*
 * Copyright (C) 2020 MediaTek Inc. All Rights Reserved.
 *
 * Author: Weijie Gao <weijie.gao@mediatek.com>
 */

#ifndef _MTK_SNAND_H_
#define _MTK_SNAND_H_

#ifndef PRIVATE_MTK_SNAND_HEADER
#include <stddef.h>
#include <stdint.h>
#include <stdbool.h>
#endif

enum mtk_snand_soc {
	SNAND_SOC_MT7622,
	SNAND_SOC_MT7629,
	SNAND_SOC_MT7986,

	__SNAND_SOC_MAX
};

struct mtk_snand_platdata {
	void *nfi_base;
	void *ecc_base;
	enum mtk_snand_soc soc;
	bool quad_spi;
};

struct mtk_snand_chip_info {
	const char *model;
	uint64_t chipsize;
	uint32_t blocksize;
	uint32_t pagesize;
	uint32_t sparesize;
	uint32_t spare_per_sector;
	uint32_t fdm_size;
	uint32_t fdm_ecc_size;
	uint32_t num_sectors;
	uint32_t sector_size;
	uint32_t ecc_strength;
	uint32_t ecc_bytes;
};

struct mtk_snand;
struct snand_flash_info;

int mtk_snand_init(void *dev, const struct mtk_snand_platdata *pdata,
		   struct mtk_snand **psnf);
int mtk_snand_cleanup(struct mtk_snand *snf);

int mtk_snand_chip_reset(struct mtk_snand *snf);
int mtk_snand_read_page(struct mtk_snand *snf, uint64_t addr, void *buf,
			void *oob, bool raw);
int mtk_snand_write_page(struct mtk_snand *snf, uint64_t addr, const void *buf,
			 const void *oob, bool raw);
int mtk_snand_erase_block(struct mtk_snand *snf, uint64_t addr);
int mtk_snand_block_isbad(struct mtk_snand *snf, uint64_t addr);
int mtk_snand_block_markbad(struct mtk_snand *snf, uint64_t addr);
int mtk_snand_fill_oob(struct mtk_snand *snf, uint8_t *oobraw,
		       const uint8_t *oobbuf, size_t ooblen);
int mtk_snand_transfer_oob(struct mtk_snand *snf, uint8_t *oobbuf,
			   size_t ooblen, const uint8_t *oobraw);
int mtk_snand_read_page_auto_oob(struct mtk_snand *snf, uint64_t addr,
				 void *buf, void *oob, size_t ooblen,
				 size_t *actualooblen, bool raw);
int mtk_snand_write_page_auto_oob(struct mtk_snand *snf, uint64_t addr,
				  const void *buf, const void *oob,
				  size_t ooblen, size_t *actualooblen,
				  bool raw);
int mtk_snand_get_chip_info(struct mtk_snand *snf,
			    struct mtk_snand_chip_info *info);
int mtk_snand_irq_process(struct mtk_snand *snf);

#endif /* _MTK_SNAND_H_ */
