driver/intel/wifi: Update wifi wake source in elog
In S3 resume, wifi is one of the wake sources. If elog is enabled in config, then log wifi wakes in elog. BUG=b:36992859 TEST= Build for Soraka. Do WoWlan during S3. Verify elog having update on wake due to Wifi. Change-Id: I7d42c5c81e0a3f7a3f94c3f6b7d2ebdf029d1aff Signed-off-by: Naresh G Solanki <naresh.solanki@intel.com> Reviewed-on: https://review.coreboot.org/20455 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
parent
b9810a4cd6
commit
3c6377fb4f
|
@ -21,12 +21,16 @@
|
||||||
#include <device/device.h>
|
#include <device/device.h>
|
||||||
#include <device/pci.h>
|
#include <device/pci.h>
|
||||||
#include <device/pci_ids.h>
|
#include <device/pci_ids.h>
|
||||||
|
#include <elog.h>
|
||||||
#include <sar.h>
|
#include <sar.h>
|
||||||
#include <smbios.h>
|
#include <smbios.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <wrdd.h>
|
#include <wrdd.h>
|
||||||
#include "chip.h"
|
#include "chip.h"
|
||||||
|
|
||||||
|
#define PMCS_DR 0xcc
|
||||||
|
#define PME_STS (1 << 15)
|
||||||
|
|
||||||
#if IS_ENABLED(CONFIG_GENERATE_SMBIOS_TABLES)
|
#if IS_ENABLED(CONFIG_GENERATE_SMBIOS_TABLES)
|
||||||
static int smbios_write_wifi(struct device *dev, int *handle,
|
static int smbios_write_wifi(struct device *dev, int *handle,
|
||||||
unsigned long *current)
|
unsigned long *current)
|
||||||
|
@ -197,6 +201,18 @@ static const char *intel_wifi_acpi_name(struct device *dev)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static void wifi_pci_dev_init(struct device *dev)
|
||||||
|
{
|
||||||
|
pci_dev_init(dev);
|
||||||
|
|
||||||
|
if (IS_ENABLED(CONFIG_ELOG)) {
|
||||||
|
uint32_t val;
|
||||||
|
val = pci_read_config16(dev, PMCS_DR);
|
||||||
|
if (val & PME_STS)
|
||||||
|
elog_add_event_wake(ELOG_WAKE_SOURCE_PME_WIFI, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static struct pci_operations pci_ops = {
|
static struct pci_operations pci_ops = {
|
||||||
.set_subsystem = pci_dev_set_subsystem,
|
.set_subsystem = pci_dev_set_subsystem,
|
||||||
};
|
};
|
||||||
|
@ -205,7 +221,7 @@ struct device_operations device_ops = {
|
||||||
.read_resources = pci_dev_read_resources,
|
.read_resources = pci_dev_read_resources,
|
||||||
.set_resources = pci_dev_set_resources,
|
.set_resources = pci_dev_set_resources,
|
||||||
.enable_resources = pci_dev_enable_resources,
|
.enable_resources = pci_dev_enable_resources,
|
||||||
.init = pci_dev_init,
|
.init = wifi_pci_dev_init,
|
||||||
#if IS_ENABLED(CONFIG_GENERATE_SMBIOS_TABLES)
|
#if IS_ENABLED(CONFIG_GENERATE_SMBIOS_TABLES)
|
||||||
.get_smbios_data = smbios_write_wifi,
|
.get_smbios_data = smbios_write_wifi,
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -149,6 +149,7 @@
|
||||||
#define ELOG_WAKE_SOURCE_PME_XDCI 0x1c
|
#define ELOG_WAKE_SOURCE_PME_XDCI 0x1c
|
||||||
#define ELOG_WAKE_SOURCE_PME_XHCI_USB_2 0x1d
|
#define ELOG_WAKE_SOURCE_PME_XHCI_USB_2 0x1d
|
||||||
#define ELOG_WAKE_SOURCE_PME_XHCI_USB_3 0x1e
|
#define ELOG_WAKE_SOURCE_PME_XHCI_USB_3 0x1e
|
||||||
|
#define ELOG_WAKE_SOURCE_PME_WIFI 0x1f
|
||||||
|
|
||||||
struct elog_event_data_wake {
|
struct elog_event_data_wake {
|
||||||
u8 source;
|
u8 source;
|
||||||
|
|
Loading…
Reference in New Issue