acpi: Call acpi_fill_ssdt() only for enabled devices

Individual drivers check whether the concerned device is enabled before
filling in the SSDT. Move the check before calling acpi_fill_ssdt() and
remove the check in the individual drivers.

BUG=None
TEST=util/abuild/abuild

Change-Id: Ib042bec7e8c68b38fafa60a8e965d781bddcd1f0
Signed-off-by: Karthikeyan Ramasubramanian <kramasub@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/47148
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Furquan Shaikh <furquan@google.com>
Reviewed-by: Sumeet R Pawnikar <sumeet.r.pawnikar@intel.com>
Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-by: Christian Walter <christian.walter@9elements.com>
This commit is contained in:
Karthikeyan Ramasubramanian 2020-11-02 16:26:52 -07:00 committed by Patrick Georgi
parent 04582e9001
commit d1c0f958d1
37 changed files with 29 additions and 56 deletions

View File

@ -468,7 +468,7 @@ void acpi_create_ssdt_generator(acpi_header_t *ssdt, const char *oem_table_id)
{
struct device *dev;
for (dev = all_devices; dev; dev = dev->next)
if (dev->ops && dev->ops->acpi_fill_ssdt)
if (dev->enabled && dev->ops && dev->ops->acpi_fill_ssdt)
dev->ops->acpi_fill_ssdt(dev);
current = (unsigned long) acpigen_get_current();
}

View File

@ -17,7 +17,7 @@ static void adau7002_fill_ssdt(const struct device *dev)
struct drivers_generic_adau7002_config *config;
struct acpi_dp *dp;
if (!dev || !dev->enabled)
if (!dev)
return;
const char *scope = acpi_device_scope(dev);

View File

@ -57,7 +57,7 @@ static void gpio_keys_fill_ssdt_generator(const struct device *dev)
const char *drv_string = config->is_polled ? "gpio-keys-polled"
: "gpio-keys";
if (!dev->enabled || !scope || !path || !config->gpio.pin_count)
if (!scope || !path || !config->gpio.pin_count)
return;
/* Device */

View File

@ -18,7 +18,7 @@ static void max98357a_fill_ssdt(const struct device *dev)
const char *path;
struct acpi_dp *dp;
if (!dev->enabled || !config)
if (!config)
return;
const char *scope = acpi_device_scope(dev);

View File

@ -106,7 +106,7 @@ static void gfx_fill_ssdt_generator(const struct device *dev)
const char *scope = acpi_device_scope(dev);
if (!scope || !dev->enabled)
if (!scope)
return;
acpigen_write_scope(scope);

View File

@ -27,7 +27,7 @@ static void da7219_fill_ssdt(const struct device *dev)
};
struct acpi_dp *dsd, *aad;
if (!dev->enabled || !scope)
if (!scope)
return;
/* Device */

View File

@ -824,9 +824,6 @@ void dw_i2c_acpi_fill_ssdt(const struct device *dev)
const char *path;
unsigned int speed;
if (!dev->enabled)
return;
bus = dw_i2c_soc_dev_to_bus(dev);
if (bus < 0)

View File

@ -57,7 +57,7 @@ void i2c_generic_fill_ssdt(const struct device *dev,
int reset_gpio_index = -1, enable_gpio_index = -1, irq_gpio_index = -1;
const char *path = acpi_device_path(dev);
if (!dev->enabled || !scope)
if (!scope)
return;
if (!config->hid) {

View File

@ -22,7 +22,7 @@ static void i2c_gpiomux_bus_fill_ssdt(const struct device *dev)
const char *scope = acpi_device_scope(dev);
const char *path = acpi_device_path(dev);
if (!dev || !dev->enabled || !scope || !path)
if (!dev || !scope || !path)
return;
/* Device */

View File

@ -27,7 +27,7 @@ static void i2c_gpiomux_mux_fill_ssdt(const struct device *dev)
struct acpi_gpio_res_params param[MAX_NUM_MUX_GPIOS];
int i;
if (!dev->enabled || !scope || !path)
if (!scope || !path)
return;
/* Device */

View File

@ -24,7 +24,7 @@ static void max98373_fill_ssdt(const struct device *dev)
};
struct acpi_dp *dp;
if (!dev->enabled || !scope) {
if (!scope) {
printk(BIOS_ERR, "%s: dev not enabled\n", __func__);
return;
}

View File

@ -28,7 +28,7 @@ static void max98390_fill_ssdt(const struct device *dev)
struct acpi_dp *dp;
uint64_t r0_value, temp_value;
if (!dev->enabled || !scope)
if (!scope)
return;
/* Device */

View File

@ -24,7 +24,7 @@ static void max98927_fill_ssdt(const struct device *dev)
};
struct acpi_dp *dp;
if (!dev->enabled || !scope)
if (!scope)
return;
/* Device */

View File

@ -30,7 +30,7 @@ static void nau8825_fill_ssdt(const struct device *dev)
};
struct acpi_dp *dp = NULL;
if (!dev->enabled || !scope)
if (!scope)
return;
if (config->sar_threshold_num > NAU8825_MAX_BUTTONS)
return;

