*                     link between encoder/crtc. However in this case we need
  *                     to track crtc in the disable() hook which is called
  *                     _after_ encoder_mask is cleared.
+ * @connector:         If a mode is set, cached pointer to the active connector
  * @crtc_kickoff_cb:           Callback into CRTC that will flush & start
  *                             all CTL paths
  * @crtc_kickoff_cb_data:      Opaque user data given to crtc_kickoff_cb
        bool intfs_swapped;
 
        struct drm_crtc *crtc;
+       struct drm_connector *connector;
 
        struct dentry *debugfs_root;
        struct mutex enc_lock;
 
        cstate->num_mixers = num_lm;
 
+       dpu_enc->connector = conn_state->connector;
+
        for (i = 0; i < dpu_enc->num_phys_encs; i++) {
                struct dpu_encoder_phys *phys = dpu_enc->phys_encs[i];
 
                        return;
                }
 
-               phys->connector = conn_state->connector;
                phys->cached_mode = crtc_state->adjusted_mode;
                if (phys->ops.atomic_mode_set)
                        phys->ops.atomic_mode_set(phys, crtc_state, conn_state);
 
        if (dpu_enc->disp_info.intf_type == DRM_MODE_ENCODER_DSI &&
                        !WARN_ON(dpu_enc->num_phys_encs == 0)) {
-               unsigned bpc = dpu_enc->phys_encs[0]->connector->display_info.bpc;
+               unsigned bpc = dpu_enc->connector->display_info.bpc;
                for (i = 0; i < MAX_CHANNELS_PER_ENC; i++) {
                        if (!dpu_enc->hw_pp[i])
                                continue;
 
        dpu_encoder_resource_control(drm_enc, DPU_ENC_RC_EVENT_STOP);
 
-       for (i = 0; i < dpu_enc->num_phys_encs; i++) {
-               dpu_enc->phys_encs[i]->connector = NULL;
-       }
+       dpu_enc->connector = NULL;
 
        DPU_DEBUG_ENC(dpu_enc, "encoder disabled\n");
 
 
  *     tied to a specific panel / sub-panel. Abstract type, sub-classed by
  *     phys_vid or phys_cmd for video mode or command mode encs respectively.
  * @parent:            Pointer to the containing virtual encoder
- * @connector:         If a mode is set, cached pointer to the active connector
  * @ops:               Operations exposed to the virtual encoder
  * @parent_ops:                Callbacks exposed by the parent to the phys_enc
  * @hw_mdptop:         Hardware interface to the top registers
  */
 struct dpu_encoder_phys {
        struct drm_encoder *parent;
-       struct drm_connector *connector;
        struct dpu_encoder_phys_ops ops;
        const struct dpu_encoder_virt_ops *parent_ops;
        struct dpu_hw_mdp *hw_mdptop;