Merge tag 'clk-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux.git] / drivers / base / firmware_loader / sysfs_upload.h
blob31931ff7808a45dab64f774689c5056ca6e6d5a3
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __SYSFS_UPLOAD_H
3 #define __SYSFS_UPLOAD_H
5 #include <linux/device.h>
7 #include "sysfs.h"
9 /**
10 * enum fw_upload_prog - firmware upload progress codes
11 * @FW_UPLOAD_PROG_IDLE: there is no firmware upload in progress
12 * @FW_UPLOAD_PROG_RECEIVING: worker thread is receiving firmware data
13 * @FW_UPLOAD_PROG_PREPARING: target device is preparing for firmware upload
14 * @FW_UPLOAD_PROG_TRANSFERRING: data is being copied to the device
15 * @FW_UPLOAD_PROG_PROGRAMMING: device is performing the firmware update
16 * @FW_UPLOAD_PROG_MAX: Maximum progress code marker
18 enum fw_upload_prog {
19 FW_UPLOAD_PROG_IDLE,
20 FW_UPLOAD_PROG_RECEIVING,
21 FW_UPLOAD_PROG_PREPARING,
22 FW_UPLOAD_PROG_TRANSFERRING,
23 FW_UPLOAD_PROG_PROGRAMMING,
24 FW_UPLOAD_PROG_MAX
27 struct fw_upload_priv {
28 struct fw_upload *fw_upload;
29 struct module *module;
30 const char *name;
31 const struct fw_upload_ops *ops;
32 struct mutex lock; /* protect data structure contents */
33 struct work_struct work;
34 const u8 *data; /* pointer to update data */
35 u32 remaining_size; /* size remaining to transfer */
36 enum fw_upload_prog progress;
37 enum fw_upload_prog err_progress; /* progress at time of failure */
38 enum fw_upload_err err_code; /* security manager error code */
41 #endif /* __SYSFS_UPLOAD_H */