Software APIs
sw
device
silicon_creator
lib
chip_info.h
1
// Copyright lowRISC contributors (OpenTitan project).
2
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
3
// SPDX-License-Identifier: Apache-2.0
4
5
#ifndef OPENTITAN_SW_DEVICE_SILICON_CREATOR_LIB_CHIP_INFO_H_
6
#define OPENTITAN_SW_DEVICE_SILICON_CREATOR_LIB_CHIP_INFO_H_
7
8
#include <
stdint.h
>
9
10
#include "
sw/device/lib/base/macros.h
"
11
12
/**
13
* A truncated commit hash from the open-source OpenTitan repo that can be
14
* used to reproduce the ROM binary.
15
*/
16
typedef
struct
chip_info_scm_revision
{
17
/**
18
* Least significant word of the truncated commit hash.
19
*/
20
uint32_t
scm_revision_low
;
21
/**
22
* Most significant word of the truncated commit hash.
23
*/
24
uint32_t
scm_revision_high
;
25
}
chip_info_scm_revision_t
;
26
27
typedef
struct
chip_info
{
28
/**
29
* Truncated commit hash.
30
*/
31
chip_info_scm_revision_t
scm_revision
;
32
/**
33
* Chip info format version.
34
*
35
* The chip info struct is placed at the end of the ROM. Placing this field at
36
* the end of the struct places the version word at the last addressable ROM
37
* address, which gives later boot stages a fixed address to look for this
38
* field. See `sw/device/silicon_creator/rom/rom.ld` for details.
39
*/
40
uint32_t
version
;
41
}
chip_info_t
;
42
OT_ASSERT_MEMBER_OFFSET
(
chip_info_t
, scm_revision, 0);
43
OT_ASSERT_MEMBER_OFFSET
(
chip_info_t
, version, 8);
44
OT_ASSERT_SIZE
(
chip_info_t
, 12);
45
46
enum
{
47
/**
48
* Chip info format version 1 value.
49
*/
50
kChipInfoVersion1 = 0x4efecea6,
51
};
52
53
/**
54
* Extern declaration for the `kChipInfo` instance placed at the end of ROM.
55
*
56
* The actual definition is in an auto-generated file.
57
*/
58
extern
const
chip_info_t
kChipInfo;
59
60
#endif
// OPENTITAN_SW_DEVICE_SILICON_CREATOR_LIB_CHIP_INFO_H_
Return to
OpenTitan Documentation