1 /* SPDX-License-Identifier: GPL-2.0+ */
5 * Copyright 2022 Google LLC
8 #ifndef __SANDBOX_HOST__
9 #define __SANDBOX_HOST__
12 * struct host_sb_plat - platform data for a host device
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)
25 * struct host_ops - operations supported by UCLASS_HOST
29 * @attach_file: - Attach a new file to the device
31 * @attach_file.dev: Device to update
32 * @attach_file.filename: Name of the file, e.g. "/path/to/disk.img"
33 * @attach_file.Returns: 0 if OK, -EEXIST if a file is already attached, other -ve on
36 int (*attach_file
)(struct udevice
*dev
, const char *filename
);
39 * @detach_file: - Detach a file from the device
41 * @detach_file.dev: Device to detach from
42 * @detach_file.Returns: 0 if OK, -ENOENT if no file is attached, other -ve on other
45 int (*detach_file
)(struct udevice
*dev
);
48 #define host_get_ops(dev) ((struct host_ops *)(dev)->driver->ops)
51 * host_attach_file() - Attach a new file to the device
53 * @dev: Device to update
54 * @filename: Name of the file, e.g. "/path/to/disk.img"
55 * Returns: 0 if OK, -EEXIST if a file is already attached, other -ve on
58 int host_attach_file(struct udevice
*dev
, const char *filename
);
61 * host_detach_file() - Detach a file from the device
63 * @dev: Device to detach from
64 * Returns: 0 if OK, -ENOENT if no file is attached, other -ve on other
67 int host_detach_file(struct udevice
*dev
);
70 * host_create_device() - Create a new host device
72 * Any existing device with the same label is removed and unbound first
74 * @label: Label of the attachment, e.g. "test1"
75 * @removable: true if the device should be marked as removable, false
76 * if it is fixed. See enum blk_flag_t
77 * @blksz: logical block size of the device
78 * @devp: Returns the device created, on success
79 * Returns: 0 if OK, -ve on error
81 int host_create_device(const char *label
, bool removable
, unsigned long blksz
,
82 struct udevice
**devp
);
85 * host_create_attach_file() - Create a new host device attached to a file
87 * @label: Label of the attachment, e.g. "test1"
88 * @filename: Name of the file, e.g. "/path/to/disk.img"
89 * @removable: true if the device should be marked as removable, false
90 * if it is fixed. See enum blk_flag_t
91 * @blksz: logical block size of the device
92 * @devp: Returns the device created, on success
93 * Returns: 0 if OK, -ve on error
95 int host_create_attach_file(const char *label
, const char *filename
,
96 bool removable
, unsigned long blksz
,
97 struct udevice
**devp
);
100 * host_find_by_label() - Find a host by label
102 * Searches all host devices to find one with the given label
104 * @label: Label to find
105 * Returns: associated device, or NULL if not found
107 struct udevice
*host_find_by_label(const char *label
);
110 * host_get_cur_dev() - Get the current device
112 * Returns current device, or NULL if none
114 struct udevice
*host_get_cur_dev(void);
117 * host_set_cur_dev() - Set the current device
119 * Sets the current device, or clears it if @dev is NULL
121 * @dev: Device to set as the current one
123 void host_set_cur_dev(struct udevice
*dev
);
125 #endif /* __SANDBOX_HOST__ */