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)
|
||||
- qcom,mdss-has-downscale Boolean property to indicate
|
||||
if the hw supports downscale
|
||||
- qcom,sde-reg-bus: Subnode to provide Bus scaling for register access for
|
||||
rotator
|
||||
|
||||
Example:
|
||||
mdss_rotator: qcom,mdss_rotator {
|
||||
|
@ -75,4 +77,16 @@ Example:
|
|||
vdd-supply = <&gdsc_mdss>;
|
||||
gdsc-mmagic-mdss-supply = <&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;
|
||||
u32 data;
|
||||
struct device_node *node;
|
||||
|
||||
rc = of_property_read_u32(pdev->dev.of_node, "qcom,mdss-rot-block-size",
|
||||
&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;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -553,9 +567,10 @@ static int sde_mdp_bus_scale_register(struct sde_rot_data_type *mdata)
|
|||
if (!mdata->reg_bus_hdl) {
|
||||
/* Continue without reg_bus scaling */
|
||||
SDEROT_WARN("reg_bus_client register failed\n");
|
||||
} else
|
||||
} else {
|
||||
SDEROT_DBG("register reg_bus_hdl=%x\n",
|
||||
mdata->reg_bus_hdl);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -195,6 +195,7 @@ struct sde_rot_data_type {
|
|||
struct ion_client *iclient;
|
||||
|
||||
bool handoff_done;
|
||||
struct msm_bus_scale_pdata *reg_bus_pdata;
|
||||
};
|
||||
|
||||
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 usecases;
|
||||
struct sde_rot_data_type *mdata = sde_rot_get_mdata();
|
||||
|
||||
mgr->data_bus.bus_scale_pdata = msm_bus_cl_get_pdata(dev);
|
||||
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;
|
||||
usecases = mgr->reg_bus.bus_scale_pdata->num_usecases;
|
||||
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];
|
||||
if (mdata && mdata->reg_bus_pdata) {
|
||||
mgr->reg_bus.bus_scale_pdata = mdata->reg_bus_pdata;
|
||||
} else {
|
||||
mgr->reg_bus.bus_scale_pdata = &rot_reg_bus_scale_table;
|
||||
usecases = mgr->reg_bus.bus_scale_pdata->num_usecases;
|
||||
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;
|
||||
|
|
Loading…
Add table
Reference in a new issue