coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
board_id.c
Go to the documentation of this file.
1
/* SPDX-License-Identifier: GPL-2.0-only */
2
#include "
board_id.h
"
3
#include <
boardid.h
>
4
#include <
ec/acpi/ec.h
>
5
#include <
stdint.h
>
6
#include <
ec/google/chromeec/ec.h
>
7
8
static
int
get_board_id_via_ext_ec
(
void
)
9
{
10
uint32_t
id
=
BOARD_ID_INIT
;
11
12
if
(
google_chromeec_get_board_version
(&
id
))
13
id
=
BOARD_ID_UNKNOWN
;
14
15
return
id;
16
}
17
18
/* Get Board ID via EC I/O port write/read */
19
int
get_board_id
(
void
)
20
{
21
MAYBE_STATIC_NONZERO
int
id
= -1;
22
23
if
(
id
< 0) {
24
if
(
CONFIG
(EC_GOOGLE_CHROMEEC))
25
id
=
get_board_id_via_ext_ec
();
26
else
{
27
uint8_t
buffer
[2];
28
uint8_t
index;
29
if
(
send_ec_command
(
EC_FAB_ID_CMD
) == 0) {
30
for
(index = 0; index <
sizeof
(
buffer
); index++)
31
buffer
[index] =
recv_ec_data
();
32
id
= (
buffer
[0] << 8) |
buffer
[1];
33
}
34
}
35
}
36
37
return
id;
38
}
get_board_id
int get_board_id(void)
Definition:
board_id.c:20
EC_FAB_ID_CMD
#define EC_FAB_ID_CMD
Definition:
board_id.h:7
boardid.h
BOARD_ID_INIT
#define BOARD_ID_INIT
Definition:
boardid.h:11
BOARD_ID_UNKNOWN
#define BOARD_ID_UNKNOWN
Definition:
boardid.h:10
CONFIG
@ CONFIG
Definition:
dsi_common.h:201
send_ec_command
int send_ec_command(u8 command)
Definition:
ec.c:13
recv_ec_data
u8 recv_ec_data(void)
Definition:
ec.c:65
ec.h
google_chromeec_get_board_version
int google_chromeec_get_board_version(uint32_t *version)
google_chromeec_get_board_version() - Get the board version
Definition:
ec.c:915
ec.h
get_board_id_via_ext_ec
static int get_board_id_via_ext_ec(void)
Definition:
board_id.c:8
buffer
u8 buffer[C2P_BUFFER_MAXSIZE]
Definition:
psp_smm.c:18
MAYBE_STATIC_NONZERO
#define MAYBE_STATIC_NONZERO
Definition:
stddef.h:38
stdint.h
uint32_t
unsigned int uint32_t
Definition:
stdint.h:14
uint8_t
unsigned char uint8_t
Definition:
stdint.h:8
board_id.h
src
mainboard
intel
icelake_rvp
board_id.c
Generated by
1.9.1