Commit 2cf721db authored by Takashi Iwai's avatar Takashi Iwai

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: default avatarJochen Henneberg <jh@henneberg-systemdesign.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 4f0189be
...@@ -1490,6 +1490,15 @@ static void azx_probe_work(struct work_struct *work) ...@@ -1490,6 +1490,15 @@ static void azx_probe_work(struct work_struct *work)
static int default_bdl_pos_adj(struct azx *chip) 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) { switch (chip->driver_type) {
case AZX_DRIVER_ICH: case AZX_DRIVER_ICH:
case AZX_DRIVER_PCH: case AZX_DRIVER_PCH:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment