1*4882a593Smuzhiyun#!/bin/bash -e 2*4882a593Smuzhiyun### BEGIN INIT INFO 3*4882a593Smuzhiyun# Provides: rockchip 4*4882a593Smuzhiyun# Required-Start: 5*4882a593Smuzhiyun# Required-Stop: 6*4882a593Smuzhiyun# Default-Start: 7*4882a593Smuzhiyun# Default-Stop: 8*4882a593Smuzhiyun# Short-Description: 9*4882a593Smuzhiyun# Description: Setup rockchip platform environment 10*4882a593Smuzhiyun### END INIT INFO 11*4882a593Smuzhiyun 12*4882a593SmuzhiyunPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 13*4882a593Smuzhiyun 14*4882a593Smuzhiyuninstall_packages() { 15*4882a593Smuzhiyun case $1 in 16*4882a593Smuzhiyun rk3288) 17*4882a593Smuzhiyun MALI=midgard-t76x-r18p0-r0p0 18*4882a593Smuzhiyun ISP=rkisp 19*4882a593Smuzhiyun # 3288w 20*4882a593Smuzhiyun cat /sys/devices/platform/*gpu/gpuinfo | grep -q r1p0 && \ 21*4882a593Smuzhiyun MALI=midgard-t76x-r18p0-r1p0 22*4882a593Smuzhiyun sed -i "s/always/none/g" /etc/X11/xorg.conf.d/20-modesetting.conf 23*4882a593Smuzhiyun [ -e /usr/lib/arm-linux-gnueabihf/ ] && apt install -fy --allow-downgrades /camera_engine_$ISP*.deb 24*4882a593Smuzhiyun ;; 25*4882a593Smuzhiyun rk3399|rk3399pro) 26*4882a593Smuzhiyun MALI=midgard-t86x-r18p0 27*4882a593Smuzhiyun ISP=rkisp 28*4882a593Smuzhiyun sed -i "s/always/none/g" /etc/X11/xorg.conf.d/20-modesetting.conf 29*4882a593Smuzhiyun [ -e /usr/lib/aarch64-linux-gnu/ ] && apt install -fy --allow-downgrades /camera_engine_$ISP*.deb 30*4882a593Smuzhiyun ;; 31*4882a593Smuzhiyun rk3328|rk3528) 32*4882a593Smuzhiyun MALI=utgard-450 33*4882a593Smuzhiyun ISP=rkisp 34*4882a593Smuzhiyun sed -i "s/always/none/g" /etc/X11/xorg.conf.d/20-modesetting.conf 35*4882a593Smuzhiyun [ -e /usr/lib/aarch64-linux-gnu/ ] && apt install -fy --allow-downgrades /camera_engine_$ISP*.deb 36*4882a593Smuzhiyun ;; 37*4882a593Smuzhiyun rk3326|px30) 38*4882a593Smuzhiyun MALI=bifrost-g31-g13p0 39*4882a593Smuzhiyun ISP=rkisp 40*4882a593Smuzhiyun sed -i "s/always/none/g" /etc/X11/xorg.conf.d/20-modesetting.conf 41*4882a593Smuzhiyun [ -e /usr/lib/aarch64-linux-gnu/ ] && apt install -fy --allow-downgrades /camera_engine_$ISP*.deb 42*4882a593Smuzhiyun ;; 43*4882a593Smuzhiyun rk3128|rk3036) 44*4882a593Smuzhiyun MALI=utgard-400 45*4882a593Smuzhiyun ISP=rkisp 46*4882a593Smuzhiyun sed -i "s/always/none/g" /etc/X11/xorg.conf.d/20-modesetting.conf 47*4882a593Smuzhiyun [ -e /usr/lib/arm-linux-gnueabihf/ ] && apt install -fy --allow-downgrades /camera_engine_$ISP*.deb 48*4882a593Smuzhiyun ;; 49*4882a593Smuzhiyun rk3568|rk3566) 50*4882a593Smuzhiyun MALI=bifrost-g52-g13p0 51*4882a593Smuzhiyun ISP=rkaiq_rk3568 52*4882a593Smuzhiyun [ -e /usr/lib/aarch64-linux-gnu/ ] && tar xvf /rknpu2-*.tar -C / 53*4882a593Smuzhiyun [ -e /usr/lib/aarch64-linux-gnu/ ] && apt install -fy --allow-downgrades /camera_engine_$ISP*.deb 54*4882a593Smuzhiyun ;; 55*4882a593Smuzhiyun rk3562) 56*4882a593Smuzhiyun MALI=bifrost-g52-g13p0 57*4882a593Smuzhiyun ISP=rkaiq_rk3562 58*4882a593Smuzhiyun [ -e /usr/lib/aarch64-linux-gnu/ ] && tar xvf /rknpu2-*.tar -C / 59*4882a593Smuzhiyun [ -e /usr/lib/aarch64-linux-gnu/ ] && apt install -fy --allow-downgrades /camera_engine_$ISP*.deb 60*4882a593Smuzhiyun ;; 61*4882a593Smuzhiyun rk3588|rk3588s) 62*4882a593Smuzhiyun ISP=rkaiq_rk3588 63*4882a593Smuzhiyun MALI=valhall-g610-g13p0 64*4882a593Smuzhiyun [ -e /usr/lib/aarch64-linux-gnu/ ] && tar xvf /rknpu2-*.tar -C / 65*4882a593Smuzhiyun [ -e /usr/lib/aarch64-linux-gnu/ ] && apt install -fy --allow-downgrades /camera_engine_$ISP*.deb 66*4882a593Smuzhiyun ;; 67*4882a593Smuzhiyun *) 68*4882a593Smuzhiyun echo "This chip does not support gpu acceleration or not input!!!" 69*4882a593Smuzhiyun ;; 70*4882a593Smuzhiyun esac 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun apt install -fy --allow-downgrades /libmali-*$MALI*-x11*.deb 73*4882a593Smuzhiyun} 74*4882a593Smuzhiyun 75*4882a593Smuzhiyunfunction update_npu_fw() { 76*4882a593Smuzhiyun /usr/bin/npu-image.sh 77*4882a593Smuzhiyun sleep 1 78*4882a593Smuzhiyun /usr/bin/npu_transfer_proxy& 79*4882a593Smuzhiyun} 80*4882a593Smuzhiyun 81*4882a593SmuzhiyunCOMPATIBLE=$(cat /proc/device-tree/compatible) 82*4882a593Smuzhiyunif [[ $COMPATIBLE =~ "rk3288" ]]; 83*4882a593Smuzhiyunthen 84*4882a593Smuzhiyun CHIPNAME="rk3288" 85*4882a593Smuzhiyunelif [[ $COMPATIBLE =~ "rk3328" ]]; then 86*4882a593Smuzhiyun CHIPNAME="rk3328" 87*4882a593Smuzhiyunelif [[ $COMPATIBLE =~ "rk3399" && $COMPATIBLE =~ "rk3399pro" ]]; then 88*4882a593Smuzhiyun CHIPNAME="rk3399pro" 89*4882a593Smuzhiyun update_npu_fw 90*4882a593Smuzhiyunelif [[ $COMPATIBLE =~ "rk3399" ]]; then 91*4882a593Smuzhiyun CHIPNAME="rk3399" 92*4882a593Smuzhiyunelif [[ $COMPATIBLE =~ "rk3326" ]]; then 93*4882a593Smuzhiyun CHIPNAME="rk3326" 94*4882a593Smuzhiyunelif [[ $COMPATIBLE =~ "px30" ]]; then 95*4882a593Smuzhiyun CHIPNAME="px30" 96*4882a593Smuzhiyunelif [[ $COMPATIBLE =~ "rk3128" ]]; then 97*4882a593Smuzhiyun CHIPNAME="rk3128" 98*4882a593Smuzhiyunelif [[ $COMPATIBLE =~ "rk3562" ]]; then 99*4882a593Smuzhiyun CHIPNAME="rk3562" 100*4882a593Smuzhiyunelif [[ $COMPATIBLE =~ "rk3566" ]]; then 101*4882a593Smuzhiyun CHIPNAME="rk3566" 102*4882a593Smuzhiyunelif [[ $COMPATIBLE =~ "rk3568" ]]; then 103*4882a593Smuzhiyun CHIPNAME="rk3568" 104*4882a593Smuzhiyunelif [[ $COMPATIBLE =~ "rk3588" ]]; then 105*4882a593Smuzhiyun CHIPNAME="rk3588" 106*4882a593Smuzhiyunelif [[ $COMPATIBLE =~ "rk3036" ]]; then 107*4882a593Smuzhiyun CHIPNAME="rk3036" 108*4882a593Smuzhiyunelif [[ $COMPATIBLE =~ "rk3308" ]]; then 109*4882a593Smuzhiyun CHIPNAME="rk3208" 110*4882a593Smuzhiyunelif [[ $COMPATIBLE =~ "rv1126" ]]; then 111*4882a593Smuzhiyun CHIPNAME="rv1126" 112*4882a593Smuzhiyunelif [[ $COMPATIBLE =~ "rv1109" ]]; then 113*4882a593Smuzhiyun CHIPNAME="rv1109" 114*4882a593Smuzhiyunelse 115*4882a593Smuzhiyun echo "please check if the Socs had been supported on rockchip linux!!!!!!!" 116*4882a593Smuzhiyunfi 117*4882a593SmuzhiyunCOMPATIBLE=${COMPATIBLE#rockchip,} 118*4882a593SmuzhiyunBOARDNAME=${COMPATIBLE%%rockchip,*} 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun# first boot configure 121*4882a593Smuzhiyunif [ ! -e "/usr/local/first_boot_flag" ] ; 122*4882a593Smuzhiyunthen 123*4882a593Smuzhiyun echo "It's the first time booting." 124*4882a593Smuzhiyun echo "The rootfs will be configured." 125*4882a593Smuzhiyun 126*4882a593Smuzhiyun # Force rootfs synced 127*4882a593Smuzhiyun mount -o remount,sync / 128*4882a593Smuzhiyun 129*4882a593Smuzhiyun install_packages ${CHIPNAME} 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun setcap CAP_SYS_ADMIN+ep /usr/bin/gst-launch-1.0 132*4882a593Smuzhiyun 133*4882a593Smuzhiyun if [ -e "/dev/rfkill" ] ; 134*4882a593Smuzhiyun then 135*4882a593Smuzhiyun rm /dev/rfkill 136*4882a593Smuzhiyun fi 137*4882a593Smuzhiyun 138*4882a593Smuzhiyun rm -rf /*.deb 139*4882a593Smuzhiyun rm -rf /*.tar 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun # The base target does not come with lightdm/rkaiq_3A 142*4882a593Smuzhiyunif [ -e /etc/gdm3/daemon.conf ]; then 143*4882a593Smuzhiyun systemctl restart gdm3.service || true 144*4882a593Smuzhiyunelif [ -e /etc/lightdm/lightdm.conf ]; then 145*4882a593Smuzhiyun systemctl restart lightdm.service || true 146*4882a593Smuzhiyunfi 147*4882a593Smuzhiyun systemctl restart rkaiq_3A.service || true 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun touch /usr/local/first_boot_flag 150*4882a593Smuzhiyunfi 151*4882a593Smuzhiyun 152*4882a593Smuzhiyun# enable rkwifbt service 153*4882a593Smuzhiyun#service rkwifibt start 154*4882a593Smuzhiyun 155*4882a593Smuzhiyun# enable async service 156*4882a593Smuzhiyun#service async start 157*4882a593Smuzhiyun 158*4882a593Smuzhiyun# enable adbd service 159*4882a593Smuzhiyun#service adbd start 160*4882a593Smuzhiyun 161*4882a593Smuzhiyun# support power management 162*4882a593Smuzhiyunif [ -e "/usr/sbin/pm-suspend" -a -e /etc/Powermanager ] ; 163*4882a593Smuzhiyunthen 164*4882a593Smuzhiyun mv /etc/Powermanager/power-key.sh /usr/bin/ 165*4882a593Smuzhiyun mv /etc/Powermanager/power-key.conf /etc/triggerhappy/triggers.d/ 166*4882a593Smuzhiyun if [[ "$CHIPNAME" == "rk3399pro" ]]; 167*4882a593Smuzhiyun then 168*4882a593Smuzhiyun mv /etc/Powermanager/01npu /usr/lib/pm-utils/sleep.d/ 169*4882a593Smuzhiyun mv /etc/Powermanager/02npu /lib/systemd/system-sleep/ 170*4882a593Smuzhiyun fi 171*4882a593Smuzhiyun mv /etc/Powermanager/03wifibt /usr/lib/pm-utils/sleep.d/ 172*4882a593Smuzhiyun mv /etc/Powermanager/04wifibt /lib/systemd/system-sleep/ 173*4882a593Smuzhiyun mv /etc/Powermanager/triggerhappy /etc/init.d/triggerhappy 174*4882a593Smuzhiyun 175*4882a593Smuzhiyun rm /etc/Powermanager -rf 176*4882a593Smuzhiyun service triggerhappy restart 177*4882a593Smuzhiyunfi 178*4882a593Smuzhiyun 179*4882a593Smuzhiyun# Create dummy video node for chromium V4L2 VDA/VEA with rkmpp plugin 180*4882a593Smuzhiyunecho dec > /dev/video-dec0 181*4882a593Smuzhiyunecho enc > /dev/video-enc0 182*4882a593Smuzhiyunchmod 660 /dev/video-* 183*4882a593Smuzhiyunchown root:video /dev/video-* 184*4882a593Smuzhiyun 185*4882a593Smuzhiyun# The chromium using fixed pathes for libv4l2.so 186*4882a593Smuzhiyunln -rsf /usr/lib/*/libv4l2.so /usr/lib/ 187*4882a593Smuzhiyun[ -e /usr/lib/aarch64-linux-gnu/ ] && ln -Tsf lib /usr/lib64 188*4882a593Smuzhiyun 189*4882a593Smuzhiyun# sync system time 190*4882a593Smuzhiyunhwclock --systohc 191*4882a593Smuzhiyun 192*4882a593Smuzhiyun# read mac-address from efuse 193*4882a593Smuzhiyun# if [ "$BOARDNAME" == "rk3288-miniarm" ]; then 194*4882a593Smuzhiyun# MAC=`xxd -s 16 -l 6 -g 1 /sys/bus/nvmem/devices/rockchip-efuse0/nvmem | awk '{print $2$3$4$5$6$7 }'` 195*4882a593Smuzhiyun# ifconfig eth0 hw ether $MAC 196*4882a593Smuzhiyun# fi 197