sysfs_upload.h 1.3 KB

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