1d4ef6694SJoris Giovannangeli /*- 2*7ce1da6aSMatthew Dillon * SPDX-License-Identifier: BSD-2-Clause-FreeBSD 3*7ce1da6aSMatthew Dillon * 4d4ef6694SJoris Giovannangeli * Copyright (c) 2006, 2008 Stanislav Sedov <stas@FreeBSD.org>. 5d4ef6694SJoris Giovannangeli * All rights reserved. 6d4ef6694SJoris Giovannangeli * 7d4ef6694SJoris Giovannangeli * Redistribution and use in source and binary forms, with or without 8d4ef6694SJoris Giovannangeli * modification, are permitted provided that the following conditions 9d4ef6694SJoris Giovannangeli * are met: 10d4ef6694SJoris Giovannangeli * 1. Redistributions of source code must retain the above copyright 11d4ef6694SJoris Giovannangeli * notice, this list of conditions and the following disclaimer. 12d4ef6694SJoris Giovannangeli * 2. Redistributions in binary form must reproduce the above copyright 13d4ef6694SJoris Giovannangeli * notice, this list of conditions and the following disclaimer in the 14d4ef6694SJoris Giovannangeli * documentation and/or other materials provided with the distribution. 15d4ef6694SJoris Giovannangeli * 16d4ef6694SJoris Giovannangeli * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 17d4ef6694SJoris Giovannangeli * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18d4ef6694SJoris Giovannangeli * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19d4ef6694SJoris Giovannangeli * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 20d4ef6694SJoris Giovannangeli * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21d4ef6694SJoris Giovannangeli * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22d4ef6694SJoris Giovannangeli * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23d4ef6694SJoris Giovannangeli * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24d4ef6694SJoris Giovannangeli * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25d4ef6694SJoris Giovannangeli * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26d4ef6694SJoris Giovannangeli * 27*7ce1da6aSMatthew Dillon * $FreeBSD$ 28d4ef6694SJoris Giovannangeli */ 29d4ef6694SJoris Giovannangeli 30d4ef6694SJoris Giovannangeli #ifndef INTEL_H 31d4ef6694SJoris Giovannangeli #define INTEL_H 32d4ef6694SJoris Giovannangeli 33d4ef6694SJoris Giovannangeli /* 34d4ef6694SJoris Giovannangeli * Prototypes. 35d4ef6694SJoris Giovannangeli */ 36d4ef6694SJoris Giovannangeli ucode_probe_t intel_probe; 37d4ef6694SJoris Giovannangeli ucode_update_t intel_update; 38d4ef6694SJoris Giovannangeli 39d4ef6694SJoris Giovannangeli typedef struct intel_fw_header { 40d4ef6694SJoris Giovannangeli uint32_t header_version; /* Version of the header. */ 41d4ef6694SJoris Giovannangeli int32_t revision; /* Unique version number. */ 42d4ef6694SJoris Giovannangeli uint32_t date; /* Date of creation in BCD. */ 43d4ef6694SJoris Giovannangeli uint32_t cpu_signature; /* Extended family, extended 44d4ef6694SJoris Giovannangeli model, type, family, model 45d4ef6694SJoris Giovannangeli and stepping. */ 46d4ef6694SJoris Giovannangeli uint32_t checksum; /* Sum of all DWORDS should 47d4ef6694SJoris Giovannangeli be 0. */ 48d4ef6694SJoris Giovannangeli uint32_t loader_revision; /* Version of the loader 49d4ef6694SJoris Giovannangeli required to load update. */ 50d4ef6694SJoris Giovannangeli uint32_t cpu_flags; /* Platform IDs encoded in 51d4ef6694SJoris Giovannangeli the lower 8 bits. */ 52d4ef6694SJoris Giovannangeli uint32_t data_size; 53d4ef6694SJoris Giovannangeli uint32_t total_size; 54d4ef6694SJoris Giovannangeli uint8_t reserved[12]; 55d4ef6694SJoris Giovannangeli } intel_fw_header_t; 56d4ef6694SJoris Giovannangeli 57d4ef6694SJoris Giovannangeli typedef struct intel_cpu_signature { 58d4ef6694SJoris Giovannangeli uint32_t cpu_signature; 59d4ef6694SJoris Giovannangeli uint32_t cpu_flags; 60d4ef6694SJoris Giovannangeli uint32_t checksum; 61d4ef6694SJoris Giovannangeli } intel_cpu_signature_t; 62d4ef6694SJoris Giovannangeli 63d4ef6694SJoris Giovannangeli typedef struct intel_ext_header { 64d4ef6694SJoris Giovannangeli uint32_t sig_count; 65d4ef6694SJoris Giovannangeli uint32_t checksum; 66d4ef6694SJoris Giovannangeli uint8_t reserved[12]; 67d4ef6694SJoris Giovannangeli } intel_ext_header_t; 68d4ef6694SJoris Giovannangeli 69d4ef6694SJoris Giovannangeli #define INTEL_HEADER_VERSION 0x00000001 70d4ef6694SJoris Giovannangeli #define INTEL_LOADER_REVISION 0x00000001 71d4ef6694SJoris Giovannangeli 72d4ef6694SJoris Giovannangeli #endif /* !INTEL_H */ 73