162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci#ifndef __SYSFS_UPLOAD_H 362306a36Sopenharmony_ci#define __SYSFS_UPLOAD_H 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#include <linux/device.h> 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#include "sysfs.h" 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci/** 1062306a36Sopenharmony_ci * enum fw_upload_prog - firmware upload progress codes 1162306a36Sopenharmony_ci * @FW_UPLOAD_PROG_IDLE: there is no firmware upload in progress 1262306a36Sopenharmony_ci * @FW_UPLOAD_PROG_RECEIVING: worker thread is receiving firmware data 1362306a36Sopenharmony_ci * @FW_UPLOAD_PROG_PREPARING: target device is preparing for firmware upload 1462306a36Sopenharmony_ci * @FW_UPLOAD_PROG_TRANSFERRING: data is being copied to the device 1562306a36Sopenharmony_ci * @FW_UPLOAD_PROG_PROGRAMMING: device is performing the firmware update 1662306a36Sopenharmony_ci * @FW_UPLOAD_PROG_MAX: Maximum progress code marker 1762306a36Sopenharmony_ci */ 1862306a36Sopenharmony_cienum fw_upload_prog { 1962306a36Sopenharmony_ci FW_UPLOAD_PROG_IDLE, 2062306a36Sopenharmony_ci FW_UPLOAD_PROG_RECEIVING, 2162306a36Sopenharmony_ci FW_UPLOAD_PROG_PREPARING, 2262306a36Sopenharmony_ci FW_UPLOAD_PROG_TRANSFERRING, 2362306a36Sopenharmony_ci FW_UPLOAD_PROG_PROGRAMMING, 2462306a36Sopenharmony_ci FW_UPLOAD_PROG_MAX 2562306a36Sopenharmony_ci}; 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_cistruct fw_upload_priv { 2862306a36Sopenharmony_ci struct fw_upload *fw_upload; 2962306a36Sopenharmony_ci struct module *module; 3062306a36Sopenharmony_ci const char *name; 3162306a36Sopenharmony_ci const struct fw_upload_ops *ops; 3262306a36Sopenharmony_ci struct mutex lock; /* protect data structure contents */ 3362306a36Sopenharmony_ci struct work_struct work; 3462306a36Sopenharmony_ci const u8 *data; /* pointer to update data */ 3562306a36Sopenharmony_ci u32 remaining_size; /* size remaining to transfer */ 3662306a36Sopenharmony_ci enum fw_upload_prog progress; 3762306a36Sopenharmony_ci enum fw_upload_prog err_progress; /* progress at time of failure */ 3862306a36Sopenharmony_ci enum fw_upload_err err_code; /* security manager error code */ 3962306a36Sopenharmony_ci}; 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci#endif /* __SYSFS_UPLOAD_H */ 42