msm: mdss: Add client name to register bus client handle
Add debug name to register bus client. This will help debug issues that involved register bus client. Change-Id: Ied505e5af9e09ba183c25340e6051214a93bc3d2 Signed-off-by: Terence Hampson <thampson@codeaurora.org>
This commit is contained in:
parent
d2736ae8fa
commit
61a87e1821
5 changed files with 24 additions and 11 deletions
|
@ -30,6 +30,7 @@
|
||||||
|
|
||||||
#define MAX_DRV_SUP_MMB_BLKS 44
|
#define MAX_DRV_SUP_MMB_BLKS 44
|
||||||
#define MAX_DRV_SUP_PIPES 10
|
#define MAX_DRV_SUP_PIPES 10
|
||||||
|
#define MAX_CLIENT_NAME_LEN 20
|
||||||
|
|
||||||
#define MDSS_PINCTRL_STATE_DEFAULT "mdss_default"
|
#define MDSS_PINCTRL_STATE_DEFAULT "mdss_default"
|
||||||
#define MDSS_PINCTRL_STATE_SLEEP "mdss_sleep"
|
#define MDSS_PINCTRL_STATE_SLEEP "mdss_sleep"
|
||||||
|
@ -174,6 +175,7 @@ enum mdss_qos_settings {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct reg_bus_client {
|
struct reg_bus_client {
|
||||||
|
char name[MAX_CLIENT_NAME_LEN];
|
||||||
short usecase_ndx;
|
short usecase_ndx;
|
||||||
u32 id;
|
u32 id;
|
||||||
struct list_head list;
|
struct list_head list;
|
||||||
|
@ -463,7 +465,7 @@ void mdss_bus_bandwidth_ctrl(int enable);
|
||||||
int mdss_iommu_ctrl(int enable);
|
int mdss_iommu_ctrl(int enable);
|
||||||
int mdss_bus_scale_set_quota(int client, u64 ab_quota, u64 ib_quota);
|
int mdss_bus_scale_set_quota(int client, u64 ab_quota, u64 ib_quota);
|
||||||
int mdss_update_reg_bus_vote(struct reg_bus_client *, u32 usecase_ndx);
|
int mdss_update_reg_bus_vote(struct reg_bus_client *, u32 usecase_ndx);
|
||||||
struct reg_bus_client *mdss_reg_bus_vote_client_create(void);
|
struct reg_bus_client *mdss_reg_bus_vote_client_create(char *client_name);
|
||||||
void mdss_reg_bus_vote_client_destroy(struct reg_bus_client *);
|
void mdss_reg_bus_vote_client_destroy(struct reg_bus_client *);
|
||||||
|
|
||||||
struct mdss_util_intf {
|
struct mdss_util_intf {
|
||||||
|
|
|
@ -872,7 +872,7 @@ void *mdss_dsi_clk_init(struct mdss_dsi_clk_info *info)
|
||||||
mngr->pre_clkoff_cb = info->pre_clkoff_cb;
|
mngr->pre_clkoff_cb = info->pre_clkoff_cb;
|
||||||
mngr->post_clkoff_cb = info->post_clkoff_cb;
|
mngr->post_clkoff_cb = info->post_clkoff_cb;
|
||||||
mngr->priv_data = info->priv_data;
|
mngr->priv_data = info->priv_data;
|
||||||
mngr->reg_bus_clt = mdss_reg_bus_vote_client_create();
|
mngr->reg_bus_clt = mdss_reg_bus_vote_client_create(info->name);
|
||||||
if (IS_ERR_OR_NULL(mngr->reg_bus_clt)) {
|
if (IS_ERR_OR_NULL(mngr->reg_bus_clt)) {
|
||||||
pr_err("Unable to get handle for reg bus vote\n");
|
pr_err("Unable to get handle for reg bus vote\n");
|
||||||
kfree(mngr);
|
kfree(mngr);
|
||||||
|
|
|
@ -2358,6 +2358,7 @@ static int hdmi_tx_config_power(struct hdmi_tx_ctrl *hdmi_ctrl,
|
||||||
{
|
{
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
struct dss_module_power *power_data = NULL;
|
struct dss_module_power *power_data = NULL;
|
||||||
|
char name[MAX_CLIENT_NAME_LEN];
|
||||||
|
|
||||||
if (!hdmi_ctrl || module >= HDMI_TX_MAX_PM) {
|
if (!hdmi_ctrl || module >= HDMI_TX_MAX_PM) {
|
||||||
DEV_ERR("%s: Error: invalid input\n", __func__);
|
DEV_ERR("%s: Error: invalid input\n", __func__);
|
||||||
|
@ -2381,8 +2382,9 @@ static int hdmi_tx_config_power(struct hdmi_tx_ctrl *hdmi_ctrl,
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
snprintf(name, MAX_CLIENT_NAME_LEN, "hdmi:%u", module);
|
||||||
hdmi_ctrl->pdata.reg_bus_clt[module] =
|
hdmi_ctrl->pdata.reg_bus_clt[module] =
|
||||||
mdss_reg_bus_vote_client_create();
|
mdss_reg_bus_vote_client_create(name);
|
||||||
if (IS_ERR_OR_NULL(hdmi_ctrl->pdata.reg_bus_clt[module])) {
|
if (IS_ERR_OR_NULL(hdmi_ctrl->pdata.reg_bus_clt[module])) {
|
||||||
pr_err("reg bus client create failed\n");
|
pr_err("reg bus client create failed\n");
|
||||||
msm_dss_config_vreg(&hdmi_ctrl->pdev->dev,
|
msm_dss_config_vreg(&hdmi_ctrl->pdev->dev,
|
||||||
|
|
|
@ -371,19 +371,26 @@ static int mdss_mdp_bus_scale_set_quota(u64 ab_quota_rt, u64 ab_quota_nrt,
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct reg_bus_client *mdss_reg_bus_vote_client_create()
|
struct reg_bus_client *mdss_reg_bus_vote_client_create(char *client_name)
|
||||||
{
|
{
|
||||||
struct reg_bus_client *client;
|
struct reg_bus_client *client;
|
||||||
static u32 id;
|
static u32 id;
|
||||||
|
|
||||||
|
if (client_name == NULL) {
|
||||||
|
pr_err("client name is null\n");
|
||||||
|
return ERR_PTR(-EINVAL);
|
||||||
|
}
|
||||||
|
|
||||||
client = kzalloc(sizeof(struct reg_bus_client), GFP_KERNEL);
|
client = kzalloc(sizeof(struct reg_bus_client), GFP_KERNEL);
|
||||||
if (!client)
|
if (!client)
|
||||||
return ERR_PTR(-ENOMEM);
|
return ERR_PTR(-ENOMEM);
|
||||||
|
|
||||||
mutex_lock(&mdss_res->reg_bus_lock);
|
mutex_lock(&mdss_res->reg_bus_lock);
|
||||||
|
strlcpy(client->name, client_name, MAX_CLIENT_NAME_LEN);
|
||||||
client->usecase_ndx = VOTE_INDEX_DISABLE;
|
client->usecase_ndx = VOTE_INDEX_DISABLE;
|
||||||
client->id = id;
|
client->id = id;
|
||||||
pr_debug("bus vote client created:%p id :%d\n", client, id);
|
pr_debug("bus vote client %s created:%p id :%d\n", client_name,
|
||||||
|
client, id);
|
||||||
id++;
|
id++;
|
||||||
list_add(&client->list, &mdss_res->reg_bus_clist);
|
list_add(&client->list, &mdss_res->reg_bus_clist);
|
||||||
mutex_unlock(&mdss_res->reg_bus_lock);
|
mutex_unlock(&mdss_res->reg_bus_lock);
|
||||||
|
@ -396,8 +403,8 @@ void mdss_reg_bus_vote_client_destroy(struct reg_bus_client *client)
|
||||||
if (!client) {
|
if (!client) {
|
||||||
pr_err("reg bus vote: invalid client handle\n");
|
pr_err("reg bus vote: invalid client handle\n");
|
||||||
} else {
|
} else {
|
||||||
pr_debug("bus vote client destroyed:%p id:%u\n",
|
pr_debug("bus vote client %s destroyed:%p id:%u\n",
|
||||||
client, client->id);
|
client->name, client, client->id);
|
||||||
mutex_lock(&mdss_res->reg_bus_lock);
|
mutex_lock(&mdss_res->reg_bus_lock);
|
||||||
list_del_init(&client->list);
|
list_del_init(&client->list);
|
||||||
mutex_unlock(&mdss_res->reg_bus_lock);
|
mutex_unlock(&mdss_res->reg_bus_lock);
|
||||||
|
@ -430,9 +437,9 @@ int mdss_update_reg_bus_vote(struct reg_bus_client *bus_client, u32 usecase_ndx)
|
||||||
mdss_res->reg_bus_usecase_ndx = max_usecase_ndx;
|
mdss_res->reg_bus_usecase_ndx = max_usecase_ndx;
|
||||||
}
|
}
|
||||||
|
|
||||||
pr_debug("%pS: changed=%d current idx=%d request client id:%u idx:%d\n",
|
pr_debug("%pS: changed=%d current idx=%d request client %s id:%u idx:%d\n",
|
||||||
__builtin_return_address(0), changed, max_usecase_ndx,
|
__builtin_return_address(0), changed, max_usecase_ndx,
|
||||||
bus_client->id, usecase_ndx);
|
bus_client->name, bus_client->id, usecase_ndx);
|
||||||
MDSS_XLOG(changed, max_usecase_ndx, bus_client->id, usecase_ndx);
|
MDSS_XLOG(changed, max_usecase_ndx, bus_client->id, usecase_ndx);
|
||||||
if (changed)
|
if (changed)
|
||||||
ret = msm_bus_scale_client_update_request(mdss_res->reg_bus_hdl,
|
ret = msm_bus_scale_client_update_request(mdss_res->reg_bus_hdl,
|
||||||
|
@ -1091,7 +1098,7 @@ static int mdss_mdp_irq_clk_setup(struct mdss_data_type *mdata)
|
||||||
mdata->vdd_cx = NULL;
|
mdata->vdd_cx = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
mdata->reg_bus_clt = mdss_reg_bus_vote_client_create();
|
mdata->reg_bus_clt = mdss_reg_bus_vote_client_create("mdp\0");
|
||||||
if (IS_ERR_OR_NULL(mdata->reg_bus_clt)) {
|
if (IS_ERR_OR_NULL(mdata->reg_bus_clt)) {
|
||||||
pr_err("bus client register failed\n");
|
pr_err("bus client register failed\n");
|
||||||
return PTR_ERR(mdata->reg_bus_clt);
|
return PTR_ERR(mdata->reg_bus_clt);
|
||||||
|
|
|
@ -506,6 +506,7 @@ int mdss_smmu_probe(struct platform_device *pdev)
|
||||||
const struct of_device_id *match;
|
const struct of_device_id *match;
|
||||||
struct dss_module_power *mp;
|
struct dss_module_power *mp;
|
||||||
int disable_htw = 1;
|
int disable_htw = 1;
|
||||||
|
char name[MAX_CLIENT_NAME_LEN];
|
||||||
|
|
||||||
if (!mdata) {
|
if (!mdata) {
|
||||||
pr_err("probe failed as mdata is not initialized\n");
|
pr_err("probe failed as mdata is not initialized\n");
|
||||||
|
@ -569,7 +570,8 @@ int mdss_smmu_probe(struct platform_device *pdev)
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
mdss_smmu->reg_bus_clt = mdss_reg_bus_vote_client_create();
|
snprintf(name, MAX_CLIENT_NAME_LEN, "smmu:%u", domain);
|
||||||
|
mdss_smmu->reg_bus_clt = mdss_reg_bus_vote_client_create(name);
|
||||||
if (IS_ERR_OR_NULL(mdss_smmu->reg_bus_clt)) {
|
if (IS_ERR_OR_NULL(mdss_smmu->reg_bus_clt)) {
|
||||||
pr_err("mdss bus client register failed\n");
|
pr_err("mdss bus client register failed\n");
|
||||||
msm_dss_config_vreg(&pdev->dev, mp->vreg_config, mp->num_vreg,
|
msm_dss_config_vreg(&pdev->dev, mp->vreg_config, mp->num_vreg,
|
||||||
|
|
Loading…
Add table
Reference in a new issue