This is an automatic generated email to let you know that the following patch 
were queued:

Subject: [media] exynos4-is: add of_platform_populate() call for FIMC-IS child 
devices
Author:  Sylwester Nawrocki <s.nawro...@samsung.com>
Date:    Tue Sep 13 08:59:49 2016 -0300

Instead of relying on the "simple-bus" compatible and the driver core
populating FIMC-IS child devices make the fimc-is driver populating
its child devices.  This prevents issues related to accessing ISP_I2C
clock registers with corresponding power domain switched off, which
popped out after applying some pending IOMMU driver patches.  Now the
I2C_ISP child devices will be instantiated only when required parent
device drivers are initialized and ready.

Signed-off-by: Marek Szyprowski <m.szyprow...@samsung.com>
Signed-off-by: Sylwester Nawrocki <s.nawro...@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mche...@s-opensource.com>

 drivers/media/platform/exynos4-is/fimc-is.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

---

diff --git a/drivers/media/platform/exynos4-is/fimc-is.c 
b/drivers/media/platform/exynos4-is/fimc-is.c
index 313ab10dbb94..518ad34f80d7 100644
--- a/drivers/media/platform/exynos4-is/fimc-is.c
+++ b/drivers/media/platform/exynos4-is/fimc-is.c
@@ -852,13 +852,18 @@ static int fimc_is_probe(struct platform_device *pdev)
                goto err_pm;
 
        vb2_dma_contig_set_max_seg_size(dev, DMA_BIT_MASK(32));
+
+       ret = of_platform_populate(dev->of_node, NULL, NULL, dev);
+       if (ret < 0)
+               goto err_pm;
+
        /*
         * Register FIMC-IS V4L2 subdevs to this driver. The video nodes
         * will be created within the subdev's registered() callback.
         */
        ret = fimc_is_register_subdevs(is);
        if (ret < 0)
-               goto err_pm;
+               goto err_of_dep;
 
        ret = fimc_is_debugfs_create(is);
        if (ret < 0)
@@ -877,6 +882,8 @@ err_dfs:
        fimc_is_debugfs_remove(is);
 err_sd:
        fimc_is_unregister_subdevs(is);
+err_of_dep:
+       of_platform_depopulate(dev);
 err_pm:
        if (!pm_runtime_enabled(dev))
                fimc_is_runtime_suspend(dev);
@@ -936,6 +943,7 @@ static int fimc_is_remove(struct platform_device *pdev)
        if (!pm_runtime_status_suspended(dev))
                fimc_is_runtime_suspend(dev);
        free_irq(is->irq, is);
+       of_platform_depopulate(dev);
        fimc_is_unregister_subdevs(is);
        vb2_dma_contig_clear_max_seg_size(dev);
        fimc_is_put_clocks(is);

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to