summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mainboard/google/zork/mainboard.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/mainboard/google/zork/mainboard.c b/src/mainboard/google/zork/mainboard.c
index f0d9a2869d..9503d3762c 100644
--- a/src/mainboard/google/zork/mainboard.c
+++ b/src/mainboard/google/zork/mainboard.c
@@ -6,6 +6,7 @@
#include <device/device.h>
#include <device/mmio.h>
#include <acpi/acpi.h>
+#include <acpi/acpigen.h>
#include <acpi/acpi_gnvs.h>
#include <amdblocks/amd_pci_util.h>
#include <amdblocks/gpio_banks.h>
@@ -28,6 +29,12 @@
#include <commonlib/helpers.h>
#include <bootstate.h>
+#define METHOD_BACKLIGHT_ENABLE "\\_SB.BKEN"
+#define METHOD_BACKLIGHT_DISABLE "\\_SB.BKDS"
+#define METHOD_MAINBOARD_INI "\\_SB.MINI"
+#define METHOD_MAINBOARD_WAK "\\_SB.MWAK"
+#define METHOD_MAINBOARD_PTS "\\_SB.MPTS"
+
/***********************************************************
* These arrays set up the FCH PCI_INTR registers 0xC00/0xC01.
* This table is responsible for physically routing the PIC and
@@ -175,6 +182,50 @@ void mainboard_get_dxio_ddi_descriptors(const fsp_dxio_descriptor **dxio_descs,
variant_get_dxio_ddi_descriptors(dxio_descs, dxio_num, ddi_descs, ddi_num);
}
+static void mainboard_write_blken(void)
+{
+ acpigen_write_method(METHOD_BACKLIGHT_ENABLE, 0);
+ acpigen_soc_clear_tx_gpio(GPIO_85);
+ acpigen_pop_len();
+}
+
+static void mainboard_write_blkdis(void)
+{
+ acpigen_write_method(METHOD_BACKLIGHT_DISABLE, 0);
+ acpigen_soc_set_tx_gpio(GPIO_85);
+ acpigen_pop_len();
+}
+
+static void mainboard_write_mini(void)
+{
+ acpigen_write_method(METHOD_MAINBOARD_INI, 0);
+ acpigen_emit_namestring(METHOD_BACKLIGHT_ENABLE);
+ acpigen_pop_len();
+}
+
+static void mainboard_write_mwak(void)
+{
+ acpigen_write_method(METHOD_MAINBOARD_WAK, 0);
+ acpigen_emit_namestring(METHOD_BACKLIGHT_ENABLE);
+ acpigen_pop_len();
+}
+
+static void mainboard_write_mpts(void)
+{
+ acpigen_write_method(METHOD_MAINBOARD_PTS, 0);
+ acpigen_emit_namestring(METHOD_BACKLIGHT_DISABLE);
+ acpigen_pop_len();
+}
+
+static void mainboard_fill_ssdt(const struct device *dev)
+{
+ mainboard_write_blken();
+ mainboard_write_blkdis();
+ mainboard_write_mini();
+ mainboard_write_mpts();
+ mainboard_write_mwak();
+}
+
/*************************************************
* Dedicated mainboard function
*************************************************/
@@ -186,6 +237,8 @@ static void zork_enable(struct device *dev)
pirq_setup();
dev->ops->acpi_inject_dsdt = chromeos_dsdt_generator;
+ dev->ops->acpi_fill_ssdt = mainboard_fill_ssdt;
+
}
static void mainboard_final(void *chip_info)