Loading msm/dsi/dsi_catalog.c +2 −3 Original line number Diff line number Diff line Loading @@ -3,7 +3,6 @@ * Copyright (c) 2015-2019, The Linux Foundation. All rights reserved. */ #define pr_fmt(fmt) "msm-dsi-catalog:[%s] " fmt, __func__ #include <linux/errno.h> #include "dsi_catalog.h" Loading Loading @@ -143,7 +142,7 @@ int dsi_catalog_ctrl_setup(struct dsi_ctrl_hw *ctrl, if (version == DSI_CTRL_VERSION_UNKNOWN || version >= DSI_CTRL_VERSION_MAX) { pr_err("Unsupported version: %d\n", version); DSI_ERR("Unsupported version: %d\n", version); return -ENOTSUPP; } Loading Loading @@ -283,7 +282,7 @@ int dsi_catalog_phy_setup(struct dsi_phy_hw *phy, if (version == DSI_PHY_VERSION_UNKNOWN || version >= DSI_PHY_VERSION_MAX) { pr_err("Unsupported version: %d\n", version); DSI_ERR("Unsupported version: %d\n", version); return -ENOTSUPP; } Loading msm/dsi/dsi_clk_manager.c +117 −115 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ #include <linux/msm-bus.h> #include <linux/pm_runtime.h> #include "dsi_clk.h" #include "dsi_defs.h" struct dsi_core_clks { struct dsi_core_clk_info clks; Loading Loading @@ -86,14 +87,14 @@ int dsi_clk_set_link_frequencies(void *client, struct link_clk_freq freq, struct dsi_clk_mngr *mngr; if (!client) { pr_err("invalid params\n"); DSI_ERR("invalid params\n"); return -EINVAL; } mngr = c->mngr; rc = _get_clk_mngr_index(mngr, index, &clk_mngr_index); if (rc) { pr_err("failed to map control index %d\n", index); DSI_ERR("failed to map control index %d\n", index); return -EINVAL; } Loading @@ -120,7 +121,7 @@ int dsi_clk_set_pixel_clk_rate(void *client, u64 pixel_clk, u32 index) mngr = c->mngr; rc = clk_set_rate(mngr->link_clks[index].hs_clks.pixel_clk, pixel_clk); if (rc) pr_err("failed to set clk rate for pixel clk, rc=%d\n", rc); DSI_ERR("failed to set clk rate for pixel clk, rc=%d\n", rc); else mngr->link_clks[index].freq.pix_clk_rate = pixel_clk; Loading @@ -144,7 +145,7 @@ int dsi_clk_set_byte_clk_rate(void *client, u64 byte_clk, u32 index) mngr = c->mngr; rc = clk_set_rate(mngr->link_clks[index].hs_clks.byte_clk, byte_clk); if (rc) pr_err("failed to set clk rate for byte clk, rc=%d\n", rc); DSI_ERR("failed to set clk rate for byte clk, rc=%d\n", rc); else mngr->link_clks[index].freq.byte_clk_rate = byte_clk; Loading @@ -153,7 +154,7 @@ int dsi_clk_set_byte_clk_rate(void *client, u64 byte_clk, u32 index) rc = clk_set_rate(mngr->link_clks[index].hs_clks.byte_intf_clk, byte_intf_rate); if (rc) pr_err("failed to set clk rate for byte intf clk=%d\n", DSI_ERR("failed to set clk rate for byte intf clk=%d\n", rc); } Loading @@ -172,13 +173,13 @@ int dsi_clk_update_parent(struct dsi_clk_link_set *parent, rc = clk_set_parent(child->byte_clk, parent->byte_clk); if (rc) { pr_err("failed to set byte clk parent\n"); DSI_ERR("failed to set byte clk parent\n"); goto error; } rc = clk_set_parent(child->pixel_clk, parent->pixel_clk); if (rc) { pr_err("failed to set pixel clk parent\n"); DSI_ERR("failed to set pixel clk parent\n"); goto error; } error: Loading @@ -197,13 +198,13 @@ int dsi_clk_prepare_enable(struct dsi_clk_link_set *clk) rc = clk_prepare_enable(clk->byte_clk); if (rc) { pr_err("failed to enable byte src clk %d\n", rc); DSI_ERR("failed to enable byte src clk %d\n", rc); return rc; } rc = clk_prepare_enable(clk->pixel_clk); if (rc) { pr_err("failed to enable pixel src clk %d\n", rc); DSI_ERR("failed to enable pixel src clk %d\n", rc); return rc; } Loading @@ -227,7 +228,7 @@ int dsi_core_clk_start(struct dsi_core_clks *c_clks) if (c_clks->clks.mdp_core_clk) { rc = clk_prepare_enable(c_clks->clks.mdp_core_clk); if (rc) { pr_err("failed to enable mdp_core_clk, rc=%d\n", rc); DSI_ERR("failed to enable mdp_core_clk, rc=%d\n", rc); goto error; } } Loading @@ -235,7 +236,7 @@ int dsi_core_clk_start(struct dsi_core_clks *c_clks) if (c_clks->clks.mnoc_clk) { rc = clk_prepare_enable(c_clks->clks.mnoc_clk); if (rc) { pr_err("failed to enable mnoc_clk, rc=%d\n", rc); DSI_ERR("failed to enable mnoc_clk, rc=%d\n", rc); goto error_disable_core_clk; } } Loading @@ -243,7 +244,7 @@ int dsi_core_clk_start(struct dsi_core_clks *c_clks) if (c_clks->clks.iface_clk) { rc = clk_prepare_enable(c_clks->clks.iface_clk); if (rc) { pr_err("failed to enable iface_clk, rc=%d\n", rc); DSI_ERR("failed to enable iface_clk, rc=%d\n", rc); goto error_disable_mnoc_clk; } } Loading @@ -251,7 +252,7 @@ int dsi_core_clk_start(struct dsi_core_clks *c_clks) if (c_clks->clks.bus_clk) { rc = clk_prepare_enable(c_clks->clks.bus_clk); if (rc) { pr_err("failed to enable bus_clk, rc=%d\n", rc); DSI_ERR("failed to enable bus_clk, rc=%d\n", rc); goto error_disable_iface_clk; } } Loading @@ -259,7 +260,7 @@ int dsi_core_clk_start(struct dsi_core_clks *c_clks) if (c_clks->clks.core_mmss_clk) { rc = clk_prepare_enable(c_clks->clks.core_mmss_clk); if (rc) { pr_err("failed to enable core_mmss_clk, rc=%d\n", rc); DSI_ERR("failed to enable core_mmss_clk, rc=%d\n", rc); goto error_disable_bus_clk; } } Loading @@ -267,7 +268,7 @@ int dsi_core_clk_start(struct dsi_core_clks *c_clks) if (c_clks->bus_handle) { rc = msm_bus_scale_client_update_request(c_clks->bus_handle, 1); if (rc) { pr_err("bus scale client enable failed, rc=%d\n", rc); DSI_ERR("bus scale client enable failed, rc=%d\n", rc); goto error_disable_mmss_clk; } } Loading Loading @@ -300,7 +301,7 @@ int dsi_core_clk_stop(struct dsi_core_clks *c_clks) if (c_clks->bus_handle) { rc = msm_bus_scale_client_update_request(c_clks->bus_handle, 0); if (rc) { pr_err("bus scale client disable failed, rc=%d\n", rc); DSI_ERR("bus scale client disable failed, rc=%d\n", rc); return rc; } } Loading Loading @@ -331,7 +332,7 @@ static int dsi_link_hs_clk_set_rate(struct dsi_link_hs_clk_info *link_hs_clks, struct dsi_link_clks *l_clks; if (index >= MAX_DSI_CTRL) { pr_err("Invalid DSI ctrl index\n"); DSI_ERR("Invalid DSI ctrl index\n"); return -EINVAL; } Loading @@ -350,14 +351,14 @@ static int dsi_link_hs_clk_set_rate(struct dsi_link_hs_clk_info *link_hs_clks, rc = clk_set_rate(link_hs_clks->byte_clk, l_clks->freq.byte_clk_rate); if (rc) { pr_err("clk_set_rate failed for byte_clk rc = %d\n", rc); DSI_ERR("clk_set_rate failed for byte_clk rc = %d\n", rc); goto error; } rc = clk_set_rate(link_hs_clks->pixel_clk, l_clks->freq.pix_clk_rate); if (rc) { pr_err("clk_set_rate failed for pixel_clk rc = %d\n", rc); DSI_ERR("clk_set_rate failed for pixel_clk rc = %d\n", rc); goto error; } Loading @@ -370,7 +371,7 @@ static int dsi_link_hs_clk_set_rate(struct dsi_link_hs_clk_info *link_hs_clks, rc = clk_set_rate(link_hs_clks->byte_intf_clk, (l_clks->freq.byte_clk_rate / 2)); if (rc) { pr_err("set_rate failed for byte_intf_clk rc = %d\n", DSI_ERR("set_rate failed for byte_intf_clk rc = %d\n", rc); goto error; } Loading @@ -385,20 +386,20 @@ static int dsi_link_hs_clk_prepare(struct dsi_link_hs_clk_info *link_hs_clks) rc = clk_prepare(link_hs_clks->byte_clk); if (rc) { pr_err("Failed to prepare dsi byte clk, rc=%d\n", rc); DSI_ERR("Failed to prepare dsi byte clk, rc=%d\n", rc); goto byte_clk_err; } rc = clk_prepare(link_hs_clks->pixel_clk); if (rc) { pr_err("Failed to prepare dsi pixel clk, rc=%d\n", rc); DSI_ERR("Failed to prepare dsi pixel clk, rc=%d\n", rc); goto pixel_clk_err; } if (link_hs_clks->byte_intf_clk) { rc = clk_prepare(link_hs_clks->byte_intf_clk); if (rc) { pr_err("Failed to prepare dsi byte intf clk, rc=%d\n", DSI_ERR("Failed to prepare dsi byte intf clk, rc=%d\n", rc); goto byte_intf_clk_err; } Loading Loading @@ -428,20 +429,20 @@ static int dsi_link_hs_clk_enable(struct dsi_link_hs_clk_info *link_hs_clks) rc = clk_enable(link_hs_clks->byte_clk); if (rc) { pr_err("Failed to enable dsi byte clk, rc=%d\n", rc); DSI_ERR("Failed to enable dsi byte clk, rc=%d\n", rc); goto byte_clk_err; } rc = clk_enable(link_hs_clks->pixel_clk); if (rc) { pr_err("Failed to enable dsi pixel clk, rc=%d\n", rc); DSI_ERR("Failed to enable dsi pixel clk, rc=%d\n", rc); goto pixel_clk_err; } if (link_hs_clks->byte_intf_clk) { rc = clk_enable(link_hs_clks->byte_intf_clk); if (rc) { pr_err("Failed to enable dsi byte intf clk, rc=%d\n", DSI_ERR("Failed to enable dsi byte intf clk, rc=%d\n", rc); goto byte_intf_clk_err; } Loading Loading @@ -474,14 +475,14 @@ static int dsi_link_hs_clk_start(struct dsi_link_hs_clk_info *link_hs_clks, int rc = 0; if (index >= MAX_DSI_CTRL) { pr_err("Invalid DSI ctrl index\n"); DSI_ERR("Invalid DSI ctrl index\n"); return -EINVAL; } if (op_type & DSI_LINK_CLK_SET_RATE) { rc = dsi_link_hs_clk_set_rate(link_hs_clks, index); if (rc) { pr_err("failed to set HS clk rates, rc = %d\n", rc); DSI_ERR("failed to set HS clk rates, rc = %d\n", rc); goto error; } } Loading @@ -489,7 +490,8 @@ static int dsi_link_hs_clk_start(struct dsi_link_hs_clk_info *link_hs_clks, if (op_type & DSI_LINK_CLK_PREPARE) { rc = dsi_link_hs_clk_prepare(link_hs_clks); if (rc) { pr_err("failed to prepare link HS clks, rc = %d\n", rc); DSI_ERR("failed to prepare link HS clks, rc = %d\n", rc); goto error; } } Loading @@ -497,12 +499,12 @@ static int dsi_link_hs_clk_start(struct dsi_link_hs_clk_info *link_hs_clks, if (op_type & DSI_LINK_CLK_ENABLE) { rc = dsi_link_hs_clk_enable(link_hs_clks); if (rc) { pr_err("failed to enable link HS clks, rc = %d\n", rc); DSI_ERR("failed to enable link HS clks, rc = %d\n", rc); goto error_unprepare; } } pr_debug("HS Link clocks are enabled\n"); DSI_DEBUG("HS Link clocks are enabled\n"); return rc; error_unprepare: dsi_link_hs_clk_unprepare(link_hs_clks); Loading @@ -522,7 +524,7 @@ static int dsi_link_hs_clk_stop(struct dsi_link_hs_clk_info *link_hs_clks) dsi_link_hs_clk_disable(link_hs_clks); dsi_link_hs_clk_unprepare(link_hs_clks); pr_debug("HS Link clocks disabled\n"); DSI_DEBUG("HS Link clocks disabled\n"); return 0; } Loading @@ -535,7 +537,7 @@ static int dsi_link_lp_clk_start(struct dsi_link_lp_clk_info *link_lp_clks, struct dsi_link_clks *l_clks; if (index >= MAX_DSI_CTRL) { pr_err("Invalid DSI ctrl index\n"); DSI_ERR("Invalid DSI ctrl index\n"); return -EINVAL; } Loading @@ -558,18 +560,18 @@ static int dsi_link_lp_clk_start(struct dsi_link_lp_clk_info *link_lp_clks, rc = clk_set_rate(link_lp_clks->esc_clk, l_clks->freq.esc_clk_rate); if (rc) { pr_err("clk_set_rate failed for esc_clk rc = %d\n", rc); DSI_ERR("clk_set_rate failed for esc_clk rc = %d\n", rc); goto error; } prepare: rc = clk_prepare_enable(link_lp_clks->esc_clk); if (rc) { pr_err("Failed to enable dsi esc clk\n"); DSI_ERR("Failed to enable dsi esc clk\n"); clk_unprepare(l_clks->lp_clks.esc_clk); } error: pr_debug("LP Link clocks are enabled\n"); DSI_DEBUG("LP Link clocks are enabled\n"); return rc; } Loading @@ -582,7 +584,7 @@ static int dsi_link_lp_clk_stop( clk_disable_unprepare(l_clks->lp_clks.esc_clk); pr_debug("LP Link clocks are disabled\n"); DSI_DEBUG("LP Link clocks are disabled\n"); return 0; } Loading @@ -603,13 +605,13 @@ static int dsi_display_core_clk_enable(struct dsi_core_clks *clks, rc = pm_runtime_get_sync(m_clks->clks.drm->dev); if (rc < 0) { pr_err("Power resource enable failed, rc=%d\n", rc); DSI_ERR("Power resource enable failed, rc=%d\n", rc); goto error; } rc = dsi_core_clk_start(m_clks); if (rc) { pr_err("failed to turn on master clocks, rc=%d\n", rc); DSI_ERR("failed to turn on master clocks, rc=%d\n", rc); goto error_disable_master_resource; } Loading @@ -621,13 +623,13 @@ static int dsi_display_core_clk_enable(struct dsi_core_clks *clks, rc = pm_runtime_get_sync(m_clks->clks.drm->dev); if (rc < 0) { pr_err("Power resource enable failed, rc=%d\n", rc); DSI_ERR("Power resource enable failed, rc=%d\n", rc); goto error_disable_master; } rc = dsi_core_clk_start(clk); if (rc) { pr_err("failed to turn on clocks, rc=%d\n", rc); DSI_ERR("failed to turn on clocks, rc=%d\n", rc); pm_runtime_put_sync(m_clks->clks.drm->dev); goto error_disable_master; } Loading Loading @@ -660,7 +662,7 @@ static int dsi_display_link_clk_enable(struct dsi_link_clks *clks, if (l_type & DSI_LINK_LP_CLK) { rc = dsi_link_lp_clk_start(&m_clks->lp_clks, master_ndx); if (rc) { pr_err("failed to turn on master lp link clocks, rc=%d\n", DSI_ERR("failed to turn on master lp link clocks, rc=%d\n", rc); goto error; } Loading @@ -670,7 +672,7 @@ static int dsi_display_link_clk_enable(struct dsi_link_clks *clks, rc = dsi_link_hs_clk_start(&m_clks->hs_clks, DSI_LINK_CLK_START, master_ndx); if (rc) { pr_err("failed to turn on master hs link clocks, rc=%d\n", DSI_ERR("failed to turn on master hs link clocks, rc=%d\n", rc); goto error; } Loading @@ -684,7 +686,7 @@ static int dsi_display_link_clk_enable(struct dsi_link_clks *clks, if (l_type & DSI_LINK_LP_CLK) { rc = dsi_link_lp_clk_start(&clk->lp_clks, i); if (rc) { pr_err("failed to turn on lp link clocks, rc=%d\n", DSI_ERR("failed to turn on lp link clocks, rc=%d\n", rc); goto error_disable_master; } Loading @@ -694,7 +696,7 @@ static int dsi_display_link_clk_enable(struct dsi_link_clks *clks, rc = dsi_link_hs_clk_start(&clk->hs_clks, DSI_LINK_CLK_START, i); if (rc) { pr_err("failed to turn on hs link clocks, rc=%d\n", DSI_ERR("failed to turn on hs link clocks, rc=%d\n", rc); goto error_disable_master; } Loading Loading @@ -735,7 +737,7 @@ static int dsi_display_core_clk_disable(struct dsi_core_clks *clks, rc = dsi_core_clk_stop(clk); if (rc) { pr_debug("failed to turn off clocks, rc=%d\n", rc); DSI_DEBUG("failed to turn off clocks, rc=%d\n", rc); goto error; } Loading @@ -744,7 +746,7 @@ static int dsi_display_core_clk_disable(struct dsi_core_clks *clks, rc = dsi_core_clk_stop(m_clks); if (rc) { pr_err("failed to turn off master clocks, rc=%d\n", rc); DSI_ERR("failed to turn off master clocks, rc=%d\n", rc); goto error; } Loading Loading @@ -778,14 +780,14 @@ static int dsi_display_link_clk_disable(struct dsi_link_clks *clks, if (l_type & DSI_LINK_LP_CLK) { rc = dsi_link_lp_clk_stop(&clk->lp_clks); if (rc) pr_err("failed to turn off lp link clocks, rc=%d\n", DSI_ERR("failed to turn off lp link clocks, rc=%d\n", rc); } if (l_type & DSI_LINK_HS_CLK) { rc = dsi_link_hs_clk_stop(&clk->hs_clks); if (rc) pr_err("failed to turn off hs link clocks, rc=%d\n", DSI_ERR("failed to turn off hs link clocks, rc=%d\n", rc); } } Loading @@ -793,14 +795,14 @@ static int dsi_display_link_clk_disable(struct dsi_link_clks *clks, if (l_type & DSI_LINK_LP_CLK) { rc = dsi_link_lp_clk_stop(&m_clks->lp_clks); if (rc) pr_err("failed to turn off master lp link clocks, rc=%d\n", DSI_ERR("failed to turn off master lp link clocks, rc=%d\n", rc); } if (l_type & DSI_LINK_HS_CLK) { rc = dsi_link_hs_clk_stop(&m_clks->hs_clks); if (rc) pr_err("failed to turn off master hs link clocks, rc=%d\n", DSI_ERR("failed to turn off master hs link clocks, rc=%d\n", rc); } Loading @@ -821,7 +823,7 @@ static int dsi_clk_update_link_clk_state(struct dsi_clk_mngr *mngr, rc = mngr->pre_clkon_cb(mngr->priv_data, DSI_LINK_CLK, l_type, l_state); if (rc) { pr_err("pre link clk on cb failed for type %d\n", DSI_ERR("pre link clk on cb failed for type %d\n", l_type); goto error; } Loading @@ -829,7 +831,7 @@ static int dsi_clk_update_link_clk_state(struct dsi_clk_mngr *mngr, rc = dsi_display_link_clk_enable(l_clks, l_type, mngr->dsi_ctrl_count, mngr->master_ndx); if (rc) { pr_err("failed to start link clk type %d rc=%d\n", DSI_ERR("failed to start link clk type %d rc=%d\n", l_type, rc); goto error; } Loading @@ -838,7 +840,7 @@ static int dsi_clk_update_link_clk_state(struct dsi_clk_mngr *mngr, rc = mngr->post_clkon_cb(mngr->priv_data, DSI_LINK_CLK, l_type, l_state); if (rc) { pr_err("post link clk on cb failed for type %d\n", DSI_ERR("post link clk on cb failed for type %d\n", l_type); goto error; } Loading @@ -848,13 +850,13 @@ static int dsi_clk_update_link_clk_state(struct dsi_clk_mngr *mngr, rc = mngr->pre_clkoff_cb(mngr->priv_data, DSI_LINK_CLK, l_type, l_state); if (rc) pr_err("pre link clk off cb failed\n"); DSI_ERR("pre link clk off cb failed\n"); } rc = dsi_display_link_clk_disable(l_clks, l_type, mngr->dsi_ctrl_count, mngr->master_ndx); if (rc) { pr_err("failed to stop link clk type %d, rc = %d\n", DSI_ERR("failed to stop link clk type %d, rc = %d\n", l_type, rc); goto error; } Loading @@ -863,7 +865,7 @@ static int dsi_clk_update_link_clk_state(struct dsi_clk_mngr *mngr, rc = mngr->post_clkoff_cb(mngr->priv_data, DSI_LINK_CLK, l_type, l_state); if (rc) pr_err("post link clk off cb failed\n"); DSI_ERR("post link clk off cb failed\n"); } } Loading @@ -882,14 +884,14 @@ static int dsi_update_core_clks(struct dsi_clk_mngr *mngr, DSI_LINK_NONE, DSI_CLK_ON); if (rc) { pr_err("failed to turn on MDP FS rc= %d\n", rc); DSI_ERR("failed to turn on MDP FS rc= %d\n", rc); goto error; } } rc = dsi_display_core_clk_enable(c_clks, mngr->dsi_ctrl_count, mngr->master_ndx); if (rc) { pr_err("failed to turn on core clks rc = %d\n", rc); DSI_ERR("failed to turn on core clks rc = %d\n", rc); goto error; } Loading @@ -899,7 +901,7 @@ static int dsi_update_core_clks(struct dsi_clk_mngr *mngr, DSI_LINK_NONE, DSI_CLK_ON); if (rc) pr_err("post clk on cb failed, rc = %d\n", rc); DSI_ERR("post clk on cb failed, rc = %d\n", rc); } mngr->core_clk_state = DSI_CLK_ON; error: Loading @@ -916,7 +918,7 @@ static int dsi_update_clk_state(struct dsi_clk_mngr *mngr, if (!mngr) return -EINVAL; pr_debug("c_state = %d, l_state = %d\n", DSI_DEBUG("c_state = %d, l_state = %d\n", c_clks ? c_state : -1, l_clks ? l_state : -1); /* * Below is the sequence to toggle DSI clocks: Loading Loading @@ -965,7 +967,7 @@ static int dsi_update_clk_state(struct dsi_clk_mngr *mngr, mngr->core_clks, mngr->dsi_ctrl_count, mngr->master_ndx); if (rc) { pr_err("core clks did not start\n"); DSI_ERR("core clks did not start\n"); goto error; } Loading @@ -973,11 +975,11 @@ static int dsi_update_clk_state(struct dsi_clk_mngr *mngr, (DSI_LINK_LP_CLK & DSI_LINK_HS_CLK), mngr->dsi_ctrl_count, mngr->master_ndx); if (rc) { pr_err("LP Link clks did not start\n"); DSI_ERR("LP Link clks did not start\n"); goto error; } l_c_on = true; pr_debug("ECG: core and Link_on\n"); DSI_DEBUG("ECG: core and Link_on\n"); } rc = dsi_clk_update_link_clk_state(mngr, l_clks, Loading Loading @@ -1009,14 +1011,14 @@ static int dsi_update_clk_state(struct dsi_clk_mngr *mngr, mngr->core_clks, mngr->dsi_ctrl_count, mngr->master_ndx); if (rc) { pr_err("core clks did not stop\n"); DSI_ERR("core clks did not stop\n"); goto error; } l_c_on = false; pr_debug("ECG: core off\n"); DSI_DEBUG("ECG: core off\n"); } else pr_debug("ECG: core off skip\n"); DSI_DEBUG("ECG: core off skip\n"); } mngr->link_clk_state = l_state; Loading @@ -1038,12 +1040,12 @@ static int dsi_update_clk_state(struct dsi_clk_mngr *mngr, rc = dsi_display_core_clk_enable(mngr->core_clks, mngr->dsi_ctrl_count, mngr->master_ndx); if (rc) { pr_err("core clks did not start\n"); DSI_ERR("core clks did not start\n"); goto error; } pr_debug("ECG: core on\n"); DSI_DEBUG("ECG: core on\n"); } else pr_debug("ECG: core on skip\n"); DSI_DEBUG("ECG: core on skip\n"); if (mngr->pre_clkoff_cb) { rc = mngr->pre_clkoff_cb(mngr->priv_data, Loading @@ -1051,13 +1053,13 @@ static int dsi_update_clk_state(struct dsi_clk_mngr *mngr, DSI_LINK_NONE, c_state); if (rc) pr_err("pre core clk off cb failed\n"); DSI_ERR("pre core clk off cb failed\n"); } rc = dsi_display_core_clk_disable(c_clks, mngr->dsi_ctrl_count, mngr->master_ndx); if (rc) { pr_err("failed to turn off core clks rc = %d\n", rc); DSI_ERR("failed to turn off core clks rc = %d\n", rc); goto error; } Loading @@ -1068,7 +1070,7 @@ static int dsi_update_clk_state(struct dsi_clk_mngr *mngr, DSI_LINK_NONE, DSI_CLK_OFF); if (rc) pr_err("post clkoff cb fail, rc = %d\n", DSI_ERR("post clkoff cb fail, rc = %d\n", rc); } } Loading Loading @@ -1129,16 +1131,16 @@ static int dsi_recheck_clk_state(struct dsi_clk_mngr *mngr) old_c_clk_state = mngr->core_clk_state; old_l_clk_state = mngr->link_clk_state; pr_debug("c_clk_state (%d -> %d)\n", old_c_clk_state, new_core_clk_state); pr_debug("l_clk_state (%d -> %d)\n", old_l_clk_state, new_link_clk_state); DSI_DEBUG("c_clk_state (%d -> %d)\n", old_c_clk_state, new_core_clk_state); DSI_DEBUG("l_clk_state (%d -> %d)\n", old_l_clk_state, new_link_clk_state); if (c_clks || l_clks) { rc = dsi_update_clk_state(mngr, c_clks, new_core_clk_state, l_clks, new_link_clk_state); if (rc) { pr_err("failed to update clock state, rc = %d\n", rc); DSI_ERR("failed to update clock state, rc = %d\n", rc); goto error; } } Loading @@ -1157,7 +1159,7 @@ int dsi_clk_req_state(void *client, enum dsi_clk_type clk, if (!client || !clk || clk > (DSI_CORE_CLK | DSI_LINK_CLK) || state > DSI_CLK_EARLY_GATE) { pr_err("Invalid params, client = %pK, clk = 0x%x, state = %d\n", DSI_ERR("Invalid params, client = %pK, clk = 0x%x, state = %d\n", client, clk, state); return -EINVAL; } Loading @@ -1165,7 +1167,7 @@ int dsi_clk_req_state(void *client, enum dsi_clk_type clk, mngr = c->mngr; mutex_lock(&mngr->clk_mutex); pr_debug("[%s]%s: CLK=%d, new_state=%d, core=%d, linkl=%d\n", DSI_DEBUG("[%s]%s: CLK=%d, new_state=%d, core=%d, linkl=%d\n", mngr->name, c->name, clk, state, c->core_clk_state, c->link_clk_state); Loading Loading @@ -1202,7 +1204,7 @@ int dsi_clk_req_state(void *client, enum dsi_clk_type clk, changed = true; c->core_clk_state = DSI_CLK_OFF; } else { pr_warn("Core refcount is zero for %s\n", DSI_WARN("Core refcount is zero for %s\n", c->name); } } else { Loading @@ -1221,7 +1223,7 @@ int dsi_clk_req_state(void *client, enum dsi_clk_type clk, changed = true; c->link_clk_state = DSI_CLK_OFF; } else { pr_warn("Link refcount is zero for %s\n", DSI_WARN("Link refcount is zero for %s\n", c->name); } } else { Loading @@ -1233,14 +1235,14 @@ int dsi_clk_req_state(void *client, enum dsi_clk_type clk, } } } pr_debug("[%s]%s: change=%d, Core (ref=%d, state=%d), Link (ref=%d, state=%d)\n", DSI_DEBUG("[%s]%s: change=%d, Core (ref=%d, state=%d), Link (ref=%d, state=%d)\n", mngr->name, c->name, changed, c->core_refcount, c->core_clk_state, c->link_refcount, c->link_clk_state); if (changed) { rc = dsi_recheck_clk_state(mngr); if (rc) pr_err("Failed to adjust clock state rc = %d\n", rc); DSI_ERR("Failed to adjust clock state rc = %d\n", rc); } mutex_unlock(&mngr->clk_mutex); Loading Loading @@ -1293,7 +1295,7 @@ int dsi_display_link_clk_force_update_ctrl(void *handle) int rc = 0; if (!handle) { pr_err("%s: Invalid arg\n", __func__); DSI_ERR("Invalid arg\n"); return -EINVAL; } Loading @@ -1312,14 +1314,14 @@ int dsi_display_clk_ctrl(void *handle, int rc = 0; if (!handle) { pr_err("%s: Invalid arg\n", __func__); DSI_ERR("Invalid arg\n"); return -EINVAL; } mutex_lock(&dsi_mngr_clk_mutex); rc = dsi_clk_req_state(handle, clk_type, clk_state); if (rc) pr_err("%s: failed set clk state, rc = %d\n", __func__, rc); DSI_ERR("failed set clk state, rc = %d\n", rc); mutex_unlock(&dsi_mngr_clk_mutex); return rc; Loading @@ -1332,7 +1334,7 @@ void *dsi_register_clk_handle(void *clk_mngr, char *client) struct dsi_clk_client_info *c; if (!mngr) { pr_err("bad params\n"); DSI_ERR("bad params\n"); return ERR_PTR(-EINVAL); } Loading @@ -1349,7 +1351,7 @@ void *dsi_register_clk_handle(void *clk_mngr, char *client) list_add(&c->list, &mngr->client_list); pr_debug("[%s]: Added new client (%s)\n", mngr->name, c->name); DSI_DEBUG("[%s]: Added new client (%s)\n", mngr->name, c->name); handle = c; error: mutex_unlock(&mngr->clk_mutex); Loading @@ -1366,19 +1368,19 @@ int dsi_deregister_clk_handle(void *client) struct dsi_clk_client_info *node = NULL; if (!client) { pr_err("Invalid params\n"); DSI_ERR("Invalid params\n"); return -EINVAL; } mngr = c->mngr; pr_debug("%s: ENTER\n", mngr->name); DSI_DEBUG("%s: ENTER\n", mngr->name); mutex_lock(&mngr->clk_mutex); c->core_clk_state = DSI_CLK_OFF; c->link_clk_state = DSI_CLK_OFF; rc = dsi_recheck_clk_state(mngr); if (rc) { pr_err("clock state recheck failed rc = %d\n", rc); DSI_ERR("clock state recheck failed rc = %d\n", rc); goto error; } Loading @@ -1387,7 +1389,7 @@ int dsi_deregister_clk_handle(void *client) list); if (node == c) { list_del(&node->list); pr_debug("Removed device (%s)\n", node->name); DSI_DEBUG("Removed device (%s)\n", node->name); kfree(node); break; } Loading @@ -1395,7 +1397,7 @@ int dsi_deregister_clk_handle(void *client) error: mutex_unlock(&mngr->clk_mutex); pr_debug("%s: EXIT, rc = %d\n", mngr->name, rc); DSI_DEBUG("%s: EXIT, rc = %d\n", mngr->name, rc); return rc; } Loading @@ -1404,7 +1406,7 @@ void dsi_display_clk_mngr_update_splash_status(void *clk_mgr, bool status) struct dsi_clk_mngr *mngr; if (!clk_mgr) { pr_err("Invalid params\n"); DSI_ERR("Invalid params\n"); return; } Loading @@ -1418,7 +1420,7 @@ void *dsi_display_clk_mngr_register(struct dsi_clk_info *info) int i = 0; if (!info) { pr_err("Invalid params\n"); DSI_ERR("Invalid params\n"); return ERR_PTR(-EINVAL); } Loading Loading @@ -1457,7 +1459,7 @@ void *dsi_display_clk_mngr_register(struct dsi_clk_info *info) memcpy(mngr->name, info->name, MAX_STRING_LEN); error: pr_debug("EXIT, rc = %ld\n", PTR_ERR(mngr)); DSI_DEBUG("EXIT, rc = %ld\n", PTR_ERR(mngr)); return mngr; } Loading @@ -1470,27 +1472,27 @@ int dsi_display_clk_mngr_deregister(void *clk_mngr) struct dsi_clk_client_info *node = NULL; if (!mngr) { pr_err("Invalid params\n"); DSI_ERR("Invalid params\n"); return -EINVAL; } pr_debug("%s: ENTER\n", mngr->name); DSI_DEBUG("%s: ENTER\n", mngr->name); mutex_lock(&mngr->clk_mutex); list_for_each_safe(position, tmp, &mngr->client_list) { node = list_entry(position, struct dsi_clk_client_info, list); list_del(&node->list); pr_debug("Removed device (%s)\n", node->name); DSI_DEBUG("Removed device (%s)\n", node->name); kfree(node); } rc = dsi_recheck_clk_state(mngr); if (rc) pr_err("failed to disable all clocks\n"); DSI_ERR("failed to disable all clocks\n"); mutex_unlock(&mngr->clk_mutex); pr_debug("%s: EXIT, rc = %d\n", mngr->name, rc); DSI_DEBUG("%s: EXIT, rc = %d\n", mngr->name, rc); kfree(mngr); return rc; } Loading
msm/dsi/dsi_catalog.c +2 −3 Original line number Diff line number Diff line Loading @@ -3,7 +3,6 @@ * Copyright (c) 2015-2019, The Linux Foundation. All rights reserved. */ #define pr_fmt(fmt) "msm-dsi-catalog:[%s] " fmt, __func__ #include <linux/errno.h> #include "dsi_catalog.h" Loading Loading @@ -143,7 +142,7 @@ int dsi_catalog_ctrl_setup(struct dsi_ctrl_hw *ctrl, if (version == DSI_CTRL_VERSION_UNKNOWN || version >= DSI_CTRL_VERSION_MAX) { pr_err("Unsupported version: %d\n", version); DSI_ERR("Unsupported version: %d\n", version); return -ENOTSUPP; } Loading Loading @@ -283,7 +282,7 @@ int dsi_catalog_phy_setup(struct dsi_phy_hw *phy, if (version == DSI_PHY_VERSION_UNKNOWN || version >= DSI_PHY_VERSION_MAX) { pr_err("Unsupported version: %d\n", version); DSI_ERR("Unsupported version: %d\n", version); return -ENOTSUPP; } Loading
msm/dsi/dsi_clk_manager.c +117 −115 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ #include <linux/msm-bus.h> #include <linux/pm_runtime.h> #include "dsi_clk.h" #include "dsi_defs.h" struct dsi_core_clks { struct dsi_core_clk_info clks; Loading Loading @@ -86,14 +87,14 @@ int dsi_clk_set_link_frequencies(void *client, struct link_clk_freq freq, struct dsi_clk_mngr *mngr; if (!client) { pr_err("invalid params\n"); DSI_ERR("invalid params\n"); return -EINVAL; } mngr = c->mngr; rc = _get_clk_mngr_index(mngr, index, &clk_mngr_index); if (rc) { pr_err("failed to map control index %d\n", index); DSI_ERR("failed to map control index %d\n", index); return -EINVAL; } Loading @@ -120,7 +121,7 @@ int dsi_clk_set_pixel_clk_rate(void *client, u64 pixel_clk, u32 index) mngr = c->mngr; rc = clk_set_rate(mngr->link_clks[index].hs_clks.pixel_clk, pixel_clk); if (rc) pr_err("failed to set clk rate for pixel clk, rc=%d\n", rc); DSI_ERR("failed to set clk rate for pixel clk, rc=%d\n", rc); else mngr->link_clks[index].freq.pix_clk_rate = pixel_clk; Loading @@ -144,7 +145,7 @@ int dsi_clk_set_byte_clk_rate(void *client, u64 byte_clk, u32 index) mngr = c->mngr; rc = clk_set_rate(mngr->link_clks[index].hs_clks.byte_clk, byte_clk); if (rc) pr_err("failed to set clk rate for byte clk, rc=%d\n", rc); DSI_ERR("failed to set clk rate for byte clk, rc=%d\n", rc); else mngr->link_clks[index].freq.byte_clk_rate = byte_clk; Loading @@ -153,7 +154,7 @@ int dsi_clk_set_byte_clk_rate(void *client, u64 byte_clk, u32 index) rc = clk_set_rate(mngr->link_clks[index].hs_clks.byte_intf_clk, byte_intf_rate); if (rc) pr_err("failed to set clk rate for byte intf clk=%d\n", DSI_ERR("failed to set clk rate for byte intf clk=%d\n", rc); } Loading @@ -172,13 +173,13 @@ int dsi_clk_update_parent(struct dsi_clk_link_set *parent, rc = clk_set_parent(child->byte_clk, parent->byte_clk); if (rc) { pr_err("failed to set byte clk parent\n"); DSI_ERR("failed to set byte clk parent\n"); goto error; } rc = clk_set_parent(child->pixel_clk, parent->pixel_clk); if (rc) { pr_err("failed to set pixel clk parent\n"); DSI_ERR("failed to set pixel clk parent\n"); goto error; } error: Loading @@ -197,13 +198,13 @@ int dsi_clk_prepare_enable(struct dsi_clk_link_set *clk) rc = clk_prepare_enable(clk->byte_clk); if (rc) { pr_err("failed to enable byte src clk %d\n", rc); DSI_ERR("failed to enable byte src clk %d\n", rc); return rc; } rc = clk_prepare_enable(clk->pixel_clk); if (rc) { pr_err("failed to enable pixel src clk %d\n", rc); DSI_ERR("failed to enable pixel src clk %d\n", rc); return rc; } Loading @@ -227,7 +228,7 @@ int dsi_core_clk_start(struct dsi_core_clks *c_clks) if (c_clks->clks.mdp_core_clk) { rc = clk_prepare_enable(c_clks->clks.mdp_core_clk); if (rc) { pr_err("failed to enable mdp_core_clk, rc=%d\n", rc); DSI_ERR("failed to enable mdp_core_clk, rc=%d\n", rc); goto error; } } Loading @@ -235,7 +236,7 @@ int dsi_core_clk_start(struct dsi_core_clks *c_clks) if (c_clks->clks.mnoc_clk) { rc = clk_prepare_enable(c_clks->clks.mnoc_clk); if (rc) { pr_err("failed to enable mnoc_clk, rc=%d\n", rc); DSI_ERR("failed to enable mnoc_clk, rc=%d\n", rc); goto error_disable_core_clk; } } Loading @@ -243,7 +244,7 @@ int dsi_core_clk_start(struct dsi_core_clks *c_clks) if (c_clks->clks.iface_clk) { rc = clk_prepare_enable(c_clks->clks.iface_clk); if (rc) { pr_err("failed to enable iface_clk, rc=%d\n", rc); DSI_ERR("failed to enable iface_clk, rc=%d\n", rc); goto error_disable_mnoc_clk; } } Loading @@ -251,7 +252,7 @@ int dsi_core_clk_start(struct dsi_core_clks *c_clks) if (c_clks->clks.bus_clk) { rc = clk_prepare_enable(c_clks->clks.bus_clk); if (rc) { pr_err("failed to enable bus_clk, rc=%d\n", rc); DSI_ERR("failed to enable bus_clk, rc=%d\n", rc); goto error_disable_iface_clk; } } Loading @@ -259,7 +260,7 @@ int dsi_core_clk_start(struct dsi_core_clks *c_clks) if (c_clks->clks.core_mmss_clk) { rc = clk_prepare_enable(c_clks->clks.core_mmss_clk); if (rc) { pr_err("failed to enable core_mmss_clk, rc=%d\n", rc); DSI_ERR("failed to enable core_mmss_clk, rc=%d\n", rc); goto error_disable_bus_clk; } } Loading @@ -267,7 +268,7 @@ int dsi_core_clk_start(struct dsi_core_clks *c_clks) if (c_clks->bus_handle) { rc = msm_bus_scale_client_update_request(c_clks->bus_handle, 1); if (rc) { pr_err("bus scale client enable failed, rc=%d\n", rc); DSI_ERR("bus scale client enable failed, rc=%d\n", rc); goto error_disable_mmss_clk; } } Loading Loading @@ -300,7 +301,7 @@ int dsi_core_clk_stop(struct dsi_core_clks *c_clks) if (c_clks->bus_handle) { rc = msm_bus_scale_client_update_request(c_clks->bus_handle, 0); if (rc) { pr_err("bus scale client disable failed, rc=%d\n", rc); DSI_ERR("bus scale client disable failed, rc=%d\n", rc); return rc; } } Loading Loading @@ -331,7 +332,7 @@ static int dsi_link_hs_clk_set_rate(struct dsi_link_hs_clk_info *link_hs_clks, struct dsi_link_clks *l_clks; if (index >= MAX_DSI_CTRL) { pr_err("Invalid DSI ctrl index\n"); DSI_ERR("Invalid DSI ctrl index\n"); return -EINVAL; } Loading @@ -350,14 +351,14 @@ static int dsi_link_hs_clk_set_rate(struct dsi_link_hs_clk_info *link_hs_clks, rc = clk_set_rate(link_hs_clks->byte_clk, l_clks->freq.byte_clk_rate); if (rc) { pr_err("clk_set_rate failed for byte_clk rc = %d\n", rc); DSI_ERR("clk_set_rate failed for byte_clk rc = %d\n", rc); goto error; } rc = clk_set_rate(link_hs_clks->pixel_clk, l_clks->freq.pix_clk_rate); if (rc) { pr_err("clk_set_rate failed for pixel_clk rc = %d\n", rc); DSI_ERR("clk_set_rate failed for pixel_clk rc = %d\n", rc); goto error; } Loading @@ -370,7 +371,7 @@ static int dsi_link_hs_clk_set_rate(struct dsi_link_hs_clk_info *link_hs_clks, rc = clk_set_rate(link_hs_clks->byte_intf_clk, (l_clks->freq.byte_clk_rate / 2)); if (rc) { pr_err("set_rate failed for byte_intf_clk rc = %d\n", DSI_ERR("set_rate failed for byte_intf_clk rc = %d\n", rc); goto error; } Loading @@ -385,20 +386,20 @@ static int dsi_link_hs_clk_prepare(struct dsi_link_hs_clk_info *link_hs_clks) rc = clk_prepare(link_hs_clks->byte_clk); if (rc) { pr_err("Failed to prepare dsi byte clk, rc=%d\n", rc); DSI_ERR("Failed to prepare dsi byte clk, rc=%d\n", rc); goto byte_clk_err; } rc = clk_prepare(link_hs_clks->pixel_clk); if (rc) { pr_err("Failed to prepare dsi pixel clk, rc=%d\n", rc); DSI_ERR("Failed to prepare dsi pixel clk, rc=%d\n", rc); goto pixel_clk_err; } if (link_hs_clks->byte_intf_clk) { rc = clk_prepare(link_hs_clks->byte_intf_clk); if (rc) { pr_err("Failed to prepare dsi byte intf clk, rc=%d\n", DSI_ERR("Failed to prepare dsi byte intf clk, rc=%d\n", rc); goto byte_intf_clk_err; } Loading Loading @@ -428,20 +429,20 @@ static int dsi_link_hs_clk_enable(struct dsi_link_hs_clk_info *link_hs_clks) rc = clk_enable(link_hs_clks->byte_clk); if (rc) { pr_err("Failed to enable dsi byte clk, rc=%d\n", rc); DSI_ERR("Failed to enable dsi byte clk, rc=%d\n", rc); goto byte_clk_err; } rc = clk_enable(link_hs_clks->pixel_clk); if (rc) { pr_err("Failed to enable dsi pixel clk, rc=%d\n", rc); DSI_ERR("Failed to enable dsi pixel clk, rc=%d\n", rc); goto pixel_clk_err; } if (link_hs_clks->byte_intf_clk) { rc = clk_enable(link_hs_clks->byte_intf_clk); if (rc) { pr_err("Failed to enable dsi byte intf clk, rc=%d\n", DSI_ERR("Failed to enable dsi byte intf clk, rc=%d\n", rc); goto byte_intf_clk_err; } Loading Loading @@ -474,14 +475,14 @@ static int dsi_link_hs_clk_start(struct dsi_link_hs_clk_info *link_hs_clks, int rc = 0; if (index >= MAX_DSI_CTRL) { pr_err("Invalid DSI ctrl index\n"); DSI_ERR("Invalid DSI ctrl index\n"); return -EINVAL; } if (op_type & DSI_LINK_CLK_SET_RATE) { rc = dsi_link_hs_clk_set_rate(link_hs_clks, index); if (rc) { pr_err("failed to set HS clk rates, rc = %d\n", rc); DSI_ERR("failed to set HS clk rates, rc = %d\n", rc); goto error; } } Loading @@ -489,7 +490,8 @@ static int dsi_link_hs_clk_start(struct dsi_link_hs_clk_info *link_hs_clks, if (op_type & DSI_LINK_CLK_PREPARE) { rc = dsi_link_hs_clk_prepare(link_hs_clks); if (rc) { pr_err("failed to prepare link HS clks, rc = %d\n", rc); DSI_ERR("failed to prepare link HS clks, rc = %d\n", rc); goto error; } } Loading @@ -497,12 +499,12 @@ static int dsi_link_hs_clk_start(struct dsi_link_hs_clk_info *link_hs_clks, if (op_type & DSI_LINK_CLK_ENABLE) { rc = dsi_link_hs_clk_enable(link_hs_clks); if (rc) { pr_err("failed to enable link HS clks, rc = %d\n", rc); DSI_ERR("failed to enable link HS clks, rc = %d\n", rc); goto error_unprepare; } } pr_debug("HS Link clocks are enabled\n"); DSI_DEBUG("HS Link clocks are enabled\n"); return rc; error_unprepare: dsi_link_hs_clk_unprepare(link_hs_clks); Loading @@ -522,7 +524,7 @@ static int dsi_link_hs_clk_stop(struct dsi_link_hs_clk_info *link_hs_clks) dsi_link_hs_clk_disable(link_hs_clks); dsi_link_hs_clk_unprepare(link_hs_clks); pr_debug("HS Link clocks disabled\n"); DSI_DEBUG("HS Link clocks disabled\n"); return 0; } Loading @@ -535,7 +537,7 @@ static int dsi_link_lp_clk_start(struct dsi_link_lp_clk_info *link_lp_clks, struct dsi_link_clks *l_clks; if (index >= MAX_DSI_CTRL) { pr_err("Invalid DSI ctrl index\n"); DSI_ERR("Invalid DSI ctrl index\n"); return -EINVAL; } Loading @@ -558,18 +560,18 @@ static int dsi_link_lp_clk_start(struct dsi_link_lp_clk_info *link_lp_clks, rc = clk_set_rate(link_lp_clks->esc_clk, l_clks->freq.esc_clk_rate); if (rc) { pr_err("clk_set_rate failed for esc_clk rc = %d\n", rc); DSI_ERR("clk_set_rate failed for esc_clk rc = %d\n", rc); goto error; } prepare: rc = clk_prepare_enable(link_lp_clks->esc_clk); if (rc) { pr_err("Failed to enable dsi esc clk\n"); DSI_ERR("Failed to enable dsi esc clk\n"); clk_unprepare(l_clks->lp_clks.esc_clk); } error: pr_debug("LP Link clocks are enabled\n"); DSI_DEBUG("LP Link clocks are enabled\n"); return rc; } Loading @@ -582,7 +584,7 @@ static int dsi_link_lp_clk_stop( clk_disable_unprepare(l_clks->lp_clks.esc_clk); pr_debug("LP Link clocks are disabled\n"); DSI_DEBUG("LP Link clocks are disabled\n"); return 0; } Loading @@ -603,13 +605,13 @@ static int dsi_display_core_clk_enable(struct dsi_core_clks *clks, rc = pm_runtime_get_sync(m_clks->clks.drm->dev); if (rc < 0) { pr_err("Power resource enable failed, rc=%d\n", rc); DSI_ERR("Power resource enable failed, rc=%d\n", rc); goto error; } rc = dsi_core_clk_start(m_clks); if (rc) { pr_err("failed to turn on master clocks, rc=%d\n", rc); DSI_ERR("failed to turn on master clocks, rc=%d\n", rc); goto error_disable_master_resource; } Loading @@ -621,13 +623,13 @@ static int dsi_display_core_clk_enable(struct dsi_core_clks *clks, rc = pm_runtime_get_sync(m_clks->clks.drm->dev); if (rc < 0) { pr_err("Power resource enable failed, rc=%d\n", rc); DSI_ERR("Power resource enable failed, rc=%d\n", rc); goto error_disable_master; } rc = dsi_core_clk_start(clk); if (rc) { pr_err("failed to turn on clocks, rc=%d\n", rc); DSI_ERR("failed to turn on clocks, rc=%d\n", rc); pm_runtime_put_sync(m_clks->clks.drm->dev); goto error_disable_master; } Loading Loading @@ -660,7 +662,7 @@ static int dsi_display_link_clk_enable(struct dsi_link_clks *clks, if (l_type & DSI_LINK_LP_CLK) { rc = dsi_link_lp_clk_start(&m_clks->lp_clks, master_ndx); if (rc) { pr_err("failed to turn on master lp link clocks, rc=%d\n", DSI_ERR("failed to turn on master lp link clocks, rc=%d\n", rc); goto error; } Loading @@ -670,7 +672,7 @@ static int dsi_display_link_clk_enable(struct dsi_link_clks *clks, rc = dsi_link_hs_clk_start(&m_clks->hs_clks, DSI_LINK_CLK_START, master_ndx); if (rc) { pr_err("failed to turn on master hs link clocks, rc=%d\n", DSI_ERR("failed to turn on master hs link clocks, rc=%d\n", rc); goto error; } Loading @@ -684,7 +686,7 @@ static int dsi_display_link_clk_enable(struct dsi_link_clks *clks, if (l_type & DSI_LINK_LP_CLK) { rc = dsi_link_lp_clk_start(&clk->lp_clks, i); if (rc) { pr_err("failed to turn on lp link clocks, rc=%d\n", DSI_ERR("failed to turn on lp link clocks, rc=%d\n", rc); goto error_disable_master; } Loading @@ -694,7 +696,7 @@ static int dsi_display_link_clk_enable(struct dsi_link_clks *clks, rc = dsi_link_hs_clk_start(&clk->hs_clks, DSI_LINK_CLK_START, i); if (rc) { pr_err("failed to turn on hs link clocks, rc=%d\n", DSI_ERR("failed to turn on hs link clocks, rc=%d\n", rc); goto error_disable_master; } Loading Loading @@ -735,7 +737,7 @@ static int dsi_display_core_clk_disable(struct dsi_core_clks *clks, rc = dsi_core_clk_stop(clk); if (rc) { pr_debug("failed to turn off clocks, rc=%d\n", rc); DSI_DEBUG("failed to turn off clocks, rc=%d\n", rc); goto error; } Loading @@ -744,7 +746,7 @@ static int dsi_display_core_clk_disable(struct dsi_core_clks *clks, rc = dsi_core_clk_stop(m_clks); if (rc) { pr_err("failed to turn off master clocks, rc=%d\n", rc); DSI_ERR("failed to turn off master clocks, rc=%d\n", rc); goto error; } Loading Loading @@ -778,14 +780,14 @@ static int dsi_display_link_clk_disable(struct dsi_link_clks *clks, if (l_type & DSI_LINK_LP_CLK) { rc = dsi_link_lp_clk_stop(&clk->lp_clks); if (rc) pr_err("failed to turn off lp link clocks, rc=%d\n", DSI_ERR("failed to turn off lp link clocks, rc=%d\n", rc); } if (l_type & DSI_LINK_HS_CLK) { rc = dsi_link_hs_clk_stop(&clk->hs_clks); if (rc) pr_err("failed to turn off hs link clocks, rc=%d\n", DSI_ERR("failed to turn off hs link clocks, rc=%d\n", rc); } } Loading @@ -793,14 +795,14 @@ static int dsi_display_link_clk_disable(struct dsi_link_clks *clks, if (l_type & DSI_LINK_LP_CLK) { rc = dsi_link_lp_clk_stop(&m_clks->lp_clks); if (rc) pr_err("failed to turn off master lp link clocks, rc=%d\n", DSI_ERR("failed to turn off master lp link clocks, rc=%d\n", rc); } if (l_type & DSI_LINK_HS_CLK) { rc = dsi_link_hs_clk_stop(&m_clks->hs_clks); if (rc) pr_err("failed to turn off master hs link clocks, rc=%d\n", DSI_ERR("failed to turn off master hs link clocks, rc=%d\n", rc); } Loading @@ -821,7 +823,7 @@ static int dsi_clk_update_link_clk_state(struct dsi_clk_mngr *mngr, rc = mngr->pre_clkon_cb(mngr->priv_data, DSI_LINK_CLK, l_type, l_state); if (rc) { pr_err("pre link clk on cb failed for type %d\n", DSI_ERR("pre link clk on cb failed for type %d\n", l_type); goto error; } Loading @@ -829,7 +831,7 @@ static int dsi_clk_update_link_clk_state(struct dsi_clk_mngr *mngr, rc = dsi_display_link_clk_enable(l_clks, l_type, mngr->dsi_ctrl_count, mngr->master_ndx); if (rc) { pr_err("failed to start link clk type %d rc=%d\n", DSI_ERR("failed to start link clk type %d rc=%d\n", l_type, rc); goto error; } Loading @@ -838,7 +840,7 @@ static int dsi_clk_update_link_clk_state(struct dsi_clk_mngr *mngr, rc = mngr->post_clkon_cb(mngr->priv_data, DSI_LINK_CLK, l_type, l_state); if (rc) { pr_err("post link clk on cb failed for type %d\n", DSI_ERR("post link clk on cb failed for type %d\n", l_type); goto error; } Loading @@ -848,13 +850,13 @@ static int dsi_clk_update_link_clk_state(struct dsi_clk_mngr *mngr, rc = mngr->pre_clkoff_cb(mngr->priv_data, DSI_LINK_CLK, l_type, l_state); if (rc) pr_err("pre link clk off cb failed\n"); DSI_ERR("pre link clk off cb failed\n"); } rc = dsi_display_link_clk_disable(l_clks, l_type, mngr->dsi_ctrl_count, mngr->master_ndx); if (rc) { pr_err("failed to stop link clk type %d, rc = %d\n", DSI_ERR("failed to stop link clk type %d, rc = %d\n", l_type, rc); goto error; } Loading @@ -863,7 +865,7 @@ static int dsi_clk_update_link_clk_state(struct dsi_clk_mngr *mngr, rc = mngr->post_clkoff_cb(mngr->priv_data, DSI_LINK_CLK, l_type, l_state); if (rc) pr_err("post link clk off cb failed\n"); DSI_ERR("post link clk off cb failed\n"); } } Loading @@ -882,14 +884,14 @@ static int dsi_update_core_clks(struct dsi_clk_mngr *mngr, DSI_LINK_NONE, DSI_CLK_ON); if (rc) { pr_err("failed to turn on MDP FS rc= %d\n", rc); DSI_ERR("failed to turn on MDP FS rc= %d\n", rc); goto error; } } rc = dsi_display_core_clk_enable(c_clks, mngr->dsi_ctrl_count, mngr->master_ndx); if (rc) { pr_err("failed to turn on core clks rc = %d\n", rc); DSI_ERR("failed to turn on core clks rc = %d\n", rc); goto error; } Loading @@ -899,7 +901,7 @@ static int dsi_update_core_clks(struct dsi_clk_mngr *mngr, DSI_LINK_NONE, DSI_CLK_ON); if (rc) pr_err("post clk on cb failed, rc = %d\n", rc); DSI_ERR("post clk on cb failed, rc = %d\n", rc); } mngr->core_clk_state = DSI_CLK_ON; error: Loading @@ -916,7 +918,7 @@ static int dsi_update_clk_state(struct dsi_clk_mngr *mngr, if (!mngr) return -EINVAL; pr_debug("c_state = %d, l_state = %d\n", DSI_DEBUG("c_state = %d, l_state = %d\n", c_clks ? c_state : -1, l_clks ? l_state : -1); /* * Below is the sequence to toggle DSI clocks: Loading Loading @@ -965,7 +967,7 @@ static int dsi_update_clk_state(struct dsi_clk_mngr *mngr, mngr->core_clks, mngr->dsi_ctrl_count, mngr->master_ndx); if (rc) { pr_err("core clks did not start\n"); DSI_ERR("core clks did not start\n"); goto error; } Loading @@ -973,11 +975,11 @@ static int dsi_update_clk_state(struct dsi_clk_mngr *mngr, (DSI_LINK_LP_CLK & DSI_LINK_HS_CLK), mngr->dsi_ctrl_count, mngr->master_ndx); if (rc) { pr_err("LP Link clks did not start\n"); DSI_ERR("LP Link clks did not start\n"); goto error; } l_c_on = true; pr_debug("ECG: core and Link_on\n"); DSI_DEBUG("ECG: core and Link_on\n"); } rc = dsi_clk_update_link_clk_state(mngr, l_clks, Loading Loading @@ -1009,14 +1011,14 @@ static int dsi_update_clk_state(struct dsi_clk_mngr *mngr, mngr->core_clks, mngr->dsi_ctrl_count, mngr->master_ndx); if (rc) { pr_err("core clks did not stop\n"); DSI_ERR("core clks did not stop\n"); goto error; } l_c_on = false; pr_debug("ECG: core off\n"); DSI_DEBUG("ECG: core off\n"); } else pr_debug("ECG: core off skip\n"); DSI_DEBUG("ECG: core off skip\n"); } mngr->link_clk_state = l_state; Loading @@ -1038,12 +1040,12 @@ static int dsi_update_clk_state(struct dsi_clk_mngr *mngr, rc = dsi_display_core_clk_enable(mngr->core_clks, mngr->dsi_ctrl_count, mngr->master_ndx); if (rc) { pr_err("core clks did not start\n"); DSI_ERR("core clks did not start\n"); goto error; } pr_debug("ECG: core on\n"); DSI_DEBUG("ECG: core on\n"); } else pr_debug("ECG: core on skip\n"); DSI_DEBUG("ECG: core on skip\n"); if (mngr->pre_clkoff_cb) { rc = mngr->pre_clkoff_cb(mngr->priv_data, Loading @@ -1051,13 +1053,13 @@ static int dsi_update_clk_state(struct dsi_clk_mngr *mngr, DSI_LINK_NONE, c_state); if (rc) pr_err("pre core clk off cb failed\n"); DSI_ERR("pre core clk off cb failed\n"); } rc = dsi_display_core_clk_disable(c_clks, mngr->dsi_ctrl_count, mngr->master_ndx); if (rc) { pr_err("failed to turn off core clks rc = %d\n", rc); DSI_ERR("failed to turn off core clks rc = %d\n", rc); goto error; } Loading @@ -1068,7 +1070,7 @@ static int dsi_update_clk_state(struct dsi_clk_mngr *mngr, DSI_LINK_NONE, DSI_CLK_OFF); if (rc) pr_err("post clkoff cb fail, rc = %d\n", DSI_ERR("post clkoff cb fail, rc = %d\n", rc); } } Loading Loading @@ -1129,16 +1131,16 @@ static int dsi_recheck_clk_state(struct dsi_clk_mngr *mngr) old_c_clk_state = mngr->core_clk_state; old_l_clk_state = mngr->link_clk_state; pr_debug("c_clk_state (%d -> %d)\n", old_c_clk_state, new_core_clk_state); pr_debug("l_clk_state (%d -> %d)\n", old_l_clk_state, new_link_clk_state); DSI_DEBUG("c_clk_state (%d -> %d)\n", old_c_clk_state, new_core_clk_state); DSI_DEBUG("l_clk_state (%d -> %d)\n", old_l_clk_state, new_link_clk_state); if (c_clks || l_clks) { rc = dsi_update_clk_state(mngr, c_clks, new_core_clk_state, l_clks, new_link_clk_state); if (rc) { pr_err("failed to update clock state, rc = %d\n", rc); DSI_ERR("failed to update clock state, rc = %d\n", rc); goto error; } } Loading @@ -1157,7 +1159,7 @@ int dsi_clk_req_state(void *client, enum dsi_clk_type clk, if (!client || !clk || clk > (DSI_CORE_CLK | DSI_LINK_CLK) || state > DSI_CLK_EARLY_GATE) { pr_err("Invalid params, client = %pK, clk = 0x%x, state = %d\n", DSI_ERR("Invalid params, client = %pK, clk = 0x%x, state = %d\n", client, clk, state); return -EINVAL; } Loading @@ -1165,7 +1167,7 @@ int dsi_clk_req_state(void *client, enum dsi_clk_type clk, mngr = c->mngr; mutex_lock(&mngr->clk_mutex); pr_debug("[%s]%s: CLK=%d, new_state=%d, core=%d, linkl=%d\n", DSI_DEBUG("[%s]%s: CLK=%d, new_state=%d, core=%d, linkl=%d\n", mngr->name, c->name, clk, state, c->core_clk_state, c->link_clk_state); Loading Loading @@ -1202,7 +1204,7 @@ int dsi_clk_req_state(void *client, enum dsi_clk_type clk, changed = true; c->core_clk_state = DSI_CLK_OFF; } else { pr_warn("Core refcount is zero for %s\n", DSI_WARN("Core refcount is zero for %s\n", c->name); } } else { Loading @@ -1221,7 +1223,7 @@ int dsi_clk_req_state(void *client, enum dsi_clk_type clk, changed = true; c->link_clk_state = DSI_CLK_OFF; } else { pr_warn("Link refcount is zero for %s\n", DSI_WARN("Link refcount is zero for %s\n", c->name); } } else { Loading @@ -1233,14 +1235,14 @@ int dsi_clk_req_state(void *client, enum dsi_clk_type clk, } } } pr_debug("[%s]%s: change=%d, Core (ref=%d, state=%d), Link (ref=%d, state=%d)\n", DSI_DEBUG("[%s]%s: change=%d, Core (ref=%d, state=%d), Link (ref=%d, state=%d)\n", mngr->name, c->name, changed, c->core_refcount, c->core_clk_state, c->link_refcount, c->link_clk_state); if (changed) { rc = dsi_recheck_clk_state(mngr); if (rc) pr_err("Failed to adjust clock state rc = %d\n", rc); DSI_ERR("Failed to adjust clock state rc = %d\n", rc); } mutex_unlock(&mngr->clk_mutex); Loading Loading @@ -1293,7 +1295,7 @@ int dsi_display_link_clk_force_update_ctrl(void *handle) int rc = 0; if (!handle) { pr_err("%s: Invalid arg\n", __func__); DSI_ERR("Invalid arg\n"); return -EINVAL; } Loading @@ -1312,14 +1314,14 @@ int dsi_display_clk_ctrl(void *handle, int rc = 0; if (!handle) { pr_err("%s: Invalid arg\n", __func__); DSI_ERR("Invalid arg\n"); return -EINVAL; } mutex_lock(&dsi_mngr_clk_mutex); rc = dsi_clk_req_state(handle, clk_type, clk_state); if (rc) pr_err("%s: failed set clk state, rc = %d\n", __func__, rc); DSI_ERR("failed set clk state, rc = %d\n", rc); mutex_unlock(&dsi_mngr_clk_mutex); return rc; Loading @@ -1332,7 +1334,7 @@ void *dsi_register_clk_handle(void *clk_mngr, char *client) struct dsi_clk_client_info *c; if (!mngr) { pr_err("bad params\n"); DSI_ERR("bad params\n"); return ERR_PTR(-EINVAL); } Loading @@ -1349,7 +1351,7 @@ void *dsi_register_clk_handle(void *clk_mngr, char *client) list_add(&c->list, &mngr->client_list); pr_debug("[%s]: Added new client (%s)\n", mngr->name, c->name); DSI_DEBUG("[%s]: Added new client (%s)\n", mngr->name, c->name); handle = c; error: mutex_unlock(&mngr->clk_mutex); Loading @@ -1366,19 +1368,19 @@ int dsi_deregister_clk_handle(void *client) struct dsi_clk_client_info *node = NULL; if (!client) { pr_err("Invalid params\n"); DSI_ERR("Invalid params\n"); return -EINVAL; } mngr = c->mngr; pr_debug("%s: ENTER\n", mngr->name); DSI_DEBUG("%s: ENTER\n", mngr->name); mutex_lock(&mngr->clk_mutex); c->core_clk_state = DSI_CLK_OFF; c->link_clk_state = DSI_CLK_OFF; rc = dsi_recheck_clk_state(mngr); if (rc) { pr_err("clock state recheck failed rc = %d\n", rc); DSI_ERR("clock state recheck failed rc = %d\n", rc); goto error; } Loading @@ -1387,7 +1389,7 @@ int dsi_deregister_clk_handle(void *client) list); if (node == c) { list_del(&node->list); pr_debug("Removed device (%s)\n", node->name); DSI_DEBUG("Removed device (%s)\n", node->name); kfree(node); break; } Loading @@ -1395,7 +1397,7 @@ int dsi_deregister_clk_handle(void *client) error: mutex_unlock(&mngr->clk_mutex); pr_debug("%s: EXIT, rc = %d\n", mngr->name, rc); DSI_DEBUG("%s: EXIT, rc = %d\n", mngr->name, rc); return rc; } Loading @@ -1404,7 +1406,7 @@ void dsi_display_clk_mngr_update_splash_status(void *clk_mgr, bool status) struct dsi_clk_mngr *mngr; if (!clk_mgr) { pr_err("Invalid params\n"); DSI_ERR("Invalid params\n"); return; } Loading @@ -1418,7 +1420,7 @@ void *dsi_display_clk_mngr_register(struct dsi_clk_info *info) int i = 0; if (!info) { pr_err("Invalid params\n"); DSI_ERR("Invalid params\n"); return ERR_PTR(-EINVAL); } Loading Loading @@ -1457,7 +1459,7 @@ void *dsi_display_clk_mngr_register(struct dsi_clk_info *info) memcpy(mngr->name, info->name, MAX_STRING_LEN); error: pr_debug("EXIT, rc = %ld\n", PTR_ERR(mngr)); DSI_DEBUG("EXIT, rc = %ld\n", PTR_ERR(mngr)); return mngr; } Loading @@ -1470,27 +1472,27 @@ int dsi_display_clk_mngr_deregister(void *clk_mngr) struct dsi_clk_client_info *node = NULL; if (!mngr) { pr_err("Invalid params\n"); DSI_ERR("Invalid params\n"); return -EINVAL; } pr_debug("%s: ENTER\n", mngr->name); DSI_DEBUG("%s: ENTER\n", mngr->name); mutex_lock(&mngr->clk_mutex); list_for_each_safe(position, tmp, &mngr->client_list) { node = list_entry(position, struct dsi_clk_client_info, list); list_del(&node->list); pr_debug("Removed device (%s)\n", node->name); DSI_DEBUG("Removed device (%s)\n", node->name); kfree(node); } rc = dsi_recheck_clk_state(mngr); if (rc) pr_err("failed to disable all clocks\n"); DSI_ERR("failed to disable all clocks\n"); mutex_unlock(&mngr->clk_mutex); pr_debug("%s: EXIT, rc = %d\n", mngr->name, rc); DSI_DEBUG("%s: EXIT, rc = %d\n", mngr->name, rc); kfree(mngr); return rc; }