5#ifndef OPENTITAN_SW_DEVICE_SILICON_CREATOR_LIB_DRIVERS_LIFECYCLE_H_
6#define OPENTITAN_SW_DEVICE_SILICON_CREATOR_LIB_DRIVERS_LIFECYCLE_H_
34typedef enum lifecycle_state {
40 kLcStateTest = 0xb2865fbb,
45 kLcStateDev = 0x0b5a75e0,
49 kLcStateProd = 0x65f2520f,
53 kLcStateProdEnd = 0x91b9b68a,
57 kLcStateRma = 0xcf8cfaab,
64 kLifecycleDeviceIdNumWords = 8,
71 uint32_t device_id[kLifecycleDeviceIdNumWords];
72} lifecycle_device_id_t;
81 uint16_t silicon_creator_id;
95lifecycle_state_t lifecycle_state_get(
void);
115uint32_t lifecycle_raw_state_get(
void);
123void lifecycle_device_id_get(lifecycle_device_id_t *device_id);
130void lifecycle_hw_rev_get(lifecycle_hw_rev_t *hw_rev);
138hardened_bool_t lifecycle_din_eq(lifecycle_device_id_t *
id, uint32_t *din);
140typedef enum lifecycle_status_word {
141 kLifecycleStatusWordRomExtVersion = 0,
142 kLifecycleStatusWordRomExtSecVersion = 1,
143 kLifecycleStatusWordOwnerVersion = 2,
144 kLifecycleStatusWordDeviceStatus = 3,
145} lifecycle_status_word_t;
155typedef enum lifecycle_device_status {
157 kLifecycleDeviceStatusDefault = 0,
163 kLifecycleDeviceStatusRomExtStart = 0x1,
169 kLifecycleDeviceStatusPersoStart = 0x1000,
175 kLifecycleDeviceStatusOwnerStart = 0x2000,
176} lifecycle_device_status_t;
185bool lifecycle_claim(uint32_t claim);
193void lifecycle_set_status(lifecycle_status_word_t word, uint32_t value);