vc/google: Decouple DSM_CALIB from CHROMEOS
DSM (Dynamic Speaker Management) uses calibration parameters stored in a VPD (Vital Product Data) FMAP region to configure the audio output via an ACPI _DSD table. This has no dependency on a ChromeOS, and can be used by Linux/Windows drivers if appropriately configured. Remove the dependency of DSM_CALIB (and the calibration file) on CHROMEOS and replace it with VPD, so that non-CHROMEOS builds can utilize this feature as well. Move files from underneath vc/google/chromeos to underscore the point. TEST=build/boot google/nightfury, dump ACPI, verify DSM calibraton parameters present in _DSD table. Change-Id: I643b3581bcc662befc9e30736dae806f94b055af Signed-off-by: Matt DeVillier <matt.devillier@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/74812 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: CoolStar <coolstarorganization@gmail.com> Reviewed-by: Sean Rhodes <sean@starlabs.systems> Reviewed-by: Martin Roth <martin.roth@amd.corp-partner.google.com>
This commit is contained in:
parent
b78e462037
commit
1db8c57470
|
@ -8,7 +8,7 @@
|
||||||
#include <device/path.h>
|
#include <device/path.h>
|
||||||
#include <identity.h>
|
#include <identity.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <vendorcode/google/chromeos/chromeos.h>
|
#include <vendorcode/google/dsm_calib.h>
|
||||||
#include "chip.h"
|
#include "chip.h"
|
||||||
|
|
||||||
#define MAX98390_ACPI_HID "MX98390"
|
#define MAX98390_ACPI_HID "MX98390"
|
||||||
|
@ -47,7 +47,7 @@ static void max98390_fill_ssdt(const struct device *dev)
|
||||||
acpigen_write_resourcetemplate_footer();
|
acpigen_write_resourcetemplate_footer();
|
||||||
|
|
||||||
/* Device Properties */
|
/* Device Properties */
|
||||||
if (CONFIG(CHROMEOS_DSM_CALIB)) {
|
if (CONFIG(GOOGLE_DSM_CALIB)) {
|
||||||
if (get_dsm_calibration_from_key(config->r0_calib_key, &r0_value)
|
if (get_dsm_calibration_from_key(config->r0_calib_key, &r0_value)
|
||||||
|| get_dsm_calibration_from_key(config->temperature_calib_key,
|
|| get_dsm_calibration_from_key(config->temperature_calib_key,
|
||||||
&temp_value)) {
|
&temp_value)) {
|
||||||
|
@ -63,7 +63,7 @@ static void max98390_fill_ssdt(const struct device *dev)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CONFIG(CHROMEOS_DSM_PARAM_FILE_NAME)) {
|
if (CONFIG(GOOGLE_DSM_PARAM_FILE_NAME)) {
|
||||||
if (config->dsm_param_file_name) {
|
if (config->dsm_param_file_name) {
|
||||||
if (!dp)
|
if (!dp)
|
||||||
dp = acpi_dp_new_table("_DSD");
|
dp = acpi_dp_new_table("_DSD");
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
#include <device/device.h>
|
#include <device/device.h>
|
||||||
#include <device/path.h>
|
#include <device/path.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <vendorcode/google/chromeos/chromeos.h>
|
#include <vendorcode/google/dsm_calib.h>
|
||||||
#include "chip.h"
|
#include "chip.h"
|
||||||
|
|
||||||
#define RT1011_ACPI_HID "10EC1011"
|
#define RT1011_ACPI_HID "10EC1011"
|
||||||
|
@ -45,7 +45,7 @@ static void rt1011_fill_ssdt(const struct device *dev)
|
||||||
acpigen_write_resourcetemplate_footer();
|
acpigen_write_resourcetemplate_footer();
|
||||||
|
|
||||||
/* Device Properties */
|
/* Device Properties */
|
||||||
if (CONFIG(CHROMEOS_DSM_CALIB)) {
|
if (CONFIG(GOOGLE_DSM_CALIB)) {
|
||||||
if (get_dsm_calibration_from_key(config->r0_calib_key, &r0_value)
|
if (get_dsm_calibration_from_key(config->r0_calib_key, &r0_value)
|
||||||
|| get_dsm_calibration_from_key(config->temperature_calib_key,
|
|| get_dsm_calibration_from_key(config->temperature_calib_key,
|
||||||
&temp_value)) {
|
&temp_value)) {
|
||||||
|
|
|
@ -57,16 +57,16 @@ config BOARD_GOOGLE_FELWINTER
|
||||||
config BOARD_GOOGLE_GIMBLE
|
config BOARD_GOOGLE_GIMBLE
|
||||||
bool "-> Gimble"
|
bool "-> Gimble"
|
||||||
select BOARD_GOOGLE_BASEBOARD_BRYA
|
select BOARD_GOOGLE_BASEBOARD_BRYA
|
||||||
select CHROMEOS_DSM_CALIB if CHROMEOS
|
select GOOGLE_DSM_CALIB if VPD
|
||||||
select CHROMEOS_DSM_PARAM_FILE_NAME if CHROMEOS
|
select GOOGLE_DSM_PARAM_FILE_NAME if VPD
|
||||||
select DRIVERS_GENESYSLOGIC_GL9750
|
select DRIVERS_GENESYSLOGIC_GL9750
|
||||||
select DRIVERS_I2C_MAX98390
|
select DRIVERS_I2C_MAX98390
|
||||||
|
|
||||||
config BOARD_GOOGLE_GIMBLE4ES
|
config BOARD_GOOGLE_GIMBLE4ES
|
||||||
bool "-> Gimble4ES"
|
bool "-> Gimble4ES"
|
||||||
select BOARD_GOOGLE_BASEBOARD_BRYA
|
select BOARD_GOOGLE_BASEBOARD_BRYA
|
||||||
select CHROMEOS_DSM_CALIB if CHROMEOS
|
select GOOGLE_DSM_CALIB if VPD
|
||||||
select CHROMEOS_DSM_PARAM_FILE_NAME if CHROMEOS
|
select GOOGLE_DSM_PARAM_FILE_NAME if VPD
|
||||||
select DEFAULT_ADL_NEM
|
select DEFAULT_ADL_NEM
|
||||||
select DRIVERS_GENESYSLOGIC_GL9750
|
select DRIVERS_GENESYSLOGIC_GL9750
|
||||||
select DRIVERS_I2C_MAX98390
|
select DRIVERS_I2C_MAX98390
|
||||||
|
@ -118,8 +118,8 @@ config BOARD_GOOGLE_PRIMUS4ES
|
||||||
config BOARD_GOOGLE_REDRIX
|
config BOARD_GOOGLE_REDRIX
|
||||||
bool "-> Redrix"
|
bool "-> Redrix"
|
||||||
select BOARD_GOOGLE_BASEBOARD_BRYA
|
select BOARD_GOOGLE_BASEBOARD_BRYA
|
||||||
select CHROMEOS_DSM_CALIB if CHROMEOS
|
select GOOGLE_DSM_CALIB if VPD
|
||||||
select CHROMEOS_DSM_PARAM_FILE_NAME if CHROMEOS
|
select GOOGLE_DSM_PARAM_FILE_NAME if VPD
|
||||||
select DRIVERS_GENESYSLOGIC_GL9755
|
select DRIVERS_GENESYSLOGIC_GL9755
|
||||||
select DRIVERS_GFX_GENERIC
|
select DRIVERS_GFX_GENERIC
|
||||||
select DRIVERS_I2C_MAX98390
|
select DRIVERS_I2C_MAX98390
|
||||||
|
@ -130,8 +130,8 @@ config BOARD_GOOGLE_REDRIX
|
||||||
config BOARD_GOOGLE_REDRIX4ES
|
config BOARD_GOOGLE_REDRIX4ES
|
||||||
bool "-> Redrix4ES"
|
bool "-> Redrix4ES"
|
||||||
select BOARD_GOOGLE_BASEBOARD_BRYA
|
select BOARD_GOOGLE_BASEBOARD_BRYA
|
||||||
select CHROMEOS_DSM_CALIB if CHROMEOS
|
select GOOGLE_DSM_CALIB if VPD
|
||||||
select CHROMEOS_DSM_PARAM_FILE_NAME if CHROMEOS
|
select GOOGLE_DSM_PARAM_FILE_NAME if VPD
|
||||||
select DEFAULT_ADL_NEM
|
select DEFAULT_ADL_NEM
|
||||||
select DRIVERS_GENESYSLOGIC_GL9755
|
select DRIVERS_GENESYSLOGIC_GL9755
|
||||||
select DRIVERS_GFX_GENERIC
|
select DRIVERS_GFX_GENERIC
|
||||||
|
|
|
@ -44,13 +44,13 @@ config BOARD_GOOGLE_HATCH
|
||||||
|
|
||||||
config BOARD_GOOGLE_HELIOS
|
config BOARD_GOOGLE_HELIOS
|
||||||
select BOARD_GOOGLE_BASEBOARD_HATCH
|
select BOARD_GOOGLE_BASEBOARD_HATCH
|
||||||
select CHROMEOS_DSM_CALIB if CHROMEOS
|
select GOOGLE_DSM_CALIB if VPD
|
||||||
select DRIVERS_I2C_RT1011
|
select DRIVERS_I2C_RT1011
|
||||||
select INTEL_GMA_HAVE_VBT
|
select INTEL_GMA_HAVE_VBT
|
||||||
|
|
||||||
config BOARD_GOOGLE_HELIOS_DISKSWAP
|
config BOARD_GOOGLE_HELIOS_DISKSWAP
|
||||||
select BOARD_GOOGLE_BASEBOARD_HATCH
|
select BOARD_GOOGLE_BASEBOARD_HATCH
|
||||||
select CHROMEOS_DSM_CALIB if CHROMEOS
|
select GOOGLE_DSM_CALIB if VPD
|
||||||
select DRIVERS_I2C_RT1011
|
select DRIVERS_I2C_RT1011
|
||||||
select INTEL_GMA_HAVE_VBT
|
select INTEL_GMA_HAVE_VBT
|
||||||
|
|
||||||
|
@ -74,13 +74,13 @@ config BOARD_GOOGLE_MUSHU
|
||||||
|
|
||||||
config BOARD_GOOGLE_NIGHTFURY
|
config BOARD_GOOGLE_NIGHTFURY
|
||||||
select BOARD_GOOGLE_BASEBOARD_HATCH
|
select BOARD_GOOGLE_BASEBOARD_HATCH
|
||||||
select CHROMEOS_DSM_CALIB if CHROMEOS
|
select GOOGLE_DSM_CALIB if VPD
|
||||||
select DRIVERS_I2C_MAX98390
|
select DRIVERS_I2C_MAX98390
|
||||||
select INTEL_GMA_HAVE_VBT
|
select INTEL_GMA_HAVE_VBT
|
||||||
|
|
||||||
config BOARD_GOOGLE_PALKIA
|
config BOARD_GOOGLE_PALKIA
|
||||||
select BOARD_GOOGLE_BASEBOARD_HATCH
|
select BOARD_GOOGLE_BASEBOARD_HATCH
|
||||||
select CHROMEOS_DSM_CALIB if CHROMEOS
|
select GOOGLE_DSM_CALIB if VPD
|
||||||
select DRIVERS_I2C_RT1011
|
select DRIVERS_I2C_RT1011
|
||||||
|
|
||||||
if BOARD_GOOGLE_BASEBOARD_HATCH
|
if BOARD_GOOGLE_BASEBOARD_HATCH
|
||||||
|
|
|
@ -77,7 +77,7 @@ config BOARD_GOOGLE_HALVOR
|
||||||
|
|
||||||
config BOARD_GOOGLE_LINDAR
|
config BOARD_GOOGLE_LINDAR
|
||||||
select BOARD_GOOGLE_BASEBOARD_VOLTEER
|
select BOARD_GOOGLE_BASEBOARD_VOLTEER
|
||||||
select CHROMEOS_DSM_CALIB if CHROMEOS
|
select GOOGLE_DSM_CALIB if VPD
|
||||||
select DRIVERS_GENERIC_BAYHUB_LV2
|
select DRIVERS_GENERIC_BAYHUB_LV2
|
||||||
select DRIVERS_I2C_RT1011
|
select DRIVERS_I2C_RT1011
|
||||||
select INTEL_CAR_NEM
|
select INTEL_CAR_NEM
|
||||||
|
|
|
@ -9,3 +9,22 @@ config GOOGLE_SMBIOS_MAINBOARD_VERSION
|
||||||
help
|
help
|
||||||
Provide a common implementation for mainboard version,
|
Provide a common implementation for mainboard version,
|
||||||
which returns a formatted 'rev%d' board_id() string.
|
which returns a formatted 'rev%d' board_id() string.
|
||||||
|
|
||||||
|
config GOOGLE_DSM_CALIB
|
||||||
|
bool
|
||||||
|
default n
|
||||||
|
depends on VPD
|
||||||
|
help
|
||||||
|
On some boards, there are calibrated parameters for Dynamic Speaker Management(DSM)
|
||||||
|
stored in VPD. Enable this config to read and parse these VPD values and write them
|
||||||
|
to ACPI DSD table in device driver. These parameters will be applied by kernel driver
|
||||||
|
through device property at boot.
|
||||||
|
|
||||||
|
config GOOGLE_DSM_PARAM_FILE_NAME
|
||||||
|
bool
|
||||||
|
default n
|
||||||
|
depends on GOOGLE_DSM_CALIB
|
||||||
|
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.
|
||||||
|
|
|
@ -2,4 +2,5 @@
|
||||||
|
|
||||||
subdirs-$(CONFIG_CHROMEOS) += chromeos
|
subdirs-$(CONFIG_CHROMEOS) += chromeos
|
||||||
|
|
||||||
|
ramstage-$(CONFIG_GOOGLE_DSM_CALIB) += dsm_calib.c
|
||||||
ramstage-$(CONFIG_GOOGLE_SMBIOS_MAINBOARD_VERSION) += smbios.c
|
ramstage-$(CONFIG_GOOGLE_SMBIOS_MAINBOARD_VERSION) += smbios.c
|
||||||
|
|
|
@ -57,23 +57,6 @@ config CHROMEOS_USE_EC_WATCHDOG_FLAG
|
||||||
help
|
help
|
||||||
Use the AP watchdog flag stored in EC.
|
Use the AP watchdog flag stored in EC.
|
||||||
|
|
||||||
config CHROMEOS_DSM_CALIB
|
|
||||||
bool
|
|
||||||
default n
|
|
||||||
help
|
|
||||||
On some boards, there are calibrated parameters for Dynamic Speaker Management(DSM)
|
|
||||||
stored in VPD. Enable this config to read and parse these VPD values and write them
|
|
||||||
to ACPI DSD table in device driver. These parameters will be applied by kernel driver
|
|
||||||
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
|
||||||
|
|
|
@ -8,7 +8,6 @@ ramstage-y += vpd_mac.c vpd_serialno.c vpd_calibration.c
|
||||||
ramstage-$(CONFIG_CHROMEOS_DISABLE_PLATFORM_HIERARCHY_ON_RESUME) += tpm2.c
|
ramstage-$(CONFIG_CHROMEOS_DISABLE_PLATFORM_HIERARCHY_ON_RESUME) += tpm2.c
|
||||||
ramstage-$(CONFIG_HAVE_REGULATORY_DOMAIN) += wrdd.c
|
ramstage-$(CONFIG_HAVE_REGULATORY_DOMAIN) += wrdd.c
|
||||||
ramstage-$(CONFIG_USE_SAR) += sar.c
|
ramstage-$(CONFIG_USE_SAR) += sar.c
|
||||||
ramstage-$(CONFIG_CHROMEOS_DSM_CALIB) += dsm_calib.c
|
|
||||||
ramstage-$(CONFIG_TPM_GOOGLE) += cr50_enable_update.c
|
ramstage-$(CONFIG_TPM_GOOGLE) += cr50_enable_update.c
|
||||||
|
|
||||||
romstage-$(CONFIG_CHROMEOS_CSE_BOARD_RESET_OVERRIDE) += cse_board_reset.c
|
romstage-$(CONFIG_CHROMEOS_CSE_BOARD_RESET_OVERRIDE) += cse_board_reset.c
|
||||||
|
|
|
@ -27,16 +27,6 @@ void cbmem_add_vpd_calibration_data(void);
|
||||||
void chromeos_set_me_hash(u32*, int);
|
void chromeos_set_me_hash(u32*, int);
|
||||||
void chromeos_set_ramoops(void *ram_oops, size_t size);
|
void chromeos_set_ramoops(void *ram_oops, size_t size);
|
||||||
|
|
||||||
/**
|
|
||||||
* get_dsm_calibration_from_key - Gets value related to DSM calibration from VPD
|
|
||||||
* @key: The key in RO_VPD. The valid prefix is "dsm_calib_". The valid keys are
|
|
||||||
* documented in https://chromeos.google.com/partner/dlm/docs/factory/vpd.html.
|
|
||||||
* @value: Output value. The value read from VPD parsed into uint64_t integer.
|
|
||||||
*
|
|
||||||
* Returns CB_SUCCESS on success or CB_ERR on failure.
|
|
||||||
*/
|
|
||||||
enum cb_err get_dsm_calibration_from_key(const char *key, uint64_t *value);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Declaration for mainboards to use to generate ACPI-specific ChromeOS needs.
|
* Declaration for mainboards to use to generate ACPI-specific ChromeOS needs.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <types.h>
|
#include <types.h>
|
||||||
#include <vendorcode/google/chromeos/chromeos.h>
|
#include "dsm_calib.h"
|
||||||
|
|
||||||
#define DSM_BUF_LEN 128
|
#define DSM_BUF_LEN 128
|
||||||
#define DSM_PREFIX "dsm_calib_"
|
#define DSM_PREFIX "dsm_calib_"
|
|
@ -0,0 +1,20 @@
|
||||||
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||||
|
|
||||||
|
#ifndef __DSM_CALIB_H__
|
||||||
|
#define __DSM_CALIB_H__
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <types.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get_dsm_calibration_from_key - Gets value related to DSM calibration from VPD
|
||||||
|
* @key: The key in RO_VPD. The valid prefix is "dsm_calib_". The valid keys are
|
||||||
|
* documented in https://chromeos.google.com/partner/dlm/docs/factory/vpd.html.
|
||||||
|
* @value: Output value. The value read from VPD parsed into uint64_t integer.
|
||||||
|
*
|
||||||
|
* Returns CB_SUCCESS on success or CB_ERR on failure.
|
||||||
|
*/
|
||||||
|
enum cb_err get_dsm_calibration_from_key(const char *key, uint64_t *value);
|
||||||
|
|
||||||
|
#endif /* __DSM_CALIB_H__ */
|
Loading…
Reference in New Issue