On Fri, 15 Nov 2019 10:52:30 +0100, Nikhil Mahale wrote:
On 11/14/19 6:44 PM, Takashi Iwai wrote:
On Thu, 14 Nov 2019 12:47:36 +0100, Nikhil Mahale wrote:
On 11/14/19 4:27 PM, Takashi Iwai wrote:
On Thu, 14 Nov 2019 04:37:02 +0100, Nikhil Mahale wrote:
Document change notification HDA040-A for the Intel High Definition Audio 1.0a specification introduces a Device Select verb for Digital Display Pin Widgets that are multi-stream capable. This verb selects a Device Entry that is used by subsequent Pin Widget verbs, including the Get Connection List Entry verb.
This patch queries the current Device Select value, associates it with the connection list, and updates the connection list management code to consider dev_id along with nid.
I don't get why this is needed. This is the list that is added only from snd_hda_override_conn_list(), and you don't change that call pattern, so dev_id is always zero.
In follow-on patch "ALSA: hda - Add DP-MST support for non-acomp codecs", hdmi_read_pin_conn() calls into snd_hda_set_dev_select() before running into code path -
snd_hda_get_connections() |-> snd_hda_get_conn_list() |-> read_and_add_raw_conns() |-> snd_hda_override_conn_list() |-> add_conn_list()
If I understand spec correctly, conn_list need to read/write/track along with device entry set into AC_VERB_SET_DEVICE_SEL verb, right?
AFAIK, the device connection list itself is same no matter which device entry is. The pin widget may choose the route per device entry, but the available routes should be same.
Section 7.3.3.42 of https://www.intel.com/content/dam/www/public/us/en/documents/specification-u... says that 'Get Connection List Entry' control should be per-device!
Hrm, right. It's a bit concern that this may lead to the unlimited number of data, though.
Since the necessity is only for HDMI codec, if that's the only place we need the connection list, the call there can be replaced with snd_hda_get_raw_connections() so that the result won't be cached in HD-audio core side.
Takashi