Merge remote-tracking branch 'origin/develop-3.10' into develop-3.10-next
[firefly-linux-kernel-4.4.55.git] / drivers / video / rockchip / transmitter / rk32_dp.c
index 3791826095f81635f99209d56352d6218b0c94ce..51461f1af80b8724e3b889e889ffee0400eb7da5 100644 (file)
 #endif
 
 /*#define EDP_BIST_MODE*/
-
+/*#define SW_LT*/
 static struct rk32_edp *rk32_edp;
 
 static int rk32_edp_clk_enable(struct rk32_edp *edp)
 {
        if (!edp->clk_on) {
-               clk_enable(edp->pd);
-               clk_enable(edp->pclk);
-               clk_enable(edp->clk_edp);
-               clk_enable(edp->clk_24m);
+               clk_prepare_enable(edp->pd);
+               clk_prepare_enable(edp->pclk);
+               clk_prepare_enable(edp->clk_edp);
+               clk_prepare_enable(edp->clk_24m);
                edp->clk_on = true;
        }
 
@@ -57,10 +57,10 @@ static int rk32_edp_clk_enable(struct rk32_edp *edp)
 static int rk32_edp_clk_disable(struct rk32_edp *edp)
 {
        if (edp->clk_on) {
-               clk_disable(edp->pclk);
-               clk_disable(edp->clk_edp);
-               clk_disable(edp->clk_24m);
-               clk_disable(edp->pd);
+               clk_disable_unprepare(edp->pclk);
+               clk_disable_unprepare(edp->clk_edp);
+               clk_disable_unprepare(edp->clk_24m);
+               clk_disable_unprepare(edp->pd);
                edp->clk_on = false;
        }
 
@@ -92,7 +92,7 @@ static int rk32_edp_init_edp(struct rk32_edp *edp)
        struct rk_screen *screen = &edp->screen;
        u32 val = 0;
 
-       screen->lcdc_id = 1;
+       rk_fb_get_prmry_screen(screen);
        if (screen->lcdc_id == 1)  /*select lcdc*/
                val = EDP_SEL_VOP_LIT | (EDP_SEL_VOP_LIT << 16);
        else
@@ -110,6 +110,7 @@ static int rk32_edp_init_edp(struct rk32_edp *edp)
        return 0;
 }
 
+#if 0
 static int rk32_edp_detect_hpd(struct rk32_edp *edp)
 {
        int timeout_loop = 0;
@@ -129,7 +130,7 @@ static int rk32_edp_detect_hpd(struct rk32_edp *edp)
 
        return 0;
 }
-
+#endif
 static int rk32_edp_read_edid(struct rk32_edp *edp)
 {
        unsigned char edid[EDID_LENGTH * 2];
@@ -252,6 +253,7 @@ static int rk32_edp_read_edid(struct rk32_edp *edp)
        return 0;
 }
 
+#if 0
 static int rk32_edp_handle_edid(struct rk32_edp *edp)
 {
        u8 buf[12];
@@ -275,6 +277,7 @@ static int rk32_edp_handle_edid(struct rk32_edp *edp)
        return retval;
 }
 
+
 static int rk32_edp_enable_rx_to_enhanced_mode(struct rk32_edp *edp,
                                                bool enable)
 {
@@ -316,6 +319,7 @@ void rk32_edp_rx_control(struct rk32_edp *edp, bool enable)
        }*/
 }
 
+
 static int rk32_edp_is_enhanced_mode_available(struct rk32_edp *edp)
 {
        u8 data;
@@ -329,6 +333,7 @@ static int rk32_edp_is_enhanced_mode_available(struct rk32_edp *edp)
        return DPCD_ENHANCED_FRAME_CAP(data);
 }
 
+
 static void rk32_edp_disable_rx_zmux(struct rk32_edp *edp)
 {
        /*rk32_edp_write_byte_to_dpcd(edp,
@@ -357,7 +362,9 @@ static int rk32_edp_set_enhanced_mode(struct rk32_edp *edp)
 
        return 0;
 }
+#endif
 
+#if defined(SW_LT)
 static int rk32_edp_training_pattern_dis(struct rk32_edp *edp)
 {
        int retval;
@@ -832,7 +839,7 @@ reduce_link_rate:
        rk32_edp_reduce_link_rate(edp);
        return -EIO;
 }
-
+#endif
 static int rk32_edp_get_max_rx_bandwidth(struct rk32_edp *edp,
                                        u8 *bandwidth)
 {
@@ -916,6 +923,7 @@ static int rk32_edp_init_training(struct rk32_edp *edp)
        return 0;
 }
 
+#if defined(SW_LT)
 static int rk32_edp_sw_link_training(struct rk32_edp *edp)
 {
        int retval = 0;
@@ -952,7 +960,7 @@ static int rk32_edp_sw_link_training(struct rk32_edp *edp)
        return retval;
 }
 
-
+#else
 static int rk32_edp_hw_link_training(struct rk32_edp *edp)
 {
        u32 cnt = 50;
@@ -977,6 +985,8 @@ static int rk32_edp_hw_link_training(struct rk32_edp *edp)
        return val;
 
 }
+#endif
+
 static int rk32_edp_set_link_train(struct rk32_edp *edp)
 {
        int retval;
@@ -984,7 +994,7 @@ static int rk32_edp_set_link_train(struct rk32_edp *edp)
        retval = rk32_edp_init_training(edp);
        if (retval < 0)
                dev_err(edp->dev, "DP LT init failed!\n");
-#if 0
+#if defined(SW_LT)
        retval = rk32_edp_sw_link_training(edp);
 #else
        retval = rk32_edp_hw_link_training(edp);
@@ -1065,6 +1075,7 @@ static int rk32_edp_config_video(struct rk32_edp *edp,
        return retval;
 }
 
+#if 0
 static int rk32_edp_enable_scramble(struct rk32_edp *edp, bool enable)
 {
        u8 data;
@@ -1102,6 +1113,7 @@ static int rk32_edp_enable_scramble(struct rk32_edp *edp, bool enable)
 
        return 0;
 }
+#endif
 
 static irqreturn_t rk32_edp_isr(int irq, void *arg)
 {
@@ -1360,10 +1372,6 @@ static int rk32_edp_probe(struct platform_device *pdev)
                dev_err(&pdev->dev, "cannot get pclk\n");
                return PTR_ERR(edp->pclk);
        }
-       clk_prepare(edp->pd);
-       clk_prepare(edp->pclk);
-       clk_prepare(edp->clk_edp);
-       clk_prepare(edp->clk_24m);
        rk32_edp_clk_enable(edp);
        if (!support_uboot_display())
                rk32_edp_pre_init();