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