From patchwork Fri Sep 16 09:02:16 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sylwester Nawrocki X-Patchwork-Id: 37127 Received: from mail.tu-berlin.de ([130.149.7.33]) by www.linuxtv.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bkp2f-0006yI-LH; Fri, 16 Sep 2016 09:02:41 +0000 X-tubIT-Incoming-IP: 209.132.180.67 Received: from vger.kernel.org ([209.132.180.67]) by mail.tu-berlin.de (exim-4.84_2/mailfrontend-7) with esmtp id 1bkp2d-0000fc-0I; Fri, 16 Sep 2016 11:02:41 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752215AbcIPJCh (ORCPT + 1 other); Fri, 16 Sep 2016 05:02:37 -0400 Received: from mailout4.samsung.com ([203.254.224.34]:50332 "EHLO mailout4.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751257AbcIPJCf (ORCPT ); Fri, 16 Sep 2016 05:02:35 -0400 Received: from epcpsbgm1new.samsung.com (epcpsbgm1 [203.254.230.26]) by mailout4.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0ODL00AP7AG6ZU80@mailout4.samsung.com>; Fri, 16 Sep 2016 18:02:33 +0900 (KST) X-AuditID: cbfee61a-f78ff6d000001462-48-57dbb5289c9b Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm1new.samsung.com (EPCPMTA) with SMTP id 3C.4D.05218.825BBD75; Fri, 16 Sep 2016 18:02:32 +0900 (KST) Received: from AMDC1344.digital.local ([106.116.147.32]) by mmp2.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0ODL008M0AG0ZD80@mmp2.samsung.com>; Fri, 16 Sep 2016 18:02:32 +0900 (KST) From: Sylwester Nawrocki To: linux-media@vger.kernel.org Cc: m.szyprowski@samsung.com, b.zolnierkie@samsung.com, linux-samsung-soc@vger.kernel.org, Sylwester Nawrocki Subject: [PATCH] exynos4-is: add of_platform_populate() call for FIMC-IS child devices Date: Fri, 16 Sep 2016 11:02:16 +0200 Message-id: <1474016536-29766-1-git-send-email-s.nawrocki@samsung.com> X-Mailer: git-send-email 1.9.1 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrGJMWRmVeSWpSXmKPExsVy+t9jQV2NrbfDDab/srbYOGM9q0XPhq2s FjPO72OyWHvkLrvF4TftrA6sHn1bVjF6fN4kF8AUxWWTkpqTWZZapG+XwJXxc88LpoJ5AhUf D9xmb2C8ytvFyMEhIWAi8eMgcxcjJ5ApJnHh3nq2LkYuDiGBWYwSjXNvs0M4vxglXu05D1bF JmAo0Xu0jxHEFhGQl3jSewOsg1mgg1Gi/focdpCEsECExMY1U9lAbBYBVYnF27aBNfMKuEms 2LKKCWKdnMTJY5NZJzByL2BkWMUokVqQXFCclJ5rmJdarlecmFtcmpeul5yfu4kR7PtnUjsY D+5yP8QowMGoxMNrkX47XIg1say4MvcQowQHs5II75tNQCHelMTKqtSi/Pii0pzU4kOM0hws SuK8j/+vCxMSSE8sSc1OTS1ILYLJMnFwSjUwTvKsFUsMfLmeuYzB0qq3zZ736ZmtidtW6X8S 3sJwmLc08o9kJvOE7I2NK1m4vAq0pblP+NpEhdg9W7nCst72fgrXLR8R1rKu68ryL+50zDv3 y7ZBkPl77d1dEqXzvB4va0kIm/anSsDfaerr/jk2LjdYq4TbMzYrrPngyNzu68gkZGlz7qwS S3FGoqEWc1FxIgBVJc5z+QEAAA== Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-PMX-Version: 6.0.0.2142326, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2016.9.16.85415 X-PMX-Spam: Gauge=IIIIIIII, Probability=8%, Report=' MULTIPLE_RCPTS 0.1, HTML_00_01 0.05, HTML_00_10 0.05, BODYTEXTP_SIZE_3000_LESS 0, BODY_SIZE_2000_2999 0, BODY_SIZE_5000_LESS 0, BODY_SIZE_7000_LESS 0, CHILD_EX_X3 0, LEGITIMATE_NEGATE 0, LEGITIMATE_SIGNS 0, MULTIPLE_REAL_RCPTS 0, NO_URI_HTTPS 0, SINGLE_URI_IN_BODY 0, URI_ENDS_IN_HTML 0, __ANY_URI 0, __CC_NAME 0, __CC_NAME_DIFF_FROM_ACC 0, __CC_REAL_NAMES 0, __CP_MEDIA_BODY 0, __CP_NAME_BODY 0, __CP_NAME_SUBJ 0, __CP_URI_IN_BODY 0, __HAS_CC_HDR 0, __HAS_FROM 0, __HAS_MSGID 0, __HAS_X_MAILER 0, __HAS_X_MAILING_LIST 0, __MIME_TEXT_ONLY 0, __MULTIPLE_RCPTS_CC_X2 0, __SANE_MSGID 0, __SINGLE_URI_TEXT 0, __SUBJ_ALPHA_END 0, __TO_MALFORMED_2 0, __TO_NO_NAME 0, __URI_IN_BODY 0, __URI_NO_WWW 0, __URI_NS , __URI_WITH_PATH 0' 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 happens after applying some pending Exynos IOMMU driver patches improving runtime PM. Now the I2C_ISP child devices will be instantiated only when required parent device drivers are initialized and ready. Signed-off-by: Marek Szyprowski Signed-off-by: Sylwester Nawrocki --- 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 313ab10..518ad34 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);