On 2021/01/12 9:58, 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 of the series not applied > yet. Patch 1 adds the SoC clock driver and patch 2 adds the pinctrl > driver. I screwed up with my git-send-email setup and patch 1 and 2 went only to Palmer and the riscv list. I resent these eparately to Stephen/linux-clk and Linus/linux-gpio respectively (suppress-cc and other related cc&to control options interactions are a bit obscure to me...). My apologies for the mess. Please let me know if I should resend correctly the entire series. > > Patches 3 to 8 update the existing K210 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 this series. > > A tree with all patches applied is available here: > https://github.com/damien-lemoal/linux, k210-sysctl-v24 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 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 (10): > clk: Add RISC-V Canaan Kendryte K210 clock driver > pinctrl: Add RISC-V Canaan Kendryte K210 FPIOA driver > 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 > > MAINTAINERS | 8 + > arch/riscv/Kconfig.socs | 3 +- > arch/riscv/boot/dts/canaan/canaan_kd233.dts | 178 +++ > arch/riscv/boot/dts/canaan/k210.dts | 23 - > arch/riscv/boot/dts/canaan/k210.dtsi | 551 ++++++++- > arch/riscv/boot/dts/canaan/k210_generic.dts | 46 + > .../riscv/boot/dts/canaan/sipeed_maix_bit.dts | 227 ++++ > .../boot/dts/canaan/sipeed_maix_dock.dts | 229 ++++ > arch/riscv/boot/dts/canaan/sipeed_maix_go.dts | 237 ++++ > .../boot/dts/canaan/sipeed_maixduino.dts | 201 ++++ > 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 | 1005 +++++++++++++++++ > drivers/pinctrl/Kconfig | 13 + > drivers/pinctrl/Makefile | 1 + > drivers/pinctrl/pinctrl-k210.c | 985 ++++++++++++++++ > 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 + > 23 files changed, 3844 insertions(+), 236 deletions(-) > 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 > create mode 100644 drivers/pinctrl/pinctrl-k210.c > > Cc: Stephen Boyd <sboyd@xxxxxxxxxx> > Cc: Michael Turquette <mturquette@xxxxxxxxxxxx> > Cc: linux-clk@xxxxxxxxxxxxxxx > Cc: Linus Walleij <linus.walleij@xxxxxxxxxx> > Cc: linux-gpio@xxxxxxxxxxxxxxx > -- Damien Le Moal Western Digital Research