drivers/wifi/generic: Fix properties in generic-under-PCI device case

In the devicetree case where a generic device underneath the Intel PCI
CNVi device carries the device properties, the incorrect device was
passed to wifi_ssdt_write_properties.

Also while here, update the UUID for `DmaProperty` to match what
Microsoft defined here:
https://docs.microsoft.com/en-us/windows-hardware/drivers/pci/dsd-for-pcie-root-ports

BUG=b:215424986, b:220639445
TEST=dump SSDT and see that _PRW for CNVi device is no longer garbage,
but contains the value from the devicetree (GPE0_PME_B0).

Signed-off-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
Change-Id: Iafd86458d2f65ccb7e74d1308d37fd3ebbf7f520
Reviewed-on: https://review.coreboot.org/c/coreboot/+/62746
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: YH Lin <yueherngl@google.com>
Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com>
Reviewed-by: Varshit B Pandya <varshit.b.pandya@intel.com>
diff --git a/src/drivers/wifi/generic/acpi.c b/src/drivers/wifi/generic/acpi.c
index 63faae0..ef18f6d 100644
--- a/src/drivers/wifi/generic/acpi.c
+++ b/src/drivers/wifi/generic/acpi.c
@@ -26,8 +26,8 @@
 /* Unique ID for the WIFI _DSM */
 #define ACPI_DSM_OEM_WIFI_UUID    "F21202BF-8F78-4DC6-A5B3-1F738E285ADE"
 
-/* Unique ID for the Wifi _DSD */
-#define ACPI_DSD_UNTRUSTED_UUID	  "88566a92-1a61-466d-949a-6d12809d480c"
+/* ID for the Wifi DmaProperty _DSD */
+#define ACPI_DSD_DMA_PROPERTY_UUID	  "70D24161-6DD5-4C9E-8070-705531292865"
 
 __weak int get_wifi_sar_limits(union wifi_sar_limits *sar_limits)
 {
@@ -506,24 +506,25 @@
 
 static void wifi_ssdt_write_properties(const struct device *dev, const char *scope)
 {
-	const struct drivers_wifi_generic_config *config = dev->chip_info;
-
 	/* Scope */
 	acpigen_write_scope(scope);
 
-	if (config) {
-		/* Wake capabilities */
-		acpigen_write_PRW(config->wake, ACPI_S3);
+	if (dev->path.type == DEVICE_PATH_GENERIC) {
+		const struct drivers_wifi_generic_config *config = dev->chip_info;
+		if (config) {
+			/* Wake capabilities */
+			acpigen_write_PRW(config->wake, ACPI_S3);
 
-		/* Add _DSD for DmaProperty property. */
-		if (config->is_untrusted) {
-			struct acpi_dp *dsd, *pkg;
+			/* Add _DSD for DmaProperty property. */
+			if (config->is_untrusted) {
+				struct acpi_dp *dsd, *pkg;
 
-			dsd = acpi_dp_new_table("_DSD");
-			pkg = acpi_dp_new_table(ACPI_DSD_UNTRUSTED_UUID);
-			acpi_dp_add_integer(pkg, "DmaProperty", 1);
-			acpi_dp_add_package(dsd, pkg);
-			acpi_dp_write(dsd);
+				dsd = acpi_dp_new_table("_DSD");
+				pkg = acpi_dp_new_table(ACPI_DSD_DMA_PROPERTY_UUID);
+				acpi_dp_add_integer(pkg, "DmaProperty", 1);
+				acpi_dp_add_package(dsd, pkg);
+				acpi_dp_write(dsd);
+			}
 		}
 	}
 
@@ -567,7 +568,9 @@
 		return;
 
 	wifi_ssdt_write_device(dev, path);
-	wifi_ssdt_write_properties(dev, path);
+	const struct device *child = dev->link_list->children;
+	if (child && child->path.type == DEVICE_PATH_GENERIC)
+		wifi_ssdt_write_properties(child, path);
 }
 
 const char *wifi_pcie_acpi_name(const struct device *dev)