xref: /aosp_15_r20/external/vboot_reference/firmware/2lib/2stub.c (revision 8617a60d3594060b7ecbd21bc622a7c14f3cf2bc)
1*8617a60dSAndroid Build Coastguard Worker /* Copyright 2014 The ChromiumOS Authors
2*8617a60dSAndroid Build Coastguard Worker  * Use of this source code is governed by a BSD-style license that can be
3*8617a60dSAndroid Build Coastguard Worker  * found in the LICENSE file.
4*8617a60dSAndroid Build Coastguard Worker  *
5*8617a60dSAndroid Build Coastguard Worker  * Stub API implementations which should be implemented by the caller.
6*8617a60dSAndroid Build Coastguard Worker  */
7*8617a60dSAndroid Build Coastguard Worker 
8*8617a60dSAndroid Build Coastguard Worker #include <stdarg.h>
9*8617a60dSAndroid Build Coastguard Worker #include <stdlib.h>
10*8617a60dSAndroid Build Coastguard Worker #include <stdio.h>
11*8617a60dSAndroid Build Coastguard Worker #include <sys/time.h>
12*8617a60dSAndroid Build Coastguard Worker 
13*8617a60dSAndroid Build Coastguard Worker #include "2api.h"
14*8617a60dSAndroid Build Coastguard Worker #include "2common.h"
15*8617a60dSAndroid Build Coastguard Worker #include "2sysincludes.h"
16*8617a60dSAndroid Build Coastguard Worker 
17*8617a60dSAndroid Build Coastguard Worker /*****************************************************************************/
18*8617a60dSAndroid Build Coastguard Worker /* General utility stubs */
19*8617a60dSAndroid Build Coastguard Worker 
20*8617a60dSAndroid Build Coastguard Worker __attribute__((weak))
vb2ex_printf(const char * func,const char * fmt,...)21*8617a60dSAndroid Build Coastguard Worker void vb2ex_printf(const char *func, const char *fmt, ...)
22*8617a60dSAndroid Build Coastguard Worker {
23*8617a60dSAndroid Build Coastguard Worker #ifdef VBOOT_DEBUG
24*8617a60dSAndroid Build Coastguard Worker 	va_list ap;
25*8617a60dSAndroid Build Coastguard Worker 	va_start(ap, fmt);
26*8617a60dSAndroid Build Coastguard Worker 	if (func)
27*8617a60dSAndroid Build Coastguard Worker 		fprintf(stderr, "%s: ", func);
28*8617a60dSAndroid Build Coastguard Worker 	vfprintf(stderr, fmt, ap);
29*8617a60dSAndroid Build Coastguard Worker 	va_end(ap);
30*8617a60dSAndroid Build Coastguard Worker #endif
31*8617a60dSAndroid Build Coastguard Worker }
32*8617a60dSAndroid Build Coastguard Worker 
33*8617a60dSAndroid Build Coastguard Worker __attribute__((weak))
vb2ex_abort(void)34*8617a60dSAndroid Build Coastguard Worker void vb2ex_abort(void)
35*8617a60dSAndroid Build Coastguard Worker {
36*8617a60dSAndroid Build Coastguard Worker 	/* Stub simply exits. */
37*8617a60dSAndroid Build Coastguard Worker 	abort();
38*8617a60dSAndroid Build Coastguard Worker }
39*8617a60dSAndroid Build Coastguard Worker 
40*8617a60dSAndroid Build Coastguard Worker __attribute__((weak))
vb2ex_commit_data(struct vb2_context * ctx)41*8617a60dSAndroid Build Coastguard Worker vb2_error_t vb2ex_commit_data(struct vb2_context *ctx)
42*8617a60dSAndroid Build Coastguard Worker {
43*8617a60dSAndroid Build Coastguard Worker 	ctx->flags &= ~VB2_CONTEXT_SECDATA_FIRMWARE_CHANGED;
44*8617a60dSAndroid Build Coastguard Worker 	ctx->flags &= ~VB2_CONTEXT_SECDATA_KERNEL_CHANGED;
45*8617a60dSAndroid Build Coastguard Worker 	ctx->flags &= ~VB2_CONTEXT_NVDATA_CHANGED;
46*8617a60dSAndroid Build Coastguard Worker 	return VB2_SUCCESS;
47*8617a60dSAndroid Build Coastguard Worker }
48*8617a60dSAndroid Build Coastguard Worker 
49*8617a60dSAndroid Build Coastguard Worker __attribute__((weak))
vb2ex_read_resource(struct vb2_context * ctx,enum vb2_resource_index index,uint32_t offset,void * buf,uint32_t size)50*8617a60dSAndroid Build Coastguard Worker vb2_error_t vb2ex_read_resource(struct vb2_context *ctx,
51*8617a60dSAndroid Build Coastguard Worker 				enum vb2_resource_index index, uint32_t offset,
52*8617a60dSAndroid Build Coastguard Worker 				void *buf, uint32_t size)
53*8617a60dSAndroid Build Coastguard Worker {
54*8617a60dSAndroid Build Coastguard Worker 	VB2_DEBUG("function not implemented\n");
55*8617a60dSAndroid Build Coastguard Worker 	return VB2_ERROR_EX_UNIMPLEMENTED;
56*8617a60dSAndroid Build Coastguard Worker }
57*8617a60dSAndroid Build Coastguard Worker 
58*8617a60dSAndroid Build Coastguard Worker /*****************************************************************************/
59*8617a60dSAndroid Build Coastguard Worker /* TPM-related stubs */
60*8617a60dSAndroid Build Coastguard Worker 
61*8617a60dSAndroid Build Coastguard Worker __attribute__((weak))
vb2ex_tpm_clear_owner(struct vb2_context * ctx)62*8617a60dSAndroid Build Coastguard Worker vb2_error_t vb2ex_tpm_clear_owner(struct vb2_context *ctx)
63*8617a60dSAndroid Build Coastguard Worker {
64*8617a60dSAndroid Build Coastguard Worker 	VB2_DEBUG("function not implemented\n");
65*8617a60dSAndroid Build Coastguard Worker 	return VB2_ERROR_EX_UNIMPLEMENTED;
66*8617a60dSAndroid Build Coastguard Worker }
67*8617a60dSAndroid Build Coastguard Worker 
68*8617a60dSAndroid Build Coastguard Worker __attribute__((weak))
vb2ex_tpm_set_mode(enum vb2_tpm_mode mode_val)69*8617a60dSAndroid Build Coastguard Worker vb2_error_t vb2ex_tpm_set_mode(enum vb2_tpm_mode mode_val)
70*8617a60dSAndroid Build Coastguard Worker {
71*8617a60dSAndroid Build Coastguard Worker 	VB2_DEBUG("function not implemented\n");
72*8617a60dSAndroid Build Coastguard Worker 	return VB2_ERROR_EX_UNIMPLEMENTED;
73*8617a60dSAndroid Build Coastguard Worker }
74*8617a60dSAndroid Build Coastguard Worker 
75*8617a60dSAndroid Build Coastguard Worker /*****************************************************************************/
76*8617a60dSAndroid Build Coastguard Worker /* auxfw and EC-related stubs */
77*8617a60dSAndroid Build Coastguard Worker 
78*8617a60dSAndroid Build Coastguard Worker __attribute__((weak))
vb2ex_ec_running_rw(int * in_rw)79*8617a60dSAndroid Build Coastguard Worker vb2_error_t vb2ex_ec_running_rw(int *in_rw)
80*8617a60dSAndroid Build Coastguard Worker {
81*8617a60dSAndroid Build Coastguard Worker 	*in_rw = 0;
82*8617a60dSAndroid Build Coastguard Worker 	return VB2_SUCCESS;
83*8617a60dSAndroid Build Coastguard Worker }
84*8617a60dSAndroid Build Coastguard Worker 
85*8617a60dSAndroid Build Coastguard Worker __attribute__((weak))
vb2ex_ec_jump_to_rw(void)86*8617a60dSAndroid Build Coastguard Worker vb2_error_t vb2ex_ec_jump_to_rw(void)
87*8617a60dSAndroid Build Coastguard Worker {
88*8617a60dSAndroid Build Coastguard Worker 	return VB2_SUCCESS;
89*8617a60dSAndroid Build Coastguard Worker }
90*8617a60dSAndroid Build Coastguard Worker 
91*8617a60dSAndroid Build Coastguard Worker __attribute__((weak))
vb2ex_ec_disable_jump(void)92*8617a60dSAndroid Build Coastguard Worker vb2_error_t vb2ex_ec_disable_jump(void)
93*8617a60dSAndroid Build Coastguard Worker {
94*8617a60dSAndroid Build Coastguard Worker 	return VB2_SUCCESS;
95*8617a60dSAndroid Build Coastguard Worker }
96*8617a60dSAndroid Build Coastguard Worker 
97*8617a60dSAndroid Build Coastguard Worker __attribute__((weak))
vb2ex_ec_hash_image(enum vb2_firmware_selection select,const uint8_t ** hash,int * hash_size)98*8617a60dSAndroid Build Coastguard Worker vb2_error_t vb2ex_ec_hash_image(enum vb2_firmware_selection select,
99*8617a60dSAndroid Build Coastguard Worker 				const uint8_t **hash, int *hash_size)
100*8617a60dSAndroid Build Coastguard Worker {
101*8617a60dSAndroid Build Coastguard Worker 	static const uint8_t fake_hash[32] = {1, 2, 3, 4};
102*8617a60dSAndroid Build Coastguard Worker 
103*8617a60dSAndroid Build Coastguard Worker 	*hash = fake_hash;
104*8617a60dSAndroid Build Coastguard Worker 	*hash_size = sizeof(fake_hash);
105*8617a60dSAndroid Build Coastguard Worker 	return VB2_SUCCESS;
106*8617a60dSAndroid Build Coastguard Worker }
107*8617a60dSAndroid Build Coastguard Worker 
108*8617a60dSAndroid Build Coastguard Worker __attribute__((weak))
vb2ex_ec_get_expected_image_hash(enum vb2_firmware_selection select,const uint8_t ** hash,int * hash_size)109*8617a60dSAndroid Build Coastguard Worker vb2_error_t vb2ex_ec_get_expected_image_hash(enum vb2_firmware_selection select,
110*8617a60dSAndroid Build Coastguard Worker 					     const uint8_t **hash, int *hash_size)
111*8617a60dSAndroid Build Coastguard Worker {
112*8617a60dSAndroid Build Coastguard Worker 	static const uint8_t fake_hash[32] = {1, 2, 3, 4};
113*8617a60dSAndroid Build Coastguard Worker 
114*8617a60dSAndroid Build Coastguard Worker 	*hash = fake_hash;
115*8617a60dSAndroid Build Coastguard Worker 	*hash_size = sizeof(fake_hash);
116*8617a60dSAndroid Build Coastguard Worker 	return VB2_SUCCESS;
117*8617a60dSAndroid Build Coastguard Worker }
118*8617a60dSAndroid Build Coastguard Worker 
119*8617a60dSAndroid Build Coastguard Worker __attribute__((weak))
vb2ex_ec_update_image(enum vb2_firmware_selection select)120*8617a60dSAndroid Build Coastguard Worker vb2_error_t vb2ex_ec_update_image(enum vb2_firmware_selection select)
121*8617a60dSAndroid Build Coastguard Worker {
122*8617a60dSAndroid Build Coastguard Worker 	return VB2_SUCCESS;
123*8617a60dSAndroid Build Coastguard Worker }
124*8617a60dSAndroid Build Coastguard Worker 
125*8617a60dSAndroid Build Coastguard Worker __attribute__((weak))
vb2ex_ec_protect(void)126*8617a60dSAndroid Build Coastguard Worker vb2_error_t vb2ex_ec_protect(void)
127*8617a60dSAndroid Build Coastguard Worker {
128*8617a60dSAndroid Build Coastguard Worker 	return VB2_SUCCESS;
129*8617a60dSAndroid Build Coastguard Worker }
130*8617a60dSAndroid Build Coastguard Worker 
131*8617a60dSAndroid Build Coastguard Worker __attribute__((weak))
vb2ex_ec_vboot_done(struct vb2_context * ctx)132*8617a60dSAndroid Build Coastguard Worker vb2_error_t vb2ex_ec_vboot_done(struct vb2_context *ctx)
133*8617a60dSAndroid Build Coastguard Worker {
134*8617a60dSAndroid Build Coastguard Worker 	return VB2_SUCCESS;
135*8617a60dSAndroid Build Coastguard Worker }
136*8617a60dSAndroid Build Coastguard Worker 
137*8617a60dSAndroid Build Coastguard Worker __attribute__((weak))
vb2ex_ec_battery_cutoff(void)138*8617a60dSAndroid Build Coastguard Worker vb2_error_t vb2ex_ec_battery_cutoff(void)
139*8617a60dSAndroid Build Coastguard Worker {
140*8617a60dSAndroid Build Coastguard Worker 	return VB2_SUCCESS;
141*8617a60dSAndroid Build Coastguard Worker }
142*8617a60dSAndroid Build Coastguard Worker 
143*8617a60dSAndroid Build Coastguard Worker __attribute__((weak))
vb2ex_auxfw_check(enum vb2_auxfw_update_severity * severity)144*8617a60dSAndroid Build Coastguard Worker vb2_error_t vb2ex_auxfw_check(enum vb2_auxfw_update_severity *severity)
145*8617a60dSAndroid Build Coastguard Worker {
146*8617a60dSAndroid Build Coastguard Worker 	*severity = VB2_AUXFW_NO_UPDATE;
147*8617a60dSAndroid Build Coastguard Worker 	return VB2_SUCCESS;
148*8617a60dSAndroid Build Coastguard Worker }
149*8617a60dSAndroid Build Coastguard Worker 
150*8617a60dSAndroid Build Coastguard Worker __attribute__((weak))
vb2ex_auxfw_update(void)151*8617a60dSAndroid Build Coastguard Worker vb2_error_t vb2ex_auxfw_update(void)
152*8617a60dSAndroid Build Coastguard Worker {
153*8617a60dSAndroid Build Coastguard Worker 	return VB2_SUCCESS;
154*8617a60dSAndroid Build Coastguard Worker }
155*8617a60dSAndroid Build Coastguard Worker 
156*8617a60dSAndroid Build Coastguard Worker __attribute__((weak))
vb2ex_auxfw_finalize(struct vb2_context * ctx)157*8617a60dSAndroid Build Coastguard Worker vb2_error_t vb2ex_auxfw_finalize(struct vb2_context *ctx)
158*8617a60dSAndroid Build Coastguard Worker {
159*8617a60dSAndroid Build Coastguard Worker 	return VB2_SUCCESS;
160*8617a60dSAndroid Build Coastguard Worker }
161*8617a60dSAndroid Build Coastguard Worker 
162*8617a60dSAndroid Build Coastguard Worker /*****************************************************************************/
163*8617a60dSAndroid Build Coastguard Worker /* Timer-related stubs */
164*8617a60dSAndroid Build Coastguard Worker 
165*8617a60dSAndroid Build Coastguard Worker __attribute__((weak))
vb2ex_mtime(void)166*8617a60dSAndroid Build Coastguard Worker uint32_t vb2ex_mtime(void)
167*8617a60dSAndroid Build Coastguard Worker {
168*8617a60dSAndroid Build Coastguard Worker 	struct timeval tv;
169*8617a60dSAndroid Build Coastguard Worker 	gettimeofday(&tv, NULL);
170*8617a60dSAndroid Build Coastguard Worker 	return tv.tv_sec * VB2_MSEC_PER_SEC + tv.tv_usec / VB2_USEC_PER_MSEC;
171*8617a60dSAndroid Build Coastguard Worker }
172