linux/drivers/clk/sunxi-ng
Stephen Boyd f925a054f0 Allwinner sunxi-ng clk driver parent relation rewrite part 1 - take 2
The first part of ongoing work to convert the sunxi-ng clk driver from
 using global clock name strings to describe clk parenting, to having
 direct struct clk_hw pointers, or local names based on clock-names from
 the device tree binding.
 
 This is based on Stephen Boyd's recent work allowing clk drivers to
 specify clk parents using struct clk_hw * or parsing DT phandles in the
 clk node.
 
 This series can be split into a few major parts:
 
 1) The first patch is a small fix for clk debugfs representation.
 
 2) A bunch of CLK_HW_INIT_* helper macros are added. These cover the
    situations I encountered, or assume I will encounter, such as single
    internal (struct clk_hw *) parent, single DT (struct clk_parent_data
    .fw_name), multiple internal parents, and multiple mixed (internal +
    DT) parents. A special variant for just an internal single parent is
    added, CLK_HW_INIT_HWS, which lets the driver share the singular
    list, instead of having the compiler create a compound literal every
    time. It might even make sense to only keep this variant.
 
 3) A bunch of CLK_FIXED_FACTOR_* helper macros are added. The rationale
    is the same as the single parent CLK_HW_INIT_* helpers.
 
 4) Bulk conversion of CLK_FIXED_FACTOR to use local parent references,
    either struct clk_hw * or DT .fw_name types, whichever the hardware
    requires.
 
 5) The beginning of SUNXI_CCU_GATE conversion to local parent
    references. This part is not done. They are included as justification
    and examples for the shared list of clk parents case.
 -----BEGIN PGP SIGNATURE-----
 
 iQJCBAABCgAsFiEE2nN1m/hhnkhOWjtHOJpUIZwPJDAFAl0NkFUOHHdlbnNAY3Np
 ZS5vcmcACgkQOJpUIZwPJDDs1A/8CxGjEgNUYTQZRfJRdOXARlfwBcejVbBt4YUV
 /BX4weCyrViT/9feOcHlalfdvleG7B3bmB7Q9s7M/UjDDL6uikoIw49idPqF5MLS
 ZK0O+rz4Ok5vsmAkn0cyeDy3W7difWA9/5ic+diLzonjl4j/isQIgiiaIUrjZ35w
 2LnFKLNPHhzfohNP8RdgvMUnZEric/4X5gx6cKUKMx5bBH2gyNaGxqYh5rq5o792
 63SpACc/sMpfhGHyY1c8SPqlL1HR6K6C5Ecp+jvc9Es7mdVeea1fF0qetNt5ZeH2
 kmvA3tWu7Dsy5yLcr/KLLdQjBfrg8dgcDC97t/Ks+u//QeKGaSqho6PskM+BwbnO
 kxSwziVcZC2ZQDjtB4VtLzcw1Td4Sph2+Q7Lt9MeDrLS3pwpimVLS6AtZZ9YIHWg
 tLh2FyxvZRhS/8h8pVb5LiJKqEx2q7e689fVuHAzmEFAiD0nHDzyDbVIjGM7Hqgd
 wp5pTi5NaZhAA416NjaZspzGXhuXubgg72zx9yaFtnrgdEHbCbmdCeAU8fubpcdr
 GAdrMG9k7Fn3Kr/bSXPTzjIlNuSQrB0Tzs6YP090DzaYSs05DbWh4KPVW5eOhjld
 vVXAb6O4467Hcn70hWoN17m2kFpWEE1C9aQbb2m7BexyXqtqsfaZqnCwP2HTLAZJ
 xBAOxqU=
 =VdZo
 -----END PGP SIGNATURE-----

Merge tag 'sunxi-ng-parent-rewrite-part-1-take-2' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux into clk-allwinner

Pull Allwinner sunxi-ng clk driver parent relation rewrite part 1 - take 2
from Chen-Yu Tsai:

"The first part of ongoing work to convert the sunxi-ng clk driver from
using global clock name strings to describe clk parenting, to having
direct struct clk_hw pointers, or local names based on clock-names from
the device tree binding.

