driver/i2c/max98390: add dsm_param_name
Maxim driver look for "maxim,dsm_param_name" to load dsm parameter file. dsm param file name consist of {dsm_param_file_name} filled in devicetree, {MAINBOARD_VENDOR} and {MAINBOARD_PART_NUMBER}. => {dsm_param_file_name}_{MAINBOARD_VENDOR}_{MAINBOARD_PART_NUMBER}.bin BUG=b:197076844 TEST=build, and check ssdt Change-Id: I006572d6a6ea55298374c688dfd9d877835da82d Signed-off-by: Wisley Chen <wisley.chen@quanta.corp-partner.google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/57119 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
This commit is contained in:
parent
8337e686a6
commit
889fa6093d
|
@ -13,4 +13,5 @@ struct drivers_i2c_max98390_config {
|
||||||
const char *r0_calib_key;
|
const char *r0_calib_key;
|
||||||
/* The VPD key of temperature during speaker calibration. */
|
/* The VPD key of temperature during speaker calibration. */
|
||||||
const char *temperature_calib_key;
|
const char *temperature_calib_key;
|
||||||
|
const char *dsm_param_file_name;
|
||||||
};
|
};
|
||||||
|
|
|
@ -25,8 +25,9 @@ static void max98390_fill_ssdt(const struct device *dev)
|
||||||
.speed = I2C_SPEED_FAST,
|
.speed = I2C_SPEED_FAST,
|
||||||
.resource = scope,
|
.resource = scope,
|
||||||
};
|
};
|
||||||
struct acpi_dp *dp;
|
struct acpi_dp *dp = NULL;
|
||||||
uint64_t r0_value, temp_value;
|
uint64_t r0_value, temp_value;
|
||||||
|
char dsm_name[80] = {};
|
||||||
|
|
||||||
if (!scope)
|
if (!scope)
|
||||||
return;
|
return;
|
||||||
|
@ -58,11 +59,29 @@ static void max98390_fill_ssdt(const struct device *dev)
|
||||||
dp = acpi_dp_new_table("_DSD");
|
dp = acpi_dp_new_table("_DSD");
|
||||||
MAX98390_DP_INT("r0_calib", r0_value);
|
MAX98390_DP_INT("r0_calib", r0_value);
|
||||||
MAX98390_DP_INT("temperature_calib", temp_value);
|
MAX98390_DP_INT("temperature_calib", temp_value);
|
||||||
acpi_dp_write(dp);
|
|
||||||
printk(BIOS_INFO, "set dsm_calib properties\n");
|
printk(BIOS_INFO, "set dsm_calib properties\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (CONFIG(CHROMEOS_DSM_PARAM_FILE_NAME)) {
|
||||||
|
if (config->dsm_param_file_name) {
|
||||||
|
if (!dp)
|
||||||
|
dp = acpi_dp_new_table("_DSD");
|
||||||
|
|
||||||
|
size_t chars = snprintf(dsm_name, sizeof(dsm_name), "%s_%s_%s.bin",
|
||||||
|
config->dsm_param_file_name, CONFIG_MAINBOARD_VENDOR,
|
||||||
|
CONFIG_MAINBOARD_PART_NUMBER);
|
||||||
|
|
||||||
|
if (chars >= sizeof(dsm_name))
|
||||||
|
printk(BIOS_ERR, "ERROR: String too long in %s\n", __func__);
|
||||||
|
|
||||||
|
acpi_dp_add_string(dp, "maxim,dsm_param_name", dsm_name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dp)
|
||||||
|
acpi_dp_write(dp);
|
||||||
|
|
||||||
acpigen_pop_len(); /* Device */
|
acpigen_pop_len(); /* Device */
|
||||||
acpigen_pop_len(); /* Scope */
|
acpigen_pop_len(); /* Scope */
|
||||||
|
|
||||||
|
|
|
@ -70,6 +70,14 @@ config CHROMEOS_DSM_CALIB
|
||||||
to ACPI DSD table in device driver. These parameters will be applied by kernel driver
|
to ACPI DSD table in device driver. These parameters will be applied by kernel driver
|
||||||
through device property at boot.
|
through device property at boot.
|
||||||
|
|
||||||
|
config CHROMEOS_DSM_PARAM_FILE_NAME
|
||||||
|
bool
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
On some boards, there are different dsm parameter files for Dynamic Speaker
|
||||||
|
Management (DSM). Enable this config to assign dsm parameters file name in ACPI
|
||||||
|
SSDT table. Kernel driver uses this to load the DSM parameter file.
|
||||||
|
|
||||||
config CHROMEOS_CSE_BOARD_RESET_OVERRIDE
|
config CHROMEOS_CSE_BOARD_RESET_OVERRIDE
|
||||||
bool
|
bool
|
||||||
default n
|
default n
|
||||||
|
|
Loading…
Reference in New Issue