1 ======================= 2 HD-Audio DP-MST Support 3 ======================= 4 5 To support DP MST audio, HD Audio hdmi codec d 6 and dynamic pcm assignment. 7 8 Virtual pin is an extension of per_pin. The mo 9 from legacy is that DP MST introduces device e 10 several device entries. Each device entry beha 11 12 As each pin may contain several device entries 13 several pins, if we use one pcm per per_pin, t 14 The new solution is to create a few PCMs and t 15 per_pin. Driver uses spec->dyn_pcm_assign flag 16 the new solution. 17 18 PCM 19 === 20 To be added 21 22 Pin Initialization 23 ================== 24 Each pin may have several device entries (virt 25 the device entries number is dynamically chang 26 it is in DP MST mode, and the device entries n 27 device entries number is 1. 28 29 To simplify the implementation, all the device 30 when bootup no matter whether it is in DP MST 31 32 Connection list 33 =============== 34 DP MST reuses connection list code. The code c 35 device entries on the same pin have the same c 36 37 This means DP MST gets the device entry connec 38 device entry setting. 39 40 Jack 41 ==== 42 43 Presume: 44 - MST must be dyn_pcm_assign, and it is acomp 45 - NON-MST may or may not be dyn_pcm_assign, i 46 47 So there are the following scenarios: 48 a. MST (&& dyn_pcm_assign && acomp) 49 b. NON-MST && dyn_pcm_assign && acomp 50 c. NON-MST && !dyn_pcm_assign && !acomp 51 52 Below discussion will ignore MST and NON-MST d 53 impact on jack handling too much. 54 55 Driver uses struct hdmi_pcm pcm[] array in hdm 56 a member of hdmi_pcm. Each pin has one struct 57 58 For !dyn_pcm_assign, per_pin->pcm will assigne 59 60 For dyn_pcm_assign, per_pin->pcm will assigned 61 when monitor is hotplugged. 62 63 64 Build Jack 65 ---------- 66 67 - dyn_pcm_assign 68 69 Will not use hda_jack but use snd_jack in sp 70 71 - !dyn_pcm_assign 72 73 Use hda_jack and assign spec->pcm_rec[pcm_id 74 75 76 Unsolicited Event Enabling 77 -------------------------- 78 Enable unsolicited event if !acomp. 79 80 81 Monitor Hotplug Event Handling 82 ------------------------------ 83 - acomp 84 85 pin_eld_notify() -> check_presence_and_repor 86 sync_eld_via_acomp(). 87 88 Use directly snd_jack_report() on spec->pcm_ 89 both dyn_pcm_assign and !dyn_pcm_assign 90 91 - !acomp 92 93 hdmi_unsol_event() -> hdmi_intrinsic_event() 94 hdmi_present_sense() -> hdmi_prepsent_sense_ 95 96 Use directly snd_jack_report() on spec->pcm_ 97 Use hda_jack mechanism to handle jack events 98 99 100 Others to be added later 101 ========================
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.