From: Niranjan Holalu Yogendra <niranjan.hy@ti.com>
To: <linux-sound@vger.kernel.org>
Cc: <linux-kernel@vger.kernel.org>, <broonie@kernel.org>,
<ckeepax@opensource.cirrus.com>, <lgirdwood@gmail.com>,
<perex@perex.cz>, <tiwai@suse.com>, <cezary.rojewski@intel.com>,
<peter.ujfalusi@linux.intel.com>,
<yung-chuan.liao@linux.intel.com>, <kai.vehmanen@linux.intel.com>,
<pierre-louis.bossart@linux.dev>, <baojun.xu@ti.com>,
<shenghao-ding@ti.com>, <sandeepk@ti.com>, <v-hampiholi@ti.com>,
Niranjan H Y <niranjan.hy@ti.com>
Subject: [PATCH v1 1/2] ASoC: tac5xx2-sdw: add tac5272 support
Date: Tue, 8 Sep 2026 08:57:56 +0530 [thread overview]
Message-ID: <20260908032757.389-1-niranjan.hy@ti.com> (raw)
From: Niranjan H Y <niranjan.hy@ti.com>
Add support for tac5272 which is a UAJ
only variant with no speaker and dmic.
Signed-off-by: Niranjan H Y <niranjan.hy@ti.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
---
sound/soc/codecs/tac5xx2-sdw.c | 50 ++++++++++++++++++++++++++++++++--
1 file changed, 47 insertions(+), 3 deletions(-)
diff --git a/sound/soc/codecs/tac5xx2-sdw.c b/sound/soc/codecs/tac5xx2-sdw.c
index a5f654cde..fe6d3f981 100644
--- a/sound/soc/codecs/tac5xx2-sdw.c
+++ b/sound/soc/codecs/tac5xx2-sdw.c
@@ -146,6 +146,8 @@ struct tac5xx2_prv {
struct device *dev;
bool hw_init;
bool first_hw_init_done;
+ bool support_spk;
+ bool support_dmic;
u32 part_id;
u32 rev_id;
struct snd_soc_jack *hs_jack;
@@ -1168,6 +1170,28 @@ static int tac_interrupt_callback(struct sdw_slave *slave,
return 0;
}
+static struct snd_soc_dai_driver tac5272_dai_driver[] = {
+ {
+ .name = "tac5xx2-aif3",
+ .id = TAC5XX2_UAJ,
+ .playback = {
+ .stream_name = "DP4 UAJ Speaker Playback",
+ .channels_min = 1,
+ .channels_max = 2,
+ .rates = TAC5XX2_DEVICE_RATES,
+ .formats = TAC5XX2_DEVICE_FORMATS,
+ },
+ .capture = {
+ .stream_name = "DP7 UAJ Mic Capture",
+ .channels_min = 1,
+ .channels_max = 2,
+ .rates = TAC5XX2_DEVICE_RATES,
+ .formats = TAC5XX2_DEVICE_FORMATS,
+ },
+ .ops = &tac_dai_ops,
+ },
+};
+
static struct snd_soc_dai_driver tac5572_dai_driver[] = {
{
.name = "tac5xx2-aif1",
@@ -1409,8 +1433,16 @@ static const struct snd_soc_component_driver soc_codec_driver_tacdevice = {
.endianness = 1,
};
+static const struct snd_soc_component_driver soc_codec_driver_tac5272 = {
+ .probe = tac_component_probe,
+ .remove = tac_component_remove,
+ .idle_bias_on = 0,
+ .endianness = 1,
+};
+
static s32 tac_init(struct tac5xx2_prv *tac_dev)
{
+ const struct snd_soc_component_driver *template;
struct snd_soc_component_driver *component_driver;
struct snd_soc_dai_driver *dai_drv;
int num_dais;
@@ -1419,21 +1451,30 @@ static s32 tac_init(struct tac5xx2_prv *tac_dev)
dev_set_drvdata(tac_dev->dev, tac_dev);
switch (tac_dev->part_id) {
+ case 0x5272:
+ dai_drv = tac5272_dai_driver;
+ num_dais = ARRAY_SIZE(tac5272_dai_driver);
+ template = &soc_codec_driver_tac5272;
+ break;
case 0x5572:
dai_drv = tac5572_dai_driver;
num_dais = ARRAY_SIZE(tac5572_dai_driver);
+ template = &soc_codec_driver_tacdevice;
break;
case 0x5672:
dai_drv = tac5672_dai_driver;
num_dais = ARRAY_SIZE(tac5672_dai_driver);
+ template = &soc_codec_driver_tacdevice;
break;
case 0x5682:
dai_drv = tac5682_dai_driver;
num_dais = ARRAY_SIZE(tac5682_dai_driver);
+ template = &soc_codec_driver_tacdevice;
break;
case 0x2883:
dai_drv = tas2883_dai_driver;
num_dais = ARRAY_SIZE(tas2883_dai_driver);
+ template = &soc_codec_driver_tacdevice;
break;
default:
dev_err(tac_dev->dev, "Unsupported device: 0x%x\n",
@@ -1446,7 +1487,7 @@ static s32 tac_init(struct tac5xx2_prv *tac_dev)
if (!component_driver)
return -ENOMEM;
- memcpy(component_driver, &soc_codec_driver_tacdevice, sizeof(*component_driver));
+ memcpy(component_driver, template, sizeof(*component_driver));
if (tac_has_uaj_support(tac_dev))
component_driver->set_jack = tac5xx2_set_jack;
@@ -1756,7 +1797,7 @@ static int tac_io_init(struct device *dev, struct sdw_slave *slave, bool first)
}
}
- if (tac_dev->sa_func_data) {
+ if (tac_dev->sa_func_data && tac_dev->support_spk) {
ret = sdca_regmap_write_init(dev, tac_dev->regmap,
tac_dev->sa_func_data);
if (ret) {
@@ -1775,7 +1816,7 @@ static int tac_io_init(struct device *dev, struct sdw_slave *slave, bool first)
}
}
- if (tac_dev->sm_func_data) {
+ if (tac_dev->sm_func_data && tac_dev->support_dmic) {
ret = sdca_regmap_write_init(dev, tac_dev->regmap,
tac_dev->sm_func_data);
if (ret) {
@@ -1995,6 +2036,8 @@ static s32 tac_sdw_probe(struct sdw_slave *peripheral,
tac_dev->first_hw_init_done = false;
tac_dev->part_id = id->part_id;
tac_dev->rev_id = 0x0;
+ tac_dev->support_spk = (id->part_id != 0x5272);
+ tac_dev->support_dmic = (id->part_id != 0x5272);
dev_set_drvdata(dev, tac_dev);
regmap = devm_regmap_init_sdw_mbq_cfg(&peripheral->dev, peripheral,
@@ -2045,6 +2088,7 @@ static void tac_sdw_remove(struct sdw_slave *peripheral)
}
static const struct sdw_device_id tac_sdw_id[] = {
+ SDW_SLAVE_ENTRY(0x0102, 0x5272, 0),
SDW_SLAVE_ENTRY(0x0102, 0x5572, 0),
SDW_SLAVE_ENTRY(0x0102, 0x5672, 0),
SDW_SLAVE_ENTRY(0x0102, 0x5682, 0),
--
2.34.1
next reply other threads:[~2026-09-08 3:28 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-08 3:27 Niranjan Holalu Yogendra [this message]
2026-09-08 3:27 ` [PATCH v1 2/2] ASoC: sdw_utils: add tac5272 support Niranjan Holalu Yogendra
2026-09-08 8:03 ` Pierre-Louis Bossart
2026-09-08 8:02 ` [PATCH v1 1/2] ASoC: tac5xx2-sdw: " Pierre-Louis Bossart
2026-09-09 5:28 ` Holalu Yogendra, Niranjan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260908032757.389-1-niranjan.hy@ti.com \
--to=niranjan.hy@ti.com \
--cc=baojun.xu@ti.com \
--cc=broonie@kernel.org \
--cc=cezary.rojewski@intel.com \
--cc=ckeepax@opensource.cirrus.com \
--cc=kai.vehmanen@linux.intel.com \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sound@vger.kernel.org \
--cc=perex@perex.cz \
--cc=peter.ujfalusi@linux.intel.com \
--cc=pierre-louis.bossart@linux.dev \
--cc=sandeepk@ti.com \
--cc=shenghao-ding@ti.com \
--cc=tiwai@suse.com \
--cc=v-hampiholi@ti.com \
--cc=yung-chuan.liao@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.