![]() |
coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
|
#include <acpi/acpi.h>
#include <device/mmio.h>
#include <device/pci_ops.h>
#include <console/console.h>
#include <device/device.h>
#include <device/pci.h>
#include <device/pci_ids.h>
#include <device/pci_def.h>
#include <stdlib.h>
#include <string.h>
#include <delay.h>
#include <elog.h>
#include <soc/me.h>
#include <soc/lpc.h>
#include <soc/pch.h>
#include <soc/pci_devs.h>
#include <soc/rcba.h>
#include <soc/intel/broadwell/pch/chip.h>
#include <vendorcode/google/chromeos/chromeos.h>
Go to the source code of this file.
Data Structures | |
struct | mbp_payload |
Macros | |
#define | ASSIGN_FIELD_PTR(field_, val_) |
Functions | |
static void | mei_dump (void *ptr, int dword, int offset, const char *type) |
static void | mei_read_dword_ptr (void *ptr, int offset) |
static void | mei_write_dword_ptr (void *ptr, int offset) |
static void | pci_read_dword_ptr (struct device *dev, void *ptr, int offset) |
static void | read_host_csr (struct mei_csr *csr) |
static void | write_host_csr (struct mei_csr *csr) |
static void | read_me_csr (struct mei_csr *csr) |
static void | write_cb (u32 dword) |
static u32 | read_cb (void) |
static int | mei_wait_for_me_ready (void) |
static void | mei_reset (void) |
static int | mei_send_packet (struct mei_header *mei, void *req_data) |
static int | mei_send_data (u8 me_address, u8 host_address, void *req_data, int req_bytes) |
static int | mei_send_header (u8 me_address, u8 host_address, void *header, int header_len, int complete) |
static int | mei_recv_msg (void *header, int header_bytes, void *rsp_data, int rsp_bytes) |
static int | mei_sendrecv_mkhi (struct mkhi_header *mkhi, void *req_data, int req_bytes, void *rsp_data, int rsp_bytes) |
static int | mei_sendrecv_icc (struct icc_header *icc, void *req_data, int req_bytes, void *rsp_data, int rsp_bytes) |
static void | intel_me_mbp_give_up (struct device *dev) |
static void | intel_me_mbp_clear (struct device *dev) |
static void | me_print_fw_version (mbp_fw_version_name *vers_name) |
static void | print_cap (const char *name, int state) |
static int | mkhi_get_fwcaps (mbp_mefwcaps *cap) |
static void | me_print_fwcaps (mbp_mefwcaps *cap) |
static int | mkhi_end_of_post (void) |
static int | mkhi_end_of_post_noack (void) |
static int | mkhi_hmrfpo_lock (void) |
static int | mkhi_hmrfpo_lock_noack (void) |
static void | intel_me_finalize (struct device *dev) |
static int | me_icc_set_clock_enables (u32 mask) |
static me_bios_path | intel_me_path (struct device *dev) |
static int | intel_mei_setup (struct device *dev) |
static int | intel_me_extend_valid (struct device *dev) |
static void | intel_me_print_mbp (me_bios_payload *mbp_data) |
static u32 | me_to_host_words_pending (void) |
static int | intel_me_read_mbp (me_bios_payload *mbp_data, struct device *dev) |
static void | intel_me_init (struct device *dev) |
static void | intel_me_enable (struct device *dev) |
Variables | |
static const char * | me_bios_path_values [] |
static u8 * | mei_base_address |
static struct device_operations | device_ops |
static const unsigned short | pci_device_ids [] |
static const struct pci_driver intel_me | __pci_driver |
#define ASSIGN_FIELD_PTR | ( | field_, | |
val_ | |||
) |
|
static |
Definition at line 733 of file me.c.
References BIOS_DEBUG, BIOS_ERR, CONFIG, count, me_heres::extend_feature_present, me_heres::extend_reg_algorithm, me_heres::extend_reg_valid, PCI_ME_EXT_SHA1, PCI_ME_EXT_SHA256, PCI_ME_HER, PCI_ME_HERES, pci_read_config32(), pci_read_dword_ptr(), and printk.
Referenced by intel_me_init().
Definition at line 596 of file me.c.
References FD2, mei_base_address, PCH_DISABLE_MEI1, PCI_COMMAND, PCI_COMMAND_IO, PCI_COMMAND_MASTER, PCI_COMMAND_MEMORY, pci_read_config16(), pci_write_config16(), RCBA32, and RCBA32_OR.
Definition at line 946 of file me.c.
References BIOS_NOTICE, config, config_of(), me_hfs::fpt_bad, intel_me_extend_valid(), intel_me_path(), intel_me_print_mbp(), intel_me_read_mbp(), intel_mei_setup(), mei_csr::interrupt_generate, me_bios_path_values, ME_HFS_CWS_NORMAL, ME_HFS_MODE_NORMAL, me_icc_set_clock_enables(), ME_NORMAL_BIOS_PATH, memset(), mkhi_end_of_post(), mkhi_end_of_post_noack(), mkhi_hmrfpo_lock(), mkhi_hmrfpo_lock_noack(), me_hfs::operation_mode, PCI_ME_HFS, pci_read_dword_ptr(), printk, read_host_csr(), mei_csr::reset, me_hfs::working_state, and write_host_csr().
Definition at line 436 of file me.c.
References BIOS_INFO, BIOS_WARNING, count, intel_me_mbp_give_up(), me_hfs2::mbp_cleared, ME_DELAY, ME_RETRY, PCI_ME_HFS2, pci_read_dword_ptr(), printk, and udelay().
Referenced by intel_me_read_mbp().
Definition at line 420 of file me.c.
References mei_csr::interrupt_generate, PCI_ME_H_GS2, PCI_ME_MBP_GIVE_UP, pci_write_config32(), read_host_csr(), mei_csr::reset, and write_host_csr().
Referenced by intel_me_mbp_clear(), and intel_me_read_mbp().
|
static |
Definition at line 638 of file me.c.
References BIOS_CRIT, CONFIG, me_hfs2::current_pmevent, me_hfs2::current_state, elog_event_data_me_extended::current_working_state, elog_add_event_byte(), elog_add_event_raw(), ELOG_TYPE_MANAGEMENT_ENGINE, ELOG_TYPE_MANAGEMENT_ENGINE_EXT, me_hfs::error_code, me_hfs::fpt_bad, intel_me_status(), me_hfs2::mbp_rdy, ME_DISABLE_BIOS_PATH, ME_ERROR_BIOS_PATH, ME_HFS_CWS_NORMAL, ME_HFS_CWS_REC, ME_HFS_MODE_DEBUG, ME_HFS_MODE_DIS, ME_HFS_MODE_NORMAL, ME_HFS_MODE_OVER_JMPR, ME_HFS_MODE_OVER_MEI, ME_NORMAL_BIOS_PATH, ME_RECOVERY_BIOS_PATH, me_hfs::operation_mode, me_hfs::operation_state, PCI_ME_HFS, PCI_ME_HFS2, pci_read_dword_ptr(), printk, me_hfs2::progress_code, and me_hfs::working_state.
Referenced by intel_me_init().
|
static |
Definition at line 778 of file me.c.
References BIOS_DEBUG, CONFIG, me_bios_payload::fw_capabilities, me_bios_payload::fw_version_name, me_print_fw_version(), me_print_fwcaps(), mbp_plat_time::mrst_pltrst_time_ms, me_bios_payload::plat_time, mbp_plat_time::pltrst_cpurst_time_ms, printk, and mbp_plat_time::wake_event_mrst_time_ms.
Referenced by intel_me_init().
|
static |
Definition at line 817 of file me.c.
References mbp_item_header::app_id, ASSIGN_FIELD_PTR, BIOS_ERR, BIOS_INFO, mei_csr::buffer_read_ptr, mei_csr::buffer_write_ptr, CONFIG, mbp_payload::data, free(), mbp_payload::header, ICC, intel_me_mbp_clear(), intel_me_mbp_give_up(), mei_csr::interrupt_generate, mbp_item_header::item_id, mbp_item_header::length, malloc(), MBP_IDENT, MBP_MAKE_IDENT, me_hfs2::mbp_rdy, me_to_host_words_pending(), MEI_ME_CB_RW, mei_read_dword_ptr(), PCI_ME_HFS2, pci_read_dword_ptr(), printk, read_host_csr(), mei_csr::reset, and write_host_csr().
Referenced by intel_me_init().
|
static |
Definition at line 706 of file me.c.
References resource::base, BIOS_DEBUG, mei_csr::interrupt_generate, mei_base_address, PCI_BASE_ADDRESS_0, PCI_COMMAND, PCI_COMMAND_MASTER, PCI_COMMAND_MEMORY, pci_or_config16(), printk, probe_resource(), read_host_csr(), mei_csr::ready, res2mmio(), mei_csr::reset, resource::size, and write_host_csr().
Referenced by intel_me_init().
|
static |
Definition at line 615 of file me.c.
References icc_header::api_version, BIOS_ERR, BIOS_INFO, icc_clock_enables_msg::clock_enables, ICC_API_VERSION_LYNXPOINT, ICC_SET_CLOCK_ENABLES, mask, mei_sendrecv_icc(), NULL, and printk.
Referenced by intel_me_init().
|
static |
Definition at line 457 of file me.c.
References BIOS_DEBUG, BIOS_ERR, mbp_fw_version_name::build_version, mbp_fw_version_name::hotfix_version, mbp_fw_version_name::major_version, mbp_fw_version_name::minor_version, and printk.
Referenced by intel_me_print_mbp().
|
static |
Definition at line 496 of file me.c.
References BIOS_ERR, mbp_mefwcaps::full_net, mbp_mefwcaps::icc_over_clocking, mbp_mefwcaps::intel_at, mbp_mefwcaps::intel_cls, mbp_mefwcaps::intel_mpc, mbp_mefwcaps::ipv6, mbp_mefwcaps::kvm, mbp_mefwcaps::manageability, mkhi_get_fwcaps(), mbp_mefwcaps::och, mbp_mefwcaps::pavp, print_cap(), printk, mbp_mefwcaps::std_net, mbp_mefwcaps::tls, mbp_mefwcaps::vlan, and mbp_mefwcaps::wlan.
Referenced by intel_me_print_mbp().
Definition at line 795 of file me.c.
References mei_csr::buffer_depth, mei_csr::buffer_read_ptr, mei_csr::buffer_write_ptr, read_me_csr(), and mei_csr::ready.
Referenced by intel_me_read_mbp().
Definition at line 45 of file me.c.
References BIOS_SPEW, mei_csr::buffer_depth, mei_csr::buffer_read_ptr, mei_csr::buffer_write_ptr, CONFIG, mei_csr::interrupt_enable, mei_csr::interrupt_generate, mei_csr::interrupt_status, MEI_H_CB_WW, MEI_H_CSR, MEI_ME_CB_RW, MEI_ME_CSR_HA, offset, printk, mei_csr::ready, mei_csr::reset, and type.
Referenced by mei_read_dword_ptr(), mei_write_dword_ptr(), pci_read_dword_ptr(), read_cb(), and write_cb().
Definition at line 82 of file me.c.
References mei_base_address, mei_dump(), memcpy(), offset, and read32().
Referenced by intel_me_read_mbp(), mei_recv_msg(), read_host_csr(), and read_me_csr().
Definition at line 275 of file me.c.
References BIOS_ERR, mei_csr::buffer_read_ptr, mei_csr::buffer_write_ptr, header, mei_csr::interrupt_generate, mei_csr::interrupt_status, mei_header::is_complete, mei_header::length, ME_DELAY, ME_RETRY, MEI_ME_CB_RW, mei_read_dword_ptr(), mei_wait_for_me_ready(), printk, read_cb(), read_host_csr(), read_me_csr(), udelay(), and write_host_csr().
Referenced by mei_sendrecv_icc(), and mei_sendrecv_mkhi().
Definition at line 149 of file me.c.
References mei_csr::interrupt_generate, mei_wait_for_me_ready(), read_host_csr(), mei_csr::ready, mei_csr::reset, and write_host_csr().
Referenced by mei_send_packet().
Definition at line 227 of file me.c.
References mei_csr::buffer_depth, mei_csr::buffer_write_ptr, header, mei_header::host_address, mei_send_packet(), and read_host_csr().
Referenced by mei_sendrecv_icc(), and mei_sendrecv_mkhi().
|
static |
Definition at line 263 of file me.c.
References mei_header::client_address, header, mei_header::host_address, and mei_send_packet().
Referenced by mei_sendrecv_icc(), and mei_sendrecv_mkhi().
|
static |
Definition at line 173 of file me.c.
References BIOS_DEBUG, BIOS_ERR, mei_csr::buffer_depth, mei_csr::buffer_write_ptr, mei_csr::interrupt_generate, mei_header::length, MEI_H_CB_WW, mei_reset(), mei_wait_for_me_ready(), mei_write_dword_ptr(), printk, read_host_csr(), write_cb(), and write_host_csr().
Referenced by mei_send_data(), and mei_send_header().
|
inlinestatic |
Definition at line 392 of file me.c.
References MEI_ADDRESS_ICC, MEI_HOST_ADDRESS, mei_recv_msg(), mei_send_data(), and mei_send_header().
Referenced by me_icc_set_clock_enables().
|
inlinestatic |
Definition at line 354 of file me.c.
References BIOS_ERR, mkhi_header::command, mkhi_header::group_id, mkhi_header::is_response, MEI_ADDRESS_MKHI, MEI_HOST_ADDRESS, mei_recv_msg(), mei_send_data(), mei_send_header(), and printk.
Referenced by mkhi_end_of_post(), mkhi_end_of_post_noack(), mkhi_get_fwcaps(), mkhi_hmrfpo_lock(), and mkhi_hmrfpo_lock_noack().
|
static |
Definition at line 133 of file me.c.
References BIOS_ERR, ME_DELAY, ME_RETRY, printk, read_me_csr(), mei_csr::ready, and udelay().
Referenced by mei_recv_msg(), mei_reset(), and mei_send_packet().
Definition at line 89 of file me.c.
References mei_base_address, mei_dump(), memcpy(), offset, and write32().
Referenced by mei_send_packet(), and write_host_csr().
|
static |
Definition at line 523 of file me.c.
References BIOS_ERR, BIOS_INFO, mkhi_header::group_id, mei_sendrecv_mkhi(), MKHI_END_OF_POST, MKHI_GROUP_ID_GEN, NULL, and printk.
Referenced by intel_me_init().
|
static |
Definition at line 542 of file me.c.
References BIOS_ERR, BIOS_INFO, mkhi_header::group_id, mei_sendrecv_mkhi(), MKHI_END_OF_POST_NOACK, MKHI_GROUP_ID_GEN, NULL, and printk.
Referenced by intel_me_init().
|
static |
Definition at line 476 of file me.c.
References BIOS_ERR, me_fwcaps::caps_sku, mkhi_header::group_id, mei_sendrecv_mkhi(), MKHI_FWCAPS_GET_RULE, MKHI_GROUP_ID_FWCAPS, and printk.
Referenced by me_print_fwcaps().
|
static |
Definition at line 560 of file me.c.
References BIOS_ERR, BIOS_INFO, mkhi_header::group_id, mei_sendrecv_mkhi(), MKHI_GROUP_ID_HMRFPO, MKHI_HMRFPO_LOCK, NULL, and printk.
Referenced by intel_me_init().
|
static |
Definition at line 579 of file me.c.
References BIOS_ERR, BIOS_INFO, mkhi_header::group_id, mei_sendrecv_mkhi(), MKHI_GROUP_ID_HMRFPO, MKHI_HMRFPO_LOCK_NOACK, NULL, and printk.
Referenced by intel_me_init().
Definition at line 97 of file me.c.
References mei_dump(), memcpy(), offset, and pci_read_config32().
Referenced by intel_me_extend_valid(), intel_me_init(), intel_me_mbp_clear(), intel_me_path(), and intel_me_read_mbp().
|
inlinestatic |
Definition at line 469 of file me.c.
References BIOS_DEBUG, name, and printk.
Referenced by me_print_fwcaps().
Definition at line 125 of file me.c.
References mei_base_address, mei_dump(), MEI_ME_CB_RW, NULL, and read32().
Referenced by intel_me_read_mbp(), and mei_recv_msg().
Definition at line 104 of file me.c.
References MEI_H_CSR, and mei_read_dword_ptr().
Referenced by intel_me_init(), intel_me_mbp_give_up(), intel_me_read_mbp(), intel_mei_setup(), mei_recv_msg(), mei_reset(), mei_send_data(), and mei_send_packet().
Definition at line 114 of file me.c.
References MEI_ME_CSR_HA, and mei_read_dword_ptr().
Referenced by me_to_host_words_pending(), mei_recv_msg(), and mei_wait_for_me_ready().
Definition at line 119 of file me.c.
References mei_base_address, mei_dump(), MEI_H_CB_WW, NULL, and write32().
Referenced by mei_send_packet().
Definition at line 109 of file me.c.
References MEI_H_CSR, and mei_write_dword_ptr().
Referenced by intel_me_init(), intel_me_mbp_give_up(), intel_me_read_mbp(), intel_mei_setup(), mei_recv_msg(), mei_reset(), and mei_send_packet().
|
static |
|
static |
|
static |
Definition at line 33 of file me.c.
Referenced by intel_me_init().
|
static |
Definition at line 43 of file me.c.
Referenced by intel_me_finalize(), intel_mei_setup(), mei_read_dword_ptr(), mei_write_dword_ptr(), read_cb(), and write_cb().