53 lines
1.2 KiB
C
53 lines
1.2 KiB
C
/* 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 */
|