From patchwork Mon Dec 3 14:58:11 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chen-Yu Tsai X-Patchwork-Id: 1006968 Return-Path: X-Original-To: incoming-dt@patchwork.ozlabs.org Delivered-To: patchwork-incoming-dt@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=devicetree-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=csie.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 437p7S1fYGz9sDL for ; Tue, 4 Dec 2018 01:59:48 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726732AbeLCO7o (ORCPT ); Mon, 3 Dec 2018 09:59:44 -0500 Received: from mirror2.csie.ntu.edu.tw ([140.112.30.76]:50662 "EHLO wens.csie.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726116AbeLCO6f (ORCPT ); Mon, 3 Dec 2018 09:58:35 -0500 Received: by wens.csie.org (Postfix, from userid 1000) id 354B15FD54; Mon, 3 Dec 2018 22:58:27 +0800 (CST) From: Chen-Yu Tsai To: Maxime Ripard , Alexandre Belloni , Alessandro Zummo , Michael Turquette , Stephen Boyd , Rob Herring , Mark Rutland Cc: Chen-Yu Tsai , linux-arm-kernel@lists.infradead.org, linux-rtc@vger.kernel.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sunxi@googlegroups.com Subject: [PATCH v2 00/14] rtc: sun6i: clock rework and pre-H6 SoC support Date: Mon, 3 Dec 2018 22:58:11 +0800 Message-Id: <20181203145825.20511-1-wens@csie.org> X-Mailer: git-send-email 2.20.0.rc1 MIME-Version: 1.0 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Hi everyone, This is v2 of my rtc-sun6i clean-up series. Changes since v1: - Collected tags - Dropped patch "clk: sunxi-ng: r40: Force LOSC parent to RTC LOSC output"; already merged - Removed H6 compatible CLK_OF_DECLARE_DRIVER entry that wasn't overlooked - Only export IOSC clock for A64/H3/H5 Original cover letter, with patch numbers corrected, follows: This series was started as part of enabling Bluetooth on various Allwinner SBCs. The bluetooth controller requires a precise 32.768 kHz clock fed to it to correctly detect the frequency of its main oscillator. This clock signal is provided by the RTC, either directly from a special pin on the SoC, or some clock output function from the clock controllers. I found that the clock-related properties of the RTC on later SoCs were incorrect or missing. This series reworks the compatible strings and clock parts of the device tree bindings for sun6i-rtc. Currently we assume most Allwinner SoCs use the same sun6i-rtc variant, when in fact they do not. The differences that matter with regards to clocks are a) the A31 does not have an extra external output for the RTC 32K clock, while most of the others do; b) the clock frequency of the internal RC oscillator is different on some SoCs; c) on the H6 the RTC also handles the 24 MHz DCXO, which feeds the system HOSC. The last difference, and by extension the H6, are not covered in this series. Patch 1 cleans up the clock-related section of the RTC device tree binding. This would make it easier to read and easier to add additional clocks. Patch 2 adds compatible strings for all identified variants introduced prior to the H6. Patch 3 deprecates the external clock output for the A31. The A31 does not have this output, so it's introduction and usage was an error. Patch 4 adds a clock output for the RTC's internal oscillator to the device tree binding. This feeds the PRCM in some SoCs. Patch 5 adds a default clock name for the LOSC to the RTC driver. Patch 6 adds support for different hardware variants to the RTC driver. Patch 7 adds support for all known pre-H6 variants. Patch 8 exposes the RTC's internal oscillator through the device tree. Patch 9 through 14 adds an RTC node or fixes up the RTC device node address ranges, clock properties, names of existing clocks, and adds accuracy properties for the external fixed oscillators. The clock names require fixing because the sunxi clock driver implicitly depends on the HOSC and LOSC being named "osc24M" and "osc32k". The "fixes" to the clock hierarchy introduced in this series means the names must also be shuffled around or the in kernel representation would be incorrect. This has been the case since the sunxi-ng drivers were introduced. There are plans to address this, but the code is still in its early stages. Please have a look. Thanks ChenYu Chen-Yu Tsai (14): dt-bindings: rtc: sun6i-rtc: Rewrite clock outputs as a list dt-bindings: rtc: sun6i-rtc: Add compatible strings for pre-H6 variants dt-bindings: rtc: sun6i-rtc: Deprecate external clock output for A31 dt-bindings: rtc: sun6i-rtc: Export internal RC oscillator rtc: sun6i: Add default clock name for LOSC rtc: sun6i: Add support for different variants rtc: sun6i: Add support for all known pre-H6 variants rtc: sun6i: Expose internal oscillator through device tree ARM: dts: sun8i: a23/a33: Fix up RTC device node ARM: dts: sunxi: h3/h5: Add clock accuracy for external oscillators ARM: dts: sunxi: h3/h5: Fix up RTC device node and clock references ARM: dts: sun8i: r40: Add clock accuracy for external oscillators ARM: dts: sun8i: r40: Add RTC device node arm64: dts: allwinner: a64: Fix up RTC device node and clock references .../devicetree/bindings/rtc/sun6i-rtc.txt | 31 ++++- arch/arm/boot/dts/sun8i-a23-a33.dtsi | 6 +- arch/arm/boot/dts/sun8i-h3.dtsi | 4 + arch/arm/boot/dts/sun8i-r40.dtsi | 18 ++- arch/arm/boot/dts/sunxi-h3-h5.dtsi | 28 ++-- arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 22 +--- arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi | 4 + drivers/rtc/rtc-sun6i.c | 121 ++++++++++++++++-- 8 files changed, 182 insertions(+), 52 deletions(-) Acked-by: Maxime Ripard