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/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 */
 }