mbox series

[U-Boot,RFC,00/35] sunxi: Add initial CLK, RESET support

Message ID 20180716112850.3961-1-jagan@amarulasolutions.com
Headers show
Series sunxi: Add initial CLK, RESET support | expand

Message

Jagan Teki July 16, 2018, 11:28 a.m. UTC
This is series is trying to add initial support for CLK and RESET
drivers for Allwinner SoC's with USB as a starting IP.

Linux handle both clock and reset as ccu with common DT bindings,
but besides that U-Boot handle them separately with individual
generic uclass functions. So we need have a separate drivers for
CLK and RESET with common DT binding.

This series is trying to resolve this by binding the reset driver
from CLK driver .bind call. First of all the CLK driver will probe
based on DT compatible and the .bind call of CLK driver will bind 
the respective reset driver based on uclass driver name.

I would prefer USB can be initial IP to go, since it doesn't rely on 
dm pinctrl or any other dm stuff require.

Tested this on A64, H5, H3 but I still need to have closer look
on other SoCs.

All these changes available at u-boot-sunxi/clk

Suggestions,
Jagan.

Andre Przywara (1):
  sunxi: clk: add DM clock driver template for the A64 SoC

Jagan Teki (34):
  clk: Kconfig: Ascending order to sub directiory kconfigs
  net: sun8i_emac: Make proper order for include files
  mtd: sunxi_nand_spl: Make proper order for include files
  dt-bindings: reset: Sync sun4i-a10-ccu.h from Linux
  dt-bindings: clock: Sync sun5i-ccu.h from Linux
  dt-bindings: reset: Sync sun5i-ccu.h from Linux
  dt-bindings: clock: Sync sun6i-a31-ccu.h from Linux
  dt-bindings: reset: Sync sun6i-a31-ccu.h from Linux
  clk: sunxi: Add Kconfig entry
  clk: sunxi: a64: Add disable function
  clk: sunxi: a64: Implement USB clocks
  reset: sunxi: Add DM reset driver template for the A64 SoC
  reset: sunxi: a64: Bind reset from clock driver
  reset: Add default request ops
  reset: sunxi: a64: Implement USB resets
  clk: sunxi: Add initial CLK driver for H3_H5
  reset: sunxi: Add initial RESET driver for H3_H5
  clk: sunxi: Add initial CLK driver for A10/A20
  reset: sunxi: Add initial RESET driver for A10/A20
  clk: sunxi: Add initial CLK driver for A10s/A13
  reset: sunxi: Add initial RESET driver for A10s/A13
  clk: sunxi: Add initial CLK driver for A31/A31s
  reset: sunxi: Add initial RESET driver for A31/A31s
  clk: sunxi: Add initial CLK driver for A23
  reset: sunxi: Add initial RESET driver for A23
  clk: sunxi: a23: Add CLK support for A33
  reset: sunxi: a23: Add RESET support A33
  clk: sunxi: Add initial CLK driver for A83T
  reset: sunxi: Add initial RESET driver for A83T
  sunxi: Enable CLK and RESET
  musb-new: sunxi: Use CLK and RESET support
  phy: sun4i-usb: Use CLK and RESET support
  sunxi: usb: Switch to Generic host controllers
  usb: host: Drop [e-o]hci-sunxi drivers

 arch/arm/include/asm/arch-sunxi/clock.h       |   8 +
 arch/arm/mach-sunxi/Kconfig                   |  18 ++
 configs/A10-OLinuXino-Lime_defconfig          |   1 +
 configs/A10s-OLinuXino-M_defconfig            |   1 +
 configs/A13-OLinuXinoM_defconfig              |   1 +
 configs/A13-OLinuXino_defconfig               |   1 +
 configs/A20-OLinuXino-Lime2-eMMC_defconfig    |   1 +
 configs/A20-OLinuXino-Lime2_defconfig         |   1 +
 configs/A20-OLinuXino-Lime_defconfig          |   1 +
 configs/A20-Olimex-SOM204-EVB_defconfig       |   2 +
 configs/Auxtek-T003_defconfig                 |   1 +
 configs/Auxtek-T004_defconfig                 |   1 +
 configs/Bananapi_defconfig                    |   1 +
 configs/Bananapi_m2m_defconfig                |   1 +
 configs/Bananapro_defconfig                   |   1 +
 configs/CHIP_defconfig                        |   1 +
 configs/CHIP_pro_defconfig                    |   1 +
 configs/CSQ_CS908_defconfig                   |   1 +
 configs/Colombus_defconfig                    |   1 +
 configs/Cubieboard2_defconfig                 |   1 +
 configs/Cubieboard_defconfig                  |   1 +
 configs/Cubietruck_plus_defconfig             |   1 +
 configs/Hummingbird_A31_defconfig             |   1 +
 configs/Itead_Ibox_A20_defconfig              |   1 +
 configs/Linksprite_pcDuino3_Nano_defconfig    |   1 +
 configs/Linksprite_pcDuino3_defconfig         |   1 +
 configs/Linksprite_pcDuino_defconfig          |   1 +
 configs/MK808C_defconfig                      |   1 +
 configs/Marsboard_A10_defconfig               |   1 +
 configs/Mele_A1000G_quad_defconfig            |   1 +
 configs/Mele_A1000_defconfig                  |   1 +
 configs/Mele_I7_defconfig                     |   1 +
 configs/Mele_M3_defconfig                     |   1 +
 configs/Mele_M5_defconfig                     |   1 +
 configs/Mele_M9_defconfig                     |   1 +
 configs/Mini-X_defconfig                      |   1 +
 configs/Orangepi_defconfig                    |   1 +
 configs/Orangepi_mini_defconfig               |   1 +
 configs/Sinlinx_SinA31s_defconfig             |   1 +
 configs/Sinlinx_SinA33_defconfig              |   1 +
 configs/Sinovoip_BPI_M2_Plus_defconfig        |   1 +
 configs/Sinovoip_BPI_M2_defconfig             |   1 +
 configs/Sinovoip_BPI_M3_defconfig             |   1 +
 configs/Wexler_TAB7200_defconfig              |   1 +
 configs/Wobo_i5_defconfig                     |   1 +
 configs/a64-olinuxino_defconfig               |   1 +
 configs/ba10_tv_box_defconfig                 |   1 +
 configs/bananapi_m1_plus_defconfig            |   1 +
 configs/bananapi_m64_defconfig                |   1 +
 configs/ga10h_v1_1_defconfig                  |   1 +
 configs/h8_homlet_v2_defconfig                |   1 +
 configs/i12-tvbox_defconfig                   |   1 +
 configs/icnova-a20-swac_defconfig             |   1 +
 configs/inet1_defconfig                       |   1 +
 configs/inet_q972_defconfig                   |   1 +
 configs/jesurun_q5_defconfig                  |   1 +
 configs/libretech_all_h3_cc_h2_plus_defconfig |   1 +
 configs/libretech_all_h3_cc_h3_defconfig      |   1 +
 configs/libretech_all_h3_cc_h5_defconfig      |   1 +
 configs/mixtile_loftq_defconfig               |   1 +
 configs/mk802_a10s_defconfig                  |   1 +
 configs/mk802_defconfig                       |   1 +
 configs/mk802ii_defconfig                     |   1 +
 configs/nanopi_a64_defconfig                  |   1 +
 configs/nanopi_m1_defconfig                   |   1 +
 configs/nanopi_m1_plus_defconfig              |   1 +
 configs/nanopi_neo2_defconfig                 |   1 +
 configs/nanopi_neo_air_defconfig              |   1 +
 configs/nanopi_neo_defconfig                  |   1 +
 configs/nanopi_neo_plus2_defconfig            |   1 +
 configs/orangepi_2_defconfig                  |   1 +
 configs/orangepi_lite_defconfig               |   1 +
 configs/orangepi_one_defconfig                |   1 +
 configs/orangepi_pc2_defconfig                |   1 +
 configs/orangepi_pc_defconfig                 |   1 +
 configs/orangepi_pc_plus_defconfig            |   1 +
 configs/orangepi_plus2e_defconfig             |   1 +
 configs/orangepi_plus_defconfig               |   1 +
 configs/orangepi_prime_defconfig              |   1 +
 configs/orangepi_r1_defconfig                 |   1 +
 configs/orangepi_win_defconfig                |   1 +
 configs/orangepi_zero_defconfig               |   1 +
 configs/orangepi_zero_plus2_defconfig         |   1 +
 configs/orangepi_zero_plus_defconfig          |   1 +
 configs/parrot_r16_defconfig                  |   1 +
 configs/pine64_plus_defconfig                 |   1 +
 configs/r7-tv-dongle_defconfig                |   1 +
 configs/sopine_baseboard_defconfig            |   1 +
 configs/sun8i_a23_evb_defconfig               |   1 +
 configs/sunxi_Gemei_G9_defconfig              |   1 +
 configs/tbs_a711_defconfig                    |   1 +
 drivers/clk/Kconfig                           |   9 +-
 drivers/clk/Makefile                          |   1 +
 drivers/clk/sunxi/Kconfig                     |  60 +++++
 drivers/clk/sunxi/Makefile                    |  15 ++
 drivers/clk/sunxi/clk_a10.c                   | 105 ++++++++
 drivers/clk/sunxi/clk_a10s.c                  | 105 ++++++++
 drivers/clk/sunxi/clk_a23.c                   | 113 +++++++++
 drivers/clk/sunxi/clk_a31.c                   | 130 ++++++++++
 drivers/clk/sunxi/clk_a64.c                   | 141 +++++++++++
 drivers/clk/sunxi/clk_a83t.c                  | 120 +++++++++
 drivers/clk/sunxi/clk_h3.c                    | 131 ++++++++++
 drivers/clk/sunxi/clk_sunxi.c                 |  39 +++
 drivers/mtd/nand/sunxi_nand_spl.c             |   4 +-
 drivers/net/sun8i_emac.c                      |   8 +-
 drivers/phy/allwinner/phy-sun4i-usb.c         |  63 +++--
 drivers/reset/Kconfig                         |   2 +
 drivers/reset/Makefile                        |   1 +
 drivers/reset/reset-uclass.c                  |  10 +-
 drivers/reset/sunxi/Kconfig                   |  61 +++++
 drivers/reset/sunxi/Makefile                  |  13 +
 drivers/reset/sunxi/reset_a10.c               |  95 +++++++
 drivers/reset/sunxi/reset_a10s.c              |  93 +++++++
 drivers/reset/sunxi/reset_a23.c               | 111 +++++++++
 drivers/reset/sunxi/reset_a31.c               | 123 +++++++++
 drivers/reset/sunxi/reset_a64.c               | 115 +++++++++
 drivers/reset/sunxi/reset_a83t.c              | 117 +++++++++
 drivers/reset/sunxi/reset_h3.c                | 121 +++++++++
 drivers/usb/host/Kconfig                      |   2 +
 drivers/usb/host/Makefile                     |   2 -
 drivers/usb/host/ehci-sunxi.c                 | 204 ---------------
 drivers/usb/host/ohci-sunxi.c                 | 233 ------------------
 drivers/usb/musb-new/sunxi.c                  |  82 +++---
 include/configs/sun4i.h                       |   4 -
 include/configs/sun50i.h                      |   5 -
 include/configs/sun5i.h                       |   4 -
 include/configs/sun6i.h                       |   4 -
 include/configs/sun7i.h                       |   4 -
 include/configs/sun8i.h                       |   4 -
 include/configs/sunxi-common.h                |   1 -
 include/dt-bindings/clock/sun5i-ccu.h         | 106 ++++++++
 include/dt-bindings/clock/sun6i-a31-ccu.h     | 191 ++++++++++++++
 include/dt-bindings/reset/sun4i-a10-ccu.h     |  69 ++++++
 include/dt-bindings/reset/sun5i-ccu.h         |  32 +++
 include/dt-bindings/reset/sun6i-a31-ccu.h     | 106 ++++++++
 scripts/config_whitelist.txt                  |   2 -
 136 files changed, 2549 insertions(+), 528 deletions(-)
 create mode 100644 drivers/clk/sunxi/Kconfig
 create mode 100644 drivers/clk/sunxi/Makefile
 create mode 100644 drivers/clk/sunxi/clk_a10.c
 create mode 100644 drivers/clk/sunxi/clk_a10s.c
 create mode 100644 drivers/clk/sunxi/clk_a23.c
 create mode 100644 drivers/clk/sunxi/clk_a31.c
 create mode 100644 drivers/clk/sunxi/clk_a64.c
 create mode 100644 drivers/clk/sunxi/clk_a83t.c
 create mode 100644 drivers/clk/sunxi/clk_h3.c
 create mode 100644 drivers/clk/sunxi/clk_sunxi.c
 create mode 100644 drivers/reset/sunxi/Kconfig
 create mode 100644 drivers/reset/sunxi/Makefile
 create mode 100644 drivers/reset/sunxi/reset_a10.c
 create mode 100644 drivers/reset/sunxi/reset_a10s.c
 create mode 100644 drivers/reset/sunxi/reset_a23.c
 create mode 100644 drivers/reset/sunxi/reset_a31.c
 create mode 100644 drivers/reset/sunxi/reset_a64.c
 create mode 100644 drivers/reset/sunxi/reset_a83t.c
 create mode 100644 drivers/reset/sunxi/reset_h3.c
 delete mode 100644 drivers/usb/host/ehci-sunxi.c
 delete mode 100644 drivers/usb/host/ohci-sunxi.c
 create mode 100644 include/dt-bindings/clock/sun5i-ccu.h
 create mode 100644 include/dt-bindings/clock/sun6i-a31-ccu.h
 create mode 100644 include/dt-bindings/reset/sun4i-a10-ccu.h
 create mode 100644 include/dt-bindings/reset/sun5i-ccu.h
 create mode 100644 include/dt-bindings/reset/sun6i-a31-ccu.h

