From d1c0f958d1986a94ac55ae1d196ba286c311b90f Mon Sep 17 00:00:00 2001 From: Karthikeyan Ramasubramanian Date: Mon, 2 Nov 2020 16:26:52 -0700 Subject: 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 Reviewed-on: https://review.coreboot.org/c/coreboot/+/47148 Tested-by: build bot (Jenkins) Reviewed-by: Furquan Shaikh Reviewed-by: Sumeet R Pawnikar Reviewed-by: Tim Wawrzynczak Reviewed-by: Angel Pons Reviewed-by: Christian Walter --- src/acpi/acpi.c | 2 +- src/drivers/generic/adau7002/adau7002.c | 2 +- src/drivers/generic/gpio_keys/gpio_keys.c | 2 +- src/drivers/generic/max98357a/max98357a.c | 2 +- src/drivers/gfx/generic/generic.c | 2 +- src/drivers/i2c/da7219/da7219.c | 2 +- src/drivers/i2c/designware/dw_i2c.c | 3 --- src/drivers/i2c/generic/generic.c | 2 +- src/drivers/i2c/gpiomux/bus/bus.c | 2 +- src/drivers/i2c/gpiomux/mux/mux.c | 2 +- src/drivers/i2c/max98373/max98373.c | 2 +- src/drivers/i2c/max98390/max98390.c | 2 +- src/drivers/i2c/max98927/max98927.c | 2 +- src/drivers/i2c/nau8825/nau8825.c | 2 +- src/drivers/i2c/rt1011/rt1011.c | 2 +- src/drivers/i2c/rt5663/rt5663.c | 2 +- src/drivers/i2c/sx9310/sx9310.c | 2 +- src/drivers/i2c/tpm/chip.c | 2 +- src/drivers/intel/ish/ish.c | 2 +- src/drivers/intel/mipi_camera/camera.c | 3 --- src/drivers/intel/pmc_mux/conn/conn.c | 3 --- src/drivers/intel/soundwire/soundwire.c | 2 +- src/drivers/intel/usb4/retimer/retimer.c | 2 +- src/drivers/soundwire/alc5682/alc5682.c | 2 +- src/drivers/soundwire/alc711/alc711.c | 2 +- src/drivers/soundwire/max98373/max98373.c | 2 +- src/drivers/spi/acpi/acpi.c | 2 +- src/drivers/uart/acpi/acpi.c | 2 +- src/drivers/usb/acpi/usb_acpi.c | 2 +- src/drivers/wifi/generic/acpi.c | 6 ------ src/ec/google/chromeec/audio_codec/audio_codec.c | 2 +- src/ec/google/chromeec/ec_acpi.c | 3 --- src/ec/google/chromeec/i2c_tunnel/i2c_tunnel.c | 2 +- src/ec/google/wilco/chip.c | 3 --- src/soc/intel/common/block/scs/sd.c | 3 --- src/soc/intel/common/block/usb4/pcie.c | 2 +- src/soc/intel/common/block/usb4/usb4.c | 3 --- 37 files changed, 29 insertions(+), 56 deletions(-) diff --git a/src/acpi/acpi.c b/src/acpi/acpi.c index 89f2a46a8d..259813bc26 100644 --- a/src/acpi/acpi.c +++ b/src/acpi/acpi.c @@ -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(); } diff --git a/src/drivers/generic/adau7002/adau7002.c b/src/drivers/generic/adau7002/adau7002.c index 88ee34da7b..26da09b264 100644 --- a/src/drivers/generic/adau7002/adau7002.c +++ b/src/drivers/generic/adau7002/adau7002.c @@ -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); diff --git a/src/drivers/generic/gpio_keys/gpio_keys.c b/src/drivers/generic/gpio_keys/gpio_keys.c index 80ac407904..3d273a030f 100644 --- a/src/drivers/generic/gpio_keys/gpio_keys.c +++ b/src/drivers/generic/gpio_keys/gpio_keys.c @@ -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 */ diff --git a/src/drivers/generic/max98357a/max98357a.c b/src/drivers/generic/max98357a/max98357a.c index 44f8802490..9ae4bf4658 100644 --- a/src/drivers/generic/max98357a/max98357a.c +++ b/src/drivers/generic/max98357a/max98357a.c @@ -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); diff --git a/src/drivers/gfx/generic/generic.c b/src/drivers/gfx/generic/generic.c index 546f30bead..d3a4518d40 100644 --- a/src/drivers/gfx/generic/generic.c +++ b/src/drivers/gfx/generic/generic.c @@ -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); diff --git a/src/drivers/i2c/da7219/da7219.c b/src/drivers/i2c/da7219/da7219.c index 1d98023ff5..0423460049 100644 --- a/src/drivers/i2c/da7219/da7219.c +++ b/src/drivers/i2c/da7219/da7219.c @@ -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 */ diff --git a/src/drivers/i2c/designware/dw_i2c.c b/src/drivers/i2c/designware/dw_i2c.c index e01b5a8446..3181e7a0cf 100644 --- a/src/drivers/i2c/designware/dw_i2c.c +++ b/src/drivers/i2c/designware/dw_i2c.c @@ -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) diff --git a/src/drivers/i2c/generic/generic.c b/src/drivers/i2c/generic/generic.c index 18fd55cd58..cd7406893b 100644 --- a/src/drivers/i2c/generic/generic.c +++ b/src/drivers/i2c/generic/generic.c @@ -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) { diff --git a/src/drivers/i2c/gpiomux/bus/bus.c b/src/drivers/i2c/gpiomux/bus/bus.c index 66aef8e8c0..0bcf36a3f4 100644 --- a/src/drivers/i2c/gpiomux/bus/bus.c +++ b/src/drivers/i2c/gpiomux/bus/bus.c @@ -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 */ diff --git a/src/drivers/i2c/gpiomux/mux/mux.c b/src/drivers/i2c/gpiomux/mux/mux.c index 66c8cc5cc3..c1ae758226 100644 --- a/src/drivers/i2c/gpiomux/mux/mux.c +++ b/src/drivers/i2c/gpiomux/mux/mux.c @@ -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 */ diff --git a/src/drivers/i2c/max98373/max98373.c b/src/drivers/i2c/max98373/max98373.c index 1f8a4f3b29..b078674ef0 100644 --- a/src/drivers/i2c/max98373/max98373.c +++ b/src/drivers/i2c/max98373/max98373.c @@ -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; } diff --git a/src/drivers/i2c/max98390/max98390.c b/src/drivers/i2c/max98390/max98390.c index 24c500bd2e..c216391e04 100644 --- a/src/drivers/i2c/max98390/max98390.c +++ b/src/drivers/i2c/max98390/max98390.c @@ -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 */ diff --git a/src/drivers/i2c/max98927/max98927.c b/src/drivers/i2c/max98927/max98927.c index 9429e4aa0d..642eccfd36 100644 --- a/src/drivers/i2c/max98927/max98927.c +++ b/src/drivers/i2c/max98927/max98927.c @@ -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 */ diff --git a/src/drivers/i2c/nau8825/nau8825.c b/src/drivers/i2c/nau8825/nau8825.c index e995ebd06d..a0769d0422 100644 --- a/src/drivers/i2c/nau8825/nau8825.c +++ b/src/drivers/i2c/nau8825/nau8825.c @@ -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; diff --git a/src/drivers/i2c/rt1011/rt1011.c b/src/drivers/i2c/rt1011/rt1011.c index d1732f7440..70f1881b6c 100644 --- a/src/drivers/i2c/rt1011/rt1011.c +++ b/src/drivers/i2c/rt1011/rt1011.c @@ -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 */ diff --git a/src/drivers/i2c/rt5663/rt5663.c b/src/drivers/i2c/rt5663/rt5663.c index 272cf78319..565e3bb29c 100644 --- a/src/drivers/i2c/rt5663/rt5663.c +++ b/src/drivers/i2c/rt5663/rt5663.c @@ -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 */ diff --git a/src/drivers/i2c/sx9310/sx9310.c b/src/drivers/i2c/sx9310/sx9310.c index c12e4ea524..8dc57a2d98 100644 --- a/src/drivers/i2c/sx9310/sx9310.c +++ b/src/drivers/i2c/sx9310/sx9310.c @@ -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) diff --git a/src/drivers/i2c/tpm/chip.c b/src/drivers/i2c/tpm/chip.c index 2baec423f1..07791c33a4 100644 --- a/src/drivers/i2c/tpm/chip.c +++ b/src/drivers/i2c/tpm/chip.c @@ -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) { diff --git a/src/drivers/intel/ish/ish.c b/src/drivers/intel/ish/ish.c index f82f7fc7f6..19cbd82fa5 100644 --- a/src/drivers/intel/ish/ish.c +++ b/src/drivers/intel/ish/ish.c @@ -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)); diff --git a/src/drivers/intel/mipi_camera/camera.c b/src/drivers/intel/mipi_camera/camera.c index d4cf33d9fb..7dfd6502f5 100644 --- a/src/drivers/intel/mipi_camera/camera.c +++ b/src/drivers/intel/mipi_camera/camera.c @@ -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) diff --git a/src/drivers/intel/pmc_mux/conn/conn.c b/src/drivers/intel/pmc_mux/conn/conn.c index 16d113bcb1..9fd85431f3 100644 --- a/src/drivers/intel/pmc_mux/conn/conn.c +++ b/src/drivers/intel/pmc_mux/conn/conn.c @@ -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); diff --git a/src/drivers/intel/soundwire/soundwire.c b/src/drivers/intel/soundwire/soundwire.c index 34ecd86021..c7e84a5339 100644 --- a/src/drivers/intel/soundwire/soundwire.c +++ b/src/drivers/intel/soundwire/soundwire.c @@ -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) diff --git a/src/drivers/intel/usb4/retimer/retimer.c b/src/drivers/intel/usb4/retimer/retimer.c index be9ec35230..7a693ff531 100644 --- a/src/drivers/intel/usb4/retimer/retimer.c +++ b/src/drivers/intel/usb4/retimer/retimer.c @@ -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) { diff --git a/src/drivers/soundwire/alc5682/alc5682.c b/src/drivers/soundwire/alc5682/alc5682.c index 79ed610ab8..e15ecd421a 100644 --- a/src/drivers/soundwire/alc5682/alc5682.c +++ b/src/drivers/soundwire/alc5682/alc5682.c @@ -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); diff --git a/src/drivers/soundwire/alc711/alc711.c b/src/drivers/soundwire/alc711/alc711.c index 8382fc94fb..44a9e98deb 100644 --- a/src/drivers/soundwire/alc711/alc711.c +++ b/src/drivers/soundwire/alc711/alc711.c @@ -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); diff --git a/src/drivers/soundwire/max98373/max98373.c b/src/drivers/soundwire/max98373/max98373.c index 231385cd57..28796c06bc 100644 --- a/src/drivers/soundwire/max98373/max98373.c +++ b/src/drivers/soundwire/max98373/max98373.c @@ -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); diff --git a/src/drivers/spi/acpi/acpi.c b/src/drivers/spi/acpi/acpi.c index c0e776eee1..b23bc9d7a9 100644 --- a/src/drivers/spi/acpi/acpi.c +++ b/src/drivers/spi/acpi/acpi.c @@ -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) { diff --git a/src/drivers/uart/acpi/acpi.c b/src/drivers/uart/acpi/acpi.c index f9d9d8fa19..d4b14aac04 100644 --- a/src/drivers/uart/acpi/acpi.c +++ b/src/drivers/uart/acpi/acpi.c @@ -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) { diff --git a/src/drivers/usb/acpi/usb_acpi.c b/src/drivers/usb/acpi/usb_acpi.c index d33b7deeaf..55ef1d361f 100644 --- a/src/drivers/usb/acpi/usb_acpi.c +++ b/src/drivers/usb/acpi/usb_acpi.c @@ -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 */ diff --git a/src/drivers/wifi/generic/acpi.c b/src/drivers/wifi/generic/acpi.c index ac2c5eb5ba..1cc4bd080f 100644 --- a/src/drivers/wifi/generic/acpi.c +++ b/src/drivers/wifi/generic/acpi.c @@ -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; diff --git a/src/ec/google/chromeec/audio_codec/audio_codec.c b/src/ec/google/chromeec/audio_codec/audio_codec.c index 612b1f6995..53037eb01b 100644 --- a/src/ec/google/chromeec/audio_codec/audio_codec.c +++ b/src/ec/google/chromeec/audio_codec/audio_codec.c @@ -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); diff --git a/src/ec/google/chromeec/ec_acpi.c b/src/ec/google/chromeec/ec_acpi.c index 448ea4dadd..fff395411c 100644 --- a/src/ec/google/chromeec/ec_acpi.c +++ b/src/ec/google/chromeec/ec_acpi.c @@ -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; diff --git a/src/ec/google/chromeec/i2c_tunnel/i2c_tunnel.c b/src/ec/google/chromeec/i2c_tunnel/i2c_tunnel.c index ec8bdfc2bf..e61ecfd8c1 100644 --- a/src/ec/google/chromeec/i2c_tunnel/i2c_tunnel.c +++ b/src/ec/google/chromeec/i2c_tunnel/i2c_tunnel.c @@ -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); diff --git a/src/ec/google/wilco/chip.c b/src/ec/google/wilco/chip.c index dccaa23d01..911eb25074 100644 --- a/src/ec/google/wilco/chip.c +++ b/src/ec/google/wilco/chip.c @@ -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); diff --git a/src/soc/intel/common/block/scs/sd.c b/src/soc/intel/common/block/scs/sd.c index 04ebb1305d..be59a3db72 100644 --- a/src/soc/intel/common/block/scs/sd.c +++ b/src/soc/intel/common/block/scs/sd.c @@ -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; diff --git a/src/soc/intel/common/block/usb4/pcie.c b/src/soc/intel/common/block/usb4/pcie.c index eae9027511..81496ce70a 100644 --- a/src/soc/intel/common/block/usb4/pcie.c +++ b/src/soc/intel/common/block/usb4/pcie.c @@ -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); diff --git a/src/soc/intel/common/block/usb4/usb4.c b/src/soc/intel/common/block/usb4/usb4.c index df2dfdde37..a8ab7364a8 100644 --- a/src/soc/intel/common/block/usb4/usb4.c +++ b/src/soc/intel/common/block/usb4/usb4.c @@ -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"); -- cgit v1.2.3