soc/intel/apollolake: Hook up GMA ACPI brightness controls
Add struct i915_gpu_controller_info for boards to supply info needed
to generate ACPI backlight control SSDT.
Hook into soc/common framework by implementing intel_igd_get_controller_info().
Add Kconfig entries to set the correct register offsets for backlight
frequency and duty cycle.
Change-Id: Ia62a88b58e7efd90f550000fc5b2cef0cb5fade7
Signed-off-by: Matt DeVillier <matt.devillier@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/40593
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-by: Michael Niewöhner <foss@mniewoehner.de>
Reviewed-by: Nico Huber <nico.h@gmx.de>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
diff --git a/src/soc/intel/apollolake/Kconfig b/src/soc/intel/apollolake/Kconfig
index 4f762a9..62049b5 100644
--- a/src/soc/intel/apollolake/Kconfig
+++ b/src/soc/intel/apollolake/Kconfig
@@ -413,4 +413,22 @@
string
default "pdpt pt"
+config INTEL_GMA_PANEL_2
+ bool
+ default n
+
+config INTEL_GMA_BCLV_OFFSET
+ default 0xc8358 if INTEL_GMA_PANEL_2
+ default 0xc8258
+
+config INTEL_GMA_BCLV_WIDTH
+ default 32
+
+config INTEL_GMA_BCLM_OFFSET
+ default 0xc8354 if INTEL_GMA_PANEL_2
+ default 0xc8254
+
+config INTEL_GMA_BCLM_WIDTH
+ default 32
+
endif
diff --git a/src/soc/intel/apollolake/chip.h b/src/soc/intel/apollolake/chip.h
index c94b7ef..482b333 100644
--- a/src/soc/intel/apollolake/chip.h
+++ b/src/soc/intel/apollolake/chip.h
@@ -41,6 +41,9 @@
*/
struct i915_gpu_panel_config panel_cfg[2];
+ /* i915 struct for GMA backlight control */
+ struct i915_gpu_controller_info gfx;
+
/*
* Mapping from PCIe root port to CLKREQ input on the SOC. The SOC has
* four CLKREQ inputs, but six root ports. Root ports without an
diff --git a/src/soc/intel/apollolake/graphics.c b/src/soc/intel/apollolake/graphics.c
index c24ccdf..257222f 100644
--- a/src/soc/intel/apollolake/graphics.c
+++ b/src/soc/intel/apollolake/graphics.c
@@ -74,3 +74,10 @@
for (i = 0; i < ARRAY_SIZE(conf->panel_cfg); ++i)
graphics_configure_backlight(&conf->panel_cfg[i], mmio, i);
}
+
+const struct i915_gpu_controller_info *
+intel_igd_get_controller_info(const struct device *device)
+{
+ struct soc_intel_apollolake_config *chip = device->chip_info;
+ return &chip->gfx;
+}