Received: by 2002:a05:6358:c692:b0:131:369:b2a3 with SMTP id fe18csp144579rwb; Thu, 27 Jul 2023 10:30:44 -0700 (PDT) X-Google-Smtp-Source: APBJJlEM6DeWU3TlMzRyKnI19q7WoZ7Uva0UxN8DoHAf6S9fgXJ8M/pJ/r3u6e3GlTflEmWu0IO9 X-Received: by 2002:a17:902:e891:b0:1b6:ab53:c7a5 with SMTP id w17-20020a170902e89100b001b6ab53c7a5mr6041572plg.46.1690479043496; Thu, 27 Jul 2023 10:30:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690479040; cv=none; d=google.com; s=arc-20160816; b=WxPFvgJmqfLGmBNgRmde+KkPMjHzAOS/FAwSjmTotd8RK86SeLBnshdAkWeVR8+e4M Fl+ZN3562IHAcBjU9bVwgRj0nvxDiXY22pwUGF5ob3psfWTT04uSt4VeYrHKib/Vgobb Uomu+/r5wuBjkO0AjRp2CIbnCxZZTTWK9X9a2FdbxmVFzHYdPiUpLBWX81cyd5dyxnFu 2thmls9ztLENd0awI3UbC6zZWDB99rDcy6gsEX1jFZTuJgVHfCH7tzBedzcZDNSmCYho kASVOSw+XUgGmHFkQGHuxzEze5pbLbUl96u5IqIpmtQ4l1+YSzALT+ds6MgbsXbCYDVn CIOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id; bh=scBa4bZJsUv+/heMVe4YmR8G0FZFCUUOFektfwUScr8=; fh=AV5G943U/wcOmLV2z5uVXdQ6d52ZcdtGsw70aKAddYs=; b=k529xur4guyiYfrrUlOBGd6ctvD5i1+rwbRTH6uFFsa7yMbXWFXMVw+8+kk//B/qMc zFpq9F1/ZptKq7C/AoVA6wijJMJcab4TlPLYbuppxvIgjKIACejbfmkwyQwx+qEBk/+j aLbuBUxFNT/nyjcK0hs0JYIII1y3EOdB8Yx2EBSW8tAJtXyycpGPa51g+KdtqxbjYR9M ydKeXVGanHhas5rkpeiphiZsmk2CFTOHa06fiy6slUgj9Lyy1MBIdPt87rwyHiv2fIq+ 4sJlp3+T3azRy463hQgdlTtDW1ZRZAQhvp1/l6HbpqkPbFnLqLKWdDWlWmNyPIZvnd1g SbTg== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c1-20020a170902d48100b001b9be3b94dfsi1668644plg.268.2023.07.27.10.30.27; Thu, 27 Jul 2023 10:30:40 -0700 (PDT) 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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231708AbjG0Qx6 (ORCPT + 99 others); Thu, 27 Jul 2023 12:53:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60990 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231289AbjG0Qx4 (ORCPT ); Thu, 27 Jul 2023 12:53:56 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 55D7B9E; Thu, 27 Jul 2023 09:53:55 -0700 (PDT) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 38C2AD75; Thu, 27 Jul 2023 09:54:38 -0700 (PDT) Received: from [10.32.102.67] (e110479.arm.com [10.32.102.67]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 02A833F5A1; Thu, 27 Jul 2023 09:53:52 -0700 (PDT) Message-ID: <23f220fd-918e-0e3a-764c-14d11fdf8f4f@arm.com> Date: Thu, 27 Jul 2023 17:53:47 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: [RFC][PATCH] rtc: sunxi: use external 32k oscillator if provided Content-Language: en-US To: Mans Rullgard , Alessandro Zummo , Alexandre Belloni , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland Cc: linux-rtc@vger.kernel.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org References: <20230727150156.29691-1-mans@mansr.com> From: Andre Przywara In-Reply-To: <20230727150156.29691-1-mans@mansr.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,NICE_REPLY_A, RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE 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 Hi Mans, On 27/07/2023 16:01, Mans Rullgard wrote: > Set the OSC32K_SRC_SEL bit in the LOSC control register if a clock is > specified in the devicetree. > > Signed-off-by: Mans Rullgard > --- > The newer sun6i rtc driver is a proper clk provider with parent > selection. Doing the same thing in this driver would be difficult > while staying compatible with existing devicetrees. For that reason, > this simpler approach seems reasonable. > --- > drivers/rtc/rtc-sunxi.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/drivers/rtc/rtc-sunxi.c b/drivers/rtc/rtc-sunxi.c > index 5d019e3a835a..4f1053eab778 100644 > --- a/drivers/rtc/rtc-sunxi.c > +++ b/drivers/rtc/rtc-sunxi.c > @@ -5,6 +5,7 @@ > * Copyright (c) 2013, Carlo Caione > */ > > +#include > #include > #include > #include > @@ -21,8 +22,10 @@ > #include > > #define SUNXI_LOSC_CTRL 0x0000 > +#define SUNXI_LOSC_CTRL_KEY (0x16aa << 16) > #define SUNXI_LOSC_CTRL_RTC_HMS_ACC BIT(8) > #define SUNXI_LOSC_CTRL_RTC_YMD_ACC BIT(7) > +#define SUNXI_LOSC_CTRL_OSC32K_SRC_SEL BIT(0) > > #define SUNXI_RTC_YMD 0x0004 > > @@ -422,6 +425,7 @@ MODULE_DEVICE_TABLE(of, sunxi_rtc_dt_ids); > static int sunxi_rtc_probe(struct platform_device *pdev) > { > struct sunxi_rtc_dev *chip; > + struct clk *extclk; > int ret; > > chip = devm_kzalloc(&pdev->dev, sizeof(*chip), GFP_KERNEL); > @@ -455,6 +459,14 @@ static int sunxi_rtc_probe(struct platform_device *pdev) > return -ENODEV; > } > > + /* use external oscillator if present */ > + extclk = devm_clk_get_optional_enabled(&pdev->dev, NULL); > + if (IS_ERR(extclk)) > + return PTR_ERR(extclk); > + if (extclk) > + writel(SUNXI_LOSC_CTRL_KEY | SUNXI_LOSC_CTRL_OSC32K_SRC_SEL, > + chip->base + SUNXI_LOSC_CTRL); This should be a read-modify-write operation, since we don't want to disturb other bits in this register. In general this looks OK to me, but would need to be documented in the bindings docs, to allow an optional clocks property. Cheers, Andre > + > /* clear the alarm count value */ > writel(0, chip->base + SUNXI_ALRM_DHMS); >