Message ID | 1597848273-25813-1-git-send-email-spujar@nvidia.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ALSA: hda: avoid reset of sdo_limit | expand |
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 >
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 --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; }
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(-)