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 > >