Message ID | 20210203125913.390949-1-damien.lemoal@wdc.com (mailing list archive) |
---|---|
Headers | show |
Series | RISC-V Kendryte K210 support improvements | expand |
On Wed, 03 Feb 2021 04:58:57 PST (-0800), 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 8 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. Looks like Rob has some comments on a handful of these, so I'll be expecting a v16. > > Patches 9 to 14 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-v28 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 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 > > .../devicetree/bindings/gpio/sifive,gpio.yaml | 21 +- > .../sifive,plic-1.0.0.yaml | 20 +- > .../devicetree/bindings/riscv/canaan.yaml | 47 + > .../devicetree/bindings/riscv/cpus.yaml | 2 + > .../bindings/serial/sifive-serial.yaml | 1 + > .../bindings/timer/sifive,clint.yaml | 19 +- > .../bindings/timer/snps,dw-apb-timer.yaml | 3 + > MAINTAINERS | 1 + > arch/riscv/Kconfig.socs | 2 +- > arch/riscv/boot/dts/canaan/canaan_kd233.dts | 177 +++ > arch/riscv/boot/dts/canaan/k210.dts | 23 - > arch/riscv/boot/dts/canaan/k210.dtsi | 535 ++++++++- > arch/riscv/boot/dts/canaan/k210_generic.dts | 46 + > .../riscv/boot/dts/canaan/sipeed_maix_bit.dts | 234 ++++ > .../boot/dts/canaan/sipeed_maix_dock.dts | 236 ++++ > arch/riscv/boot/dts/canaan/sipeed_maix_go.dts | 244 ++++ > .../boot/dts/canaan/sipeed_maixduino.dts | 209 ++++ > arch/riscv/configs/nommu_k210_defconfig | 44 +- > .../riscv/configs/nommu_k210_sdcard_defconfig | 92 ++ > drivers/clk/Kconfig | 8 + > drivers/clk/Makefile | 1 + > drivers/clk/clk-k210.c | 1012 +++++++++++++++++ > 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, 2950 insertions(+), 255 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
On 2021/02/05 12:44, Palmer Dabbelt wrote: > On Wed, 03 Feb 2021 04:58:57 PST (-0800), 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 8 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. > > Looks like Rob has some comments on a handful of these, so I'll be expecting a > v16. Yes, sending that today. The sifive gpio bindings doc update is still controversial though and still missing the clock driver ack from Stephen.