Received: by 10.192.165.148 with SMTP id m20csp4194075imm; Mon, 30 Apr 2018 13:35:48 -0700 (PDT) X-Google-Smtp-Source: AB8JxZrJRkHS/ksG/XOe+O87U7zKdk2x98/sXBCT/+n+5yEIn4G7foAgd1M2/wLmYm4ozhT9ZaTH X-Received: by 2002:a17:902:274a:: with SMTP id j10-v6mr14069302plg.393.1525120548887; Mon, 30 Apr 2018 13:35:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525120548; cv=none; d=google.com; s=arc-20160816; b=nMqCvQiBdjBDZRJ7cC4PN9jzpoUKL5p8qVX+DWskluptLJneZMW5ufg+WCI91/wEhu n7Au65gKS4EDD8ngS+oSp8OLnFbccuG2GnUuUKqSZhF32+AOdiTtv6r8ORfH/CtIgi5H oZv7hKRzNJTcCznRlBgsl57zrkedRm6VgQdtHrWU5yNpe7DltS1ZYEDhDgbJG5+9Uusx nnMkRIHqisPNrM1QrXmyvKv0cDW7lejzrSPxus+KMNAsYLmrtmJysxuLtqCj/w6hIS57 V2TGzvyV9WCKtJ7bECSLa19dEahwkRu52N+IAQrBFxXGEEWuX7H9rOXjLBOqG1Z4XMVA +Cig== 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=jmHfXEsg7WwFtC7j+TI3j569BJoHhtv5vvz0NDonz+E=; b=hAn9AEuoRtWCkDiLz1aBQ7T7+5GMu1huUhH4dfb35UjKHU4wP3viI2cqaRYuzyYEdJ gVYYjnPKcvy3hYRiNFhvLYLKUEE1At3aXXfPfEbvt2nM2qbxxe0cS0rJ0R/yjtju759e pALMYBV4plQf7iRGoajfD2gZjSrkwFx8jEN1dBGyU33Hw1bCM2T+LYwaB0qXvM/N275X zEwVC23hHPhZxBhGbW5oU2Q6VCQSjLPP6gMaN+lhlu2QtW/LDgZi1PtAabuUrkKC61xH sR4TJcf1L49huFs7ASoOuVy6tUgDrWYdY/9NbtxgZnQkelvRV5K23VGr9BgFEXlwQd+N lfeA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=gVNPc9Oi; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b6-v6si8510050pls.583.2018.04.30.13.35.34; Mon, 30 Apr 2018 13:35:48 -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=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=gVNPc9Oi; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755687AbeD3UfY (ORCPT + 99 others); Mon, 30 Apr 2018 16:35:24 -0400 Received: from mail-oi0-f66.google.com ([209.85.218.66]:37327 "EHLO mail-oi0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755600AbeD3UfU (ORCPT ); Mon, 30 Apr 2018 16:35:20 -0400 Received: by mail-oi0-f66.google.com with SMTP id f63-v6so8573965oic.4 for ; Mon, 30 Apr 2018 13:35:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=jmHfXEsg7WwFtC7j+TI3j569BJoHhtv5vvz0NDonz+E=; b=gVNPc9Oimb6ATCUe4xNmKgwCum0PO2xHTfh4fOjDw/O6YaTL22mPPhqsj6qZXXNzuS xM1S6oI5dmp+ObOydIbAMJFIoZoHRNw2yLT6WljBt1WxKrqnhgF6ZwUBFlrq6OfQIDiE KacIHRBwzCQzV5rL+rL81ZKRzd2oZFVKDhwmEYSxYydZg1uIvyw8S8U8dnDP91xPfAm7 3C0JQag2uZElGfQ02W4rw3zpjw9n2p/j+BX+Ez2xDLBUr+pfkEd37uXGEBIdZtmxMRZV YucRF1wLA8VmlE5kXOH4dBeaGlwBqM/P/s53Q7lNz4MYTv9Tw77o3kiICpPLBVZ7f6Tp Kxig== 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=jmHfXEsg7WwFtC7j+TI3j569BJoHhtv5vvz0NDonz+E=; b=Bz7ObHbiO3PFDiLw+L/6z+FYe2JVXvzHBdrWzCe1WMu7ox793AToLyswraKmRGemqp jNdaqwPVAvGVpTsn+Ds52kgRfpJyMARnUMSw7tvsqOKTvTb5GIJYtgkR2XymjbXCdYGa 5DKTfM+cJZbG6lAWtkRox6EFRGOEgt5bgi8yWscXrZk8f+WX0U9OohHFJ6xvBUGS3OrT eJmejR9ghbZ7cFK1+k2YcLCNeqDwbQ6IENk7qZzSxrdYghquykPKoe728ziQu0NKx6qJ L6rbl1hkc/Y4GIq/LeD6iBgWfKgOiMRy0EFoE7uhUamA7PUuESVWdwckztX5gz/eYjMY NkhQ== X-Gm-Message-State: ALQs6tAz0EyDHI1W/A7llgrlXfSJe+Bhm0yiAbCEqTcZVVymNuPun4VT FdFDc9ycwI1+Mko0Ka4LoX1vHmeNNarvhapb+T6yCQ== X-Received: by 2002:aca:413:: with SMTP id 19-v6mr7908530oie.134.1525120519090; Mon, 30 Apr 2018 13:35:19 -0700 (PDT) MIME-Version: 1.0 Received: by 10.138.0.213 with HTTP; Mon, 30 Apr 2018 13:35:18 -0700 (PDT) In-Reply-To: <20180427001745.4116-1-david@lechnology.com> References: <20180427001745.4116-1-david@lechnology.com> From: Bartosz Golaszewski Date: Mon, 30 Apr 2018 22:35:18 +0200 Message-ID: Subject: =?UTF-8?Q?Re=3A_=5BPATCH_v9_00=2F27=5D_ARM=3A_davinci=3A_convert_to_common?= =?UTF-8?Q?_clock_framework=E2=80=8B?= To: Arnd Bergmann Cc: linux-clk@vger.kernel.org, linux-devicetree , arm-soc , Michael Turquette , Stephen Boyd , Rob Herring , Mark Rutland , Sekhar Nori , Kevin Hilman , Adam Ford , David Lechner , LKML 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 2018-04-27 2:17 GMT+02:00 David Lechner : > 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). > > > Changes: > > 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: > > Only one dependency didn't land in v4.17. It is just a runtime dependency for > the LCDK board to make the display work. > > - "drm/tilcdc: Fix setting clock divider for omap-l138"[1] > > [1]: https://patchwork.freedesktop.org/patch/210696/ > > You can find a working branch with everything included (plus a few extras, like > cpufreq-dt) in the "common-clk-v8" 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: > > else > clk_set_parent(clk, parent->clk); > > in da850.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 | 24 + > 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 | 166 ++++ > 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 | 60 -- > 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 | 41 +- > 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 | 134 +-- > drivers/clk/davinci/pll.h | 35 +- > 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 | 70 +- > include/linux/clk/davinci.h | 29 + > 56 files changed, 924 insertions(+), 3942 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 > Hi Arnd, I know you're on vacation, but I thought I'd Cc you on this thread to show you what kind of workarounds we need without unifying the early probing mechanisms. This is a very good example of the problem we're trying to solve. Best regards, Bartosz Golaszewski