[PATCH v19 00/17] RISC-V Kendryte K210 support improvements

Damien Le Moal Damien.LeMoal at wdc.com
Mon Feb 15 00:16:24 EST 2021


On 2021/02/10 14:02, Damien Le Moal wrote:
> This series of patches improves support for boards based on the Canaan
> Kendryte K210 RISC-V dual core SoC. Minimal support for this SoC is
> already included in the kernel. These patches complete it, enabling
> support for most peripherals present on the SoC as well as introducing
> device trees for the various K210 boards available on the market today
> from SiPeed and Kendryte.
> 
> The patches here are the remaining patches not yet applied.
> 
> Patch 1 adds the SoC clock driver.
> 
> Patches 2 to 9 add and update device tree bindings documentation to
> document the K210 device tree files. In particular, patch 2 and 3
> define compatible strings used for the SoC CPU and for the K210 based
> boards supported.
> 
> Patches 10 to 15 update the existing K210 base device tree and add new
> device tree files for several K210 based boards: MAIX Bit, MAIXDUINO,
> MAIX Dock and MAIX Go boards from SiPeed and the KD233 development
> board from Canaan.
> 
> Finally the last two patches updates the k210 nommu defconfig to include
> the newly implemented drivers and provide a new default configuration
> file enabling SD card support.
> 
> A lot of the work on the device tree and on the K210 drivers come from
> the work by Sean Anderson for the U-Boot project support of the K210
> SoC. Sean also helped with debugging many aspects of the K210 support.
> 
> A tree with all patches applied is available here:
> https://github.com/damien-lemoal/linux, k210-sysctl-v32 branch.
> A demonstration of this series used on a SiPeed MAIX Dock
> board together with an I2C servo controller can be seen here:
> https://damien-lemoal.github.io/linux-robot-arm/#example
> 
> This tree was used to build userspace busybox environment image that is
> then copied onto an SD card formatted with ext2:
> https://github.com/damien-lemoal/buildroot
> Of note is that running this userspace environment requires a revert of
> commit 2217b982624680d19a80ebb4600d05c8586c4f96 introduced during the
> 5.9 development cycle. Without this revert, execution of the init
> process fails. A problem with the riscv port of elf2flt is suspected but
> not confirmed. I am now starting to investigate this problem.
> 
> Reviews and comments are as always much welcome.
> 
> Changes from v18:
> * Added review and ack tags
> * Addressed Stephen's comments on the clock driver:
>   - Moved MAINTAINER file update to new patch 0002
>   - Code style nits
>   - Use of __init declarations for k210_register_xxx() functions
>   - Use of of_clk_hw_register() instead of clk_hw_register()
>   - Removed the need for in0 clock name

Palmer,

Can we get this queued for 5.12 now that everything has been reviewed ? It can
stay in for-next for a week or so for build tests... I would really like to
avoid all this being again delayed a full cycle.
Thanks.


