2012/11/7 Leela Krishna Amudala <l.krishna@xxxxxxxxxxx>
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
Hello Rahul,
As a part of adding iommu support to FIMD driver, we have to implement
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;
> +}
> +
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