Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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 <rodrigo.vivi@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241029090422.198749-1-jani.nikula@intel.com

+45 -43
+45 -43
drivers/gpu/drm/i915/display/intel_dp_hdcp.c
··· 58 58 int intel_dp_hdcp_write_an_aksv(struct intel_digital_port *dig_port, 59 59 u8 *an) 60 60 { 61 - struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); 61 + struct intel_display *display = to_intel_display(dig_port); 62 62 u8 aksv[DRM_HDCP_KSV_LEN] = {}; 63 63 ssize_t dpcd_ret; 64 64 ··· 66 66 dpcd_ret = drm_dp_dpcd_write(&dig_port->dp.aux, DP_AUX_HDCP_AN, 67 67 an, DRM_HDCP_AN_LEN); 68 68 if (dpcd_ret != DRM_HDCP_AN_LEN) { 69 - drm_dbg_kms(&i915->drm, 69 + drm_dbg_kms(display->drm, 70 70 "Failed to write An over DP/AUX (%zd)\n", 71 71 dpcd_ret); 72 72 return dpcd_ret >= 0 ? -EIO : dpcd_ret; ··· 82 82 dpcd_ret = drm_dp_dpcd_write(&dig_port->dp.aux, DP_AUX_HDCP_AKSV, 83 83 aksv, DRM_HDCP_KSV_LEN); 84 84 if (dpcd_ret != DRM_HDCP_KSV_LEN) { 85 - drm_dbg_kms(&i915->drm, 85 + drm_dbg_kms(display->drm, 86 86 "Failed to write Aksv over DP/AUX (%zd)\n", 87 87 dpcd_ret); 88 88 return dpcd_ret >= 0 ? -EIO : dpcd_ret; ··· 93 93 static int intel_dp_hdcp_read_bksv(struct intel_digital_port *dig_port, 94 94 u8 *bksv) 95 95 { 96 - struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); 96 + struct intel_display *display = to_intel_display(dig_port); 97 97 ssize_t ret; 98 98 99 99 ret = drm_dp_dpcd_read(&dig_port->dp.aux, DP_AUX_HDCP_BKSV, bksv, 100 100 DRM_HDCP_KSV_LEN); 101 101 if (ret != DRM_HDCP_KSV_LEN) { 102 - drm_dbg_kms(&i915->drm, 102 + drm_dbg_kms(display->drm, 103 103 "Read Bksv from DP/AUX failed (%zd)\n", ret); 104 104 return ret >= 0 ? -EIO : ret; 105 105 } ··· 109 109 static int intel_dp_hdcp_read_bstatus(struct intel_digital_port *dig_port, 110 110 u8 *bstatus) 111 111 { 112 - struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); 112 + struct intel_display *display = to_intel_display(dig_port); 113 113 ssize_t ret; 114 114 115 115 /* ··· 120 120 ret = drm_dp_dpcd_read(&dig_port->dp.aux, DP_AUX_HDCP_BINFO, 121 121 bstatus, DRM_HDCP_BSTATUS_LEN); 122 122 if (ret != DRM_HDCP_BSTATUS_LEN) { 123 - drm_dbg_kms(&i915->drm, 123 + drm_dbg_kms(display->drm, 124 124 "Read bstatus from DP/AUX failed (%zd)\n", ret); 125 125 return ret >= 0 ? -EIO : ret; 126 126 } ··· 129 129 130 130 static 131 131 int intel_dp_hdcp_read_bcaps(struct drm_dp_aux *aux, 132 - struct drm_i915_private *i915, 132 + struct intel_display *display, 133 133 u8 *bcaps) 134 134 { 135 135 ssize_t ret; ··· 137 137 ret = drm_dp_dpcd_read(aux, DP_AUX_HDCP_BCAPS, 138 138 bcaps, 1); 139 139 if (ret != 1) { 140 - drm_dbg_kms(&i915->drm, 140 + drm_dbg_kms(display->drm, 141 141 "Read bcaps from DP/AUX failed (%zd)\n", ret); 142 142 return ret >= 0 ? -EIO : ret; 143 143 } ··· 149 149 int intel_dp_hdcp_repeater_present(struct intel_digital_port *dig_port, 150 150 bool *repeater_present) 151 151 { 152 - struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); 152 + struct intel_display *display = to_intel_display(dig_port); 153 153 ssize_t ret; 154 154 u8 bcaps; 155 155 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); 157 157 if (ret) 158 158 return ret; 159 159 ··· 165 165 int intel_dp_hdcp_read_ri_prime(struct intel_digital_port *dig_port, 166 166 u8 *ri_prime) 167 167 { 168 - struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); 168 + struct intel_display *display = to_intel_display(dig_port); 169 169 ssize_t ret; 170 170 171 171 ret = drm_dp_dpcd_read(&dig_port->dp.aux, DP_AUX_HDCP_RI_PRIME, 172 172 ri_prime, DRM_HDCP_RI_LEN); 173 173 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", 175 176 ret); 176 177 return ret >= 0 ? -EIO : ret; 177 178 } ··· 183 182 int intel_dp_hdcp_read_ksv_ready(struct intel_digital_port *dig_port, 184 183 bool *ksv_ready) 185 184 { 186 - struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); 185 + struct intel_display *display = to_intel_display(dig_port); 187 186 ssize_t ret; 188 187 u8 bstatus; 189 188 190 189 ret = drm_dp_dpcd_read(&dig_port->dp.aux, DP_AUX_HDCP_BSTATUS, 191 190 &bstatus, 1); 192 191 if (ret != 1) { 193 - drm_dbg_kms(&i915->drm, 192 + drm_dbg_kms(display->drm, 194 193 "Read bstatus from DP/AUX failed (%zd)\n", ret); 195 194 return ret >= 0 ? -EIO : ret; 196 195 } ··· 202 201 int intel_dp_hdcp_read_ksv_fifo(struct intel_digital_port *dig_port, 203 202 int num_downstream, u8 *ksv_fifo) 204 203 { 205 - struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); 204 + struct intel_display *display = to_intel_display(dig_port); 206 205 ssize_t ret; 207 206 int i; 208 207 ··· 214 213 ksv_fifo + i * DRM_HDCP_KSV_LEN, 215 214 len); 216 215 if (ret != len) { 217 - drm_dbg_kms(&i915->drm, 216 + drm_dbg_kms(display->drm, 218 217 "Read ksv[%d] from DP/AUX failed (%zd)\n", 219 218 i, ret); 220 219 return ret >= 0 ? -EIO : ret; ··· 227 226 int intel_dp_hdcp_read_v_prime_part(struct intel_digital_port *dig_port, 228 227 int i, u32 *part) 229 228 { 230 - struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); 229 + struct intel_display *display = to_intel_display(dig_port); 231 230 ssize_t ret; 232 231 233 232 if (i >= DRM_HDCP_V_PRIME_NUM_PARTS) ··· 237 236 DP_AUX_HDCP_V_PRIME(i), part, 238 237 DRM_HDCP_V_PRIME_PART_LEN); 239 238 if (ret != DRM_HDCP_V_PRIME_PART_LEN) { 240 - drm_dbg_kms(&i915->drm, 239 + drm_dbg_kms(display->drm, 241 240 "Read v'[%d] from DP/AUX failed (%zd)\n", i, ret); 242 241 return ret >= 0 ? -EIO : ret; 243 242 } ··· 257 256 bool intel_dp_hdcp_check_link(struct intel_digital_port *dig_port, 258 257 struct intel_connector *connector) 259 258 { 260 - struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); 259 + struct intel_display *display = to_intel_display(dig_port); 261 260 ssize_t ret; 262 261 u8 bstatus; 263 262 264 263 ret = drm_dp_dpcd_read(&dig_port->dp.aux, DP_AUX_HDCP_BSTATUS, 265 264 &bstatus, 1); 266 265 if (ret != 1) { 267 - drm_dbg_kms(&i915->drm, 266 + drm_dbg_kms(display->drm, 268 267 "Read bstatus from DP/AUX failed (%zd)\n", ret); 269 268 return false; 270 269 } ··· 276 275 int intel_dp_hdcp_get_capability(struct intel_digital_port *dig_port, 277 276 bool *hdcp_capable) 278 277 { 279 - struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); 278 + struct intel_display *display = to_intel_display(dig_port); 280 279 ssize_t ret; 281 280 u8 bcaps; 282 281 283 - ret = intel_dp_hdcp_read_bcaps(&dig_port->dp.aux, i915, &bcaps); 282 + ret = intel_dp_hdcp_read_bcaps(&dig_port->dp.aux, display, &bcaps); 284 283 if (ret) 285 284 return ret; 286 285 ··· 343 342 intel_dp_hdcp2_read_rx_status(struct intel_connector *connector, 344 343 u8 *rx_status) 345 344 { 346 - struct drm_i915_private *i915 = to_i915(connector->base.dev); 345 + struct intel_display *display = to_intel_display(connector); 347 346 struct intel_digital_port *dig_port = intel_attached_dig_port(connector); 348 347 struct drm_dp_aux *aux = &dig_port->dp.aux; 349 348 ssize_t ret; ··· 352 351 DP_HDCP_2_2_REG_RXSTATUS_OFFSET, rx_status, 353 352 HDCP_2_2_DP_RXSTATUS_LEN); 354 353 if (ret != HDCP_2_2_DP_RXSTATUS_LEN) { 355 - drm_dbg_kms(&i915->drm, 354 + drm_dbg_kms(display->drm, 356 355 "Read bstatus from DP/AUX failed (%zd)\n", ret); 357 356 return ret >= 0 ? -EIO : ret; 358 357 } ··· 398 397 intel_dp_hdcp2_wait_for_msg(struct intel_connector *connector, 399 398 const struct hdcp2_dp_msg_data *hdcp2_msg_data) 400 399 { 401 - struct drm_i915_private *i915 = to_i915(connector->base.dev); 400 + struct intel_display *display = to_intel_display(connector); 402 401 struct intel_digital_port *dig_port = intel_attached_dig_port(connector); 403 402 struct intel_dp *dp = &dig_port->dp; 404 403 struct intel_hdcp *hdcp = &dp->attached_connector->hdcp; ··· 431 430 } 432 431 433 432 if (ret) 434 - drm_dbg_kms(&i915->drm, 433 + drm_dbg_kms(display->drm, 435 434 "msg_id %d, ret %d, timeout(mSec): %d\n", 436 435 hdcp2_msg_data->msg_id, ret, timeout); 437 436 ··· 515 514 int intel_dp_hdcp2_read_msg(struct intel_connector *connector, 516 515 u8 msg_id, void *buf, size_t size) 517 516 { 517 + struct intel_display *display = to_intel_display(connector); 518 518 struct intel_digital_port *dig_port = intel_attached_dig_port(connector); 519 - struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); 520 519 struct drm_dp_aux *aux = &dig_port->dp.aux; 521 520 struct intel_dp *dp = &dig_port->dp; 522 521 struct intel_hdcp *hdcp = &dp->attached_connector->hdcp; ··· 569 568 ret = drm_dp_dpcd_read(aux, offset, 570 569 (void *)byte, len); 571 570 if (ret < 0) { 572 - drm_dbg_kms(&i915->drm, "msg_id %d, ret %zd\n", 571 + drm_dbg_kms(display->drm, "msg_id %d, ret %zd\n", 573 572 msg_id, ret); 574 573 return ret; 575 574 } ··· 582 581 if (hdcp2_msg_data->msg_read_timeout > 0) { 583 582 msg_expired = ktime_after(ktime_get_raw(), msg_end); 584 583 if (msg_expired) { 585 - drm_dbg_kms(&i915->drm, "msg_id %d, entire msg read timeout(mSec): %d\n", 584 + drm_dbg_kms(display->drm, 585 + "msg_id %d, entire msg read timeout(mSec): %d\n", 586 586 msg_id, hdcp2_msg_data->msg_read_timeout); 587 587 return -ETIMEDOUT; 588 588 } ··· 698 696 bool *hdcp_capable, 699 697 bool *hdcp2_capable) 700 698 { 701 - struct drm_i915_private *i915 = to_i915(connector->base.dev); 699 + struct intel_display *display = to_intel_display(connector); 702 700 struct drm_dp_aux *aux; 703 701 u8 bcaps; 704 702 int ret; ··· 711 709 aux = &connector->port->aux; 712 710 ret = _intel_dp_hdcp2_get_capability(aux, hdcp2_capable); 713 711 if (ret) 714 - drm_dbg_kms(&i915->drm, 712 + drm_dbg_kms(display->drm, 715 713 "HDCP2 DPCD capability read failed err: %d\n", ret); 716 714 717 - ret = intel_dp_hdcp_read_bcaps(aux, i915, &bcaps); 715 + ret = intel_dp_hdcp_read_bcaps(aux, display, &bcaps); 718 716 if (ret) 719 717 return ret; 720 718 ··· 747 745 intel_dp_mst_toggle_hdcp_stream_select(struct intel_connector *connector, 748 746 bool enable) 749 747 { 748 + struct intel_display *display = to_intel_display(connector); 750 749 struct intel_digital_port *dig_port = intel_attached_dig_port(connector); 751 - struct drm_i915_private *i915 = to_i915(connector->base.dev); 752 750 struct intel_hdcp *hdcp = &connector->hdcp; 753 751 int ret; 754 752 ··· 756 754 hdcp->stream_transcoder, enable, 757 755 TRANS_DDI_HDCP_SELECT); 758 756 if (ret) 759 - drm_err(&i915->drm, "%s HDCP stream select failed (%d)\n", 757 + drm_err(display->drm, "%s HDCP stream select failed (%d)\n", 760 758 enable ? "Enable" : "Disable", ret); 761 759 return ret; 762 760 } ··· 765 763 intel_dp_mst_hdcp_stream_encryption(struct intel_connector *connector, 766 764 bool enable) 767 765 { 766 + struct intel_display *display = to_intel_display(connector); 768 767 struct intel_digital_port *dig_port = intel_attached_dig_port(connector); 769 - struct drm_i915_private *i915 = to_i915(connector->base.dev); 770 768 struct intel_hdcp *hdcp = &connector->hdcp; 771 769 enum port port = dig_port->base.port; 772 770 enum transcoder cpu_transcoder = hdcp->stream_transcoder; ··· 782 780 return -EINVAL; 783 781 784 782 /* Wait for encryption confirmation */ 785 - if (intel_de_wait(i915, HDCP_STATUS(i915, cpu_transcoder, port), 783 + if (intel_de_wait(display, HDCP_STATUS(display, cpu_transcoder, port), 786 784 stream_enc_status, enable ? stream_enc_status : 0, 787 785 HDCP_ENCRYPT_STATUS_CHANGE_TIMEOUT_MS)) { 788 - drm_err(&i915->drm, "Timed out waiting for transcoder: %s stream encryption %s\n", 786 + drm_err(display->drm, "Timed out waiting for transcoder: %s stream encryption %s\n", 789 787 transcoder_name(cpu_transcoder), str_enabled_disabled(enable)); 790 788 return -ETIMEDOUT; 791 789 } ··· 797 795 intel_dp_mst_hdcp2_stream_encryption(struct intel_connector *connector, 798 796 bool enable) 799 797 { 798 + struct intel_display *display = to_intel_display(connector); 800 799 struct intel_digital_port *dig_port = intel_attached_dig_port(connector); 801 - struct drm_i915_private *i915 = to_i915(connector->base.dev); 802 800 struct hdcp_port_data *data = &dig_port->hdcp_port_data; 803 801 struct intel_hdcp *hdcp = &connector->hdcp; 804 802 enum transcoder cpu_transcoder = hdcp->stream_transcoder; ··· 806 804 enum port port = dig_port->base.port; 807 805 int ret; 808 806 809 - drm_WARN_ON(&i915->drm, enable && 810 - !!(intel_de_read(i915, HDCP2_AUTH_STREAM(i915, cpu_transcoder, port)) 807 + drm_WARN_ON(display->drm, enable && 808 + !!(intel_de_read(display, HDCP2_AUTH_STREAM(display, cpu_transcoder, port)) 811 809 & AUTH_STREAM_TYPE) != data->streams[0].stream_type); 812 810 813 811 ret = intel_dp_mst_toggle_hdcp_stream_select(connector, enable); ··· 815 813 return ret; 816 814 817 815 /* Wait for encryption confirmation */ 818 - if (intel_de_wait(i915, HDCP2_STREAM_STATUS(i915, cpu_transcoder, pipe), 816 + if (intel_de_wait(display, HDCP2_STREAM_STATUS(display, cpu_transcoder, pipe), 819 817 STREAM_ENCRYPTION_STATUS, 820 818 enable ? STREAM_ENCRYPTION_STATUS : 0, 821 819 HDCP_ENCRYPT_STATUS_CHANGE_TIMEOUT_MS)) { 822 - drm_err(&i915->drm, "Timed out waiting for transcoder: %s stream encryption %s\n", 820 + drm_err(display->drm, "Timed out waiting for transcoder: %s stream encryption %s\n", 823 821 transcoder_name(cpu_transcoder), str_enabled_disabled(enable)); 824 822 return -ETIMEDOUT; 825 823 }