xref: /rk3399_ARM-atf/include/drivers/io/io_block.h (revision 82cb2c1ad9897473743f08437d0a3995bed561b9)
19da7a653SHaojian Zhuang /*
29da7a653SHaojian Zhuang  * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
39da7a653SHaojian Zhuang  *
4*82cb2c1aSdp-arm  * SPDX-License-Identifier: BSD-3-Clause
59da7a653SHaojian Zhuang  */
69da7a653SHaojian Zhuang 
79da7a653SHaojian Zhuang #ifndef __IO_BLOCK_H__
89da7a653SHaojian Zhuang #define __IO_BLOCK_H__
99da7a653SHaojian Zhuang 
109da7a653SHaojian Zhuang #include <io_storage.h>
119da7a653SHaojian Zhuang 
129da7a653SHaojian Zhuang /* block devices ops */
139da7a653SHaojian Zhuang typedef struct io_block_ops {
149da7a653SHaojian Zhuang 	size_t	(*read)(int lba, uintptr_t buf, size_t size);
159da7a653SHaojian Zhuang 	size_t	(*write)(int lba, const uintptr_t buf, size_t size);
169da7a653SHaojian Zhuang } io_block_ops_t;
179da7a653SHaojian Zhuang 
189da7a653SHaojian Zhuang typedef struct io_block_dev_spec {
199da7a653SHaojian Zhuang 	io_block_spec_t	buffer;
209da7a653SHaojian Zhuang 	io_block_ops_t	ops;
219da7a653SHaojian Zhuang 	size_t		block_size;
229da7a653SHaojian Zhuang } io_block_dev_spec_t;
239da7a653SHaojian Zhuang 
249da7a653SHaojian Zhuang struct io_dev_connector;
259da7a653SHaojian Zhuang 
269da7a653SHaojian Zhuang int register_io_dev_block(const struct io_dev_connector **dev_con);
279da7a653SHaojian Zhuang 
289da7a653SHaojian Zhuang #endif /* __IO_BLOCK_H__ */
29