From patchwork Tue Feb 14 07:52:07 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Szyprowski X-Patchwork-Id: 9571393 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 998C76045F for ; Tue, 14 Feb 2017 07:52:30 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8B6F7205AF for ; Tue, 14 Feb 2017 07:52:30 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 803A328358; Tue, 14 Feb 2017 07:52:30 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 157DD205AF for ; Tue, 14 Feb 2017 07:52:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752188AbdBNHw3 (ORCPT ); Tue, 14 Feb 2017 02:52:29 -0500 Received: from mailout3.w1.samsung.com ([210.118.77.13]:39761 "EHLO mailout3.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752593AbdBNHw0 (ORCPT ); Tue, 14 Feb 2017 02:52:26 -0500 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout3.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OLC003KDTVABA20@mailout3.w1.samsung.com>; Tue, 14 Feb 2017 07:52:22 +0000 (GMT) Received: from eusmges2.samsung.com (unknown [203.254.199.241]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170214075221eucas1p126456f0fbe9c4265b93f27af397e41b3~jGAwLdRP72457924579eucas1p1u; Tue, 14 Feb 2017 07:52:21 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges2.samsung.com (EUCPMTA) with SMTP id 4F.15.30614.537B2A85; Tue, 14 Feb 2017 07:52:21 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170214075221eucas1p1c0acfa79289ebff6306c01e47c3e83a7~jGAvVG-Pi1962719627eucas1p1F; Tue, 14 Feb 2017 07:52:21 +0000 (GMT) X-AuditID: cbfec7f1-f793f6d000007796-99-58a2b735ea9e Received: from eusync2.samsung.com ( [203.254.199.212]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id E5.00.10233.837B2A85; Tue, 14 Feb 2017 07:52:24 +0000 (GMT) Received: from AMDC2765.digital.local ([106.116.147.25]) by eusync2.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OLC00FWGTUYP980@eusync2.samsung.com>; Tue, 14 Feb 2017 07:52:20 +0000 (GMT) From: Marek Szyprowski To: linux-media@vger.kernel.org, linux-samsung-soc@vger.kernel.org Cc: Marek Szyprowski , Sylwester Nawrocki , Andrzej Hajda , Krzysztof Kozlowski , Inki Dae , Seung-Woo Kim Subject: [PATCH 14/15] media: s5p-mfc: Use preallocated block allocator always for MFC v6+ Date: Tue, 14 Feb 2017 08:52:07 +0100 Message-id: <1487058728-16501-15-git-send-email-m.szyprowski@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1487058728-16501-1-git-send-email-m.szyprowski@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrCIsWRmVeSWpSXmKPExsWy7djP87qm2xdFGMyaq21xa905VotJ9yew WJw/v4HdomfDVlaLGef3MVmsPXKX3eLwm3Ygd/JLNgcOj02rOtk8+rasYvT4vEkugDmKyyYl NSezLLVI3y6BK6NrehdTwR/pitO3PrE2MN4R72Lk5JAQMJE4u/s9O4QtJnHh3no2EFtIYCmj xMXdvl2MXED2Z0aJGT8WMMI0nDv9hx0isYxR4saLr6wQTgOTxNldK1lAqtgEDCW63naBjRIR cJJYOOsvWAezwHdGiW+7T7OCJIQFYiR+7oDYzSKgKvF8ykZmEJtXwFPi95M2Joh1chInj00G q+cEim/6PIURZJCEwGs2iS8f7gA5HECOrMSmA8wQ9S4SJx+ehjpVWOLV8S1Qv8lIXJ7czQJh 9zNKNLVqQ9gzGCXOveWFsK0lDh+/CLaLWYBPYtK26cwQ43klOtqEIEo8JO5c3go1xlHi09pt zBDPz2GUeHX+D+MERpkFjAyrGEVSS4tz01OLjfSKE3OLS/PS9ZLzczcxAuP29L/jH3cwvj9h dYhRgINRiYfXYt/CCCHWxLLiytxDjBIczEoivAy9iyKEeFMSK6tSi/Lji0pzUosPMUpzsCiJ 8+5ZcCVcSCA9sSQ1OzW1ILUIJsvEwSnVwFif4qwTWCFetVfv8+fDDsIbd60qvHC9T/DnDpbl TWEmuS/2lAuoPb/vwxt245tYS7SeWEbk5ZCMBUFGmx1maZSterPI5rUs5/s3WsFmebN08pTv e/54w3nN8NOqIkarnxcyDixl0pp2NZDr71HON66ZJZvTtspMduSX+v47OGZ7aNSOwn8u6kos xRmJhlrMRcWJAAmGX07XAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrMLMWRmVeSWpSXmKPExsVy+t/xK7oW2xdFGEy+IGtxa905VotJ9yew WJw/v4HdomfDVlaLGef3MVmsPXKX3eLwm3Ygd/JLNgcOj02rOtk8+rasYvT4vEkugDnKzSYj NTEltUghNS85PyUzL91WKTTETddCSSEvMTfVVilC1zckSEmhLDGnFMgzMkADDs4B7sFK+nYJ bhld07uYCv5IV5y+9Ym1gfGOeBcjJ4eEgInEudN/2CFsMYkL99azdTFycQgJLGGU2H9qLTuE 08Qk8f/9RbAqNgFDia63XWwgtoiAk8TCWX/B4swC3xkllt1M62Lk4BAWiJF4M18MJMwioCrx fMpGZhCbV8BT4veTNiaIZXISJ49NZgWxOYHimz5PYQSxhQQ8JM6u2cE+gZF3ASPDKkaR1NLi 3PTcYiO94sTc4tK8dL3k/NxNjMAA3nbs55YdjF3vgg8xCnAwKvHwWuxbGCHEmlhWXJl7iFGC g1lJhJehd1GEEG9KYmVValF+fFFpTmrxIUZToKMmMkuJJucDoyuvJN7QxNDc0tDI2MLC3MhI SZx36ocr4UIC6YklqdmpqQWpRTB9TBycUg2Mx9NvN8Rmdk9N3ZqgsaJE+Fb7zKv8b5gNpKQO mC9QnXGirzbwj5399QWSYn9fbdxwUSqML9rkl+Utp5VRZobT7nyZ6/V8z1ThsFlPJPJn+d1Z O3dFQ+FP7YK2L15MqeeOlZ9S3a9tkiZ7atK7yJc7Skquuc5aLPDvkPpTpiINt5vufQpCISEl SizFGYmGWsxFxYkALqjAWHYCAAA= X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170214075221eucas1p1c0acfa79289ebff6306c01e47c3e83a7 X-Msg-Generator: CA X-Sender-IP: 182.198.249.180 X-Local-Sender: =?UTF-8?B?TWFyZWsgU3p5cHJvd3NraRtTUlBPTC1LZXJuZWwgKFRQKRs=?= =?UTF-8?B?7IK87ISx7KCE7J6QG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Global-Sender: =?UTF-8?B?TWFyZWsgU3p5cHJvd3NraRtTUlBPTC1LZXJuZWwgKFRQKRtT?= =?UTF-8?B?YW1zdW5nIEVsZWN0cm9uaWNzG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Sender-Code: =?UTF-8?B?QzEwG0VIURtDMTBDRDAyQ0QwMjczOTI=?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20170214075221eucas1p1c0acfa79289ebff6306c01e47c3e83a7 X-RootMTR: 20170214075221eucas1p1c0acfa79289ebff6306c01e47c3e83a7 References: <1487058728-16501-1-git-send-email-m.szyprowski@samsung.com> Sender: linux-samsung-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-samsung-soc@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP It turned out that all versions of MFC v6+ hardware doesn't have a strict requirement for ALL buffers to be allocated on higher addresses than the firmware base like it was documented for MFC v5. This requirement is true only for the device and per-context buffers. All video data buffers can be allocated anywhere for all MFC v6+ versions. Basing on this fact, the special DMA configuration based on two reserved memory regions is not really needed for MFC v6+ devices, because the memory requirements for the firmware, device and per-context buffers can be fulfilled by the simple probe-time pre-allocated block allocator instroduced in previous patch. This patch enables support for such pre-allocated block based allocator always for MFC v6+ devices. Due to the limitations of the memory management subsystem the largest supported size of the pre-allocated buffer when no CMA (Contiguous Memory Allocator) is enabled is 4MiB. This patch also removes the requirement to provide two reserved memory regions for MFC v6+ devices in device tree. Now the driver is fully functional without them. Signed-off-by: Marek Szyprowski Reviewed-by: Javier Martinez Canillas Tested-by: Javier Martinez Canillas --- Documentation/devicetree/bindings/media/s5p-mfc.txt | 2 +- drivers/media/platform/s5p-mfc/s5p_mfc.c | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Documentation/devicetree/bindings/media/s5p-mfc.txt b/Documentation/devicetree/bindings/media/s5p-mfc.txt index 2c901286d818..d3404b5d4d17 100644 --- a/Documentation/devicetree/bindings/media/s5p-mfc.txt +++ b/Documentation/devicetree/bindings/media/s5p-mfc.txt @@ -28,7 +28,7 @@ Optional properties: - memory-region : from reserved memory binding: phandles to two reserved memory regions, first is for "left" mfc memory bus interfaces, second if for the "right" mfc memory bus, used when no SYSMMU - support is available + support is available; used only by MFC v5 present in Exynos4 SoCs Obsolete properties: - samsung,mfc-r, samsung,mfc-l : support removed, please use memory-region diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc.c b/drivers/media/platform/s5p-mfc/s5p_mfc.c index 8fc6fe4ba087..36f0aec2a1b3 100644 --- a/drivers/media/platform/s5p-mfc/s5p_mfc.c +++ b/drivers/media/platform/s5p-mfc/s5p_mfc.c @@ -1178,9 +1178,12 @@ static void s5p_mfc_unconfigure_2port_memory(struct s5p_mfc_dev *mfc_dev) static int s5p_mfc_configure_common_memory(struct s5p_mfc_dev *mfc_dev) { struct device *dev = &mfc_dev->plat_dev->dev; - unsigned long mem_size = SZ_8M; + unsigned long mem_size = SZ_4M; unsigned int bitmap_size; + if (IS_ENABLED(CONFIG_DMA_CMA) || exynos_is_iommu_available(dev)) + mem_size = SZ_8M; + if (mfc_mem_size) mem_size = memparse(mfc_mem_size, NULL); @@ -1240,7 +1243,7 @@ static int s5p_mfc_configure_dma_memory(struct s5p_mfc_dev *mfc_dev) { struct device *dev = &mfc_dev->plat_dev->dev; - if (exynos_is_iommu_available(dev)) + if (exynos_is_iommu_available(dev) || !IS_TWOPORT(mfc_dev)) return s5p_mfc_configure_common_memory(mfc_dev); else return s5p_mfc_configure_2port_memory(mfc_dev); @@ -1251,7 +1254,7 @@ static void s5p_mfc_unconfigure_dma_memory(struct s5p_mfc_dev *mfc_dev) struct device *dev = &mfc_dev->plat_dev->dev; s5p_mfc_release_firmware(mfc_dev); - if (exynos_is_iommu_available(dev)) + if (exynos_is_iommu_available(dev) || !IS_TWOPORT(mfc_dev)) s5p_mfc_unconfigure_common_memory(mfc_dev); else s5p_mfc_unconfigure_2port_memory(mfc_dev);