This is based on Stephen Boyd's recent work allowing clk drivers to
specify clk parents using struct clk_hw * or parsing DT phandles in the
clk node.

This series can be split into a few major parts:

1) The first patch is a small fix for clk debugfs representation.

2) A bunch of CLK_HW_INIT_* helper macros are added. These cover the
   situations I encountered, or assume I will encounter, such as single
   internal (struct clk_hw *) parent, single DT (struct clk_parent_data
   .fw_name), multiple internal parents, and multiple mixed (internal +
   DT) parents. A special variant for just an internal single parent is
   added, CLK_HW_INIT_HWS, which lets the driver share the singular
   list, instead of having the compiler create a compound literal every
   time. It might even make sense to only keep this variant.

3) A bunch of CLK_FIXED_FACTOR_* helper macros are added. The rationale
   is the same as the single parent CLK_HW_INIT_* helpers.

4) Bulk conversion of CLK_FIXED_FACTOR to use local parent references,
   either struct clk_hw * or DT .fw_name types, whichever the hardware
   requires.

5) The beginning of SUNXI_CCU_GATE conversion to local parent
   references. This part is not done. They are included as justification
   and examples for the shared list of clk parents case."

* tag 'sunxi-ng-parent-rewrite-part-1-take-2' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux: (25 commits)
  clk: sunxi-ng: sun8i-r: Use local parent references for SUNXI_CCU_GATE
  clk: sunxi-ng: a80-usb: Use local parent references for SUNXI_CCU_GATE
  clk: sunxi-ng: gate: Add macros for referencing local clock parents
  clk: sunxi-ng: h6-r: Use local parent references for CLK_FIXED_FACTOR
  clk: sunxi-ng: h6: Use local parent references for CLK_FIXED_FACTOR
  clk: sunxi-ng: a64: Use local parent references for CLK_FIXED_FACTOR
  clk: sunxi-ng: f1c100s: Use local parent references for CLK_FIXED_FACTOR
  clk: sunxi-ng: sun8i-r: Use local parent references for CLK_FIXED_FACTOR
  clk: sunxi-ng: v3s: Use local parent references for CLK_FIXED_FACTOR
  clk: sunxi-ng: r40: Use local parent references for CLK_FIXED_FACTOR
  clk: sunxi-ng: h3: Use local parent references for CLK_FIXED_FACTOR
  clk: sunxi-ng: a33: Use local parent references for CLK_FIXED_FACTOR
  clk: sunxi-ng: a23: Use local parent references for CLK_FIXED_FACTOR
  clk: sunxi-ng: a31: Use local parent references for CLK_FIXED_FACTOR
  clk: sunxi-ng: sun5i: Use local parent references for CLK_FIXED_FACTOR
  clk: sunxi-ng: a10: Use local parent references for CLK_FIXED_FACTOR
  clk: sunxi-ng: sun8i-r: Use local parent references for CLK_HW_INIT_*
  clk: sunxi-ng: switch to of_clk_hw_register() for registering clks
  clk: fixed-factor: Add CLK_FIXED_FACTOR_FW_NAME for DT clock-names parent
  clk: fixed-factor: Add CLK_FIXED_FACTOR_HWS which takes list of struct clk_hw *
  ...
2019-06-24 18:28:31 -07:00
..
ccu_common.c clk: sunxi-ng: switch to of_clk_hw_register() for registering clks 2019-06-18 19:39:00 +08:00
ccu_common.h clk: move clock common macros out from vendor directories 2017-12-21 15:00:38 -08:00
ccu_div.c clk: Remove io.h from clk-provider.h 2019-05-15 13:21:37 -07:00
ccu_div.h clk: sunxi-ng: div: Add support for fixed post-divider 2017-08-14 22:31:46 +08:00
ccu_frac.c clk: Remove io.h from clk-provider.h 2019-05-15 13:21:37 -07:00
ccu_frac.h clk: sunxi-ng: Wait for lock when using fractional mode 2017-08-01 10:18:23 +08:00
ccu_gate.c clk: Remove io.h from clk-provider.h 2019-05-15 13:21:37 -07:00
ccu_gate.h clk: sunxi-ng: gate: Add macros for referencing local clock parents 2019-06-22 10:13:16 +08:00
ccu_mmc_timing.c clk: Remove io.h from clk-provider.h 2019-05-15 13:21:37 -07:00
ccu_mp.c clk: Remove io.h from clk-provider.h 2019-05-15 13:21:37 -07:00
ccu_mp.h clk: sunxi-ng: Support fixed post-dividers on MP style clocks 2017-12-07 10:09:44 +01:00
ccu_mult.c clk: Remove io.h from clk-provider.h 2019-05-15 13:21:37 -07:00
ccu_mult.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ccu_mux.c clk: Remove io.h from clk-provider.h 2019-05-15 13:21:37 -07:00
ccu_mux.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ccu_nk.c clk: Remove io.h from clk-provider.h 2019-05-15 13:21:37 -07:00
ccu_nk.h clk: sunxi-ng: Rename the internal structures 2016-10-20 19:24:20 +02:00
ccu_nkm.c clk: Remove io.h from clk-provider.h 2019-05-15 13:21:37 -07:00
ccu_nkm.h clk: sunxi-ng: nkm: add support for fixed post-divider 2017-08-14 22:45:06 +08:00
ccu_nkmp.c clk: Remove io.h from clk-provider.h 2019-05-15 13:21:37 -07:00
ccu_nkmp.h clk: sunxi-ng: nkmp: Add constraint for maximum rate 2018-08-27 09:18:10 +02:00
ccu_nm.c clk: Remove io.h from clk-provider.h 2019-05-15 13:21:37 -07:00
ccu_nm.h clk: sunxi-ng: Add maximum rate constraint to NM PLLs 2018-08-27 09:18:01 +02:00
ccu_phase.c clk: Remove io.h from clk-provider.h 2019-05-15 13:21:37 -07:00
ccu_phase.h clk: sunxi-ng: Add phase clock support 2016-07-08 18:04:45 -07:00
ccu_reset.c clk: sunxi-ng: Implement reset control status readback 2017-09-26 11:13:03 +02:00
ccu_reset.h clk: sunxi-ng: explicitly include linux/spinlock.h 2017-06-07 15:32:12 +02:00
ccu_sdm.c clk: Remove io.h from clk-provider.h 2019-05-15 13:21:37 -07:00
ccu_sdm.h clk: sunxi-ng: Add sigma-delta modulation support 2017-10-13 09:27:06 +02:00
ccu-sun4i-a10.c clk: sunxi-ng: a10: Use local parent references for CLK_FIXED_FACTOR 2019-06-18 19:39:00 +08:00
ccu-sun4i-a10.h clk: sunxi-ng: sun4i: Export video PLLs 2017-10-17 19:32:16 +02:00
ccu-sun5i.c clk: sunxi-ng: sun5i: Use local parent references for CLK_FIXED_FACTOR 2019-06-18 19:39:01 +08:00
ccu-sun5i.h clk: sunxi-ng: sun5i: Export the MBUS clock 2019-04-10 16:33:01 +02:00
ccu-sun6i-a31.c clk: sunxi-ng: a31: Use local parent references for CLK_FIXED_FACTOR 2019-06-18 19:39:01 +08:00
ccu-sun6i-a31.h clk: sunxi-ng: sun6i: Export video PLLs 2017-09-29 10:46:10 +02:00
ccu-sun8i-a23-a33.h clk: sunxi-ng: Add A33 CCU support 2016-09-10 11:41:19 +02:00
ccu-sun8i-a23.c clk: sunxi-ng: a23: Use local parent references for CLK_FIXED_FACTOR 2019-06-18 19:39:01 +08:00
ccu-sun8i-a33.c clk: sunxi-ng: a33: Use local parent references for CLK_FIXED_FACTOR 2019-06-18 19:39:01 +08:00
ccu-sun8i-a83t.c clk: Remove io.h from clk-provider.h 2019-05-15 13:21:37 -07:00
ccu-sun8i-a83t.h clk: sunxi-ng: Add driver for A83T CCU 2017-06-07 15:32:16 +02:00
ccu-sun8i-de2.c clk: sunxi-ng: Add support for H6 DE3 clocks 2018-11-05 10:22:50 +01:00
ccu-sun8i-de2.h clk: sunxi-ng: Add support for H6 DE3 clocks 2018-11-05 10:22:50 +01:00
ccu-sun8i-h3.c clk: sunxi-ng: h3: Use local parent references for CLK_FIXED_FACTOR 2019-06-18 19:39:02 +08:00
ccu-sun8i-h3.h clk: sunxi-ng: h3: h5: export CLK_PLL_VIDEO 2018-03-02 08:42:30 +01:00
ccu-sun8i-r40.c clk: sunxi-ng: r40: Use local parent references for CLK_FIXED_FACTOR 2019-06-18 19:39:03 +08:00
ccu-sun8i-r40.h clk: sunxi-ng: r40: Export video PLLs 2018-06-27 19:06:56 +02:00
ccu-sun8i-r.c clk: sunxi-ng: sun8i-r: Use local parent references for SUNXI_CCU_GATE 2019-06-22 10:13:16 +08:00
ccu-sun8i-r.h clk: sunxi-ng: Fix header guard of ccu-sun8i-r.h 2017-07-27 16:53:47 +02:00
ccu-sun8i-v3s.c clk: sunxi-ng: v3s: Use local parent references for CLK_FIXED_FACTOR 2019-06-18 19:39:03 +08:00
ccu-sun8i-v3s.h clk: sunxi-ng: add support for V3s CCU 2017-01-20 21:39:03 +01:00
ccu-sun9i-a80-de.c clk: sunxi-ng: sun9i-a80: Fix wrong pointer passed to PTR_ERR() 2017-02-06 15:01:29 -08:00
ccu-sun9i-a80-de.h clk: sunxi-ng: Add A80 Display Engine CCU 2017-01-30 08:38:30 +01:00
ccu-sun9i-a80-usb.c clk: sunxi-ng: a80-usb: Use local parent references for SUNXI_CCU_GATE 2019-06-22 10:13:16 +08:00
ccu-sun9i-a80-usb.h clk: sunxi-ng: Add A80 USB CCU 2017-01-30 08:37:51 +01:00
ccu-sun9i-a80.c clk: Remove io.h from clk-provider.h 2019-05-15 13:21:37 -07:00
ccu-sun9i-a80.h clk: sunxi-ng: Add A80 CCU 2017-01-30 08:37:30 +01:00
ccu-sun50i-a64.c clk: sunxi-ng: a64: Use local parent references for CLK_FIXED_FACTOR 2019-06-22 10:13:16 +08:00
ccu-sun50i-a64.h dt-bindings: clock: sun50i-a64-ccu: Add PLL_VIDEO0 macro 2018-09-05 09:19:59 +02:00
ccu-sun50i-h6-r.c Allwinner sunxi-ng clk driver parent relation rewrite part 1 - take 2 2019-06-24 18:28:31 -07:00
ccu-sun50i-h6-r.h clk: sunxi-ng: add support for H6 PRCM CCU 2018-05-04 17:05:46 +02:00
ccu-sun50i-h6.c clk: sunxi-ng: h6: Use local parent references for CLK_FIXED_FACTOR 2019-06-22 10:13:16 +08:00
ccu-sun50i-h6.h clk: sunxi-ng: Use the correct style for SPDX License Identifier 2019-05-01 13:01:26 -07:00
ccu-suniv-f1c100s.c clk: sunxi-ng: f1c100s: Use local parent references for CLK_FIXED_FACTOR 2019-06-22 10:13:16 +08:00
ccu-suniv-f1c100s.h clk: sunxi-ng: Use the correct style for SPDX License Identifier 2019-05-01 13:01:26 -07:00
Kconfig clk: sunxi-ng: add support for suniv F1C100s SoC 2018-12-04 08:41:13 +01:00
Makefile clk: sunxi-ng: add support for suniv F1C100s SoC 2018-12-04 08:41:13 +01:00