View File

@ -28,7 +28,7 @@ static void rt1011_fill_ssdt(const struct device *dev)
struct acpi_dp *dp;
uint64_t r0_value, temp_value;
if (!dev->enabled || !scope)
if (!scope)
return;
/* Device */

View File

@ -27,7 +27,7 @@ static void rt5663_fill_ssdt(const struct device *dev)
};
struct acpi_dp *dp;
if (!dev->enabled || !scope)
if (!scope)
return;
/* Device */

View File

@ -28,7 +28,7 @@ static void i2c_sx9310_fill_ssdt(const struct device *dev)
};
struct acpi_dp *dsd;
if (!dev->enabled || !scope || !config)
if (!scope || !config)
return;
if (config->speed)

View File

@ -20,7 +20,7 @@ static void i2c_tpm_fill_ssdt(const struct device *dev)
.resource = scope,
};
if (!dev->enabled || !scope)
if (!scope)
return;
if (!config->hid) {

View File

@ -13,7 +13,7 @@ static void ish_fill_ssdt_generator(const struct device *dev)
struct device *root = dev->bus->dev;
struct acpi_dp *dsd;
if (!dev->enabled || !config || !config->firmware_name)
if (!config || !config->firmware_name)
return;
acpigen_write_scope(acpi_device_path(root));

View File

@ -909,9 +909,6 @@ static void camera_fill_ssdt(const struct device *dev)
const char *scope = NULL;
const struct device *pdev;
if (!dev->enabled)
return;
if (config->has_power_resource) {
pdev = dev->bus->dev;
if (!pdev || !pdev->enabled)

View File

@ -32,9 +32,6 @@ static void conn_fill_ssdt(const struct device *dev)
const char *scope;
const char *name;
if (!dev->enabled)
return;
/* Reference the existing scope and write CONx device */
scope = acpi_device_scope(dev);
name = acpi_device_name(dev);

View File

@ -50,7 +50,7 @@ static void intel_soundwire_fill_ssdt(const struct device *dev)
struct intel_soundwire_controller *controller;
const char *scope = acpi_device_scope(dev);
if (!dev->enabled || !scope)
if (!scope)
return;
if (soc_fill_soundwire_controller(&controller) < 0 || !controller)

View File

@ -101,7 +101,7 @@ static void usb4_retimer_fill_ssdt(const struct device *dev)
const struct drivers_intel_usb4_retimer_config *config = dev->chip_info;
const char *scope = acpi_device_scope(dev);
if (!dev->enabled || !scope || !config)
if (!scope || !config)
return;
if (!config->power_gpio.pin_count) {

View File

@ -128,7 +128,7 @@ static void soundwire_alc5682_fill_ssdt(const struct device *dev)
const char *scope = acpi_device_scope(dev);
struct acpi_dp *dsd;
if (!dev->enabled || !scope)
if (!scope)
return;
acpigen_write_scope(scope);

View File

@ -105,7 +105,7 @@ static void soundwire_alc711_fill_ssdt(const struct device *dev)
const char *scope = acpi_device_scope(dev);
struct acpi_dp *dsd;
if (!dev->enabled || !scope)
if (!scope)
return;
acpigen_write_scope(scope);

View File

@ -114,7 +114,7 @@ static void soundwire_max98373_fill_ssdt(const struct device *dev)
const char *scope = acpi_device_scope(dev);
struct acpi_dp *dsd;
if (!dev->enabled || !scope)
if (!scope)
return;
acpigen_write_scope(scope);

View File

@ -77,7 +77,7 @@ static void spi_acpi_fill_ssdt_generator(const struct device *dev)
int reset_gpio_index = -1;
int enable_gpio_index = -1;
if (!dev->enabled || !scope)
if (!scope)
return;
if (spi_acpi_get_bus(dev) == -1) {

View File

@ -46,7 +46,7 @@ static void uart_acpi_fill_ssdt(const struct device *dev)
int reset_gpio_index = -1;
int enable_gpio_index = -1;
if (!dev->enabled || !scope)
if (!scope)
return;
if (!config->hid) {

View File

@ -24,7 +24,7 @@ static void usb_acpi_fill_ssdt_generator(const struct device *dev)
struct drivers_usb_acpi_config *config = dev->chip_info;
const char *path = acpi_device_path(dev);
if (!dev->enabled || !path || !config)
if (!path || !config)
return;
/* Don't generate output for hubs, only ports */

View File

@ -222,9 +222,6 @@ void wifi_pcie_fill_ssdt(const struct device *dev)
{
const char *path;
if (!is_dev_enabled(dev))
return;
path = acpi_device_path(dev);
if (!path)
return;
@ -247,9 +244,6 @@ void wifi_cnvi_fill_ssdt(const struct device *dev)
{
const char *path;
if (!is_dev_enabled(dev))
return;
path = acpi_device_path(dev->bus->dev);
if (!path)
return;

View File

@ -15,7 +15,7 @@ static void crosec_audio_codec_fill_ssdt(const struct device *dev)
const char *scope = acpi_device_scope(dev);
struct ec_google_chromeec_audio_codec_config *cfg = dev->chip_info;
if (!dev->enabled || !scope || !cfg)
if (!scope || !cfg)
return;
acpigen_write_scope(scope);

View File

@ -223,9 +223,6 @@ void google_chromeec_fill_ssdt_generator(const struct device *dev)
struct device_path path;
struct device *ec;
if (!dev->enabled)
return;
/* Set up a minimal EC0 device to pass to the DPTF helpers */
path.type = DEVICE_PATH_GENERIC;
path.generic.id = 0;

View File

@ -17,7 +17,7 @@ static void crosec_i2c_tunnel_fill_ssdt(const struct device *dev)
struct ec_google_chromeec_i2c_tunnel_config *cfg = dev->chip_info;
struct acpi_dp *dsd;
if (!dev->enabled || !scope || !cfg)
if (!scope || !cfg)
return;
acpigen_write_scope(scope);

View File

@ -184,9 +184,6 @@ static void wilco_ec_fill_ssdt_generator(const struct device *dev)
void *region_ptr;
size_t ucsi_alloc_region_len;
if (!dev->enabled)
return;
ucsi_alloc_region_len = ucsi_region_len < UCSI_MIN_ALLOC_REGION_LEN ?
UCSI_MIN_ALLOC_REGION_LEN : ucsi_region_len;
region_ptr = cbmem_add(CBMEM_ID_ACPI_UCSI, ucsi_alloc_region_len);

View File

@ -12,9 +12,6 @@ static void sd_fill_ssdt(const struct device *dev)
struct acpi_gpio default_gpio = { 0 };
struct acpi_dp *dp;
if (!dev->enabled)
return;
if (sd_fill_soc_gpio_info(&default_gpio, dev) != 0)
return;

View File

@ -26,7 +26,7 @@ static void usb4_pcie_acpi_fill_ssdt(const struct device *dev)
return;
}
if (!dev->enabled || !parent->enabled)
if (!parent->enabled)
return;
config = config_of(dev);

View File

@ -28,9 +28,6 @@ static void tbt_dma_fill_ssdt(const struct device *dev)
{
struct acpi_dp *dsd, *pkg;
if (!dev->enabled)
return;
acpigen_write_scope(acpi_device_path(dev));
dsd = acpi_dp_new_table("_DSD");