[PATCH v5 11/11] riscv: Add FPIOA and GPIO support for Kendryte K210

Rick Chen
2020-08-19T03:48:57Z

Hi Tom

> This patch adds the necessary configs and docs for FPIOA and GPIO support
> on the K210.
>
> The board does not boot unless CONSOLE_LOGLEVEL is set to a non-default
> value . It also boots when the tree is dirty (and CONSOLE_LOGLEVEL is not
> changed). It also boots when changes are made to the device tree and then
> committed. I don't know why this happens. These breakages only occur after
> bf2fb81ad3.
>
> Signed-off-by: Sean Anderson <seanga2@gmail.com>
> ---
>
> Changes in v5:
> - Increase CONSOLE_LOGLEVEL to 5 as a hack to get the board booting again
> - Patch 05/12 "gpio: sifive: Use generic reg read function" has been superseded
> by commit 2548493ab4.

Would you like to pick up this series, [PATCH v5 00/11] riscv: Add
FPIOA and GPIO support for Kendryte K210 ?
Or maybe it is better to figure out what is wrong here and find the
root cause why it need to Increase CONSOLE_LOGLEVEL to 5 as a hack ?

Thanks,
Rick

>
> Changes in v3:
> - Document pins 6 and 7 as not set
>
> Changes in v2:
> - Remove SPI flash related Kconfig settings
>
> board/sipeed/maix/Kconfig | 9 +++++
> configs/sipeed_maix_bitm_defconfig | 2 +
> doc/board/sipeed/maix.rst | 64 +++++++++++++++++++++++++++++-
> 3 files changed, 73 insertions(+), 2 deletions(-)
>
> diff --git a/board/sipeed/maix/Kconfig b/board/sipeed/maix/Kconfig
> index 0cdcd32adc..4c42dd2087 100644
> --- a/board/sipeed/maix/Kconfig
> +++ b/board/sipeed/maix/Kconfig
> @@ -44,4 +44,13 @@ config BOARD_SPECIFIC_OPTIONS
> imply RESET_SYSCON
> imply SYSRESET
> imply SYSRESET_SYSCON
> + imply PINCTRL
> + imply PINCONF
> + imply PINCTRL_K210
> + imply DM_GPIO
> + imply DWAPB_GPIO
> + imply SIFIVE_GPIO
> + imply CMD_GPIO
> + imply LED
> + imply LED_GPIO
> endif
> diff --git a/configs/sipeed_maix_bitm_defconfig b/configs/sipeed_maix_bitm_defconfig
> index 459bf0d530..0b038ff0a1 100644
> --- a/configs/sipeed_maix_bitm_defconfig
> +++ b/configs/sipeed_maix_bitm_defconfig
> @@ -2,6 +2,8 @@ CONFIG_RISCV=y
> CONFIG_TARGET_SIPEED_MAIX=y
> CONFIG_ARCH_RV64I=y
> CONFIG_STACK_SIZE=0x100000
> +# FIXME: Dirty hack to get boot working!
> +CONFIG_LOGLEVEL=5
> # CONFIG_NET is not set
> # CONFIG_INPUT is not set
> # CONFIG_DM_ETH is not set
> diff --git a/doc/board/sipeed/maix.rst b/doc/board/sipeed/maix.rst
> index b1894f3a6f..3811eac61f 100644
> --- a/doc/board/sipeed/maix.rst
> +++ b/doc/board/sipeed/maix.rst
> @@ -156,7 +156,7 @@ To run legacy images, use the ``bootm`` command:
> Load Address: 80000000
> Entry Point: 80000000
>
> - $ picocom -b 115200 /dev/ttyUSB0i
> + $ picocom -b 115200 /dev/ttyUSB0
> => loady
> ## Ready for binary (ymodem) download to 0x80000000 at 115200 bps...
> C
> @@ -187,6 +187,66 @@ To run legacy images, use the ``bootm`` command:
> argv[0] = "<NULL>"
> Hit any key to exit ...
>
> +Pin Assignment
> +--------------
> +
> +The K210 contains a Fully Programmable I/O Array (FPIOA), which can remap any of
> +its 256 input functions to any any of 48 output pins. The following table has
> +the default pin assignments for the BitM.
> +
> +===== ========== =======
> +Pin Function Comment
> +===== ========== =======
> +IO_0 JTAG_TCLK
> +IO_1 JTAG_TDI
> +IO_2 JTAG_TMS
> +IO_3 JTAG_TDO
> +IO_4 UARTHS_RX
> +IO_5 UARTHS_TX
> +IO_6 Not set
> +IO_7 Not set
> +IO_8 GPIO_0
> +IO_9 GPIO_1
> +IO_10 GPIO_2
> +IO_11 GPIO_3
> +IO_12 GPIO_4 Green LED
> +IO_13 GPIO_5 Red LED
> +IO_14 GPIO_6 Blue LED
> +IO_15 GPIO_7
> +IO_16 GPIOHS_0 ISP
> +IO_17 GPIOHS_1
> +IO_18 I2S0_SCLK MIC CLK
> +IO_19 I2S0_WS MIC WS
> +IO_20 I2S0_IN_D0 MIC SD
> +IO_21 GPIOHS_5
> +IO_22 GPIOHS_6
> +IO_23 GPIOHS_7
> +IO_24 GPIOHS_8
> +IO_25 GPIOHS_9
> +IO_26 SPI1_D1 MMC MISO
> +IO_27 SPI1_SCLK MMC CLK
> +IO_28 SPI1_D0 MMC MOSI
> +IO_29 GPIOHS_13 MMC CS
> +IO_30 GPIOHS_14
> +IO_31 GPIOHS_15
> +IO_32 GPIOHS_16
> +IO_33 GPIOHS_17
> +IO_34 GPIOHS_18
> +IO_35 GPIOHS_19
> +IO_36 GPIOHS_20 Panel CS
> +IO_37 GPIOHS_21 Panel RST
> +IO_38 GPIOHS_22 Panel DC
> +IO_39 SPI0_SCK Panel WR
> +IO_40 SCCP_SDA
> +IO_41 SCCP_SCLK
> +IO_42 DVP_RST
> +IO_43 DVP_VSYNC
> +IO_44 DVP_PWDN
> +IO_45 DVP_HSYNC
> +IO_46 DVP_XCLK
> +IO_47 DVP_PCLK
> +===== ========== =======
> +
> Over- and Under-clocking
> ------------------------
>
> @@ -361,5 +421,5 @@ Address Size Description
> 0x8801C000 0x1000 riscv priv spec 1.9 config
> 0x8801D000 0x2000 flattened device tree (contains only addresses and
> interrupts)
> -0x8801f000 0x1000 credits
> +0x8801F000 0x1000 credits
> ========== ========= ===========
> --
> 2.28.0
>