mb/intel/kblrvp: Add helper function to get Board Id
Add 2 helper function get_board_id() & get_spd_index() to read board id & spd index from EC. Rename the old get_board_id() function to get_ec_boardinfo(). BUG=None TEST= Tested on KBL RVP11, able to read the Board id (0x44) and verified in serial logs. not verified on KBL RVP8. Signed-off-by: Praveen hodagatta pranesh <praveenx.hodagatta.pranesh@intel.com> Change-Id: Ie20bf0d45a3568c2c433e5b844bea86aac07c47d Reviewed-on: https://review.coreboot.org/c/30306 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
committed by
Patrick Georgi
parent
7e48b47185
commit
cd26f08d94
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of the coreboot project.
|
* This file is part of the coreboot project.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2016 Intel Corporation.
|
* Copyright (C) 2016-2018 Intel Corporation.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -15,18 +15,42 @@
|
|||||||
#include "board_id.h"
|
#include "board_id.h"
|
||||||
#include <ec/acpi/ec.h>
|
#include <ec/acpi/ec.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get Board ID via EC I/O port write/read
|
* Get Board info via EC I/O port write/read
|
||||||
*/
|
*/
|
||||||
int get_board_id(void)
|
int get_ec_boardinfo(void)
|
||||||
{
|
{
|
||||||
|
MAYBE_STATIC int ec_info = -1;
|
||||||
|
if (ec_info < 0) {
|
||||||
uint8_t buffer[2];
|
uint8_t buffer[2];
|
||||||
uint8_t index;
|
uint8_t index;
|
||||||
if (send_ec_command(EC_FAB_ID_CMD) == 0) {
|
if (send_ec_command(EC_FAB_ID_CMD) == 0) {
|
||||||
for (index = 0; index < sizeof(buffer); index++)
|
for (index = 0; index < sizeof(buffer); index++)
|
||||||
buffer[index] = recv_ec_data();
|
buffer[index] = recv_ec_data();
|
||||||
return (buffer[1] << 8) | buffer[0];
|
ec_info = (buffer[1] << 8) | buffer[0];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
return ec_info;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Get spd index */
|
||||||
|
int get_spd_index(void)
|
||||||
|
{
|
||||||
|
int ec_info = get_ec_boardinfo();
|
||||||
|
if (ec_info >= 0)
|
||||||
|
return ((uint16_t)ec_info >> 5) & 0x7;
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Get Board Id */
|
||||||
|
int get_board_id(void)
|
||||||
|
{
|
||||||
|
int ec_info = get_ec_boardinfo();
|
||||||
|
if (ec_info >= 0)
|
||||||
|
return ((uint16_t)ec_info >> 8) & 0xff;
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of the coreboot project.
|
* This file is part of the coreboot project.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2016 Intel Corporation.
|
* Copyright (C) 2016-2018 Intel Corporation.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -19,6 +19,7 @@
|
|||||||
/* Mobile Board Id 0x00 - 0xFF */
|
/* Mobile Board Id 0x00 - 0xFF */
|
||||||
#define BOARD_ID_SKL_A0_RVP3 0x04
|
#define BOARD_ID_SKL_A0_RVP3 0x04
|
||||||
#define BOARD_ID_SKL_RVP7 0x0B
|
#define BOARD_ID_SKL_RVP7 0x0B
|
||||||
|
#define BOARD_ID_KBL_RVP11 0x44
|
||||||
|
|
||||||
/* 60-6F reserved for KBL RVPs */
|
/* 60-6F reserved for KBL RVPs */
|
||||||
#define BOARD_ID_KBL_LPDDR3_RVP3 0x60
|
#define BOARD_ID_KBL_LPDDR3_RVP3 0x60
|
||||||
@ -31,6 +32,12 @@
|
|||||||
* Returns board information (board id[15:8] and
|
* Returns board information (board id[15:8] and
|
||||||
* Fab info[7:0]) on success and < 0 on error
|
* Fab info[7:0]) on success and < 0 on error
|
||||||
*/
|
*/
|
||||||
|
int get_ec_boardinfo(void);
|
||||||
|
|
||||||
|
/* Return spd index */
|
||||||
|
int get_spd_index(void);
|
||||||
|
|
||||||
|
/* Board id[15:8] */
|
||||||
int get_board_id(void);
|
int get_board_id(void);
|
||||||
|
|
||||||
#endif /* _MAINBOARD_BOARD_ID_H_ */
|
#endif /* _MAINBOARD_BOARD_ID_H_ */
|
||||||
|
@ -31,7 +31,9 @@ void mainboard_memory_init_params(FSPM_UPD *mupd)
|
|||||||
{
|
{
|
||||||
FSP_M_CONFIG *mem_cfg;
|
FSP_M_CONFIG *mem_cfg;
|
||||||
mem_cfg = &mupd->FspmConfig;
|
mem_cfg = &mupd->FspmConfig;
|
||||||
u8 spd_index = (get_board_id() >> 5) & 0x7;
|
u8 spd_index = get_spd_index();
|
||||||
|
if ((int)spd_index < 0)
|
||||||
|
return;
|
||||||
|
|
||||||
printk(BIOS_INFO, "SPD index %d\n", spd_index);
|
printk(BIOS_INFO, "SPD index %d\n", spd_index);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user