soc/intel/common: Abstract the sideband access
The existing Sideband access is with the PCH P2SB. There will be future platforms which access the TCSS registers through SBI other than the PCH P2SB. This change abstracts the SBI with common API. BUG=b:213574324 TEST=Build platforms coreboot images successfully. Signed-off-by: John Zhao <john.zhao@intel.com> Change-Id: Ia6201762fe92801ce6b4ed97d0eac23ac71ccd37 Reviewed-on: https://review.coreboot.org/c/coreboot/+/60978 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Subrata Banik <subratabanik@google.com> Reviewed-by: Angel Pons <th3fanbus@gmail.com>
This commit is contained in:
parent
0f76a18c3a
commit
98ce39dce4
|
@ -36,7 +36,7 @@ void heci_disable(void)
|
||||||
p2sb_unhide();
|
p2sb_unhide();
|
||||||
|
|
||||||
/* Send SBI command to make HECI#1 function disable */
|
/* Send SBI command to make HECI#1 function disable */
|
||||||
status = pcr_execute_sideband_msg(&msg, &data32, &response);
|
status = pcr_execute_sideband_msg(PCH_DEV_P2SB, &msg, &data32, &response);
|
||||||
if (status || response)
|
if (status || response)
|
||||||
printk(BIOS_ERR, "Fail to make CSME function disable\n");
|
printk(BIOS_ERR, "Fail to make CSME function disable\n");
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||||
|
|
||||||
|
#define __SIMPLE_DEVICE__
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <bootstate.h>
|
#include <bootstate.h>
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
|
@ -10,6 +12,7 @@
|
||||||
#include <intelblocks/itss.h>
|
#include <intelblocks/itss.h>
|
||||||
#include <intelblocks/p2sb.h>
|
#include <intelblocks/p2sb.h>
|
||||||
#include <intelblocks/pcr.h>
|
#include <intelblocks/pcr.h>
|
||||||
|
#include <soc/pci_devs.h>
|
||||||
#include <soc/pm.h>
|
#include <soc/pm.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <types.h>
|
#include <types.h>
|
||||||
|
@ -531,7 +534,7 @@ int gpio_lock_pads(const struct gpio_lock_config *pad_list, const size_t count)
|
||||||
if (CONFIG(DEBUG_GPIO))
|
if (CONFIG(DEBUG_GPIO))
|
||||||
printk(BIOS_INFO, "%s: Locking pad %d configuration\n",
|
printk(BIOS_INFO, "%s: Locking pad %d configuration\n",
|
||||||
__func__, pad);
|
__func__, pad);
|
||||||
status = pcr_execute_sideband_msg(&msg, &data, &response);
|
status = pcr_execute_sideband_msg(PCH_DEV_P2SB, &msg, &data, &response);
|
||||||
if ((err = sideband_msg_err(status, response)) != 0) {
|
if ((err = sideband_msg_err(status, response)) != 0) {
|
||||||
err_response = err;
|
err_response = err;
|
||||||
continue;
|
continue;
|
||||||
|
@ -543,7 +546,7 @@ int gpio_lock_pads(const struct gpio_lock_config *pad_list, const size_t count)
|
||||||
printk(BIOS_INFO, "%s: Locking pad %d TX state\n",
|
printk(BIOS_INFO, "%s: Locking pad %d TX state\n",
|
||||||
__func__, pad);
|
__func__, pad);
|
||||||
msg.offset += sizeof(uint32_t);
|
msg.offset += sizeof(uint32_t);
|
||||||
status = pcr_execute_sideband_msg(&msg, &data, &response);
|
status = pcr_execute_sideband_msg(PCH_DEV_P2SB, &msg, &data, &response);
|
||||||
if ((err = sideband_msg_err(status, response)) != 0) {
|
if ((err = sideband_msg_err(status, response)) != 0) {
|
||||||
err_response = err;
|
err_response = err;
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
|
|
||||||
#if !defined(__ACPI__)
|
#if !defined(__ACPI__)
|
||||||
#include <types.h>
|
#include <types.h>
|
||||||
|
#include <device/pci_ops.h>
|
||||||
|
|
||||||
uint32_t pcr_read32(uint8_t pid, uint16_t offset);
|
uint32_t pcr_read32(uint8_t pid, uint16_t offset);
|
||||||
uint16_t pcr_read16(uint8_t pid, uint16_t offset);
|
uint16_t pcr_read16(uint8_t pid, uint16_t offset);
|
||||||
|
@ -62,7 +63,7 @@ struct pcr_sbi_msg {
|
||||||
* 0: SBI message is successfully completed
|
* 0: SBI message is successfully completed
|
||||||
* -1: SBI message failure
|
* -1: SBI message failure
|
||||||
*/
|
*/
|
||||||
int pcr_execute_sideband_msg(struct pcr_sbi_msg *msg, uint32_t *data,
|
int pcr_execute_sideband_msg(pci_devfn_t dev, struct pcr_sbi_msg *msg, uint32_t *data,
|
||||||
uint8_t *response);
|
uint8_t *response);
|
||||||
|
|
||||||
/* Get the starting address of the port's registers. */
|
/* Get the starting address of the port's registers. */
|
||||||
|
|
|
@ -240,10 +240,9 @@ static int pcr_wait_for_completion(const pci_devfn_t dev)
|
||||||
* 0: SBI message is successfully completed
|
* 0: SBI message is successfully completed
|
||||||
* -1: SBI message failure
|
* -1: SBI message failure
|
||||||
*/
|
*/
|
||||||
int pcr_execute_sideband_msg(struct pcr_sbi_msg *msg, uint32_t *data,
|
int pcr_execute_sideband_msg(pci_devfn_t dev, struct pcr_sbi_msg *msg, uint32_t *data,
|
||||||
uint8_t *response)
|
uint8_t *response)
|
||||||
{
|
{
|
||||||
const pci_devfn_t dev = PCH_DEV_P2SB;
|
|
||||||
uint32_t sbi_data;
|
uint32_t sbi_data;
|
||||||
uint16_t sbi_status;
|
uint16_t sbi_status;
|
||||||
uint16_t sbi_rid;
|
uint16_t sbi_rid;
|
||||||
|
|
Loading…
Reference in New Issue