From patchwork Sun Feb 2 19:56:54 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 235781 List-Id: U-Boot discussion From: seanga2 at gmail.com (Sean Anderson) Date: Sun, 2 Feb 2020 14:56:54 -0500 Subject: [PATCH v3 00/12] riscv: Add Sipeed Maix support Message-ID: This patch series adds support for Sipeed Maix boards and the Kendryte K210 CPU. Currently, only the Maix Bit V2.0 is supported, however other models are similar. This series depends on (clk: Include missing headers for linux/clk-provider.h). In addition, there are optional dependencies on and (wdt: Add DM support for Designware WDT) (riscv: Try to get cpu frequency from device tree) (serial: Set baudrate on boot) To flash u-boot to a maix bit, run kflash -tp /dev/ -B bit_mic u-boot-dtb.bin Boot output should look like the following: U-Boot 2020.01-00455-gad03fd83e1 (Jan 15 2020 - 17:10:24 -0500) DRAM: 8 MiB MMC: spi at 52000000:slot at 0: 0 In: serial at 38000000 Out: serial at 38000000 Err: serial at 38000000 => Note that spi does not work! I am trying to figure out what the problem is, but for the moment the only way to boot something is to transfer it over serial. Changes for v3: Remove patch to set RV64I as default. Remove patch for a separate sysctl driver. Split off cpu frequency patch into its own series. Reorder support/devicetree patches to come last. Add patch for reset driver. Add simple-pm-bus for busses with their own clocks. Add additional documentation. Reword mcounteren patch to refer to the RISC-V priv spec 1.9.1. Many devicetree changes Switch to "make savedefconfig" to generate the config Changes for v2: Many bugfixes for the device tree. Modify the config to build without errors. Add support for keeping internal PLL frequencies in-range. Fix several rebase-induced artifacts. Sean Anderson (12): clk: Always use the supplied struct clk clk: Check that ops of composite clock components exist before calling clk: Unconditionally recursively en-/dis-able clocks reset: Add generic reset driver dm: Add support for simple-pm-bus riscv: Add headers for asm/global_data.h riscv: Add option to support RISC-V privileged spec 1.9.1 riscv: Allow use of reset drivers riscv: Add K210 pll support riscv: Add K210 clock support riscv: Add device tree for K210 riscv: Add initial Sipeed Maix support arch/riscv/Kconfig | 14 + arch/riscv/cpu/cpu.c | 6 + arch/riscv/dts/Makefile | 1 + arch/riscv/dts/k210-maix-bit.dts | 42 ++ arch/riscv/dts/k210.dtsi | 496 ++++++++++++++ arch/riscv/include/asm/csr.h | 6 + arch/riscv/include/asm/global_data.h | 2 + arch/riscv/lib/reset.c | 2 + board/sipeed/maix/Kconfig | 51 ++ board/sipeed/maix/MAINTAINERS | 10 + board/sipeed/maix/Makefile | 5 + board/sipeed/maix/maix.c | 9 + configs/sipeed_maix_bitm_defconfig | 10 + doc/board/index.rst | 1 + doc/board/kendryte/index.rst | 9 + doc/board/kendryte/k210.rst | 46 ++ .../bus/simple-pm-bus.txt | 44 ++ .../reset/syscon-reset.txt | 36 ++ doc/imx/clk/ccf.txt | 63 +- drivers/clk/Kconfig | 1 + drivers/clk/Makefile | 1 + drivers/clk/clk-composite.c | 65 +- drivers/clk/clk-divider.c | 6 +- drivers/clk/clk-fixed-factor.c | 3 +- drivers/clk/clk-gate.c | 6 +- drivers/clk/clk-mux.c | 12 +- drivers/clk/clk-uclass.c | 58 +- drivers/clk/imx/clk-gate2.c | 4 +- drivers/clk/kendryte/Kconfig | 12 + drivers/clk/kendryte/Makefile | 1 + drivers/clk/kendryte/clk.c | 390 +++++++++++ drivers/clk/kendryte/clk.h | 27 + drivers/clk/kendryte/pll.c | 607 ++++++++++++++++++ drivers/clk/kendryte/pll.h | 38 ++ drivers/core/simple-bus.c | 57 +- drivers/reset/Kconfig | 6 +- drivers/reset/Makefile | 1 + drivers/reset/reset-syscon.c | 79 +++ include/configs/sipeed-maix.h | 19 + include/dt-bindings/clock/k210-sysctl.h | 53 ++ include/dt-bindings/mfd/k210-sysctl.h | 38 ++ include/dt-bindings/reset/k210-sysctl.h | 38 ++ 42 files changed, 2266 insertions(+), 109 deletions(-) create mode 100644 arch/riscv/dts/k210-maix-bit.dts create mode 100644 arch/riscv/dts/k210.dtsi create mode 100644 board/sipeed/maix/Kconfig create mode 100644 board/sipeed/maix/MAINTAINERS create mode 100644 board/sipeed/maix/Makefile create mode 100644 board/sipeed/maix/maix.c create mode 100644 configs/sipeed_maix_bitm_defconfig create mode 100644 doc/board/kendryte/index.rst create mode 100644 doc/board/kendryte/k210.rst create mode 100644 doc/device-tree-bindings/bus/simple-pm-bus.txt create mode 100644 doc/device-tree-bindings/reset/syscon-reset.txt create mode 100644 drivers/clk/kendryte/Kconfig create mode 100644 drivers/clk/kendryte/Makefile create mode 100644 drivers/clk/kendryte/clk.c create mode 100644 drivers/clk/kendryte/clk.h create mode 100644 drivers/clk/kendryte/pll.c create mode 100644 drivers/clk/kendryte/pll.h create mode 100644 drivers/reset/reset-syscon.c create mode 100644 include/configs/sipeed-maix.h create mode 100644 include/dt-bindings/clock/k210-sysctl.h create mode 100644 include/dt-bindings/mfd/k210-sysctl.h create mode 100644 include/dt-bindings/reset/k210-sysctl.h