forked from CyanogenMod/android_device_oppo_find5
-
Notifications
You must be signed in to change notification settings - Fork 1
/
init.qcom.modem_links.sh
182 lines (158 loc) · 5.6 KB
/
init.qcom.modem_links.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
#!/system/bin/sh
# Copyright (c) 2011-2012, Code Aurora Forum. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials provided
# with the distribution.
# * Neither the name of Code Aurora Forum, Inc. nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#
# No path is set up at this point so we have to do it here.
PATH=/sbin:/system/sbin:/system/bin:/system/xbin
export PATH
# Check for images and set up symlinks
cd /firmware/image
# Get the list of files in /firmware/image
# for which sym links have to be created
fwfiles=`ls modem* q6* wcnss* dsps* tzapps* gss*`
modem_fwfiles=`ls modem_fw.mdt`
# Check if the links with similar names
# have been created in /system/etc/firmware
cd /system/etc/firmware
linksNeeded=0
fixModemFirmware=0
# For everyfile in fwfiles check if
# the corresponding file exists
for fwfile in $fwfiles; do
# if (condition) does not seem to work
# with the android shell. Therefore
# make do with case statements instead.
# if a file named $fwfile is present
# no need to create links. If the file
# with the name $fwfile is not present
# need to create links.
case `ls $fwfile` in
$fwfile)
continue;;
*)
# file with $fwfile does not exist
# need to create links
linksNeeded=1
break;;
esac
done
case `ls $modem_fwfiles` in
$modem_fwfiles)
break;;
*)
# file with $fwfile does not exist
# need to rename the right set of firmware based on chip version
fixModemFirmware=1
break;;
esac
case $linksNeeded in
1)
cd /firmware/image
# Check if need to select modem firmware and do rename in first boot
case $fixModemFirmware in
1)
# Check chip version
case `cat /sys/devices/system/soc/soc0/version 2>/dev/null` in
"1.0" | "1.1")
for file in modem_f1.* ; do
newname=modem_fw.${file##*.}
ln -s /firmware/image/$file /system/etc/firmware/$newname 2>/dev/null
done
break;;
*)
for file in modem_f2.* ; do
newname=modem_fw.${file##*.}
ln -s /firmware/image/$file /system/etc/firmware/$newname 2>/dev/null
done
esac;;
*)
# Nothing to do.
break;;
esac
case `ls modem.mdt 2>/dev/null` in
modem.mdt)
for imgfile in modem*; do
ln -s /firmware/image/$imgfile /system/etc/firmware/$imgfile 2>/dev/null
done
break;;
*)
# trying to log here but nothing will be logged since it is
# early in the boot process. Is there a way to log this message?
log -p w -t PIL 8960 device but no modem image found;;
esac
case `ls q6.mdt 2>/dev/null` in
q6.mdt)
for imgfile in q6*; do
ln -s /firmware/image/$imgfile /system/etc/firmware/$imgfile 2>/dev/null
done
break;;
*)
log -p w -t PIL 8960 device but no q6 image found;;
esac
case `ls wcnss.mdt 2>/dev/null` in
wcnss.mdt)
for imgfile in wcnss*; do
ln -s /firmware/image/$imgfile /system/etc/firmware/$imgfile 2>/dev/null
done
break;;
*)
log -p w -t PIL 8960 device but no wcnss image found;;
esac
case `ls dsps.mdt 2>/dev/null` in
dsps.mdt)
for imgfile in dsps*; do
ln -s /firmware/image/$imgfile /system/etc/firmware/$imgfile 2>/dev/null
done
break;;
*)
log -p w -t PIL 8960 device but no dsps image found;;
esac
case `ls tzapps.mdt 2>/dev/null` in
tzapps.mdt)
for imgfile in tzapps*; do
ln -s /firmware/image/$imgfile /system/etc/firmware/$imgfile 2>/dev/null
done
break;;
*)
log -p w -t PIL 8960 device but no tzapps image found;;
esac
case `ls gss.mdt 2>/dev/null` in
gss.mdt)
for imgfile in gss*; do
ln -s /firmware/image/$imgfile /system/etc/firmware/$imgfile 2>/dev/null
done
break;;
*)
log -p w -t No gss image found;;
esac
break;;
*)
# Nothing to do. No links needed
break;;
esac
cd /