KICKPI-K3 is a development board based on Rockchip RK3562, the main control chip. It has a quad-core 64-bit Cortex-A53 processor, a main frequency of up to 2.0GHz, low power consumption, and high performance.
Signed-off-by: Sohaib Mohamed <[email protected]> --- arch/arm/boards/Makefile | 1 + .../boards/rockchip-rk3562-kickpi-k3/.gitignore | 1 + arch/arm/boards/rockchip-rk3562-kickpi-k3/Makefile | 4 ++ arch/arm/boards/rockchip-rk3562-kickpi-k3/board.c | 46 ++++++++++++++++++++++ .../boards/rockchip-rk3562-kickpi-k3/lowlevel.c | 23 +++++++++++ arch/arm/configs/multi_v8_defconfig | 1 + arch/arm/configs/rockchip_v8_defconfig | 1 + arch/arm/dts/Makefile | 1 + arch/arm/dts/rk3562-kickpi-k3.dts | 10 +++++ arch/arm/dts/rk3562-kickpi-k3.dtsi | 2 +- arch/arm/mach-rockchip/Kconfig | 6 +++ images/Makefile.rockchip | 1 + 12 files changed, 96 insertions(+), 1 deletion(-) diff --git a/arch/arm/boards/Makefile b/arch/arm/boards/Makefile index 946af95560..2a8e85e0b3 100644 --- a/arch/arm/boards/Makefile +++ b/arch/arm/boards/Makefile @@ -186,6 +186,7 @@ obj-$(CONFIG_MACH_LS1021AIOT) += ls1021aiot/ obj-$(CONFIG_MACH_MNT_REFORM) += mnt-reform/ obj-$(CONFIG_MACH_SKOV_ARM9CPU) += skov-arm9cpu/ obj-$(CONFIG_MACH_RK3562_EVB2) += rockchip-rk3562-evb2/ +obj-$(CONFIG_MACH_RK3562_KICKPI_K3) += rockchip-rk3562-kickpi-k3/ obj-$(CONFIG_MACH_RK3568_EVB) += rockchip-rk3568-evb/ obj-$(CONFIG_MACH_RK3568_BPI_R2PRO) += rockchip-rk3568-bpi-r2pro/ obj-$(CONFIG_MACH_PINE64_PINETAB2) += pine64-pinetab2/ diff --git a/arch/arm/boards/rockchip-rk3562-kickpi-k3/.gitignore b/arch/arm/boards/rockchip-rk3562-kickpi-k3/.gitignore new file mode 100644 index 0000000000..f458f794b5 --- /dev/null +++ b/arch/arm/boards/rockchip-rk3562-kickpi-k3/.gitignore @@ -0,0 +1 @@ +sdram-init.bin diff --git a/arch/arm/boards/rockchip-rk3562-kickpi-k3/Makefile b/arch/arm/boards/rockchip-rk3562-kickpi-k3/Makefile new file mode 100644 index 0000000000..da63d2625f --- /dev/null +++ b/arch/arm/boards/rockchip-rk3562-kickpi-k3/Makefile @@ -0,0 +1,4 @@ +# SPDX-License-Identifier: GPL-2.0-only + +obj-y += board.o +lwl-y += lowlevel.o diff --git a/arch/arm/boards/rockchip-rk3562-kickpi-k3/board.c b/arch/arm/boards/rockchip-rk3562-kickpi-k3/board.c new file mode 100644 index 0000000000..9e96bafb88 --- /dev/null +++ b/arch/arm/boards/rockchip-rk3562-kickpi-k3/board.c @@ -0,0 +1,46 @@ +// SPDX-License-Identifier: GPL-2.0-only + +#define pr_fmt(fmt) "rk3562-kickpi-k3: " fmt + +#include <bootsource.h> +#include <common.h> +#include <init.h> +#include <mach/rockchip/bbu.h> +#include <globalvar.h> +#include <deep-probe.h> + +static int rk3562_kickpi_k3_probe(struct device *dev) +{ + int emmc_bbu_flag = 0; + int sd_bbu_flag = 0; + + if (bootsource_get() == BOOTSOURCE_MMC) { + if (bootsource_get_instance() == 2) + emmc_bbu_flag = BBU_HANDLER_FLAG_DEFAULT; + else + sd_bbu_flag = BBU_HANDLER_FLAG_DEFAULT; + } else { + emmc_bbu_flag = BBU_HANDLER_FLAG_DEFAULT; + } + + rockchip_bbu_mmc_register("sd", sd_bbu_flag, "/dev/mmc1"); + rockchip_bbu_mmc_register("emmc", emmc_bbu_flag, "/dev/mmc0"); + + return 0; +} + +static const struct of_device_id rk3562_kickpi_k3_of_match[] = { + { + .compatible = "kickpi,rk3562-kickpi-k3", + }, + { /* Sentinel */}, +}; + +static struct driver rk3562_kickpi_k3_board_driver = { + .name = "board-rk3562-kickpi-k3", + .probe = rk3562_kickpi_k3_probe, + .of_compatible = rk3562_kickpi_k3_of_match, +}; +coredevice_platform_driver(rk3562_kickpi_k3_board_driver); + +BAREBOX_DEEP_PROBE_ENABLE(rk3562_kickpi_k3_of_match); diff --git a/arch/arm/boards/rockchip-rk3562-kickpi-k3/lowlevel.c b/arch/arm/boards/rockchip-rk3562-kickpi-k3/lowlevel.c new file mode 100644 index 0000000000..4afe83189d --- /dev/null +++ b/arch/arm/boards/rockchip-rk3562-kickpi-k3/lowlevel.c @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: GPL-2.0-only + +#include <common.h> +#include <asm/barebox-arm.h> +#include <mach/rockchip/hardware.h> +#include <mach/rockchip/atf.h> +#include <debug_ll.h> + +extern char __dtb_rk3562_kickpi_k3_start[]; + +ENTRY_FUNCTION(start_rk3562_kickpi_k3, r0, r1, r2) +{ + putc_ll('>'); + + if (current_el() == 3) + relocate_to_adr_full(RK3562_BAREBOX_LOAD_ADDRESS); + else + relocate_to_current_adr(); + + setup_c(); + + rk3562_barebox_entry(__dtb_rk3562_kickpi_k3_start); +} diff --git a/arch/arm/configs/multi_v8_defconfig b/arch/arm/configs/multi_v8_defconfig index e576cecd89..64ac712d4a 100644 --- a/arch/arm/configs/multi_v8_defconfig +++ b/arch/arm/configs/multi_v8_defconfig @@ -30,6 +30,7 @@ CONFIG_MACH_NXP_IMX93_FRDM=y CONFIG_IMX_IIM=y CONFIG_MACH_BEAGLEPLAY=y CONFIG_MACH_RK3562_EVB2=y +CONFIG_MACH_RK3562_KICKPI_K3=y CONFIG_MACH_RK3568_EVB=y CONFIG_MACH_RK3568_BPI_R2PRO=y CONFIG_MACH_PINE64_PINETAB2=y diff --git a/arch/arm/configs/rockchip_v8_defconfig b/arch/arm/configs/rockchip_v8_defconfig index 3e5f76077d..117117b047 100644 --- a/arch/arm/configs/rockchip_v8_defconfig +++ b/arch/arm/configs/rockchip_v8_defconfig @@ -1,5 +1,6 @@ CONFIG_ARCH_ROCKCHIP=y CONFIG_MACH_RK3562_EVB2=y +CONFIG_MACH_RK3562_KICKPI_K3=y CONFIG_MACH_RK3568_EVB=y CONFIG_MACH_RK3568_BPI_R2PRO=y CONFIG_MACH_PINE64_PINETAB2=y diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index d5e37d3e4e..ac42a6a6ae 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -141,6 +141,7 @@ lwl-$(CONFIG_MACH_PHYTEC_SOM_RK3288) += rk3288-phycore-som.dtb.o lwl-$(CONFIG_MACH_REALQ7) += imx6q-dmo-edmqmx6.dtb.o lwl-$(CONFIG_MACH_RK3562_EVB2) += rk3562-evb2-v10.dtb.o lwl-$(CONFIG_MACH_RK3568_EVB) += rk3568-evb1-v10.dtb.o +lwl-$(CONFIG_MACH_RK3562_KICKPI_K3) += rk3562-kickpi-k3.dtb.o lwl-$(CONFIG_MACH_RK3568_BPI_R2PRO) += rk3568-bpi-r2-pro.dtb.o lwl-$(CONFIG_MACH_RPI) += bcm2835-rpi.dtb.o lwl-$(CONFIG_MACH_RPI2) += bcm2836-rpi-2.dtb.o diff --git a/arch/arm/dts/rk3562-kickpi-k3.dts b/arch/arm/dts/rk3562-kickpi-k3.dts new file mode 100644 index 0000000000..78e0578d9d --- /dev/null +++ b/arch/arm/dts/rk3562-kickpi-k3.dts @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2021 Rockchip Electronics Co., Ltd. + * + */ + +/dts-v1/; + +#include "rk3562-kickpi-k3.dtsi" +#include "rk3562.dtsi" diff --git a/arch/arm/dts/rk3562-kickpi-k3.dtsi b/arch/arm/dts/rk3562-kickpi-k3.dtsi index 77bd61cf30..ad5349d7c4 100644 --- a/arch/arm/dts/rk3562-kickpi-k3.dtsi +++ b/arch/arm/dts/rk3562-kickpi-k3.dtsi @@ -22,7 +22,7 @@ aliases { }; chosen { - stdout-path = "console=serial0,1500000n8"; + stdout-path = "serial0:1500000n8"; }; vcc3v3_pcie20: regulator-vcc3v3-pcie20 { diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig index d359307eb7..c1c96c545e 100644 --- a/arch/arm/mach-rockchip/Kconfig +++ b/arch/arm/mach-rockchip/Kconfig @@ -70,6 +70,12 @@ config MACH_RK3562_EVB2 help Say Y here if you are using a RK3562 EVB2 +config MACH_RK3562_KICKPI_K3 + select ARCH_RK3562 + bool "RK3562 KICKPI K3" + help + Say Y here if you are using a RK3562 KICKPI K3 + config MACH_RK3568_EVB select ARCH_RK3568 bool "RK3568 EVB" diff --git a/images/Makefile.rockchip b/images/Makefile.rockchip index 1122db4629..7651f88d62 100644 --- a/images/Makefile.rockchip +++ b/images/Makefile.rockchip @@ -38,6 +38,7 @@ FILE_barebox-rk3288-phycore-som.img = start_rk3288_phycore_som.pblb image-$(CONFIG_MACH_PHYTEC_SOM_RK3288) += barebox-rk3288-phycore-som.img $(call build_rockchip_image, CONFIG_MACH_RK3562_EVB2, start_rk3562_evb2, rockchip-rk3562-evb2/sdram-init.bin, rk3562-evb2) +$(call build_rockchip_image, CONFIG_MACH_RK3562_KICKPI_K3, start_rk3562_kickpi_k3, rockchip-rk3562-kickpi-k3/sdram-init.bin, rk3562-kickpi-k3) $(call build_rockchip_image, CONFIG_MACH_RK3568_EVB, start_rk3568_evb, rockchip-rk3568-evb/sdram-init.bin, rk3568-evb) $(call build_rockchip_image, CONFIG_MACH_RK3568_BPI_R2PRO, start_rk3568_bpi_r2pro, rockchip-rk3568-bpi-r2pro/sdram-init.bin, rk3568-bpi-r2pro) $(call build_rockchip_image, CONFIG_MACH_PINE64_PINETAB2, start_pinetab2_v0, pine64-pinetab2/sdram-init.bin, pinetab2-v0) -- 2.43.0
