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>
This commit is contained in:
Varshit B Pandya 2022-04-02 15:11:36 +05:30 committed by Felix Held
parent 1e124b94fc
commit 170a76caa7
5 changed files with 36 additions and 0 deletions

View File

@ -76,6 +76,8 @@ static const char *namestring_of(enum dptf_participant participant)
return "TPCH"; return "TPCH";
case DPTF_POWER: case DPTF_POWER:
return "TPWR"; return "TPWR";
case DPTF_BATTERY:
return "TBAT";
default: default:
return ""; return "";
} }

View File

@ -19,3 +19,10 @@ config DRIVERS_INTEL_DPTF_SUPPORTS_TPWR
help help
When enabled, chip driver/intel/dptf will publish information to the When enabled, chip driver/intel/dptf will publish information to the
SSDT for TPWR device. 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.

View File

@ -14,12 +14,14 @@ enum dptf_generic_participant_type {
DPTF_GENERIC_PARTICIPANT_TYPE_TSR = 0x3, DPTF_GENERIC_PARTICIPANT_TYPE_TSR = 0x3,
DPTF_GENERIC_PARTICIPANT_TYPE_TPCH = 0x5, DPTF_GENERIC_PARTICIPANT_TYPE_TPCH = 0x5,
DPTF_GENERIC_PARTICIPANT_TYPE_CHARGER = 0xB, DPTF_GENERIC_PARTICIPANT_TYPE_CHARGER = 0xB,
DPTF_GENERIC_PARTICIPANT_TYPE_BATTERY = 0xC,
DPTF_GENERIC_PARTICIPANT_TYPE_POWER = 0x11, DPTF_GENERIC_PARTICIPANT_TYPE_POWER = 0x11,
}; };
#define DEFAULT_CHARGER_STR "Battery Charger" #define DEFAULT_CHARGER_STR "Battery Charger"
#define DEFAULT_TPCH_STR "Intel PCH FIVR Participant" #define DEFAULT_TPCH_STR "Intel PCH FIVR Participant"
#define DEFAULT_POWER_STR "Power Participant" #define DEFAULT_POWER_STR "Power Participant"
#define DEFAULT_BATTERY_STR "Battery Participant"
#define PMC_IPC_COMMAND_FIVR_SIZE 0x8 #define PMC_IPC_COMMAND_FIVR_SIZE 0x8
@ -388,6 +390,26 @@ static void write_tpwr_methods(const struct dptf_platform_info *platform_info)
write_create_tpwr(platform_info); 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 */ /* \_SB.DPTF - note: leaves the Scope open for child devices */
static void write_open_dptf_device(const struct device *dev, static void write_open_dptf_device(const struct device *dev,
const struct dptf_platform_info *platform_info) const struct dptf_platform_info *platform_info)
@ -429,6 +451,9 @@ static void write_device_definitions(const struct device *dev)
if (CONFIG(DRIVERS_INTEL_DPTF_SUPPORTS_TPWR)) if (CONFIG(DRIVERS_INTEL_DPTF_SUPPORTS_TPWR))
write_tpwr_methods(platform_info); 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(); /* DPTF Device (write_open_dptf_device) */
acpigen_pop_len(); /* Scope */ acpigen_pop_len(); /* Scope */
} }

View File

@ -16,6 +16,7 @@ struct dptf_platform_info {
const char *fan_hid; const char *fan_hid;
const char *tpch_device_hid; const char *tpch_device_hid;
const char *tpwr_device_hid; const char *tpwr_device_hid;
const char *tbat_device_hid;
struct { struct {
const char *set_fivr_low_clock_method; const char *set_fivr_low_clock_method;
const char *set_fivr_high_clock_method; const char *set_fivr_high_clock_method;

View File

@ -27,6 +27,7 @@ enum dptf_participant {
DPTF_TEMP_SENSOR_4, DPTF_TEMP_SENSOR_4,
DPTF_TPCH, DPTF_TPCH,
DPTF_POWER, DPTF_POWER,
DPTF_BATTERY,
DPTF_PARTICIPANT_COUNT, DPTF_PARTICIPANT_COUNT,
}; };