1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef __SYSFS_UPLOAD_H
3#define __SYSFS_UPLOAD_H
4
5#include <linux/device.h>
6
7#include "sysfs.h"
8
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
17 */
18enum 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
25};
26
27struct 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 */
39};
40
41#endif /* __SYSFS_UPLOAD_H */
42

source code of linux/drivers/base/firmware_loader/sysfs_upload.h