ALSA: hda: Enable sync-write operation as default for all controllers
In the end we already enabled the sync-write mode for most of HD-audio controllers including Intel, and it's no big merit to keep the async write mode for the rest. Let's make it as default and drop the superfluous AZX_DCAPS_SYNC_WRITE bit flag. Also, avoid to set the allow_bus_reset flag, which is a quite unstable and hackish behavior that was needed only for some early platforms (decades ago). The straight fallback to the single cmd mode is more robust. Link: https://lore.kernel.org/r/20200618144051.7415-1-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
c32a5fbc18
commit
f34a4c9dd4
3 changed files with 10 additions and 19 deletions
|
@ -1202,15 +1202,8 @@ int azx_bus_init(struct azx *chip, const char *model)
|
||||||
if (chip->driver_caps & AZX_DCAPS_4K_BDLE_BOUNDARY)
|
if (chip->driver_caps & AZX_DCAPS_4K_BDLE_BOUNDARY)
|
||||||
bus->core.align_bdle_4k = true;
|
bus->core.align_bdle_4k = true;
|
||||||
|
|
||||||
/* AMD chipsets often cause the communication stalls upon certain
|
/* enable sync_write flag for stable communication as default */
|
||||||
* sequence like the pin-detection. It seems that forcing the synced
|
|
||||||
* access works around the stall. Grrr...
|
|
||||||
*/
|
|
||||||
if (chip->driver_caps & AZX_DCAPS_SYNC_WRITE) {
|
|
||||||
dev_dbg(chip->card->dev, "Enable sync_write for stable communication\n");
|
|
||||||
bus->core.sync_write = 1;
|
bus->core.sync_write = 1;
|
||||||
bus->allow_bus_reset = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
#define AZX_DCAPS_POSFIX_LPIB (1 << 16) /* Use LPIB as default */
|
#define AZX_DCAPS_POSFIX_LPIB (1 << 16) /* Use LPIB as default */
|
||||||
#define AZX_DCAPS_AMD_WORKAROUND (1 << 17) /* AMD-specific workaround */
|
#define AZX_DCAPS_AMD_WORKAROUND (1 << 17) /* AMD-specific workaround */
|
||||||
#define AZX_DCAPS_NO_64BIT (1 << 18) /* No 64bit address */
|
#define AZX_DCAPS_NO_64BIT (1 << 18) /* No 64bit address */
|
||||||
#define AZX_DCAPS_SYNC_WRITE (1 << 19) /* sync each cmd write */
|
/* 19 unused */
|
||||||
#define AZX_DCAPS_OLD_SSYNC (1 << 20) /* Old SSYNC reg for ICH */
|
#define AZX_DCAPS_OLD_SSYNC (1 << 20) /* Old SSYNC reg for ICH */
|
||||||
#define AZX_DCAPS_NO_ALIGN_BUFSIZE (1 << 21) /* no buffer size alignment */
|
#define AZX_DCAPS_NO_ALIGN_BUFSIZE (1 << 21) /* no buffer size alignment */
|
||||||
/* 22 unused */
|
/* 22 unused */
|
||||||
|
|
|
@ -283,13 +283,12 @@ enum {
|
||||||
|
|
||||||
/* quirks for old Intel chipsets */
|
/* quirks for old Intel chipsets */
|
||||||
#define AZX_DCAPS_INTEL_ICH \
|
#define AZX_DCAPS_INTEL_ICH \
|
||||||
(AZX_DCAPS_OLD_SSYNC | AZX_DCAPS_NO_ALIGN_BUFSIZE |\
|
(AZX_DCAPS_OLD_SSYNC | AZX_DCAPS_NO_ALIGN_BUFSIZE)
|
||||||
AZX_DCAPS_SYNC_WRITE)
|
|
||||||
|
|
||||||
/* quirks for Intel PCH */
|
/* quirks for Intel PCH */
|
||||||
#define AZX_DCAPS_INTEL_PCH_BASE \
|
#define AZX_DCAPS_INTEL_PCH_BASE \
|
||||||
(AZX_DCAPS_NO_ALIGN_BUFSIZE | AZX_DCAPS_COUNT_LPIB_DELAY |\
|
(AZX_DCAPS_NO_ALIGN_BUFSIZE | AZX_DCAPS_COUNT_LPIB_DELAY |\
|
||||||
AZX_DCAPS_SNOOP_TYPE(SCH) | AZX_DCAPS_SYNC_WRITE)
|
AZX_DCAPS_SNOOP_TYPE(SCH))
|
||||||
|
|
||||||
/* PCH up to IVB; no runtime PM; bind with i915 gfx */
|
/* PCH up to IVB; no runtime PM; bind with i915 gfx */
|
||||||
#define AZX_DCAPS_INTEL_PCH_NOPM \
|
#define AZX_DCAPS_INTEL_PCH_NOPM \
|
||||||
|
@ -304,13 +303,13 @@ enum {
|
||||||
#define AZX_DCAPS_INTEL_HASWELL \
|
#define AZX_DCAPS_INTEL_HASWELL \
|
||||||
(/*AZX_DCAPS_ALIGN_BUFSIZE |*/ AZX_DCAPS_COUNT_LPIB_DELAY |\
|
(/*AZX_DCAPS_ALIGN_BUFSIZE |*/ AZX_DCAPS_COUNT_LPIB_DELAY |\
|
||||||
AZX_DCAPS_PM_RUNTIME | AZX_DCAPS_I915_COMPONENT |\
|
AZX_DCAPS_PM_RUNTIME | AZX_DCAPS_I915_COMPONENT |\
|
||||||
AZX_DCAPS_SNOOP_TYPE(SCH) | AZX_DCAPS_SYNC_WRITE)
|
AZX_DCAPS_SNOOP_TYPE(SCH))
|
||||||
|
|
||||||
/* Broadwell HDMI can't use position buffer reliably, force to use LPIB */
|
/* Broadwell HDMI can't use position buffer reliably, force to use LPIB */
|
||||||
#define AZX_DCAPS_INTEL_BROADWELL \
|
#define AZX_DCAPS_INTEL_BROADWELL \
|
||||||
(/*AZX_DCAPS_ALIGN_BUFSIZE |*/ AZX_DCAPS_POSFIX_LPIB |\
|
(/*AZX_DCAPS_ALIGN_BUFSIZE |*/ AZX_DCAPS_POSFIX_LPIB |\
|
||||||
AZX_DCAPS_PM_RUNTIME | AZX_DCAPS_I915_COMPONENT |\
|
AZX_DCAPS_PM_RUNTIME | AZX_DCAPS_I915_COMPONENT |\
|
||||||
AZX_DCAPS_SNOOP_TYPE(SCH) | AZX_DCAPS_SYNC_WRITE)
|
AZX_DCAPS_SNOOP_TYPE(SCH))
|
||||||
|
|
||||||
#define AZX_DCAPS_INTEL_BAYTRAIL \
|
#define AZX_DCAPS_INTEL_BAYTRAIL \
|
||||||
(AZX_DCAPS_INTEL_PCH_BASE | AZX_DCAPS_I915_COMPONENT)
|
(AZX_DCAPS_INTEL_PCH_BASE | AZX_DCAPS_I915_COMPONENT)
|
||||||
|
@ -321,19 +320,18 @@ enum {
|
||||||
|
|
||||||
#define AZX_DCAPS_INTEL_SKYLAKE \
|
#define AZX_DCAPS_INTEL_SKYLAKE \
|
||||||
(AZX_DCAPS_INTEL_PCH_BASE | AZX_DCAPS_PM_RUNTIME |\
|
(AZX_DCAPS_INTEL_PCH_BASE | AZX_DCAPS_PM_RUNTIME |\
|
||||||
AZX_DCAPS_SYNC_WRITE |\
|
|
||||||
AZX_DCAPS_SEPARATE_STREAM_TAG | AZX_DCAPS_I915_COMPONENT)
|
AZX_DCAPS_SEPARATE_STREAM_TAG | AZX_DCAPS_I915_COMPONENT)
|
||||||
|
|
||||||
#define AZX_DCAPS_INTEL_BROXTON AZX_DCAPS_INTEL_SKYLAKE
|
#define AZX_DCAPS_INTEL_BROXTON AZX_DCAPS_INTEL_SKYLAKE
|
||||||
|
|
||||||
/* quirks for ATI SB / AMD Hudson */
|
/* quirks for ATI SB / AMD Hudson */
|
||||||
#define AZX_DCAPS_PRESET_ATI_SB \
|
#define AZX_DCAPS_PRESET_ATI_SB \
|
||||||
(AZX_DCAPS_NO_TCSEL | AZX_DCAPS_SYNC_WRITE | AZX_DCAPS_POSFIX_LPIB |\
|
(AZX_DCAPS_NO_TCSEL | AZX_DCAPS_POSFIX_LPIB |\
|
||||||
AZX_DCAPS_SNOOP_TYPE(ATI))
|
AZX_DCAPS_SNOOP_TYPE(ATI))
|
||||||
|
|
||||||
/* quirks for ATI/AMD HDMI */
|
/* quirks for ATI/AMD HDMI */
|
||||||
#define AZX_DCAPS_PRESET_ATI_HDMI \
|
#define AZX_DCAPS_PRESET_ATI_HDMI \
|
||||||
(AZX_DCAPS_NO_TCSEL | AZX_DCAPS_SYNC_WRITE | AZX_DCAPS_POSFIX_LPIB|\
|
(AZX_DCAPS_NO_TCSEL | AZX_DCAPS_POSFIX_LPIB|\
|
||||||
AZX_DCAPS_NO_MSI64)
|
AZX_DCAPS_NO_MSI64)
|
||||||
|
|
||||||
/* quirks for ATI HDMI with snoop off */
|
/* quirks for ATI HDMI with snoop off */
|
||||||
|
@ -342,7 +340,7 @@ enum {
|
||||||
|
|
||||||
/* quirks for AMD SB */
|
/* quirks for AMD SB */
|
||||||
#define AZX_DCAPS_PRESET_AMD_SB \
|
#define AZX_DCAPS_PRESET_AMD_SB \
|
||||||
(AZX_DCAPS_NO_TCSEL | AZX_DCAPS_SYNC_WRITE | AZX_DCAPS_AMD_WORKAROUND |\
|
(AZX_DCAPS_NO_TCSEL | AZX_DCAPS_AMD_WORKAROUND |\
|
||||||
AZX_DCAPS_SNOOP_TYPE(ATI) | AZX_DCAPS_PM_RUNTIME)
|
AZX_DCAPS_SNOOP_TYPE(ATI) | AZX_DCAPS_PM_RUNTIME)
|
||||||
|
|
||||||
/* quirks for Nvidia */
|
/* quirks for Nvidia */
|
||||||
|
|
Loading…
Add table
Reference in a new issue