Convert CONFIG_SYS_INTERLAKEN et al to Kconfig
[platform/kernel/u-boot.git] / include / sandbox_host.h
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * sandbox host uclass
4  *
5  * Copyright 2022 Google LLC
6  */
7
8 #ifndef __SANDBOX_HOST__
9 #define __SANDBOX_HOST__
10
11 /**
12  * struct host_sb_plat - platform data for a host device
13  *
14  * @label: Label for this device (allocated)
15  * @filename: Name of file this is attached to, or NULL (allocated)
16  * @fd: File descriptor of file, or 0 for none (file is not open)
17  */
18 struct host_sb_plat {
19         char *label;
20         char *filename;
21         int fd;
22 };
23
24 /**
25  * struct host_ops - operations supported by UCLASS_HOST
26  *
27  * @attach_file: Attach a new file to a device
28  * @detach_file: Detach a file from a device
29  */
30 struct host_ops {
31         /*
32          * attach_file() - Attach a new file to the device
33          *
34          * @dev: Device to update
35          * @filename: Name of the file, e.g. "/path/to/disk.img"
36          * Returns: 0 if OK, -EEXIST if a file is already attached, other -ve on
37          * other error
38          */
39         int (*attach_file)(struct udevice *dev, const char *filename);
40
41         /**
42          * detach_file() - Detach a file from the device
43          *
44          * @dev: Device to detach from
45          * Returns: 0 if OK, -ENOENT if no file is attached, other -ve on other
46          * error
47          */
48          int (*detach_file)(struct udevice *dev);
49 };
50
51 #define host_get_ops(dev)        ((struct host_ops *)(dev)->driver->ops)
52
53 /**
54  * host_attach_file() - Attach a new file to the device
55  *
56  * @dev: Device to update
57  * @filename: Name of the file, e.g. "/path/to/disk.img"
58  * Returns: 0 if OK, -EEXIST if a file is already attached, other -ve on
59  * other error
60  */
61 int host_attach_file(struct udevice *dev, const char *filename);
62
63 /**
64  * host_detach_file() - Detach a file from the device
65  *
66  * @dev: Device to detach from
67  * Returns: 0 if OK, -ENOENT if no file is attached, other -ve on other
68  * error
69  */
70 int host_detach_file(struct udevice *dev);
71
72 /**
73  * host_create_device() - Create a new host device
74  *
75  * Any existing device with the same label is removed and unbound first
76  *
77  * @label: Label of the attachment, e.g. "test1"
78  * @removable: true if the device should be marked as removable, false
79  *      if it is fixed. See enum blk_flag_t
80  * @devp: Returns the device created, on success
81  * Returns: 0 if OK, -ve on error
82  */
83 int host_create_device(const char *label, bool removable,
84                        struct udevice **devp);
85
86 /**
87  * host_create_attach_file() - Create a new host device attached to a file
88  *
89  * @label: Label of the attachment, e.g. "test1"
90  * @filename: Name of the file, e.g. "/path/to/disk.img"
91  * @removable: true if the device should be marked as removable, false
92  *      if it is fixed. See enum blk_flag_t
93  * @devp: Returns the device created, on success
94  * Returns: 0 if OK, -ve on error
95  */
96 int host_create_attach_file(const char *label, const char *filename,
97                             bool removable, struct udevice **devp);
98
99 /**
100  * host_find_by_label() - Find a host by label
101  *
102  * Searches all host devices to find one with the given label
103  *
104  * @label: Label to find
105  * Returns: associated device, or NULL if not found
106  */
107 struct udevice *host_find_by_label(const char *label);
108
109 /**
110  * host_get_cur_dev() - Get the current device
111  *
112  * Returns current device, or NULL if none
113  */
114 struct udevice *host_get_cur_dev(void);
115
116 /**
117  * host_set_cur_dev() - Set the current device
118  *
119  * Sets the current device, or clears it if @dev is NULL
120  *
121  * @dev: Device to set as the current one
122  */
123 void host_set_cur_dev(struct udevice *dev);
124
125 #endif /* __SANDBOX_HOST__ */