Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp2677525imm; Wed, 16 May 2018 17:47:29 -0700 (PDT) X-Google-Smtp-Source: AB8JxZrN/0Qx4zj9F8oxNYAB8Ui5AKqtTplj1Oa3RvP2uQYemzWaWpSfSrD6bsOo3vkSxZvJr4Bv X-Received: by 2002:a62:e211:: with SMTP id a17-v6mr3056591pfi.126.1526518049692; Wed, 16 May 2018 17:47:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1526518049; cv=none; d=google.com; s=arc-20160816; b=hNM3UdQ8Y2kjOj1E0B7QWFxKObgBqij3+o2ixVxVb4wSayWL5ZXkk77m60+q6X9bKM gREyhLWqN36oakX8DAu35VOiZ/4GkEtoHu2/xj6IweuZKBnGD4d4OBrAPlhXNWHJzg1M tWxsyHYggq/Z/6Pv2UxKulbR1P60vTziSvQFT4X2leGF6AHQP4hPpCbpObK3buGFEja2 N3hxD491qlV37WgaU0gYRL7QC59vNWGlzc1JTB9B9EWvPSRi85x2eJJjk5zom6iMWny3 UXPDrhbDUNx6EE/Ga4qTaC0QTuffnvgj4ZVvYeii+dl21ok8XmkOB2gGrwORW6kxsazn 3RQQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=2tdilMuVtuMp2lpTYwW6HAbQE0XnTihXMG7JPUe3X48=; b=igIhbEEhGFlPcB8iARwBKSV4BzXxEszy5knQx1AnrtrXiKGMyyXTa0Ghw9YcSXe1F8 Qre9wqdEwKTAzpdnw+52+SOKiDnqCDXwYmHGTHnBrtvqbUTDb+AbMX47o6bWaBoRO00J YN6IlejgVuD7JPWhcuPGpbcQdUQUP1v/G+lpcsDkydEzbsWp39Syb34aVV1s4eEFdTTo TyUh/sxS2xf8IDZIGMS7U2cdOE4OZRvQzInS4WdiYae33ynp405TAIkfTRFwefvFwUHw ua3DwWhM3GYzZUmYsLn2a8vLvUo5QPWsshzjnr1I1ld/QszTlZBhjPvEBcuKrzz5QJBe fr7Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=YxKAr2vT; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n59-v6si3752270plb.198.2018.05.16.17.47.15; Wed, 16 May 2018 17:47:29 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=YxKAr2vT; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752061AbeEQArC (ORCPT + 99 others); Wed, 16 May 2018 20:47:02 -0400 Received: from mail-ot0-f194.google.com ([74.125.82.194]:43271 "EHLO mail-ot0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751163AbeEQAq4 (ORCPT ); Wed, 16 May 2018 20:46:56 -0400 Received: by mail-ot0-f194.google.com with SMTP id y10-v6so3121760otg.10; Wed, 16 May 2018 17:46:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=2tdilMuVtuMp2lpTYwW6HAbQE0XnTihXMG7JPUe3X48=; b=YxKAr2vTXz5AECihl63GVxYGrQP/tEX+on3uDeOeskkSOoKdG2MKXqPcB7qgRIkr3B 5diBDANK2qOFOEtgGiRoGlJtly5xAhKN23bz8D/LD1wj+UvgznuHDQPfqQE6f8KNy0i4 2l19p1EazPwucuK1IZAMEexeiiddPaJShUdUC3Z8+1V6zLvu01dt/LQPox7C4/mGOFTF kOp1j/+bE8tr4JmgzsGiqIc9e1v0C6kaoyOzKZlptTlPNk11y8ZTPKix0ivCyeFEGpnz JeOfynorpiE0aN3v/1cNk5HXX4PQ43jHIjSmckSklr29K3sL/umgDFSKwQ0GEksnVfPw AP1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=2tdilMuVtuMp2lpTYwW6HAbQE0XnTihXMG7JPUe3X48=; b=OSji+lxZJwKBe9u1kpJnnLKH7lV29qVW85bw2CPiNoJWWHrv77Ika4tr80tkDx+Rh8 aNukHrPOCUQj+fhZoHh0jJWnVq+h4FgBDCEhRPYV3AF+oOXy8yoTD5tN9ydLdaY5iI3r c6tvLYWfEesKcTAqTVbg3WMVlNWJUWAl82q0fjpoOp/fsINNI5i9ryQnr5tWZQ/s4bkB ooEO3apTeSmKHhuqu2awFYlKoOSRlc1tDMFWF7MYYwmDF4J/Bek8O6HDtUO5Fjehaqik r9qChP7VHDnNb8RcxWjuT4LMjncNblvputHyPJS/DaurMfcc2iY5KZH1XXKx8qPjEU3g 32WQ== X-Gm-Message-State: ALKqPwdLaqz+/lZkYFP8tcbq7rsTkhRAduY8vCezPwaqLhcUZWOmMX25 XJG6NNfUti7ueJcFkz6Mrkl8erzUNBsPcR3SwAQ= X-Received: by 2002:a9d:b75:: with SMTP id p50-v6mr2251849otd.277.1526518014359; Wed, 16 May 2018 17:46:54 -0700 (PDT) MIME-Version: 1.0 Received: by 10.201.49.75 with HTTP; Wed, 16 May 2018 17:46:54 -0700 (PDT) In-Reply-To: <20180509172606.29387-1-david@lechnology.com> References: <20180509172606.29387-1-david@lechnology.com> From: Adam Ford Date: Wed, 16 May 2018 19:46:54 -0500 Message-ID: Subject: =?UTF-8?Q?Re=3A_=5BPATCH_v10_00=2F27=5D_ARM=3A_davinci=3A_convert_to_commo?= =?UTF-8?Q?n_clock_framework=E2=80=8B?= To: David Lechner Cc: linux-clk , devicetree , arm-soc , Michael Turquette , Stephen Boyd , Rob Herring , Mark Rutland , Sekhar Nori , Kevin Hilman , Bartosz Golaszewski , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, May 9, 2018 at 12:25 PM, David Lechner wrote: > This series converts mach-davinci to use the common clock framework. > > The series works like this, the first 3 patches fix some issues with the clock > drivers that have already been accepted into the mainline kernel. > > Then, starting with "ARM: davinci: pass clock as parameter to > davinci_timer_init()", we get the mach code ready for the switch by adding the > code needed for the new clock drivers and adding #ifndef CONFIG_COMMON_CLK > around the legacy clocks so that we can switch easily between the old and the > new. > > "ARM: davinci: switch to common clock framework" actually flips the switch > to start using the new clock drivers. Then the next 8 patches remove all > of the old clock code. > > The final four patches add device tree clock support to the one SoC that > supports it. > > This series has been tested on TI OMAP-L138 LCDK (both device tree and legacy > board file). > I am find. I don't know what I did wrong, but it's working fine. If you want to add my 'tested-by' go ahead. Tested-by: Adam Ford #da850-evm, ethernet, spi flash, SD, UART > > Changes: > > v10 changes (also see individual patches for details): > - Reworked device tree bindings for DaVinci timer. > - Dropped helper functions to conditionally call devm_* versions of functions > - Fix some typos > - Fix some rebasing issues introduced in v9 > > v9 changes (also see individual patches for details): > - Rebased on linux-davnci/master (f5e3203bb775) > - Dropped drivers/clk patches that landed in v4.17 > - New drivers/clk patches for early boot special case > - New patch for ti,davinci-timer device tree bindings > - Updated mach/davinci patches to register clocks in early boot when needed > > v8 changes (also see individual patches for details): > - Rebased on linux-davinci/master > - Dropped use of __init and __initconst attributes in clk drivers > - Add clkdev lookups for PLL SYSCLKs > - Fix genpd clock reference counting issue > - Fix PSC clock driver loading order issue > - Fix typo in device tree and add more power-domains properties > > v7 changes (also see individual patches for details): > - Rebased on linux-davinci/master (v4.16-rc) > - Convert clock drivers to platform devices > - New patch "ARM: davinci: pass clock as parameter to davinci_timer_init()" > - Fix issues with lcdk and aemif clock lookups and power domains > - Fixed other minor issues brought up in v6 review > > v6 changes (also see individual patches for details): > - All of the device tree bindings are changed > - All of the clock drivers are changed significantly > - Fixed issues brought up during review of v5 > - "ARM: davinci: move davinci_clk_init() to init_time" is removed from this > series and submitted separately > > v5 changes: > - Basically, this is an entirely new series > - Patches are broken up into bite-sized pieces > - Converted PSC clock driver to use regmap > - Restored "force" flag for certain DA850 clocks > - Added device tree bindings > - Moved more of the clock init to drivers/clk > - Fixed frequency scaling (maybe*) > > * I have frequency scaling using cpufreq-dt, so I know the clocks are doing > what they need to do to make this work, but I haven't figured out how to > test davinci-cpufreq driver yet. (Patches to make cpufreq-dt work will be > sent separately after this series has landed.) > > > Dependencies: > > There are still some outstanding fixes to get everything working correctly. > These are all just runtime dependencies and only needed for certain platforms. > > - "drm/tilcdc: Fix setting clock divider for omap-l138"[1] > - "clk: davinci: pll-dm355: fix SYSCLKn parent names"[2] > - "remoteproc/davinci: common clock framework related fixes"[3] > > [1]: https://patchwork.freedesktop.org/patch/210696/ > [2]: https://lkml.org/lkml/2018/5/9/626 > [3]: https://lkml.org/lkml/2018/5/2/201 > > You can find a working branch with everything included (plus a few extras, like > cpufreq-dt) in the "common-clk-v10" branch of https://github.com/dlech/ev3dev-kernel.git. > > > Testing/debugging for the uninitiated: > > I only have one device to test with, which is based on da850, so I will > have to rely on others to do some testing here. Since we are dealing with > clocks, if something isn't working, you most likely won't see output on > the serial port. To figure out what is going on, you need to enable... > > CONFIG_DEBUG_LL=y > CONFIG_EARLY_PRINTK=y > > and add "earlyprintk clk_ignore_unused" to the kernel command line options. > You may need to select a different UART for this depending on your board. I > think UART1 is the default in the kernel configuration. > > On da850 devices comment out the lines: > > /* pll1_sysclk2 is not affected by CPU scaling, so use it for async3 */ > parent = clk_hw_get_parent_by_index(&mux->hw, 1); > if (parent) > clk_set_parent(mux->hw.clk, parent->clk); > else > dev_warn(dev, "Failed to find async3 parent clock\n"); > > in da8xx-cfgchip.c or, if using device tree, comment out the lines: > > assigned-clocks = <&async3_clk>; > assigned-clock-parents = <&pll1_sysclk 2>; > > in da850.dtsi when doing earlyprintk, otherwise the UART1 and UART2 clock > source will change during boot and cause garbled output after a point. > > > David Lechner (27): > clk: davinci: pll: allow dev == NULL > clk: davinci: da850-pll: change PLL0 to CLK_OF_DECLARE > clk: davinci: psc: allow for dev == NULL > ARM: davinci: pass clock as parameter to davinci_timer_init() > ARM: davinci: da830: add new clock init using common clock framework > ARM: davinci: da850: add new clock init using common clock framework > ARM: davinci: dm355: add new clock init using common clock framework > ARM: davinci: dm365: add new clock init using common clock framework > ARM: davinci: dm644x: add new clock init using common clock framework > ARM: davinci: dm646x: add new clock init using common clock framework > ARM: davinci: da8xx: add new USB PHY clock init using common clock > framework > ARM: davinci: da8xx: add new sata_refclk init using common clock > framework > ARM: davinci: remove CONFIG_DAVINCI_RESET_CLOCKS > ARM: davinci_all_defconfig: remove CONFIG_DAVINCI_RESET_CLOCKS > ARM: davinci: switch to common clock framework > ARM: davinci: da830: Remove legacy clock init > ARM: davinci: da850: Remove legacy clock init > ARM: davinci: dm355: Remove legacy clock init > ARM: davinci: dm365: Remove legacy clock init > ARM: davinci: dm644x: Remove legacy clock init > ARM: davinci: dm646x: Remove legacy clock init > ARM: davinci: da8xx: Remove legacy USB and SATA clock init > ARM: davinci: remove legacy clocks > dt-bindings: timer: new bindings for TI DaVinci timer > ARM: davinci: add device tree support to timer > ARM: davinci: da8xx-dt: switch to device tree clocks > ARM: dts: da850: Add clocks > > .../bindings/timer/ti,davinci-timer.txt | 37 + > arch/arm/Kconfig | 5 +- > arch/arm/boot/dts/da850-enbw-cmc.dts | 4 + > arch/arm/boot/dts/da850-evm.dts | 4 + > arch/arm/boot/dts/da850-lcdk.dts | 9 + > arch/arm/boot/dts/da850-lego-ev3.dts | 4 + > arch/arm/boot/dts/da850.dtsi | 168 ++++ > arch/arm/configs/davinci_all_defconfig | 1 - > arch/arm/mach-davinci/Kconfig | 13 +- > arch/arm/mach-davinci/Makefile | 4 +- > arch/arm/mach-davinci/board-da830-evm.c | 12 +- > arch/arm/mach-davinci/board-da850-evm.c | 2 + > arch/arm/mach-davinci/board-dm355-evm.c | 2 + > arch/arm/mach-davinci/board-dm355-leopard.c | 2 + > arch/arm/mach-davinci/board-dm365-evm.c | 2 + > arch/arm/mach-davinci/board-dm644x-evm.c | 2 + > arch/arm/mach-davinci/board-dm646x-evm.c | 2 + > arch/arm/mach-davinci/board-mityomapl138.c | 2 + > arch/arm/mach-davinci/board-neuros-osd2.c | 2 + > arch/arm/mach-davinci/board-omapl138-hawk.c | 11 +- > arch/arm/mach-davinci/board-sffsdr.c | 2 + > arch/arm/mach-davinci/clock.c | 745 ----------------- > arch/arm/mach-davinci/clock.h | 76 -- > arch/arm/mach-davinci/common.c | 3 - > arch/arm/mach-davinci/da830.c | 462 ++--------- > arch/arm/mach-davinci/da850.c | 778 +++--------------- > arch/arm/mach-davinci/da8xx-dt.c | 66 -- > arch/arm/mach-davinci/davinci.h | 8 + > arch/arm/mach-davinci/devices-da8xx.c | 43 +- > arch/arm/mach-davinci/devices.c | 1 - > arch/arm/mach-davinci/dm355.c | 406 ++------- > arch/arm/mach-davinci/dm365.c | 485 +---------- > arch/arm/mach-davinci/dm644x.c | 344 +------- > arch/arm/mach-davinci/dm646x.c | 372 +-------- > arch/arm/mach-davinci/include/mach/clock.h | 3 - > arch/arm/mach-davinci/include/mach/common.h | 11 +- > arch/arm/mach-davinci/include/mach/da8xx.h | 6 +- > arch/arm/mach-davinci/pm_domain.c | 5 + > arch/arm/mach-davinci/psc.c | 137 --- > arch/arm/mach-davinci/psc.h | 12 - > arch/arm/mach-davinci/time.c | 39 +- > arch/arm/mach-davinci/usb-da8xx.c | 242 +----- > drivers/clk/davinci/pll-da830.c | 4 +- > drivers/clk/davinci/pll-da850.c | 36 +- > drivers/clk/davinci/pll-dm355.c | 8 +- > drivers/clk/davinci/pll-dm365.c | 8 +- > drivers/clk/davinci/pll-dm644x.c | 8 +- > drivers/clk/davinci/pll-dm646x.c | 8 +- > drivers/clk/davinci/pll.c | 110 +-- > drivers/clk/davinci/pll.h | 30 +- > drivers/clk/davinci/psc-dm355.c | 2 +- > drivers/clk/davinci/psc-dm365.c | 2 +- > drivers/clk/davinci/psc-dm644x.c | 2 +- > drivers/clk/davinci/psc-dm646x.c | 2 +- > drivers/clk/davinci/psc.c | 27 +- > include/linux/clk/davinci.h | 29 + > 56 files changed, 860 insertions(+), 3950 deletions(-) > create mode 100644 Documentation/devicetree/bindings/timer/ti,davinci-timer.txt > delete mode 100644 arch/arm/mach-davinci/clock.c > delete mode 100644 arch/arm/mach-davinci/psc.c > create mode 100644 include/linux/clk/davinci.h > > -- > 2.17.0 >