Loading Documentation/devicetree/bindings/media/video/msm-sde-rotator.txt +12 −0 Original line number Diff line number Diff line Loading @@ -120,6 +120,8 @@ Optional properties minimum allowable length configuration value. - qcom,sde-ubwc-swizzle: A u32 property to specify the default UBWC swizzle configuration value. - qcom,rot-reg-bus: Property to provide Bus scaling for register access for rotator blocks. Subnode properties: - compatible: Compatible name used in smmu v2. Loading Loading @@ -189,6 +191,16 @@ Example: cache-slice-names = "rotator"; cache-slices = <&llcc 4>; rot_reg: qcom,rot-reg-bus { qcom,msm-bus,name = "mdss_rot_reg"; qcom,msm-bus,num-cases = <2>; qcom,msm-bus,num-paths = <1>; qcom,msm-bus,active-only; qcom,msm-bus,vectors-KBps = <1 590 0 0>, <1 590 0 76800>; }; smmu_rot_unsec: qcom,smmu_rot_unsec_cb { compatible = "qcom,smmu_sde_rot_unsec"; iommus = <&mdp_smmu 0xe00>; Loading drivers/media/platform/msm/sde/rotator/sde_rotator_core.c +22 −6 Original line number Diff line number Diff line Loading @@ -2583,6 +2583,7 @@ static int sde_rotator_parse_dt_bus(struct sde_rot_mgr *mgr, { int ret = 0, i; int usecases; struct device_node *node; mgr->data_bus.bus_scale_pdata = msm_bus_cl_get_pdata(dev); if (IS_ERR_OR_NULL(mgr->data_bus.bus_scale_pdata)) { Loading @@ -2594,6 +2595,20 @@ static int sde_rotator_parse_dt_bus(struct sde_rot_mgr *mgr, } } node = of_get_child_by_name(dev->dev.of_node, "qcom,rot-reg-bus"); if (node) { mgr->reg_bus.bus_scale_pdata = msm_bus_pdata_from_node(dev, node); if (IS_ERR_OR_NULL(mgr->reg_bus.bus_scale_pdata)) { SDEROT_ERR("reg bus pdata parsing failed\n"); ret = PTR_ERR(mgr->reg_bus.bus_scale_pdata); if (!mgr->reg_bus.bus_scale_pdata) ret = -EINVAL; mgr->reg_bus.bus_scale_pdata = NULL; } } else { SDEROT_DBG( "no DT entries, configuring default reg bus table\n"); 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++) { Loading @@ -2601,6 +2616,7 @@ static int sde_rotator_parse_dt_bus(struct sde_rot_mgr *mgr, rot_reg_bus_usecases[i].vectors = &rot_reg_bus_vectors[i]; } } return ret; } Loading Loading
Documentation/devicetree/bindings/media/video/msm-sde-rotator.txt +12 −0 Original line number Diff line number Diff line Loading @@ -120,6 +120,8 @@ Optional properties minimum allowable length configuration value. - qcom,sde-ubwc-swizzle: A u32 property to specify the default UBWC swizzle configuration value. - qcom,rot-reg-bus: Property to provide Bus scaling for register access for rotator blocks. Subnode properties: - compatible: Compatible name used in smmu v2. Loading Loading @@ -189,6 +191,16 @@ Example: cache-slice-names = "rotator"; cache-slices = <&llcc 4>; rot_reg: qcom,rot-reg-bus { qcom,msm-bus,name = "mdss_rot_reg"; qcom,msm-bus,num-cases = <2>; qcom,msm-bus,num-paths = <1>; qcom,msm-bus,active-only; qcom,msm-bus,vectors-KBps = <1 590 0 0>, <1 590 0 76800>; }; smmu_rot_unsec: qcom,smmu_rot_unsec_cb { compatible = "qcom,smmu_sde_rot_unsec"; iommus = <&mdp_smmu 0xe00>; Loading
drivers/media/platform/msm/sde/rotator/sde_rotator_core.c +22 −6 Original line number Diff line number Diff line Loading @@ -2583,6 +2583,7 @@ static int sde_rotator_parse_dt_bus(struct sde_rot_mgr *mgr, { int ret = 0, i; int usecases; struct device_node *node; mgr->data_bus.bus_scale_pdata = msm_bus_cl_get_pdata(dev); if (IS_ERR_OR_NULL(mgr->data_bus.bus_scale_pdata)) { Loading @@ -2594,6 +2595,20 @@ static int sde_rotator_parse_dt_bus(struct sde_rot_mgr *mgr, } } node = of_get_child_by_name(dev->dev.of_node, "qcom,rot-reg-bus"); if (node) { mgr->reg_bus.bus_scale_pdata = msm_bus_pdata_from_node(dev, node); if (IS_ERR_OR_NULL(mgr->reg_bus.bus_scale_pdata)) { SDEROT_ERR("reg bus pdata parsing failed\n"); ret = PTR_ERR(mgr->reg_bus.bus_scale_pdata); if (!mgr->reg_bus.bus_scale_pdata) ret = -EINVAL; mgr->reg_bus.bus_scale_pdata = NULL; } } else { SDEROT_DBG( "no DT entries, configuring default reg bus table\n"); 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++) { Loading @@ -2601,6 +2616,7 @@ static int sde_rotator_parse_dt_bus(struct sde_rot_mgr *mgr, rot_reg_bus_usecases[i].vectors = &rot_reg_bus_vectors[i]; } } return ret; } Loading