fwupd/plugins/ccgx/fu-ccgx-common.h
Richard Hughes 81da69e73d ccgx: Implement writing firmware to flash
Correctly attach into the alternate mode after the update has completed.

The vendor was appending two files to make LVFS distribution 'easier' but I'd
much rather use the same deliverables as Windows. This also allows us to
simplify the firmware loading.
2020-03-27 13:25:40 +00:00

47 lines
1.3 KiB
C

/*
* Copyright (C) 2020 Cypress Semiconductor Corporation.
*
* SPDX-License-Identifier: LGPL-2.1+
*/
#pragma once
#include <glib-object.h>
/* metadata valid signature "CY" */
#define CCGX_METADATA_VALID_SIG 0x4359
typedef struct __attribute__((packed)) {
guint8 fw_checksum; /* firmware checksum */
guint32 fw_entry; /* firmware entry address */
guint16 last_boot_row; /* last flash row of bootloader or previous firmware */
guint8 reserved1[2]; /* reserved */
guint32 fw_size; /* firmware size */
guint8 reserved2[9]; /* reserved */
guint16 metadata_valid; /* meta data valid "CY" */
guint8 reserved3[4]; /* reserved */
guint32 boot_seq; /* boot sequence number */
} CCGxMetaData;
/* firmware mode in device */
typedef enum {
FW_MODE_BOOT = 0,
FW_MODE_FW1,
FW_MODE_FW2,
FW_MODE_LAST
} FWMode;
/* firmware image type */
typedef enum {
FW_IMAGE_TYPE_UNKNOWN = 0,
FW_IMAGE_TYPE_SINGLE,
FW_IMAGE_TYPE_DUAL_SYMMETRIC,
FW_IMAGE_TYPE_DUAL_ASYMMETRIC,
} FWImageType;
gchar *fu_ccgx_version_to_string (guint32 val);
const gchar *fu_ccgx_fw_mode_to_string (FWMode val);
FWMode fu_ccgx_fw_mode_get_alternate (FWMode val);
const gchar *fu_ccgx_fw_image_type_to_string (FWImageType val);
FWImageType fu_ccgx_fw_image_type_from_string (const gchar *val);