On Wed, Nov 7, 2012 at 3:11 PM, Inki Dae <
inki.dae@samsung.com> wrote:
>
>
> 2012/11/7 Leela Krishna Amudala <
l.krishna@samsung.com>
>>
>> Hello Rahul,
>>
>> 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;
>> > +}
>> > +
>>
>> 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
>