Prepare v2023.10
[platform/kernel/u-boot.git] / include / blkmap.h
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * Copyright (c) 2023 Addiva Elektronik
4  * Author: Tobias Waldekranz <tobias@waldekranz.com>
5  */
6
7 #ifndef _BLKMAP_H
8 #define _BLKMAP_H
9
10 /**
11  * blkmap_map_linear() - Map region of other block device
12  *
13  * @dev: Blkmap to create the mapping on
14  * @blknr: Start block number of the mapping
15  * @blkcnt: Number of blocks to map
16  * @lblk: The target block device of the mapping
17  * @lblknr: The start block number of the target device
18  * Returns: 0 on success, negative error code on failure
19  */
20 int blkmap_map_linear(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt,
21                       struct udevice *lblk, lbaint_t lblknr);
22
23 /**
24  * blkmap_map_mem() - Map region of memory
25  *
26  * @dev: Blkmap to create the mapping on
27  * @blknr: Start block number of the mapping
28  * @blkcnt: Number of blocks to map
29  * @addr: The target memory address of the mapping
30  * Returns: 0 on success, negative error code on failure
31  */
32 int blkmap_map_mem(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt,
33                    void *addr);
34
35 /**
36  * blkmap_map_pmem() - Map region of physical memory
37  *
38  * Ensures that a valid physical to virtual memory mapping for the
39  * requested region is valid for the lifetime of the mapping, on
40  * architectures that require it (sandbox).
41  *
42  * @dev: Blkmap to create the mapping on
43  * @blknr: Start block number of the mapping
44  * @blkcnt: Number of blocks to map
45  * @paddr: The target physical memory address of the mapping
46  * Returns: 0 on success, negative error code on failure
47  */
48 int blkmap_map_pmem(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt,
49                     phys_addr_t paddr);
50
51
52 /**
53  * blkmap_from_label() - Find blkmap from label
54  *
55  * @label: Label of the requested blkmap
56  * Returns: A pointer to the blkmap on success, NULL on failure
57  */
58 struct udevice *blkmap_from_label(const char *label);
59
60 /**
61  * blkmap_create() - Create new blkmap
62  *
63  * @label: Label of the new blkmap
64  * @devp: If not NULL, updated with the address of the resulting device
65  * Returns: 0 on success, negative error code on failure
66  */
67 int blkmap_create(const char *label, struct udevice **devp);
68
69 /**
70  * blkmap_destroy() - Destroy blkmap
71  *
72  * @dev: The blkmap to be destroyed
73  * Returns: 0 on success, negative error code on failure
74  */
75 int blkmap_destroy(struct udevice *dev);
76
77 #endif  /* _BLKMAP_H */