Loading Documentation/devicetree/bindings/fb/mdss-mdp.txt +2 −0 Original line number Diff line number Diff line Loading @@ -140,6 +140,7 @@ Bus Scaling Data: Optional properties: - batfet-supply : Phandle for battery FET regulator device node. - vdd-cx-supply : Phandle for vdd CX regulator device node. - qcom,vbif-settings : Array with key-value pairs of constant VBIF register settings used to setup MDSS QoS for optimum performance. The key used should be offset from "vbif_phys" register Loading Loading @@ -222,6 +223,7 @@ Example: interrupts = <0 72 0>; vdd-supply = <&gdsc_mdss>; batfet-supply = <&pm8941_chg_batif>; vdd-cx-supply = <&pm8841_s2_corner>; /* Bus Scale Settings */ qcom,msm-bus,name = "mdss_mdp"; Loading drivers/video/msm/mdss/mdss.h +1 −0 Original line number Diff line number Diff line Loading @@ -70,6 +70,7 @@ struct mdss_data_type { u32 mdp_rev; struct clk *mdp_clk[MDSS_MAX_CLK]; struct regulator *fs; struct regulator *vdd_cx; bool batfet_required; struct regulator *batfet; u32 max_mdp_clk_rate; Loading drivers/video/msm/mdss/mdss_mdp.c +54 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ #include <mach/iommu_domains.h> #include <mach/memory.h> #include <mach/msm_memtypes.h> #include <mach/rpm-regulator-smd.h> #include "mdss.h" #include "mdss_fb.h" Loading Loading @@ -741,6 +742,14 @@ static int mdss_mdp_irq_clk_setup(struct mdss_data_type *mdata) } mdata->fs_ena = false; mdata->vdd_cx = devm_regulator_get(&mdata->pdev->dev, "vdd-cx"); if (IS_ERR_OR_NULL(mdata->vdd_cx)) { pr_debug("unable to get CX reg. rc=%d\n", PTR_RET(mdata->vdd_cx)); mdata->vdd_cx = NULL; } if (mdss_mdp_irq_clk_register(mdata, "bus_clk", MDSS_CLK_AXI) || mdss_mdp_irq_clk_register(mdata, "iface_clk", MDSS_CLK_AHB) || mdss_mdp_irq_clk_register(mdata, "core_clk_src", Loading Loading @@ -2144,6 +2153,49 @@ int mdss_panel_get_boot_cfg(void) return rc; } static int mdss_mdp_cx_ctrl(struct mdss_data_type *mdata, int enable) { int rc = 0; if (!mdata->vdd_cx) return rc; if (enable) { rc = regulator_set_voltage( mdata->vdd_cx, RPM_REGULATOR_CORNER_SVS_SOC, RPM_REGULATOR_CORNER_SUPER_TURBO); if (rc < 0) goto vreg_set_voltage_fail; pr_debug("Enabling CX power rail\n"); rc = regulator_enable(mdata->vdd_cx); if (rc) { pr_err("Failed to enable regulator.\n"); return rc; } } else { pr_debug("Disabling CX power rail\n"); rc = regulator_disable(mdata->vdd_cx); if (rc) { pr_err("Failed to disable regulator.\n"); return rc; } rc = regulator_set_voltage( mdata->vdd_cx, RPM_REGULATOR_CORNER_NONE, RPM_REGULATOR_CORNER_SUPER_TURBO); if (rc < 0) goto vreg_set_voltage_fail; } return rc; vreg_set_voltage_fail: pr_err("Set vltg fail\n"); return rc; } static void mdss_mdp_footswitch_ctrl(struct mdss_data_type *mdata, int on) { int ret; Loading @@ -2158,6 +2210,7 @@ static void mdss_mdp_footswitch_ctrl(struct mdss_data_type *mdata, int on) if (ret) pr_err("Footswitch failed to enable\n"); mdss_mdp_batfet_ctrl(mdata, true); mdss_mdp_cx_ctrl(mdata, true); } mdata->fs_ena = true; } else { Loading @@ -2166,6 +2219,7 @@ static void mdss_mdp_footswitch_ctrl(struct mdss_data_type *mdata, int on) if (mdata->fs_ena) { regulator_disable(mdata->fs); mdss_mdp_batfet_ctrl(mdata, false); mdss_mdp_cx_ctrl(mdata, false); } mdata->fs_ena = false; } Loading Loading
Documentation/devicetree/bindings/fb/mdss-mdp.txt +2 −0 Original line number Diff line number Diff line Loading @@ -140,6 +140,7 @@ Bus Scaling Data: Optional properties: - batfet-supply : Phandle for battery FET regulator device node. - vdd-cx-supply : Phandle for vdd CX regulator device node. - qcom,vbif-settings : Array with key-value pairs of constant VBIF register settings used to setup MDSS QoS for optimum performance. The key used should be offset from "vbif_phys" register Loading Loading @@ -222,6 +223,7 @@ Example: interrupts = <0 72 0>; vdd-supply = <&gdsc_mdss>; batfet-supply = <&pm8941_chg_batif>; vdd-cx-supply = <&pm8841_s2_corner>; /* Bus Scale Settings */ qcom,msm-bus,name = "mdss_mdp"; Loading
drivers/video/msm/mdss/mdss.h +1 −0 Original line number Diff line number Diff line Loading @@ -70,6 +70,7 @@ struct mdss_data_type { u32 mdp_rev; struct clk *mdp_clk[MDSS_MAX_CLK]; struct regulator *fs; struct regulator *vdd_cx; bool batfet_required; struct regulator *batfet; u32 max_mdp_clk_rate; Loading
drivers/video/msm/mdss/mdss_mdp.c +54 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ #include <mach/iommu_domains.h> #include <mach/memory.h> #include <mach/msm_memtypes.h> #include <mach/rpm-regulator-smd.h> #include "mdss.h" #include "mdss_fb.h" Loading Loading @@ -741,6 +742,14 @@ static int mdss_mdp_irq_clk_setup(struct mdss_data_type *mdata) } mdata->fs_ena = false; mdata->vdd_cx = devm_regulator_get(&mdata->pdev->dev, "vdd-cx"); if (IS_ERR_OR_NULL(mdata->vdd_cx)) { pr_debug("unable to get CX reg. rc=%d\n", PTR_RET(mdata->vdd_cx)); mdata->vdd_cx = NULL; } if (mdss_mdp_irq_clk_register(mdata, "bus_clk", MDSS_CLK_AXI) || mdss_mdp_irq_clk_register(mdata, "iface_clk", MDSS_CLK_AHB) || mdss_mdp_irq_clk_register(mdata, "core_clk_src", Loading Loading @@ -2144,6 +2153,49 @@ int mdss_panel_get_boot_cfg(void) return rc; } static int mdss_mdp_cx_ctrl(struct mdss_data_type *mdata, int enable) { int rc = 0; if (!mdata->vdd_cx) return rc; if (enable) { rc = regulator_set_voltage( mdata->vdd_cx, RPM_REGULATOR_CORNER_SVS_SOC, RPM_REGULATOR_CORNER_SUPER_TURBO); if (rc < 0) goto vreg_set_voltage_fail; pr_debug("Enabling CX power rail\n"); rc = regulator_enable(mdata->vdd_cx); if (rc) { pr_err("Failed to enable regulator.\n"); return rc; } } else { pr_debug("Disabling CX power rail\n"); rc = regulator_disable(mdata->vdd_cx); if (rc) { pr_err("Failed to disable regulator.\n"); return rc; } rc = regulator_set_voltage( mdata->vdd_cx, RPM_REGULATOR_CORNER_NONE, RPM_REGULATOR_CORNER_SUPER_TURBO); if (rc < 0) goto vreg_set_voltage_fail; } return rc; vreg_set_voltage_fail: pr_err("Set vltg fail\n"); return rc; } static void mdss_mdp_footswitch_ctrl(struct mdss_data_type *mdata, int on) { int ret; Loading @@ -2158,6 +2210,7 @@ static void mdss_mdp_footswitch_ctrl(struct mdss_data_type *mdata, int on) if (ret) pr_err("Footswitch failed to enable\n"); mdss_mdp_batfet_ctrl(mdata, true); mdss_mdp_cx_ctrl(mdata, true); } mdata->fs_ena = true; } else { Loading @@ -2166,6 +2219,7 @@ static void mdss_mdp_footswitch_ctrl(struct mdss_data_type *mdata, int on) if (mdata->fs_ena) { regulator_disable(mdata->fs); mdss_mdp_batfet_ctrl(mdata, false); mdss_mdp_cx_ctrl(mdata, false); } mdata->fs_ena = false; } Loading