diff options
author | Peter Ujfalusi <peter.ujfalusi@linux.intel.com> | 2024-04-09 11:38:08 +0300 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2024-04-18 09:38:54 +0300 |
commit | a1de26c0b74f060ee29f35a6d71765c56c925f5e (patch) | |
tree | 41aa6e8b5009e3d2bcc67804a14a8bd47fb87264 | |
parent | 5738cf65e892904d27f91ec974c47669c5f5eab4 (diff) | |
download | linux-a1de26c0b74f060ee29f35a6d71765c56c925f5e.tar.xz |
ALSA: hda: Introduce flags to force commands via PIO instead of CORB
Add AZX_DCAPS_PIO_COMMANDS quirk (bit 31) and use_pio_for_commands flag to
be able to select PIO mode as alternative for CORB based command sending
while retaining the RIRB functionality to receive unsolicited responses.
This mode differs from the azx single_cmd mode when RIRB is disabled.
The mixed mode is needed on Lunar Lake family because it is recommended to
use Immediate Command Response (PIO mode) instead of CORB for HDA commands.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Liam Girdwood <liam.r.girdwood@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Message-ID: <20240409083812.14001-2-peter.ujfalusi@linux.intel.com>
-rw-r--r-- | include/sound/hdaudio.h | 1 | ||||
-rw-r--r-- | sound/pci/hda/hda_controller.h | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/include/sound/hdaudio.h b/include/sound/hdaudio.h index a73d7f34f4e5..85d2c3d00a27 100644 --- a/include/sound/hdaudio.h +++ b/include/sound/hdaudio.h @@ -351,6 +351,7 @@ struct hdac_bus { bool needs_damn_long_delay:1; bool not_use_interrupts:1; /* prohibiting the RIRB IRQ */ bool access_sdnctl_in_dword:1; /* accessing the sdnctl register by dword */ + bool use_pio_for_commands:1; /* Use PIO instead of CORB for commands */ int poll_count; diff --git a/sound/pci/hda/hda_controller.h b/sound/pci/hda/hda_controller.h index 8556031bcd68..c2d0109866e6 100644 --- a/sound/pci/hda/hda_controller.h +++ b/sound/pci/hda/hda_controller.h @@ -45,6 +45,7 @@ #define AZX_DCAPS_CORBRP_SELF_CLEAR (1 << 28) /* CORBRP clears itself after reset */ #define AZX_DCAPS_NO_MSI64 (1 << 29) /* Stick to 32-bit MSIs */ #define AZX_DCAPS_SEPARATE_STREAM_TAG (1 << 30) /* capture and playback use separate stream tag */ +#define AZX_DCAPS_PIO_COMMANDS (1 << 31) /* Use PIO instead of CORB for commands */ enum { AZX_SNOOP_TYPE_NONE, |