
2 nit-picks that I missed in previous versions of this patch, sorry:
diff --git a/sound/pci/hda/Kconfig b/sound/pci/hda/Kconfig index 7ba542e45a3d..8804808410b3 100644 --- a/sound/pci/hda/Kconfig +++ b/sound/pci/hda/Kconfig @@ -232,4 +232,20 @@ config SND_HDA_POWER_SAVE_DEFAULT
endif
+config SND_HDA_INTEL_HDMI_SILENT_STREAM
- bool "Enable Silent Stream always for HDMI"
- depends on SND_HDA
nit-pick: should this be 'depends on SND_HDA_INTEL'? if not, this 'depends on SND_HDA' is redundant, already within an 'if SND_HDA' block
- help
Intel hardware has a feature called 'silent stream', that
keeps external HDMI receiver's analog circuitry powered on
avoiding 2-3 sec silence during playback start. This mechanism
relies on an info packet and preventing the codec from going to
D3. (increasing the platform static power consumption when a
HDMI receiver is plugged-in). 2-3 sec silence at the playback
start is expected whenever there is format change. (default is
2 channel format).
Say Y to enable Silent Stream feature.
+endif
[...]
/* update ELD and jack state via audio component */ static void sync_eld_via_acomp(struct hda_codec *codec, struct hdmi_spec_per_pin *per_pin) { struct hdmi_spec *spec = codec->spec; struct hdmi_eld *eld = &spec->temp_eld;
bool monitor_prev, monitor_next;
mutex_lock(&per_pin->lock); eld->monitor_present = false;
monitor_prev = per_pin->sink_eld.monitor_present; eld->eld_size = snd_hdac_acomp_get_eld(&codec->core, per_pin->pin_nid, per_pin->dev_id, &eld->monitor_present, eld->eld_buffer, ELD_MAX_SIZE); eld->eld_valid = (eld->eld_size > 0); update_eld(codec, per_pin, eld, 0);
monitor_next = per_pin->sink_eld.monitor_present; mutex_unlock(&per_pin->lock);
/*
* Power-up will call hdmi_present_sense, so the PM calls
* have to be done without mutex held.
*/
if (enable_silent_stream) {
if (!monitor_prev && monitor_next) {
snd_hda_power_up_pm(codec);
nit-pick: is there a need to test the return value? I see this in patch_hdmi.c
ret = snd_hda_power_up_pm(codec); if (ret < 0 && pm_runtime_suspended(hda_codec_dev(codec))) goto out;
silent_stream_enable(codec, per_pin);
} else if (monitor_prev && !monitor_next)
snd_hda_power_down_pm(codec);
} }
static void hdmi_present_sense(struct hdmi_spec_per_pin *per_pin, int repoll)