Merge "sde: rotator: add support to configure bus scale vectors"
This commit is contained in:
commit
13c1e33923
4 changed files with 42 additions and 7 deletions
|
@ -53,6 +53,8 @@ Optional properties
|
||||||
bandwidth compression (ubwc)
|
bandwidth compression (ubwc)
|
||||||
- qcom,mdss-has-downscale Boolean property to indicate
|
- qcom,mdss-has-downscale Boolean property to indicate
|
||||||
if the hw supports downscale
|
if the hw supports downscale
|
||||||
|
- qcom,sde-reg-bus: Subnode to provide Bus scaling for register access for
|
||||||
|
rotator
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
mdss_rotator: qcom,mdss_rotator {
|
mdss_rotator: qcom,mdss_rotator {
|
||||||
|
@ -75,4 +77,16 @@ Example:
|
||||||
vdd-supply = <&gdsc_mdss>;
|
vdd-supply = <&gdsc_mdss>;
|
||||||
gdsc-mmagic-mdss-supply = <&gdsc_mmagic_mdss>;
|
gdsc-mmagic-mdss-supply = <&gdsc_mmagic_mdss>;
|
||||||
qcom,supply-names = "vdd", "gdsc-mmagic-mdss";
|
qcom,supply-names = "vdd", "gdsc-mmagic-mdss";
|
||||||
|
qcom,sde-reg-bus {
|
||||||
|
/* Reg Bus Scale Settings */
|
||||||
|
qcom,msm-bus,name = "mdss_rot_reg";
|
||||||
|
qcom,msm-bus,num-cases = <4>;
|
||||||
|
qcom,msm-bus,num-paths = <1>;
|
||||||
|
qcom,msm-bus,active-only;
|
||||||
|
qcom,msm-bus,vectors-KBps =
|
||||||
|
<1 590 0 0>,
|
||||||
|
<1 590 0 76800>,
|
||||||
|
<1 590 0 160000>,
|
||||||
|
<1 590 0 320000>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -477,6 +477,7 @@ static int sde_mdp_parse_dt_misc(struct platform_device *pdev,
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
u32 data;
|
u32 data;
|
||||||
|
struct device_node *node;
|
||||||
|
|
||||||
rc = of_property_read_u32(pdev->dev.of_node, "qcom,mdss-rot-block-size",
|
rc = of_property_read_u32(pdev->dev.of_node, "qcom,mdss-rot-block-size",
|
||||||
&data);
|
&data);
|
||||||
|
@ -505,6 +506,19 @@ static int sde_mdp_parse_dt_misc(struct platform_device *pdev,
|
||||||
|
|
||||||
mdata->mdp_base = mdata->sde_io.base + SDE_MDP_OFFSET;
|
mdata->mdp_base = mdata->sde_io.base + SDE_MDP_OFFSET;
|
||||||
|
|
||||||
|
node = of_get_child_by_name(pdev->dev.of_node,
|
||||||
|
"qcom,sde-reg-bus");
|
||||||
|
if (node) {
|
||||||
|
mdata->reg_bus_pdata = msm_bus_pdata_from_node(pdev, node);
|
||||||
|
if (IS_ERR_OR_NULL(mdata->reg_bus_pdata)) {
|
||||||
|
SDEROT_DBG("bus_pdata reg_bus failed\n");
|
||||||
|
mdata->reg_bus_pdata = NULL;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
SDEROT_DBG("sde-reg-bus not found\n");
|
||||||
|
mdata->reg_bus_pdata = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -553,9 +567,10 @@ static int sde_mdp_bus_scale_register(struct sde_rot_data_type *mdata)
|
||||||
if (!mdata->reg_bus_hdl) {
|
if (!mdata->reg_bus_hdl) {
|
||||||
/* Continue without reg_bus scaling */
|
/* Continue without reg_bus scaling */
|
||||||
SDEROT_WARN("reg_bus_client register failed\n");
|
SDEROT_WARN("reg_bus_client register failed\n");
|
||||||
} else
|
} else {
|
||||||
SDEROT_DBG("register reg_bus_hdl=%x\n",
|
SDEROT_DBG("register reg_bus_hdl=%x\n",
|
||||||
mdata->reg_bus_hdl);
|
mdata->reg_bus_hdl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -195,6 +195,7 @@ struct sde_rot_data_type {
|
||||||
struct ion_client *iclient;
|
struct ion_client *iclient;
|
||||||
|
|
||||||
bool handoff_done;
|
bool handoff_done;
|
||||||
|
struct msm_bus_scale_pdata *reg_bus_pdata;
|
||||||
};
|
};
|
||||||
|
|
||||||
int sde_rotator_base_init(struct sde_rot_data_type **pmdata,
|
int sde_rotator_base_init(struct sde_rot_data_type **pmdata,
|
||||||
|
|
|
@ -2419,6 +2419,7 @@ static int sde_rotator_parse_dt_bus(struct sde_rot_mgr *mgr,
|
||||||
{
|
{
|
||||||
int ret = 0, i;
|
int ret = 0, i;
|
||||||
int usecases;
|
int usecases;
|
||||||
|
struct sde_rot_data_type *mdata = sde_rot_get_mdata();
|
||||||
|
|
||||||
mgr->data_bus.bus_scale_pdata = msm_bus_cl_get_pdata(dev);
|
mgr->data_bus.bus_scale_pdata = msm_bus_cl_get_pdata(dev);
|
||||||
if (IS_ERR_OR_NULL(mgr->data_bus.bus_scale_pdata)) {
|
if (IS_ERR_OR_NULL(mgr->data_bus.bus_scale_pdata)) {
|
||||||
|
@ -2431,12 +2432,16 @@ static int sde_rotator_parse_dt_bus(struct sde_rot_mgr *mgr,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mgr->reg_bus.bus_scale_pdata = &rot_reg_bus_scale_table;
|
if (mdata && mdata->reg_bus_pdata) {
|
||||||
usecases = mgr->reg_bus.bus_scale_pdata->num_usecases;
|
mgr->reg_bus.bus_scale_pdata = mdata->reg_bus_pdata;
|
||||||
for (i = 0; i < usecases; i++) {
|
} else {
|
||||||
rot_reg_bus_usecases[i].num_paths = 1;
|
mgr->reg_bus.bus_scale_pdata = &rot_reg_bus_scale_table;
|
||||||
rot_reg_bus_usecases[i].vectors =
|
usecases = mgr->reg_bus.bus_scale_pdata->num_usecases;
|
||||||
&rot_reg_bus_vectors[i];
|
for (i = 0; i < usecases; i++) {
|
||||||
|
rot_reg_bus_usecases[i].num_paths = 1;
|
||||||
|
rot_reg_bus_usecases[i].vectors =
|
||||||
|
&rot_reg_bus_vectors[i];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Add table
Reference in a new issue