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.
+  */
++/*
+ &gt1x {
+ 	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