From f070c462a936f401b7ab915b42dea4e0f662bb81 Mon Sep 17 00:00:00 2001
From: android <android@lingyun.com>
Date: Sun, 16 Jun 2024 19:39:01 +0800
Subject: [PATCH] Add Linux SDK build shell script
---
config.json | 14 +
linux_sdk/build.sh | 178 ++++++++++++++++++++++
linux_sdk/patches/kernel.patch | 267 +++++++++++++++++++++++++++++++++
3 files changed, 459 insertions(+), 0 deletions(-)
diff --git a/config.json b/config.json
new file mode 100644
index 0000000..71cbd85
--- /dev/null
+++ b/config.json
@@ -0,0 +1,14 @@
+{
+ "board":"IGKBoard-RK3568",
+ "linux":
+ {
+ "sdk_ver":"sdkv1.4.0_linux5.10",
+ "sdk_path":"/srv/ftp/rockchip/bsp/rk3568_linuxsdk/",
+ "distro":"buildroot"
+ },
+ "android":
+ {
+ "sdk_ver":"android-13.0-mid-rkr6",
+ "sdk_path":"/srv/ftp/rockchip/bsp/rk3568_android/android13_sdk/"
+ }
+}
diff --git a/linux_sdk/build.sh b/linux_sdk/build.sh
new file mode 100755
index 0000000..bbbb060
--- /dev/null
+++ b/linux_sdk/build.sh
@@ -0,0 +1,178 @@
+#!/bin/bash
+
+# this project absolute path
+PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)
+
+# top project absolute path
+TOP_PATH=$(realpath $PRJ_PATH/..)
+
+# SDK build workspace
+SDK_DIR=sdk_build
+
+# binaries build prefix install path
+PRFX_PATH=$PRJ_PATH/install
+
+# binaries finally install path if needed
+#INST_PATH=/tftp
+
+# download taballs path
+TARBALL_PATH=$PRJ_PATH/tarballs
+
+# config file path
+CONF_FILE=$TOP_PATH/config.json
+
+# shell script will exit once get command error
+set -e
+
+#+-------------------------+
+#| Shell script functions |
+#+-------------------------+
+
+function pr_error() {
+ echo -e "\033[40;31m $1 \033[0m"
+}
+
+function pr_warn() {
+ echo -e "\033[40;33m $1 \033[0m"
+}
+
+function pr_info() {
+ echo -e "\033[40;32m $1 \033[0m"
+}
+
+# decompress a packet to destination path
+function do_unpack()
+{
+ tarball=$1
+ dstpath=`pwd`
+
+ if [[ $# == 2 ]] ; then
+ dstpath=$2
+ fi
+
+ pr_info "decompress $tarball => $dstpath"
+
+ mkdir -p $dstpath
+ case $tarball in
+ *.tar.gz)
+ tar -xzf $tarball -C $dstpath
+ ;;
+
+ *.tgz)
+ tar -xzf $tarball -C $dstpath
+ ;;
+
+ *.tar.bz2)
+ tar -xjf $tarball -C $dstpath
+ ;;
+
+ *.tar.xz)
+ tar -xJf $tarball -C $dstpath
+ ;;
+
+ *.tar.zst)
+ tar -I zstd -xf $tarball -C $dstpath
+ ;;
+
+ *.tar)
+ tar -xf $tarball -C $dstpath
+ ;;
+
+ *.zip)
+ unzip -qo $tarball -d $dstpath
+ ;;
+
+ *)
+ pr_error "decompress Unsupport packet: $tarball"
+ return 1;
+ ;;
+ esac
+}
+
+# parser configure file and export environment variable
+function export_env()
+{
+ export BOARD=`jq -r ".board" $CONF_FILE | tr 'A-Z' 'a-z'`
+ export SDK_VER=`jq -r ".linux.sdk_ver" $CONF_FILE`
+ export SDK_PATH=`jq -r ".linux.sdk_path" $CONF_FILE`
+ export DISTRO=`jq -r ".linux.distro" $CONF_FILE | tr 'A-Z' 'a-z'`
+
+ export ARCH=arm64
+
+ if [[ $BOARD =~ igkboard-rk3568 ]] ; then
+ LUNCH_BOARD=rockchip_rk3568_evb1_ddr4_v10_defconfig
+ fi
+
+ PYTHON_VERSION=$(python --version 2>&1 | awk '{print $2}' | cut -d. -f1)
+ if [ $PYTHON_VERSION != "3" ] ; then
+ PYTHON_VERSION=$(python --version 2>&1)
+ pr_error "ERROR: This SDK build need Python3, current version is $PYTHON_VERSION"
+ pr_warn "You can use 'sudo update-alternatives --config python' command to switch it"
+ exit
+ fi
+}
+
+function do_fetch()
+{
+ SDK_FPATH=$SDK_PATH/$SDK_VER
+
+ PATCH_FLAG="$SDK_DIR/kernel/arch/arm64/configs/rockchip_linux_defconfig"
+
+ if [ -e $PATCH_FLAG ] ; then
+ pr_warn "SDK source code fetched already, skip do fetch"
+ return ;
+ fi
+
+ if [ ! -d $SDK_DIR/.repo ] ; then
+
+ SDK_FILE=`ls $SDK_FPATH/*.tar.bz2 | head -n 1`
+
+ if [ ! -d $SDK_FPATH ] ; then
+ pr_error "ERROR: SDK package folder '$SDK_FPATH' doesn't exist!"
+ exit
+ fi
+
+ pr_info "decompress SDK tarball $SDK_FILE..."
+
+ do_unpack $SDK_FILE $SDK_DIR
+ fi
+
+ cd $SDK_DIR
+
+ if [ ! -e $PATCH_FLAG ] ; then
+ pr_info "repo sync to checkout source code..."
+ ./.repo/repo/repo sync -l
+ fi
+
+ if ! grep -q '^CONFIG_CAN=y' $PATCH_FLAG ; then
+ pr_info "patch for linux kernel..."
+ cd kernel
+ patch -p1 < $PRJ_PATH/patch/kernel.patch
+ fi
+}
+
+function do_build()
+{
+ pr_info "Choose your board"
+
+ cd $SDK_DIR
+
+ ./build.sh lunch:${LUNCH_BOARD}
+
+ RK_ROOTFS_SYSTEM=$DISTRO ./build.sh
+
+ pr_info "System image will be installed to $PRJ_PATH/$SDK_DIR/rockdev"
+ ls ./rockdev
+}
+
+#+-------------------------+
+#| Shell script body entry |
+#+-------------------------+
+
+export_env
+
+pr_warn "start build linux kernel for ${BOARD}"
+
+do_fetch
+
+do_build
diff --git a/linux_sdk/patches/kernel.patch b/linux_sdk/patches/kernel.patch
new file mode 100644
index 0000000..037fe05
--- /dev/null
+++ b/linux_sdk/patches/kernel.patch
@@ -0,0 +1,267 @@
+diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi
+index f13c2387f1d2..df730a87027e 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi
+@@ -348,7 +348,7 @@ wireless_wlan: wireless-wlan {
+ rockchip,grf = <&grf>;
+ wifi_chip_type = "ap6398s";
+ WIFI,poweren_gpio = <&gpio3 RK_PD5 GPIO_ACTIVE_HIGH>;
+- status = "okay";
++ status = "disabled";
+ };
+
+ wireless_bluetooth: wireless-bluetooth {
+@@ -363,7 +363,7 @@ wireless_bluetooth: wireless-bluetooth {
+ BT,reset_gpio = <&gpio3 RK_PA0 GPIO_ACTIVE_HIGH>;
+ BT,wake_gpio = <&gpio3 RK_PA1 GPIO_ACTIVE_HIGH>;
+ BT,wake_host_irq = <&gpio3 RK_PA2 GPIO_ACTIVE_HIGH>;
+- status = "okay";
++ status = "disabled";
+ };
+
+ test-power {
+@@ -681,15 +681,15 @@ dsi0_panel: panel@0 {
+ disp_timings0: display-timings {
+ native-mode = <&dsi0_timing0>;
+ dsi0_timing0: timing0 {
+- clock-frequency = <132000000>;
+- hactive = <1080>;
+- vactive = <1920>;
+- hfront-porch = <15>;
+- hsync-len = <2>;
+- hback-porch = <30>;
+- vfront-porch = <15>;
+- vsync-len = <2>;
+- vback-porch = <15>;
++ clock-frequency = <149600000>;
++ hactive = <1920>;
++ vactive = <1080>;
++ hfront-porch = <48>;
++ hsync-len = <32>;
++ hback-porch = <147>;
++ vfront-porch = <3>;
++ vsync-len = <6>;
++ vback-porch = <51>;
+ hsync-active = <0>;
+ vsync-active = <0>;
+ de-active = <0>;
+@@ -1375,13 +1375,15 @@ rk809_codec: codec {
+ &i2c1 {
+ status = "okay";
+
+- gt1x: gt1x@14 {
+- compatible = "goodix,gt1x";
+- reg = <0x14>;
++ ili251x@41 {
++ compatible = "ilitek,ili251x";
++ reg = <0x41>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&touch_gpio>;
+- goodix,rst-gpio = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>;
+- goodix,irq-gpio = <&gpio0 RK_PB5 IRQ_TYPE_LEVEL_LOW>;
++ interrupt-parent = <&gpio0>;
++ interrupts = <13 IRQ_TYPE_EDGE_FALLING>;
++ reset-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_LOW>;
++ max-fingers = <6>;
+ };
+ };
+
+@@ -1545,9 +1547,9 @@ &pmu_io_domains {
+ pmuio2-supply = <&vcc3v3_pmu>;
+ vccio1-supply = <&vccio_acodec>;
+ vccio3-supply = <&vccio_sd>;
+- vccio4-supply = <&vcc_3v3>;
++ vccio4-supply = <&vcc_1v8>;
+ vccio5-supply = <&vcc_3v3>;
+- vccio6-supply = <&vcc_3v3>;
++ vccio6-supply = <&vcc_1v8>;
+ vccio7-supply = <&vcc_3v3>;
+ };
+
+diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10-linux.dts b/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10-linux.dts
+index b6b618bb561a..36cd17a68309 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10-linux.dts
++++ b/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10-linux.dts
+@@ -15,3 +15,50 @@ &vp0 {
+ &vp1 {
+ cursor-win-id = <ROCKCHIP_VOP2_CLUSTER1>;
+ };
++
++&uart3{
++ dma-names = "tx", "rx";
++ pinctrl-names = "default";
++ pinctrl-0 = <&uart3m1_xfer>;
++ status = "okay";
++};
++
++&uart4{
++ dma-names = "tx", "rx";
++ pinctrl-names = "default";
++ pinctrl-0 = <&uart4m1_xfer>;
++ status = "okay";
++};
++
++&uart9 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&uart9m1_xfer &rs485_ctrl>;
++ status = "okay";
++};
++
++&can0 {
++ compatible = "rockchip,rk3568-can-2.0";
++ assigned-clocks = <&cru CLK_CAN0>;
++ assigned-clock-rates = <150000000>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&can0m1_pins>;
++ status = "okay";
++};
++
++&can1 {
++ compatible = "rockchip,rk3568-can-2.0";
++ assigned-clocks = <&cru CLK_CAN1>;
++ assigned-clock-rates = <150000000>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&can1m1_pins>;
++ status = "okay";
++};
++
++&pinctrl {
++
++ rs485 {
++ rs485_ctrl: rs485-ctrl {
++ rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
++ };
++ };
++};
+diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi
+index dc9ad4236dd3..ec5a5f7bcf6c 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi
+@@ -186,15 +186,15 @@ &dsi1_panel {
+
+ &edp {
+ hpd-gpios = <&gpio0 RK_PC2 GPIO_ACTIVE_HIGH>;
+- status = "okay";
++ status = "disabled";
+ };
+
+ &edp_phy {
+- status = "okay";
++ status = "disabled";
+ };
+
+ &edp_in_vp0 {
+- status = "okay";
++ status = "disabled";
+ };
+
+ &edp_in_vp1 {
+@@ -259,10 +259,11 @@ &gmac1m1_rgmii_clk
+ * power-supply should switche to vcc3v3_lcd1_n
+ * when mipi panel is connected to dsi1.
+ */
++/*
+ >1x {
+ power-supply = <&vcc3v3_lcd0_n>;
+ };
+-
++*/
+ &i2c4 {
+ status = "okay";
+ gc8034: gc8034@37 {
+@@ -356,13 +357,13 @@ &video_phy1 {
+ };
+
+ &pcie30phy {
+- status = "okay";
++ status = "disabled";
+ };
+
+ &pcie3x2 {
+ reset-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>;
+ vpcie3v3-supply = <&vcc3v3_pcie>;
+- status = "okay";
++ status = "disabled";
+ };
+
+ &pinctrl {
+@@ -424,7 +425,7 @@ &route_dsi0 {
+ };
+
+ &route_edp {
+- status = "okay";
++ status = "disabled";
+ connect = <&vp0_out_edp>;
+ };
+
+@@ -489,5 +490,5 @@ &wireless_bluetooth {
+ BT,reset_gpio = <&gpio3 RK_PA0 GPIO_ACTIVE_HIGH>;
+ BT,wake_gpio = <&gpio3 RK_PA2 GPIO_ACTIVE_HIGH>;
+ BT,wake_host_irq = <&gpio3 RK_PA1 GPIO_ACTIVE_HIGH>;
+- status = "okay";
++ status = "disabled";
+ };
+diff --git a/arch/arm64/configs/rockchip_linux_defconfig b/arch/arm64/configs/rockchip_linux_defconfig
+index 688203de6bae..47da208d49e3 100644
+--- a/arch/arm64/configs/rockchip_linux_defconfig
++++ b/arch/arm64/configs/rockchip_linux_defconfig
+@@ -60,13 +60,10 @@ CONFIG_ARMV8_DEPRECATED=y
+ CONFIG_SWP_EMULATION=y
+ CONFIG_CP15_BARRIER_EMULATION=y
+ CONFIG_SETEND_EMULATION=y
+-# CONFIG_ARM64_PTR_AUTH is not set
+ # CONFIG_ARM64_AMU_EXTN is not set
+-# CONFIG_ARM64_TLB_RANGE is not set
+ # CONFIG_ARM64_BTI is not set
+ # CONFIG_ARM64_E0PD is not set
+ # CONFIG_ARCH_RANDOM is not set
+-# CONFIG_ARM64_MTE is not set
+ # CONFIG_ARM64_SVE is not set
+ CONFIG_ARM64_PSEUDO_NMI=y
+ CONFIG_PM_DEBUG=y
+@@ -120,6 +117,9 @@ CONFIG_SYN_COOKIES=y
+ CONFIG_NETFILTER=y
+ CONFIG_IP_NF_IPTABLES=y
+ CONFIG_IP_NF_MANGLE=y
++CONFIG_CAN=y
++CONFIG_CAN_ROCKCHIP=y
++CONFIG_CANFD_ROCKCHIP=y
+ CONFIG_BT=y
+ CONFIG_BT_RFCOMM=y
+ CONFIG_BT_HIDP=y
+@@ -212,8 +212,19 @@ CONFIG_STMMAC_ETH=y
+ CONFIG_MOTORCOMM_PHY=y
+ CONFIG_ROCKCHIP_PHY=y
+ CONFIG_RK630_PHY=y
++CONFIG_PPP=y
++CONFIG_PPP_BSDCOMP=y
++CONFIG_PPP_DEFLATE=y
++CONFIG_PPP_FILTER=y
++CONFIG_PPP_MPPE=y
++CONFIG_PPP_MULTILINK=y
++CONFIG_PPPOE=y
++CONFIG_PPP_ASYNC=y
++CONFIG_PPP_SYNC_TTY=y
+ CONFIG_USB_RTL8150=y
+ CONFIG_USB_RTL8152=y
++CONFIG_USB_USBNET=y
++CONFIG_USB_NET_CDC_MBIM=y
+ CONFIG_WL_ROCKCHIP=y
+ CONFIG_WIFI_BUILD_MODULE=y
+ CONFIG_AP6XXX=m
+@@ -230,6 +241,7 @@ CONFIG_INPUT_TOUCHSCREEN=y
+ CONFIG_TOUCHSCREEN_ATMEL_MXT=y
+ CONFIG_TOUCHSCREEN_GSL3673=y
+ CONFIG_TOUCHSCREEN_GT1X=y
++CONFIG_TOUCHSCREEN_ILI210X=y
+ CONFIG_TOUCHSCREEN_ELAN=y
+ CONFIG_TOUCHSCREEN_USB_COMPOSITE=y
+ CONFIG_ROCKCHIP_REMOTECTL=y
+@@ -628,7 +640,6 @@ CONFIG_CRYPTO_USER_API_HASH=y
+ CONFIG_CRYPTO_USER_API_SKCIPHER=y
+ CONFIG_CRYPTO_DEV_ROCKCHIP=y
+ CONFIG_CRYPTO_DEV_ROCKCHIP_DEV=y
+-CONFIG_CRC_CCITT=y
+ CONFIG_CRC_T10DIF=y
+ CONFIG_CRC7=y
+ # CONFIG_XZ_DEC_X86 is not set
--
Gitblit v1.9.1