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;
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
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;
}
Exemplo n.º 4
0
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;
}