soc/amd/common/block/lpc/espi: Add support for ALERT_ENABLE bit
This bit is new on sabrina. We need to enable it after initialization has completed. BUG=b:227282870 TEST=Boot skyrim to OS and verify keyboard works Signed-off-by: Raul E Rangel <rrangel@chromium.org> Change-Id: I795275993589e20c1d09674232ecff782c491335 Reviewed-on: https://review.coreboot.org/c/coreboot/+/63842 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Jon Murphy <jpmurphy@google.com> Reviewed-by: Karthik Ramasubramanian <kramasub@google.com>
This commit is contained in:
parent
d0dc50cf6b
commit
dbeae6ab00
|
@ -36,6 +36,12 @@ config SOC_AMD_COMMON_BLOCK_HAS_ESPI
|
||||||
Select this option if platform supports eSPI using D14F3 configuration
|
Select this option if platform supports eSPI using D14F3 configuration
|
||||||
registers.
|
registers.
|
||||||
|
|
||||||
|
config SOC_AMD_COMMON_BLOCK_HAS_ESPI_ALERT_ENABLE
|
||||||
|
bool
|
||||||
|
depends on SOC_AMD_COMMON_BLOCK_HAS_ESPI
|
||||||
|
help
|
||||||
|
Selected by the SoC if it supports the ALERT_ENABLE bit.
|
||||||
|
|
||||||
config SOC_AMD_COMMON_BLOCK_USE_ESPI
|
config SOC_AMD_COMMON_BLOCK_USE_ESPI
|
||||||
bool
|
bool
|
||||||
depends on SOC_AMD_COMMON_BLOCK_HAS_ESPI
|
depends on SOC_AMD_COMMON_BLOCK_HAS_ESPI
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#define ESPI_WDG_EN (1 << 0)
|
#define ESPI_WDG_EN (1 << 0)
|
||||||
|
|
||||||
#define ESPI_GLOBAL_CONTROL_1 0x34
|
#define ESPI_GLOBAL_CONTROL_1 0x34
|
||||||
|
#define ESPI_ALERT_ENABLE (1 << 20) /* Sabrina and later SoCs */
|
||||||
#define ESPI_RGCMD_INT_MAP_SHIFT 13
|
#define ESPI_RGCMD_INT_MAP_SHIFT 13
|
||||||
#define ESPI_RGCMD_INT_MAP_MASK (0x1f << ESPI_RGCMD_INT_MAP_SHIFT)
|
#define ESPI_RGCMD_INT_MAP_MASK (0x1f << ESPI_RGCMD_INT_MAP_SHIFT)
|
||||||
#define ESPI_RGCMD_INT(irq) ((irq) << ESPI_RGCMD_INT_MAP_SHIFT)
|
#define ESPI_RGCMD_INT(irq) ((irq) << ESPI_RGCMD_INT_MAP_SHIFT)
|
||||||
|
|
|
@ -936,7 +936,7 @@ static void espi_setup_subtractive_decode(const struct espi_config *mb_cfg)
|
||||||
|
|
||||||
enum cb_err espi_setup(void)
|
enum cb_err espi_setup(void)
|
||||||
{
|
{
|
||||||
uint32_t slave_caps;
|
uint32_t slave_caps, ctrl;
|
||||||
const struct espi_config *cfg = espi_get_config();
|
const struct espi_config *cfg = espi_get_config();
|
||||||
|
|
||||||
printk(BIOS_SPEW, "Initializing ESPI.\n");
|
printk(BIOS_SPEW, "Initializing ESPI.\n");
|
||||||
|
@ -1035,8 +1035,13 @@ enum cb_err espi_setup(void)
|
||||||
/* Enable subtractive decode if configured */
|
/* Enable subtractive decode if configured */
|
||||||
espi_setup_subtractive_decode(cfg);
|
espi_setup_subtractive_decode(cfg);
|
||||||
|
|
||||||
espi_write32(ESPI_GLOBAL_CONTROL_1,
|
ctrl = espi_read32(ESPI_GLOBAL_CONTROL_1);
|
||||||
espi_read32(ESPI_GLOBAL_CONTROL_1) | ESPI_BUS_MASTER_EN);
|
ctrl |= ESPI_BUS_MASTER_EN;
|
||||||
|
|
||||||
|
if (CONFIG(SOC_AMD_COMMON_BLOCK_HAS_ESPI_ALERT_ENABLE))
|
||||||
|
ctrl |= ESPI_ALERT_ENABLE;
|
||||||
|
|
||||||
|
espi_write32(ESPI_GLOBAL_CONTROL_1, ctrl);
|
||||||
|
|
||||||
printk(BIOS_SPEW, "Finished initializing ESPI.\n");
|
printk(BIOS_SPEW, "Finished initializing ESPI.\n");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue