On g4x the hardware has only one audio/video DIP block. Thus only one HDMI port can transmit audio/infoframes at a time. Currently we pretend that multiple ports can do it at the same time, but that doesn't actually work for two reasons: - the state of the single hw block will get clobbered by the multiple ports, leading to state checker failures - the hardware will automagically disable audio/infoframe transmission when enabled on multiple ports To fix this let's allow only one of the ports to transmit audio/infoframes at a time. We'll just go over all the HDMI ports and pick the first one that is otherwise capable of audio/infoframes. Further HDMI ports will be treated as if they had a DVI sink connected. In order to compute this consistently we'll also need to always add all HDMI ports to the atomic state. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20221107194604.15227-6-ville.syrjala@linux.intel.com Reviewed-by: Uma Shankar <uma.shankar@intel.com>
23 lines
478 B
C
23 lines
478 B
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright © 2020 Intel Corporation
|
|
*/
|
|
|
|
#ifndef _G4X_HDMI_H_
|
|
#define _G4X_HDMI_H_
|
|
|
|
#include <linux/types.h>
|
|
|
|
#include "i915_reg_defs.h"
|
|
|
|
enum port;
|
|
struct drm_atomic_state;
|
|
struct drm_connector;
|
|
struct drm_i915_private;
|
|
|
|
void g4x_hdmi_init(struct drm_i915_private *dev_priv,
|
|
i915_reg_t hdmi_reg, enum port port);
|
|
int g4x_hdmi_connector_atomic_check(struct drm_connector *connector,
|
|
struct drm_atomic_state *state);
|
|
|
|
#endif
|