aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ec/google/chromeec/ec_acpi.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/ec/google/chromeec/ec_acpi.c b/src/ec/google/chromeec/ec_acpi.c
index fff395411c..bcecd8920b 100644
--- a/src/ec/google/chromeec/ec_acpi.c
+++ b/src/ec/google/chromeec/ec_acpi.c
@@ -7,6 +7,7 @@
#include <acpi/acpigen_usb.h>
#include <console/console.h>
#include <drivers/usb/acpi/chip.h>
+#include <drivers/intel/usb4/retimer/retimer.h>
#include <ec/google/common/dptf.h>
#include "chip.h"
@@ -235,3 +236,30 @@ void google_chromeec_fill_ssdt_generator(const struct device *dev)
fill_ssdt_typec_device(dev);
fill_ssdt_ps2_keyboard(dev);
}
+
+const char *ec_retimer_fw_update_path(void)
+{
+ return "\\_SB_.PCI0.LPCB.EC0_.RFWU";
+}
+
+void ec_retimer_fw_update(void *arg)
+{
+ const char *RFWU = ec_retimer_fw_update_path();
+
+ /*
+ * Get information to set retimer info from Arg3[0]
+ * Local0 = DeRefOf (Arg3[0])
+ */
+ acpigen_get_package_op_element(ARG3_OP, 0, LOCAL0_OP);
+
+ /*
+ * Write the EC RAM for Retimer Upgrade
+ * RFWU = LOCAL0
+ */
+ acpigen_write_store();
+ acpigen_emit_byte(LOCAL0_OP);
+ acpigen_emit_namestring(RFWU);
+
+ /* Return (Zero) */
+ acpigen_write_return_integer(0);
+}