Message ID | 20190508204219.31687-6-robdclark@gmail.com |
---|---|
State | New |
Headers | show |
Series | None | expand |
On 5/8/19 23:42, Rob Clark wrote: > From: Georgi Djakov <georgi.djakov@linaro.org> > Let's put some text in the commit message: The interconnect API provides an interface for consumer drivers to express their bandwidth needs in the SoC. This data is aggregated and the on-chip interconnect hardware is configured to the most appropriate power/performance profile. Use the API to configure the interconnects and request bandwidth between DDR and the display hardware (MDP port(s) and rotator downscaler). > Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org> > Signed-off-by: Rob Clark <robdclark@chromium.org> > --- > drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c > index 97179bec8902..54d2b4c2b09f 100644 > --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c > +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c > @@ -16,6 +16,7 @@ > * this program. If not, see <http://www.gnu.org/licenses/>. > */ > > +#include <linux/interconnect.h> > #include <linux/of_irq.h> > > #include "msm_drv.h" > @@ -1050,6 +1051,19 @@ static const struct component_ops mdp5_ops = { > > static int mdp5_dev_probe(struct platform_device *pdev) > { > + struct icc_path *path0 = of_icc_get(&pdev->dev, "port0"); > + struct icc_path *path1 = of_icc_get(&pdev->dev, "port1"); > + struct icc_path *path_rot = of_icc_get(&pdev->dev, "rotator"); It would be better change just the names to "mdp0-mem', "mdp1-mem", "rotator-mem" for consistency and denote that the path target is the DDR memory. > + > + if (IS_ERR(path0)) > + return PTR_ERR(path0); > + icc_set_bw(path0, 0, MBps_to_icc(6400)); > + > + if (!IS_ERR(path1)) > + icc_set_bw(path1, 0, MBps_to_icc(6400)); > + if (!IS_ERR(path_rot)) > + icc_set_bw(path_rot, 0, MBps_to_icc(6400)); > + > DBG(""); > return component_add(&pdev->dev, &mdp5_ops); > } > Thanks, Georgi
diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c index 97179bec8902..54d2b4c2b09f 100644 --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c @@ -16,6 +16,7 @@ * this program. If not, see <http://www.gnu.org/licenses/>. */ +#include <linux/interconnect.h> #include <linux/of_irq.h> #include "msm_drv.h" @@ -1050,6 +1051,19 @@ static const struct component_ops mdp5_ops = { static int mdp5_dev_probe(struct platform_device *pdev) { + struct icc_path *path0 = of_icc_get(&pdev->dev, "port0"); + struct icc_path *path1 = of_icc_get(&pdev->dev, "port1"); + struct icc_path *path_rot = of_icc_get(&pdev->dev, "rotator"); + + if (IS_ERR(path0)) + return PTR_ERR(path0); + icc_set_bw(path0, 0, MBps_to_icc(6400)); + + if (!IS_ERR(path1)) + icc_set_bw(path1, 0, MBps_to_icc(6400)); + if (!IS_ERR(path_rot)) + icc_set_bw(path_rot, 0, MBps_to_icc(6400)); + DBG(""); return component_add(&pdev->dev, &mdp5_ops); }