Comments

Chen-Yu Tsai July 17, 2018, 2:44 a.m. UTC | #1
On Mon, Jul 16, 2018 at 7:28 PM, Jagan Teki <jagan@amarulasolutions.com> wrote:
> This is series is trying to add initial support for CLK and RESET
> drivers for Allwinner SoC's with USB as a starting IP.
>
> Linux handle both clock and reset as ccu with common DT bindings,
> but besides that U-Boot handle them separately with individual
> generic uclass functions. So we need have a separate drivers for
> CLK and RESET with common DT binding.
>
> This series is trying to resolve this by binding the reset driver
> from CLK driver .bind call. First of all the CLK driver will probe
> based on DT compatible and the .bind call of CLK driver will bind
> the respective reset driver based on uclass driver name.
>
> I would prefer USB can be initial IP to go, since it doesn't rely on
> dm pinctrl or any other dm stuff require.
>
> Tested this on A64, H5, H3 but I still need to have closer look
> on other SoCs.
>
> All these changes available at u-boot-sunxi/clk
>
> Suggestions,
> Jagan.
>
> Andre Przywara (1):
>   sunxi: clk: add DM clock driver template for the A64 SoC
>
> Jagan Teki (34):
>   clk: Kconfig: Ascending order to sub directiory kconfigs
>   net: sun8i_emac: Make proper order for include files
>   mtd: sunxi_nand_spl: Make proper order for include files
>   dt-bindings: reset: Sync sun4i-a10-ccu.h from Linux
>   dt-bindings: clock: Sync sun5i-ccu.h from Linux
>   dt-bindings: reset: Sync sun5i-ccu.h from Linux
>   dt-bindings: clock: Sync sun6i-a31-ccu.h from Linux
>   dt-bindings: reset: Sync sun6i-a31-ccu.h from Linux

