ELOG: Introduce elog_gsmi variants
This avoids a lot of if (CONFIG(ELOG_GSMI)) boilerplate. Change-Id: I87d25c820daedeb33b3b474a6632a89ea80b0867 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/36647 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
7e4bfe4b91
commit
9dd1a12f9c
|
@ -26,8 +26,8 @@ static int chromeec_process_one_event(void)
|
|||
uint8_t event = google_chromeec_get_event();
|
||||
|
||||
/* Log this event */
|
||||
if (CONFIG(ELOG_GSMI) && event)
|
||||
elog_add_event_byte(ELOG_TYPE_EC_EVENT, event);
|
||||
if (event)
|
||||
elog_gsmi_add_event_byte(ELOG_TYPE_EC_EVENT, event);
|
||||
|
||||
switch (event) {
|
||||
case EC_HOST_EVENT_LID_CLOSED:
|
||||
|
|
|
@ -243,6 +243,16 @@ static inline int elog_smbios_write_type15(unsigned long *current,
|
|||
static inline int elog_add_extended_event(u8 type, u32 complement) { return 0; }
|
||||
#endif
|
||||
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
#define elog_gsmi_add_event elog_add_event
|
||||
#define elog_gsmi_add_event_byte elog_add_event_byte
|
||||
#define elog_gsmi_add_event_word elog_add_event_word
|
||||
#else
|
||||
static inline int elog_gsmi_add_event(u8 event_type) { return 0; }
|
||||
static inline int elog_gsmi_add_event_byte(u8 event_type, u8 data) { return 0; }
|
||||
static inline int elog_gsmi_add_event_word(u8 event_type, u16 data) { return 0; }
|
||||
#endif
|
||||
|
||||
extern u32 gsmi_exec(u8 command, u32 *param);
|
||||
|
||||
#if CONFIG(ELOG_BOOT_COUNT)
|
||||
|
|
|
@ -33,11 +33,9 @@ static u8 mainboard_smi_ec(void)
|
|||
u8 cmd = google_chromeec_get_event();
|
||||
u32 pm1_cnt;
|
||||
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
/* Log this event */
|
||||
if (cmd)
|
||||
elog_add_event_byte(ELOG_TYPE_EC_EVENT, cmd);
|
||||
#endif
|
||||
elog_gsmi_add_event_byte(ELOG_TYPE_EC_EVENT, cmd);
|
||||
|
||||
switch (cmd) {
|
||||
case EC_HOST_EVENT_LID_CLOSED:
|
||||
|
|
|
@ -62,11 +62,9 @@ static uint8_t mainboard_smi_ec(void)
|
|||
uint16_t pmbase = get_pmbase();
|
||||
uint32_t pm1_cnt;
|
||||
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
/* Log this event */
|
||||
if (cmd)
|
||||
elog_add_event_byte(ELOG_TYPE_EC_EVENT, cmd);
|
||||
#endif
|
||||
elog_gsmi_add_event_byte(ELOG_TYPE_EC_EVENT, cmd);
|
||||
|
||||
switch (cmd) {
|
||||
case EC_HOST_EVENT_LID_CLOSED:
|
||||
|
|
|
@ -32,11 +32,9 @@ static u8 mainboard_smi_ec(void)
|
|||
{
|
||||
u8 cmd = google_chromeec_get_event();
|
||||
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
/* Log this event */
|
||||
if (cmd)
|
||||
elog_add_event_byte(ELOG_TYPE_EC_EVENT, cmd);
|
||||
#endif
|
||||
elog_gsmi_add_event_byte(ELOG_TYPE_EC_EVENT, cmd);
|
||||
|
||||
switch (cmd) {
|
||||
case EC_HOST_EVENT_LID_CLOSED:
|
||||
|
|
|
@ -34,11 +34,9 @@ static uint8_t mainboard_smi_ec(void)
|
|||
uint16_t pmbase = get_pmbase();
|
||||
uint32_t pm1_cnt;
|
||||
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
/* Log this event */
|
||||
if (cmd)
|
||||
elog_add_event_byte(ELOG_TYPE_EC_EVENT, cmd);
|
||||
#endif
|
||||
elog_gsmi_add_event_byte(ELOG_TYPE_EC_EVENT, cmd);
|
||||
|
||||
switch (cmd) {
|
||||
case EC_HOST_EVENT_LID_CLOSED:
|
||||
|
|
|
@ -41,11 +41,9 @@ static u8 mainboard_smi_ec(void)
|
|||
u8 cmd = google_chromeec_get_event();
|
||||
u32 pm1_cnt;
|
||||
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
/* Log this event */
|
||||
if (cmd)
|
||||
elog_add_event_byte(ELOG_TYPE_EC_EVENT, cmd);
|
||||
#endif
|
||||
elog_gsmi_add_event_byte(ELOG_TYPE_EC_EVENT, cmd);
|
||||
|
||||
switch (cmd) {
|
||||
case EC_HOST_EVENT_LID_CLOSED:
|
||||
|
|
|
@ -61,11 +61,9 @@ static uint8_t mainboard_smi_ec(void)
|
|||
uint16_t pmbase = get_pmbase();
|
||||
uint32_t pm1_cnt;
|
||||
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
/* Log this event */
|
||||
if (cmd)
|
||||
elog_add_event_byte(ELOG_TYPE_EC_EVENT, cmd);
|
||||
#endif
|
||||
elog_gsmi_add_event_byte(ELOG_TYPE_EC_EVENT, cmd);
|
||||
|
||||
switch (cmd) {
|
||||
case EC_HOST_EVENT_LID_CLOSED:
|
||||
|
|
|
@ -153,8 +153,7 @@ static void sb_slp_typ_handler(void)
|
|||
|
||||
if (slp_typ >= ACPI_S3) {
|
||||
/* Sleep Type Elog S3, S4, and S5 entry */
|
||||
if (CONFIG(ELOG_GSMI))
|
||||
elog_add_event_byte(ELOG_TYPE_ACPI_ENTER, slp_typ);
|
||||
elog_gsmi_add_event_byte(ELOG_TYPE_ACPI_ENTER, slp_typ);
|
||||
|
||||
wbinvd();
|
||||
|
||||
|
|
|
@ -153,8 +153,7 @@ static void sb_slp_typ_handler(void)
|
|||
|
||||
if (slp_typ >= ACPI_S3) {
|
||||
/* Sleep Type Elog S3, S4, and S5 entry */
|
||||
if (CONFIG(ELOG_GSMI))
|
||||
elog_add_event_byte(ELOG_TYPE_ACPI_ENTER, slp_typ);
|
||||
elog_gsmi_add_event_byte(ELOG_TYPE_ACPI_ENTER, slp_typ);
|
||||
|
||||
wbinvd();
|
||||
|
||||
|
|
|
@ -114,11 +114,9 @@ static void southbridge_smi_sleep(void)
|
|||
/* Do any mainboard sleep handling */
|
||||
mainboard_smi_sleep(slp_typ);
|
||||
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
/* Log S3, S4, and S5 entry */
|
||||
if (slp_typ >= ACPI_S3)
|
||||
elog_add_event_byte(ELOG_TYPE_ACPI_ENTER, slp_typ);
|
||||
#endif
|
||||
elog_gsmi_add_event_byte(ELOG_TYPE_ACPI_ENTER, slp_typ);
|
||||
|
||||
/* Next, do the deed.
|
||||
*/
|
||||
|
@ -210,7 +208,6 @@ static em64t100_smm_state_save_area_t *smi_apmc_find_state_save(uint8_t cmd)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
static void southbridge_smi_gsmi(void)
|
||||
{
|
||||
u32 *ret, *param;
|
||||
|
@ -231,7 +228,6 @@ static void southbridge_smi_gsmi(void)
|
|||
/* drivers/elog/gsmi.c */
|
||||
*ret = gsmi_exec(sub_command, param);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void finalize(void)
|
||||
{
|
||||
|
@ -348,11 +344,10 @@ static void southbridge_smi_apmc(void)
|
|||
printk(BIOS_DEBUG, "SMI#: Setting GNVS to %p\n", gnvs);
|
||||
}
|
||||
break;
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
case APM_CNT_ELOG_GSMI:
|
||||
if (CONFIG(ELOG_GSMI))
|
||||
southbridge_smi_gsmi();
|
||||
break;
|
||||
#endif
|
||||
case APM_CNT_FINALIZE:
|
||||
finalize();
|
||||
break;
|
||||
|
@ -374,9 +369,7 @@ static void southbridge_smi_pm1(void)
|
|||
*/
|
||||
if (pm1_sts & PWRBTN_STS) {
|
||||
// power button pressed
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
elog_add_event(ELOG_TYPE_POWER_BUTTON);
|
||||
#endif
|
||||
elog_gsmi_add_event(ELOG_TYPE_POWER_BUTTON);
|
||||
disable_pm1_control(-1UL);
|
||||
enable_pm1_control(SLP_EN | (SLP_TYP_S5 << SLP_TYP_SHIFT));
|
||||
}
|
||||
|
|
|
@ -154,11 +154,10 @@ static void southbridge_smi_sleep(void)
|
|||
/* Do any mainboard sleep handling */
|
||||
mainboard_smi_sleep(slp_typ);
|
||||
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
/* Log S3, S4, and S5 entry */
|
||||
if (slp_typ >= ACPI_S3)
|
||||
elog_add_event_byte(ELOG_TYPE_ACPI_ENTER, slp_typ);
|
||||
#endif
|
||||
elog_gsmi_add_event_byte(ELOG_TYPE_ACPI_ENTER, slp_typ);
|
||||
|
||||
/* Clear pending GPE events */
|
||||
clear_gpe_status();
|
||||
|
||||
|
@ -260,7 +259,6 @@ static em64t100_smm_state_save_area_t *smi_apmc_find_state_save(uint8_t cmd)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
static void southbridge_smi_gsmi(void)
|
||||
{
|
||||
u32 *ret, *param;
|
||||
|
@ -281,7 +279,6 @@ static void southbridge_smi_gsmi(void)
|
|||
/* drivers/elog/gsmi.c */
|
||||
*ret = gsmi_exec(sub_command, param);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void finalize(void)
|
||||
{
|
||||
|
@ -346,11 +343,10 @@ static void southbridge_smi_apmc(void)
|
|||
printk(BIOS_DEBUG, "SMI#: Setting GNVS to %p\n", gnvs);
|
||||
}
|
||||
break;
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
case APM_CNT_ELOG_GSMI:
|
||||
if (CONFIG(ELOG_GSMI))
|
||||
southbridge_smi_gsmi();
|
||||
break;
|
||||
#endif
|
||||
case APM_CNT_FINALIZE:
|
||||
finalize();
|
||||
break;
|
||||
|
@ -369,9 +365,7 @@ static void southbridge_smi_pm1(void)
|
|||
*/
|
||||
if (pm1_sts & PWRBTN_STS) {
|
||||
/* power button pressed */
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
elog_add_event(ELOG_TYPE_POWER_BUTTON);
|
||||
#endif
|
||||
elog_gsmi_add_event(ELOG_TYPE_POWER_BUTTON);
|
||||
disable_pm1_control(-1UL);
|
||||
enable_pm1_control(SLP_EN | (SLP_TYP_S5 << SLP_TYP_SHIFT));
|
||||
}
|
||||
|
|
|
@ -179,11 +179,9 @@ static void southbridge_smi_sleep(void)
|
|||
/* USB sleep preparations */
|
||||
usb_xhci_sleep_prepare(PCH_DEV_XHCI, slp_typ);
|
||||
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
/* Log S3, S4, and S5 entry */
|
||||
if (slp_typ >= ACPI_S3)
|
||||
elog_add_event_byte(ELOG_TYPE_ACPI_ENTER, slp_typ);
|
||||
#endif
|
||||
elog_gsmi_add_event_byte(ELOG_TYPE_ACPI_ENTER, slp_typ);
|
||||
|
||||
/* Clear pending GPE events */
|
||||
clear_gpe_status();
|
||||
|
@ -293,7 +291,6 @@ static em64t101_smm_state_save_area_t *smi_apmc_find_state_save(u8 cmd)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
static void southbridge_smi_gsmi(void)
|
||||
{
|
||||
u32 *ret, *param;
|
||||
|
@ -314,7 +311,6 @@ static void southbridge_smi_gsmi(void)
|
|||
/* drivers/elog/gsmi.c */
|
||||
*ret = gsmi_exec(sub_command, param);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void finalize(void)
|
||||
{
|
||||
|
@ -372,11 +368,10 @@ static void southbridge_smi_apmc(void)
|
|||
printk(BIOS_DEBUG, "SMI#: Setting GNVS to %p\n", gnvs);
|
||||
}
|
||||
break;
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
case APM_CNT_ELOG_GSMI:
|
||||
if (CONFIG(ELOG_GSMI))
|
||||
southbridge_smi_gsmi();
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
|
||||
mainboard_smi_apmc(reg8);
|
||||
|
@ -391,9 +386,7 @@ static void southbridge_smi_pm1(void)
|
|||
*/
|
||||
if (pm1_sts & PWRBTN_STS) {
|
||||
/* power button pressed */
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
elog_add_event(ELOG_TYPE_POWER_BUTTON);
|
||||
#endif
|
||||
elog_gsmi_add_event(ELOG_TYPE_POWER_BUTTON);
|
||||
disable_pm1_control(-1UL);
|
||||
enable_pm1_control(SLP_EN | (SLP_TYP_S5 << 10));
|
||||
}
|
||||
|
|
|
@ -195,8 +195,8 @@ void smihandler_southbridge_sleep(
|
|||
mainboard_smi_sleep(slp_typ);
|
||||
|
||||
/* Log S3, S4, and S5 entry */
|
||||
if (slp_typ >= ACPI_S3 && CONFIG(ELOG_GSMI))
|
||||
elog_add_event_byte(ELOG_TYPE_ACPI_ENTER, slp_typ);
|
||||
if (slp_typ >= ACPI_S3)
|
||||
elog_gsmi_add_event_byte(ELOG_TYPE_ACPI_ENTER, slp_typ);
|
||||
|
||||
/* Clear pending GPE events */
|
||||
pmc_clear_all_gpe_status();
|
||||
|
@ -413,8 +413,7 @@ void smihandler_southbridge_pm1(
|
|||
*/
|
||||
if ((pm1_sts & PWRBTN_STS) && (pm1_en & PWRBTN_EN)) {
|
||||
/* power button pressed */
|
||||
if (CONFIG(ELOG_GSMI))
|
||||
elog_add_event(ELOG_TYPE_POWER_BUTTON);
|
||||
elog_gsmi_add_event(ELOG_TYPE_POWER_BUTTON);
|
||||
pmc_disable_pm1_control(-1UL);
|
||||
pmc_enable_pm1_control(SLP_EN | (SLP_TYP_S5 << SLP_TYP_SHIFT));
|
||||
}
|
||||
|
|
|
@ -112,11 +112,9 @@ static void southbridge_smi_sleep(void)
|
|||
/* Do any mainboard sleep handling */
|
||||
mainboard_smi_sleep(slp_typ);
|
||||
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
/* Log S3, S4, and S5 entry */
|
||||
if (slp_typ >= ACPI_S3)
|
||||
elog_add_event_byte(ELOG_TYPE_ACPI_ENTER, slp_typ);
|
||||
#endif
|
||||
elog_gsmi_add_event_byte(ELOG_TYPE_ACPI_ENTER, slp_typ);
|
||||
|
||||
/* Next, do the deed.
|
||||
*/
|
||||
|
@ -208,7 +206,6 @@ static em64t100_smm_state_save_area_t *smi_apmc_find_state_save(uint8_t cmd)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
static void southbridge_smi_gsmi(void)
|
||||
{
|
||||
u32 *ret, *param;
|
||||
|
@ -229,7 +226,7 @@ static void southbridge_smi_gsmi(void)
|
|||
/* drivers/elog/gsmi.c */
|
||||
*ret = gsmi_exec(sub_command, param);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void southbridge_smi_apmc(void)
|
||||
{
|
||||
uint8_t reg8;
|
||||
|
@ -275,11 +272,10 @@ static void southbridge_smi_apmc(void)
|
|||
printk(BIOS_DEBUG, "SMI#: Setting GNVS to %p\n", gnvs);
|
||||
}
|
||||
break;
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
case APM_CNT_ELOG_GSMI:
|
||||
if (CONFIG(ELOG_GSMI))
|
||||
southbridge_smi_gsmi();
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
|
||||
mainboard_smi_apmc(reg8);
|
||||
|
@ -294,9 +290,7 @@ static void southbridge_smi_pm1(void)
|
|||
*/
|
||||
if (pm1_sts & PWRBTN_STS) {
|
||||
// power button pressed
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
elog_add_event(ELOG_TYPE_POWER_BUTTON);
|
||||
#endif
|
||||
elog_gsmi_add_event(ELOG_TYPE_POWER_BUTTON);
|
||||
disable_pm1_control(-1UL);
|
||||
enable_pm1_control(SLP_EN | (SLP_TYP_S5 << SLP_TYP_SHIFT));
|
||||
}
|
||||
|
|
|
@ -138,11 +138,9 @@ static void southbridge_smi_sleep(void)
|
|||
/* Do any mainboard sleep handling */
|
||||
mainboard_smi_sleep(slp_typ);
|
||||
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
/* Log S3, S4, and S5 entry */
|
||||
if (slp_typ >= ACPI_S3)
|
||||
elog_add_event_byte(ELOG_TYPE_ACPI_ENTER, slp_typ);
|
||||
#endif
|
||||
elog_gsmi_add_event_byte(ELOG_TYPE_ACPI_ENTER, slp_typ);
|
||||
|
||||
/* Next, do the deed.
|
||||
*/
|
||||
|
@ -246,7 +244,6 @@ em64t101_smm_state_save_area_t *smi_apmc_find_state_save(u8 cmd)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
static void southbridge_smi_gsmi(void)
|
||||
{
|
||||
u32 *ret, *param;
|
||||
|
@ -267,7 +264,6 @@ static void southbridge_smi_gsmi(void)
|
|||
/* drivers/elog/gsmi.c */
|
||||
*ret = gsmi_exec(sub_command, param);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void southbridge_smi_store(void)
|
||||
{
|
||||
|
@ -338,11 +334,10 @@ static void southbridge_smi_apmc(void)
|
|||
southbridge_finalize_all();
|
||||
mainboard_finalized = 1;
|
||||
break;
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
case APM_CNT_ELOG_GSMI:
|
||||
if (CONFIG(ELOG_GSMI))
|
||||
southbridge_smi_gsmi();
|
||||
break;
|
||||
#endif
|
||||
case APM_CNT_SMMSTORE:
|
||||
if (CONFIG(SMMSTORE))
|
||||
southbridge_smi_store();
|
||||
|
@ -366,9 +361,7 @@ static void southbridge_smi_pm1(void)
|
|||
// power button pressed
|
||||
u32 reg32;
|
||||
reg32 = (7 << 10) | (1 << 13);
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
elog_add_event(ELOG_TYPE_POWER_BUTTON);
|
||||
#endif
|
||||
elog_gsmi_add_event(ELOG_TYPE_POWER_BUTTON);
|
||||
write_pmbase32(PM1_CNT, reg32);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -140,11 +140,9 @@ static void southbridge_smi_sleep(void)
|
|||
#endif
|
||||
usb_xhci_sleep_prepare(PCH_XHCI_DEV, slp_typ);
|
||||
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
/* Log S3, S4, and S5 entry */
|
||||
if (slp_typ >= ACPI_S3)
|
||||
elog_add_event_byte(ELOG_TYPE_ACPI_ENTER, slp_typ);
|
||||
#endif
|
||||
elog_gsmi_add_event_byte(ELOG_TYPE_ACPI_ENTER, slp_typ);
|
||||
|
||||
/* Next, do the deed.
|
||||
*/
|
||||
|
@ -247,7 +245,6 @@ static em64t101_smm_state_save_area_t *smi_apmc_find_state_save(u8 cmd)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
static void southbridge_smi_gsmi(void)
|
||||
{
|
||||
u32 *ret, *param;
|
||||
|
@ -268,7 +265,6 @@ static void southbridge_smi_gsmi(void)
|
|||
/* drivers/elog/gsmi.c */
|
||||
*ret = gsmi_exec(sub_command, param);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void southbridge_smi_apmc(void)
|
||||
{
|
||||
|
@ -332,11 +328,10 @@ static void southbridge_smi_apmc(void)
|
|||
case 0xca:
|
||||
usb_xhci_route_all();
|
||||
break;
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
case APM_CNT_ELOG_GSMI:
|
||||
if (CONFIG(ELOG_GSMI))
|
||||
southbridge_smi_gsmi();
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
|
||||
mainboard_smi_apmc(reg8);
|
||||
|
@ -351,9 +346,7 @@ static void southbridge_smi_pm1(void)
|
|||
*/
|
||||
if (pm1_sts & PWRBTN_STS) {
|
||||
// power button pressed
|
||||
#if CONFIG(ELOG_GSMI)
|
||||
elog_add_event(ELOG_TYPE_POWER_BUTTON);
|
||||
#endif
|
||||
elog_gsmi_add_event(ELOG_TYPE_POWER_BUTTON);
|
||||
disable_pm1_control(-1UL);
|
||||
enable_pm1_control(SLP_EN | (SLP_TYP_S5 << 10));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue