drivers/intel/dptf: Add support for Power participant

As per Intel Dynamic Tuning revision 1.3.13 (Doc no: 541817)
Add support for TPWR device under \_SB.DPTF

BUG=b:205928013
TEST=Build, boot brya0 and dump SSDT to check TPWR device

Device (TPWR)
{
    Name (_HID, "INTC1060")  // _HID: Hardware ID
    Name (_UID, "TPWR")  // _UID: Unique ID
    Name (_STR, "Power Participant")  // _STR: Description String
    Name (PTYP, 0x11)
    Method (_STA, 0, NotSerialized)  // _STA: Status
    {
        Return (0x0F)
    }
}

Signed-off-by: Varshit B Pandya <varshit.b.pandya@intel.com>
Change-Id: I437e509f58df1777d75e5981f0a5a63095ccb6a3
Reviewed-on: https://review.coreboot.org/c/coreboot/+/62944
Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Varshit B Pandya
2022-03-20 20:39:51 +05:30
committed by Paul Fagerburg
parent 47b7904d78
commit e7d3a1a9e8
5 changed files with 34 additions and 0 deletions

View File

@@ -12,3 +12,10 @@ config DRIVERS_INTEL_DPTF_SUPPORTS_TPCH
help
When enabled, chip driver/intel/dptf will publish information to the
SSDT for the TPCH device.
config DRIVERS_INTEL_DPTF_SUPPORTS_TPWR
def_bool n
depends on DRIVERS_INTEL_DPTF
help
When enabled, chip driver/intel/dptf will publish information to the
SSDT for TPWR device.

View File

@@ -14,10 +14,12 @@ enum dptf_generic_participant_type {
DPTF_GENERIC_PARTICIPANT_TYPE_TSR = 0x3,
DPTF_GENERIC_PARTICIPANT_TYPE_TPCH = 0x5,
DPTF_GENERIC_PARTICIPANT_TYPE_CHARGER = 0xB,
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 PMC_IPC_COMMAND_FIVR_SIZE 0x8
@@ -368,6 +370,24 @@ static void write_tpch_methods(const struct dptf_platform_info *platform_info)
acpigen_write_device_end(); /* TPCH Device */
}
static void write_create_tpwr(const struct dptf_platform_info *platform_info)
{
acpigen_write_device("TPWR");
acpigen_write_name("_HID");
if (platform_info->tpwr_device_hid != NULL)
dptf_write_hid(platform_info->use_eisa_hids, platform_info->tpwr_device_hid);
acpigen_write_name_string("_UID", "TPWR");
acpigen_write_name_string("_STR", DEFAULT_POWER_STR);
acpigen_write_name_integer("PTYP", DPTF_GENERIC_PARTICIPANT_TYPE_POWER);
acpigen_write_STA(ACPI_STATUS_DEVICE_ALL_ON);
acpigen_write_device_end(); /* TPWR Power Participant Device */
}
static void write_tpwr_methods(const struct dptf_platform_info *platform_info)
{
write_create_tpwr(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)
@@ -406,6 +426,9 @@ static void write_device_definitions(const struct device *dev)
if (CONFIG(DRIVERS_INTEL_DPTF_SUPPORTS_TPCH))
write_tpch_methods(platform_info);
if (CONFIG(DRIVERS_INTEL_DPTF_SUPPORTS_TPWR))
write_tpwr_methods(platform_info);
acpigen_pop_len(); /* DPTF Device (write_open_dptf_device) */
acpigen_pop_len(); /* Scope */
}

View File

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