Re: [PATCH v9] ASoc: tas2783: Add tas2783 codec driver

From: Pierre-Louis Bossart
Date: Thu Feb 22 2024 - 19:14:06 EST


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.