xref: /OK3568_Linux_fs/debian/overlay/etc/init.d/rockchip.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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