File Index
Files and directories
Sign in
FILE

fw_formats.h

File preview with syntax highlighting.

linux-6.19.14/drivers/net/ethernet/sfc/fw_formats.h C
  1/* SPDX-License-Identifier: GPL-2.0-only */
  2/****************************************************************************
  3 * Driver for AMD network controllers and boards
  4 * Copyright (C) 2025, Advanced Micro Devices, Inc.
  5 *
  6 * This program is free software; you can redistribute it and/or modify it
  7 * under the terms of the GNU General Public License version 2 as published
  8 * by the Free Software Foundation, incorporated herein by reference.
  9 */
 10
 11#ifndef _EFX_FW_FORMATS_H
 12#define _EFX_FW_FORMATS_H
 13
 14/* Header layouts of firmware update images recognised by Efx NICs.
 15 * The sources-of-truth for these layouts are AMD internal documents
 16 * and sfregistry headers, neither of which are available externally
 17 * nor usable directly by the driver.
 18 *
 19 * While each format includes a 'magic number', these are at different
 20 * offsets in the various formats, and a legal header for one format
 21 * could have the right value in whichever field occupies that offset
 22 * to match another format's magic.
 23 * Besides, some packaging formats (such as CMS/PKCS#7 signed images)
 24 * prepend a header for which finding the size is a non-trivial task;
 25 * rather than trying to parse those headers, we search byte-by-byte
 26 * through the provided firmware image looking for a valid header.
 27 * Thus, format recognition has to include validation of the checksum
 28 * field, even though the firmware will validate that itself before
 29 * applying the image.
 30 */
 31
 32/* EF10 (Medford2, X2) "reflash" header format.  Defined in SF-121352-AN */
 33#define EFX_REFLASH_HEADER_MAGIC_OFST 0
 34#define EFX_REFLASH_HEADER_MAGIC_LEN 4
 35#define EFX_REFLASH_HEADER_MAGIC_VALUE 0x106F1A5
 36
 37#define EFX_REFLASH_HEADER_VERSION_OFST 4
 38#define EFX_REFLASH_HEADER_VERSION_LEN 4
 39#define EFX_REFLASH_HEADER_VERSION_VALUE 4
 40
 41#define EFX_REFLASH_HEADER_FIRMWARE_TYPE_OFST 8
 42#define EFX_REFLASH_HEADER_FIRMWARE_TYPE_LEN 4
 43#define EFX_REFLASH_FIRMWARE_TYPE_BOOTROM 0x2
 44#define EFX_REFLASH_FIRMWARE_TYPE_BUNDLE 0xd
 45
 46#define EFX_REFLASH_HEADER_FIRMWARE_SUBTYPE_OFST 12
 47#define EFX_REFLASH_HEADER_FIRMWARE_SUBTYPE_LEN 4
 48
 49#define EFX_REFLASH_HEADER_PAYLOAD_SIZE_OFST 16
 50#define EFX_REFLASH_HEADER_PAYLOAD_SIZE_LEN 4
 51
 52#define EFX_REFLASH_HEADER_LENGTH_OFST 20
 53#define EFX_REFLASH_HEADER_LENGTH_LEN 4
 54
 55/* Reflash trailer */
 56#define EFX_REFLASH_TRAILER_CRC_OFST 0
 57#define EFX_REFLASH_TRAILER_CRC_LEN 4
 58
 59#define EFX_REFLASH_TRAILER_LEN	\
 60	(EFX_REFLASH_TRAILER_CRC_OFST + EFX_REFLASH_TRAILER_CRC_LEN)
 61
 62/* EF100 "SmartNIC image" header format.
 63 * Defined in sfregistry "src/layout/snic_image_hdr.h".
 64 */
 65#define EFX_SNICIMAGE_HEADER_MAGIC_OFST 16
 66#define EFX_SNICIMAGE_HEADER_MAGIC_LEN 4
 67#define EFX_SNICIMAGE_HEADER_MAGIC_VALUE 0x541C057A
 68
 69#define EFX_SNICIMAGE_HEADER_VERSION_OFST 20
 70#define EFX_SNICIMAGE_HEADER_VERSION_LEN 4
 71#define EFX_SNICIMAGE_HEADER_VERSION_VALUE 1
 72
 73#define EFX_SNICIMAGE_HEADER_LENGTH_OFST 24
 74#define EFX_SNICIMAGE_HEADER_LENGTH_LEN 4
 75
 76#define EFX_SNICIMAGE_HEADER_PARTITION_TYPE_OFST 36
 77#define EFX_SNICIMAGE_HEADER_PARTITION_TYPE_LEN 4
 78
 79#define EFX_SNICIMAGE_HEADER_PARTITION_SUBTYPE_OFST 40
 80#define EFX_SNICIMAGE_HEADER_PARTITION_SUBTYPE_LEN 4
 81
 82#define EFX_SNICIMAGE_HEADER_PAYLOAD_SIZE_OFST 60
 83#define EFX_SNICIMAGE_HEADER_PAYLOAD_SIZE_LEN 4
 84
 85#define EFX_SNICIMAGE_HEADER_CRC_OFST 64
 86#define EFX_SNICIMAGE_HEADER_CRC_LEN 4
 87
 88#define EFX_SNICIMAGE_HEADER_MINLEN 256
 89
 90/* EF100 "SmartNIC bundle" header format.  Defined in SF-122606-TC */
 91#define EFX_SNICBUNDLE_HEADER_MAGIC_OFST 0
 92#define EFX_SNICBUNDLE_HEADER_MAGIC_LEN 4
 93#define EFX_SNICBUNDLE_HEADER_MAGIC_VALUE 0xB1001001
 94
 95#define EFX_SNICBUNDLE_HEADER_VERSION_OFST 4
 96#define EFX_SNICBUNDLE_HEADER_VERSION_LEN 4
 97#define EFX_SNICBUNDLE_HEADER_VERSION_VALUE 1
 98
 99#define EFX_SNICBUNDLE_HEADER_BUNDLE_TYPE_OFST 8
100#define EFX_SNICBUNDLE_HEADER_BUNDLE_TYPE_LEN 4
101
102#define EFX_SNICBUNDLE_HEADER_BUNDLE_SUBTYPE_OFST 12
103#define EFX_SNICBUNDLE_HEADER_BUNDLE_SUBTYPE_LEN 4
104
105#define EFX_SNICBUNDLE_HEADER_LENGTH_OFST 20
106#define EFX_SNICBUNDLE_HEADER_LENGTH_LEN 4
107
108#define EFX_SNICBUNDLE_HEADER_CRC_OFST 224
109#define EFX_SNICBUNDLE_HEADER_CRC_LEN 4
110
111#define EFX_SNICBUNDLE_HEADER_LEN	\
112	(EFX_SNICBUNDLE_HEADER_CRC_OFST + EFX_SNICBUNDLE_HEADER_CRC_LEN)
113
114#endif /* _EFX_FW_FORMATS_H */
~/ Read-only file preview.