}
 EXPORT_SYMBOL(drm_dp_dpcd_read_phy_link_status);
 
+/**
+ * drm_dp_link_power_up() - power up a DisplayPort link
+ * @aux: DisplayPort AUX channel
+ * @revision: DPCD revision supported on the link
+ *
+ * Returns 0 on success or a negative error code on failure.
+ */
+int drm_dp_link_power_up(struct drm_dp_aux *aux, unsigned char revision)
+{
+       u8 value;
+       int err;
+
+       /* DP_SET_POWER register is only available on DPCD v1.1 and later */
+       if (revision < DP_DPCD_REV_11)
+               return 0;
+
+       err = drm_dp_dpcd_readb(aux, DP_SET_POWER, &value);
+       if (err < 0)
+               return err;
+
+       value &= ~DP_SET_POWER_MASK;
+       value |= DP_SET_POWER_D0;
+
+       err = drm_dp_dpcd_writeb(aux, DP_SET_POWER, value);
+       if (err < 0)
+               return err;
+
+       /*
+        * According to the DP 1.1 specification, a "Sink Device must exit the
+        * power saving state within 1 ms" (Section 2.5.3.1, Table 5-52, "Sink
+        * Control Field" (register 0x600).
+        */
+       usleep_range(1000, 2000);
+
+       return 0;
+}
+EXPORT_SYMBOL(drm_dp_link_power_up);
+
+/**
+ * drm_dp_link_power_down() - power down a DisplayPort link
+ * @aux: DisplayPort AUX channel
+ * @revision: DPCD revision supported on the link
+ *
+ * Returns 0 on success or a negative error code on failure.
+ */
+int drm_dp_link_power_down(struct drm_dp_aux *aux, unsigned char revision)
+{
+       u8 value;
+       int err;
+
+       /* DP_SET_POWER register is only available on DPCD v1.1 and later */
+       if (revision < DP_DPCD_REV_11)
+               return 0;
+
+       err = drm_dp_dpcd_readb(aux, DP_SET_POWER, &value);
+       if (err < 0)
+               return err;
+
+       value &= ~DP_SET_POWER_MASK;
+       value |= DP_SET_POWER_D3;
+
+       err = drm_dp_dpcd_writeb(aux, DP_SET_POWER, value);
+       if (err < 0)
+               return err;
+
+       return 0;
+}
+EXPORT_SYMBOL(drm_dp_link_power_down);
+
 static int read_payload_update_status(struct drm_dp_aux *aux)
 {
        int ret;
 
        return 0;
 }
 
-/**
- * drm_dp_link_power_up() - power up a DisplayPort link
- * @aux: DisplayPort AUX channel
- * @link: pointer to a structure containing the link configuration
- *
- * Returns 0 on success or a negative error code on failure.
- */
-int drm_dp_link_power_up(struct drm_dp_aux *aux, struct drm_dp_link *link)
-{
-       u8 value;
-       int err;
-
-       /* DP_SET_POWER register is only available on DPCD v1.1 and later */
-       if (link->revision < 0x11)
-               return 0;
-
-       err = drm_dp_dpcd_readb(aux, DP_SET_POWER, &value);
-       if (err < 0)
-               return err;
-
-       value &= ~DP_SET_POWER_MASK;
-       value |= DP_SET_POWER_D0;
-
-       err = drm_dp_dpcd_writeb(aux, DP_SET_POWER, value);
-       if (err < 0)
-               return err;
-
-       /*
-        * According to the DP 1.1 specification, a "Sink Device must exit the
-        * power saving state within 1 ms" (Section 2.5.3.1, Table 5-52, "Sink
-        * Control Field" (register 0x600).
-        */
-       usleep_range(1000, 2000);
-
-       return 0;
-}
-
-/**
- * drm_dp_link_power_down() - power down a DisplayPort link
- * @aux: DisplayPort AUX channel
- * @link: pointer to a structure containing the link configuration
- *
- * Returns 0 on success or a negative error code on failure.
- */
-int drm_dp_link_power_down(struct drm_dp_aux *aux, struct drm_dp_link *link)
-{
-       u8 value;
-       int err;
-
-       /* DP_SET_POWER register is only available on DPCD v1.1 and later */
-       if (link->revision < 0x11)
-               return 0;
-
-       err = drm_dp_dpcd_readb(aux, DP_SET_POWER, &value);
-       if (err < 0)
-               return err;
-
-       value &= ~DP_SET_POWER_MASK;
-       value |= DP_SET_POWER_D3;
-
-       err = drm_dp_dpcd_writeb(aux, DP_SET_POWER, value);
-       if (err < 0)
-               return err;
-
-       return 0;
-}
-
 /**
  * drm_dp_link_configure() - configure a DisplayPort link
  * @aux: DisplayPort AUX channel
 
 void drm_dp_link_update_rates(struct drm_dp_link *link);
 
 int drm_dp_link_probe(struct drm_dp_aux *aux, struct drm_dp_link *link);
-int drm_dp_link_power_up(struct drm_dp_aux *aux, struct drm_dp_link *link);
-int drm_dp_link_power_down(struct drm_dp_aux *aux, struct drm_dp_link *link);
 int drm_dp_link_configure(struct drm_dp_aux *aux, struct drm_dp_link *link);
 int drm_dp_link_choose(struct drm_dp_link *link,
                       const struct drm_display_mode *mode,
 
         * the AUX transactions would just be timing out.
         */
        if (output->connector.status != connector_status_disconnected) {
-               err = drm_dp_link_power_down(sor->aux, &sor->link);
+               err = drm_dp_link_power_down(sor->aux, sor->link.revision);
                if (err < 0)
                        dev_err(sor->dev, "failed to power down link: %d\n",
                                err);
        else
                dev_dbg(sor->dev, "link training succeeded\n");
 
-       err = drm_dp_link_power_up(sor->aux, &sor->link);
+       err = drm_dp_link_power_up(sor->aux, sor->link.revision);
        if (err < 0)
                dev_err(sor->dev, "failed to power up DP link: %d\n", err);
 
 
 int drm_dp_dpcd_read_phy_link_status(struct drm_dp_aux *aux,
                                     enum drm_dp_phy dp_phy,
                                     u8 link_status[DP_LINK_STATUS_SIZE]);
+int drm_dp_link_power_up(struct drm_dp_aux *aux, unsigned char revision);
+int drm_dp_link_power_down(struct drm_dp_aux *aux, unsigned char revision);
 
 int drm_dp_dpcd_write_payload(struct drm_dp_aux *aux,
                              int vcpid, u8 start_time_slot, u8 time_slot_count);