43 if (!
CONFIG(DEBUG_INTEL_ME))
79 memcpy(ptr, &dword,
sizeof(dword));
86 memcpy(&dword, ptr,
sizeof(dword));
91 #ifndef __SIMPLE_DEVICE__
96 memcpy(ptr, &dword,
sizeof(dword));
174 unsigned int ndata, n;
221 for (n = 0; n < ndata; ++n)
234 void *rsp_data,
int rsp_bytes)
239 unsigned int ndata, n;
240 unsigned int expected;
244 expected = (rsp_bytes +
sizeof(mei_rsp) +
sizeof(mkhi_rsp)) >> 2;
260 printk(
BIOS_ERR,
"ME: timeout waiting for data: expected %u, available %u\n",
273 ndata = mei_rsp.
length >> 2;
276 if (ndata != (expected - 1)) {
287 "command %u ?= %u, is_response %u\n", mkhi->
group_id,
295 if (ndata != (rsp_bytes >> 2)) {
296 printk(
BIOS_ERR,
"ME: not enough room in response buffer: %u != %u\n",
297 ndata, rsp_bytes >> 2);
303 for (n = 0; n < ndata; ++n)
316 void *req_data,
void *rsp_data,
int rsp_bytes)
384 &data,
sizeof(data));
399 if (!res || res->
base == 0 || res->
size == 0) {
453 for (i = 0; i <
count; ++i) {
480 #if CONFIG(HIDE_MEI_ON_ERROR)
501 #if !CONFIG(HIDE_MEI_ON_ERROR)
524 static const struct pci_driver intel_me
__pci_driver = {
static int acpi_is_wakeup_s3(void)
static void write32(void *addr, uint32_t val)
static uint32_t read32(const void *addr)
void * memcpy(void *dest, const void *src, size_t n)
#define ELOG_TYPE_MANAGEMENT_ENGINE
#define ELOG_TYPE_MANAGEMENT_ENGINE_EXT
#define printk(level,...)
struct resource * probe_resource(const struct device *dev, unsigned int index)
See if a resource structure already exists for a given index.
int elog_add_event_raw(u8 event_type, void *data, u8 data_size)
int elog_add_event_byte(u8 event_type, u8 data)
static __always_inline u16 pci_read_config16(const struct device *dev, u16 reg)
static __always_inline u32 pci_read_config32(const struct device *dev, u16 reg)
static __always_inline void pci_write_config16(const struct device *dev, u16 reg, u16 val)
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
#define BIOS_NOTICE
BIOS_NOTICE - Unexpected but relatively insignificant.
#define BIOS_ERR
BIOS_ERR - System in incomplete state.
#define BIOS_SPEW
BIOS_SPEW - Excessively verbose output.
#define PCI_COMMAND_MASTER
#define PCI_COMMAND_MEMORY
#define PCI_BASE_ADDRESS_0
void pci_dev_enable_resources(struct device *dev)
void pci_dev_read_resources(struct device *dev)
struct pci_operations pci_dev_ops_pci
Default device operation for PCI devices.
void pci_dev_set_resources(struct device *dev)
#define PCI_DID_INTEL_IBEXPEAK_HECI1
#define ME_HFS_MODE_NORMAL
#define ME_HFS_MODE_OVER_MEI
#define ME_HFS_CWS_NORMAL
#define PCI_ME_EXT_SHA256
#define ME_HFS_MODE_OVER_JMPR
@ ME_FIRMWARE_UPDATE_BIOS_PATH
#define ME_HFS_MODE_DEBUG
static const char * me_bios_path_values[]
void intel_me_status(void)
void pch_enable(struct device *dev)
static void mei_dump(void *ptr, int dword, int offset, const char *type)
static struct device_operations device_ops
static void read_me_csr(struct mei_csr *csr)
static const struct pci_driver intel_me __pci_driver
static int mei_wait_for_me_ready(void)
static void read_host_csr(struct mei_csr *csr)
static void intel_me_hide(struct device *dev)
static void mei_read_dword_ptr(void *ptr, int offset)
static int mei_send_msg(struct mei_header *mei, struct mkhi_header *mkhi, void *req_data)
static void write_cb(u32 dword)
static void intel_me_init(struct device *dev)
static void mei_write_dword_ptr(void *ptr, int offset)
static int intel_mei_setup(struct device *dev)
static me_bios_path intel_me_path(struct device *dev)
static void write_host_csr(struct mei_csr *csr)
static int intel_me_extend_valid(struct device *dev)
static void pci_read_dword_ptr(struct device *dev, void *ptr, int offset)
static const unsigned short pci_device_ids[]
static void mei_reset(void)
static int mei_recv_msg(struct mei_header *mei, struct mkhi_header *mkhi, void *rsp_data, int rsp_bytes)
static u32 * mei_base_address
static const char *me_bios_path_values[] __unused
static int mei_sendrecv(struct mei_header *mei, struct mkhi_header *mkhi, void *req_data, void *rsp_data, int rsp_bytes)
void(* read_resources)(struct device *dev)
uint8_t current_working_state
u32 extend_feature_present