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 #include #include +#include #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) + } + +} +