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


Reply via email to