ALSA: hda - Increase default bdl_pos_adj for Baytrail/Braswell
Intel Atom processors seem to have a problem at recording when bdl_pos_adj is set to an odd value. When a value like 1 is used, it may drop the samples unexpectedly. Actually, for the old Atoms, we used to set AZX_DRIVER_SCH type, and this assigns 32 as default. Meanwhile the newer chips, Baytrail and Braswell, are set as AZX_DRIVER_PCH, and the lower default value, 1, is assigned. This patch changes the default values for these chipsets to a safer default, 32, again. Since changing the driver type (AZX_DRIVER_XXX) leads to the rename of the driver string, it would result in a possible regression. So, we can't change the type. Instead, in this patch, manual (ugly) PCI ID checks are added on top. A drawback by this increase is the slight increase of the latency, but it's a sub-ms order in normal situations, so mostly negligible. Reported-and-tested-by: Jochen Henneberg <jh@henneberg-systemdesign.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
4f0189be3d
commit
2cf721db4b
|
@ -1490,6 +1490,15 @@ static void azx_probe_work(struct work_struct *work)
|
|||
|
||||
static int default_bdl_pos_adj(struct azx *chip)
|
||||
{
|
||||
/* some exceptions: Atoms seem problematic with value 1 */
|
||||
if (chip->pci->vendor == PCI_VENDOR_ID_INTEL) {
|
||||
switch (chip->pci->device) {
|
||||
case 0x0f04: /* Baytrail */
|
||||
case 0x2284: /* Braswell */
|
||||
return 32;
|
||||
}
|
||||
}
|
||||
|
||||
switch (chip->driver_type) {
|
||||
case AZX_DRIVER_ICH:
|
||||
case AZX_DRIVER_PCH:
|
||||
|
|
Loading…
Reference in New Issue