~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/sound/hd-audio/dp-mst.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/sound/hd-audio/dp-mst.rst (Version linux-6.12-rc7) and /Documentation/sound/hd-audio/dp-mst.rst (Version linux-6.3.13)


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

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php