From patchwork Sun Jan 29 12:04:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Cercueil X-Patchwork-Id: 49961 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp1718218wrn; Sun, 29 Jan 2023 04:08:50 -0800 (PST) X-Google-Smtp-Source: AK7set+koe1r0VTMY4CFuysI8Extl2BREEgpHvSZ3qH2LyHz1gxb29moiVCVzgQd3ufNLfLV79pw X-Received: by 2002:a17:907:3f89:b0:886:e4a9:c118 with SMTP id hr9-20020a1709073f8900b00886e4a9c118mr2605482ejc.77.1674994130263; Sun, 29 Jan 2023 04:08:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674994130; cv=none; d=google.com; s=arc-20160816; b=eNwgOODs4UF4idgQIumI3qLaQqGa7fGpVqafLGfJGYmawjSG5iqY6U0vJ/Vww955py HfajBGuez4Fd31ULBTiTOWR2qSWD6CQWFaWtBQfKXTjhQHCZ3W/MjGyf5+wIyPPjbNg4 M7Z2ZbjGsy716vO8i/usPVVsCjPgG218lJDo/9zP4biIl1HJjxt7HNpqdb0xth8M34yz 2gfE2iJvLIYye+vwxL1mkY+bx6nL2ds5f23cNRj83VsBUyPMAQgbSKrtF0cwtp3Sv6lr 1ocjVh0uhGrjA01RsssNPL2I2CQQaWjFRtxyseT7dDeO7O1gWRMorWSExKTeCxGaHpiz LyVg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=KmzCO3n3U4/L50Mpe2KY2BIPAp1YjeA7+C44XKCNUsI=; b=QyvmsEaenLGTuJ9haVhAXjF9GVCUzLSiviBcJfj5+QGNHllqROwDUSH3TmBGRYrQuF EtyaNUwQ0+TKmT7evxUI4kmj74ozDVQZr650rbFPNOGRA1SpC253FWuxd1ahAvZ63StE Met3imhIjXVAcywt695X78w7gVZt7yjRXXcQ2DJ3M8nOGitOsrgRawXSk/+RYXJXOfmY ysENnecoeuhPj7NspqSn05HXx2n2I7QSff+2cMghvS3bz52ECDecDC632+/YylmvucaH fuBf6Kz/g9QuxHUA1xii7EvSPgJWVRedOi8VZwgdfHTG1bZKCqTClSI/EgVW+5hKpv8Y Qehg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=BUv8aLYI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id wc13-20020a170907124d00b00880a2de1447si5672491ejb.882.2023.01.29.04.08.26; Sun, 29 Jan 2023 04:08:50 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=BUv8aLYI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234861AbjA2MFC (ORCPT + 99 others); Sun, 29 Jan 2023 07:05:02 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57924 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234813AbjA2MFA (ORCPT ); Sun, 29 Jan 2023 07:05:00 -0500 Received: from aposti.net (aposti.net [89.234.176.197]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EC4FF2201D; Sun, 29 Jan 2023 04:04:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=crapouillou.net; s=mail; t=1674993890; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=KmzCO3n3U4/L50Mpe2KY2BIPAp1YjeA7+C44XKCNUsI=; b=BUv8aLYI4kiwCnIZRxlhkKBg2BeXO+xipryTGl6AW5RoFe2JXGR8qP3aRk9VayGti023BR t1g7UESAy7EHgpxI6hwoDUUepgu7qdTcXA26rjiTZAN2QUY9yAcjgi5Syi39mZC2VLTMZs zWUAsTWYKWa1wdhGjz3se3w0lS/RoNk= From: Paul Cercueil To: Alessandro Zummo , Alexandre Belloni , Rob Herring , Krzysztof Kozlowski Cc: linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mips@vger.kernel.org, list@opendingux.net, Paul Cercueil Subject: [PATCH v3 1/4] dt-bindings: rtc: Add #clock-cells property Date: Sun, 29 Jan 2023 12:04:39 +0000 Message-Id: <20230129120442.22858-2-paul@crapouillou.net> In-Reply-To: <20230129120442.22858-1-paul@crapouillou.net> References: <20230129120442.22858-1-paul@crapouillou.net> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756358645039335680?= X-GMAIL-MSGID: =?utf-8?q?1756358645039335680?= The RTC in the JZ4770 is compatible with the JZ4760, but has an extra register that permits to configure the behaviour of the CLK32K pin. The same goes for the RTC in the JZ4780. With this change, the RTC node is now also a clock provider on these SoCs, so a #clock-cells property is added. Signed-off-by: Paul Cercueil Reviewed-by: Rob Herring --- v2: - add constraint on which SoCs can have the #clock-cells property - add JZ4780 example which has a #clock-cells v3: Don't break ABI anymore. --- .../devicetree/bindings/rtc/ingenic,rtc.yaml | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/Documentation/devicetree/bindings/rtc/ingenic,rtc.yaml b/Documentation/devicetree/bindings/rtc/ingenic,rtc.yaml index af78b67b3da4..de9879bdb317 100644 --- a/Documentation/devicetree/bindings/rtc/ingenic,rtc.yaml +++ b/Documentation/devicetree/bindings/rtc/ingenic,rtc.yaml @@ -11,6 +11,17 @@ maintainers: allOf: - $ref: rtc.yaml# + - if: + not: + properties: + compatible: + contains: + enum: + - ingenic,jz4770-rtc + - ingenic,jz4780-rtc + then: + properties: + "#clock-cells": false properties: compatible: @@ -39,6 +50,9 @@ properties: clock-names: const: rtc + "#clock-cells": + const: 0 + system-power-controller: description: | Indicates that the RTC is responsible for powering OFF @@ -83,3 +97,18 @@ examples: clocks = <&cgu JZ4740_CLK_RTC>; clock-names = "rtc"; }; + + - | + #include + rtc: rtc@10003000 { + compatible = "ingenic,jz4780-rtc", "ingenic,jz4760-rtc"; + reg = <0x10003000 0x4c>; + + interrupt-parent = <&intc>; + interrupts = <32>; + + clocks = <&cgu JZ4780_CLK_RTCLK>; + clock-names = "rtc"; + + #clock-cells = <0>; + }; From patchwork Sun Jan 29 12:04:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Cercueil X-Patchwork-Id: 49962 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp1719052wrn; Sun, 29 Jan 2023 04:11:30 -0800 (PST) X-Google-Smtp-Source: AK7set8GKUyxvJ+ufcOH2SZXaiSUAQcqBVcPmqur2T3uyL/s4DS+GKQHF7sXLUAdHJT//Zw+gwww X-Received: by 2002:a17:906:4dcf:b0:87b:cdab:988e with SMTP id f15-20020a1709064dcf00b0087bcdab988emr9902978ejw.21.1674994290022; Sun, 29 Jan 2023 04:11:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674994290; cv=none; d=google.com; s=arc-20160816; b=s/GFOzPgjjOqcZdbnmH0ZBPoRcmX7CG1Vv/8EuxktqAyOL0K99dDpK/LwduZQ5Y9YW 2u3wY6UPHZUo33FGKpr+DKeta6UM1LbXCBJPVj7yJtRyF8u9gxoQkWsrBSSKkBltRUV2 1KhhqAO12DnRmRS9eFo9q6feHz9iEfQlyopFtI+3Cct1k0IMWCFlSYYxOY2vjABTIwai Vur5CmvLdEg6I4Gd+4Zdtdh5IwcfePjzPraLVkbSwOz7ss8FrKYiaOACod3LhhQQh2bB 0TaC9CHG5kNsQXOFjgUgABl3mBi58YK+cmQM9xId9fzl0J4CT5jJs7Fy/bpAQ8lmOZ0a oMLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=LiDIJ3Rmd36AtqhKNh3sjPZ+wGugz3vIRIvjOepxpSg=; b=jh0epiI8FqjFp3yp9AaThNRjV5zft0pl02y5pOvkO5SUKAP5kTX2zmU1rCLK1rTwhW azGQzTicFVDouDiPbzh8u4IHV0zEOXorGiEX3pTol0SXyqT0AZgG/apiIi7sSXDkeHWe Io/N5Ogyi1Z7A757hHVCHqzmTA3iKCbekOmPVfxo4z6C3I+nQPNioxdS8S4sd8Nm1FRW ExmdR/XtssMcfiT7Pjrr+krIudNbtlOgiy2cShgM7yhTABaiv5xTpQIuPC2cHeUwWPDm Xizf0zzCRV2DTwRQtCf21U1VTV1uhr+XWbgTJGyLDQBl5cNqBl+XaeXnd9/9WqDraAn4 Nf3A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=jJ1s281I; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 10-20020a170906028a00b008875432b6aasi1645246ejf.237.2023.01.29.04.11.05; Sun, 29 Jan 2023 04:11:30 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=jJ1s281I; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234887AbjA2MFP (ORCPT + 99 others); Sun, 29 Jan 2023 07:05:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58220 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234878AbjA2MFM (ORCPT ); Sun, 29 Jan 2023 07:05:12 -0500 Received: from aposti.net (aposti.net [89.234.176.197]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 54DA2234FC; Sun, 29 Jan 2023 04:05:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=crapouillou.net; s=mail; t=1674993891; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LiDIJ3Rmd36AtqhKNh3sjPZ+wGugz3vIRIvjOepxpSg=; b=jJ1s281Ict/W29rTi8nGIVpF/Vj/+9pxvN7t1X0FnNXwtM2kM90LY9uueI6Lgv7io7c0lk 6WSjSrbaPGLjll1qfUG0uJsP08gyjg5vu/tePGTgyLgW5f9CjhKGJ9IAAFygK4wCf8jen1 aKgrccczdD7zIsYnkbiKXKn74yIrvpU= From: Paul Cercueil To: Alessandro Zummo , Alexandre Belloni , Rob Herring , Krzysztof Kozlowski Cc: linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mips@vger.kernel.org, list@opendingux.net, Paul Cercueil Subject: [PATCH v3 2/4] rtc: jz4740: Use readl_poll_timeout Date: Sun, 29 Jan 2023 12:04:40 +0000 Message-Id: <20230129120442.22858-3-paul@crapouillou.net> In-Reply-To: <20230129120442.22858-1-paul@crapouillou.net> References: <20230129120442.22858-1-paul@crapouillou.net> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756358812630561267?= X-GMAIL-MSGID: =?utf-8?q?1756358812630561267?= Use readl_poll_timeout() from instead of using custom poll loops. The timeout settings are different, but that shouldn't be much of a problem. Instead of polling 10000 times in a close loop, it polls for one millisecond. Signed-off-by: Paul Cercueil --- drivers/rtc/rtc-jz4740.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/drivers/rtc/rtc-jz4740.c b/drivers/rtc/rtc-jz4740.c index c383719292c7..4ee6e5ee09b1 100644 --- a/drivers/rtc/rtc-jz4740.c +++ b/drivers/rtc/rtc-jz4740.c @@ -7,6 +7,7 @@ #include #include +#include #include #include #include @@ -69,19 +70,15 @@ static inline uint32_t jz4740_rtc_reg_read(struct jz4740_rtc *rtc, size_t reg) static int jz4740_rtc_wait_write_ready(struct jz4740_rtc *rtc) { uint32_t ctrl; - int timeout = 10000; - do { - ctrl = jz4740_rtc_reg_read(rtc, JZ_REG_RTC_CTRL); - } while (!(ctrl & JZ_RTC_CTRL_WRDY) && --timeout); - - return timeout ? 0 : -EIO; + return readl_poll_timeout(rtc->base + JZ_REG_RTC_CTRL, ctrl, + ctrl & JZ_RTC_CTRL_WRDY, 0, 1000); } static inline int jz4780_rtc_enable_write(struct jz4740_rtc *rtc) { uint32_t ctrl; - int ret, timeout = 10000; + int ret; ret = jz4740_rtc_wait_write_ready(rtc); if (ret != 0) @@ -89,11 +86,8 @@ static inline int jz4780_rtc_enable_write(struct jz4740_rtc *rtc) writel(JZ_RTC_WENR_MAGIC, rtc->base + JZ_REG_RTC_WENR); - do { - ctrl = readl(rtc->base + JZ_REG_RTC_WENR); - } while (!(ctrl & JZ_RTC_WENR_WEN) && --timeout); - - return timeout ? 0 : -EIO; + return readl_poll_timeout(rtc->base + JZ_REG_RTC_WENR, ctrl, + ctrl & JZ_RTC_WENR_WEN, 0, 1000); } static inline int jz4740_rtc_reg_write(struct jz4740_rtc *rtc, size_t reg, From patchwork Sun Jan 29 12:04:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Cercueil X-Patchwork-Id: 49963 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp1719238wrn; Sun, 29 Jan 2023 04:12:03 -0800 (PST) X-Google-Smtp-Source: AK7set8TrP0nwsf+6WOCd4zincjI4xI2EyZYiTBiOZ0MPLNRpwAK98SHgqcDmcjYziaQZlIb3Hre X-Received: by 2002:a17:906:6db:b0:87b:d597:1fd5 with SMTP id v27-20020a17090606db00b0087bd5971fd5mr9930619ejb.75.1674994323374; Sun, 29 Jan 2023 04:12:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674994323; cv=none; d=google.com; s=arc-20160816; b=f9SYJ3HVNIEXQp5tn4VGMzZTnB7DZS66Xw1KuCbrp1H8sEoiVcrgLqec2NqnGa9F1Z Kt5kFX39P/T0eOu+lG41zEK1IEF0YZgY/tIHurGmzSgQ/ksx42eHwQHwj8YbWXvmSe/W qh1TMwIbLg9JPgFF0fJIxh+KoYZ78sUpX9FMcLThcRkB7/2JgO1tV574bfSWtVENFaSC 4kf9MmB/9tMJGuCs/1DqU7cx9PNydh/zbcJzcS22hM5FfzCWQQ6IQ5FRyZ02C+sQItXJ JVudrsO2MV08YPJUjzvJpM0uH6t2Pyb0VHb6oXe5s5UWcXs8CM0+ZvYkqGX+C7zfInHT Eksg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=y1IJEsvKeYpQS+dvslB9I/8U3h0z6+5xQ1oLdzzjDbQ=; b=T1MIIztMSJUxDMnhbhRY5/pB2Nxwlt3ZZKvIsGsririfxakcCFRMC9fSu3/gU8S2Nl ln5gFLOFrq/mfYOM1gqGn/c04aM+gv5B+C+HopR0fWIekm1v0Pbp1Mr0nx81nMKakNgH pq0Lz3td3CGuxxOjLfpsH3a3/oI/83AThtp+XlA5+GlHC6Frt6viyMfBoAEPDuLG3J4p YP/LAG5O1CaCwh047iJVfT8B3n+ymkjXUdIPg3rr5E7AWP/scbrKveuxwuDCKrJXadik SXE2asuW7h9PFRpjIcvNFyG3RQjnMByqE0acaxefhXc/KcN3Evd2BL/PJ3FjmGimw8rU qOog== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=W0tsFp8D; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id up26-20020a170907cc9a00b0087091d24e3csi10527966ejc.88.2023.01.29.04.11.40; Sun, 29 Jan 2023 04:12:03 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=W0tsFp8D; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234878AbjA2MFh (ORCPT + 99 others); Sun, 29 Jan 2023 07:05:37 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58848 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232009AbjA2MFe (ORCPT ); Sun, 29 Jan 2023 07:05:34 -0500 Received: from aposti.net (aposti.net [89.234.176.197]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9F71B2387A; Sun, 29 Jan 2023 04:05:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=crapouillou.net; s=mail; t=1674993892; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=y1IJEsvKeYpQS+dvslB9I/8U3h0z6+5xQ1oLdzzjDbQ=; b=W0tsFp8DSSdHO+HZYZOczWMTpPIP7pMkBmkmO4HCPDaKx6UGLn1X2MyK5lj3Sd4F6bS32f tMnQJShDR9Ed6rW7t83VL6LKJn9aYfwiOmjO8OfSnCOlbVqERIo+TwNnqZNMw4JpFEiUSc wHJMmggog9HXeXAvGzo/AxsUYBGvwC8= From: Paul Cercueil To: Alessandro Zummo , Alexandre Belloni , Rob Herring , Krzysztof Kozlowski Cc: linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mips@vger.kernel.org, list@opendingux.net, Paul Cercueil Subject: [PATCH v3 3/4] rtc: jz4740: Use dev_err_probe() Date: Sun, 29 Jan 2023 12:04:41 +0000 Message-Id: <20230129120442.22858-4-paul@crapouillou.net> In-Reply-To: <20230129120442.22858-1-paul@crapouillou.net> References: <20230129120442.22858-1-paul@crapouillou.net> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756358847691782821?= X-GMAIL-MSGID: =?utf-8?q?1756358847691782821?= Use dev_err_probe() where it makes sense to simplify a bit the code. Signed-off-by: Paul Cercueil --- drivers/rtc/rtc-jz4740.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/drivers/rtc/rtc-jz4740.c b/drivers/rtc/rtc-jz4740.c index 4ee6e5ee09b1..9ffa764aa71e 100644 --- a/drivers/rtc/rtc-jz4740.c +++ b/drivers/rtc/rtc-jz4740.c @@ -329,17 +329,13 @@ static int jz4740_rtc_probe(struct platform_device *pdev) device_init_wakeup(dev, 1); ret = dev_pm_set_wake_irq(dev, irq); - if (ret) { - dev_err(dev, "Failed to set wake irq: %d\n", ret); - return ret; - } + if (ret) + return dev_err_probe(dev, ret, "Failed to set wake irq\n"); rtc->rtc = devm_rtc_allocate_device(dev); - if (IS_ERR(rtc->rtc)) { - ret = PTR_ERR(rtc->rtc); - dev_err(dev, "Failed to allocate rtc device: %d\n", ret); - return ret; - } + if (IS_ERR(rtc->rtc)) + return dev_err_probe(dev, PTR_ERR(rtc->rtc), + "Failed to allocate rtc device\n"); rtc->rtc->ops = &jz4740_rtc_ops; rtc->rtc->range_max = U32_MAX; @@ -356,10 +352,8 @@ static int jz4740_rtc_probe(struct platform_device *pdev) ret = devm_request_irq(dev, irq, jz4740_rtc_irq, 0, pdev->name, rtc); - if (ret) { - dev_err(dev, "Failed to request rtc irq: %d\n", ret); - return ret; - } + if (ret) + return dev_err_probe(dev, ret, "Failed to request rtc irq\n"); if (of_device_is_system_power_controller(np)) { dev_for_power_off = dev; From patchwork Sun Jan 29 12:04:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Cercueil X-Patchwork-Id: 49964 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp1719323wrn; Sun, 29 Jan 2023 04:12:26 -0800 (PST) X-Google-Smtp-Source: AMrXdXuHm9JGyS5EDJezVWBTGeqCforQcxbMYE1w/uo03pXIg2PZb6sh3WyAKUN2wz5Zeh8KkVQh X-Received: by 2002:a17:902:968f:b0:194:79b1:ea27 with SMTP id n15-20020a170902968f00b0019479b1ea27mr42687453plp.50.1674994345796; Sun, 29 Jan 2023 04:12:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674994345; cv=none; d=google.com; s=arc-20160816; b=YdAQv5fGoP6NJfkK/YwLiKUViFXlMxrUrtlRxSkDaErLgtJV6QrVVjBSExr8KLVtXH 1EDKURIrlYygCf34vL3bc62ljDHsmhn6xKD8AOeNiN9Fvnj4FODsZZ6rNhQNTJS4RlXJ sJZ4zmHBHFMsAd7DojhpBUkSc8J1vwT9NjCxxhzvZGqsWUrfFFwsyZz7XYbPfsIxV5bG 0vZMTxoMdujvAE73vbX1xw/ZoPVG26xCIKk32KwpbuwUe5PmvWpn0sotU887wYOUWKKj PYrmrIZPLHcSYi61kP0yDXFkZL+Wptn/4uKPqpkSBRhVxxwpFAVeE9SgczptrSew7vrA iapw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=yR258zPvf0vX2EOy31knRww44w8mPVrFUXCg6iYmgXQ=; b=ufREVpksFwY/6fkbbV1X40t4ICKjUueJ3BEeeu58mAcUDiKVqbGt8J2DSs/XT3ofoh DFmiuttAOc/0XZxpERcfQLbAsFmXSN4mhmk7t1OxBlydMurw8xBKY52h7Nah7mlKetK8 T7Er4kLqtY/MdQHMjJQK5iAk1GNUwkEZVW1JTLokO01c9Y8kINX3noimUR8eGPDZh7T3 Gu/KOWO4MfgXH9eirmQUDKRMC5OOrhbvrQ7OOlt4efPqZAlbW0v3ONoqqfATRVcxXb4y 6w8zVHeu7T/eNet1t0brDw9jW161c0QavmEULeRs9sw/AKWwm2M7aAa8316sqgRAff8F ntZg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=bJ2JWZrw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s19-20020a170902b19300b001929d758436si9682389plr.609.2023.01.29.04.12.13; Sun, 29 Jan 2023 04:12:25 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=bJ2JWZrw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234928AbjA2MF6 (ORCPT + 99 others); Sun, 29 Jan 2023 07:05:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59372 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234913AbjA2MF4 (ORCPT ); Sun, 29 Jan 2023 07:05:56 -0500 Received: from aposti.net (aposti.net [89.234.176.197]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D7DA623647; Sun, 29 Jan 2023 04:05:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=crapouillou.net; s=mail; t=1674993893; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=yR258zPvf0vX2EOy31knRww44w8mPVrFUXCg6iYmgXQ=; b=bJ2JWZrwbRM6k6sF2xEwFcNaxI+xfs0me9P4SYjPztYSJB13ERuqOAOeQvQAZOkjFid//x gLBzJcp73MpZRJV9/UAlQ1ga7gLsidJ6DOWgbHGfnaZ3VjD0cE7Gh9J7hQoRWMJA5c7+Tl jr4Z5tovxaVH3brO3Hrxx/v2uO2ORAc= From: Paul Cercueil To: Alessandro Zummo , Alexandre Belloni , Rob Herring , Krzysztof Kozlowski Cc: linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mips@vger.kernel.org, list@opendingux.net, Paul Cercueil Subject: [PATCH v3 4/4] rtc: jz4740: Register clock provider for the CLK32K pin Date: Sun, 29 Jan 2023 12:04:42 +0000 Message-Id: <20230129120442.22858-5-paul@crapouillou.net> In-Reply-To: <20230129120442.22858-1-paul@crapouillou.net> References: <20230129120442.22858-1-paul@crapouillou.net> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756358871313108397?= X-GMAIL-MSGID: =?utf-8?q?1756358871313108397?= On JZ4770 and JZ4780, the CLK32K pin is configurable. By default, it is configured as a GPIO in input mode, and its value can be read through GPIO PD14. With this change, clients can now request the 32 kHz clock on the CLK32K pin, through Device Tree. This clock is simply a pass-through of the input oscillator's clock with enable/disable operations. This will permit the WiFi/Bluetooth chip to work on the MIPS CI20 board, which does source one of its clocks from the CLK32K pin. Signed-off-by: Paul Cercueil --- v3: - Use dev_err_probe() - Use __clk_hw_get() to get a pointer to the parent clock, instead of doing it by name. - Add Kconfig dependency on CONFIG_COMMON_CLK - Register CLK32K clock if the #clock-cells device property is present, instead of doing it based on the compatible string --- drivers/rtc/Kconfig | 2 +- drivers/rtc/rtc-jz4740.c | 56 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig index 677d2601d305..d2b6d20a6745 100644 --- a/drivers/rtc/Kconfig +++ b/drivers/rtc/Kconfig @@ -1690,7 +1690,7 @@ config RTC_DRV_MPC5121 config RTC_DRV_JZ4740 tristate "Ingenic JZ4740 SoC" depends on MIPS || COMPILE_TEST - depends on OF + depends on OF && COMMON_CLK help If you say yes here you get support for the Ingenic JZ47xx SoCs RTC controllers. diff --git a/drivers/rtc/rtc-jz4740.c b/drivers/rtc/rtc-jz4740.c index 9ffa764aa71e..59d279e3e6f5 100644 --- a/drivers/rtc/rtc-jz4740.c +++ b/drivers/rtc/rtc-jz4740.c @@ -6,6 +6,7 @@ */ #include +#include #include #include #include @@ -13,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -26,6 +28,7 @@ #define JZ_REG_RTC_WAKEUP_FILTER 0x24 #define JZ_REG_RTC_RESET_COUNTER 0x28 #define JZ_REG_RTC_SCRATCHPAD 0x34 +#define JZ_REG_RTC_CKPCR 0x40 /* The following are present on the jz4780 */ #define JZ_REG_RTC_WENR 0x3C @@ -45,6 +48,9 @@ #define JZ_RTC_WAKEUP_FILTER_MASK 0x0000FFE0 #define JZ_RTC_RESET_COUNTER_MASK 0x00000FE0 +#define JZ_RTC_CKPCR_CK32PULL_DIS BIT(4) +#define JZ_RTC_CKPCR_CK32CTL_EN (BIT(2) | BIT(1)) + enum jz4740_rtc_type { ID_JZ4740, ID_JZ4760, @@ -57,6 +63,8 @@ struct jz4740_rtc { struct rtc_device *rtc; + struct clk_hw clk32k; + spinlock_t lock; }; @@ -254,6 +262,7 @@ static void jz4740_rtc_power_off(void) static const struct of_device_id jz4740_rtc_of_match[] = { { .compatible = "ingenic,jz4740-rtc", .data = (void *)ID_JZ4740 }, { .compatible = "ingenic,jz4760-rtc", .data = (void *)ID_JZ4760 }, + { .compatible = "ingenic,jz4770-rtc", .data = (void *)ID_JZ4780 }, { .compatible = "ingenic,jz4780-rtc", .data = (void *)ID_JZ4780 }, {}, }; @@ -295,6 +304,38 @@ static void jz4740_rtc_set_wakeup_params(struct jz4740_rtc *rtc, jz4740_rtc_reg_write(rtc, JZ_REG_RTC_RESET_COUNTER, reset_ticks); } +static int jz4740_rtc_clk32k_enable(struct clk_hw *hw) +{ + struct jz4740_rtc *rtc = container_of(hw, struct jz4740_rtc, clk32k); + + return jz4740_rtc_reg_write(rtc, JZ_REG_RTC_CKPCR, + JZ_RTC_CKPCR_CK32PULL_DIS | + JZ_RTC_CKPCR_CK32CTL_EN); +} + +static void jz4740_rtc_clk32k_disable(struct clk_hw *hw) +{ + struct jz4740_rtc *rtc = container_of(hw, struct jz4740_rtc, clk32k); + + jz4740_rtc_reg_write(rtc, JZ_REG_RTC_CKPCR, 0); +} + +static int jz4740_rtc_clk32k_is_enabled(struct clk_hw *hw) +{ + struct jz4740_rtc *rtc = container_of(hw, struct jz4740_rtc, clk32k); + u32 ckpcr; + + ckpcr = jz4740_rtc_reg_read(rtc, JZ_REG_RTC_CKPCR); + + return !!(ckpcr & JZ_RTC_CKPCR_CK32CTL_EN); +} + +static const struct clk_ops jz4740_rtc_clk32k_ops = { + .enable = jz4740_rtc_clk32k_enable, + .disable = jz4740_rtc_clk32k_disable, + .is_enabled = jz4740_rtc_clk32k_is_enabled, +}; + static int jz4740_rtc_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; @@ -364,6 +405,21 @@ static int jz4740_rtc_probe(struct platform_device *pdev) dev_warn(dev, "Poweroff handler already present!\n"); } + if (device_property_present(dev, "#clock-cells")) { + rtc->clk32k.init = CLK_HW_INIT_HW("clk32k", __clk_get_hw(clk), + &jz4740_rtc_clk32k_ops, 0); + + ret = devm_clk_hw_register(dev, &rtc->clk32k); + if (ret) + return dev_err_probe(dev, ret, + "Unable to register clk32k clock\n"); + + ret = of_clk_add_hw_provider(np, of_clk_hw_simple_get, &rtc->clk32k); + if (ret) + return dev_err_probe(dev, ret, + "Unable to register clk32k clock provider\n"); + } + return 0; }