Lines Matching full:audio
43 * DOC: High Definition Audio over HDMI and Display Port
45 * The graphics and audio drivers together support High Definition Audio over
46 * HDMI and Display Port. The audio programming sequences are divided into audio
48 * handles the audio codec sequences, while the audio driver handles the audio
53 * transcoder and port, and after completed link training. Therefore the audio
57 * but generally the ELDV/PD change in the codec sequence indicates to the audio
59 * co-operation between the graphics and audio drivers is handled via audio
64 * and audio drivers. The struct &i915_audio_component_ops @ops in it is
65 * defined in graphics driver and called in audio driver. The
188 * WA_14020863754: Implement Audio Workaround
189 * Corner case with Min Hblank Fix can cause audio hang
216 "HDMI audio pixel clock setting for %d not found, falling back to defaults\n", in audio_config_hdmi_pixel_clock()
222 "Configuring HDMI audio for pixel clock %d (0x%08x)\n", in audio_config_hdmi_pixel_clock()
353 struct i915_audio_component *acomp = display->audio.component; in hsw_hdmi_audio_config_update()
421 mutex_lock(&display->audio.mutex); in hsw_audio_codec_disable()
439 /* Disable audio presence detect */ in hsw_audio_codec_disable()
448 mutex_unlock(&display->audio.mutex); in hsw_audio_codec_disable()
567 mutex_lock(&display->audio.mutex); in hsw_audio_codec_enable()
569 /* Enable Audio WA for 4k DSC usecases */ in hsw_audio_codec_enable()
578 /* Enable audio presence detect */ in hsw_audio_codec_enable()
589 * The audio component is used to convey the ELD in hsw_audio_codec_enable()
596 mutex_unlock(&display->audio.mutex); in hsw_audio_codec_enable()
640 mutex_lock(&display->audio.mutex); in ibx_audio_codec_disable()
655 mutex_unlock(&display->audio.mutex); in ibx_audio_codec_disable()
678 mutex_lock(&display->audio.mutex); in ibx_audio_codec_enable()
685 * The audio component is used to convey the ELD in ibx_audio_codec_enable()
698 mutex_unlock(&display->audio.mutex); in ibx_audio_codec_enable()
729 * intel_audio_codec_enable - Enable the audio codec for HD audio
730 * @encoder: encoder on which to enable audio
742 struct i915_audio_component *acomp = display->audio.component; in intel_audio_codec_enable()
753 "[CONNECTOR:%d:%s][ENCODER:%d:%s] Enable audio codec on [CRTC:%d:%s], %u bytes ELD\n", in intel_audio_codec_enable()
759 if (display->funcs.audio) in intel_audio_codec_enable()
760 display->funcs.audio->audio_codec_enable(encoder, in intel_audio_codec_enable()
764 mutex_lock(&display->audio.mutex); in intel_audio_codec_enable()
766 audio_state = &display->audio.state[cpu_transcoder]; in intel_audio_codec_enable()
772 mutex_unlock(&display->audio.mutex); in intel_audio_codec_enable()
776 /* audio drivers expect cpu_transcoder = -1 to indicate Non-MST cases */ in intel_audio_codec_enable()
789 * intel_audio_codec_disable - Disable the audio codec for HD audio
790 * @encoder: encoder on which to disable audio
802 struct i915_audio_component *acomp = display->audio.component; in intel_audio_codec_disable()
813 "[CONNECTOR:%d:%s][ENCODER:%d:%s] Disable audio codec on [CRTC:%d:%s]\n", in intel_audio_codec_disable()
818 if (display->funcs.audio) in intel_audio_codec_disable()
819 display->funcs.audio->audio_codec_disable(encoder, in intel_audio_codec_disable()
823 mutex_lock(&display->audio.mutex); in intel_audio_codec_disable()
825 audio_state = &display->audio.state[cpu_transcoder]; in intel_audio_codec_disable()
830 mutex_unlock(&display->audio.mutex); in intel_audio_codec_disable()
834 /* audio drivers expect cpu_transcoder = -1 to indicate Non-MST cases */ in intel_audio_codec_disable()
851 mutex_lock(&display->audio.mutex); in intel_acomp_get_config()
853 audio_state = &display->audio.state[cpu_transcoder]; in intel_acomp_get_config()
858 mutex_unlock(&display->audio.mutex); in intel_acomp_get_config()
869 if (display->funcs.audio) in intel_audio_codec_get_config()
870 display->funcs.audio->audio_codec_get_config(encoder, crtc_state); in intel_audio_codec_get_config()
892 * intel_audio_hooks_init - Set up chip specific audio hooks
898 display->funcs.audio = &g4x_audio_funcs; in intel_audio_hooks_init()
901 display->funcs.audio = &ibx_audio_funcs; in intel_audio_hooks_init()
903 display->funcs.audio = &hsw_audio_funcs; in intel_audio_hooks_init()
1005 * audio enabled, port width x4, and link rate HBR2 (5.4 GHz), or else in intel_audio_min_cdclk()
1006 * there may be audio corruption or screen corruption." This cdclk in intel_audio_min_cdclk()
1029 * "For DP audio configuration, cdclk frequency shall be set to in intel_audio_min_cdclk()
1052 if (display->audio.power_refcount++ == 0) { in intel_audio_component_get_power()
1055 display->audio.freq_cntrl); in intel_audio_component_get_power()
1058 display->audio.freq_cntrl); in intel_audio_component_get_power()
1061 /* Force CDCLK to 2*BCLK as long as we need audio powered. */ in intel_audio_component_get_power()
1079 /* Stop forcing CDCLK to 2*BCLK if no need for audio to be powered. */ in intel_audio_component_put_power()
1080 if (--display->audio.power_refcount == 0) in intel_audio_component_put_power()
1127 * get the intel audio state according to the parameter port and cpu_transcoder
1128 * MST & (cpu_transcoder >= 0): return the audio.state[cpu_transcoder].encoder],
1144 cpu_transcoder >= ARRAY_SIZE(display->audio.state))) in find_audio_state()
1147 audio_state = &display->audio.state[cpu_transcoder]; in find_audio_state()
1163 audio_state = &display->audio.state[cpu_transcoder]; in find_audio_state()
1178 struct i915_audio_component *acomp = display->audio.component; in intel_audio_component_sync_audio_rate()
1189 mutex_lock(&display->audio.mutex); in intel_audio_component_sync_audio_rate()
1211 mutex_unlock(&display->audio.mutex); in intel_audio_component_sync_audio_rate()
1224 mutex_lock(&display->audio.mutex); in intel_audio_component_get_eld()
1230 mutex_unlock(&display->audio.mutex); in intel_audio_component_get_eld()
1242 mutex_unlock(&display->audio.mutex); in intel_audio_component_get_eld()
1277 display->audio.component = acomp; in intel_audio_component_bind()
1292 display->audio.component = NULL; in intel_audio_component_unbind()
1297 if (display->audio.power_refcount) in intel_audio_component_unbind()
1299 "audio power refcount %d after unbind\n", in intel_audio_component_unbind()
1300 display->audio.power_refcount); in intel_audio_component_unbind()
1318 * intel_audio_component_init - initialize and register the audio component
1331 * functionality (i.e. without HDMI audio).
1354 display->audio.freq_cntrl = aud_freq; in intel_audio_component_init()
1370 "failed to add audio component (%d)\n", ret); in intel_audio_component_register()
1375 display->audio.component_registered = true; in intel_audio_component_register()
1379 * intel_audio_component_cleanup - deregister the audio component
1382 * Deregisters the audio component, breaking any existing binding to the
1387 if (!display->audio.component_registered) in intel_audio_component_cleanup()
1391 display->audio.component_registered = false; in intel_audio_component_cleanup()
1395 * intel_audio_init() - Initialize the audio driver either using
1396 * component framework or using lpe audio bridge
1408 if (!display->audio.lpe.platdev) in intel_audio_register()
1413 * intel_audio_deinit() - deinitialize the audio driver
1418 if (display->audio.lpe.platdev) in intel_audio_deinit()