xref: /rk3399_rockchip-uboot/include/ramdisk.h (revision a3fec70d49c3effc5e206c450e3d0ac20d8a3ebc)
1*a3fec70dSJoseph Chen /* SPDX-License-Identifier:     GPL-2.0+ */
2*a3fec70dSJoseph Chen /*
3*a3fec70dSJoseph Chen  * (C) Copyright 2018 Rockchip Electronics Co., Ltd
4*a3fec70dSJoseph Chen  */
5*a3fec70dSJoseph Chen 
6*a3fec70dSJoseph Chen #ifndef __RAMDISK_H__
7*a3fec70dSJoseph Chen #define __RAMDISK_H__
8*a3fec70dSJoseph Chen 
9*a3fec70dSJoseph Chen struct ramdisk_ops {
10*a3fec70dSJoseph Chen 	/*
11*a3fec70dSJoseph Chen 	 * read() - read from a block device
12*a3fec70dSJoseph Chen 	 *
13*a3fec70dSJoseph Chen 	 * @desc:	Block descriptor
14*a3fec70dSJoseph Chen 	 * @start:	Start block number to read
15*a3fec70dSJoseph Chen 	 * @blkcnt:	Number of blocks to read
16*a3fec70dSJoseph Chen 	 * @buffer:	Destination buffer for data read
17*a3fec70dSJoseph Chen 	 *
18*a3fec70dSJoseph Chen 	 * @return blkcnt is OK, otherwise is error.
19*a3fec70dSJoseph Chen 	 */
20*a3fec70dSJoseph Chen 	ulong (*read)(struct blk_desc *desc,
21*a3fec70dSJoseph Chen 		      lbaint_t start, lbaint_t blkcnt, void *buffer);
22*a3fec70dSJoseph Chen 
23*a3fec70dSJoseph Chen 	/*
24*a3fec70dSJoseph Chen 	 * write() - write to a block device
25*a3fec70dSJoseph Chen 	 *
26*a3fec70dSJoseph Chen 	 * @desc:	Block descriptor
27*a3fec70dSJoseph Chen 	 * @start:	Start block number to write
28*a3fec70dSJoseph Chen 	 * @blkcnt:	Number of blocks to write
29*a3fec70dSJoseph Chen 	 * @buffer:	Source buffer for data to write
30*a3fec70dSJoseph Chen 	 *
31*a3fec70dSJoseph Chen 	 * @return blkcnt is OK, otherwise is error.
32*a3fec70dSJoseph Chen 	 */
33*a3fec70dSJoseph Chen 
34*a3fec70dSJoseph Chen 	ulong (*write)(struct blk_desc *desc,
35*a3fec70dSJoseph Chen 		       lbaint_t start, lbaint_t blkcnt, const void *buffer);
36*a3fec70dSJoseph Chen 	/*
37*a3fec70dSJoseph Chen 	 * erase() - erase a section of a block device
38*a3fec70dSJoseph Chen 	 *
39*a3fec70dSJoseph Chen 	 * @desc:	Block descriptor
40*a3fec70dSJoseph Chen 	 * @start:	Start block number to erase
41*a3fec70dSJoseph Chen 	 * @blkcnt:	Number of blocks to erase
42*a3fec70dSJoseph Chen 	 *
43*a3fec70dSJoseph Chen 	 * @return blkcnt is OK, otherwise is error.
44*a3fec70dSJoseph Chen 	 */
45*a3fec70dSJoseph Chen 	ulong (*erase)(struct blk_desc *desc, lbaint_t start, lbaint_t blkcnt);
46*a3fec70dSJoseph Chen };
47*a3fec70dSJoseph Chen 
48*a3fec70dSJoseph Chen /*
49*a3fec70dSJoseph Chen  * bramdisk_initialize() - do blk ramdisk initialize
50*a3fec70dSJoseph Chen  */
51*a3fec70dSJoseph Chen int bramdisk_initialize(void);
52*a3fec70dSJoseph Chen 
53*a3fec70dSJoseph Chen #endif /* __RAMDISK_H__ */
54