Re: [PATCH v1 2/2] ALSA: hda/tas2781: Update tas2781 HDA driver

From: Takashi Iwai
Date: Sun Sep 03 2023 - 12:48:52 EST


On Sun, 03 Sep 2023 18:33:34 +0200,
Takashi Iwai wrote:
>
> On Sun, 03 Sep 2023 16:37:58 +0200,
> Shenghao Ding wrote:
> >
> > Support ACPI_ID both TXNW2781 and TIAS2781, update dsp/bypass mode
> > switching in tasdevice_program_put.
>
> Again, if you change multiple things, split to individual patches.

Also, the support of two IDs can be unified to a single patch for
changing both files.

A patch isn't necessarily split per file; instead, it's split per
logic. If applying the changes to multiple files at the same time
makes more sense, those should be put in the same patch.


thanks,

Takashi


>
>
> thanks,
>
> Takashi
>
>
> >
> > Signed-off-by: Shenghao Ding <shenghao-ding@xxxxxx>
> >
> > ---
> > Changes in v1:
> > - Add comment on dsp/bypass mode in tasdevice_program_put and
> > tasdevice_info_programs
> > - TIAS2781 has been used by our customers, see following dstd.dsl. We
> > have discussed this with them, they requested TIAS2781 must be
> > supported for the laptops already released to market, their new laptop
> > can switch to TXNW2781
> > Name (_HID, "TIAS2781") // _HID: Hardware ID
> > Name (_UID, Zero) // _UID: Unique ID
> > Method (_SUB, 0, NotSerialized) // _SUB: Subsystem ID
> > {
> > If ((SPID == Zero))
> > {
> > Return ("17AA3886")
> > }
> >
> > If ((SPID == One))
> > {
> > Return ("17AA3884")
> > }
> > }
> > ---
> > sound/pci/hda/tas2781_hda_i2c.c | 15 ++++++++++++---
> > 1 file changed, 12 insertions(+), 3 deletions(-)
> >
> > diff --git a/sound/pci/hda/tas2781_hda_i2c.c b/sound/pci/hda/tas2781_hda_i2c.c
> > index fb80280293..5250d300a2 100644
> > --- a/sound/pci/hda/tas2781_hda_i2c.c
> > +++ b/sound/pci/hda/tas2781_hda_i2c.c
> > @@ -199,8 +199,11 @@ static int tasdevice_info_programs(struct snd_kcontrol *kcontrol,
> >
> > uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
> > uinfo->count = 1;
> > + /* 0: dsp mode
> > + * non-zero: bypass mode
> > + */
> > uinfo->value.integer.min = 0;
> > - uinfo->value.integer.max = tas_fw->nr_programs - 1;
> > + uinfo->value.integer.max = tas_fw->nr_programs;
> >
> > return 0;
> > }
> > @@ -238,7 +241,10 @@ static int tasdevice_program_put(struct snd_kcontrol *kcontrol,
> > int max = tas_fw->nr_programs - 1;
> > int val, ret = 0;
> >
> > - val = clamp(nr_program, 0, max);
> > + /* 0: dsp mode
> > + * non-zero: bypass mode
> > + */
> > + val = (nr_program) ? max : 0;
> >
> > if (tas_priv->cur_prog != val) {
> > tas_priv->cur_prog = val;
> > @@ -647,7 +653,9 @@ static int tas2781_hda_i2c_probe(struct i2c_client *clt)
> > const char *device_name;
> > int ret;
> >
> > - if (strstr(dev_name(&clt->dev), "TIAS2781"))
> > + if (strstr(dev_name(&clt->dev), "TXNW2781"))
> > + device_name = "TXNW2781";
> > + else if (strstr(dev_name(&clt->dev), "TIAS2781"))
> > device_name = "TIAS2781";
> > else
> > return -ENODEV;
> > @@ -824,6 +832,7 @@ static const struct i2c_device_id tas2781_hda_i2c_id[] = {
> >
> > static const struct acpi_device_id tas2781_acpi_hda_match[] = {
> > {"TIAS2781", 0 },
> > + {"TXNW2781", 1 },
> > {}
> > };
> > MODULE_DEVICE_TABLE(acpi, tas2781_acpi_hda_match);
> > --
> > 2.34.1
> >