summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/soc/intel/braswell/acpi.c8
-rw-r--r--src/soc/intel/braswell/acpi/globalnvs.asl1
-rw-r--r--src/soc/intel/braswell/include/soc/nvs.h2
-rw-r--r--src/soc/intel/common/acpi/wifi.asl42
4 files changed, 52 insertions, 1 deletions
diff --git a/src/soc/intel/braswell/acpi.c b/src/soc/intel/braswell/acpi.c
index f7c37481d8..0e866a5857 100644
--- a/src/soc/intel/braswell/acpi.c
+++ b/src/soc/intel/braswell/acpi.c
@@ -44,6 +44,7 @@
#include <string.h>
#include <types.h>
#include <vendorcode/google/chromeos/gnvs.h>
+#include <wrdd.h>
#define MWAIT_RES(state, sub_state) \
{ \
@@ -523,6 +524,13 @@ void southcluster_inject_dsdt(device_t device)
if (gnvs) {
acpi_create_gnvs(gnvs);
+ /* Fill in the Wifi Region id */
+ if (IS_ENABLED(CONFIG_HAVE_REGULATORY_DOMAIN)) {
+ gnvs->cid1 = wifi_regulatory_domain();
+ } else {
+
+ gnvs->cid1 = WRDD_DEFAULT_REGULATORY_DOMAIN;
+ }
acpi_save_gnvs((unsigned long)gnvs);
/* And tell SMI about it */
smm_setup_structures(gnvs, NULL, NULL);
diff --git a/src/soc/intel/braswell/acpi/globalnvs.asl b/src/soc/intel/braswell/acpi/globalnvs.asl
index 54ebb2c285..e7fb2ce255 100644
--- a/src/soc/intel/braswell/acpi/globalnvs.asl
+++ b/src/soc/intel/braswell/acpi/globalnvs.asl
@@ -51,6 +51,7 @@ Field (GNVS, ByteAcc, NoLock, Preserve)
PM1I, 32, /* 0x15 - System Wake Source - PM1 Index */
GPEI, 32, /* 0x19 - GPE Wake Source */
BDID, 8, /* 0x1d - Board ID */
+ CID1, 16, /* 0x1A - Wifi Domain Type */
/* Device Config */
Offset (0x20),
diff --git a/src/soc/intel/braswell/include/soc/nvs.h b/src/soc/intel/braswell/include/soc/nvs.h
index aafaef5a93..d3dfd28320 100644
--- a/src/soc/intel/braswell/include/soc/nvs.h
+++ b/src/soc/intel/braswell/include/soc/nvs.h
@@ -44,7 +44,7 @@ typedef struct {
u32 pm1i; /* 0x15 - System Wake Source - PM1 Index */
u32 gpei; /* 0x19 - GPE Wake Source */
u8 bdid; /* 0x1d - Board ID */
- u8 rsvd1[2];
+ u16 cid1; /* 0x1a - Wifi Country Identifier */
/* Device Config */
u8 s5u0; /* 0x20 - Enable USB0 in S5 */
diff --git a/src/soc/intel/common/acpi/wifi.asl b/src/soc/intel/common/acpi/wifi.asl
new file mode 100644
index 0000000000..e7537a1a95
--- /dev/null
+++ b/src/soc/intel/common/acpi/wifi.asl
@@ -0,0 +1,42 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2007-2009 coresystems GmbH
+ * Copyright (C) 2011 Google Inc.
+ * Copyright (C) 2015 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.
+ */
+
+Device (WIFI)
+{
+ Name (_ADR, Zero)
+ OperationRegion(WIXX, PCI_Config, 0x00, 0x10)
+ Name (WRDX, Package()
+ {
+ // Revision
+ 0,
+ Package()
+ {
+ // DomainType, 0x7:WiFi
+ 0x00000007,
+ // Default Regulatory Domain Country identifier
+ 0x4150,
+ }
+ })
+ Method(WRDD,0,Serialized)
+ {
+ Store(\CID1,Index (DeRefOf (Index (WRDX, 1)), 1)) // Country identifier
+
+ Return(WRDX)
+ }
+
+}
+