linux/drivers/base/firmware_loader/sysfs_upload.h
<<
>>
Prefs
   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