int mdss_dsi_clk_ctrl(struct mdss_dsi_ctrl_pdata *ctrl, int enable) { int rc = 0; mutex_lock(&ctrl->mutex); if (enable) { if (ctrl->clk_cnt == 0) { rc = mdss_dsi_enable_bus_clocks(ctrl); if (rc) { pr_err("%s: failed to enable bus clks. rc=%d\n", __func__, rc); goto error; } rc = mdss_dsi_clk_set_rate(ctrl); if (rc) { pr_err("%s: failed to set clk rates. rc=%d\n", __func__, rc); mdss_dsi_disable_bus_clocks(ctrl); goto error; } rc = mdss_dsi_clk_prepare(ctrl); if (rc) { pr_err("%s: failed to prepare clks. rc=%d\n", __func__, rc); mdss_dsi_disable_bus_clocks(ctrl); goto error; } rc = mdss_dsi_clk_enable(ctrl); if (rc) { pr_err("%s: failed to enable clks. rc=%d\n", __func__, rc); mdss_dsi_clk_unprepare(ctrl); mdss_dsi_disable_bus_clocks(ctrl); goto error; } } ctrl->clk_cnt++; } else { if (ctrl->clk_cnt) { ctrl->clk_cnt--; if (ctrl->clk_cnt == 0) { mdss_dsi_clk_disable(ctrl); mdss_dsi_clk_unprepare(ctrl); mdss_dsi_disable_bus_clocks(ctrl); } } } pr_debug("%s: ctrl ndx=%d enabled=%d clk_cnt=%d\n", __func__, ctrl->ndx, enable, ctrl->clk_cnt); error: mutex_unlock(&ctrl->mutex); return rc; }
static int mdss_dsi_enable_clks(struct mdss_dsi_ctrl_pdata *ctrl) { int rc = 0; rc = mdss_dsi_enable_bus_clocks(ctrl); if (rc) { pr_err("%s: failed to enable bus clks. rc=%d\n", __func__, rc); goto error; } rc = mdss_dsi_clk_set_rate(ctrl); if (rc) { pr_err("%s: failed to set clk rates. rc=%d\n", __func__, rc); mdss_dsi_disable_bus_clocks(ctrl); goto error; } rc = mdss_dsi_clk_prepare(ctrl); if (rc) { pr_err("%s: failed to prepare clks. rc=%d\n", __func__, rc); mdss_dsi_disable_bus_clocks(ctrl); goto error; } rc = mdss_dsi_clk_enable(ctrl); if (rc) { pr_err("%s: failed to enable clks. rc=%d\n", __func__, rc); mdss_dsi_clk_unprepare(ctrl); mdss_dsi_disable_bus_clocks(ctrl); goto error; } error: return rc; }
int mdss_dsi_clk_ctrl(struct mdss_dsi_ctrl_pdata *ctrl, int enable) { int rc = 0; // mutex_lock(&ctrl->mutex); mutex_lock(&dual_clk_lock); #if defined(CONFIG_FB_MSM_MDSS_DSI_DBG) #if defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQHD_PT_PANEL) if (ctrl->shared_pdata.broadcast_enable) xlog(__func__, ctrl->ndx, enable, ctrl->clk_cnt, left_ctrl->clk_cnt, left_ctrl->clk_cnt_by_dsi1, right_ctrl_pdata->clk_cnt); #endif #endif if (enable) { #ifdef DSI_CLK_DEBUG if (ctrl->shared_pdata.broadcast_enable) pr_err("[QCT_TEST] enable ++ : %d , (%d) (%d) , by(%d)\n", ctrl->ndx, left_ctrl->clk_cnt, right_ctrl_pdata->clk_cnt,left_ctrl->clk_cnt_by_dsi1); #endif if (ctrl->ndx == DSI_CTRL_1 && ctrl->shared_pdata.broadcast_enable) { if (left_ctrl->clk_cnt == 0 && left_ctrl->clk_cnt_by_dsi1 == 0) { mdss_dsi_enable_clks(left_ctrl); } left_ctrl->clk_cnt_by_dsi1++; if (ctrl->clk_cnt == 0) { rc = mdss_dsi_enable_clks(ctrl); if (rc) goto error; } } else if (ctrl->ndx == DSI_CTRL_0) { if (left_ctrl) { if (ctrl->clk_cnt == 0 && left_ctrl->clk_cnt_by_dsi1 == 0) { rc = mdss_dsi_enable_clks(ctrl); if (rc) goto error; } } else { if (ctrl->clk_cnt == 0) { rc = mdss_dsi_enable_clks(ctrl); if (rc) goto error; } } } ctrl->clk_cnt++; #ifdef DSI_CLK_DEBUG if (ctrl->shared_pdata.broadcast_enable) pr_err("[QCT_TEST] enable -- : %d , (%d) (%d) , by(%d)\n", ctrl->ndx, left_ctrl->clk_cnt, right_ctrl_pdata->clk_cnt,left_ctrl->clk_cnt_by_dsi1); #endif } else { #ifdef DSI_CLK_DEBUG if (ctrl->shared_pdata.broadcast_enable) pr_err("[QCT_TEST] disable ++ : %d , (%d) (%d) , by(%d)\n", ctrl->ndx, left_ctrl->clk_cnt, right_ctrl_pdata->clk_cnt,left_ctrl->clk_cnt_by_dsi1); #endif if (ctrl->ndx == DSI_CTRL_1 && ctrl->shared_pdata.broadcast_enable) { if(left_ctrl->clk_cnt_by_dsi1) { left_ctrl->clk_cnt_by_dsi1--; if(left_ctrl->clk_cnt_by_dsi1 == 0 && left_ctrl->clk_cnt == 0 ) { mdss_dsi_clk_disable(left_ctrl); mdss_dsi_clk_unprepare(left_ctrl); mdss_dsi_disable_bus_clocks(left_ctrl); } } if (ctrl->clk_cnt) { ctrl->clk_cnt--; if (ctrl->clk_cnt == 0) { mdss_dsi_clk_disable(ctrl); mdss_dsi_clk_unprepare(ctrl); mdss_dsi_disable_bus_clocks(ctrl); } } } else if (ctrl->ndx == DSI_CTRL_0) { if(ctrl->clk_cnt) { ctrl->clk_cnt--; if (left_ctrl) { if (ctrl->clk_cnt == 0 && left_ctrl->clk_cnt_by_dsi1 == 0) { mdss_dsi_clk_disable(ctrl); mdss_dsi_clk_unprepare(ctrl); mdss_dsi_disable_bus_clocks(ctrl); } } else { if (ctrl->clk_cnt == 0) { mdss_dsi_clk_disable(ctrl); mdss_dsi_clk_unprepare(ctrl); mdss_dsi_disable_bus_clocks(ctrl); } } } } #ifdef DSI_CLK_DEBUG if (ctrl->shared_pdata.broadcast_enable) pr_err("[QCT_TEST] disable -- : %d , (%d) (%d) , by(%d)\n", ctrl->ndx, left_ctrl->clk_cnt, right_ctrl_pdata->clk_cnt,left_ctrl->clk_cnt_by_dsi1); #endif } #ifdef XXX if (ctrl->shared_pdata.broadcast_enable) { pr_err("%s: ctrl ndx=%d enabled=%d clk_cnt=%d\n", __func__, left_ctrl->ndx, enable, left_ctrl->clk_cnt); pr_err("%s: DSI%d Byte rcnt=%d pcnt=%d\n", __func__, left_ctrl->ndx,(int)left_ctrl->byte_clk->count, (int)left_ctrl->byte_clk->prepare_count); } pr_err("%s: ctrl ndx=%d enabled=%d clk_cnt=%d\n", __func__, ctrl->ndx, enable, ctrl->clk_cnt); pr_err("%s: DSI%d Byte rcnt=%d pcnt=%d\n", __func__, ctrl->ndx,(int)ctrl->byte_clk->count, (int)ctrl->byte_clk->prepare_count); #endif error: //mutex_unlock(&ctrl->mutex); mutex_unlock(&dual_clk_lock); return rc; }
int mdss_dsi_clk_ctrl(struct mdss_dsi_ctrl_pdata *ctrl, int enable) { int rc = 0; // mutex_lock(&ctrl->mutex); mutex_lock(&dual_clk_lock); if (enable) { #ifdef DSI_CLK_DEBUG pr_err("[QCT_TEST] enable ++ : %d , (%d) (%d) \n", ctrl->ndx, left_ctrl->clk_cnt, right_ctrl_pdata->clk_cnt); #endif if (ctrl->ndx == DSI_CTRL_1 && ctrl->shared_pdata.broadcast_enable) { if(left_ctrl->clk_cnt==0){ mdss_dsi_enable_clks(left_ctrl); left_ctrl->clk_cnt++; } } if (ctrl->clk_cnt == 0) { rc = mdss_dsi_enable_clks(ctrl); if (rc) goto error; } ctrl->clk_cnt++; #ifdef DSI_CLK_DEBUG pr_err("[QCT_TEST] enable -- : %d , (%d) (%d)\n", ctrl->ndx, left_ctrl->clk_cnt, right_ctrl_pdata->clk_cnt); #endif } else { #ifdef DSI_CLK_DEBUG pr_err("[QCT_TEST] disable ++ : %d , (%d) (%d)\n", ctrl->ndx, left_ctrl->clk_cnt, right_ctrl_pdata->clk_cnt); #endif if (ctrl->clk_cnt) { ctrl->clk_cnt--; if (ctrl->clk_cnt == 0) { if (ctrl->ndx == DSI_CTRL_1 && ctrl->shared_pdata.broadcast_enable) { if(left_ctrl->clk_cnt){ left_ctrl->clk_cnt--; if(!left_ctrl->clk_cnt){ mdss_dsi_clk_disable(left_ctrl); mdss_dsi_clk_unprepare(left_ctrl); mdss_dsi_disable_bus_clocks(left_ctrl); } } } mdss_dsi_clk_disable(ctrl); mdss_dsi_clk_unprepare(ctrl); mdss_dsi_disable_bus_clocks(ctrl); } } #ifdef DSI_CLK_DEBUG pr_err("[QCT_TEST] disable -- : %d , (%d) (%d)\n", ctrl->ndx, left_ctrl->clk_cnt, right_ctrl_pdata->clk_cnt); #endif } #ifdef XXX if (ctrl->shared_pdata.broadcast_enable) { pr_err("%s: ctrl ndx=%d enabled=%d clk_cnt=%d\n", __func__, left_ctrl->ndx, enable, left_ctrl->clk_cnt); pr_err("%s: DSI%d Byte rcnt=%d pcnt=%d\n", __func__, left_ctrl->ndx,(int)left_ctrl->byte_clk->count, (int)left_ctrl->byte_clk->prepare_count); } pr_err("%s: ctrl ndx=%d enabled=%d clk_cnt=%d\n", __func__, ctrl->ndx, enable, ctrl->clk_cnt); pr_err("%s: DSI%d Byte rcnt=%d pcnt=%d\n", __func__, ctrl->ndx,(int)ctrl->byte_clk->count, (int)ctrl->byte_clk->prepare_count); #endif error: //mutex_unlock(&ctrl->mutex); mutex_unlock(&dual_clk_lock); return rc; }
static int mdss_dsi_enable_clks(struct mdss_dsi_ctrl_pdata *ctrl) { int rc = 0; #if defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQXGA_S6TNMR7_PT_PANEL) rc = mdss_dsi_clk_set_rate(ctrl); if (rc) { pr_err("%s: failed to set clk rates. rc=%d\n", __func__, rc); goto error; } rc = mdss_dsi_clk_prepare(ctrl); if (rc) { pr_err("%s: failed to prepare clks. rc=%d\n", __func__, rc); goto error; } rc = mdss_dsi_clk_enable(ctrl); if (rc) { pr_err("%s: failed to enable clks. rc=%d\n", __func__, rc); mdss_dsi_clk_unprepare(ctrl); goto error; } #else rc = mdss_dsi_enable_bus_clocks(ctrl); if (rc) { pr_err("%s: failed to enable bus clks. rc=%d\n", __func__, rc); goto error; } rc = mdss_dsi_clk_set_rate(ctrl); if (rc) { pr_err("%s: failed to set clk rates. rc=%d\n", __func__, rc); mdss_dsi_disable_bus_clocks(ctrl); goto error; } rc = mdss_dsi_clk_prepare(ctrl); if (rc) { pr_err("%s: failed to prepare clks. rc=%d\n", __func__, rc); mdss_dsi_disable_bus_clocks(ctrl); goto error; } rc = mdss_dsi_clk_enable(ctrl); if (rc) { pr_err("%s: failed to enable clks. rc=%d\n", __func__, rc); mdss_dsi_clk_unprepare(ctrl); mdss_dsi_disable_bus_clocks(ctrl); goto error; } #endif error: return rc; }