]> Git Repo - J-u-boot.git/blob - include/blkmap.h
Merge tag 'v2025.01-rc6' into next
[J-u-boot.git] / include / blkmap.h
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * Copyright (c) 2023 Addiva Elektronik
4  * Author: Tobias Waldekranz <[email protected]>
5  */
6
7 #ifndef _BLKMAP_H
8 #define _BLKMAP_H
9
10 #include <dm/lists.h>
11
12 /**
13  * struct blkmap - Block map
14  *
15  * Data associated with a blkmap.
16  *
17  * @label: Human readable name of this blkmap
18  * @blk: Underlying block device
19  * @slices: List of slices associated with this blkmap
20  */
21 struct blkmap {
22         char *label;
23         struct udevice *blk;
24         struct list_head slices;
25 };
26
27 /**
28  * blkmap_map_linear() - Map region of other block device
29  *
30  * @dev: Blkmap to create the mapping on
31  * @blknr: Start block number of the mapping
32  * @blkcnt: Number of blocks to map
33  * @lblk: The target block device of the mapping
34  * @lblknr: The start block number of the target device
35  * Returns: 0 on success, negative error code on failure
36  */
37 int blkmap_map_linear(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt,
38                       struct udevice *lblk, lbaint_t lblknr);
39
40 /**
41  * blkmap_map_mem() - Map region of memory
42  *
43  * @dev: Blkmap to create the mapping on
44  * @blknr: Start block number of the mapping
45  * @blkcnt: Number of blocks to map
46  * @addr: The target memory address of the mapping
47  * Returns: 0 on success, negative error code on failure
48  */
49 int blkmap_map_mem(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt,
50                    void *addr);
51
52 /**
53  * blkmap_map_pmem() - Map region of physical memory
54  *
55  * Ensures that a valid physical to virtual memory mapping for the
56  * requested region is valid for the lifetime of the mapping, on
57  * architectures that require it (sandbox).
58  *
59  * @dev: Blkmap to create the mapping on
60  * @blknr: Start block number of the mapping
61  * @blkcnt: Number of blocks to map
62  * @paddr: The target physical memory address of the mapping
63  * Returns: 0 on success, negative error code on failure
64  */
65 int blkmap_map_pmem(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt,
66                     phys_addr_t paddr);
67
68 /**
69  * blkmap_from_label() - Find blkmap from label
70  *
71  * @label: Label of the requested blkmap
72  * Returns: A pointer to the blkmap on success, NULL on failure
73  */
74 struct udevice *blkmap_from_label(const char *label);
75
76 /**
77  * blkmap_create() - Create new blkmap
78  *
79  * @label: Label of the new blkmap
80  * @devp: If not NULL, updated with the address of the resulting device
81  * Returns: 0 on success, negative error code on failure
82  */
83 int blkmap_create(const char *label, struct udevice **devp);
84
85 /**
86  * blkmap_destroy() - Destroy blkmap
87  *
88  * @dev: The blkmap to be destroyed
89  * Returns: 0 on success, negative error code on failure
90  */
91 int blkmap_destroy(struct udevice *dev);
92
93 /**
94  * blkmap_create_ramdisk() - Create new ramdisk with blkmap
95  *
96  * @label: Label of the new blkmap
97  * @image_addr: Target memory start address of this mapping
98  * @image_size: Target memory size of this mapping
99  * @devp: Updated with the address of the created blkmap device
100  * Returns: 0 on success, negative error code on failure
101  */
102 int blkmap_create_ramdisk(const char *label, ulong image_addr, ulong image_size,
103                           struct udevice **devp);
104
105 #endif  /* _BLKMAP_H */
This page took 0.03057 seconds and 4 git commands to generate.