#include <drm/drm_dp_dual_mode_helper.h>
 #include "intel_drv.h"
 
+static struct intel_dp *lspcon_to_intel_dp(struct intel_lspcon *lspcon)
+{
+       struct intel_digital_port *dig_port =
+               container_of(lspcon, struct intel_digital_port, lspcon);
+
+       return &dig_port->dp;
+}
+
 static enum drm_lspcon_mode lspcon_get_current_mode(struct intel_lspcon *lspcon)
 {
        enum drm_lspcon_mode current_mode = DRM_LSPCON_MODE_INVALID;
-       struct i2c_adapter *adapter = &lspcon->aux->ddc;
+       struct i2c_adapter *adapter = &lspcon_to_intel_dp(lspcon)->aux.ddc;
 
        if (drm_lspcon_get_mode(adapter, ¤t_mode))
                DRM_ERROR("Error reading LSPCON mode\n");
 {
        int err;
        enum drm_lspcon_mode current_mode;
-       struct i2c_adapter *adapter = &lspcon->aux->ddc;
+       struct i2c_adapter *adapter = &lspcon_to_intel_dp(lspcon)->aux.ddc;
 
        err = drm_lspcon_get_mode(adapter, ¤t_mode);
        if (err) {
 static bool lspcon_probe(struct intel_lspcon *lspcon)
 {
        enum drm_dp_dual_mode_type adaptor_type;
-       struct i2c_adapter *adapter = &lspcon->aux->ddc;
+       struct i2c_adapter *adapter = &lspcon_to_intel_dp(lspcon)->aux.ddc;
 
        /* Lets probe the adaptor and check its type */
        adaptor_type = drm_dp_dual_mode_detect(adapter);
 
        lspcon->active = false;
        lspcon->mode = DRM_LSPCON_MODE_INVALID;
-       lspcon->aux = &dp->aux;
 
        if (!lspcon_probe(lspcon)) {
                DRM_ERROR("Failed to probe lspcon\n");