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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.


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
> 



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux