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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





2012/11/7 Leela Krishna Amudala <l.krishna@xxxxxxxxxxx>
Hello Rahul,

On Mon, Nov 5, 2012 at 2:32 PM, Rahul Sharma <rahul.sharma@xxxxxxxxxxx> 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@xxxxxxxxxxx>
> Signed-off-by: Prathyush K <prathyush.k@xxxxxxxxxxx>
> ---
>  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@xxxxxxxxxxxxxxxxxxxxx
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/dri-devel

_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/dri-devel

[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux