mirror of
https://github.com/torvalds/linux.git
synced 2026-05-23 06:31:58 +02:00
drm/i915/hdcp: further conversion to struct intel_display
There are some unconverted stragglers left in the HDCP API still using struct drm_i915_private. Convert to struct intel_display. Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/9680cc9e5ed7798a736fa73ad9ea0eb9c88e64bb.1730146000.git.jani.nikula@intel.com
This commit is contained in:
parent
86e89eca10
commit
c214fc98cf
|
|
@ -485,7 +485,7 @@ int intel_display_driver_probe_nogem(struct drm_i915_private *i915)
|
|||
return 0;
|
||||
|
||||
err_hdcp:
|
||||
intel_hdcp_component_fini(i915);
|
||||
intel_hdcp_component_fini(display);
|
||||
err_mode_config:
|
||||
intel_mode_config_cleanup(i915);
|
||||
|
||||
|
|
@ -495,6 +495,7 @@ int intel_display_driver_probe_nogem(struct drm_i915_private *i915)
|
|||
/* part #3: call after gem init */
|
||||
int intel_display_driver_probe(struct drm_i915_private *i915)
|
||||
{
|
||||
struct intel_display *display = &i915->display;
|
||||
int ret;
|
||||
|
||||
if (!HAS_DISPLAY(i915))
|
||||
|
|
@ -505,7 +506,7 @@ int intel_display_driver_probe(struct drm_i915_private *i915)
|
|||
* the BIOS fb takeover and whatever else magic ggtt reservations
|
||||
* happen during gem/ggtt init.
|
||||
*/
|
||||
intel_hdcp_component_init(i915);
|
||||
intel_hdcp_component_init(display);
|
||||
|
||||
/*
|
||||
* Force all active planes to recompute their states. So that on
|
||||
|
|
@ -600,7 +601,7 @@ void intel_display_driver_remove_noirq(struct drm_i915_private *i915)
|
|||
/* flush any delayed tasks or pending work */
|
||||
flush_workqueue(i915->unordered_wq);
|
||||
|
||||
intel_hdcp_component_fini(i915);
|
||||
intel_hdcp_component_fini(display);
|
||||
|
||||
intel_mode_config_cleanup(i915);
|
||||
|
||||
|
|
|
|||
|
|
@ -6419,6 +6419,7 @@ bool
|
|||
intel_dp_init_connector(struct intel_digital_port *dig_port,
|
||||
struct intel_connector *intel_connector)
|
||||
{
|
||||
struct intel_display *display = to_intel_display(dig_port);
|
||||
struct drm_connector *connector = &intel_connector->base;
|
||||
struct intel_dp *intel_dp = &dig_port->dp;
|
||||
struct intel_encoder *intel_encoder = &dig_port->base;
|
||||
|
|
@ -6509,7 +6510,7 @@ intel_dp_init_connector(struct intel_digital_port *dig_port,
|
|||
|
||||
intel_dp_add_properties(intel_dp, connector);
|
||||
|
||||
if (is_hdcp_supported(dev_priv, port) && !intel_dp_is_edp(intel_dp)) {
|
||||
if (is_hdcp_supported(display, port) && !intel_dp_is_edp(intel_dp)) {
|
||||
int ret = intel_dp_hdcp_init(dig_port, intel_connector);
|
||||
if (ret)
|
||||
drm_dbg_kms(&dev_priv->drm,
|
||||
|
|
|
|||
|
|
@ -873,13 +873,12 @@ static const struct intel_hdcp_shim intel_dp_mst_hdcp_shim = {
|
|||
int intel_dp_hdcp_init(struct intel_digital_port *dig_port,
|
||||
struct intel_connector *intel_connector)
|
||||
{
|
||||
struct drm_device *dev = intel_connector->base.dev;
|
||||
struct drm_i915_private *dev_priv = to_i915(dev);
|
||||
struct intel_display *display = to_intel_display(dig_port);
|
||||
struct intel_encoder *intel_encoder = &dig_port->base;
|
||||
enum port port = intel_encoder->port;
|
||||
struct intel_dp *intel_dp = &dig_port->dp;
|
||||
|
||||
if (!is_hdcp_supported(dev_priv, port))
|
||||
if (!is_hdcp_supported(display, port))
|
||||
return 0;
|
||||
|
||||
if (intel_connector->mst_port)
|
||||
|
|
|
|||
|
|
@ -1192,10 +1192,10 @@ static void intel_hdcp_prop_work(struct work_struct *work)
|
|||
drm_connector_put(&connector->base);
|
||||
}
|
||||
|
||||
bool is_hdcp_supported(struct drm_i915_private *i915, enum port port)
|
||||
bool is_hdcp_supported(struct intel_display *display, enum port port)
|
||||
{
|
||||
return DISPLAY_RUNTIME_INFO(i915)->has_hdcp &&
|
||||
(DISPLAY_VER(i915) >= 12 || port < PORT_E);
|
||||
return DISPLAY_RUNTIME_INFO(display)->has_hdcp &&
|
||||
(DISPLAY_VER(display) >= 12 || port < PORT_E);
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
@ -2301,9 +2301,9 @@ static int initialize_hdcp_port_data(struct intel_connector *connector,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static bool is_hdcp2_supported(struct drm_i915_private *i915)
|
||||
static bool is_hdcp2_supported(struct intel_display *display)
|
||||
{
|
||||
struct intel_display *display = to_intel_display(&i915->drm);
|
||||
struct drm_i915_private *i915 = to_i915(display->drm);
|
||||
|
||||
if (intel_hdcp_gsc_cs_required(display))
|
||||
return true;
|
||||
|
|
@ -2317,12 +2317,11 @@ static bool is_hdcp2_supported(struct drm_i915_private *i915)
|
|||
IS_COMETLAKE(i915));
|
||||
}
|
||||
|
||||
void intel_hdcp_component_init(struct drm_i915_private *i915)
|
||||
void intel_hdcp_component_init(struct intel_display *display)
|
||||
{
|
||||
struct intel_display *display = to_intel_display(&i915->drm);
|
||||
int ret;
|
||||
|
||||
if (!is_hdcp2_supported(i915))
|
||||
if (!is_hdcp2_supported(display))
|
||||
return;
|
||||
|
||||
mutex_lock(&display->hdcp.hdcp_mutex);
|
||||
|
|
@ -2367,19 +2366,18 @@ int intel_hdcp_init(struct intel_connector *connector,
|
|||
struct intel_digital_port *dig_port,
|
||||
const struct intel_hdcp_shim *shim)
|
||||
{
|
||||
struct drm_i915_private *i915 = to_i915(connector->base.dev);
|
||||
struct intel_display *display = to_intel_display(connector);
|
||||
struct intel_hdcp *hdcp = &connector->hdcp;
|
||||
int ret;
|
||||
|
||||
if (!shim)
|
||||
return -EINVAL;
|
||||
|
||||
if (is_hdcp2_supported(i915))
|
||||
if (is_hdcp2_supported(display))
|
||||
intel_hdcp2_init(connector, dig_port, shim);
|
||||
|
||||
ret =
|
||||
drm_connector_attach_content_protection_property(&connector->base,
|
||||
hdcp->hdcp2_supported);
|
||||
ret = drm_connector_attach_content_protection_property(&connector->base,
|
||||
hdcp->hdcp2_supported);
|
||||
if (ret) {
|
||||
hdcp->hdcp2_supported = false;
|
||||
kfree(dig_port->hdcp_port_data.streams);
|
||||
|
|
@ -2432,7 +2430,7 @@ static int _intel_hdcp_enable(struct intel_atomic_state *state,
|
|||
hdcp->stream_transcoder = INVALID_TRANSCODER;
|
||||
}
|
||||
|
||||
if (DISPLAY_VER(i915) >= 12)
|
||||
if (DISPLAY_VER(display) >= 12)
|
||||
dig_port->hdcp_port_data.hdcp_transcoder =
|
||||
intel_get_hdcp_transcoder(hdcp->cpu_transcoder);
|
||||
|
||||
|
|
@ -2583,10 +2581,8 @@ void intel_hdcp_update_pipe(struct intel_atomic_state *state,
|
|||
_intel_hdcp_enable(state, encoder, crtc_state, conn_state);
|
||||
}
|
||||
|
||||
void intel_hdcp_component_fini(struct drm_i915_private *i915)
|
||||
void intel_hdcp_component_fini(struct intel_display *display)
|
||||
{
|
||||
struct intel_display *display = to_intel_display(&i915->drm);
|
||||
|
||||
mutex_lock(&display->hdcp.hdcp_mutex);
|
||||
if (!display->hdcp.comp_added) {
|
||||
mutex_unlock(&display->hdcp.hdcp_mutex);
|
||||
|
|
|
|||
|
|
@ -12,13 +12,13 @@
|
|||
|
||||
struct drm_connector;
|
||||
struct drm_connector_state;
|
||||
struct drm_i915_private;
|
||||
struct intel_atomic_state;
|
||||
struct intel_connector;
|
||||
struct intel_crtc_state;
|
||||
struct intel_digital_port;
|
||||
struct intel_display;
|
||||
struct intel_encoder;
|
||||
struct intel_hdcp_shim;
|
||||
struct intel_digital_port;
|
||||
enum port;
|
||||
enum transcoder;
|
||||
|
||||
|
|
@ -37,14 +37,14 @@ void intel_hdcp_update_pipe(struct intel_atomic_state *state,
|
|||
struct intel_encoder *encoder,
|
||||
const struct intel_crtc_state *crtc_state,
|
||||
const struct drm_connector_state *conn_state);
|
||||
bool is_hdcp_supported(struct drm_i915_private *i915, enum port port);
|
||||
bool is_hdcp_supported(struct intel_display *display, enum port port);
|
||||
bool intel_hdcp_get_capability(struct intel_connector *connector);
|
||||
bool intel_hdcp2_get_capability(struct intel_connector *connector);
|
||||
void intel_hdcp_get_remote_capability(struct intel_connector *connector,
|
||||
bool *hdcp_capable,
|
||||
bool *hdcp2_capable);
|
||||
void intel_hdcp_component_init(struct drm_i915_private *i915);
|
||||
void intel_hdcp_component_fini(struct drm_i915_private *i915);
|
||||
void intel_hdcp_component_init(struct intel_display *display);
|
||||
void intel_hdcp_component_fini(struct intel_display *display);
|
||||
void intel_hdcp_cleanup(struct intel_connector *connector);
|
||||
void intel_hdcp_handle_cp_irq(struct intel_connector *connector);
|
||||
|
||||
|
|
|
|||
|
|
@ -3026,7 +3026,6 @@ void intel_hdmi_init_connector(struct intel_digital_port *dig_port,
|
|||
struct intel_hdmi *intel_hdmi = &dig_port->hdmi;
|
||||
struct intel_encoder *intel_encoder = &dig_port->base;
|
||||
struct drm_device *dev = intel_encoder->base.dev;
|
||||
struct drm_i915_private *dev_priv = to_i915(dev);
|
||||
enum port port = intel_encoder->port;
|
||||
struct cec_connector_info conn_info;
|
||||
u8 ddc_pin;
|
||||
|
|
@ -3076,7 +3075,7 @@ void intel_hdmi_init_connector(struct intel_digital_port *dig_port,
|
|||
intel_connector_attach_encoder(intel_connector, intel_encoder);
|
||||
intel_hdmi->attached_connector = intel_connector;
|
||||
|
||||
if (is_hdcp_supported(dev_priv, port)) {
|
||||
if (is_hdcp_supported(display, port)) {
|
||||
int ret = intel_hdcp_init(intel_connector, dig_port,
|
||||
&intel_hdmi_hdcp_shim);
|
||||
if (ret)
|
||||
|
|
|
|||
|
|
@ -202,12 +202,14 @@ int xe_display_init(struct xe_device *xe)
|
|||
|
||||
void xe_display_fini(struct xe_device *xe)
|
||||
{
|
||||
struct intel_display *display = &xe->display;
|
||||
|
||||
if (!xe->info.probe_display)
|
||||
return;
|
||||
|
||||
intel_hpd_poll_fini(xe);
|
||||
|
||||
intel_hdcp_component_fini(xe);
|
||||
intel_hdcp_component_fini(display);
|
||||
intel_audio_deinit(xe);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user