[PATCH v9 00/21] riscv: Add Sipeed Maix support

Sean Anderson
2020-05-03T02:46:08Z

...and I forgot to bump the version.

Sorry, will resend with the proper v10 revision.

On 5/2/20 10:35 PM, Sean Anderson wrote:
> 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.
>
> The travis build [1] is incomplete as of this writing, but I've manually
> ran the jobs which failed last time [2], and they passed. As an aside, the
> travis output is seriously lacking. *Any* warning will cause the build to
> fail, and *no* output (such as *what warning caused the failure*) is
> present in the output.
>
> [1] https://travis-ci.org/github/Forty-Bot/u-boot/builds/682474410
> [2] https://travis-ci.org/github/Forty-Bot/u-boot/builds/678437924
>
> Known Bugs/Limitations:
> - Accessing the AI ram hangs, limiting available ram to 6M
> - Trying to boot an image with bootm fails with
> ERROR: Failed to allocate 0x7d60 bytes below 0x80000000.
>
> To flash u-boot to a maix bit, run
> kflash -tp /dev/<your tty here> -B bit_mic u-boot-dtb.bin
>
> Boot output should look like the following:
>
> U-Boot 2020.04-rc2-00087-g2221cc09c1-dirty (Feb 28 2020 - 13:53:09 -0500)
>
> DRAM: 8 MiB
> In: serial at 38000000
> Out: serial at 38000000
> Err: serial at 38000000
> =>
>
> Changes for v10:
> - Fix warnings when casting fdt_addr_t
> - Fix warnings about const functions
>
> Changes for v9:
> - Fix error in Andes PLIC
> - Update MAINTAINERS
> - Mark dts blocks in documentation as "none" highlighting
>
> Changes for v8:
> - Removed dependency on the patch "clk: Add functions to register CCF clock
> structs". Hopefully this will make reviewing easier.
>
> Changes for v7:
> - Split documentation from other board support
> - Split IPI clear from other IPI cleanup
> - Rebased onto a clean upstream. Hopefully this fixes any patching
> problems.
>
> Changes for v6:
> - Remove spi, pinmux, gpio, led, and wdt support --- to be added in separate
> patches
> - Rebase onto master
> - Clear IPIs before enabling them
> - Reorganize code so checkpatch errors less
>
> Changes for v5:
> - Rebase onto master
> - Add pinconf support
> - Add gpio support
> - Store environment in spi flash
> - Group patches by prefix
> - Add additional documentation
> - Add SMP support
> - Add WDT support
>
> Changes for v4:
> - Linted several patches
> - Updated the copyright year for several files
> - Added tests for syscon-reset, simple-pm-bus, and the pll calc_rate function
> - Added/updated documentation
> - Fixed SPI for the nor flash
> - Fixed PLLs not enabling/setting rate properly
> - RISCV_PRIV_1_9_1 now (un)defines all diferring CSRs, and also disables VM
> - More devicetree changes
>
> 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 (21):
> 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
> clk: Fix clk_get_by_* handling of index
> clk: Add K210 pll support
> clk: Add a bypass clock for K210
> clk: Add K210 clock support
> dm: Add support for simple-pm-bus
> dm: Fix error handling for dev_read_addr_ptr
> reset: Add generic reset driver
> lib: Always set errno in hcreate_r
> riscv: Add headers for asm/global_data.h
> riscv: Clear pending interrupts before enabling IPIs
> riscv: Clean up IPI initialization code
> riscv: Add option to support RISC-V privileged spec 1.9
> riscv: Allow use of reset drivers
> riscv: Try to get cpu frequency from a "clocks" node if it exists
> riscv: Enable cpu clock if it is present
> riscv: Add device tree for K210 and Sipeed Maix BitM
> doc: riscv: Add documentation for Sipeed Maix Bit
> riscv: Add Sipeed Maix support
>
> MAINTAINERS | 7 +
> arch/riscv/Kconfig | 14 +
> arch/riscv/cpu/cpu.c | 15 +
> arch/riscv/cpu/start.S | 2 +
> arch/riscv/dts/Makefile | 1 +
> arch/riscv/dts/k210-maix-bit.dts | 47 ++
> arch/riscv/dts/k210.dtsi | 594 ++++++++++++++++
> arch/riscv/include/asm/csr.h | 40 ++
> arch/riscv/include/asm/global_data.h | 2 +
> arch/riscv/include/asm/smp.h | 43 ++
> arch/riscv/lib/andes_plic.c | 34 +-
> arch/riscv/lib/reset.c | 2 +
> arch/riscv/lib/sbi_ipi.c | 5 +
> arch/riscv/lib/sifive_clint.c | 33 +-
> arch/riscv/lib/smp.c | 56 +-
> arch/sandbox/dts/test.dts | 21 +
> arch/sandbox/include/asm/clk.h | 1 +
> board/sipeed/maix/Kconfig | 47 ++
> board/sipeed/maix/MAINTAINERS | 11 +
> board/sipeed/maix/Makefile | 5 +
> board/sipeed/maix/maix.c | 41 ++
> configs/sandbox_defconfig | 3 +
> configs/sipeed_maix_bitm_defconfig | 8 +
> doc/board/index.rst | 1 +
> doc/board/sipeed/index.rst | 9 +
> doc/board/sipeed/maix.rst | 298 ++++++++
> .../bus/simple-pm-bus.txt | 44 ++
> .../mfd/kendryte,k210-sysctl.txt | 33 +
> .../reset/syscon-reset.txt | 36 +
> doc/imx/clk/ccf.txt | 63 +-
> drivers/clk/Kconfig | 1 +
> drivers/clk/Makefile | 1 +
> drivers/clk/clk-composite.c | 64 +-
> 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 | 68 +-
> drivers/clk/imx/clk-gate2.c | 4 +-
> drivers/clk/imx/clk-imx8mp.c | 2 +-
> drivers/clk/kendryte/Kconfig | 12 +
> drivers/clk/kendryte/Makefile | 1 +
> drivers/clk/kendryte/bypass.c | 270 +++++++
> drivers/clk/kendryte/clk.c | 663 ++++++++++++++++++
> drivers/clk/kendryte/pll.c | 601 ++++++++++++++++
> drivers/core/Kconfig | 7 +
> drivers/core/Makefile | 1 +
> drivers/core/read.c | 2 +-
> drivers/core/simple-pm-bus.c | 56 ++
> drivers/cpu/riscv_cpu.c | 39 +-
> drivers/pinctrl/broadcom/pinctrl-bcm283x.c | 2 +-
> drivers/pinctrl/mediatek/pinctrl-mtk-common.c | 2 +-
> drivers/reset/Kconfig | 5 +
> drivers/reset/Makefile | 1 +
> drivers/reset/reset-syscon.c | 80 +++
> include/configs/sipeed-maix.h | 24 +
> include/dm/read.h | 4 +-
> include/dt-bindings/clock/k210-sysctl.h | 59 ++
> include/dt-bindings/mfd/k210-sysctl.h | 38 +
> include/dt-bindings/reset/k210-sysctl.h | 38 +
> include/kendryte/bypass.h | 31 +
> include/kendryte/clk.h | 35 +
> include/kendryte/pll.h | 57 ++
> include/test/export.h | 16 +
> lib/hashtable.c | 8 +-
> test/dm/Makefile | 3 +
> test/dm/k210_pll.c | 96 +++
> test/dm/simple-pm-bus.c | 45 ++
> test/dm/syscon-reset.c | 58 ++
> 69 files changed, 3732 insertions(+), 205 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/sipeed/index.rst
> create mode 100644 doc/board/sipeed/maix.rst
> create mode 100644 doc/device-tree-bindings/bus/simple-pm-bus.txt
> create mode 100644 doc/device-tree-bindings/mfd/kendryte,k210-sysctl.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/bypass.c
> create mode 100644 drivers/clk/kendryte/clk.c
> create mode 100644 drivers/clk/kendryte/pll.c
> create mode 100644 drivers/core/simple-pm-bus.c
> 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
> create mode 100644 include/kendryte/bypass.h
> create mode 100644 include/kendryte/clk.h
> create mode 100644 include/kendryte/pll.h
> create mode 100644 include/test/export.h
> create mode 100644 test/dm/k210_pll.c
> create mode 100644 test/dm/simple-pm-bus.c
> create mode 100644 test/dm/syscon-reset.c
>