forked from luck/tmp_suning_uos_patched
ALSA: hda: avoid reset of sdo_limit
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 this reset by moving 'sdo_limit' setup to 'snd_hdac_bus_init()'
function which would be called only once.
Fixes: 67ae482a59
("ALSA: hda: add member to store ratio for stripe control")
Cc: <stable@vger.kernel.org>
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Link: https://lore.kernel.org/r/1597851130-6765-1-git-send-email-spujar@nvidia.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
e17f02d055
commit
b90b925fd5
|
@ -46,6 +46,18 @@ int snd_hdac_bus_init(struct hdac_bus *bus, struct device *dev,
|
||||||
INIT_LIST_HEAD(&bus->hlink_list);
|
INIT_LIST_HEAD(&bus->hlink_list);
|
||||||
init_waitqueue_head(&bus->rirb_wq);
|
init_waitqueue_head(&bus->rirb_wq);
|
||||||
bus->irq = -1;
|
bus->irq = -1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Default value of '8' is as per the HD audio specification (Rev 1.0a).
|
||||||
|
* Following relation is used to derive STRIPE control value.
|
||||||
|
* For sample rate <= 48K:
|
||||||
|
* { ((num_channels * bits_per_sample) / number of SDOs) >= 8 }
|
||||||
|
* For sample rate > 48K:
|
||||||
|
* { ((num_channels * bits_per_sample * rate/48000) /
|
||||||
|
* number of SDOs) >= 8 }
|
||||||
|
*/
|
||||||
|
bus->sdo_limit = 8;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(snd_hdac_bus_init);
|
EXPORT_SYMBOL_GPL(snd_hdac_bus_init);
|
||||||
|
|
|
@ -529,17 +529,6 @@ bool snd_hdac_bus_init_chip(struct hdac_bus *bus, bool full_reset)
|
||||||
|
|
||||||
bus->chip_init = true;
|
bus->chip_init = true;
|
||||||
|
|
||||||
/*
|
|
||||||
* Default value of '8' is as per the HD audio specification (Rev 1.0a).
|
|
||||||
* Following relation is used to derive STRIPE control value.
|
|
||||||
* For sample rate <= 48K:
|
|
||||||
* { ((num_channels * bits_per_sample) / number of SDOs) >= 8 }
|
|
||||||
* For sample rate > 48K:
|
|
||||||
* { ((num_channels * bits_per_sample * rate/48000) /
|
|
||||||
* number of SDOs) >= 8 }
|
|
||||||
*/
|
|
||||||
bus->sdo_limit = 8;
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(snd_hdac_bus_init_chip);
|
EXPORT_SYMBOL_GPL(snd_hdac_bus_init_chip);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user