blob: 23c93350c677356a10d05d3c0991eaf3af72f6de [file] [log] [blame]
Angel Pons60ec3652020-04-03 01:22:13 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Aamir Bohra6fed4682016-11-08 14:06:17 +05302#include "board_id.h"
3#include <ec/acpi/ec.h>
4#include <stdint.h>
5
6/*
Praveen hodagatta praneshcd26f082018-12-19 19:28:21 +08007 * Get Board info via EC I/O port write/read
Aamir Bohra6fed4682016-11-08 14:06:17 +05308 */
Praveen hodagatta praneshcd26f082018-12-19 19:28:21 +08009int get_ec_boardinfo(void)
10{
Jeremy Compostellaf65ae742023-09-06 10:57:56 -070011 static int ec_info = -1;
Praveen hodagatta praneshcd26f082018-12-19 19:28:21 +080012 if (ec_info < 0) {
13 uint8_t buffer[2];
14 uint8_t index;
15 if (send_ec_command(EC_FAB_ID_CMD) == 0) {
16 for (index = 0; index < sizeof(buffer); index++)
17 buffer[index] = recv_ec_data();
18 ec_info = (buffer[1] << 8) | buffer[0];
19 }
20 }
21 return ec_info;
22}
23
24/* Get spd index */
Praveen hodagatta pranesh0dbce402019-01-10 18:23:58 +080025int get_spd_index(u8 *spd_index)
Praveen hodagatta praneshcd26f082018-12-19 19:28:21 +080026{
27 int ec_info = get_ec_boardinfo();
Praveen hodagatta pranesh0dbce402019-01-10 18:23:58 +080028 if (ec_info >= 0) {
29 *spd_index = ((uint16_t)ec_info >> 5) & 0x7;
30 return 0;
31 }
Praveen hodagatta praneshcd26f082018-12-19 19:28:21 +080032 return -1;
33}
34
35/* Get Board Id */
Aamir Bohra6fed4682016-11-08 14:06:17 +053036int get_board_id(void)
37{
Praveen hodagatta praneshcd26f082018-12-19 19:28:21 +080038 int ec_info = get_ec_boardinfo();
39 if (ec_info >= 0)
40 return ((uint16_t)ec_info >> 8) & 0xff;
41
Aamir Bohra6fed4682016-11-08 14:06:17 +053042 return -1;
43}