| /* |
| * This file is part of the coreboot project. |
| * |
| * Copyright (C) 2013 Google Inc. |
| * Copyright (C) 2015-2016 Intel Corp. |
| * |
| * 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 |
| * the Free Software Foundation; version 2 of the License. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| */ |
| |
| #include <arch/hlt.h> |
| #include <arch/io.h> |
| #include <console/console.h> |
| #include <cpu/x86/cache.h> |
| #include <cpu/x86/smm.h> |
| #include <device/pci_def.h> |
| #include <elog.h> |
| #include <soc/nvs.h> |
| #include <soc/pm.h> |
| #include <soc/gpio.h> |
| #include <soc/iomap.h> |
| #include <soc/pci_devs.h> |
| #include <soc/intel/common/smi.h> |
| #include <spi-generic.h> |
| #include <stdint.h> |
| #include <stdlib.h> |
| #include <soc/smm.h> |
| |
| int smm_disable_busmaster(device_t dev) |
| { |
| if (dev == PMC_DEV) |
| return 0; |
| return 1; |
| } |
| |
| const struct smm_save_state_ops *get_smm_save_state_ops(void) |
| { |
| return &em64t100_smm_ops; |
| } |
| |
| void __attribute__((weak)) |
| mainboard_smi_gpi_handler(const struct gpi_status *sts) { } |
| |
| static void southbridge_smi_gpi(const struct smm_save_state_ops *save_state_ops) |
| { |
| struct gpi_status smi_sts; |
| |
| gpi_clear_get_smi_status(&smi_sts); |
| mainboard_smi_gpi_handler(&smi_sts); |
| |
| /* Clear again after mainboard handler */ |
| gpi_clear_get_smi_status(&smi_sts); |
| } |
| |
| const smi_handler_t southbridge_smi[32] = { |
| [SLP_SMI_STS] = southbridge_smi_sleep, |
| [APM_SMI_STS] = southbridge_smi_apmc, |
| [FAKE_PM1_SMI_STS] = southbridge_smi_pm1, |
| [GPIO_SMI_STS] = southbridge_smi_gpi, |
| [TCO_SMI_STS] = southbridge_smi_tco, |
| [PERIODIC_SMI_STS] = southbridge_smi_periodic, |
| }; |