diff mbox series

ALSA: hda: avoid reset of sdo_limit

Message ID 1597848273-25813-1-git-send-email-spujar@nvidia.com
State New, archived
Headers show
Series ALSA: hda: avoid reset of sdo_limit | expand

Commit Message

Sameer Pujar Aug. 19, 2020, 2:44 p.m. UTC
By default 'sdo_limit' is initialized with a default value of '8'
as per spec. This is overridden in cases where a different value is
required. However this is getting reset when snd_hdac_bus_init_chip()
is called again, which happens during runtime PM cycle. Avoid reset
by not initializing to default value everytime.

Fixes: 67ae482a59e9 ("ALSA: hda: add member to store ratio for stripe control")
Cc: <stable@vger.kernel.org>
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
---
 sound/hda/hdac_controller.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Takashi Iwai Aug. 19, 2020, 2:53 p.m. UTC | #1
On Wed, 19 Aug 2020 16:44:33 +0200,
Sameer Pujar wrote:
> 
> By default 'sdo_limit' is initialized with a default value of '8'
> as per spec. This is overridden in cases where a different value is
> required. However this is getting reset when snd_hdac_bus_init_chip()
> is called again, which happens during runtime PM cycle. Avoid reset
> by not initializing to default value everytime.
> 
> Fixes: 67ae482a59e9 ("ALSA: hda: add member to store ratio for stripe control")
> Cc: <stable@vger.kernel.org>
> Signed-off-by: Sameer Pujar <spujar@nvidia.com>

How about to move the default sdo_limit setup into snd_hdac_bus_init()
instead?  That's the place to be called only once.


thanks,

Takashi


> ---
>  sound/hda/hdac_controller.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/sound/hda/hdac_controller.c b/sound/hda/hdac_controller.c
> index 011b17c..0e26e96 100644
> --- a/sound/hda/hdac_controller.c
> +++ b/sound/hda/hdac_controller.c
> @@ -538,7 +538,8 @@ bool snd_hdac_bus_init_chip(struct hdac_bus *bus, bool full_reset)
>  	 *   { ((num_channels * bits_per_sample * rate/48000) /
>  	 *	number of SDOs) >= 8 }
>  	 */
> -	bus->sdo_limit = 8;
> +	if (!bus->sdo_limit)
> +		bus->sdo_limit = 8;
>  
>  	return true;
>  }
> -- 
> 2.7.4
>
Sameer Pujar Aug. 19, 2020, 3:21 p.m. UTC | #2
On 8/19/2020 8:23 PM, Takashi Iwai wrote:
> External email: Use caution opening links or attachments
>
>
> On Wed, 19 Aug 2020 16:44:33 +0200,
> Sameer Pujar wrote:
>> By default 'sdo_limit' is initialized with a default value of '8'
>> as per spec. This is overridden in cases where a different value is
>> required. However this is getting reset when snd_hdac_bus_init_chip()
>> is called again, which happens during runtime PM cycle. Avoid reset
>> by not initializing to default value everytime.
>>
>> Fixes: 67ae482a59e9 ("ALSA: hda: add member to store ratio for stripe control")
>> Cc: <stable@vger.kernel.org>
>> Signed-off-by: Sameer Pujar <spujar@nvidia.com>
> How about to move the default sdo_limit setup into snd_hdac_bus_init()
> instead?  That's the place to be called only once.

A better choice. Thanks for the suggestion. Will publish v2.

>
>
> thanks,
>
> Takashi
>
>
>> ---
>>   sound/hda/hdac_controller.c | 3 ++-
>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/sound/hda/hdac_controller.c b/sound/hda/hdac_controller.c
>> index 011b17c..0e26e96 100644
>> --- a/sound/hda/hdac_controller.c
>> +++ b/sound/hda/hdac_controller.c
>> @@ -538,7 +538,8 @@ bool snd_hdac_bus_init_chip(struct hdac_bus *bus, bool full_reset)
>>         *   { ((num_channels * bits_per_sample * rate/48000) /
>>         *      number of SDOs) >= 8 }
>>         */
>> -     bus->sdo_limit = 8;
>> +     if (!bus->sdo_limit)
>> +             bus->sdo_limit = 8;
>>
>>        return true;
>>   }
>> --
>> 2.7.4
>>
diff mbox series

Patch

diff --git a/sound/hda/hdac_controller.c b/sound/hda/hdac_controller.c
index 011b17c..0e26e96 100644
--- a/sound/hda/hdac_controller.c
+++ b/sound/hda/hdac_controller.c
@@ -538,7 +538,8 @@  bool snd_hdac_bus_init_chip(struct hdac_bus *bus, bool full_reset)
 	 *   { ((num_channels * bits_per_sample * rate/48000) /
 	 *	number of SDOs) >= 8 }
 	 */
-	bus->sdo_limit = 8;
+	if (!bus->sdo_limit)
+		bus->sdo_limit = 8;
 
 	return true;
 }