drivers/wifi/generic: Split wifi_generic_fill_ssdt into two functions
This change splits `wifi_generic_fill_ssdt()` into following two functions: 1. `wifi_ssdt_write_device()`: This function writes the device, its address, _UID and _DDN. 2. `wifi_ssdt_write_properties()`: This function writes the properties for WiFi device like _PRW, regulatory domain and SAR. This split is done so that the device write can be skipped for CNVi devices in follow-up CLs. It will allow the SoC controller representation for CNVi PCI device to be consistent with other internal PCI devices in the device tree i.e. not requiring a chip driver for the PCI device. Because of this change, _PRW and SAR will be seen in a separate block in SSDT disassembly, but it does not result in any functional change. Observed difference: Before: Scope (\_SB.PCI0.PBR1) { Device (WF00) { Name (_UID, 0xAA6343DC) Name (_DDN, "WIFI Device") Name (_ADR, 0x0000000000000000) Name (_PRW, Package() { 0x08, 0x03 }) } } After: Device (\_SB.PCI0.PBR1.WF00) { Name (_UID, 0xAA6343DC) Name (_DDN, "WIFI Device") Name (_ADR, 0x0000000000000000) } Scope (\_SB.PCI0.PBR1.WF00) { Name (_PRW, Package() { 0x08, 0x03 }) } Change-Id: I8ab5e4684492ea3b1cf749e5b9e2008e7ec8fa28 Signed-off-by: Furquan Shaikh <furquan@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/46861 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
This commit is contained in:
parent
2736c82956
commit
6017abbc2c
|
@ -161,21 +161,10 @@ static void emit_sar_acpi_structures(const struct device *dev)
|
|||
acpigen_pop_len();
|
||||
}
|
||||
|
||||
void wifi_generic_fill_ssdt(const struct device *dev)
|
||||
static void wifi_ssdt_write_device(const struct device *dev, const char *path)
|
||||
{
|
||||
const char *path;
|
||||
const struct drivers_wifi_generic_config *config = dev->chip_info;
|
||||
|
||||
if (!dev->enabled)
|
||||
return;
|
||||
|
||||
path = acpi_device_path(dev->bus->dev);
|
||||
if (!path)
|
||||
return;
|
||||
|
||||
/* Device */
|
||||
acpigen_write_scope(path);
|
||||
acpigen_write_device(acpi_device_name(dev));
|
||||
acpigen_write_device(path);
|
||||
acpi_device_write_uid(dev);
|
||||
|
||||
if (dev->chip_ops)
|
||||
|
@ -184,6 +173,16 @@ void wifi_generic_fill_ssdt(const struct device *dev)
|
|||
/* Address */
|
||||
acpigen_write_ADR_pci_device(dev);
|
||||
|
||||
acpigen_pop_len(); /* Device */
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
/* Wake capabilities */
|
||||
if (config)
|
||||
acpigen_write_PRW(config->wake, ACPI_S3);
|
||||
|
@ -213,11 +212,25 @@ void wifi_generic_fill_ssdt(const struct device *dev)
|
|||
if (CONFIG(USE_SAR))
|
||||
emit_sar_acpi_structures(dev);
|
||||
|
||||
acpigen_pop_len(); /* Device */
|
||||
acpigen_pop_len(); /* Scope */
|
||||
|
||||
printk(BIOS_INFO, "%s.%s: %s %s\n", path, acpi_device_name(dev),
|
||||
dev->chip_ops ? dev->chip_ops->name : "", dev_path(dev));
|
||||
printk(BIOS_INFO, "%s: %s %s\n", scope, dev->chip_ops ? dev->chip_ops->name : "",
|
||||
dev_path(dev));
|
||||
}
|
||||
|
||||
void wifi_generic_fill_ssdt(const struct device *dev)
|
||||
{
|
||||
const char *path;
|
||||
|
||||
if (!dev->enabled)
|
||||
return;
|
||||
|
||||
path = acpi_device_path(dev);
|
||||
if (!path)
|
||||
return;
|
||||
|
||||
wifi_ssdt_write_device(dev, path);
|
||||
wifi_ssdt_write_properties(dev, path);
|
||||
}
|
||||
|
||||
const char *wifi_generic_acpi_name(const struct device *dev)
|
||||
|
|
Loading…
Reference in New Issue