162306a36Sopenharmony_ci/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
262306a36Sopenharmony_ci/* Copyright (c) 2017-2019 Mellanox Technologies. All rights reserved */
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci#ifndef _MLXFW_MFA2_H
562306a36Sopenharmony_ci#define _MLXFW_MFA2_H
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#include <linux/firmware.h>
862306a36Sopenharmony_ci#include "mlxfw.h"
962306a36Sopenharmony_ci
1062306a36Sopenharmony_cistruct mlxfw_mfa2_component {
1162306a36Sopenharmony_ci	u16 index;
1262306a36Sopenharmony_ci	u32 data_size;
1362306a36Sopenharmony_ci	u8 *data;
1462306a36Sopenharmony_ci};
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_cistruct mlxfw_mfa2_file;
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_cibool mlxfw_mfa2_check(const struct firmware *fw);
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_cistruct mlxfw_mfa2_file *mlxfw_mfa2_file_init(const struct firmware *fw);
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciint mlxfw_mfa2_file_component_count(const struct mlxfw_mfa2_file *mfa2_file,
2362306a36Sopenharmony_ci				    const char *psid, u32 psid_size,
2462306a36Sopenharmony_ci				    u32 *p_count);
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_cistruct mlxfw_mfa2_component *
2762306a36Sopenharmony_cimlxfw_mfa2_file_component_get(const struct mlxfw_mfa2_file *mfa2_file,
2862306a36Sopenharmony_ci			      const char *psid, int psid_size,
2962306a36Sopenharmony_ci			      int component_index);
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_civoid mlxfw_mfa2_file_component_put(struct mlxfw_mfa2_component *component);
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_civoid mlxfw_mfa2_file_fini(struct mlxfw_mfa2_file *mfa2_file);
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci#endif
36