linux/drivers/media/pci/intel/ipu6/ipu6-cpd.h

/* SPDX-License-Identifier: GPL-2.0-only */
/* Copyright (C) 2015--2024 Intel Corporation */

#ifndef IPU6_CPD_H
#define IPU6_CPD_H

struct ipu6_device;
struct ipu6_bus_device;

#define IPU6_CPD_SIZE_OF_FW_ARCH_VERSION
#define IPU6_CPD_SIZE_OF_SYSTEM_VERSION
#define IPU6_CPD_SIZE_OF_COMPONENT_NAME

#define IPU6_CPD_METADATA_EXTN_TYPE_IUNIT

#define IPU6_CPD_METADATA_IMAGE_TYPE_RESERVED
#define IPU6_CPD_METADATA_IMAGE_TYPE_BOOTLOADER
#define IPU6_CPD_METADATA_IMAGE_TYPE_MAIN_FIRMWARE

#define IPU6_CPD_PKG_DIR_PSYS_SERVER_IDX
#define IPU6_CPD_PKG_DIR_ISYS_SERVER_IDX

#define IPU6_CPD_PKG_DIR_CLIENT_PG_TYPE

#define IPU6_CPD_METADATA_HASH_KEY_SIZE
#define IPU6SE_CPD_METADATA_HASH_KEY_SIZE

struct ipu6_cpd_module_data_hdr {} __packed;

/*
 * ipu6_cpd_hdr structure updated as the chksum and
 * sub_partition_name is unused on host side
 * CSE layout version 1.6 for IPU6SE (hdr_len = 0x10)
 * CSE layout version 1.7 for IPU6 (hdr_len = 0x14)
 */
struct ipu6_cpd_hdr {} __packed;

struct ipu6_cpd_ent {} __packed;

struct ipu6_cpd_metadata_cmpnt_hdr {} __packed;

struct ipu6_cpd_metadata_cmpnt {} __packed;

struct ipu6se_cpd_metadata_cmpnt {} __packed;

struct ipu6_cpd_metadata_extn {} __packed;

struct ipu6_cpd_client_pkg_hdr {} __packed;

int ipu6_cpd_create_pkg_dir(struct ipu6_bus_device *adev, const void *src);
void ipu6_cpd_free_pkg_dir(struct ipu6_bus_device *adev);
int ipu6_cpd_validate_cpd_file(struct ipu6_device *isp, const void *cpd_file,
			       unsigned long cpd_file_size);
#endif /* IPU6_CPD_H */