Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933713AbeALNYO (ORCPT + 1 other); Fri, 12 Jan 2018 08:24:14 -0500 Received: from mailout2.w1.samsung.com ([210.118.77.12]:36165 "EHLO mailout2.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932976AbeALNYL (ORCPT ); Fri, 12 Jan 2018 08:24:11 -0500 DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20180112132408euoutp025cc0ce56b82bfccdea0001c613366989~JEtNQDLME0386203862euoutp02j X-AuditID: cbfec7f1-f793a6d00000326b-bb-5a58b6f7b3dc Subject: Re: [PATCH 1/9] clk: samsung: exynos5433: Add clock flag to support suspend-to-ram To: Krzysztof Kozlowski , Chanwoo Choi Cc: Sylwester Nawrocki , kgene@kernel.org, Tomasz Figa , chanwoo@kernel.org, Jaehoon Chung , Inki Dae , linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Michael Turquette , Stephen Boyd , linux-clk@vger.kernel.org From: Marek Szyprowski Message-id: <79ff6d0d-fd7f-08d0-0f10-f4531632c08a@samsung.com> Date: Fri, 12 Jan 2018 14:24:05 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-version: 1.0 In-reply-to: Content-type: text/plain; charset="utf-8"; format="flowed" Content-transfer-encoding: 7bit Content-language: en-US X-Brightmail-Tracker: H4sIAAAAAAAAA02Se0hTURjAObv37l6Hq+t8fZhmTCKoNC2zi5kUGAyJSCTSVdTKi4/c1G1K 6R9JNbNpPhF1SUqlwRCttaRUjLQ0TDdNzfnIMDPTNBF7aIrmdhX87/c9zved3+FQmMhEuFGx CjWrVMjixXwBXte6aPL+Wxch9W2YcmfyLb040/9rgmDK35gIpuBzHs5Y/mUQTO7YD4wxm5+Q jGHsI8HMZY8QTE99GZ8pMTfxmO7240zL9G2CWejIwhl9/TI6ulUya9GQkp6cuzzJS90nUmLQ 3+FLnj26Lskx6pFk3rD9FCkVBEWx8bEprHJf8EVBTN5gJy/xz6GrVdXVZDrq3KVFdhTQ/tBk KcE4doGukVq+FgkoEV2JwDw/SnLBPIKhoQp848RSURGPK1QhGO014FwwgWCmv9g2y5E+D21G A2llJzoMapuWbE0Y/QqDnx3VtgKf9gPtjJZvZSEdDO3Tq2tjKQqnd8LwooM17Uyfg9WnpSTX 4gALhSO2W9jR4TDU0oisjNGB8G1FQ3DsCc+qZzCOXeGmZsC2F+gHJLwospCcQgjoSyfXpR1h qs24nneHnsKsdc1cBDc0ezguQWCaEXJ8GFrauteXbYGCOqswtZYXQmaGiGuRwPjkOOL4GJSX aTHugcp48Ds/i5+HPHWbfHSbHHSbHHSbHCoQrkdObLJKHs2q9vuoZHJVsiLa53KC3IDWftn7 lba5F2j2XWAzoikkthcyiWekIkKWoromb0ZAYWIn4dvKCKlIGCW7lsoqEy4ok+NZVTPaRuFi V+ERaUakiI6WqdkrLJvIKjeqPMrOLR3FfciIWibHA/zuGZU1z896zN6nvO07zBUns8VJZNj3 QXrHiYGGaXVAZ1yROu1r4M/h0GnNlzx+a0Jq+ONMf7tVS+PN4RrX109OV5oO7FY4OfukxXat hhZHD+X3YXvrSy0JrQqXh2W3HL0C5aRX0IkQj5ZEwUHX8G1JuZF9lwZ8STGuipH57caUKtl/ MxdJtGEDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrCIsWRmVeSWpSXmKPExsVy+t/xa7rftkVEGax9ZmUx8cYVFovrX56z Wsw/co7VYtL9CSwWN361sVr0P37NbHH+/AZ2i02Pr7FafOy5x2pxedccNosZ5/cxWVw85Wpx +E07q8WPM90sFqt2/WF04Pd4f6OV3eNyXy+Tx85Zd9k9Nq3qZPPYvKTeo2/LKkaPz5vkAtij uGxSUnMyy1KL9O0SuDIm3DrLVPDNvGLZmjXsDYxn1bsYOTkkBEwkfk+dygRhi0lcuLeerYuR i0NIYAmjxP2+mYwQznNGiXVTrjGCVAkLxEoc37KJHcQWEfCXmHxgHitIEbPAfmaJ102XWCE6 5jFJ3Pn6ixmkik3AUKLrbRcbiM0rYCdx6s1/oH0cHCwCqhJ3fgqChEUFYiQWNB9ihigRlPgx +R4LiM0pECxx8vROsGXMAmYSX14eZoWw5SU2r3nLDGGLSzS33mSZwCg4C0n7LCQts5C0zELS soCRZRWjSGppcW56brGRXnFibnFpXrpecn7uJkZg3G079nPLDsaud8GHGAU4GJV4eC0KwqOE WBPLiitzDzFKcDArifAeXRoRJcSbklhZlVqUH19UmpNafIhRmoNFSZy3d8/qSCGB9MSS1OzU 1ILUIpgsEwenVANjQ1VZnnYk407LU7t2f5j1itewMype5EX8ywv1ahKGKfu1eGO73zA3Tffk 4Z56wPngRJ++oz7lH5TvHpsx0e5SXnL/ym3q+42WL78QJerSlpl73PhbYc633+vT/X/OOf3G 6OA1yW+eLxgvLq/+9mzysod1ibvOTzBLPrRepmPN/W8nv5xMl1ydp8RSnJFoqMVcVJwIAHfm +c23AgAA X-CMS-MailID: 20180112132406eucas1p123c3dfdee4cd50319b7dd1f6178a0aa0 X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20180109075905epcas1p1486543d8fec46f47d9d5ac350d841337 X-RootMTR: 20180109075905epcas1p1486543d8fec46f47d9d5ac350d841337 References: <1515484746-10656-1-git-send-email-cw00.choi@samsung.com> <1515484746-10656-2-git-send-email-cw00.choi@samsung.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: Hi Krzysztof and Chanwoo, On 2018-01-09 12:44, Krzysztof Kozlowski wrote: > On Tue, Jan 9, 2018 at 8:58 AM, Chanwoo Choi wrote: >> This patch adds the CLK_IS_CRITICAL and CLK_IGNORE_UNUSED flag >> to some clocks in order to avoid the hang-out in the suspend mode. >> >> Signed-off-by: Chanwoo Choi >> Cc: Tomasz Figa >> Cc: Michael Turquette >> Cc: Stephen Boyd >> Cc: linux-clk@vger.kernel.org >> --- >> drivers/clk/samsung/clk-exynos5433.c | 22 +++++++++++----------- >> 1 file changed, 11 insertions(+), 11 deletions(-) >> >> diff --git a/drivers/clk/samsung/clk-exynos5433.c b/drivers/clk/samsung/clk-exynos5433.c >> index db270908037a..3dc53cd0c730 100644 >> --- a/drivers/clk/samsung/clk-exynos5433.c >> +++ b/drivers/clk/samsung/clk-exynos5433.c >> @@ -583,25 +583,25 @@ >> CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0), >> GATE(CLK_ACLK_CAM1_333, "aclk_cam1_333", "div_aclk_cam1_333", >> ENABLE_ACLK_TOP, 13, >> - CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0), >> + CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0), >> GATE(CLK_ACLK_CAM1_400, "aclk_cam1_400", "div_aclk_cam1_400", >> ENABLE_ACLK_TOP, 12, >> CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0), >> GATE(CLK_ACLK_CAM1_552, "aclk_cam1_552", "div_aclk_cam1_552", >> ENABLE_ACLK_TOP, 11, >> - CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0), >> + CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0), >> GATE(CLK_ACLK_CAM0_333, "aclk_cam0_333", "div_aclk_cam0_333", >> ENABLE_ACLK_TOP, 10, >> - CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0), >> + CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0), >> GATE(CLK_ACLK_CAM0_400, "aclk_cam0_400", "div_aclk_cam0_400", >> ENABLE_ACLK_TOP, 9, >> CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0), >> GATE(CLK_ACLK_CAM0_552, "aclk_cam0_552", "div_aclk_cam0_552", >> ENABLE_ACLK_TOP, 8, >> - CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0), >> + CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0), >> GATE(CLK_ACLK_ISP_DIS_400, "aclk_isp_dis_400", "div_aclk_isp_dis_400", >> ENABLE_ACLK_TOP, 7, >> - CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0), >> + CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0), >> GATE(CLK_ACLK_ISP_400, "aclk_isp_400", "div_aclk_isp_400", >> ENABLE_ACLK_TOP, 6, >> CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0), >> @@ -624,11 +624,11 @@ >> >> /* ENABLE_SCLK_TOP_CAM1 */ >> GATE(CLK_SCLK_ISP_SENSOR2, "sclk_isp_sensor2", "div_sclk_isp_sensor2_b", >> - ENABLE_SCLK_TOP_CAM1, 7, 0, 0), >> + ENABLE_SCLK_TOP_CAM1, 7, CLK_IGNORE_UNUSED, 0), >> GATE(CLK_SCLK_ISP_SENSOR1, "sclk_isp_sensor1", "div_sclk_isp_sensor1_b", >> ENABLE_SCLK_TOP_CAM1, 6, 0, 0), >> GATE(CLK_SCLK_ISP_SENSOR0, "sclk_isp_sensor0", "div_sclk_isp_sensor0_b", >> - ENABLE_SCLK_TOP_CAM1, 5, 0, 0), >> + ENABLE_SCLK_TOP_CAM1, 5, CLK_IGNORE_UNUSED, 0), > Marking this and few others related to ISP as ignore_unused or > is_critical looks like a hacky workaround for wrong topology or > missing clock users. The real cause should be fixed instead marking > all the clocks as critical or ignore_unused. I think that instead of using CLK_IGNORE_UNUSED / CLK_IS_CRITICAL workaround, exynos5433 clk driver should simply use *_suspend_regs infrastructure. See suspend_regs entry in samsung_cmu_info and similar solution in exynos5420.c clk driver (see exynos5420_clk_suspend function). There is no point guessing why those clocks have to be enabled for proper suspend cycle and which client driver should handle it. The documentation misses such information at all. Just handle it in clk driver internally without exposing it to clock clients. We already do this in case of other Exynos SoCs. > > Best regards, > Krzysztof > >> GATE(CLK_SCLK_ISP_MCTADC_CAM1, "sclk_isp_mctadc_cam1", "oscclk", >> ENABLE_SCLK_TOP_CAM1, 4, 0, 0), >> GATE(CLK_SCLK_ISP_UART_CAM1, "sclk_isp_uart_cam1", "div_sclk_isp_uart", >> @@ -636,7 +636,7 @@ >> GATE(CLK_SCLK_ISP_SPI1_CAM1, "sclk_isp_spi1_cam1", "div_sclk_isp_spi1_b", >> ENABLE_SCLK_TOP_CAM1, 1, 0, 0), >> GATE(CLK_SCLK_ISP_SPI0_CAM1, "sclk_isp_spi0_cam1", "div_sclk_isp_spi0_b", >> - ENABLE_SCLK_TOP_CAM1, 0, 0, 0), >> + ENABLE_SCLK_TOP_CAM1, 0, CLK_IGNORE_UNUSED, 0), >> >> /* ENABLE_SCLK_TOP_DISP */ >> GATE(CLK_SCLK_HDMI_SPDIF_DISP, "sclk_hdmi_spdif_disp", >> @@ -654,7 +654,7 @@ >> ENABLE_SCLK_TOP_FSYS, 4, CLK_SET_RATE_PARENT, 0), >> GATE(CLK_SCLK_UFSUNIPRO_FSYS, "sclk_ufsunipro_fsys", >> "div_sclk_ufsunipro", ENABLE_SCLK_TOP_FSYS, >> - 3, CLK_SET_RATE_PARENT, 0), >> + 3, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0), >> GATE(CLK_SCLK_USBHOST30_FSYS, "sclk_usbhost30_fsys", >> "div_sclk_usbhost30", ENABLE_SCLK_TOP_FSYS, >> 1, CLK_SET_RATE_PARENT, 0), >> @@ -2982,7 +2982,7 @@ static void __init exynos5433_cmu_peris_init(struct device_node *np) >> GATE(CLK_PCLK_AUD_SLIMBUS, "pclk_aud_slimbus", "div_aclk_aud", >> ENABLE_PCLK_AUD, 6, 0, 0), >> GATE(CLK_PCLK_AUD_UART, "pclk_aud_uart", "div_aclk_aud", >> - ENABLE_PCLK_AUD, 5, 0, 0), >> + ENABLE_PCLK_AUD, 5, CLK_IS_CRITICAL, 0), >> GATE(CLK_PCLK_AUD_PCM, "pclk_aud_pcm", "div_aclk_aud", >> ENABLE_PCLK_AUD, 4, 0, 0), >> GATE(CLK_PCLK_AUD_I2S, "pclk_aud_i2s", "div_aclk_aud", >> @@ -3008,7 +3008,7 @@ static void __init exynos5433_cmu_peris_init(struct device_node *np) >> GATE(CLK_SCLK_AUD_SLIMBUS, "sclk_aud_slimbus", "div_sclk_aud_slimbus", >> ENABLE_SCLK_AUD1, 4, 0, 0), >> GATE(CLK_SCLK_AUD_UART, "sclk_aud_uart", "div_sclk_aud_uart", >> - ENABLE_SCLK_AUD1, 3, CLK_IGNORE_UNUSED, 0), >> + ENABLE_SCLK_AUD1, 3, CLK_IS_CRITICAL, 0), >> GATE(CLK_SCLK_AUD_PCM, "sclk_aud_pcm", "div_sclk_aud_pcm", >> ENABLE_SCLK_AUD1, 2, 0, 0), >> GATE(CLK_SCLK_I2S_BCLK, "sclk_i2s_bclk", "ioclk_i2s_bclk", >> -- >> 1.9.1 >> > > Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland