| #!/system/bin/sh |
| # Copyright (c) 2012-2013, The Linux Foundation. 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 The Linux Foundation 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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. |
| # |
| |
| export PATH=/system/bin |
| |
| # Set platform variables |
| if [ -f /sys/devices/soc0/hw_platform ]; then |
| soc_hwplatform=`cat /sys/devices/soc0/hw_platform` 2> /dev/null |
| else |
| soc_hwplatform=`cat /sys/devices/system/soc/soc0/hw_platform` 2> /dev/null |
| fi |
| if [ -f /sys/devices/soc0/soc_id ]; then |
| soc_hwid=`cat /sys/devices/soc0/soc_id` 2> /dev/null |
| else |
| soc_hwid=`cat /sys/devices/system/soc/soc0/id` 2> /dev/null |
| fi |
| if [ -f /sys/devices/soc0/platform_version ]; then |
| soc_hwver=`cat /sys/devices/soc0/platform_version` 2> /dev/null |
| else |
| soc_hwver=`cat /sys/devices/system/soc/soc0/platform_version` 2> /dev/null |
| fi |
| |
| log -t BOOT -p i "MSM target '$1', SoC '$soc_hwplatform', HwID '$soc_hwid', SoC ver '$soc_hwver'" |
| |
| case "$1" in |
| "msm7630_surf" | "msm7630_1x" | "msm7630_fusion") |
| case "$soc_hwplatform" in |
| "FFA" | "SVLTE_FFA") |
| # linking to surf_keypad_qwerty.kcm.bin instead of surf_keypad_numeric.kcm.bin so that |
| # the UI keyboard works fine. |
| ln -s /system/usr/keychars/surf_keypad_qwerty.kcm.bin /system/usr/keychars/surf_keypad.kcm.bin |
| ;; |
| "Fluid") |
| setprop ro.sf.lcd_density 240 |
| setprop qcom.bt.dev_power_class 2 |
| ;; |
| *) |
| ln -s /system/usr/keychars/surf_keypad_qwerty.kcm.bin /system/usr/keychars/surf_keypad.kcm.bin |
| ;; |
| esac |
| ;; |
| |
| "msm8660") |
| case "$soc_hwplatform" in |
| "Fluid") |
| setprop ro.sf.lcd_density 240 |
| ;; |
| "Dragon") |
| setprop ro.sound.alsa "WM8903" |
| ;; |
| esac |
| ;; |
| |
| "msm8960") |
| # lcd density is write-once. Hence the separate switch case |
| case "$soc_hwplatform" in |
| "Liquid") |
| if [ "$soc_hwver" == "196608" ]; then # version 0x30000 is 3D sku |
| setprop ro.sf.hwrotation 90 |
| fi |
| |
| setprop ro.sf.lcd_density 160 |
| ;; |
| "MTP") |
| setprop ro.sf.lcd_density 240 |
| ;; |
| *) |
| case "$soc_hwid" in |
| "109") |
| setprop ro.sf.lcd_density 160 |
| ;; |
| *) |
| setprop ro.sf.lcd_density 240 |
| ;; |
| esac |
| ;; |
| esac |
| |
| #Set up composition type based on the target |
| case "$soc_hwid" in |
| 87) |
| #8960 |
| setprop debug.composition.type dyn |
| ;; |
| 153|154|155|156|157|138) |
| #8064 V2 PRIME | 8930AB | 8630AB | 8230AB | 8030AB | 8960AB |
| setprop debug.composition.type c2d |
| ;; |
| *) |
| esac |
| ;; |
| |
| "msm8974") |
| case "$soc_hwplatform" in |
| "Liquid") |
| setprop ro.sf.lcd_density 160 |
| # Liquid do not have hardware navigation keys, so enable |
| # Android sw navigation bar |
| setprop ro.hw.nav_keys 0 |
| ;; |
| "Dragon") |
| setprop ro.sf.lcd_density 240 |
| ;; |
| *) |
| setprop ro.sf.lcd_density 320 |
| ;; |
| esac |
| ;; |
| |
| "msm8226") |
| case "$soc_hwplatform" in |
| *) |
| setprop ro.sf.lcd_density 320 |
| ;; |
| esac |
| ;; |
| |
| "msm8610" | "apq8084" | "mpq8092") |
| case "$soc_hwplatform" in |
| *) |
| setprop ro.sf.lcd_density 240 |
| ;; |
| esac |
| ;; |
| "apq8084") |
| case "$soc_hwplatform" in |
| "Liquid") |
| setprop ro.sf.lcd_density 320 |
| # Liquid do not have hardware navigation keys, so enable |
| # Android sw navigation bar |
| setprop ro.hw.nav_keys 0 |
| ;; |
| "SBC") |
| setprop ro.sf.lcd_density 200 |
| # SBC do not have hardware navigation keys, so enable |
| # Android sw navigation bar |
| setprop qemu.hw.mainkeys 0 |
| ;; |
| *) |
| setprop ro.sf.lcd_density 480 |
| ;; |
| esac |
| ;; |
| esac |
| |
| # Setup HDMI related nodes & permissions |
| # HDMI can be fb1 or fb2 |
| # Loop through the sysfs nodes and determine |
| # the HDMI(dtv panel) |
| for fb_cnt in 0 1 2 |
| do |
| file=/sys/class/graphics/fb$fb_cnt |
| dev_file=/dev/graphics/fb$fb_cnt |
| if [ -d "$file" ] |
| then |
| value=`cat $file/msm_fb_type` |
| case "$value" in |
| "dtv panel") |
| chown -h system.graphics $file/hpd |
| chown -h system.system $file/hdcp/tp |
| chown -h system.graphics $file/vendor_name |
| chown -h system.graphics $file/product_description |
| chmod -h 0664 $file/hpd |
| chmod -h 0664 $file/hdcp/tp |
| chmod -h 0664 $file/vendor_name |
| chmod -h 0664 $file/product_description |
| chmod -h 0664 $file/video_mode |
| chmod -h 0664 $file/format_3d |
| # create symbolic link |
| ln -s $dev_file /dev/graphics/hdmi |
| # Change owner and group for media server and surface flinger |
| chown -h system.system $file/format_3d;; |
| esac |
| fi |
| done |