[PATCH] drm: exynos: add iommu support in hdmi driver with dt enabled

Inki Dae inki.dae at samsung.com
Wed Nov 7 01:41:35 PST 2012


2012/11/7 Leela Krishna Amudala <l.krishna at samsung.com>

> Hello Rahul,
>
> On Mon, Nov 5, 2012 at 2:32 PM, Rahul Sharma <rahul.sharma at samsung.com>
> wrote:
> > This patch adds iommu support for hdmi driver with device tree based
> > search. It searches for sysmmu property in hdmi dt node to get tv
> > iommu device pointer which will be used to configure iommu hw interface.
> >
> > This patch is based on "exynos-drm-next-iommu" branch at
> > http://git.kernel.org/?p=linux/kernel/git/daeinki/drm-exynos.git
> >
> > This patch is having dependency on  linux-samsung-soc patchset named
> > "add dt based support for iommu for hdmi"
> >
> > Signed-off-by: Rahul Sharma <rahul.sharma at samsung.com>
> > Signed-off-by: Prathyush K <prathyush.k at samsung.com>
> > ---
> >  drivers/gpu/drm/exynos/exynos_hdmi.c |   35
> ++++++++++++++++++++++++++++++++++
> >  1 files changed, 35 insertions(+), 0 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c
> b/drivers/gpu/drm/exynos/exynos_hdmi.c
> > index d1a1d71..ee110c9 100644
> > --- a/drivers/gpu/drm/exynos/exynos_hdmi.c
> > +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
> > @@ -34,7 +34,9 @@
> >  #include <linux/regulator/consumer.h>
> >  #include <linux/io.h>
> >  #include <linux/of_gpio.h>
> > +#include <linux/of_platform.h>
> >  #include <plat/gpio-cfg.h>
> > +#include <mach/sysmmu.h>
> >
> >  #include <drm/exynos_drm.h>
> >
> > @@ -2275,6 +2277,34 @@ void hdmi_attach_hdmiphy_client(struct i2c_client
> *hdmiphy)
> >  }
> >
> >  #ifdef CONFIG_OF
> > +
> > +static int drm_hdmi_dt_init_iommu(struct device *dev)
> > +{
> > +       struct platform_device *pds;
> > +       struct device_node *dn, *dns;
> > +       const __be32 *parp;
> > +
> > +       dn = dev->of_node;
> > +       parp = of_get_property(dn, "sysmmu", NULL);
> > +       if (parp == NULL) {
> > +               dev_err(dev, "failed to find sysmmu property\n");
> > +               return -EINVAL;
> > +       }
> > +       dns = of_find_node_by_phandle(be32_to_cpup(parp));
> > +       if (dns == NULL) {
> > +               dev_err(dev, "failed to find sysmmu node\n");
> > +               return -EINVAL;
> > +       }
> > +       pds = of_find_device_by_node(dns);
> > +       if (pds == NULL) {
> > +               dev_err(dev, "failed to find sysmmu platform device\n");
> > +               return -EINVAL;
> > +       }
> > +
> > +       platform_set_sysmmu(&pds->dev, dev);
> > +       return 0;
> > +}
> > +
>
> As a part of adding iommu support to FIMD driver, we have to implement
> the same function in FIMD driver also, which makes code replication.
> So, it would be better to move this function out of this file and put
> it in a common drm file so that FIMD also can use it.
>
>
I tend to agree with you but I think it's better to move it into
drivers/iommu/exynos-iommu.c because IOMMU units could be used by device
driver based on not only DRM but also V4L2.

Thanks,
Inki Dae


> Best Wishes,
> Leela Krishna Amudala.
>
>
>  static struct s5p_hdmi_platform_data *drm_hdmi_dt_parse_pdata
> >                                         (struct device *dev)
> >  {
> > @@ -2294,6 +2324,11 @@ static struct s5p_hdmi_platform_data
> *drm_hdmi_dt_parse_pdata
> >                 goto err_data;
> >         }
> >
> > +       if (drm_hdmi_dt_init_iommu(dev)){
> > +               DRM_ERROR("no sysmmu property found\n");
> > +               goto err_data;
> > +       }
> > +
> >         pd->hpd_gpio = of_get_named_gpio_flags(np, "hpd-gpio", 0,
> &flags);
> >
> >         return pd;
> > --
> > 1.7.0.4
> >
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/dri-devel
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20121107/2f899a06/attachment.html>


More information about the dri-devel mailing list