/*
 * Copyright (c) 2019, ARM Limited and Contributors. All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

#ifndef IO_MTD_H
#define IO_MTD_H

#include <stdint.h>
#include <stdio.h>

#include <drivers/io/io_storage.h>

/* MTD devices ops */
typedef struct io_mtd_ops {
	/*
	 * Initialize MTD framework and retrieve device information.
	 *
	 * @size:  [out] MTD device size in bytes.
	 * @erase_size: [out] MTD erase size in bytes.
	 * Return 0 on success, a negative error code otherwise.
	 */
	int (*init)(unsigned long long *size, unsigned int *erase_size);

	/*
	 * Execute a read memory operation.
	 *
	 * @offset: Offset in bytes to start read operation.
	 * @buffer: [out] Buffer to store read data.
	 * @length: Required length to be read in bytes.
	 * @out_length: [out] Length read in bytes.
	 * Return 0 on success, a negative error code otherwise.
	 */
	int (*read)(unsigned int offset, uintptr_t buffer, size_t length,
		    size_t *out_length);

	/*
	 * Execute a write memory operation.
	 *
	 * @offset: Offset in bytes to start write operation.
	 * @buffer: Buffer to be written in device.
	 * @length: Required length to be written in bytes.
	 * Return 0 on success, a negative error code otherwise.
	 */
	int (*write)(unsigned int offset, uintptr_t buffer, size_t length);
} io_mtd_ops_t;

typedef struct io_mtd_dev_spec {
	unsigned long long device_size;
	unsigned int erase_size;
	io_mtd_ops_t ops;
} io_mtd_dev_spec_t;

struct io_dev_connector;

int register_io_dev_mtd(const struct io_dev_connector **dev_con);

#endif /* IO_MTD_H */
