On Mon, Nov 5, 2012 at 2:32 PM, Rahul Sharma <
rahul.sharma@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@samsung.com>
> Signed-off-by: Prathyush K <
prathyush.k@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;
> +}
> +