On 2/22/24 2:40 AM, Shenghao Ding wrote:
The tas2783 is a smart audio amplifier with integrated MIPI SoundWire interface (Version 1.2.1 compliant), I2C, and I2S/TDM interfaces designed for portable applications. An on-chip DSP supports Texas Instruments SmartAmp speaker protection algorithm. The integrated speaker voltage and current sense provides for real-time monitoring of lodspeakers.
loudspeakers.
+static void tas2783_apply_calib(struct tasdevice_priv *tas_dev,
- unsigned int *cali_data)
+{
- struct regmap *map = tas_dev->regmap;
- u8 *cali_start;
- u16 offset;
- int ret;
- if (!tas_dev->sdw_peripheral) {
dev_err(tas_dev->dev, "%s: peripheral doesn't exist.\n",
__func__);
return;
- }
- offset = tas_dev->sdw_peripheral->id.unique_id -
TAS2783_UNIQUE_ID_BASE;
- if (offset >= TAS2783_MAX_DEV_NUM) {
dev_err(tas_dev->dev, "%s: offset(%u) is out of range.\n",
__func__, offset);
return;
- }
I think we are at the 4th iteration where I have to repeat myself...
In the SoundWire spec, the unique_id is *LINK SPECIFIC*, and only used at the bus level within the context of a link to help avoid enumeration conflicts
If you are using the unique_id as a SYSTEM-UNIQUE value to lookup EFI data, this is a TI-specific requirement that needs to be documented. That also means you need to double-check for errors so make sure there are no board configurations where the same unique_id is used in multiple links, or by devices other than tas2783.