]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: tas2781: Add TAS2573 support
authorBaojun Xu <baojun.xu@ti.com>
Tue, 2 Jun 2026 10:05:32 +0000 (18:05 +0800)
committerMark Brown <broonie@kernel.org>
Mon, 8 Jun 2026 18:01:08 +0000 (19:01 +0100)
The TAS2573 belongs to the TAS257x device family, featuring an integrated
DSP and IV sensing capability.

Signed-off-by: Baojun Xu <baojun.xu@ti.com>
Link: https://patch.msgid.link/20260602100532.6463-2-baojun.xu@ti.com
Signed-off-by: Mark Brown <broonie@kernel.org>
include/sound/tas2781.h
sound/soc/codecs/tas2781-i2c.c

index 95296bb4a33a1ee4d3e3624c2283d7e1fdbd462c..d45f805b5d18b4936d9c75d78bd3371dbb1d329d 100644 (file)
@@ -120,6 +120,7 @@ enum audio_device {
        TAS2568,
        TAS2570,
        TAS2572,
+       TAS2573,
        TAS2574,
        TAS2781,
        TAS5802,
index 620ed4ef577dad3a7c90f05631dbf0883e92fa4b..9e6f0ad5f05dc9d187bdbb87855e52722f4f928f 100644 (file)
@@ -108,6 +108,7 @@ static const struct i2c_device_id tasdevice_id[] = {
        { .name = "tas2568", .driver_data = TAS2568 },
        { .name = "tas2570", .driver_data = TAS2570 },
        { .name = "tas2572", .driver_data = TAS2572 },
+       { .name = "tas2573", .driver_data = TAS2573 },
        { .name = "tas2574", .driver_data = TAS2574 },
        { .name = "tas2781", .driver_data = TAS2781 },
        { .name = "tas5802", .driver_data = TAS5802 },
@@ -132,6 +133,7 @@ static const struct of_device_id tasdevice_of_match[] = {
        { .compatible = "ti,tas2568", .data = &tasdevice_id[TAS2568] },
        { .compatible = "ti,tas2570", .data = &tasdevice_id[TAS2570] },
        { .compatible = "ti,tas2572", .data = &tasdevice_id[TAS2572] },
+       { .compatible = "ti,tas2573", .data = &tasdevice_id[TAS2573] },
        { .compatible = "ti,tas2574", .data = &tasdevice_id[TAS2574] },
        { .compatible = "ti,tas2781", .data = &tasdevice_id[TAS2781] },
        { .compatible = "ti,tas5802", .data = &tasdevice_id[TAS5802] },
@@ -1683,7 +1685,7 @@ static void tasdevice_fw_ready(const struct firmware *fmw,
        tas_priv->fw_state = TASDEVICE_DSP_FW_ALL_OK;
 
        /* There is no calibration required for TAS58XX. */
-       if (tas_priv->chip_id < TAS5802) {
+       if (tas_priv->chip_id == TAS2563 || tas_priv->chip_id == TAS2781) {
                ret = tasdevice_create_cali_ctrls(tas_priv);
                if (ret) {
                        dev_err(tas_priv->dev, "cali controls error\n");
@@ -1736,6 +1738,7 @@ out:
        if (tas_priv->fw_state == TASDEVICE_RCA_FW_OK) {
                switch (tas_priv->chip_id) {
                case TAS2563:
+               case TAS2573:
                case TAS2781:
                case TAS5802:
                case TAS5806M:
@@ -1900,6 +1903,7 @@ static int tasdevice_codec_probe(struct snd_soc_component *codec)
        case TAS2568:
        case TAS2570:
        case TAS2572:
+       case TAS2573:
        case TAS2574:
                p = (struct snd_kcontrol_new *)tas2x20_snd_controls;
                size = ARRAY_SIZE(tas2x20_snd_controls);
@@ -2094,6 +2098,7 @@ static const struct acpi_device_id tasdevice_acpi_match[] = {
        { "TXNW2568", (kernel_ulong_t)&tasdevice_id[TAS2568] },
        { "TXNW2570", (kernel_ulong_t)&tasdevice_id[TAS2570] },
        { "TXNW2572", (kernel_ulong_t)&tasdevice_id[TAS2572] },
+       { "TXNW2573", (kernel_ulong_t)&tasdevice_id[TAS2573] },
        { "TXNW2574", (kernel_ulong_t)&tasdevice_id[TAS2574] },
        { "TXNW2781", (kernel_ulong_t)&tasdevice_id[TAS2781] },
        { "TXNW5802", (kernel_ulong_t)&tasdevice_id[TAS5802] },