|
@@ -512,6 +512,12 @@ static void _dp_mst_update_timeslots(struct dp_mst_private *mst,
|
|
|
mst_state = to_drm_dp_mst_topology_state(mst->mst_mgr.base.state);
|
|
|
payload = drm_atomic_get_mst_payload_state(mst_state, port);
|
|
|
|
|
|
+ if (!payload) {
|
|
|
+ DP_ERR("mst bridge [%d] update_timeslots failed, null payload\n",
|
|
|
+ mst_bridge->id);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
for (i = 0; i < MAX_DP_MST_DRM_BRIDGES; i++) {
|
|
|
dp_bridge = &mst->mst_bridge[i];
|
|
|
if (mst_bridge == dp_bridge) {
|
|
@@ -645,7 +651,7 @@ static int _dp_mst_bridge_pre_enable_part1(struct dp_mst_bridge *dp_bridge)
|
|
|
#if (KERNEL_VERSION(6, 1, 0) <= LINUX_VERSION_CODE)
|
|
|
mst_state = to_drm_dp_mst_topology_state(mst->mst_mgr.base.state);
|
|
|
payload = drm_atomic_get_mst_payload_state(mst_state, port);
|
|
|
- if (payload->time_slots <= 0) {
|
|
|
+ if (!payload || payload->time_slots <= 0) {
|
|
|
DP_ERR("time slots not allocated for conn:%d\n", DP_MST_CONN_ID(dp_bridge));
|
|
|
rc = -EINVAL;
|
|
|
goto end;
|
|
@@ -694,6 +700,12 @@ static void _dp_mst_bridge_pre_enable_part2(struct dp_mst_bridge *dp_bridge)
|
|
|
mst_state = to_drm_dp_mst_topology_state(mst->mst_mgr.base.state);
|
|
|
payload = drm_atomic_get_mst_payload_state(mst_state, port);
|
|
|
|
|
|
+ if (!payload) {
|
|
|
+ DP_ERR("mst bridge [%d] _pre enable part-2 failed, null payload\n",
|
|
|
+ dp_bridge->id);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
mst->mst_fw_cbs->update_payload_part2(&mst->mst_mgr, mst_state->base.state, payload);
|
|
|
#else
|
|
|
mst->mst_fw_cbs->update_payload_part2(&mst->mst_mgr);
|
|
@@ -725,6 +737,13 @@ static void _dp_mst_bridge_pre_disable_part1(struct dp_mst_bridge *dp_bridge)
|
|
|
#if (KERNEL_VERSION(6, 1, 0) <= LINUX_VERSION_CODE)
|
|
|
mst_state = to_drm_dp_mst_topology_state(mst->mst_mgr.base.state);
|
|
|
payload = drm_atomic_get_mst_payload_state(mst_state, port);
|
|
|
+
|
|
|
+ if (!payload) {
|
|
|
+ DP_ERR("mst bridge [%d] _pre disable part-1 failed, null payload\n",
|
|
|
+ dp_bridge->id);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
#if (KERNEL_VERSION(6, 1, 25) <= LINUX_VERSION_CODE)
|
|
|
mst->mst_fw_cbs->reset_vcpi_slots(&mst->mst_mgr, mst_state, payload, payload);
|
|
|
#else
|