| /* SPDX-License-Identifier: GPL-2.0 */ |
| #ifndef __SYSFS_UPLOAD_H |
| #define __SYSFS_UPLOAD_H |
| |
| #include <linux/device.h> |
| |
| #include "sysfs.h" |
| |
| /** |
| * enum fw_upload_prog - firmware upload progress codes |
| * @FW_UPLOAD_PROG_IDLE: there is no firmware upload in progress |
| * @FW_UPLOAD_PROG_RECEIVING: worker thread is receiving firmware data |
| * @FW_UPLOAD_PROG_PREPARING: target device is preparing for firmware upload |
| * @FW_UPLOAD_PROG_TRANSFERRING: data is being copied to the device |
| * @FW_UPLOAD_PROG_PROGRAMMING: device is performing the firmware update |
| * @FW_UPLOAD_PROG_MAX: Maximum progress code marker |
| */ |
| enum fw_upload_prog { |
| FW_UPLOAD_PROG_IDLE, |
| FW_UPLOAD_PROG_RECEIVING, |
| FW_UPLOAD_PROG_PREPARING, |
| FW_UPLOAD_PROG_TRANSFERRING, |
| FW_UPLOAD_PROG_PROGRAMMING, |
| FW_UPLOAD_PROG_MAX |
| }; |
| |
| struct fw_upload_priv { |
| struct fw_upload *fw_upload; |
| struct module *module; |
| const char *name; |
| const struct fw_upload_ops *ops; |
| struct mutex lock; /* protect data structure contents */ |
| struct work_struct work; |
| const u8 *data; /* pointer to update data */ |
| u32 remaining_size; /* size remaining to transfer */ |
| enum fw_upload_prog progress; |
| enum fw_upload_prog err_progress; /* progress at time of failure */ |
| enum fw_upload_err err_code; /* security manager error code */ |
| }; |
| |
| #endif /* __SYSFS_UPLOAD_H */ |