Received: by 10.223.176.46 with SMTP id f43csp2182274wra; Sun, 21 Jan 2018 13:21:01 -0800 (PST) X-Google-Smtp-Source: AH8x225amtIlWjYw3Y4Agdtptc+6WaG0LzjJoB00uzf0FuoU0BcCfK3xoeGTVTdMVTSZHZWrApx/ X-Received: by 10.99.124.85 with SMTP id l21mr5324301pgn.401.1516569661525; Sun, 21 Jan 2018 13:21:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516569661; cv=none; d=google.com; s=arc-20160816; b=rhLhHCaShBD1h6v1FUMkbFSsM+FPOi9uDCLche29EQ11X9qTA1EsBYmgKg0Cu7UMJU 0kBzIUesFygc4Di9ek7c0dpvewVMVE13brG9Fr5AJ8u9LaxuNJ9r/HTVOVuII+0Bx72w Va5oymc7976XMScbAiCGFeYLygiVhVgy0QGOI9y/G7uZExW8AMfDSgYJFDx32PH4lloG TT9mbx1mJ3xeLCCgXBGC0Yfuozh9T0gs9pgj1Xaqy9AhhGmFFWUDc7UHwmd8EMSHw2Z2 ZFqfQc1WgmL1to4pF7+nqzxe5jp9xUvITzAHAd75wMsm3naMf/CVDL7U9zI60V8OUrv9 2mTQ== 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=+Qpt1bawd8gQDxxIsmhYVUV/jIaHwyDhB8KMxabEe94=; b=JafjPSmBKqwNpFMyEbxecYCDgdkWzyUHksR2SgBdeQHMOmbbpjB+KyiBCEMUqLVe5R Bb6G3swaXEujU+VMs6w6iybRoG0Le5a9uzOCUcvDxWXORrLa8CEZ2xR1sdOXnapFNZhy X5SkGApzxt2f7wSQCWFL0pqNvj33n1MBv5Ov/1M40UAbF3wQzzTVFimcxU/gTM26niKC M8S4fTE/JcNLQs5rI/gMjenr2Jac1q9GHu3tQjU8bz/uLcU3lfT3Yf29xrX1Wgvp3Bb3 Lbv3V5xmrgAZ4kKR/VrwTf7Vpu+PR7FWXP4LmW7hVZWhAXp8yM9YqZlzu9dll650nn74 4kEQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=pwKG/IBL; 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=NONE 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 r3-v6si2782627plb.558.2018.01.21.13.20.46; Sun, 21 Jan 2018 13:21:01 -0800 (PST) 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=pwKG/IBL; 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=NONE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751147AbeAUVT4 (ORCPT + 99 others); Sun, 21 Jan 2018 16:19:56 -0500 Received: from mail-vk0-f65.google.com ([209.85.213.65]:39133 "EHLO mail-vk0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751066AbeAUVTx (ORCPT ); Sun, 21 Jan 2018 16:19:53 -0500 Received: by mail-vk0-f65.google.com with SMTP id n4so3883343vkd.6; Sun, 21 Jan 2018 13:19:53 -0800 (PST) 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=+Qpt1bawd8gQDxxIsmhYVUV/jIaHwyDhB8KMxabEe94=; b=pwKG/IBLQJY6jS1DoiWdYRurrZhGusw7aGFkcj7irX+2dCLfG5J/wLEE4aL2EiPS9x BsfRU7aVkRxuzmBwmt9pozXfGYy7t2LKJBeutFWhqs2B6dUkQ+/hmk5KJD2SLw6oepOn Vm8VbM9ouPS4MNa24CVaMKUz99L7yLo43xD6XBpX8totjtoZPVGFiF4gTYwBJoZbIX2k vC5j2klPxTKRKLxI0FwlshN/Jzw4XfsQwuYgqruD1U9ZgHfAnsmgAZrCwOg61v/OFrHH N86sDvzwmKdeXWbGiwSJSoSHwqvBgfcD+swtsyigs2fQqamk1fmJ+xXcM5Nfon6CHCNx 3Klw== 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=+Qpt1bawd8gQDxxIsmhYVUV/jIaHwyDhB8KMxabEe94=; b=i6obX1A5mdW3b01cTmq3xP5fk2GaPrA6C4qkrD28RglXyTI3khhcwlxxZ251H300Kn e0T2HU7/M1B4A9Ds/WTR+HDX5+OMYzZVjnG1lKFl8Xvanp5L1CZt/gwaf7RNZOp6Y0xa /2h0c/En+e94DilVaQ/9VDQhedZKdmzk6RyECjAU+dwPO1dCnTt3r/1yr4WqRDuNi6HV bXkQk7JFJvs78ux6Zhr6rPWt29piv6frkuPqf5jtUPCfI9KiAlguIZRYIrOWvijjTcve oA+yZmqmTiLLBZjEb6cJmBzB3pfZ3p8wP21dD4uAn988LMXEsgV5HRub85IsrKCPS32Z XDJw== X-Gm-Message-State: AKwxytefUqoDUAw5PSy7A/JgX+VwMHkV1KvH6dUG7qewo2vtIhO0Youj XE011DFe4OLWAJPL2Ir6pOlaRxU1/8949npkdgw= X-Received: by 10.31.72.130 with SMTP id v124mr3457267vka.35.1516569592202; Sun, 21 Jan 2018 13:19:52 -0800 (PST) MIME-Version: 1.0 Received: by 10.159.46.9 with HTTP; Sun, 21 Jan 2018 13:19:51 -0800 (PST) In-Reply-To: <1516468460-4908-1-git-send-email-david@lechnology.com> References: <1516468460-4908-1-git-send-email-david@lechnology.com> From: Adam Ford Date: Sun, 21 Jan 2018 15:19:51 -0600 Message-ID: Subject: =?UTF-8?Q?Re=3A_=5BPATCH_v6_00=2F41=5D_ARM=3A_davinci=3A_convert_to_common?= =?UTF-8?Q?_clock_framework=E2=80=8B?= To: David Lechner Cc: linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Michael Turquette , Stephen Boyd , Rob Herring , Mark Rutland , Sekhar Nori , Kevin Hilman , Bartosz Golaszewski , linux-kernel@vger.kernel.org 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 Sat, Jan 20, 2018 at 11:13 AM, David Lechner wrote: > This series converts mach-davinci to use the common clock framework. > > The series works like this, the first 19 patches create new clock drivers > using the common clock framework. There are basically 3 groups of clocks - > PLL, PSC and CFGCHIP (syscon). There are six different SoCs that each have > unique init data, which is the reason for so many patches. > > Then, starting with "ARM: da830: add new clock init using common clock", > 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 three patches add device tree clock support to the one SoC that > supports it. > > 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: > > This series applies on top of linux-davinci/master plus the following patches: > - [1] "clk: fix reentrancy of clk_enable() on UP systems" (in clk-next) > - [2] "clk: add helper functions for managing clk_onecell_data" > - [3] "clk: divider: read-only divider can propagate rate change" > - [4],[5],[6],[7],[8],[9] series "ARM: davinci: common clock prep work" > > You can find a working branch with everything included in the "common-clk-v6" > branch of https://github.com/dlech/ev3dev-kernel.git. > > [1]: https://patchwork.kernel.org/patch/10145933/ > [2]: https://patchwork.kernel.org/patch/10145873/ > [3]: https://patchwork.kernel.org/patch/10146829/ > [4]: https://patchwork.kernel.org/patch/10176241/ > [5]: https://patchwork.kernel.org/patch/10176249/ > [6]: https://patchwork.kernel.org/patch/10176245/ > [7]: https://patchwork.kernel.org/patch/10176251/ > [8]: https://patchwork.kernel.org/patch/10176243/ > [9]: https://patchwork.kernel.org/patch/10176247/ > > > 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 (41): > dt-bindings: clock: Add new bindings for TI Davinci PLL clocks > clk: davinci: New driver for davinci PLL clocks > clk: davinci: Add platform information for TI DA830 PLL > clk: davinci: Add platform information for TI DA850 PLL > clk: davinci: Add platform information for TI DM355 PLL > clk: davinci: Add platform information for TI DM365 PLL > clk: davinci: Add platform information for TI DM644x PLL > clk: davinci: Add platform information for TI DM646x PLL > dt-bindings: clock: New bindings for TI Davinci PSC > clk: davinci: New driver for davinci PSC clocks > clk: davinci: Add platform information for TI DA830 PSC > clk: davinci: Add platform information for TI DA850 PSC > clk: davinci: Add platform information for TI DM355 PSC > clk: davinci: Add platform information for TI DM365 PSC > clk: davinci: Add platform information for TI DM644x PSC > clk: davinci: Add platform information for TI DM646x PSC > dt-bindings: clock: Add bindings for DA8XX CFGCHIP clocks > clk: davinci: New driver for TI DA8XX CFGCHIP clocks > clk: davinci: New driver for TI DA8XX USB PHY clocks > ARM: da830: add new clock init using common clock framework > ARM: da850: add new clock init using common clock framework > ARM: dm355: add new clock init using common clock framework > ARM: dm365: add new clock init using common clock framework > ARM: dm644x: add new clock init using common clock framework > ARM: dm646x: add new clock init using common clock framework > ARM: da8xx: add new USB PHY clock init using common clock framework > ARM: 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: da830: Remove legacy clock init > ARM: da850: Remove legacy clock init > ARM: dm355: Remove legacy clock init > ARM: dm365: Remove legacy clock init > ARM: dm644x: Remove legacy clock init > ARM: dm646x: Remove legacy clock init > ARM: da8xx: Remove legacy clock init > ARM: davinci: remove legacy clocks > ARM: davinci: add device tree support to timer > ARM: da8xx-dt: switch to device tree clocks > ARM: dts: da850: Add clocks > > .../bindings/clock/ti/davinci/da8xx-cfgchip.txt | 93 +++ > .../devicetree/bindings/clock/ti/davinci/pll.txt | 96 +++ > .../devicetree/bindings/clock/ti/davinci/psc.txt | 66 ++ > MAINTAINERS | 7 + > arch/arm/Kconfig | 2 +- > arch/arm/boot/dts/da850.dtsi | 162 ++++ > arch/arm/configs/davinci_all_defconfig | 1 - > arch/arm/mach-davinci/Kconfig | 13 +- > arch/arm/mach-davinci/Makefile | 4 +- > 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 | 440 +---------- > arch/arm/mach-davinci/da850.c | 685 ++--------------- > arch/arm/mach-davinci/da8xx-dt.c | 61 +- > arch/arm/mach-davinci/davinci.h | 4 + > arch/arm/mach-davinci/devices-da8xx.c | 43 +- > arch/arm/mach-davinci/devices.c | 1 - > arch/arm/mach-davinci/dm355.c | 386 +--------- > arch/arm/mach-davinci/dm365.c | 472 +----------- > arch/arm/mach-davinci/dm644x.c | 318 +------- > arch/arm/mach-davinci/dm646x.c | 353 +-------- > arch/arm/mach-davinci/include/mach/clock.h | 3 - > arch/arm/mach-davinci/include/mach/common.h | 8 - > arch/arm/mach-davinci/psc.c | 137 ---- > arch/arm/mach-davinci/psc.h | 12 - > arch/arm/mach-davinci/time.c | 19 +- > arch/arm/mach-davinci/usb-da8xx.c | 256 ++----- > drivers/clk/Makefile | 1 + > drivers/clk/davinci/Makefile | 22 + > drivers/clk/davinci/da8xx-cfgchip.c | 305 ++++++++ > drivers/clk/davinci/da8xx-usb-phy-clk.c | 312 ++++++++ > drivers/clk/davinci/pll-da830.c | 51 ++ > drivers/clk/davinci/pll-da850.c | 163 +++++ > drivers/clk/davinci/pll-dm355.c | 66 ++ > drivers/clk/davinci/pll-dm365.c | 110 +++ > drivers/clk/davinci/pll-dm644x.c | 67 ++ > drivers/clk/davinci/pll-dm646x.c | 63 ++ > drivers/clk/davinci/pll.c | 813 +++++++++++++++++++++ > drivers/clk/davinci/pll.h | 118 +++ > drivers/clk/davinci/psc-da830.c | 85 +++ > drivers/clk/davinci/psc-da850.c | 109 +++ > drivers/clk/davinci/psc-dm355.c | 74 ++ > drivers/clk/davinci/psc-dm365.c | 79 ++ > drivers/clk/davinci/psc-dm644x.c | 68 ++ > drivers/clk/davinci/psc-dm646x.c | 62 ++ > drivers/clk/davinci/psc.c | 298 ++++++++ > drivers/clk/davinci/psc.h | 88 +++ > include/linux/clk/davinci.h | 37 + > 49 files changed, 3683 insertions(+), 3774 deletions(-) > create mode 100644 Documentation/devicetree/bindings/clock/ti/davinci/da8xx-cfgchip.txt > create mode 100644 Documentation/devicetree/bindings/clock/ti/davinci/pll.txt > create mode 100644 Documentation/devicetree/bindings/clock/ti/davinci/psc.txt > delete mode 100644 arch/arm/mach-davinci/clock.c > delete mode 100644 arch/arm/mach-davinci/psc.c > create mode 100644 drivers/clk/davinci/Makefile > create mode 100644 drivers/clk/davinci/da8xx-cfgchip.c > create mode 100644 drivers/clk/davinci/da8xx-usb-phy-clk.c > create mode 100644 drivers/clk/davinci/pll-da830.c > create mode 100644 drivers/clk/davinci/pll-da850.c > create mode 100644 drivers/clk/davinci/pll-dm355.c > create mode 100644 drivers/clk/davinci/pll-dm365.c > create mode 100644 drivers/clk/davinci/pll-dm644x.c > create mode 100644 drivers/clk/davinci/pll-dm646x.c > create mode 100644 drivers/clk/davinci/pll.c > create mode 100644 drivers/clk/davinci/pll.h > create mode 100644 drivers/clk/davinci/psc-da830.c > create mode 100644 drivers/clk/davinci/psc-da850.c > create mode 100644 drivers/clk/davinci/psc-dm355.c > create mode 100644 drivers/clk/davinci/psc-dm365.c > create mode 100644 drivers/clk/davinci/psc-dm644x.c > create mode 100644 drivers/clk/davinci/psc-dm646x.c > create mode 100644 drivers/clk/davinci/psc.c > create mode 100644 drivers/clk/davinci/psc.h > create mode 100644 include/linux/clk/davinci.h > I tested this tested on DA850-evm in both Device Tree mode and using the board file. The reboot is broken without the watchdog module, but the watchdog patch is in [PATCH] ARM: davinci_all_defconfig: set CONFIG_DAVINCI_WATCHDOG=y Go ahead and mark me down as tested if you want. Tested-by: Adam Ford > -- > 2.7.4 >