12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- /*
- * Copyright (c) 2019-2021, 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);
- /*
- * Look for an offset to be added to the given offset.
- *
- * @base: Base address of the area.
- * @offset: Offset in bytes to start read operation.
- * @extra_offset: [out] Offset to be added to the previous offset.
- * Return 0 on success, a negative error code otherwise.
- */
- int (*seek)(uintptr_t base, unsigned int offset, size_t *extra_offset);
- } io_mtd_ops_t;
- typedef struct io_mtd_dev_spec {
- unsigned long long device_size;
- unsigned int erase_size;
- size_t offset;
- 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 */
|