sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget+/translations/zh_CN/gpu/intel-display/audiomodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/zh_TW/gpu/intel-display/audiomodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/it_IT/gpu/intel-display/audiomodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/ja_JP/gpu/intel-display/audiomodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/ko_KR/gpu/intel-display/audiomodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/pt_BR/gpu/intel-display/audiomodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/sp_SP/gpu/intel-display/audiomodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(hSPDX-License-Identifier: MITh]hSPDX-License-Identifier: MIT}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhE/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio.rsthKubh)}(h#Copyright © 2026 Intel Corporationh]h#Copyright © 2026 Intel Corporation}hhsbah}(h]h ]h"]h$]h&]hhuh1hhhhhhhhKubhsection)}(hhh](htitle)}(hHigh Definition Audioh]hHigh Definition Audio}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hXAThe graphics and audio drivers together support High Definition Audio over HDMI and Display Port. The audio programming sequences are divided into audio codec and controller enable and disable sequences. The graphics driver handles the audio codec sequences, while the audio driver handles the audio controller sequences.h]hXAThe graphics and audio drivers together support High Definition Audio over HDMI and Display Port. The audio programming sequences are divided into audio codec and controller enable and disable sequences. The graphics driver handles the audio codec sequences, while the audio driver handles the audio controller sequences.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhq/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:7: ./drivers/gpu/drm/i915/display/intel_audio.chK,hhhhubh)}(hXThe disable sequences must be performed before disabling the transcoder or port. The enable sequences may only be performed after enabling the transcoder and port, and after completed link training. Therefore the audio enable/disable sequences are part of the modeset sequence.h]hXThe disable sequences must be performed before disabling the transcoder or port. The enable sequences may only be performed after enabling the transcoder and port, and after completed link training. Therefore the audio enable/disable sequences are part of the modeset sequence.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhq/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:7: ./drivers/gpu/drm/i915/display/intel_audio.chK2hhhhubh)}(hX~The codec and controller sequences could be done either parallel or serial, but generally the ELDV/PD change in the codec sequence indicates to the audio driver that the controller sequence should start. Indeed, most of the co-operation between the graphics and audio drivers is handled via audio related registers. (The notable exception is the power management, not covered here.)h]hX~The codec and controller sequences could be done either parallel or serial, but generally the ELDV/PD change in the codec sequence indicates to the audio driver that the controller sequence should start. Indeed, most of the co-operation between the graphics and audio drivers is handled via audio related registers. (The notable exception is the power management, not covered here.)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhq/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:7: ./drivers/gpu/drm/i915/display/intel_audio.chK7hhhhubh)}(hX9The struct :c:type:`i915_audio_component` is used to interact between the graphics and audio drivers. The struct :c:type:`i915_audio_component_ops` **ops** in it is defined in graphics driver and called in audio driver. The struct :c:type:`i915_audio_component_audio_ops` **audio_ops** is called from i915 driver.h](h The struct }(hjhhhNhNubh)}(h:c:type:`i915_audio_component`h]hliteral)}(hj$h]hi915_audio_component}(hj(hhhNhNubah}(h]h ](xrefcc-typeeh"]h$]h&]uh1j&hj"ubah}(h]h ]h"]h$]h&]refdocgpu/intel-display/audio refdomainj3reftypetype refexplicitrefwarn reftargeti915_audio_componentuh1hhq/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:7: ./drivers/gpu/drm/i915/display/intel_audio.chK>hjubhH is used to interact between the graphics and audio drivers. The struct }(hjhhhNhNubh)}(h":c:type:`i915_audio_component_ops`h]j')}(hjNh]hi915_audio_component_ops}(hjPhhhNhNubah}(h]h ](j2j3c-typeeh"]h$]h&]uh1j&hjLubah}(h]h ]h"]h$]h&]refdocj? refdomainj3reftypetype refexplicitrefwarnjEi915_audio_component_opsuh1hhjGhK>hjubh }(hjhhhNhNubhstrong)}(h**ops**h]hops}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1johjubhL in it is defined in graphics driver and called in audio driver. The struct }(hjhhhNhNubh)}(h(:c:type:`i915_audio_component_audio_ops`h]j')}(hjh]hi915_audio_component_audio_ops}(hjhhhNhNubah}(h]h ](j2j3c-typeeh"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]refdocj? refdomainj3reftypetype refexplicitrefwarnjEi915_audio_component_audio_opsuh1hhjGhK>hjubh }hjsbjp)}(h **audio_ops**h]h audio_ops}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1johjubh is called from i915 driver.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjGhK>hhhhubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](single%intel_audio_codec_enable (C function)c.intel_audio_codec_enablehNtauh1jhhhhhNhNubhdesc)}(hhh](hdesc_signature)}(hvoid intel_audio_codec_enable (struct intel_encoder *encoder, const struct intel_crtc_state *crtc_state, const struct drm_connector_state *conn_state)h]hdesc_signature_line)}(hvoid intel_audio_codec_enable(struct intel_encoder *encoder, const struct intel_crtc_state *crtc_state, const struct drm_connector_state *conn_state)h](hdesc_sig_keyword_type)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]ktah"]h$]h&]uh1jhjhhhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1jhjhhhjhMubh desc_name)}(hintel_audio_codec_enableh]h desc_sig_name)}(hintel_audio_codec_enableh]hintel_audio_codec_enable}(hj hhhNhNubah}(h]h ]nah"]h$]h&]uh1j hjubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jhjhhhjhMubhdesc_parameterlist)}(hx(struct intel_encoder *encoder, const struct intel_crtc_state *crtc_state, const struct drm_connector_state *conn_state)h](hdesc_parameter)}(hstruct intel_encoder *encoderh](hdesc_sig_keyword)}(hstructh]hstruct}(hj0hhhNhNubah}(h]h ]kah"]h$]h&]uh1j.hj*ubj)}(h h]h }(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubh)}(hhh]j )}(h intel_encoderh]h intel_encoder}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjMubah}(h]h ]h"]h$]h&] refdomainj3reftype identifier reftargetjRmodnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]jk ASTIdentifier)}jfj sbc.intel_audio_codec_enableasbuh1hhj*ubj)}(h h]h }(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhj*ubj )}(hencoderh]hencoder}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj*ubeh}(h]h ]h"]h$]h&]noemphhhuh1j(hj$ubj))}(h)const struct intel_crtc_state *crtc_stateh](j/)}(hconsth]hconst}(hjhhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj/)}(hj2h]hstruct}(hjhhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j )}(hintel_crtc_stateh]hintel_crtc_state}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainj3reftypejf reftargetjmodnameN classnameNjjjm)}jp]jtc.intel_audio_codec_enableasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(h crtc_stateh]h crtc_state}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j(hj$ubj))}(h,const struct drm_connector_state *conn_stateh](j/)}(hjh]hconst}(hj<hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj8ubj)}(h h]h }(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubj/)}(hj2h]hstruct}(hjWhhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj8ubj)}(h h]h }(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubh)}(hhh]j )}(hdrm_connector_stateh]hdrm_connector_state}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjrubah}(h]h ]h"]h$]h&] refdomainj3reftypejf reftargetjwmodnameN classnameNjjjm)}jp]jtc.intel_audio_codec_enableasbuh1hhj8ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubj )}(h conn_stateh]h conn_state}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj8ubeh}(h]h ]h"]h$]h&]noemphhhuh1j(hj$ubeh}(h]h ]h"]h$]h&]hhuh1j"hjhhhjhMubeh}(h]h ]h"]h$]h&]hhƌ add_permalinkuh1jsphinx_line_type declaratorhjhhhjhMubah}(h]jah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jhjhMhjhhubh desc_content)}(hhh]h)}(h#Enable the audio codec for HD audioh]h#Enable the audio codec for HD audio}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](j3functioneh"]h$]h&]domainj3objtypejdesctypejnoindex noindexentrynocontentsentryuh1jhhhhhNhNubh container)}(hX**Parameters** ``struct intel_encoder *encoder`` encoder on which to enable audio ``const struct intel_crtc_state *crtc_state`` pointer to the current crtc state. ``const struct drm_connector_state *conn_state`` pointer to the current connector state. **Description** The enable sequences may only be performed after enabling the transcoder and port, and after completed link training.h](h)}(h**Parameters**h]jp)}(hj h]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1johj ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMhjubhdefinition_list)}(hhh](hdefinition_list_item)}(hC``struct intel_encoder *encoder`` encoder on which to enable audio h](hterm)}(h!``struct intel_encoder *encoder``h]j')}(hj1h]hstruct intel_encoder *encoder}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj/ubah}(h]h ]h"]h$]h&]uh1j-hr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMhj)ubh definition)}(hhh]h)}(h encoder on which to enable audioh]h encoder on which to enable audio}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFhMhjIubah}(h]h ]h"]h$]h&]uh1jGhj)ubeh}(h]h ]h"]h$]h&]uh1j'hjFhMhj$ubj()}(hQ``const struct intel_crtc_state *crtc_state`` pointer to the current crtc state. h](j.)}(h-``const struct intel_crtc_state *crtc_state``h]j')}(hjlh]h)const struct intel_crtc_state *crtc_state}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjjubah}(h]h ]h"]h$]h&]uh1j-hr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMhjfubjH)}(hhh]h)}(h"pointer to the current crtc state.h]h"pointer to the current crtc state.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jGhjfubeh}(h]h ]h"]h$]h&]uh1j'hjhMhj$ubj()}(hY``const struct drm_connector_state *conn_state`` pointer to the current connector state. h](j.)}(h0``const struct drm_connector_state *conn_state``h]j')}(hjh]h,const struct drm_connector_state *conn_state}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1j-hr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMhjubjH)}(hhh]h)}(h'pointer to the current connector state.h]h'pointer to the current connector state.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jGhjubeh}(h]h ]h"]h$]h&]uh1j'hjhMhj$ubeh}(h]h ]h"]h$]h&]uh1j"hjubh)}(h**Description**h]jp)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1johjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMhjubh)}(huThe enable sequences may only be performed after enabling the transcoder and port, and after completed link training.h]huThe enable sequences may only be performed after enabling the transcoder and port, and after completed link training.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j&intel_audio_codec_disable (C function)c.intel_audio_codec_disablehNtauh1jhhhhhNhNubj)}(hhh](j)}(hvoid intel_audio_codec_disable (struct intel_encoder *encoder, const struct intel_crtc_state *old_crtc_state, const struct drm_connector_state *old_conn_state)h]j)}(hvoid intel_audio_codec_disable(struct intel_encoder *encoder, const struct intel_crtc_state *old_crtc_state, const struct drm_connector_state *old_conn_state)h](j)}(hvoidh]hvoid}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!hhhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMubj)}(h h]h }(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!hhhj3hMubj)}(hintel_audio_codec_disableh]j )}(hintel_audio_codec_disableh]hintel_audio_codec_disable}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjBubah}(h]h ](jjeh"]h$]h&]hhuh1jhj!hhhj3hMubj#)}(h(struct intel_encoder *encoder, const struct intel_crtc_state *old_crtc_state, const struct drm_connector_state *old_conn_state)h](j))}(hstruct intel_encoder *encoderh](j/)}(hj2h]hstruct}(hjbhhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj^ubj)}(h h]h }(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^ubh)}(hhh]j )}(h intel_encoderh]h intel_encoder}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj}ubah}(h]h ]h"]h$]h&] refdomainj3reftypejf reftargetjmodnameN classnameNjjjm)}jp]js)}jfjHsbc.intel_audio_codec_disableasbuh1hhj^ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^ubj )}(hencoderh]hencoder}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj^ubeh}(h]h ]h"]h$]h&]noemphhhuh1j(hjZubj))}(h-const struct intel_crtc_state *old_crtc_stateh](j/)}(hjh]hconst}(hjhhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj/)}(hj2h]hstruct}(hjhhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j )}(hintel_crtc_stateh]hintel_crtc_state}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&] refdomainj3reftypejf reftargetjmodnameN classnameNjjjm)}jp]jc.intel_audio_codec_disableasbuh1hhjubj)}(h h]h }(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(hold_crtc_stateh]hold_crtc_state}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j(hjZubj))}(h0const struct drm_connector_state *old_conn_stateh](j/)}(hjh]hconst}(hj_hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj[ubj)}(h h]h }(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubj/)}(hj2h]hstruct}(hjzhhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj[ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubh)}(hhh]j )}(hdrm_connector_stateh]hdrm_connector_state}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainj3reftypejf reftargetjmodnameN classnameNjjjm)}jp]jc.intel_audio_codec_disableasbuh1hhj[ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubj )}(hold_conn_stateh]hold_conn_state}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj[ubeh}(h]h ]h"]h$]h&]noemphhhuh1j(hjZubeh}(h]h ]h"]h$]h&]hhuh1j"hj!hhhj3hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhj3hMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhj3hMhjhhubj)}(hhh]h)}(h$Disable the audio codec for HD audioh]h$Disable the audio codec for HD audio}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj3hMubeh}(h]h ](j3functioneh"]h$]h&]jj3jjjjjjjuh1jhhhhhNhNubj)}(hXh**Parameters** ``struct intel_encoder *encoder`` encoder on which to disable audio ``const struct intel_crtc_state *old_crtc_state`` pointer to the old crtc state. ``const struct drm_connector_state *old_conn_state`` pointer to the old connector state. **Description** The disable sequences must be performed before disabling the transcoder or port.h](h)}(h**Parameters**h]jp)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1johjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMhjubj#)}(hhh](j()}(hD``struct intel_encoder *encoder`` encoder on which to disable audio h](j.)}(h!``struct intel_encoder *encoder``h]j')}(hj<h]hstruct intel_encoder *encoder}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj:ubah}(h]h ]h"]h$]h&]uh1j-hr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMhj6ubjH)}(hhh]h)}(h!encoder on which to disable audioh]h!encoder on which to disable audio}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQhMhjRubah}(h]h ]h"]h$]h&]uh1jGhj6ubeh}(h]h ]h"]h$]h&]uh1j'hjQhMhj3ubj()}(hQ``const struct intel_crtc_state *old_crtc_state`` pointer to the old crtc state. h](j.)}(h1``const struct intel_crtc_state *old_crtc_state``h]j')}(hjuh]h-const struct intel_crtc_state *old_crtc_state}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjsubah}(h]h ]h"]h$]h&]uh1j-hr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMhjoubjH)}(hhh]h)}(hpointer to the old crtc state.h]hpointer to the old crtc state.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jGhjoubeh}(h]h ]h"]h$]h&]uh1j'hjhMhj3ubj()}(hY``const struct drm_connector_state *old_conn_state`` pointer to the old connector state. h](j.)}(h4``const struct drm_connector_state *old_conn_state``h]j')}(hjh]h0const struct drm_connector_state *old_conn_state}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1j-hr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMhjubjH)}(hhh]h)}(h#pointer to the old connector state.h]h#pointer to the old connector state.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jGhjubeh}(h]h ]h"]h$]h&]uh1j'hjhMhj3ubeh}(h]h ]h"]h$]h&]uh1j"hjubh)}(h**Description**h]jp)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1johjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMhjubh)}(hPThe disable sequences must be performed before disabling the transcoder or port.h]hPThe disable sequences must be performed before disabling the transcoder or port.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#intel_audio_hooks_init (C function)c.intel_audio_hooks_inithNtauh1jhhhhhNhNubj)}(hhh](j)}(h;void intel_audio_hooks_init (struct intel_display *display)h]j)}(h:void intel_audio_hooks_init(struct intel_display *display)h](j)}(hvoidh]hvoid}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*hhhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMvubj)}(h h]h }(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*hhhj<hMvubj)}(hintel_audio_hooks_inith]j )}(hintel_audio_hooks_inith]hintel_audio_hooks_init}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjKubah}(h]h ](jjeh"]h$]h&]hhuh1jhj*hhhj<hMvubj#)}(h(struct intel_display *display)h]j))}(hstruct intel_display *displayh](j/)}(hj2h]hstruct}(hjkhhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjgubj)}(h h]h }(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubh)}(hhh]j )}(h intel_displayh]h intel_display}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainj3reftypejf reftargetjmodnameN classnameNjjjm)}jp]js)}jfjQsbc.intel_audio_hooks_initasbuh1hhjgubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubj )}(hdisplayh]hdisplay}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjgubeh}(h]h ]h"]h$]h&]noemphhhuh1j(hjcubah}(h]h ]h"]h$]h&]hhuh1j"hj*hhhj<hMvubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj&hhhj<hMvubah}(h]j!ah ](jjeh"]h$]h&]jj)jhuh1jhj<hMvhj#hhubj)}(hhh]h)}(h Set up chip specific audio hooksh]h Set up chip specific audio hooks}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMvhjhhubah}(h]h ]h"]h$]h&]uh1jhj#hhhj<hMvubeh}(h]h ](j3functioneh"]h$]h&]jj3jj jj jjjuh1jhhhhhNhNubj)}(hB**Parameters** ``struct intel_display *display`` display deviceh](h)}(h**Parameters**h]jp)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1johj ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMzhj ubj#)}(hhh]j()}(h0``struct intel_display *display`` display deviceh](j.)}(h!``struct intel_display *display``h]j')}(hj/ h]hstruct intel_display *display}(hj1 hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj- ubah}(h]h ]h"]h$]h&]uh1j-hr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chM|hj) ubjH)}(hhh]h)}(hdisplay deviceh]hdisplay device}(hjH hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMwhjE ubah}(h]h ]h"]h$]h&]uh1jGhj) ubeh}(h]h ]h"]h$]h&]uh1j'hjD hM|hj& ubah}(h]h ]h"]h$]h&]uh1j"hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'intel_audio_component_init (C function)c.intel_audio_component_inithNtauh1jhhhhhNhNubj)}(hhh](j)}(h?void intel_audio_component_init (struct intel_display *display)h]j)}(h>void intel_audio_component_init(struct intel_display *display)h](j)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chM ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hM ubj)}(hintel_audio_component_inith]j )}(hintel_audio_component_inith]hintel_audio_component_init}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhhj hM ubj#)}(h(struct intel_display *display)h]j))}(hstruct intel_display *displayh](j/)}(hj2h]hstruct}(hj hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j )}(h intel_displayh]h intel_display}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&] refdomainj3reftypejf reftargetj modnameN classnameNjjjm)}jp]js)}jfj sbc.intel_audio_component_initasbuh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj )}(hdisplayh]hdisplay}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j(hj ubah}(h]h ]h"]h$]h&]hhuh1j"hj hhhj hM ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj hhhj hM ubah}(h]j| ah ](jjeh"]h$]h&]jj)jhuh1jhj hM hj~ hhubj)}(hhh]h)}(h+initialize and register the audio componenth]h+initialize and register the audio component}(hjI hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chM hjF hhubah}(h]h ]h"]h$]h&]uh1jhj~ hhhj hM ubeh}(h]h ](j3functioneh"]h$]h&]jj3jja jja jjjuh1jhhhhhNhNubj)}(hX**Parameters** ``struct intel_display *display`` display device **Description** This will register with the component framework a child component which will bind dynamically to the snd_hda_intel driver's corresponding master component when the latter is registered. During binding the child initializes an instance of struct i915_audio_component which it receives from the master. The master can then start to use the interface defined by this struct. Each side can break the binding at any point by deregistering its own component after which each side's component unbind callback is called. We ignore any error during registration and continue with reduced functionality (i.e. without HDMI audio).h](h)}(h**Parameters**h]jp)}(hjk h]h Parameters}(hjm hhhNhNubah}(h]h ]h"]h$]h&]uh1johji ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chM$hje ubj#)}(hhh]j()}(h1``struct intel_display *display`` display device h](j.)}(h!``struct intel_display *display``h]j')}(hj h]hstruct intel_display *display}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj ubah}(h]h ]h"]h$]h&]uh1j-hr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chM!hj ubjH)}(hhh]h)}(hdisplay deviceh]hdisplay device}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hM!hj ubah}(h]h ]h"]h$]h&]uh1jGhj ubeh}(h]h ]h"]h$]h&]uh1j'hj hM!hj ubah}(h]h ]h"]h$]h&]uh1j"hje ubh)}(h**Description**h]jp)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1johj ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chM#hje ubh)}(hXThis will register with the component framework a child component which will bind dynamically to the snd_hda_intel driver's corresponding master component when the latter is registered. During binding the child initializes an instance of struct i915_audio_component which it receives from the master. The master can then start to use the interface defined by this struct. Each side can break the binding at any point by deregistering its own component after which each side's component unbind callback is called.h]hXThis will register with the component framework a child component which will bind dynamically to the snd_hda_intel driver’s corresponding master component when the latter is registered. During binding the child initializes an instance of struct i915_audio_component which it receives from the master. The master can then start to use the interface defined by this struct. Each side can break the binding at any point by deregistering its own component after which each side’s component unbind callback is called.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chM"hje ubh)}(hjWe ignore any error during registration and continue with reduced functionality (i.e. without HDMI audio).h]hjWe ignore any error during registration and continue with reduced functionality (i.e. without HDMI audio).}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chM+hje ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j*intel_audio_component_cleanup (C function)c.intel_audio_component_cleanuphNtauh1jhhhhhNhNubj)}(hhh](j)}(hBvoid intel_audio_component_cleanup (struct intel_display *display)h]j)}(hAvoid intel_audio_component_cleanup(struct intel_display *display)h](j)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chM]ubj)}(h h]h }(hj( hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj' hM]ubj)}(hintel_audio_component_cleanuph]j )}(hintel_audio_component_cleanuph]hintel_audio_component_cleanup}(hj: hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj6 ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhhj' hM]ubj#)}(h(struct intel_display *display)h]j))}(hstruct intel_display *displayh](j/)}(hj2h]hstruct}(hjV hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjR ubj)}(h h]h }(hjc hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjR ubh)}(hhh]j )}(h intel_displayh]h intel_display}(hjt hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjq ubah}(h]h ]h"]h$]h&] refdomainj3reftypejf reftargetjv modnameN classnameNjjjm)}jp]js)}jfj< sbc.intel_audio_component_cleanupasbuh1hhjR ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjR ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjR ubj )}(hdisplayh]hdisplay}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjR ubeh}(h]h ]h"]h$]h&]noemphhhuh1j(hjN ubah}(h]h ]h"]h$]h&]hhuh1j"hj hhhj' hM]ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj hhhj' hM]ubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jhj' hM]hj hhubj)}(hhh]h)}(hderegister the audio componenth]hderegister the audio component}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chM]hj hhubah}(h]h ]h"]h$]h&]uh1jhj hhhj' hM]ubeh}(h]h ](j3functioneh"]h$]h&]jj3jj jj jjjuh1jhhhhhNhNubj)}(h**Parameters** ``struct intel_display *display`` display device **Description** Deregisters the audio component, breaking any existing binding to the corresponding snd_hda_intel driver's master component.h](h)}(h**Parameters**h]jp)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1johj ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMahj ubj#)}(hhh]j()}(h1``struct intel_display *display`` display device h](j.)}(h!``struct intel_display *display``h]j')}(hj h]hstruct intel_display *display}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj ubah}(h]h ]h"]h$]h&]uh1j-hr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chM^hj ubjH)}(hhh]h)}(hdisplay deviceh]hdisplay device}(hj3 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/ hM^hj0 ubah}(h]h ]h"]h$]h&]uh1jGhj ubeh}(h]h ]h"]h$]h&]uh1j'hj/ hM^hj ubah}(h]h ]h"]h$]h&]uh1j"hj ubh)}(h**Description**h]jp)}(hjU h]h Description}(hjW hhhNhNubah}(h]h ]h"]h$]h&]uh1johjS ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chM`hj ubh)}(h|Deregisters the audio component, breaking any existing binding to the corresponding snd_hda_intel driver's master component.h]h~Deregisters the audio component, breaking any existing binding to the corresponding snd_hda_intel driver’s master component.}(hjk hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chM_hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jintel_audio_init (C function)c.intel_audio_inithNtauh1jhhhhhNhNubj)}(hhh](j)}(h5void intel_audio_init (struct intel_display *display)h]j)}(h4void intel_audio_init(struct intel_display *display)h](j)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMmubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hMmubj)}(hintel_audio_inith]j )}(hintel_audio_inith]hintel_audio_init}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhhj hMmubj#)}(h(struct intel_display *display)h]j))}(hstruct intel_display *displayh](j/)}(hj2h]hstruct}(hj hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j )}(h intel_displayh]h intel_display}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&] refdomainj3reftypejf reftargetj modnameN classnameNjjjm)}jp]js)}jfj sbc.intel_audio_initasbuh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hj# hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj )}(hdisplayh]hdisplay}(hj0 hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j(hj ubah}(h]h ]h"]h$]h&]hhuh1j"hj hhhj hMmubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj hhhj hMmubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jhj hMmhj hhubj)}(hhh]h)}(hVInitialize the audio driver either using component framework or using lpe audio bridgeh]hVInitialize the audio driver either using component framework or using lpe audio bridge}(hjZ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMmhjW hhubah}(h]h ]h"]h$]h&]uh1jhj hhhj hMmubeh}(h]h ](j3functioneh"]h$]h&]jj3jjr jjr jjjuh1jhhhhhNhNubj)}(hB**Parameters** ``struct intel_display *display`` display deviceh](h)}(h**Parameters**h]jp)}(hj| h]h Parameters}(hj~ hhhNhNubah}(h]h ]h"]h$]h&]uh1johjz ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMqhjv ubj#)}(hhh]j()}(h0``struct intel_display *display`` display deviceh](j.)}(h!``struct intel_display *display``h]j')}(hj h]hstruct intel_display *display}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj ubah}(h]h ]h"]h$]h&]uh1j-hr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMshj ubjH)}(hhh]h)}(hdisplay deviceh]hdisplay device}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMohj ubah}(h]h ]h"]h$]h&]uh1jGhj ubeh}(h]h ]h"]h$]h&]uh1j'hj hMshj ubah}(h]h ]h"]h$]h&]uh1j"hjv ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jintel_audio_deinit (C function)c.intel_audio_deinithNtauh1jhhhhhNhNubj)}(hhh](j)}(h7void intel_audio_deinit (struct intel_display *display)h]j)}(h6void intel_audio_deinit(struct intel_display *display)h](j)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhjhMubj)}(hintel_audio_deinith]j )}(hintel_audio_deinith]hintel_audio_deinit}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhhjhMubj#)}(h(struct intel_display *display)h]j))}(hstruct intel_display *displayh](j/)}(hj2h]hstruct}(hj2hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj.ubj)}(h h]h }(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubh)}(hhh]j )}(h intel_displayh]h intel_display}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjMubah}(h]h ]h"]h$]h&] refdomainj3reftypejf reftargetjRmodnameN classnameNjjjm)}jp]js)}jfjsbc.intel_audio_deinitasbuh1hhj.ubj)}(h h]h }(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubj)}(hjh]h*}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubj )}(hdisplayh]hdisplay}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj.ubeh}(h]h ]h"]h$]h&]noemphhhuh1j(hj*ubah}(h]h ]h"]h$]h&]hhuh1j"hj hhhjhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj hhhjhMubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jhjhMhj hhubj)}(hhh]h)}(hdeinitialize the audio driverh]hdeinitialize the audio driver}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhj hhhjhMubeh}(h]h ](j3functioneh"]h$]h&]jj3jjjjjjjuh1jhhhhhNhNubj)}(hB**Parameters** ``struct intel_display *display`` display deviceh](h)}(h**Parameters**h]jp)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1johjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMhjubj#)}(hhh]j()}(h0``struct intel_display *display`` display deviceh](j.)}(h!``struct intel_display *display``h]j')}(hjh]hstruct intel_display *display}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1j-hr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMhjubjH)}(hhh]h)}(hdisplay deviceh]hdisplay device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:10: ./drivers/gpu/drm/i915/display/intel_audio.chMhj ubah}(h]h ]h"]h$]h&]uh1jGhjubeh}(h]h ]h"]h$]h&]uh1j'hj hMhjubah}(h]h ]h"]h$]h&]uh1j"hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](ji915_audio_component (C struct)c.i915_audio_componenthNtauh1jhhhhhNhNubj)}(hhh](j)}(hi915_audio_componenth]j)}(hstruct i915_audio_componenth](j/)}(hj2h]hstruct}(hjPhhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjLhhhj/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:13: ./include/drm/intel/i915_component.hhKubj)}(h h]h }(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLhhhj]hKubj)}(hi915_audio_componenth]j )}(hjJh]hi915_audio_component}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjlubah}(h]h ](jjeh"]h$]h&]hhuh1jhjLhhhj]hKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjHhhhj]hKubah}(h]jCah ](jjeh"]h$]h&]jj)jhuh1jhj]hKhjEhhubj)}(hhh]h)}(h:Used for direct communication between i915 and hda driversh]h:Used for direct communication between i915 and hda drivers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:13: ./include/drm/intel/i915_component.hhK+hjhhubah}(h]h ]h"]h$]h&]uh1jhjEhhhj]hKubeh}(h]h ](j3structeh"]h$]h&]jj3jjjjjjjuh1jhhhhhNhNubj)}(hX**Definition**:: struct i915_audio_component { struct drm_audio_component base; int aud_sample_rate[MAX_PORTS]; }; **Members** ``base`` the drm_audio_component base class ``aud_sample_rate`` the array of audio sample rate per porth](h)}(h**Definition**::h](jp)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1johjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:13: ./include/drm/intel/i915_component.hhK/hjubh literal_block)}(hnstruct i915_audio_component { struct drm_audio_component base; int aud_sample_rate[MAX_PORTS]; };h]hnstruct i915_audio_component { struct drm_audio_component base; int aud_sample_rate[MAX_PORTS]; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jhj/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:13: ./include/drm/intel/i915_component.hhK1hjubh)}(h **Members**h]jp)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1johjubah}(h]h ]h"]h$]h&]uh1hhj/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:13: ./include/drm/intel/i915_component.hhK6hjubj#)}(hhh](j()}(h,``base`` the drm_audio_component base class h](j.)}(h``base``h]j')}(hjh]hbase}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1j-hj/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:13: ./include/drm/intel/i915_component.hhK0hjubjH)}(hhh]h)}(h"the drm_audio_component base classh]h"the drm_audio_component base class}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK0hjubah}(h]h ]h"]h$]h&]uh1jGhjubeh}(h]h ]h"]h$]h&]uh1j'hjhK0hjubj()}(h;``aud_sample_rate`` the array of audio sample rate per porth](j.)}(h``aud_sample_rate``h]j')}(hj:h]haud_sample_rate}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj8ubah}(h]h ]h"]h$]h&]uh1j-hj/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:13: ./include/drm/intel/i915_component.hhK4hj4ubjH)}(hhh]h)}(h'the array of audio sample rate per porth]h'the array of audio sample rate per port}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:13: ./include/drm/intel/i915_component.hhK5hjPubah}(h]h ]h"]h$]h&]uh1jGhj4ubeh}(h]h ]h"]h$]h&]uh1j'hjOhK4hjubeh}(h]h ]h"]h$]h&]uh1j"hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubeh}(h]high-definition-audioah ]h"]high definition audioah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hIntel HDMI LPE Audio Supporth]hIntel HDMI LPE Audio Support}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hX1Motivation: Atom platforms (e.g. valleyview and cherryTrail) integrates a DMA-based interface as an alternative to the traditional HDaudio path. While this mode is unrelated to the LPE aka SST audio engine, the documentation refers to this mode as LPE so we keep this notation for the sake of consistency.h]hX1Motivation: Atom platforms (e.g. valleyview and cherryTrail) integrates a DMA-based interface as an alternative to the traditional HDaudio path. While this mode is unrelated to the LPE aka SST audio engine, the documentation refers to this mode as LPE so we keep this notation for the sake of consistency.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:19: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chKhjhhubh)}(hXThe interface is handled by a separate standalone driver maintained in the ALSA subsystem for simplicity. To minimize the interaction between the two subsystems, a bridge is setup between the hdmi-lpe-audio and i915: 1. Create a platform device to share MMIO/IRQ resources 2. Make the platform device child of i915 device for runtime PM. 3. Create IRQ chip to forward the LPE audio irqs. the hdmi-lpe-audio driver probes the lpe audio device and creates a new sound cardh]hXThe interface is handled by a separate standalone driver maintained in the ALSA subsystem for simplicity. To minimize the interaction between the two subsystems, a bridge is setup between the hdmi-lpe-audio and i915: 1. Create a platform device to share MMIO/IRQ resources 2. Make the platform device child of i915 device for runtime PM. 3. Create IRQ chip to forward the LPE audio irqs. the hdmi-lpe-audio driver probes the lpe audio device and creates a new sound card}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:19: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chK%hjhhubh)}(hXLThreats: Due to the restriction in Linux platform device model, user need manually uninstall the hdmi-lpe-audio driver before uninstalling i915 module, otherwise we might run into use-after-free issues after i915 removes the platform device: even though hdmi-lpe-audio driver is released, the modules is still in "installed" status.h]hXPThreats: Due to the restriction in Linux platform device model, user need manually uninstall the hdmi-lpe-audio driver before uninstalling i915 module, otherwise we might run into use-after-free issues after i915 removes the platform device: even though hdmi-lpe-audio driver is released, the modules is still in “installed” status.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:19: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chK.hjhhubh)}(hImplementation: The MMIO/REG platform resources are created according to the registers specification. When forwarding LPE audio irqs, the flow control handler selection depends on the platform, for example on valleyview handle_simple_irq is enough.h]hImplementation: The MMIO/REG platform resources are created according to the registers specification. When forwarding LPE audio irqs, the flow control handler selection depends on the platform, for example on valleyview handle_simple_irq is enough.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:19: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chK5hjhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j(intel_lpe_audio_irq_handler (C function)c.intel_lpe_audio_irq_handlerhNtauh1jhjhhhNhNubj)}(hhh](j)}(h@void intel_lpe_audio_irq_handler (struct intel_display *display)h]j)}(h?void intel_lpe_audio_irq_handler(struct intel_display *display)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj)}(hintel_lpe_audio_irq_handlerh]j )}(hintel_lpe_audio_irq_handlerh]hintel_lpe_audio_irq_handler}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKubj#)}(h(struct intel_display *display)h]j))}(hstruct intel_display *displayh](j/)}(hj2h]hstruct}(hj&hhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj"ubj)}(h h]h }(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubh)}(hhh]j )}(h intel_displayh]h intel_display}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjAubah}(h]h ]h"]h$]h&] refdomainj3reftypejf reftargetjFmodnameN classnameNjjjm)}jp]js)}jfj sbc.intel_lpe_audio_irq_handlerasbuh1hhj"ubj)}(h h]h }(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubj)}(hjh]h*}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubj )}(hdisplayh]hdisplay}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1j(hjubah}(h]h ]h"]h$]h&]hhuh1j"hjhhhjhKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhKhjhhubj)}(hhh]h)}(hforwards the LPE audio irqh]hforwards the LPE audio irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](j3functioneh"]h$]h&]jj3jjjjjjjuh1jhhhjhNhNubj)}(h**Parameters** ``struct intel_display *display`` display device **Description** the LPE Audio irq is forwarded to the irq handler registered by LPE audio driver.h](h)}(h**Parameters**h]jp)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1johjubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chMhjubj#)}(hhh]j()}(h1``struct intel_display *display`` display device h](j.)}(h!``struct intel_display *display``h]j')}(hjh]hstruct intel_display *display}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1j-hv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chKhjubjH)}(hhh]h)}(hdisplay deviceh]hdisplay device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jGhjubeh}(h]h ]h"]h$]h&]uh1j'hjhKhjubah}(h]h ]h"]h$]h&]uh1j"hjubh)}(h**Description**h]jp)}(hj%h]h Description}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1johj#ubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chKhjubh)}(hQthe LPE Audio irq is forwarded to the irq handler registered by LPE audio driver.h]hQthe LPE Audio irq is forwarded to the irq handler registered by LPE audio driver.}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j!intel_lpe_audio_init (C function)c.intel_lpe_audio_inithNtauh1jhjhhhNhNubj)}(hhh](j)}(h8int intel_lpe_audio_init (struct intel_display *display)h]j)}(h7int intel_lpe_audio_init(struct intel_display *display)h](j)}(hinth]hint}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfhhhv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chMubj)}(h h]h }(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfhhhjxhMubj)}(hintel_lpe_audio_inith]j )}(hintel_lpe_audio_inith]hintel_lpe_audio_init}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjfhhhjxhMubj#)}(h(struct intel_display *display)h]j))}(hstruct intel_display *displayh](j/)}(hj2h]hstruct}(hjhhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j )}(h intel_displayh]h intel_display}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainj3reftypejf reftargetjmodnameN classnameNjjjm)}jp]js)}jfjsbc.intel_lpe_audio_initasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(hdisplayh]hdisplay}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j(hjubah}(h]h ]h"]h$]h&]hhuh1j"hjfhhhjxhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjbhhhjxhMubah}(h]j]ah ](jjeh"]h$]h&]jj)jhuh1jhjxhMhj_hhubj)}(hhh]h)}(hBdetect and setup the bridge between HDMI LPE Audio driver and i915h]hBdetect and setup the bridge between HDMI LPE Audio driver and i915}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chMhj'hhubah}(h]h ]h"]h$]h&]uh1jhj_hhhjxhMubeh}(h]h ](j3functioneh"]h$]h&]jj3jjBjjBjjjuh1jhhhjhNhNubj)}(h**Parameters** ``struct intel_display *display`` display device **Return** 0 if successful. non-zero if detection or llocation/initialization failsh](h)}(h**Parameters**h]jp)}(hjLh]h Parameters}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1johjJubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chMhjFubj#)}(hhh]j()}(h1``struct intel_display *display`` display device h](j.)}(h!``struct intel_display *display``Lh]j')}(hjkh]hstruct intel_display *display}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjiubah}(h]h ]h"]h$]h&]uh1j-hv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chMhjeubjH)}(hhh]h)}(hdisplay deviceh]hdisplay device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jGhjeubeh}(h]h ]h"]h$]h&]uh1j'hjhMhjbubah}(h]h ]h"]h$]h&]uh1j"hjFubh)}(h **Return**h]jp)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1johjubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chMhjFubh)}(hH0 if successful. non-zero if detection or llocation/initialization failsh]hH0 if successful. non-zero if detection or llocation/initialization fails}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chMhjFubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j%intel_lpe_audio_teardown (C function)c.intel_lpe_audio_teardownhNtauh1jhjhhhNhNubj)}(hhh](j)}(h=void intel_lpe_audio_teardown (struct intel_display *display)h]j)}(h i915 bridge.h](h)}(h**Parameters**h]jp)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1johjubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chM)hjubj#)}(hhh]j()}(h1``struct intel_display *display`` display device h](j.)}(h!``struct intel_display *display``h]j')}(hjh]hstruct intel_display *display}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1j-hv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chM'hjubjH)}(hhh]h)}(hdisplay deviceh]hdisplay device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM'hjubah}(h]h ]h"]h$]h&]uh1jGhjubeh}(h]h ]h"]h$]h&]uh1j'hjhM'hjubah}(h]h ]h"]h$]h&]uh1j"hjubh)}(h**Description**h]jp)}(hj'h]h Description}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1johj%ubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chM)hjubh)}(h8release all the resources for LPE audio <-> i915 bridge.h]h8release all the resources for LPE audio <-> i915 bridge.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chM(hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#intel_lpe_audio_notify (C function)c.intel_lpe_audio_notifyhNtauh1jhjhhhNhNubj)}(hhh](j)}(hvoid intel_lpe_audio_notify (struct intel_display *display, enum transcoder cpu_transcoder, enum port port, const void *eld, int ls_clock, bool dp_output)h]j)}(hvoid intel_lpe_audio_notify(struct intel_display *display, enum transcoder cpu_transcoder, enum port port, const void *eld, int ls_clock, bool dp_output)h](j)}(hvoidh]hvoid}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhhv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chM9ubj)}(h h]h }(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhhjzhM9ubj)}(hintel_lpe_audio_notifyh]j )}(hintel_lpe_audio_notifyh]hintel_lpe_audio_notify}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhhjzhM9ubj#)}(h~(struct intel_display *display, enum transcoder cpu_transcoder, enum port port, const void *eld, int ls_clock, bool dp_output)h](j))}(hstruct intel_display *displayh](j/)}(hj2h]hstruct}(hjhhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j )}(h intel_displayh]h intel_display}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainj3reftypejf reftargetjmodnameN classnameNjjjm)}jp]js)}jfjsbc.intel_lpe_audio_notifyasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(hdisplayh]hdisplay}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j(hjubj))}(henum transcoder cpu_transcoderh](j/)}(henumh]henum}(hjhhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjubj)}(h h]h }(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j )}(h transcoderh]h transcoder}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj7ubah}(h]h ]h"]h$]h&] refdomainj3reftypejf reftargetj<modnameN classnameNjjjm)}jp]jc.intel_lpe_audio_notifyasbuh1hhjubj)}(h h]h }(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(hcpu_transcoderh]hcpu_transcoder}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j(hjubj))}(henum port porth](j/)}(hjh]henum}(hjhhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hj{ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubh)}(hhh]j )}(hporth]hport}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainj3reftypejf reftargetjmodnameN classnameNjjjm)}jp]jc.intel_lpe_audio_notifyasbuh1hhj{ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubj )}(hporth]hport}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj{ubeh}(h]h ]h"]h$]h&]noemphhhuh1j(hjubj))}(hconst void *eldh](j/)}(hjh]hconst}(hjhhhNhNubah}(h]h ]j;ah"]h$]h&]uh1j.hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(heldh]held}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j(hjubj))}(h int ls_clockh](j)}(hinth]hint}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;ubj)}(h h]h }(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;ubj )}(hls_clockh]hls_clock}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj;ubeh}(h]h ]h"]h$]h&]noemphhhuh1j(hjubj))}(hbool dp_outputh](j)}(hboolh]hbool}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubj )}(h dp_outputh]h dp_output}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjpubeh}(h]h ]h"]h$]h&]noemphhhuh1j(hjubeh}(h]h ]h"]h$]h&]hhuh1j"hjhhhhjzhM9ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjdhhhjzhM9ubah}(h]j_ah ](jjeh"]h$]h&]jj)jhuh1jhjzhM9hjahhubj)}(hhh]h)}(h,notify lpe audio event audio driver and i915h]h,notify lpe audio event audio driver and i915}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chM9hjhhubah}(h]h ]h"]h$]h&]uh1jhjahhhjzhM9ubeh}(h]h ](j3functioneh"]h$]h&]jj3jjjjjjjuh1jhhhjhNhNubj)}(hXC**Parameters** ``struct intel_display *display`` display device ``enum transcoder cpu_transcoder`` CPU transcoder ``enum port port`` port ``const void *eld`` ELD data ``int ls_clock`` Link symbol clock in kHz ``bool dp_output`` Driving a DP output? **Description** Notify lpe audio driver of eld change.h](h)}(h**Parameters**h]jp)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1johjubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chM=hjubj#)}(hhh](j()}(h1``struct intel_display *display`` display device h](j.)}(h!``struct intel_display *display``h]j')}(hjh]hstruct intel_display *display}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1j-hv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chM;hjubjH)}(hhh]h)}(hdisplay deviceh]hdisplay device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM;hjubah}(h]h ]h"]h$]h&]uh1jGhjubeh}(h]h ]h"]h$]h&]uh1j'hjhM;hjubj()}(h2``enum transcoder cpu_transcoder`` CPU transcoder h](j.)}(h"``enum transcoder cpu_transcoder``h]j')}(hj4h]henum transcoder cpu_transcoder}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj2ubah}(h]h ]h"]h$]h&]uh1j-hv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chM<hj.ubjH)}(hhh]h)}(hCPU transcoderh]hCPU transcoder}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIhM<hjJubah}(h]h ]h"]h$]h&]uh1jGhj.ubeh}(h]h ]h"]h$]h&]uh1j'hjIhM<hjubj()}(h``enum port port`` port h](j.)}(h``enum port port``h]j')}(hjmh]henum port port}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjkubah}(h]h ]h"]h$]h&]uh1j-hv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chM=hjgubjH)}(hhh]h)}(hporth]hport}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM=hjubah}(h]h ]h"]h$]h&]uh1jGhjgubeh}(h]h ]h"]h$]h&]uh1j'hjhM=hjubj()}(h``const void *eld`` ELD data h](j.)}(h``const void *eld``h]j')}(hjh]hconst void *eld}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1j-hv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chM>hjubjH)}(hhh]h)}(hELD datah]hELD data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM>hjubah}(h]h ]h"]h$]h&]uh1jGhjubeh}(h]h ]h"]h$]h&]uh1j'hjhM>hjubj()}(h*``int ls_clock`` Link symbol clock in kHz h](j.)}(h``int ls_clock``h]j')}(hjh]h int ls_clock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1j-hv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chM?hjubjH)}(hhh]h)}(hLink symbol clock in kHzh]hLink symbol clock in kHz}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM?hjubah}(h]h ]h"]h$]h&]uh1jGhjubeh}(h]h ]h"]h$]h&]uh1j'hjhM?hjubj()}(h(``bool dp_output`` Driving a DP output? h](j.)}(h``bool dp_output``h]j')}(hjh]hbool dp_output}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1j-hv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chM@hjubjH)}(hhh]h)}(hDriving a DP output?h]hDriving a DP output?}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hM@hj.ubah}(h]h ]h"]h$]h&]uh1jGhjubeh}(h]h ]h"]h$]h&]uh1j'hj-hM@hjubeh}(h]h ]h"]h$]h&]uh1j"hjubh)}(h**Description**h]jp)}(hjSh]h Description}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1johjQubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chMBhjubh)}(h&Notify lpe audio driver of eld change.h]h&Notify lpe audio driver of eld change.}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/audio:22: ./drivers/gpu/drm/i915/display/intel_lpe_audio.chMAhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubeh}(h]intel-hdmi-lpe-audio-supportah ]h"]intel hdmi lpe audio supportah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehnj _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(jj}jju nametypes}(jjuh}(j}hjjjjj!j&j| j j j j j j j jCjHjjjjj]jbjjj_jdu footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.