xref: /rk3399_ARM-atf/include/drivers/io/io_block.h (revision 09d40e0e08283a249e7dce0e106c07c5141f9b7e)
19da7a653SHaojian Zhuang /*
29da7a653SHaojian Zhuang  * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
39da7a653SHaojian Zhuang  *
482cb2c1aSdp-arm  * SPDX-License-Identifier: BSD-3-Clause
59da7a653SHaojian Zhuang  */
69da7a653SHaojian Zhuang 
7c3cf06f1SAntonio Nino Diaz #ifndef IO_BLOCK_H
8c3cf06f1SAntonio Nino Diaz #define IO_BLOCK_H
99da7a653SHaojian Zhuang 
10*09d40e0eSAntonio Nino Diaz #include <drivers/io/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 
28c3cf06f1SAntonio Nino Diaz #endif /* IO_BLOCK_H */
29