| /* SPDX-License-Identifier: GPL-2.0-only */ |
| |
| #ifndef _ZL3073X_FW_H |
| #define _ZL3073X_FW_H |
| |
| /* |
| * enum zl3073x_fw_component_id - Identifiers for possible flash components |
| */ |
| enum zl3073x_fw_component_id { |
| ZL_FW_COMPONENT_INVALID = -1, |
| ZL_FW_COMPONENT_UTIL = 0, |
| ZL_FW_COMPONENT_FW1, |
| ZL_FW_COMPONENT_FW2, |
| ZL_FW_COMPONENT_FW3, |
| ZL_FW_COMPONENT_CFG0, |
| ZL_FW_COMPONENT_CFG1, |
| ZL_FW_COMPONENT_CFG2, |
| ZL_FW_COMPONENT_CFG3, |
| ZL_FW_COMPONENT_CFG4, |
| ZL_FW_COMPONENT_CFG5, |
| ZL_FW_COMPONENT_CFG6, |
| ZL_FW_NUM_COMPONENTS |
| }; |
| |
| /** |
| * struct zl3073x_fw_component - Firmware component |
| * @id: Flash component ID |
| * @size: Size of the buffer |
| * @data: Pointer to buffer with component data |
| */ |
| struct zl3073x_fw_component { |
| enum zl3073x_fw_component_id id; |
| size_t size; |
| void *data; |
| }; |
| |
| /** |
| * struct zl3073x_fw - Firmware bundle |
| * @component: firmware components array |
| */ |
| struct zl3073x_fw { |
| struct zl3073x_fw_component *component[ZL_FW_NUM_COMPONENTS]; |
| }; |
| |
| struct zl3073x_fw *zl3073x_fw_load(struct zl3073x_dev *zldev, const char *data, |
| size_t size, struct netlink_ext_ack *extack); |
| void zl3073x_fw_free(struct zl3073x_fw *fw); |
| |
| int zl3073x_fw_flash(struct zl3073x_dev *zldev, struct zl3073x_fw *zlfw, |
| struct netlink_ext_ack *extack); |
| |
| #endif /* _ZL3073X_FW_H */ |