X-Git-Url: http://git.osdn.net/view?p=android-x86%2Fdevice-generic-common.git;a=blobdiff_plain;f=init.sh;h=3e5ae244f1ba29a55a49a93bb875c63f5cb732bf;hp=3e02a24e2e121e9e597bc8abdadc7528aa3b9a18;hb=7a6799a85946971f09e48a53d4384afe1775448e;hpb=1ecb56d4d06aef03eafc74051c04526fbfa40d9d diff --git a/init.sh b/init.sh index 3e02a24..3e5ae24 100644 --- a/init.sh +++ b/init.sh @@ -1,13 +1,25 @@ # -# Copyright (C) 2013-2015 The Android-x86 Open Source Project +# Copyright (C) 2013-2018 The Android-x86 Open Source Project # # License: GNU Public License v2 or later # function set_property() { - # this must be run before post-fs stage - echo $1=$2 >> /x86.prop + setprop "$1" "$2" + [ -n "$DEBUG" ] && echo "$1"="$2" >> /dev/x86.prop +} + +function set_prop_if_empty() +{ + [ -z "$(getprop $1)" ] && set_property "$1" "$2" +} + +function rmmod_if_exist() +{ + for m in $*; do + [ -d /sys/module/$m ] && rmmod $m + done } function init_misc() @@ -21,6 +33,31 @@ function init_misc() # in case no cpu governor driver autoloads [ -d /sys/devices/system/cpu/cpu0/cpufreq ] || modprobe acpi-cpufreq + + # enable sdcardfs if /data is not mounted on tmpfs or 9p + mount | grep /data\ | grep -qE 'tmpfs|9p' + [ $? -ne 0 ] && modprobe sdcardfs + + # remove wl if it's not used + local wifi + if [ -d /sys/class/net/wlan0 ]; then + wifi=$(basename `readlink /sys/class/net/wlan0/device/driver`) + [ "$wifi" != "wl" ] && rmmod_if_exist wl + fi + + # enable virt_wifi if needed + local eth=`getprop net.virt_wifi eth0` + if [ -d /sys/class/net/$eth -a "$VIRT_WIFI" != "0" ]; then + if [ -n "$wifi" -a "$VIRT_WIFI" = "1" ]; then + rmmod_if_exist iwlmvm $wifi + fi + if [ ! -d /sys/class/net/wlan0 ]; then + ifconfig $eth down + ip link set $eth name wifi_eth + ifconfig wifi_eth up + ip link add link wifi_eth name wlan0 type virt_wifi + fi + fi } function init_hal_audio() @@ -32,6 +69,10 @@ function init_hal_audio() *) ;; esac + + if grep -qi "IntelHDMI" /proc/asound/card0/id; then + [ -d /proc/asound/card1 ] || set_property ro.hardware.audio.primary hdmi + fi } function init_hal_bluetooth() @@ -42,33 +83,62 @@ function init_hal_bluetooth() done case "$PRODUCT" in - T10*TA|HP*Omni*) + T100TAF) + set_property bluetooth.interface hci1 + ;; + T10*TA|M80TA|HP*Omni*) BTUART_PORT=/dev/ttyS1 + set_property hal.bluetooth.uart.proto bcm ;; MacBookPro8*) rmmod b43 modprobe b43 btcoex=0 modprobe btusb ;; + # FIXME + # Fix MacBook 2013-2015 (Air6/7&Pro11/12) BCM4360 ssb&wl conflict. + MacBookPro11* | MacBookPro12* | MacBookAir6* | MacBookAir7*) + rmmod b43 + rmmod ssb + rmmod bcma + rmmod wl + modprobe wl + modprobe btusb + ;; *) - for bt in $(lsusb -v | awk ' /Class:.E0/ { print $9 } '); do + for bt in $(busybox lsusb -v | awk ' /Class:.E0/ { print $9 } '); do chown 1002.1002 $bt && chmod 660 $bt done - modprobe btusb ;; esac if [ -n "$BTUART_PORT" ]; then set_property hal.bluetooth.uart $BTUART_PORT chown bluetooth.bluetooth $BTUART_PORT - btattach -P bcm -B $BTUART_PORT & - log -t hciconfig -p i "`hciconfig`" + start btattach + fi + + # rtl8723bs bluetooth + if dmesg -t | grep -qE '8723bs.*BT'; then + TTYSTRING=`dmesg -t | grep -E 'tty.*MMIO' | awk '{print $2}' | head -1` + if [ -n "$TTYSTRING" ]; then + echo "RTL8723BS BT uses $TTYSTRING for Bluetooth." + ln -sf $TTYSTRING /dev/rtk_h5 + start rtk_hciattach + fi fi } function init_hal_camera() { - [ -c /dev/video0 ] || modprobe vivi + case "$PRODUCT" in + e-tab*Pro) + set_prop_if_empty hal.camera.0 0,270 + set_prop_if_empty hal.camera.2 1,90 + ;; + *) + ;; + esac } function init_hal_gps() @@ -84,6 +154,7 @@ function set_drm_mode() drm_mode=1366x768 ;; *) + [ -n "$video" ] && drm_mode=$video ;; esac @@ -92,36 +163,35 @@ function set_drm_mode() function init_uvesafb() { + UVESA_MODE=${UVESA_MODE:-${video%@*}} + case "$PRODUCT" in - *Q550) - UVESA_MODE=${UVESA_MODE:-1280x800} - ;; ET2002*) UVESA_MODE=${UVESA_MODE:-1600x900} ;; - T91*) - UVESA_MODE=${UVESA_MODE:-1024x600} - ;; - VirtualBox*|Bochs*) - UVESA_MODE=${UVESA_MODE:-1024x768} - ;; *) ;; esac - [ "$HWACCEL" = "0" ] && bpp=16 || bpp=32 - modprobe uvesafb mode_option=${UVESA_MODE:-800x600}-$bpp ${UVESA_OPTION:-mtrr=3 scroll=redraw} + modprobe uvesafb mode_option=${UVESA_MODE:-1024x768}-32 ${UVESA_OPTION:-mtrr=3 scroll=redraw} } function init_hal_gralloc() { case "$(cat /proc/fb | head -1)" in *virtiodrmfb) - set_property ro.hardware.hwcomposer drm - ;& - 0*inteldrmfb|0*radeondrmfb|0*nouveaufb|0*svgadrmfb) - set_property ro.hardware.gralloc drm - set_drm_mode + if [ "$HWACCEL" != "0" ]; then + set_property ro.hardware.hwcomposer drm + set_property ro.hardware.gralloc gbm + set_property debug.drm.mode.force ${video:-1280x800} + fi + set_prop_if_empty sleep.state none + ;; + 0*inteldrmfb|0*radeondrmfb|0*nouveaufb|0*svgadrmfb|0*amdgpudrmfb) + if [ "$HWACCEL" != "0" ]; then + set_property ro.hardware.gralloc drm + set_drm_mode + fi ;; "") init_uvesafb @@ -152,6 +222,12 @@ function init_hal_power() # TODO case "$PRODUCT" in + HP*Omni*|OEMB|Surface*3|T10*TA) + set_prop_if_empty sleep.state none + ;; + e-tab*Pro) + set_prop_if_empty sleep.state force + ;; *) ;; esac @@ -159,7 +235,12 @@ function init_hal_power() function init_hal_sensors() { + # if we have sensor module for our hardware, use it + ro_hardware=$(getprop ro.hardware) + [ -f /system/lib/hw/sensors.${ro_hardware}.so ] && return 0 + local hal_sensors=kbd + local has_sensors=true case "$(cat $DMIPATH/uevent)" in *Lucid-MWE*) set_property ro.ignore_atkbd 1 @@ -211,24 +292,54 @@ function init_hal_sensors() ;; *Aspire1*25*) modprobe lis3lv02d_i2c - hal_sensors=hdaps echo -n "enabled" > /sys/class/thermal/thermal_zone0/mode ;; *ThinkPad*Tablet*) modprobe hdaps hal_sensors=hdaps ;; + *LINX1010B*) + set_property ro.iio.accel.z.opt_scale -1 + ;& + *i7Stylus*|*M80TA*) + set_property ro.iio.accel.x.opt_scale -1 + ;; + *LenovoMIIX320*|*ONDATablet*) + set_property ro.iio.accel.order 102 + set_property ro.iio.accel.x.opt_scale -1 + set_property ro.iio.accel.y.opt_scale -1 + ;; + *SP111-33*) + set_property ro.iio.accel.quirks no-trig + ;& + *ST70416-6*) + set_property ro.iio.accel.order 102 + ;; + *e-tabPro*|*pnEZpad*) + set_property ro.iio.accel.quirks no-trig + ;& + *T*0*TA*) + set_property ro.iio.accel.y.opt_scale -1 + ;; *) + has_sensors=false ;; esac # has iio sensor-hub? if [ -n "`ls /sys/bus/iio/devices/iio:device* 2> /dev/null`" ]; then busybox chown -R 1000.1000 /sys/bus/iio/devices/iio:device*/ - lsmod | grep -q hid_sensor_accel_3d && hal_sensors=hsb || hal_sensors=iio + [ -n "`ls /sys/bus/iio/devices/iio:device*/in_accel_x_raw 2> /dev/null`" ] && has_sensors=true + hal_sensors=iio + elif lsmod | grep -q lis3lv02d_i2c; then + hal_sensors=hdaps + has_sensors=true + elif [ "$hal_sensors" != "kbd" ]; then + has_sensors=true fi set_property ro.hardware.sensors $hal_sensors + set_property config.override_forced_orient ${HAS_SENSORS:-$has_sensors} } function create_pointercal() @@ -274,8 +385,10 @@ function init_ril() *TEGA*|*2010:svnIntel:*|*Lucid-MWE*) set_property rild.libpath /system/lib/libhuaweigeneric-ril.so set_property rild.libargs "-d /dev/ttyUSB2 -v /dev/ttyUSB1" + set_property ro.radio.noril no ;; *) + set_property ro.radio.noril yes ;; esac } @@ -305,7 +418,6 @@ function do_init() init_hal_sensors init_tscal init_ril - chmod 640 /x86.prop post_init } @@ -316,14 +428,13 @@ function do_netconsole() function do_bootcomplete() { + hciconfig | grep -q hci || pm disable com.android.bluetooth + init_cpu_governor [ -z "$(getprop persist.sys.root_access)" ] && setprop persist.sys.root_access 3 - # FIXME: autosleep works better on i965? - [ "$(getprop debug.mesa.driver)" = "i965" ] && setprop debug.autosleep 1 - - lsmod | grep -e brcmfmac && setprop wlan.no-unload-driver 1 + lsmod | grep -Ehq "brcmfmac|rtl8723be" && setprop wlan.no-unload-driver 1 case "$PRODUCT" in 1866???|1867???|1869???) # ThinkPad X41 Tablet @@ -357,6 +468,12 @@ function do_bootcomplete() setkeycodes 0x66 172 setkeycodes 0x6b 127 ;; + Surface*Go) + echo on > /sys/devices/pci0000:00/0000:00:15.1/i2c_designware.1/power/control + ;; + X80*Power) + set_property power.nonboot-cpu-off 1 + ;; *) ;; esac @@ -373,24 +490,17 @@ function do_bootcomplete() alsa_amixer -c $c set Headphone on alsa_amixer -c $c set Headphone 100% alsa_amixer -c $c set Speaker 100% - alsa_amixer -c $c set Capture 100% + alsa_amixer -c $c set Capture 80% alsa_amixer -c $c set Capture cap alsa_amixer -c $c set PCM 100 unmute alsa_amixer -c $c set SPO unmute - alsa_amixer -c $c set 'Mic Boost' 3 - alsa_amixer -c $c set 'Internal Mic Boost' 3 + alsa_amixer -c $c set IEC958 on + alsa_amixer -c $c set 'Mic Boost' 1 + alsa_amixer -c $c set 'Internal Mic Boost' 1 fi done -} -function do_hci() -{ - local hci=`hciconfig | grep ^hci | cut -d: -f1` - local btd="`getprop init.svc.bluetoothd`" - log -t bluetoothd -p i "$btd ($hci)" - if [ -n "`getprop hal.bluetooth.uart`" ]; then - [ "`getprop init.svc.bluetoothd`" = "running" ] && hciconfig $hci up - fi + post_bootcomplete } PATH=/sbin:/system/bin:/system/xbin @@ -402,18 +512,17 @@ PRODUCT=$(cat $DMIPATH/product_name) # import cmdline variables for c in `cat /proc/cmdline`; do case $c in - androidboot.hardware=*) + BOOT_IMAGE=*|iso-scan/*|*.*=*) ;; *=*) eval $c - case $c in - HWACCEL=*) - set_property debug.egl.hw $HWACCEL - ;; - DEBUG=*) - set_property debug.logcat 1 - ;; - esac + if [ -z "$1" ]; then + case $c in + DEBUG=*) + [ -n "$DEBUG" ] && set_property debug.logcat 1 + ;; + esac + fi ;; esac done @@ -431,9 +540,6 @@ case "$1" in bootcomplete) do_bootcomplete ;; - hci) - do_hci - ;; init|"") do_init ;;