drivers/intel/dptf: Add support for Battery participant
As per Intel Dynamic Tuning revision 1.3.13 (Doc no: 541817) add
support for TBAT device under \_SB.DPTF
BUG=b:205928013
TEST=Build, boot brya0 and dump SSDT to check TBAT device
Device (TBAT)
{
Name (_HID, "INTC1061") // _HID: Hardware ID
Name (_UID, "TBAT") // _UID: Unique ID
Name (_STR, "Battery Participant") // _STR: Description String
Name (PTYP, 0xC)
Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (0x0F)
}
}
Signed-off-by: Varshit B Pandya <varshit.b.pandya@intel.com>
Change-Id: I9104318fd838f30253ab1eeac4e212b3b917f516
Reviewed-on: https://review.coreboot.org/c/coreboot/+/63315
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com>
Reviewed-by: Sumeet R Pawnikar <sumeet.r.pawnikar@intel.com>
diff --git a/src/drivers/intel/dptf/Kconfig b/src/drivers/intel/dptf/Kconfig
index a7a5760..c0e62b7 100644
--- a/src/drivers/intel/dptf/Kconfig
+++ b/src/drivers/intel/dptf/Kconfig
@@ -19,3 +19,10 @@
help
When enabled, chip driver/intel/dptf will publish information to the
SSDT for TPWR device.
+
+config DRIVERS_INTEL_DPTF_SUPPORTS_TBAT
+ def_bool n
+ depends on DRIVERS_INTEL_DPTF
+ help
+ When enabled, chip driver/intel/dptf will publish information to the
+ SSDT for TBAT device.
diff --git a/src/drivers/intel/dptf/dptf.c b/src/drivers/intel/dptf/dptf.c
index ecb338b..27c7133 100644
--- a/src/drivers/intel/dptf/dptf.c
+++ b/src/drivers/intel/dptf/dptf.c
@@ -14,12 +14,14 @@
DPTF_GENERIC_PARTICIPANT_TYPE_TSR = 0x3,
DPTF_GENERIC_PARTICIPANT_TYPE_TPCH = 0x5,
DPTF_GENERIC_PARTICIPANT_TYPE_CHARGER = 0xB,
+ DPTF_GENERIC_PARTICIPANT_TYPE_BATTERY = 0xC,
DPTF_GENERIC_PARTICIPANT_TYPE_POWER = 0x11,
};
#define DEFAULT_CHARGER_STR "Battery Charger"
#define DEFAULT_TPCH_STR "Intel PCH FIVR Participant"
#define DEFAULT_POWER_STR "Power Participant"
+#define DEFAULT_BATTERY_STR "Battery Participant"
#define PMC_IPC_COMMAND_FIVR_SIZE 0x8
@@ -388,6 +390,26 @@
write_create_tpwr(platform_info);
}
+static void write_create_tbat(const struct dptf_platform_info *platform_info)
+{
+ acpigen_write_device("TBAT");
+ acpigen_write_name("_HID");
+ if (platform_info->tbat_device_hid != NULL)
+ dptf_write_hid(platform_info->use_eisa_hids, platform_info->tbat_device_hid);
+ acpigen_write_name_string("_UID", "TBAT");
+ acpigen_write_name_string("_STR", DEFAULT_BATTERY_STR);
+ acpigen_write_name_integer("PTYP", DPTF_GENERIC_PARTICIPANT_TYPE_BATTERY);
+ acpigen_write_STA(ACPI_STATUS_DEVICE_ALL_ON);
+ acpigen_write_device_end(); /* TBAT Battery Participant Device */
+}
+
+
+static void write_tbat_methods(const struct dptf_platform_info *platform_info)
+{
+ write_create_tbat(platform_info);
+}
+
+
/* \_SB.DPTF - note: leaves the Scope open for child devices */
static void write_open_dptf_device(const struct device *dev,
const struct dptf_platform_info *platform_info)
@@ -429,6 +451,9 @@
if (CONFIG(DRIVERS_INTEL_DPTF_SUPPORTS_TPWR))
write_tpwr_methods(platform_info);
+ if (CONFIG(DRIVERS_INTEL_DPTF_SUPPORTS_TBAT))
+ write_tbat_methods(platform_info);
+
acpigen_pop_len(); /* DPTF Device (write_open_dptf_device) */
acpigen_pop_len(); /* Scope */
}
diff --git a/src/drivers/intel/dptf/dptf.h b/src/drivers/intel/dptf/dptf.h
index c80e64a..ed25880 100644
--- a/src/drivers/intel/dptf/dptf.h
+++ b/src/drivers/intel/dptf/dptf.h
@@ -16,6 +16,7 @@
const char *fan_hid;
const char *tpch_device_hid;
const char *tpwr_device_hid;
+ const char *tbat_device_hid;
struct {
const char *set_fivr_low_clock_method;
const char *set_fivr_high_clock_method;