Skip to content

Commit cb2b7d6

Browse files
surajk8jlahtine-intel
authored andcommitted
drm/i915/hdcp: Move to direct reads for HDCP
Even for MST scenarios we need to do direct reads only on the immediate downstream device the rest of the authentication is taken care by that device. Remote reads will only be used to check capability of the monitors in MST topology. --v2 -Add fixes tag [Ankit] -Derive aux where needed rather than through a function [Ankit] Fixes: ae4f902 ("drm/i915/hdcp: Send the correct aux for DPMST HDCP scenario") Signed-off-by: Suraj Kandpal <[email protected]> Reviewed-by: Ankit Nautiyal <[email protected]> Signed-off-by: Ankit Nautiyal <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] (cherry picked from commit 287c0de) Signed-off-by: Joonas Lahtinen <[email protected]>
1 parent d206a76 commit cb2b7d6

File tree

1 file changed

+9
-22
lines changed

1 file changed

+9
-22
lines changed

drivers/gpu/drm/i915/display/intel_dp_hdcp.c

Lines changed: 9 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -330,23 +330,13 @@ static const struct hdcp2_dp_msg_data hdcp2_dp_msg_data[] = {
330330
0, 0 },
331331
};
332332

333-
static struct drm_dp_aux *
334-
intel_dp_hdcp_get_aux(struct intel_connector *connector)
335-
{
336-
struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
337-
338-
if (intel_encoder_is_mst(connector->encoder))
339-
return &connector->port->aux;
340-
else
341-
return &dig_port->dp.aux;
342-
}
343-
344333
static int
345334
intel_dp_hdcp2_read_rx_status(struct intel_connector *connector,
346335
u8 *rx_status)
347336
{
348337
struct drm_i915_private *i915 = to_i915(connector->base.dev);
349-
struct drm_dp_aux *aux = intel_dp_hdcp_get_aux(connector);
338+
struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
339+
struct drm_dp_aux *aux = &dig_port->dp.aux;
350340
ssize_t ret;
351341

352342
ret = drm_dp_dpcd_read(aux,
@@ -454,17 +444,16 @@ int intel_dp_hdcp2_write_msg(struct intel_connector *connector,
454444
unsigned int offset;
455445
u8 *byte = buf;
456446
ssize_t ret, bytes_to_write, len;
447+
struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
448+
struct drm_dp_aux *aux = &dig_port->dp.aux;
457449
const struct hdcp2_dp_msg_data *hdcp2_msg_data;
458-
struct drm_dp_aux *aux;
459450

460451
hdcp2_msg_data = get_hdcp2_dp_msg_data(*byte);
461452
if (!hdcp2_msg_data)
462453
return -EINVAL;
463454

464455
offset = hdcp2_msg_data->offset;
465456

466-
aux = intel_dp_hdcp_get_aux(connector);
467-
468457
/* No msg_id in DP HDCP2.2 msgs */
469458
bytes_to_write = size - 1;
470459
byte++;
@@ -490,7 +479,8 @@ static
490479
ssize_t get_receiver_id_list_rx_info(struct intel_connector *connector,
491480
u32 *dev_cnt, u8 *byte)
492481
{
493-
struct drm_dp_aux *aux = intel_dp_hdcp_get_aux(connector);
482+
struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
483+
struct drm_dp_aux *aux = &dig_port->dp.aux;
494484
ssize_t ret;
495485
u8 *rx_info = byte;
496486

@@ -516,7 +506,7 @@ int intel_dp_hdcp2_read_msg(struct intel_connector *connector,
516506
struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
517507
struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
518508
struct intel_hdcp *hdcp = &connector->hdcp;
519-
struct drm_dp_aux *aux;
509+
struct drm_dp_aux *aux = &dig_port->dp.aux;
520510
unsigned int offset;
521511
u8 *byte = buf;
522512
ssize_t ret, bytes_to_recv, len;
@@ -530,8 +520,6 @@ int intel_dp_hdcp2_read_msg(struct intel_connector *connector,
530520
return -EINVAL;
531521
offset = hdcp2_msg_data->offset;
532522

533-
aux = intel_dp_hdcp_get_aux(connector);
534-
535523
ret = intel_dp_hdcp2_wait_for_msg(connector, hdcp2_msg_data);
536524
if (ret < 0)
537525
return ret;
@@ -651,12 +639,11 @@ static
651639
int intel_dp_hdcp2_capable(struct intel_connector *connector,
652640
bool *capable)
653641
{
654-
struct drm_dp_aux *aux;
642+
struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
643+
struct drm_dp_aux *aux = &dig_port->dp.aux;
655644
u8 rx_caps[3];
656645
int ret;
657646

658-
aux = intel_dp_hdcp_get_aux(connector);
659-
660647
*capable = false;
661648
ret = drm_dp_dpcd_read(aux,
662649
DP_HDCP_2_2_REG_RX_CAPS_OFFSET,

0 commit comments

Comments
 (0)