[U-Boot] [PATCH v3 0/9] sunxi: DM-based CLK, RESET and PINCTRL
Philipp Tomsich
philipp.tomsich at theobroma-systems.com
Wed Mar 1 21:19:59 UTC 2017
Hi everyone,
here's the the new version of CLK, RESET and PINCTRL drivers to
configure sunxi from the device-tree. This adds support for the
upstream CCU node (for reset and pinctrl) and tries to address the
various concerns people had.
Note that (to stay in sync with the Linux files), some of the
patches may not fully adhere to the style (e.g. some of the code
reused verbatim from Linux and in the config tables).
This has been tested with Ethernet, I2C, SPI and MMC on the A64-uQ7.
See my separate patchsets for the conversion of these drivers over
to support DM-based CLK, RESET and PINCTRL configuration.
Changes is v3:
* add support for the 'new-style' clock subsystem (CCU) by porting
from Linux and adding the necessary glue implementation
- add a CCU reset-driver (in addition to the legacy driver, which
will still be required for the R_* device nodes), which reuses
the reset-table from ccu-<SOC>.c
- add a clk-sunxi-ccu.c implementation based on Linux and reusing
both the low-level clock implementation (ccu_*.h) and the config
table (ccu-<SOC>.c) from Linux
* reuse the 'allwinner,pinctrl.txt' documentation for the pinctrl
binding from Linux
* adds the includes for the CCU dt-bindings from Linux
* adds support for printing the CCU subsystem via 'clk dump'
Philipp Tomsich (9):
sunxi: add pinctrl (UCLASS_PINCTRL) support for sunxi
dm: core: Allow multiple drivers to bind for a single node
sunxi: CONFIG_DM_ALLOW_MULTIPLE_DRIVERS for gpio/pinctrl binding
Kconfig: sunxi: Select new option for allow multiple drivers to bind
sunxi: add module reset (UCLASS_RESET) support for sunxi
linux/kernel.h: sync DIV_ROUND_UP_ULL from kernel
clk: clk-uclass: add clk_get_by_output_name
sunxi: add clock driver (UCLASS_CLK) support for sunxi
cmd: move CONFIG_CMD_CLK to Kconfig
arch/arm/Kconfig | 1 +
arch/arm/include/asm/arch-sunxi/gpio-internal.h | 19 +
cmd/Kconfig | 10 +
.../pinctrl/allwinner,pinctrl.txt | 142 ++++
drivers/clk/Makefile | 1 +
drivers/clk/clk-uclass.c | 30 +
drivers/clk/sunxi/Makefile | 30 +
drivers/clk/sunxi/ccu-compatibility.h | 232 ++++++
drivers/clk/sunxi/ccu-runtime-divider.c | 115 +++
drivers/clk/sunxi/ccu-runtime-fixedfactor.c | 17 +
drivers/clk/sunxi/ccu-sun50i-a64.c | 810 +++++++++++++++++++++
drivers/clk/sunxi/ccu-sun50i-a64.h | 64 ++
drivers/clk/sunxi/ccu_common.c | 27 +
drivers/clk/sunxi/ccu_common.h | 67 ++
drivers/clk/sunxi/ccu_div.c | 134 ++++
drivers/clk/sunxi/ccu_div.h | 170 +++++
drivers/clk/sunxi/ccu_frac.c | 106 +++
drivers/clk/sunxi/ccu_frac.h | 46 ++
drivers/clk/sunxi/ccu_gate.c | 80 ++
drivers/clk/sunxi/ccu_gate.h | 45 ++
drivers/clk/sunxi/ccu_mp.c | 159 ++++
drivers/clk/sunxi/ccu_mp.h | 70 ++
drivers/clk/sunxi/ccu_mult.h | 39 +
drivers/clk/sunxi/ccu_mux.c | 201 +++++
drivers/clk/sunxi/ccu_mux.h | 105 +++
drivers/clk/sunxi/ccu_nk.c | 154 ++++
drivers/clk/sunxi/ccu_nk.h | 64 ++
drivers/clk/sunxi/ccu_nkm.c | 184 +++++
drivers/clk/sunxi/ccu_nkm.h | 84 +++
drivers/clk/sunxi/ccu_nkmp.c | 171 +++++
drivers/clk/sunxi/ccu_nkmp.h | 64 ++
drivers/clk/sunxi/ccu_nm.c | 148 ++++
drivers/clk/sunxi/ccu_nm.h | 84 +++
drivers/clk/sunxi/clk-sunxi-ccu.c | 550 ++++++++++++++
drivers/clk/sunxi/clk-sunxi-gate.c | 92 +++
drivers/clk/sunxi/clk-sunxi-mod.c | 241 ++++++
drivers/core/Kconfig | 14 +
drivers/core/lists.c | 12 +-
drivers/gpio/sunxi_gpio.c | 15 +-
drivers/pinctrl/Kconfig | 10 +
drivers/pinctrl/Makefile | 2 +
drivers/pinctrl/sunxi/Makefile | 10 +
drivers/pinctrl/sunxi/pinctrl-sun50i-a64-r.c | 92 +++
drivers/pinctrl/sunxi/pinctrl-sun50i-a64.c | 577 +++++++++++++++
drivers/pinctrl/sunxi/pinctrl-sunxi.c | 355 +++++++++
drivers/pinctrl/sunxi/pinctrl-sunxi.h | 311 ++++++++
drivers/reset/Kconfig | 9 +
drivers/reset/Makefile | 1 +
drivers/reset/sunxi/Makefile | 6 +
drivers/reset/sunxi/ccu-sun50i-a64.c | 75 ++
drivers/reset/sunxi/ccu_reset.h | 9 +
drivers/reset/sunxi/reset-sunxi.c | 168 +++++
include/clk.h | 22 +
include/dt-bindings/clock/sun50i-a64-ccu.h | 134 ++++
include/dt-bindings/reset/sun50i-a64-ccu.h | 98 +++
include/linux/kernel.h | 2 +
56 files changed, 6470 insertions(+), 8 deletions(-)
create mode 100644 arch/arm/include/asm/arch-sunxi/gpio-internal.h
create mode 100644 doc/device-tree-bindings/pinctrl/allwinner,pinctrl.txt
create mode 100644 drivers/clk/sunxi/Makefile
create mode 100644 drivers/clk/sunxi/ccu-compatibility.h
create mode 100644 drivers/clk/sunxi/ccu-runtime-divider.c
create mode 100644 drivers/clk/sunxi/ccu-runtime-fixedfactor.c
create mode 100644 drivers/clk/sunxi/ccu-sun50i-a64.c
create mode 100644 drivers/clk/sunxi/ccu-sun50i-a64.h
create mode 100644 drivers/clk/sunxi/ccu_common.c
create mode 100644 drivers/clk/sunxi/ccu_common.h
create mode 100644 drivers/clk/sunxi/ccu_div.c
create mode 100644 drivers/clk/sunxi/ccu_div.h
create mode 100644 drivers/clk/sunxi/ccu_frac.c
create mode 100644 drivers/clk/sunxi/ccu_frac.h
create mode 100644 drivers/clk/sunxi/ccu_gate.c
create mode 100644 drivers/clk/sunxi/ccu_gate.h
create mode 100644 drivers/clk/sunxi/ccu_mp.c
create mode 100644 drivers/clk/sunxi/ccu_mp.h
create mode 100644 drivers/clk/sunxi/ccu_mult.h
create mode 100644 drivers/clk/sunxi/ccu_mux.c
create mode 100644 drivers/clk/sunxi/ccu_mux.h
create mode 100644 drivers/clk/sunxi/ccu_nk.c
create mode 100644 drivers/clk/sunxi/ccu_nk.h
create mode 100644 drivers/clk/sunxi/ccu_nkm.c
create mode 100644 drivers/clk/sunxi/ccu_nkm.h
create mode 100644 drivers/clk/sunxi/ccu_nkmp.c
create mode 100644 drivers/clk/sunxi/ccu_nkmp.h
create mode 100644 drivers/clk/sunxi/ccu_nm.c
create mode 100644 drivers/clk/sunxi/ccu_nm.h
create mode 100644 drivers/clk/sunxi/clk-sunxi-ccu.c
create mode 100644 drivers/clk/sunxi/clk-sunxi-gate.c
create mode 100644 drivers/clk/sunxi/clk-sunxi-mod.c
create mode 100644 drivers/pinctrl/sunxi/Makefile
create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun50i-a64-r.c
create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun50i-a64.c
create mode 100644 drivers/pinctrl/sunxi/pinctrl-sunxi.c
create mode 100644 drivers/pinctrl/sunxi/pinctrl-sunxi.h
create mode 100644 drivers/reset/sunxi/Makefile
create mode 100644 drivers/reset/sunxi/ccu-sun50i-a64.c
create mode 100644 drivers/reset/sunxi/ccu_reset.h
create mode 100644 drivers/reset/sunxi/reset-sunxi.c
create mode 100644 include/dt-bindings/clock/sun50i-a64-ccu.h
create mode 100644 include/dt-bindings/reset/sun50i-a64-ccu.h
--
1.9.1
More information about the U-Boot
mailing list