Skip to content

Commit 1fb26d0

Browse files
committed
drm/i915/dp/hdcp: convert to struct intel_display
struct intel_display will replace struct drm_i915_private as the main device pointer for display code. Switch DP HDCP code over to it. v2: Rebase Reviewed-by: Rodrigo Vivi <[email protected]> Signed-off-by: Jani Nikula <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent c214fc9 commit 1fb26d0

File tree

1 file changed

+45
-43
lines changed

1 file changed

+45
-43
lines changed

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

Lines changed: 45 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,15 @@ static
5858
int intel_dp_hdcp_write_an_aksv(struct intel_digital_port *dig_port,
5959
u8 *an)
6060
{
61-
struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
61+
struct intel_display *display = to_intel_display(dig_port);
6262
u8 aksv[DRM_HDCP_KSV_LEN] = {};
6363
ssize_t dpcd_ret;
6464

6565
/* Output An first, that's easy */
6666
dpcd_ret = drm_dp_dpcd_write(&dig_port->dp.aux, DP_AUX_HDCP_AN,
6767
an, DRM_HDCP_AN_LEN);
6868
if (dpcd_ret != DRM_HDCP_AN_LEN) {
69-
drm_dbg_kms(&i915->drm,
69+
drm_dbg_kms(display->drm,
7070
"Failed to write An over DP/AUX (%zd)\n",
7171
dpcd_ret);
7272
return dpcd_ret >= 0 ? -EIO : dpcd_ret;
@@ -82,7 +82,7 @@ int intel_dp_hdcp_write_an_aksv(struct intel_digital_port *dig_port,
8282
dpcd_ret = drm_dp_dpcd_write(&dig_port->dp.aux, DP_AUX_HDCP_AKSV,
8383
aksv, DRM_HDCP_KSV_LEN);
8484
if (dpcd_ret != DRM_HDCP_KSV_LEN) {
85-
drm_dbg_kms(&i915->drm,
85+
drm_dbg_kms(display->drm,
8686
"Failed to write Aksv over DP/AUX (%zd)\n",
8787
dpcd_ret);
8888
return dpcd_ret >= 0 ? -EIO : dpcd_ret;
@@ -93,13 +93,13 @@ int intel_dp_hdcp_write_an_aksv(struct intel_digital_port *dig_port,
9393
static int intel_dp_hdcp_read_bksv(struct intel_digital_port *dig_port,
9494
u8 *bksv)
9595
{
96-
struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
96+
struct intel_display *display = to_intel_display(dig_port);
9797
ssize_t ret;
9898

9999
ret = drm_dp_dpcd_read(&dig_port->dp.aux, DP_AUX_HDCP_BKSV, bksv,
100100
DRM_HDCP_KSV_LEN);
101101
if (ret != DRM_HDCP_KSV_LEN) {
102-
drm_dbg_kms(&i915->drm,
102+
drm_dbg_kms(display->drm,
103103
"Read Bksv from DP/AUX failed (%zd)\n", ret);
104104
return ret >= 0 ? -EIO : ret;
105105
}
@@ -109,7 +109,7 @@ static int intel_dp_hdcp_read_bksv(struct intel_digital_port *dig_port,
109109
static int intel_dp_hdcp_read_bstatus(struct intel_digital_port *dig_port,
110110
u8 *bstatus)
111111
{
112-
struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
112+
struct intel_display *display = to_intel_display(dig_port);
113113
ssize_t ret;
114114

115115
/*
@@ -120,7 +120,7 @@ static int intel_dp_hdcp_read_bstatus(struct intel_digital_port *dig_port,
120120
ret = drm_dp_dpcd_read(&dig_port->dp.aux, DP_AUX_HDCP_BINFO,
121121
bstatus, DRM_HDCP_BSTATUS_LEN);
122122
if (ret != DRM_HDCP_BSTATUS_LEN) {
123-
drm_dbg_kms(&i915->drm,
123+
drm_dbg_kms(display->drm,
124124
"Read bstatus from DP/AUX failed (%zd)\n", ret);
125125
return ret >= 0 ? -EIO : ret;
126126
}
@@ -129,15 +129,15 @@ static int intel_dp_hdcp_read_bstatus(struct intel_digital_port *dig_port,
129129

130130
static
131131
int intel_dp_hdcp_read_bcaps(struct drm_dp_aux *aux,
132-
struct drm_i915_private *i915,
132+
struct intel_display *display,
133133
u8 *bcaps)
134134
{
135135
ssize_t ret;
136136

137137
ret = drm_dp_dpcd_read(aux, DP_AUX_HDCP_BCAPS,
138138
bcaps, 1);
139139
if (ret != 1) {
140-
drm_dbg_kms(&i915->drm,
140+
drm_dbg_kms(display->drm,
141141
"Read bcaps from DP/AUX failed (%zd)\n", ret);
142142
return ret >= 0 ? -EIO : ret;
143143
}
@@ -149,11 +149,11 @@ static
149149
int intel_dp_hdcp_repeater_present(struct intel_digital_port *dig_port,
150150
bool *repeater_present)
151151
{
152-
struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
152+
struct intel_display *display = to_intel_display(dig_port);
153153
ssize_t ret;
154154
u8 bcaps;
155155

156-
ret = intel_dp_hdcp_read_bcaps(&dig_port->dp.aux, i915, &bcaps);
156+
ret = intel_dp_hdcp_read_bcaps(&dig_port->dp.aux, display, &bcaps);
157157
if (ret)
158158
return ret;
159159

@@ -165,13 +165,14 @@ static
165165
int intel_dp_hdcp_read_ri_prime(struct intel_digital_port *dig_port,
166166
u8 *ri_prime)
167167
{
168-
struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
168+
struct intel_display *display = to_intel_display(dig_port);
169169
ssize_t ret;
170170

171171
ret = drm_dp_dpcd_read(&dig_port->dp.aux, DP_AUX_HDCP_RI_PRIME,
172172
ri_prime, DRM_HDCP_RI_LEN);
173173
if (ret != DRM_HDCP_RI_LEN) {
174-
drm_dbg_kms(&i915->drm, "Read Ri' from DP/AUX failed (%zd)\n",
174+
drm_dbg_kms(display->drm,
175+
"Read Ri' from DP/AUX failed (%zd)\n",
175176
ret);
176177
return ret >= 0 ? -EIO : ret;
177178
}
@@ -182,14 +183,14 @@ static
182183
int intel_dp_hdcp_read_ksv_ready(struct intel_digital_port *dig_port,
183184
bool *ksv_ready)
184185
{
185-
struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
186+
struct intel_display *display = to_intel_display(dig_port);
186187
ssize_t ret;
187188
u8 bstatus;
188189

189190
ret = drm_dp_dpcd_read(&dig_port->dp.aux, DP_AUX_HDCP_BSTATUS,
190191
&bstatus, 1);
191192
if (ret != 1) {
192-
drm_dbg_kms(&i915->drm,
193+
drm_dbg_kms(display->drm,
193194
"Read bstatus from DP/AUX failed (%zd)\n", ret);
194195
return ret >= 0 ? -EIO : ret;
195196
}
@@ -201,7 +202,7 @@ static
201202
int intel_dp_hdcp_read_ksv_fifo(struct intel_digital_port *dig_port,
202203
int num_downstream, u8 *ksv_fifo)
203204
{
204-
struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
205+
struct intel_display *display = to_intel_display(dig_port);
205206
ssize_t ret;
206207
int i;
207208

@@ -213,7 +214,7 @@ int intel_dp_hdcp_read_ksv_fifo(struct intel_digital_port *dig_port,
213214
ksv_fifo + i * DRM_HDCP_KSV_LEN,
214215
len);
215216
if (ret != len) {
216-
drm_dbg_kms(&i915->drm,
217+
drm_dbg_kms(display->drm,
217218
"Read ksv[%d] from DP/AUX failed (%zd)\n",
218219
i, ret);
219220
return ret >= 0 ? -EIO : ret;
@@ -226,7 +227,7 @@ static
226227
int intel_dp_hdcp_read_v_prime_part(struct intel_digital_port *dig_port,
227228
int i, u32 *part)
228229
{
229-
struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
230+
struct intel_display *display = to_intel_display(dig_port);
230231
ssize_t ret;
231232

232233
if (i >= DRM_HDCP_V_PRIME_NUM_PARTS)
@@ -236,7 +237,7 @@ int intel_dp_hdcp_read_v_prime_part(struct intel_digital_port *dig_port,
236237
DP_AUX_HDCP_V_PRIME(i), part,
237238
DRM_HDCP_V_PRIME_PART_LEN);
238239
if (ret != DRM_HDCP_V_PRIME_PART_LEN) {
239-
drm_dbg_kms(&i915->drm,
240+
drm_dbg_kms(display->drm,
240241
"Read v'[%d] from DP/AUX failed (%zd)\n", i, ret);
241242
return ret >= 0 ? -EIO : ret;
242243
}
@@ -256,14 +257,14 @@ static
256257
bool intel_dp_hdcp_check_link(struct intel_digital_port *dig_port,
257258
struct intel_connector *connector)
258259
{
259-
struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
260+
struct intel_display *display = to_intel_display(dig_port);
260261
ssize_t ret;
261262
u8 bstatus;
262263

263264
ret = drm_dp_dpcd_read(&dig_port->dp.aux, DP_AUX_HDCP_BSTATUS,
264265
&bstatus, 1);
265266
if (ret != 1) {
266-
drm_dbg_kms(&i915->drm,
267+
drm_dbg_kms(display->drm,
267268
"Read bstatus from DP/AUX failed (%zd)\n", ret);
268269
return false;
269270
}
@@ -275,11 +276,11 @@ static
275276
int intel_dp_hdcp_get_capability(struct intel_digital_port *dig_port,
276277
bool *hdcp_capable)
277278
{
278-
struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
279+
struct intel_display *display = to_intel_display(dig_port);
279280
ssize_t ret;
280281
u8 bcaps;
281282

282-
ret = intel_dp_hdcp_read_bcaps(&dig_port->dp.aux, i915, &bcaps);
283+
ret = intel_dp_hdcp_read_bcaps(&dig_port->dp.aux, display, &bcaps);
283284
if (ret)
284285
return ret;
285286

@@ -342,7 +343,7 @@ static int
342343
intel_dp_hdcp2_read_rx_status(struct intel_connector *connector,
343344
u8 *rx_status)
344345
{
345-
struct drm_i915_private *i915 = to_i915(connector->base.dev);
346+
struct intel_display *display = to_intel_display(connector);
346347
struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
347348
struct drm_dp_aux *aux = &dig_port->dp.aux;
348349
ssize_t ret;
@@ -351,7 +352,7 @@ intel_dp_hdcp2_read_rx_status(struct intel_connector *connector,
351352
DP_HDCP_2_2_REG_RXSTATUS_OFFSET, rx_status,
352353
HDCP_2_2_DP_RXSTATUS_LEN);
353354
if (ret != HDCP_2_2_DP_RXSTATUS_LEN) {
354-
drm_dbg_kms(&i915->drm,
355+
drm_dbg_kms(display->drm,
355356
"Read bstatus from DP/AUX failed (%zd)\n", ret);
356357
return ret >= 0 ? -EIO : ret;
357358
}
@@ -397,7 +398,7 @@ static ssize_t
397398
intel_dp_hdcp2_wait_for_msg(struct intel_connector *connector,
398399
const struct hdcp2_dp_msg_data *hdcp2_msg_data)
399400
{
400-
struct drm_i915_private *i915 = to_i915(connector->base.dev);
401+
struct intel_display *display = to_intel_display(connector);
401402
struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
402403
struct intel_dp *dp = &dig_port->dp;
403404
struct intel_hdcp *hdcp = &dp->attached_connector->hdcp;
@@ -430,7 +431,7 @@ intel_dp_hdcp2_wait_for_msg(struct intel_connector *connector,
430431
}
431432

432433
if (ret)
433-
drm_dbg_kms(&i915->drm,
434+
drm_dbg_kms(display->drm,
434435
"msg_id %d, ret %d, timeout(mSec): %d\n",
435436
hdcp2_msg_data->msg_id, ret, timeout);
436437

@@ -514,8 +515,8 @@ static
514515
int intel_dp_hdcp2_read_msg(struct intel_connector *connector,
515516
u8 msg_id, void *buf, size_t size)
516517
{
518+
struct intel_display *display = to_intel_display(connector);
517519
struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
518-
struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
519520
struct drm_dp_aux *aux = &dig_port->dp.aux;
520521
struct intel_dp *dp = &dig_port->dp;
521522
struct intel_hdcp *hdcp = &dp->attached_connector->hdcp;
@@ -568,7 +569,7 @@ int intel_dp_hdcp2_read_msg(struct intel_connector *connector,
568569
ret = drm_dp_dpcd_read(aux, offset,
569570
(void *)byte, len);
570571
if (ret < 0) {
571-
drm_dbg_kms(&i915->drm, "msg_id %d, ret %zd\n",
572+
drm_dbg_kms(display->drm, "msg_id %d, ret %zd\n",
572573
msg_id, ret);
573574
return ret;
574575
}
@@ -581,7 +582,8 @@ int intel_dp_hdcp2_read_msg(struct intel_connector *connector,
581582
if (hdcp2_msg_data->msg_read_timeout > 0) {
582583
msg_expired = ktime_after(ktime_get_raw(), msg_end);
583584
if (msg_expired) {
584-
drm_dbg_kms(&i915->drm, "msg_id %d, entire msg read timeout(mSec): %d\n",
585+
drm_dbg_kms(display->drm,
586+
"msg_id %d, entire msg read timeout(mSec): %d\n",
585587
msg_id, hdcp2_msg_data->msg_read_timeout);
586588
return -ETIMEDOUT;
587589
}
@@ -696,7 +698,7 @@ int intel_dp_hdcp_get_remote_capability(struct intel_connector *connector,
696698
bool *hdcp_capable,
697699
bool *hdcp2_capable)
698700
{
699-
struct drm_i915_private *i915 = to_i915(connector->base.dev);
701+
struct intel_display *display = to_intel_display(connector);
700702
struct drm_dp_aux *aux;
701703
u8 bcaps;
702704
int ret;
@@ -709,10 +711,10 @@ int intel_dp_hdcp_get_remote_capability(struct intel_connector *connector,
709711
aux = &connector->port->aux;
710712
ret = _intel_dp_hdcp2_get_capability(aux, hdcp2_capable);
711713
if (ret)
712-
drm_dbg_kms(&i915->drm,
714+
drm_dbg_kms(display->drm,
713715
"HDCP2 DPCD capability read failed err: %d\n", ret);
714716

715-
ret = intel_dp_hdcp_read_bcaps(aux, i915, &bcaps);
717+
ret = intel_dp_hdcp_read_bcaps(aux, display, &bcaps);
716718
if (ret)
717719
return ret;
718720

@@ -745,16 +747,16 @@ static int
745747
intel_dp_mst_toggle_hdcp_stream_select(struct intel_connector *connector,
746748
bool enable)
747749
{
750+
struct intel_display *display = to_intel_display(connector);
748751
struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
749-
struct drm_i915_private *i915 = to_i915(connector->base.dev);
750752
struct intel_hdcp *hdcp = &connector->hdcp;
751753
int ret;
752754

753755
ret = intel_ddi_toggle_hdcp_bits(&dig_port->base,
754756
hdcp->stream_transcoder, enable,
755757
TRANS_DDI_HDCP_SELECT);
756758
if (ret)
757-
drm_err(&i915->drm, "%s HDCP stream select failed (%d)\n",
759+
drm_err(display->drm, "%s HDCP stream select failed (%d)\n",
758760
enable ? "Enable" : "Disable", ret);
759761
return ret;
760762
}
@@ -763,8 +765,8 @@ static int
763765
intel_dp_mst_hdcp_stream_encryption(struct intel_connector *connector,
764766
bool enable)
765767
{
768+
struct intel_display *display = to_intel_display(connector);
766769
struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
767-
struct drm_i915_private *i915 = to_i915(connector->base.dev);
768770
struct intel_hdcp *hdcp = &connector->hdcp;
769771
enum port port = dig_port->base.port;
770772
enum transcoder cpu_transcoder = hdcp->stream_transcoder;
@@ -780,10 +782,10 @@ intel_dp_mst_hdcp_stream_encryption(struct intel_connector *connector,
780782
return -EINVAL;
781783

782784
/* Wait for encryption confirmation */
783-
if (intel_de_wait(i915, HDCP_STATUS(i915, cpu_transcoder, port),
785+
if (intel_de_wait(display, HDCP_STATUS(display, cpu_transcoder, port),
784786
stream_enc_status, enable ? stream_enc_status : 0,
785787
HDCP_ENCRYPT_STATUS_CHANGE_TIMEOUT_MS)) {
786-
drm_err(&i915->drm, "Timed out waiting for transcoder: %s stream encryption %s\n",
788+
drm_err(display->drm, "Timed out waiting for transcoder: %s stream encryption %s\n",
787789
transcoder_name(cpu_transcoder), str_enabled_disabled(enable));
788790
return -ETIMEDOUT;
789791
}
@@ -795,29 +797,29 @@ static int
795797
intel_dp_mst_hdcp2_stream_encryption(struct intel_connector *connector,
796798
bool enable)
797799
{
800+
struct intel_display *display = to_intel_display(connector);
798801
struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
799-
struct drm_i915_private *i915 = to_i915(connector->base.dev);
800802
struct hdcp_port_data *data = &dig_port->hdcp_port_data;
801803
struct intel_hdcp *hdcp = &connector->hdcp;
802804
enum transcoder cpu_transcoder = hdcp->stream_transcoder;
803805
enum pipe pipe = (enum pipe)cpu_transcoder;
804806
enum port port = dig_port->base.port;
805807
int ret;
806808

807-
drm_WARN_ON(&i915->drm, enable &&
808-
!!(intel_de_read(i915, HDCP2_AUTH_STREAM(i915, cpu_transcoder, port))
809+
drm_WARN_ON(display->drm, enable &&
810+
!!(intel_de_read(display, HDCP2_AUTH_STREAM(display, cpu_transcoder, port))
809811
& AUTH_STREAM_TYPE) != data->streams[0].stream_type);
810812

811813
ret = intel_dp_mst_toggle_hdcp_stream_select(connector, enable);
812814
if (ret)
813815
return ret;
814816

815817
/* Wait for encryption confirmation */
816-
if (intel_de_wait(i915, HDCP2_STREAM_STATUS(i915, cpu_transcoder, pipe),
818+
if (intel_de_wait(display, HDCP2_STREAM_STATUS(display, cpu_transcoder, pipe),
817819
STREAM_ENCRYPTION_STATUS,
818820
enable ? STREAM_ENCRYPTION_STATUS : 0,
819821
HDCP_ENCRYPT_STATUS_CHANGE_TIMEOUT_MS)) {
820-
drm_err(&i915->drm, "Timed out waiting for transcoder: %s stream encryption %s\n",
822+
drm_err(display->drm, "Timed out waiting for transcoder: %s stream encryption %s\n",
821823
transcoder_name(cpu_transcoder), str_enabled_disabled(enable));
822824
return -ETIMEDOUT;
823825
}

0 commit comments

Comments
 (0)