> 
> Changes from v17:
> * Removed teh nodes of unsupported devices with undocumented bindings
>   from the SoC k210.dtsi DTS file.
> 
> Changes from v16:
> * Rebased on rc7
> * Addressed Rob's comment on patch 7
> * Added review and ack tags.
> 
> Changes from v15:
> * Addressed Rob's comments on patches 4 and 5
> * Fixed patch 7 ngpios property
> * Added review and ack tags.
> 
> Changes from v14:
> * Fixed typo in patch 4
> * Added reviewed-by tags
> 
> Changes from v13:
> * Rebased on rc6
> * Removed FPIOA driver patch as it is already queued.
> 
> Changes from v12:
> * Addressed Rab's comments: keep SoC specific compatible string for DT
>   nodes reusing existing IP blocks (e.g. PLIC and CLINT).
> * Addressed dt-bindings schema file check warnings.
> 
> Changes from v11:
> * Addressed Stephen's comment on the clock driver
> * Fixed and added device tree bindings yaml files and fixed the device
>   tree files to fix all warnings generated by make dtbs_check
> * Rebased on riscv tree fixes + latest riscv for-next branches.
> 
> Changes from v10:
> * Rebased on riscv tree fixes+for-next branches. Patches already applied
>   to these branches were removed from this series.
> * Fixed the clock driver and pinctrl driver patch titles to indicate the
>   correct target sub-components.
> * Applied reviewed-by tags from Anup.
> 
> Changes from v9:
> * Added patch 6 to avoid DTS compilation errors after patch 9 is
>   applied and until patch 16 is applied.
> 
> Changes from v8:
> * Addressed Rob's comments on the sysctl driver bindings documentation
> * Fixed a typo in the fpios driver bindings documentation
> 
> Changes from v7:
> * Removed the __init annotation for the drivers reset, pinctrl and
>   sysctl drivers probe functions as suggested by Geert. Also removed
>   the __refdata annotation for the struct platform_driver variables of
>   these drivers.
> 
> Changes from v6:
> * Annotate struct platform_driver variables with __refdata to avoid
>   section mismatch compilation errors
> * Add empty sentinel entry to of_device_id tables of the sysctl, reset
>   and pinctrl drivers.
> 
> Changes from v5:
> * Addressed Philipp's comment on the reset controller driver
> * Added patch 6 to reduce the size of the clock driver patch
>   (now patch 12).
> 
> Changes from v4:
> * Simplified reset controller driver using of_xlate callback as
>   suggested by Philipp
> * Fixed compilation error when using other configs than one of the
>   nommu_k210 defconfigs.
> * Addressed most clock driver comments from Stephen.
> * Removed CONFIG_GPIO_SYSFS from defconfigs
> * Rebased on 5.10-rc7
> 
> Changes from V3:
> * Add one entry per driver in MAINTAINERS file
> 
> Changes from V2:
> * Add MAINTAINERS file entry for the SoC support, listing myself as
>   maintainer.
> * Removed use of postcore_initcall() for declaring the drivers, using
>   the regular builtin_platform_driver() instead.
> * Fixed fpio pinctrl driver bindings documentation as commented by
>   Geert: removed input-schmitt and added input-schmitt-disable, fixed
>   typo and added input-disable and output-disable.
> * Fixed device tree to have cs-gpios active low, as per the default, as
>   active high necessity was an artifact of the gpio level double
>   inversion bug fixed recently.
> * Removed CONFIG_VT from defconfigs to reduce the kernel image size as
>   suggested by Geert.
> 
> Changes from v1:
> * Improved DT bindings documentation
> * SPI and GPIO patches removed from this series (and being processed
>   directly through the relevant subsystems directly)
> * Improved device trees
> * Various cleanup and improvments of the drivers
> 
> Damien Le Moal (16):
>   clk: Add RISC-V Canaan Kendryte K210 clock driver
>   dt-bindings: add Canaan boards compatible strings
>   dt-bindings: update risc-v cpu properties
>   dt-bindings: update sifive plic compatible string
>   dt-bindings: update sifive clint compatible string
>   dt-bindings: update sifive uart compatible string
>   dt-bindings: fix sifive gpio properties
>   dt-bindings: add resets property to dw-apb-timer
>   riscv: Update Canaan Kendryte K210 device tree
>   riscv: Add SiPeed MAIX BiT board device tree
>   riscv: Add SiPeed MAIX DOCK board device tree
>   riscv: Add SiPeed MAIX GO board device tree
>   riscv: Add SiPeed MAIXDUINO board device tree
>   riscv: Add Kendryte KD233 board device tree
>   riscv: Update Canaan Kendryte K210 defconfig
>   riscv: Add Canaan Kendryte K210 SD card defconfig
> 
> Damien Le Moal (17):
>   clk: Add RISC-V Canaan Kendryte K210 clock driver
>   dt-bindings: update MAINTAINERS file
>   dt-bindings: add Canaan boards compatible strings
>   dt-bindings: update risc-v cpu properties
>   dt-bindings: update sifive plic compatible string
>   dt-bindings: update sifive clint compatible string
>   dt-bindings: update sifive uart compatible string
>   dt-bindings: fix sifive gpio properties
>   dt-bindings: add resets property to dw-apb-timer
>   riscv: Update Canaan Kendryte K210 device tree
>   riscv: Add SiPeed MAIX BiT board device tree
>   riscv: Add SiPeed MAIX DOCK board device tree
>   riscv: Add SiPeed MAIX GO board device tree
>   riscv: Add SiPeed MAIXDUINO board device tree
>   riscv: Add Kendryte KD233 board device tree
>   riscv: Update Canaan Kendryte K210 defconfig
>   riscv: Add Canaan Kendryte K210 SD card defconfig
> 
>  .../devicetree/bindings/gpio/sifive,gpio.yaml |   25 +-
>  .../sifive,plic-1.0.0.yaml                    |   13 +-
>  .../devicetree/bindings/riscv/canaan.yaml     |   47 +
>  .../devicetree/bindings/riscv/cpus.yaml       |    2 +
>  .../bindings/serial/sifive-serial.yaml        |    1 +
>  .../bindings/timer/sifive,clint.yaml          |   12 +-
>  .../bindings/timer/snps,dw-apb-timer.yaml     |    3 +
>  MAINTAINERS                                   |    1 +
>  arch/riscv/Kconfig.socs                       |    2 +-
>  arch/riscv/boot/dts/canaan/canaan_kd233.dts   |  172 +++
>  arch/riscv/boot/dts/canaan/k210.dts           |   23 -
>  arch/riscv/boot/dts/canaan/k210.dtsi          |  395 ++++++-
>  arch/riscv/boot/dts/canaan/k210_generic.dts   |   46 +
>  .../riscv/boot/dts/canaan/sipeed_maix_bit.dts |  229 ++++
>  .../boot/dts/canaan/sipeed_maix_dock.dts      |  231 ++++
>  arch/riscv/boot/dts/canaan/sipeed_maix_go.dts |  239 ++++
>  .../boot/dts/canaan/sipeed_maixduino.dts      |  204 ++++
>  arch/riscv/configs/nommu_k210_defconfig       |   44 +-
>  .../riscv/configs/nommu_k210_sdcard_defconfig |   92 ++
>  drivers/clk/Kconfig                           |    7 +
>  drivers/clk/Makefile                          |    1 +
>  drivers/clk/clk-k210.c                        | 1007 +++++++++++++++++
>  drivers/soc/canaan/Kconfig                    |   18 +-
>  drivers/soc/canaan/Makefile                   |    2 +-
>  drivers/soc/canaan/k210-sysctl.c              |  205 +---
>  include/dt-bindings/clock/k210-clk.h          |    1 -
>  include/soc/canaan/k210-sysctl.h              |    2 +
>  27 files changed, 2773 insertions(+), 251 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/riscv/canaan.yaml
>  create mode 100644 arch/riscv/boot/dts/canaan/canaan_kd233.dts
>  delete mode 100644 arch/riscv/boot/dts/canaan/k210.dts
>  create mode 100644 arch/riscv/boot/dts/canaan/k210_generic.dts
>  create mode 100644 arch/riscv/boot/dts/canaan/sipeed_maix_bit.dts
>  create mode 100644 arch/riscv/boot/dts/canaan/sipeed_maix_dock.dts
>  create mode 100644 arch/riscv/boot/dts/canaan/sipeed_maix_go.dts
>  create mode 100644 arch/riscv/boot/dts/canaan/sipeed_maixduino.dts
>  create mode 100644 arch/riscv/configs/nommu_k210_sdcard_defconfig
>  create mode 100644 drivers/clk/clk-k210.c
> 


-- 
Damien Le Moal
Western Digital Research



More information about the linux-riscv mailing list