diff options
author | Matt DeVillier <matt.devillier@gmail.com> | 2016-08-05 02:20:15 -0500 |
---|---|---|
committer | Matt DeVillier <matt.devillier@gmail.com> | 2020-04-02 20:30:58 +0000 |
commit | 53e24468f0b31c82565762e51706da72a92aac29 (patch) | |
tree | cacc81b721956993a136b376e399570db3858bf4 /src | |
parent | 38641aa8b40ef66e5a5016f6f299a3aa1fb9b0d5 (diff) |
soc/intel/broadwell: add ACPI backlight support
Add framework to generate ACPI methods in SSDT for
screen backlight control. Adjust params for gtt_ methods
to match prototypes in i915.h and avoid conflicts.
To make use of this, individual boards will need to
include default_brightness_levels.asl in their dsdt, as
well as add 'register "gfx" = "GMA_STATIC_DISPLAYS(0)"' to
their devicetree.
Change-Id: If93b7690ef36b5d19ca43957e8a1bef91ec5821d
Signed-off-by: Matt DeVillier <matt.devillier@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/39941
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Nico Huber <nico.h@gmx.de>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/soc/intel/broadwell/chip.h | 3 | ||||
-rw-r--r-- | src/soc/intel/broadwell/igd.c | 18 |
2 files changed, 16 insertions, 5 deletions
diff --git a/src/soc/intel/broadwell/chip.h b/src/soc/intel/broadwell/chip.h index fabb95ad00..b68da91c03 100644 --- a/src/soc/intel/broadwell/chip.h +++ b/src/soc/intel/broadwell/chip.h @@ -15,6 +15,7 @@ #ifndef _SOC_INTEL_BROADWELL_CHIP_H_ #define _SOC_INTEL_BROADWELL_CHIP_H_ +#include <drivers/intel/gma/i915.h> #include <stdint.h> struct soc_intel_broadwell_config { @@ -130,6 +131,8 @@ struct soc_intel_broadwell_config { */ int cdclk; + struct i915_gpu_controller_info gfx; + /* Enable S0iX support */ int s0ix_enable; diff --git a/src/soc/intel/broadwell/igd.c b/src/soc/intel/broadwell/igd.c index ecb5417181..77375e4497 100644 --- a/src/soc/intel/broadwell/igd.c +++ b/src/soc/intel/broadwell/igd.c @@ -24,6 +24,7 @@ #include <string.h> #include <reg_script.h> #include <cbmem.h> +#include <drivers/intel/gma/i915.h> #include <drivers/intel/gma/i915_reg.h> #include <drivers/intel/gma/libgfxinit.h> #include <drivers/intel/gma/opregion.h> @@ -258,7 +259,7 @@ u32 map_oprom_vendev(u32 vendev) static struct resource *gtt_res = NULL; -static unsigned long gtt_read(unsigned long reg) +u32 gtt_read(u32 reg) { u32 val; val = read32(res2mmio(gtt_res, reg, 0)); @@ -266,7 +267,7 @@ static unsigned long gtt_read(unsigned long reg) } -static void gtt_write(unsigned long reg, unsigned long data) +void gtt_write(u32 reg, u32 data) { write32(res2mmio(gtt_res, reg, 0), data); } @@ -279,9 +280,8 @@ static inline void gtt_rmw(u32 reg, u32 andmask, u32 ormask) gtt_write(reg, val); } -static int gtt_poll(u32 reg, u32 mask, u32 value) -{ - unsigned int try = GT_RETRY; +int gtt_poll(u32 reg, u32 mask, u32 value) +{ unsigned int try = GT_RETRY; u32 data; while (try--) { @@ -627,6 +627,13 @@ gma_write_acpi_tables(struct device *const dev, unsigned long current, return current; } +static void gma_generate_ssdt(struct device *dev) +{ + const struct soc_intel_broadwell_config *chip = dev->chip_info; + + drivers_intel_gma_displays_ssdt_generate(&chip->gfx); +} + static struct device_operations igd_ops = { .read_resources = &pci_dev_read_resources, .set_resources = &pci_dev_set_resources, @@ -634,6 +641,7 @@ static struct device_operations igd_ops = { .init = &igd_init, .ops_pci = &broadwell_pci_ops, .write_acpi_tables = gma_write_acpi_tables, + .acpi_fill_ssdt = gma_generate_ssdt, }; static const unsigned short pci_device_ids[] = { |