This is a preference of mine: Could you sync them all in one
go to a recent release or -rc? And also mention the version
in the commit subject? It would be much easier to maintain if
people didn't have to go dig through the Linux repository
looking for a specific git commit. Instead they could just
look at the subject and judge whether it's recent or not.

>   clk: sunxi: Add Kconfig entry
>   clk: sunxi: a64: Add disable function
>   clk: sunxi: a64: Implement USB clocks

These 3, plus Andre's patch, can be squashed into one. At this
point you actually have a driver that can do something, which is
what we're interested in, not the details of how you manage your
development cycle.

>   reset: sunxi: Add DM reset driver template for the A64 SoC
>   reset: sunxi: a64: Bind reset from clock driver
>   reset: Add default request ops
>   reset: sunxi: a64: Implement USB resets

Same here. The commits should be one adding a default request ops,
then another adding a _useful_ reset driver, complete with binding
the driver to use it.

BTW, would it make sense, or would it be possible, to have both
the clock and reset drivers in the same file? It may be possible
to share some code, such as access helpers, this way. Also,
building one but not the other doesn't make sense. At the
very least, have them share a Kconfig symbol, or make one
selected by the other and invisible to the user.

Thanks
ChenYu

>   clk: sunxi: Add initial CLK driver for H3_H5
>   reset: sunxi: Add initial RESET driver for H3_H5
>   clk: sunxi: Add initial CLK driver for A10/A20
>   reset: sunxi: Add initial RESET driver for A10/A20
>   clk: sunxi: Add initial CLK driver for A10s/A13
>   reset: sunxi: Add initial RESET driver for A10s/A13
>   clk: sunxi: Add initial CLK driver for A31/A31s
>   reset: sunxi: Add initial RESET driver for A31/A31s
>   clk: sunxi: Add initial CLK driver for A23
>   reset: sunxi: Add initial RESET driver for A23
>   clk: sunxi: a23: Add CLK support for A33
>   reset: sunxi: a23: Add RESET support A33
>   clk: sunxi: Add initial CLK driver for A83T
>   reset: sunxi: Add initial RESET driver for A83T
>   sunxi: Enable CLK and RESET
>   musb-new: sunxi: Use CLK and RESET support
>   phy: sun4i-usb: Use CLK and RESET support
>   sunxi: usb: Switch to Generic host controllers
>   usb: host: Drop [e-o]hci-sunxi drivers