From patchwork Wed Jan 25 10:28:04 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Szyprowski X-Patchwork-Id: 92415 Delivered-To: patch@linaro.org Received: by 10.140.20.99 with SMTP id 90csp2141677qgi; Wed, 25 Jan 2017 02:28:32 -0800 (PST) X-Received: by 10.99.213.81 with SMTP id v17mr46332932pgi.130.1485340112490; Wed, 25 Jan 2017 02:28:32 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q16si16527020pfj.40.2017.01.25.02.28.32; Wed, 25 Jan 2017 02:28:32 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-samsung-soc-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-samsung-soc-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-samsung-soc-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751817AbdAYK2a (ORCPT + 4 others); Wed, 25 Jan 2017 05:28:30 -0500 Received: from mailout4.w1.samsung.com ([210.118.77.14]:65482 "EHLO mailout4.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751590AbdAYK21 (ORCPT ); Wed, 25 Jan 2017 05:28:27 -0500 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout4.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OKB00FHEZRCCX90@mailout4.w1.samsung.com>; Wed, 25 Jan 2017 10:28:24 +0000 (GMT) Received: from eusmges2.samsung.com (unknown [203.254.199.241]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170125102823eucas1p1970b04383b563885648527447bb37397~c-PRTEH8q2567125671eucas1p1b; Wed, 25 Jan 2017 10:28:23 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges2.samsung.com (EUCPMTA) with SMTP id 44.AB.30614.7CD78885; Wed, 25 Jan 2017 10:28:23 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170125102822eucas1p29f2605060eb8255a6cf06638c1148ec4~c-PQm0gtt2622626226eucas1p22; Wed, 25 Jan 2017 10:28:22 +0000 (GMT) X-AuditID: cbfec7f1-f793f6d000007796-47-58887dc7549e Received: from eusync4.samsung.com ( [203.254.199.214]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 40.83.06687.50E78885; Wed, 25 Jan 2017 10:29:25 +0000 (GMT) Received: from AMDC2765.digital.local ([106.116.147.25]) by eusync4.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OKB00K87ZR4QX40@eusync4.samsung.com>; Wed, 25 Jan 2017 10:28:22 +0000 (GMT) From: Marek Szyprowski To: linux-samsung-soc@vger.kernel.org, dmaengine@vger.kernel.org, alsa-devel@alsa-project.org, linux-arm-kernel@lists.infradead.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Marek Szyprowski , Krzysztof Kozlowski , Bartlomiej Zolnierkiewicz , Vinod Koul , Ulf Hansson , "Rafael J. Wysocki" , Kuninori Morimoto , Mark Brown , Inki Dae Subject: [PATCH v7 0/4] DMA Engine: switch PL330 driver to non-irq-safe runtime PM Date: Wed, 25 Jan 2017 11:28:04 +0100 Message-id: <1485340088-25481-1-git-send-email-m.szyprowski@samsung.com> X-Mailer: git-send-email 1.9.1 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrKIsWRmVeSWpSXmKPExsWy7djP87rHazsiDOaf5LS4cvEQk8XGGetZ LaY+fMJmsXrqX1aLSfcnsFicP7+B3eLV4V2MFpseX2O1uLxrDpvF594jjBYzzu9jslh75C67 xZnTl1gtjq8Nt3jZt5/Fgd9jw+cmNo/Fe14yeWxa1cnmcefaHjaPzUvqPb6dmcjiseVqO4tH 35ZVjB6fN8kFcEZx2aSk5mSWpRbp2yVwZcy9E1KwRK+i7bNxA+N+5S5GTg4JAROJ57u2MEHY YhIX7q1nA7GFBJYySmx85NPFyAVkf2aUuLbrLTtMw9pjTWwQiWWMEssfz2GEcBqYJF5+2ssM UsUmYCjR9bYLrEpEYD+jxN6dj5lBHGaBBmaJ04e+gc0SFgiR+PWhG6yDRUBV4uyNJYwgNq+A h8TeT5eh9slJnDw2mRWkWUJgFbvEwVm/WboYOYAcWYlNB5ghalwk+v/chrKFJV4d3wLVKyPR 2XEQ6rl+RommVm0IewajxLm3vBC2tcTh4xdZQWxmAT6JSdumM0OM55XoaBOCKPGQeNDfDjXe UeLAkm2MkDCKldiydALLBEbpBYwMqxhFUkuLc9NTi430ihNzi0vz0vWS83M3MQITw+l/xz/u YHx/wuoQowAHoxIP74uU9ggh1sSy4srcQ4wSHMxKIrxuNR0RQrwpiZVVqUX58UWlOanFhxil OViUxHn3LLgSLiSQnliSmp2aWpBaBJNl4uCUamDcNv/63ksFU1e80i0U36/zyHDXlhelOQ61 FVz6D+wXx205xL/I2dxQkvPZW8WiWecLpixf68o1ae3FCUzKOpunvFnREx1r5Xqu6Y6Zws+I Gy/1P/gynv1VwzJfSv2elrveX9PGpGrW1yYrG989Yvn8MMSaOeKZg8E75vY/Wme2py8zWpMX q/VPiaU4I9FQi7moOBEACmfHRQgDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupkkeLIzCtJLcpLzFFi42I5/e/4NV3Wuo4Ig48zjS2uXDzEZLFxxnpW i6kPn7BZrJ76l9Vi0v0JLBbnz29gt3h1eBejxabH11gtLu+aw2bxufcIo8WM8/uYLNYeuctu ceb0JVaL42vDLV727Wdx4PfY8LmJzWPxnpdMHptWdbJ53Lm2h81j85J6j29nJrJ4bLnazuLR t2UVo8fnTXIBnFFuNhmpiSmpRQqpecn5KZl56bZKoSFuuhZKCnmJuam2ShG6viFBSgpliTml QJ6RARpwcA5wD1bSt0twy5h7J6RgiV5F22fjBsb9yl2MnBwSAiYSa481sUHYYhIX7q0Hs4UE ljBKPOhM6WLkArKbmCQmP5vBBJJgEzCU6HrbxQaSEBHYzyjx4dZ1sA5mgSZmiXVPwWxhgRCJ Aw82sYLYLAKqEmdvLGEEsXkFPCT2frrMDrFNTuLkscmsExi5FzAyrGIUSS0tzk3PLTbUK07M LS7NS9dLzs/dxAiMhm3Hfm7ewXhpY/AhRgEORiUe3glJ7RFCrIllxZW5hxglOJiVRHjdajoi hHhTEiurUovy44tKc1KLDzGaAi2fyCwlmpwPjNS8knhDE0NzS0MjYwsLcyMjJXHekg9XwoUE 0hNLUrNTUwtSi2D6mDg4pRoYfeUu115jWX/mkuXdm9mWR4XfnD+m/CF1mqPHoae3GHlsN6Wd 6+lNiJXdoxFUFvBqrr/ZJs9asbNVekuKfkq/2PLz9KWUOYf2bv7p15Wpv132ksQMCUdLRbMl NT7BtVGMU6d+UjgVcD7rim5F/K6DOXm3r/nxnrp0LulM65rW+uOJHsyla32XK7EUZyQaajEX FScCAMymHfacAgAA X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170125102822eucas1p29f2605060eb8255a6cf06638c1148ec4 X-Msg-Generator: CA X-Sender-IP: 182.198.249.179 X-Local-Sender: =?utf-8?q?Marek_Szyprowski=1BSRPOL-Kernel_=28TP=29=1B?= =?utf-8?b?7IK87ISx7KCE7J6QG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Global-Sender: =?utf-8?q?Marek_Szyprowski=1BSRPOL-Kernel_=28TP=29=1BSam?= =?utf-8?q?sung_Electronics=1BSenior_Software_Engineer?= X-Sender-Code: =?utf-8?q?C10=1BEHQ=1BC10CD02CD027392?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20170125102822eucas1p29f2605060eb8255a6cf06638c1148ec4 X-RootMTR: 20170125102822eucas1p29f2605060eb8255a6cf06638c1148ec4 References: Sender: linux-samsung-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-samsung-soc@vger.kernel.org Hello, This patchset changes the way the runtime PM is implemented in the PL330 DMA engine driver. The main goal of such change is to add support for the audio power domain to Exynos5 SoCs (5250, 542x, 5433, probably others) and let it to be properly turned off, when no audio is being used. Switching to non-irq-safe runtime PM is required to properly let power domain to be turned off (irq-safe runtime PM keeps power domain turned on all the time) and to integrate with clock controller's runtime PM (this cannot be workarounded any other way, PL330 uses clocks from the controller, which belongs to the same power domain). For more details of the proposed change to the PL330 driver see patch #4. Audio power domain on Exynos5 SoCs contains following hardware modules: 1. clock controller 2. pin controller 3. PL330 DMA controller 4. I2S audio controller Patches for adding or fixing runtime PM for each of the above devices is handled separately. Runtime PM patches for clock controllers is possible and has been proposed in the following thread (pending review): "[PATCH v4 0/4] Add runtime PM support for clocks (on Exynos SoC example)", http://www.spinics.net/lists/arm-kernel/msg550747.html Runtime PM support for Exynos pin controller has been posted in the following thread: "[PATCH 0/9] Runtime PM for Exynos pin controller driver", http://www.spinics.net/lists/arm-kernel/msg550161.html Exynos I2S driver supports runtime PM, but some fixes were needed for it and they are already queued to linux-next. This patchset is based on linux-next from 25th January 2017 with "dmaengine: pl330: fix double lock" patch applied. Best regards Marek Szyprowski Samsung R&D Institute Poland Changelog: v7: - added missing of_dma_request_slave_channel API change to sound/soc/sh/rcar driver - extended commit message with information about drawbacks of irq-safe runtime pm - added Ulf's reviewed-by tags v6: https://www.spinics.net/lists/arm-kernel/msg557377.html - fixed pl330 system sleep suspend/resume callbacks, previous implementation incorrectly tried to unprepare clocks unconditionally - after a fix pl330 suspend/resume callbacks can be simply replaced by generic pm_runtime_force_{suspend,resume} helpers, what simplifies code even more v5: https://www.spinics.net/lists/arm-kernel/msg555001.html - added Acks - additional mutex is indeed not needed, rely on dma_list_mutex in dmaengine core, added comment about locking v4: http://www.spinics.net/lists/dmaengine/msg12329.html - rebased onto "dmaengine: pl330: fix double lock" patch: http://www.spinics.net/lists/dmaengine/msg12289.html - added a mutex to protect runtime PM links creation/removal to avoid races - moved mem2mem channel case handing to pl330_{add,del}_slave_pm_link functions to simplify code and error paths v3: http://www.spinics.net/lists/dmaengine/msg12245.html - removed pl330_filter function as suggested by Arnd Bergmann - removed pl330.h from arch/arm/plat-samsung/devs.c - fixes some minor style issues pointed by Krzysztof Kozlowski v2: https://www.spinics.net/lists/arm-kernel/msg552772.html - rebased onto linux next-20170109 - improved patch description - separated patch #3 from #4 (storing a pointer to slave device for each DMA channel) as requested by Krzysztof Kozlowski v1: https://www.spinics.net/lists/arm-kernel/msg550008.html - initial version Patch summary: Marek Szyprowski (4): dmaengine: pl330: remove pdata based initialization dmaengine: Forward slave device pointer to of_xlate callback dmaengine: pl330: Store pointer to slave device dmaengine: pl330: Don't require irq-safe runtime PM arch/arm/plat-samsung/devs.c | 1 - drivers/dma/amba-pl08x.c | 2 +- drivers/dma/at_hdmac.c | 4 +- drivers/dma/at_xdmac.c | 2 +- drivers/dma/bcm2835-dma.c | 2 +- drivers/dma/coh901318.c | 2 +- drivers/dma/cppi41.c | 2 +- drivers/dma/dma-jz4780.c | 2 +- drivers/dma/dmaengine.c | 2 +- drivers/dma/dw/platform.c | 2 +- drivers/dma/edma.c | 4 +- drivers/dma/fsl-edma.c | 2 +- drivers/dma/img-mdc-dma.c | 2 +- drivers/dma/imx-dma.c | 2 +- drivers/dma/imx-sdma.c | 2 +- drivers/dma/k3dma.c | 2 +- drivers/dma/lpc18xx-dmamux.c | 2 +- drivers/dma/mmp_pdma.c | 2 +- drivers/dma/mmp_tdma.c | 2 +- drivers/dma/moxart-dma.c | 2 +- drivers/dma/mxs-dma.c | 2 +- drivers/dma/nbpfaxi.c | 2 +- drivers/dma/of-dma.c | 19 ++-- drivers/dma/pl330.c | 220 ++++++++++++++++------------------------ drivers/dma/pxa_dma.c | 2 +- drivers/dma/qcom/bam_dma.c | 2 +- drivers/dma/sh/rcar-dmac.c | 2 +- drivers/dma/sh/shdma-of.c | 2 +- drivers/dma/sh/usb-dmac.c | 2 +- drivers/dma/sirf-dma.c | 2 +- drivers/dma/st_fdma.c | 2 +- drivers/dma/ste_dma40.c | 2 +- drivers/dma/stm32-dma.c | 2 +- drivers/dma/sun4i-dma.c | 2 +- drivers/dma/sun6i-dma.c | 2 +- drivers/dma/tegra20-apb-dma.c | 2 +- drivers/dma/tegra210-adma.c | 2 +- drivers/dma/xilinx/xilinx_dma.c | 2 +- drivers/dma/xilinx/zynqmp_dma.c | 2 +- drivers/dma/zx_dma.c | 2 +- include/linux/amba/pl330.h | 35 ------- include/linux/of_dma.h | 19 ++-- sound/soc/sh/rcar/dma.c | 5 +- sound/soc/sh/rcar/dvc.c | 3 +- sound/soc/sh/rcar/rsnd.h | 3 +- sound/soc/sh/rcar/src.c | 3 +- sound/soc/sh/rcar/ssi.c | 3 +- 47 files changed, 158 insertions(+), 231 deletions(-) delete mode 100644 include/linux/amba/pl330.h -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html