diff options
Diffstat (limited to 'drivers/gpu/drm/display')
| -rw-r--r-- | drivers/gpu/drm/display/drm_bridge_connector.c | 13 | ||||
| -rw-r--r-- | drivers/gpu/drm/display/drm_dp_helper.c | 73 | ||||
| -rw-r--r-- | drivers/gpu/drm/display/drm_dp_mst_topology.c | 62 | ||||
| -rw-r--r-- | drivers/gpu/drm/display/drm_dp_tunnel.c | 31 | ||||
| -rw-r--r-- | drivers/gpu/drm/display/drm_hdmi_state_helper.c | 6 |
5 files changed, 123 insertions, 62 deletions
diff --git a/drivers/gpu/drm/display/drm_bridge_connector.c b/drivers/gpu/drm/display/drm_bridge_connector.c index 39cc18f78eda..649969fca141 100644 --- a/drivers/gpu/drm/display/drm_bridge_connector.c +++ b/drivers/gpu/drm/display/drm_bridge_connector.c @@ -371,7 +371,7 @@ drm_bridge_connector_mode_valid(struct drm_connector *connector, } static int drm_bridge_connector_atomic_check(struct drm_connector *connector, - struct drm_atomic_state *state) + struct drm_atomic_commit *state) { struct drm_bridge_connector *bridge_connector = to_drm_bridge_connector(connector); @@ -773,8 +773,11 @@ static void drm_bridge_connector_put_bridges(struct drm_device *dev, void *data) * @drm: the DRM device * @encoder: the encoder where the bridge chain starts * - * Allocate, initialise and register a &drm_bridge_connector with the @drm - * device. The connector is associated with a chain of bridges that starts at + * Create a new &drm_bridge_connector for the @drm device. The connector is + * allocated, initialised, registered with the @drm device and attached to + * @encoder. + * + * The connector is associated with a chain of bridges that starts at * the @encoder. All bridges in the chain shall report bridge operation flags * (&drm_bridge->ops) and bridge output type (&drm_bridge->type), and none of * them may create a DRM connector directly. @@ -1055,6 +1058,10 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm, IS_ENABLED(CONFIG_DRM_DISPLAY_HDCP_HELPER)) drm_connector_attach_content_protection_property(connector, true); + ret = drm_connector_attach_encoder(connector, encoder); + if (ret) + return ERR_PTR(ret); + return connector; } EXPORT_SYMBOL_GPL(drm_bridge_connector_init); diff --git a/drivers/gpu/drm/display/drm_dp_helper.c b/drivers/gpu/drm/display/drm_dp_helper.c index a697cc227e28..9c31e14cc413 100644 --- a/drivers/gpu/drm/display/drm_dp_helper.c +++ b/drivers/gpu/drm/display/drm_dp_helper.c @@ -2546,6 +2546,8 @@ static const struct dpcd_quirk dpcd_quirk_list[] = { { OUI(0x00, 0x00, 0x00), DEVICE_ID('C', 'H', '7', '5', '1', '1'), false, BIT(DP_DPCD_QUIRK_NO_SINK_COUNT) }, /* Synaptics DP1.4 MST hubs can support DSC without virtual DPCD */ { OUI(0x90, 0xCC, 0x24), DEVICE_ID_ANY, true, BIT(DP_DPCD_QUIRK_DSC_WITHOUT_VIRTUAL_DPCD) }, + /* Realtek DP1.4 MST hubs can support DSC without virtual DPCD */ + { OUI(0x00, 0xe0, 0x4c), DEVICE_ID('D', 'p', '1', '.', '4', 0), true, BIT(DP_DPCD_QUIRK_DSC_WITHOUT_VIRTUAL_DPCD) }, /* Synaptics DP1.4 MST hubs require DSC for some modes on which it applies HBLANK expansion. */ { OUI(0x90, 0xCC, 0x24), DEVICE_ID_ANY, true, BIT(DP_DPCD_QUIRK_HBLANK_EXPANSION_REQUIRES_DSC) }, /* MediaTek panels (at least in U3224KBA) require DSC for modes with a short HBLANK on UHBR links. */ @@ -3487,31 +3489,64 @@ static const char *dp_content_type_get_name(enum dp_content_type content_type) } } +static const char *dp_sdp_type_get_name(unsigned char type) +{ + switch (type) { + case DP_SDP_AUDIO_TIMESTAMP: + return "Audio_TimeStamp"; + case DP_SDP_AUDIO_STREAM: + return "Audio_Stream"; + case DP_SDP_EXTENSION: + return "Extension"; + case DP_SDP_AUDIO_COPYMANAGEMENT: + return "Audio_CopyManagement"; + case DP_SDP_ISRC: + return "ISRC"; + case DP_SDP_VSC: + return "VSC"; + case DP_SDP_PPS: + return "PPS"; + case DP_SDP_VSC_EXT_VESA: + return "VSC_EXT_VESA"; + case DP_SDP_VSC_EXT_CEA: + return "VSC_EXT_CEA"; + case DP_SDP_ADAPTIVE_SYNC: + return "Adaptive-Sync"; + default: + return "Unknown"; + } +} + void drm_dp_vsc_sdp_log(struct drm_printer *p, const struct drm_dp_vsc_sdp *vsc) { - drm_printf(p, "DP SDP: VSC, revision %u, length %u\n", - vsc->revision, vsc->length); - drm_printf(p, " pixelformat: %s\n", - dp_pixelformat_get_name(vsc->pixelformat)); - drm_printf(p, " colorimetry: %s\n", - dp_colorimetry_get_name(vsc->pixelformat, vsc->colorimetry)); - drm_printf(p, " bpc: %u\n", vsc->bpc); - drm_printf(p, " dynamic range: %s\n", - dp_dynamic_range_get_name(vsc->dynamic_range)); - drm_printf(p, " content type: %s\n", - dp_content_type_get_name(vsc->content_type)); + drm_printf(p, "DP SDP: %s, revision %u, length %u\n", + dp_sdp_type_get_name(vsc->sdp_type), vsc->revision, vsc->length); + + drm_printf_indent(p, 1, "pixelformat: %s\n", + dp_pixelformat_get_name(vsc->pixelformat)); + drm_printf_indent(p, 1, "colorimetry: %s\n", + dp_colorimetry_get_name(vsc->pixelformat, vsc->colorimetry)); + drm_printf_indent(p, 1, "bpc: %u\n", vsc->bpc); + drm_printf_indent(p, 1, "dynamic range: %s\n", + dp_dynamic_range_get_name(vsc->dynamic_range)); + drm_printf_indent(p, 1, "content type: %s\n", + dp_content_type_get_name(vsc->content_type)); } EXPORT_SYMBOL(drm_dp_vsc_sdp_log); void drm_dp_as_sdp_log(struct drm_printer *p, const struct drm_dp_as_sdp *as_sdp) { - drm_printf(p, "DP SDP: AS_SDP, revision %u, length %u\n", - as_sdp->revision, as_sdp->length); - drm_printf(p, " vtotal: %d\n", as_sdp->vtotal); - drm_printf(p, " target_rr: %d\n", as_sdp->target_rr); - drm_printf(p, " duration_incr_ms: %d\n", as_sdp->duration_incr_ms); - drm_printf(p, " duration_decr_ms: %d\n", as_sdp->duration_decr_ms); - drm_printf(p, " operation_mode: %d\n", as_sdp->mode); + drm_printf(p, "DP SDP: %s, revision %u, length %u\n", + dp_sdp_type_get_name(as_sdp->sdp_type), as_sdp->revision, as_sdp->length); + + drm_printf_indent(p, 1, "vtotal: %d\n", as_sdp->vtotal); + drm_printf_indent(p, 1, "target rr: %d\n", as_sdp->target_rr); + drm_printf_indent(p, 1, "duration increase ms: %d\n", as_sdp->duration_incr_ms); + drm_printf_indent(p, 1, "duration decrease ms: %d\n", as_sdp->duration_decr_ms); + drm_printf_indent(p, 1, "operation mode: %d\n", as_sdp->mode); + drm_printf_indent(p, 1, "target rr divider: %s\n", + as_sdp->target_rr_divider ? "1.001" : "1.000"); + drm_printf_indent(p, 1, "coasting vtotal: %d\n", as_sdp->coasting_vtotal); } EXPORT_SYMBOL(drm_dp_as_sdp_log); @@ -4626,8 +4661,6 @@ static const struct backlight_ops dp_aux_bl_ops = { * Backlight will then be handled transparently without requiring * any intervention from the driver. * - * drm_panel_dp_aux_backlight() must be called after the call to drm_panel_init(). - * * Return: 0 on success or a negative error code on failure. */ int drm_panel_dp_aux_backlight(struct drm_panel *panel, struct drm_dp_aux *aux) diff --git a/drivers/gpu/drm/display/drm_dp_mst_topology.c b/drivers/gpu/drm/display/drm_dp_mst_topology.c index 8757972e8e24..7ce9e212770a 100644 --- a/drivers/gpu/drm/display/drm_dp_mst_topology.c +++ b/drivers/gpu/drm/display/drm_dp_mst_topology.c @@ -789,6 +789,12 @@ static bool drm_dp_sideband_append_payload(struct drm_dp_sideband_msg_rx *msg, { u8 crc4; + /* curchunk_len must be >= 1 (min 1 CRC byte) and fit in chunk[] */ + if (!msg->curchunk_len || + msg->curchunk_len > ARRAY_SIZE(msg->chunk) || + msg->curchunk_idx + replybuflen > ARRAY_SIZE(msg->chunk)) + return false; + memcpy(&msg->chunk[msg->curchunk_idx], replybuf, replybuflen); msg->curchunk_idx += replybuflen; @@ -799,6 +805,9 @@ static bool drm_dp_sideband_append_payload(struct drm_dp_sideband_msg_rx *msg, print_hex_dump(KERN_DEBUG, "wrong crc", DUMP_PREFIX_NONE, 16, 1, msg->chunk, msg->curchunk_len, false); + /* Guard against accumulated msg[] overflow */ + if (msg->curlen + msg->curchunk_len - 1 > ARRAY_SIZE(msg->msg)) + return false; /* copy chunk into bigger msg */ memcpy(&msg->msg[msg->curlen], msg->chunk, msg->curchunk_len - 1); msg->curlen += msg->curchunk_len - 1; @@ -871,7 +880,7 @@ static bool drm_dp_sideband_parse_remote_dpcd_read(struct drm_dp_sideband_msg_rx goto fail_len; repmsg->u.remote_dpcd_read_ack.num_bytes = raw->msg[idx]; idx++; - if (idx > raw->curlen) + if (idx + repmsg->u.remote_dpcd_read_ack.num_bytes > raw->curlen) goto fail_len; memcpy(repmsg->u.remote_dpcd_read_ack.bytes, &raw->msg[idx], repmsg->u.remote_dpcd_read_ack.num_bytes); @@ -907,7 +916,9 @@ static bool drm_dp_sideband_parse_remote_i2c_read_ack(struct drm_dp_sideband_msg goto fail_len; repmsg->u.remote_i2c_read_ack.num_bytes = raw->msg[idx]; idx++; - /* TODO check */ + if (idx + repmsg->u.remote_i2c_read_ack.num_bytes > raw->curlen) + goto fail_len; + memcpy(repmsg->u.remote_i2c_read_ack.bytes, &raw->msg[idx], repmsg->u.remote_i2c_read_ack.num_bytes); return true; fail_len: @@ -923,16 +934,13 @@ static bool drm_dp_sideband_parse_enum_path_resources_ack(struct drm_dp_sideband repmsg->u.path_resources.port_number = (raw->msg[idx] >> 4) & 0xf; repmsg->u.path_resources.fec_capable = raw->msg[idx] & 0x1; idx++; - if (idx > raw->curlen) + if (idx + 2 > raw->curlen) goto fail_len; repmsg->u.path_resources.full_payload_bw_number = (raw->msg[idx] << 8) | (raw->msg[idx+1]); idx += 2; - if (idx > raw->curlen) + if (idx + 2 > raw->curlen) goto fail_len; repmsg->u.path_resources.avail_payload_bw_number = (raw->msg[idx] << 8) | (raw->msg[idx+1]); - idx += 2; - if (idx > raw->curlen) - goto fail_len; return true; fail_len: DRM_DEBUG_KMS("enum resource parse length fail %d %d\n", idx, raw->curlen); @@ -950,12 +958,9 @@ static bool drm_dp_sideband_parse_allocate_payload_ack(struct drm_dp_sideband_ms goto fail_len; repmsg->u.allocate_payload.vcpi = raw->msg[idx]; idx++; - if (idx > raw->curlen) + if (idx + 2 > raw->curlen) goto fail_len; repmsg->u.allocate_payload.allocated_pbn = (raw->msg[idx] << 8) | (raw->msg[idx+1]); - idx += 2; - if (idx > raw->curlen) - goto fail_len; return true; fail_len: DRM_DEBUG_KMS("allocate payload parse length fail %d %d\n", idx, raw->curlen); @@ -969,12 +974,9 @@ static bool drm_dp_sideband_parse_query_payload_ack(struct drm_dp_sideband_msg_r repmsg->u.query_payload.port_number = (raw->msg[idx] >> 4) & 0xf; idx++; - if (idx > raw->curlen) + if (idx + 2 > raw->curlen) goto fail_len; repmsg->u.query_payload.allocated_pbn = (raw->msg[idx] << 8) | (raw->msg[idx + 1]); - idx += 2; - if (idx > raw->curlen) - goto fail_len; return true; fail_len: DRM_DEBUG_KMS("query payload parse length fail %d %d\n", idx, raw->curlen); @@ -3738,8 +3740,10 @@ void drm_dp_mst_topology_queue_probe(struct drm_dp_mst_topology_mgr *mgr) { mutex_lock(&mgr->lock); - if (drm_WARN_ON(mgr->dev, !mgr->mst_state || !mgr->mst_primary)) + if (!mgr->mst_state || !mgr->mst_primary) { + drm_dbg_kms(mgr->dev, "queue_probe skipped: topology torn down\n"); goto out_unlock; + } drm_dp_mst_topology_mgr_invalidate_mstb(mgr->mst_primary); drm_dp_mst_queue_probe_work(mgr); @@ -4433,7 +4437,7 @@ EXPORT_SYMBOL(drm_dp_mst_get_edid); * Total slots in the atomic state assigned for this port, or a negative error * code if the port no longer exists */ -int drm_dp_atomic_find_time_slots(struct drm_atomic_state *state, +int drm_dp_atomic_find_time_slots(struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port, int pbn) { @@ -4523,7 +4527,7 @@ EXPORT_SYMBOL(drm_dp_atomic_find_time_slots); * Returns: * 0 on success, negative error code otherwise */ -int drm_dp_atomic_release_time_slots(struct drm_atomic_state *state, +int drm_dp_atomic_release_time_slots(struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port) { @@ -4591,7 +4595,7 @@ EXPORT_SYMBOL(drm_dp_atomic_release_time_slots); * Returns: * 0 if all CRTC commits were retrieved successfully, negative error code otherwise */ -int drm_dp_mst_atomic_setup_commit(struct drm_atomic_state *state) +int drm_dp_mst_atomic_setup_commit(struct drm_atomic_commit *state) { struct drm_dp_mst_topology_mgr *mgr; struct drm_dp_mst_topology_state *mst_state; @@ -4641,7 +4645,7 @@ EXPORT_SYMBOL(drm_dp_mst_atomic_setup_commit); * All MST drivers must call this function after calling drm_atomic_helper_wait_for_dependencies(), * or whatever their equivalent of that is. */ -void drm_dp_mst_atomic_wait_for_dependencies(struct drm_atomic_state *state) +void drm_dp_mst_atomic_wait_for_dependencies(struct drm_atomic_commit *state) { struct drm_dp_mst_topology_state *old_mst_state, *new_mst_state; struct drm_dp_mst_topology_mgr *mgr; @@ -4698,7 +4702,7 @@ EXPORT_SYMBOL(drm_dp_mst_atomic_wait_for_dependencies); int drm_dp_mst_root_conn_atomic_check(struct drm_connector_state *new_conn_state, struct drm_dp_mst_topology_mgr *mgr) { - struct drm_atomic_state *state = new_conn_state->state; + struct drm_atomic_commit *state = new_conn_state->state; struct drm_connector_state *old_conn_state = drm_atomic_get_old_connector_state(state, new_conn_state->connector); struct drm_crtc_state *crtc_state; @@ -5436,7 +5440,7 @@ drm_dp_mst_atomic_check_payload_alloc_limits(struct drm_dp_mst_topology_mgr *mgr * See also: * drm_dp_mst_atomic_enable_dsc() */ -int drm_dp_mst_add_affected_dsc_crtcs(struct drm_atomic_state *state, struct drm_dp_mst_topology_mgr *mgr) +int drm_dp_mst_add_affected_dsc_crtcs(struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr) { struct drm_dp_mst_topology_state *mst_state; struct drm_dp_mst_atomic_payload *pos; @@ -5486,7 +5490,7 @@ EXPORT_SYMBOL(drm_dp_mst_add_affected_dsc_crtcs); /** * drm_dp_mst_atomic_enable_dsc - Set DSC Enable Flag to On/Off - * @state: Pointer to the new drm_atomic_state + * @state: Pointer to the new drm_atomic_commit * @port: Pointer to the affected MST Port * @pbn: Newly recalculated bw required for link with DSC enabled * @enable: Boolean flag to enable or disable DSC on the port @@ -5497,7 +5501,7 @@ EXPORT_SYMBOL(drm_dp_mst_add_affected_dsc_crtcs); * ports have DSC enabled * */ -int drm_dp_mst_atomic_enable_dsc(struct drm_atomic_state *state, +int drm_dp_mst_atomic_enable_dsc(struct drm_atomic_commit *state, struct drm_dp_mst_port *port, int pbn, bool enable) { @@ -5576,7 +5580,7 @@ EXPORT_SYMBOL(drm_dp_mst_atomic_enable_dsc); * - %-EINVAL, if the new state is invalid, because the root port has * too many payloads. */ -int drm_dp_mst_atomic_check_mgr(struct drm_atomic_state *state, +int drm_dp_mst_atomic_check_mgr(struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_topology_state *mst_state, struct drm_dp_mst_port **failing_port) @@ -5623,7 +5627,7 @@ EXPORT_SYMBOL(drm_dp_mst_atomic_check_mgr); * Returns: * 0 if the new state is valid, negative error code otherwise. */ -int drm_dp_mst_atomic_check(struct drm_atomic_state *state) +int drm_dp_mst_atomic_check(struct drm_atomic_commit *state) { struct drm_dp_mst_topology_mgr *mgr; struct drm_dp_mst_topology_state *mst_state; @@ -5660,7 +5664,7 @@ EXPORT_SYMBOL(drm_dp_mst_topology_state_funcs); * RETURNS: * The MST topology state or error pointer. */ -struct drm_dp_mst_topology_state *drm_atomic_get_mst_topology_state(struct drm_atomic_state *state, +struct drm_dp_mst_topology_state *drm_atomic_get_mst_topology_state(struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr) { return to_dp_mst_topology_state(drm_atomic_get_private_obj_state(state, &mgr->base)); @@ -5681,7 +5685,7 @@ EXPORT_SYMBOL(drm_atomic_get_mst_topology_state); * in the global atomic state */ struct drm_dp_mst_topology_state * -drm_atomic_get_old_mst_topology_state(struct drm_atomic_state *state, +drm_atomic_get_old_mst_topology_state(struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr) { struct drm_private_state *old_priv_state = @@ -5705,7 +5709,7 @@ EXPORT_SYMBOL(drm_atomic_get_old_mst_topology_state); * in the global atomic state */ struct drm_dp_mst_topology_state * -drm_atomic_get_new_mst_topology_state(struct drm_atomic_state *state, +drm_atomic_get_new_mst_topology_state(struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr) { struct drm_private_state *new_priv_state = diff --git a/drivers/gpu/drm/display/drm_dp_tunnel.c b/drivers/gpu/drm/display/drm_dp_tunnel.c index 6519b4244728..76c6bc84a806 100644 --- a/drivers/gpu/drm/display/drm_dp_tunnel.c +++ b/drivers/gpu/drm/display/drm_dp_tunnel.c @@ -149,6 +149,7 @@ struct drm_dp_tunnel { bool bw_alloc_enabled:1; bool has_io_error:1; bool destroyed:1; + bool pr_optimization_support:1; }; struct drm_dp_tunnel_group_state; @@ -508,6 +509,8 @@ create_tunnel(struct drm_dp_tunnel_mgr *mgr, tunnel->bw_alloc_supported = tunnel_reg_bw_alloc_supported(regs); tunnel->bw_alloc_enabled = tunnel_reg_bw_alloc_enabled(regs); + tunnel->pr_optimization_support = tunnel_reg(regs, DP_TUNNELING_CAPABILITIES) & + DP_PANEL_REPLAY_OPTIMIZATION_SUPPORT; if (!add_tunnel_to_group(mgr, drv_group_id, tunnel)) { kfree(tunnel); @@ -1036,6 +1039,20 @@ bool drm_dp_tunnel_bw_alloc_is_enabled(const struct drm_dp_tunnel *tunnel) } EXPORT_SYMBOL(drm_dp_tunnel_bw_alloc_is_enabled); +/** + * drm_dp_tunnel_pr_optimization_supported - Query the PR BW optimization support + * @tunnel: Tunnel object + * + * Query if the PR BW optimization is supported for @tunnel. + * + * Returns %true if the PR BW optimiation is supported for @tunnel. + */ +bool drm_dp_tunnel_pr_optimization_supported(const struct drm_dp_tunnel *tunnel) +{ + return tunnel && tunnel->pr_optimization_support; +} +EXPORT_SYMBOL(drm_dp_tunnel_pr_optimization_supported); + static int clear_bw_req_state(struct drm_dp_aux *aux) { u8 bw_req_mask = DP_BW_REQUEST_SUCCEEDED | DP_BW_REQUEST_FAILED; @@ -1369,7 +1386,7 @@ int drm_dp_tunnel_available_bw(const struct drm_dp_tunnel *tunnel) EXPORT_SYMBOL(drm_dp_tunnel_available_bw); static struct drm_dp_tunnel_group_state * -drm_dp_tunnel_atomic_get_group_state(struct drm_atomic_state *state, +drm_dp_tunnel_atomic_get_group_state(struct drm_atomic_commit *state, const struct drm_dp_tunnel *tunnel) { return (struct drm_dp_tunnel_group_state *) @@ -1528,7 +1545,7 @@ static const struct drm_private_state_funcs tunnel_group_funcs = { * Return the state or an ERR_PTR() error on failure. */ struct drm_dp_tunnel_state * -drm_dp_tunnel_atomic_get_state(struct drm_atomic_state *state, +drm_dp_tunnel_atomic_get_state(struct drm_atomic_commit *state, struct drm_dp_tunnel *tunnel) { struct drm_dp_tunnel_group_state *group_state; @@ -1556,7 +1573,7 @@ EXPORT_SYMBOL(drm_dp_tunnel_atomic_get_state); * Return the old state or NULL if the tunnel's atomic state is not in @state. */ struct drm_dp_tunnel_state * -drm_dp_tunnel_atomic_get_old_state(struct drm_atomic_state *state, +drm_dp_tunnel_atomic_get_old_state(struct drm_atomic_commit *state, const struct drm_dp_tunnel *tunnel) { struct drm_dp_tunnel_group_state *old_group_state; @@ -1580,7 +1597,7 @@ EXPORT_SYMBOL(drm_dp_tunnel_atomic_get_old_state); * Return the new state or NULL if the tunnel's atomic state is not in @state. */ struct drm_dp_tunnel_state * -drm_dp_tunnel_atomic_get_new_state(struct drm_atomic_state *state, +drm_dp_tunnel_atomic_get_new_state(struct drm_atomic_commit *state, const struct drm_dp_tunnel *tunnel) { struct drm_dp_tunnel_group_state *new_group_state; @@ -1706,7 +1723,7 @@ static int clear_stream_bw(struct drm_dp_tunnel_state *tunnel_state, * * Returns 0 in case of success, a negative error code otherwise. */ -int drm_dp_tunnel_atomic_set_stream_bw(struct drm_atomic_state *state, +int drm_dp_tunnel_atomic_set_stream_bw(struct drm_atomic_commit *state, struct drm_dp_tunnel *tunnel, u8 stream_id, int bw) { @@ -1783,7 +1800,7 @@ EXPORT_SYMBOL(drm_dp_tunnel_atomic_get_required_bw); * Return 0 in case of success - with the stream IDs in @stream_mask - or a * negative error code in case of failure. */ -int drm_dp_tunnel_atomic_get_group_streams_in_state(struct drm_atomic_state *state, +int drm_dp_tunnel_atomic_get_group_streams_in_state(struct drm_atomic_commit *state, const struct drm_dp_tunnel *tunnel, u32 *stream_mask) { @@ -1861,7 +1878,7 @@ drm_dp_tunnel_atomic_check_group_bw(struct drm_dp_tunnel_group_state *new_group_ * check failed - with @failed_stream_mask containing the streams failing the * check - or a negative error code otherwise. */ -int drm_dp_tunnel_atomic_check_stream_bws(struct drm_atomic_state *state, +int drm_dp_tunnel_atomic_check_stream_bws(struct drm_atomic_commit *state, u32 *failed_stream_mask) { struct drm_dp_tunnel_group_state *new_group_state; diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c b/drivers/gpu/drm/display/drm_hdmi_state_helper.c index 9f3b696aceeb..4867edbf2622 100644 --- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c +++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c @@ -348,7 +348,7 @@ output_color_format_to_hdmi_colorspace(const struct drm_connector *connector, static const struct drm_display_mode * connector_state_get_mode(const struct drm_connector_state *conn_state) { - struct drm_atomic_state *state; + struct drm_atomic_commit *state; struct drm_crtc_state *crtc_state; struct drm_crtc *crtc; @@ -858,7 +858,7 @@ hdmi_generate_infoframes(const struct drm_connector *connector, * Zero on success, or an errno code otherwise. */ int drm_atomic_helper_connector_hdmi_check(struct drm_connector *connector, - struct drm_atomic_state *state) + struct drm_atomic_commit *state) { struct drm_connector_state *old_conn_state = drm_atomic_get_old_connector_state(state, connector); @@ -1000,7 +1000,7 @@ static int write_or_clear_infoframe(struct drm_connector *connector, * Zero on success, error code on failure. */ int drm_atomic_helper_connector_hdmi_update_infoframes(struct drm_connector *connector, - struct drm_atomic_state *state) + struct drm_atomic_commit *state) { const struct drm_connector_hdmi_funcs *funcs = connector->hdmi.funcs; struct drm_connector_state *old_conn_state = |
