普通文本  |  452行  |  15.62 KB

#
# Copyright 2013 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

import init.hammerhead.usb.rc
import init.hammerhead_svelte.rc
import init.hammerhead.diag.rc
import init.hammerhead_fp.rc

on early-init
    mount debugfs debugfs /sys/kernel/debug
    chown system system /sys/kernel/debug/kgsl/proc

on init
    # Set permissions for persist partition
    mkdir /persist 0771 system system
    mkdir /firmware 0771 system system

    # Support legacy paths
    symlink /sdcard /mnt/sdcard
    symlink /sdcard /storage/sdcard0

on fs
    mount_all ./fstab.hammerhead
    restorecon_recursive /persist

on early-boot
    # set RLIMIT_MEMLOCK to 64MB
    setrlimit 8 67108864 67108864

on boot
    # Enable DEBUG_SUSPEND, DEBUG_EXIT_SUSPEND, and DEBUG_WAKEUP
    write /sys/module/wakelock/parameters/debug_mask 7

    # bluetooth
    chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/type
    chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/state
    chmod 0660 /sys/class/rfkill/rfkill0/state

    # bluetooth LPM
    chown bluetooth net_bt_stack /proc/bluetooth/sleep/lpm
    chown bluetooth net_bt_stack /proc/bluetooth/sleep/btwrite

    #bluetooth UART dev
    chown bluetooth net_bt_stack /sys/devices/platform/msm_serial_hs.0/clock
    chmod 0660 /sys/devices/platform/msm_serial_hs.0/clock

    #Create QMUX deamon socket area
    mkdir /dev/socket/qmux_radio 0770 radio radio
    chmod 2770 /dev/socket/qmux_radio
    mkdir /dev/socket/qmux_audio 0770 media audio
    chmod 2770 /dev/socket/qmux_audio
    mkdir /dev/socket/qmux_bluetooth 0770 bluetooth bluetooth
    chmod 2770 /dev/socket/qmux_bluetooth
    mkdir /dev/socket/qmux_gps 0770 gps gps
    chmod 2770 /dev/socket/qmux_gps

    # Camera Recording
    mkdir /dev/video
    symlink /dev/video32 /dev/video/venus_dec
    symlink /dev/video33 /dev/video/venus_enc

    # Allow QMUX daemon to assign port open wait time
    chown radio radio /sys/devices/virtual/hsicctl/hsicctl0/modem_wait

    #For bridgemgr daemon to inform the USB driver of the correct transport
    chown radio radio /sys/class/android_usb/f_rmnet_smd_sdio/transport

    # Assign TCP buffer thresholds to be ceiling value of technology maximums
    # Increased technology maximums should be reflected here.
    write /proc/sys/net/core/rmem_max  2097152
    write /proc/sys/net/core/wmem_max  2097152

    # create symlink for fb1 as HDMI
    symlink /dev/graphics/fb1 /dev/graphics/hdmi

    # setup permissions for fb1 related nodes
    chown system graphics /sys/class/graphics/fb1/hpd
    chown system graphics /sys/class/graphics/fb1/vendor_name
    chown system graphics /sys/class/graphics/fb1/product_description
    chmod 0664 /sys/devices/virtual/graphics/fb1/hpd
    chmod 0664 /sys/devices/virtual/graphics/fb1/vendor_name
    chmod 0664 /sys/devices/virtual/graphics/fb1/product_description

    # To allow interfaces to get v6 address when tethering is enabled
    write /proc/sys/net/ipv6/conf/rmnet0/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet1/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet2/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet3/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet4/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet5/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet6/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet7/accept_ra 2

    # Subsytem Restart
    #adsp
    write /sys/bus/msm_subsys/devices/subsys0/restart_level "related"
    #modem
    write /sys/bus/msm_subsys/devices/subsys1/restart_level "related"
    #venus
    write /sys/bus/msm_subsys/devices/subsys2/restart_level "related"

    # leds
    chown system system /sys/class/leds/red/on_off_ms
    chown system system /sys/class/leds/green/on_off_ms
    chown system system /sys/class/leds/blue/on_off_ms
    chown system system /sys/class/leds/red/rgb_start
    chmod 664 /sys/class/leds/lcd-backlight/brightness

on post-fs-data
    write /sys/kernel/boot_adsp/boot 1

    # Subsytem Ramdump collection
    mkdir /data/tombstones/ramdump 0777 system system
    write /sys/module/subsystem_restart/parameters/enable_ramdumps 1

    # NFC: create data/nfc for nv storage
    mkdir /data/nfc 0770 nfc nfc
    mkdir /data/nfc/param 0770 nfc nfc

    # wifi
    chown wifi system /persist/wifi

    #  bluetooth
    mkdir /data/misc/bluetooth 0770 bluetooth bluetooth

    # Create directory used by audio subsystem
    mkdir /data/misc/audio 0770 audio audio

    # Create directory used by sensor subsystem
    mkdir /data/system 0755 system system
    mkdir /data/system/sensors
    chmod 755 /data/system/sensors

    # AKM setting data
    mkdir /data/misc/sensors
    chmod 775 /data/misc/sensors

    # Sensor
    mkdir /persist/sensors
    chmod 775 /persist/sensors
    write /persist/sensors/sensors_settings 1
    chmod 660 /persist/sensors/sensors_settings

    # communicate with mpdecision and thermald
    mkdir /dev/socket/mpdecision 2770 root system

    # save rtc time offsets
    mkdir /data/system/time 0700 system system

    # Ecc_Handler qcril.db
    mkdir /data/misc/radio 0770 radio radio
    symlink /system/etc/qcril.db /data/misc/radio/qcril.db

    setprop vold.post_fs_data_done 1

    # Set the CPU Freq Sampling rates
    write /sys/module/msm_thermal/core_control/enabled 0
    write /sys/devices/system/cpu/cpu1/online 1
    write /sys/devices/system/cpu/cpu2/online 1
    write /sys/devices/system/cpu/cpu3/online 1
    write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "ondemand"
    write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor "ondemand"
    write /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor "ondemand"
    write /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor "ondemand"
    write /sys/devices/system/cpu/cpufreq/ondemand/up_threshold 90
    write /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate 50000
    write /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy 1
    write /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor 4
    write /sys/devices/system/cpu/cpufreq/ondemand/down_differential 10
    write /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_multi_core 70
    write /sys/devices/system/cpu/cpufreq/ondemand/down_differential_multi_core 3
    write /sys/devices/system/cpu/cpufreq/ondemand/optimal_freq 960000
    write /sys/devices/system/cpu/cpufreq/ondemand/sync_freq 960000
    write /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_any_cpu_load 80
    restorecon_recursive /sys/devices/system/cpu/cpufreq/ondemand
    write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 300000
    write /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq 300000
    write /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq 300000
    write /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq 300000
    write /sys/module/msm_thermal/core_control/enabled 1
    chown root.system /sys/devices/system/cpu/mfreq
    chmod 220 /sys/devices/system/cpu/mfreq
    chown root.system /sys/devices/system/cpu/cpu1/online
    chown root.system /sys/devices/system/cpu/cpu2/online
    chown root.system /sys/devices/system/cpu/cpu3/online
    chmod 664 /sys/devices/system/cpu/cpu1/online
    chmod 664 /sys/devices/system/cpu/cpu2/online
    chmod 664 /sys/devices/system/cpu/cpu3/online
    write /dev/cpuctl/apps/cpu.notify_on_migrate 1

on charger
    # Booting modem
    wait /dev/block/platform/msm_sdcc.1/by-name/modem
    mount vfat /dev/block/platform/msm_sdcc.1/by-name/modem /firmware ro shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0
    wait /dev/block/platform/msm_sdcc.1/by-name/system
    mount ext4 /dev/block/platform/msm_sdcc.1/by-name/system /system ro barrier=1
    start rmt_storage
    start irsc_util

    # Enable Power modes and set the CPU Freq Sampling rates
    write /sys/module/lpm_resources/enable_low_power/l2 2
    write /sys/module/lpm_resources/enable_low_power/pxo 1
    write /sys/module/lpm_resources/enable_low_power/vdd_dig 1
    write /sys/module/lpm_resources/enable_low_power/vdd_mem 1
    write /sys/module/pm_8x60/modes/cpu0/power_collapse/suspend_enabled 1
    write /sys/module/pm_8x60/modes/cpu1/power_collapse/suspend_enabled 1
    write /sys/module/pm_8x60/modes/cpu2/power_collapse/suspend_enabled 1
    write /sys/module/pm_8x60/modes/cpu3/power_collapse/suspend_enabled 1
    write /sys/module/pm_8x60/modes/cpu0/power_collapse/idle_enabled 1
    write /sys/module/msm_thermal/core_control/enabled 0
    write /sys/devices/system/cpu/cpu1/online 1
    write /sys/devices/system/cpu/cpu2/online 1
    write /sys/devices/system/cpu/cpu3/online 1
    write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "powersave"
    write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor "powersave"
    write /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor "powersave"
    write /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor "powersave"
    write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 300000
    write /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq 300000
    write /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq 300000
    write /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq 300000
    write /sys/module/msm_thermal/core_control/enabled 1
    write /sys/devices/system/cpu/cpu1/online 0
    write /sys/devices/system/cpu/cpu2/online 0
    write /sys/devices/system/cpu/cpu3/online 0
    start mpdecision

on property:init.svc.wpa_supplicant=stopped
    stop dhcpcd

on property:sys.boot_completed=1
    # Enable Power modes
    write /sys/module/lpm_resources/enable_low_power/l2 2
    write /sys/module/lpm_resources/enable_low_power/pxo 1
    write /sys/module/lpm_resources/enable_low_power/vdd_dig 1
    write /sys/module/lpm_resources/enable_low_power/vdd_mem 1
    write /sys/module/pm_8x60/modes/cpu0/power_collapse/suspend_enabled 1
    write /sys/module/pm_8x60/modes/cpu1/power_collapse/suspend_enabled 1
    write /sys/module/pm_8x60/modes/cpu2/power_collapse/suspend_enabled 1
    write /sys/module/pm_8x60/modes/cpu3/power_collapse/suspend_enabled 1
    write /sys/module/pm_8x60/modes/cpu0/power_collapse/idle_enabled 1
    write /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/suspend_enabled 1
    write /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/suspend_enabled 1
    write /sys/module/pm_8x60/modes/cpu2/standalone_power_collapse/suspend_enabled 1
    write /sys/module/pm_8x60/modes/cpu3/standalone_power_collapse/suspend_enabled 1
    write /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/idle_enabled 1
    write /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/idle_enabled 1
    write /sys/module/pm_8x60/modes/cpu2/standalone_power_collapse/idle_enabled 1
    write /sys/module/pm_8x60/modes/cpu3/standalone_power_collapse/idle_enabled 1
    write /sys/module/pm_8x60/modes/cpu0/retention/idle_enabled 1
    write /sys/module/pm_8x60/modes/cpu1/retention/idle_enabled 1
    write /sys/module/pm_8x60/modes/cpu2/retention/idle_enabled 1
    write /sys/module/pm_8x60/modes/cpu3/retention/idle_enabled 1
    start mpdecision

    # enable slimport detection
    write /sys/module/slimport/parameters/enable_irq 1

    # enable logging of wake up reasons to kernel logs
    write /sys/module/msm_show_resume_irq/parameters/debug_mask 1

on property:ro.debuggable=1
    start ssr_ramdump

service rmt_storage /system/bin/rmt_storage
    class core
    user root
    group system

service bridgemgrd /system/bin/bridgemgrd
    class main
    user radio
    group radio

# QMUX must be in multiple groups to support external process connections
service qmuxd /system/bin/qmuxd
    class main
    user radio
    group radio audio bluetooth gps

service netmgrd /system/bin/netmgrd
    class main
    group radio

# QCOM sensor
service sensors /system/bin/sensors.qcom
    class main
    user root
    group root

service irsc_util /system/bin/irsc_util "/etc/sec_config"
    class main
    user root
    oneshot

service p2p_supplicant /system/bin/wpa_supplicant \
    -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
    -I/system/etc/wifi/wpa_supplicant_overlay.conf -N \
    -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \
    -I/system/etc/wifi/p2p_supplicant_overlay.conf \
    -puse_p2p_group_interface=1 -e/data/misc/wifi/entropy.bin \
    -g@android:wpa_wlan0
    #   we will start as root and wpa_supplicant will switch to user wifi
    #   after setting up the capabilities required for WEXT
    #   user wifi
    #   group wifi inet keystore
    class main
    socket wpa_wlan0 dgram 660 wifi wifi
    disabled
    oneshot

service wpa_supplicant /system/bin/wpa_supplicant \
    -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
    -I/system/etc/wifi/wpa_supplicant_overlay.conf \
    -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0
    #   we will start as root and wpa_supplicant will switch to user wifi
    #   after setting up the capabilities required for WEXT
    #   user wifi
    #   group wifi inet keystore
    class main
    socket wpa_wlan0 dgram 660 wifi wifi
    disabled
    oneshot

service dhcpcd_wlan0 /system/bin/dhcpcd -aABDKL
    class late_start
    disabled
    oneshot

service dhcpcd_p2p /system/bin/dhcpcd -aABKL
    class late_start
    disabled
    oneshot

service iprenew_wlan0 /system/bin/dhcpcd -n
    class late_start
    disabled
    oneshot

service iprenew_p2p /system/bin/dhcpcd -n
    class late_start
    disabled
    oneshot

service dhcpcd_eth0 /system/bin/dhcpcd -aABDKL
    class late_start
    disabled
    oneshot

service iprenew_eth0 /system/bin/dhcpcd -n
    class late_start
    disabled
    oneshot

service dhcpcd_bnep0 /system/bin/dhcpcd -BKLG
    disabled
    oneshot

service dhcpcd_bnep1 /system/bin/dhcpcd -BKLG
    disabled
    oneshot

service dhcpcd_bnep2 /system/bin/dhcpcd -BKLG
    disabled
    oneshot

service dhcpcd_bnep3 /system/bin/dhcpcd -BKLG
    disabled
    oneshot

service dhcpcd_bnep4 /system/bin/dhcpcd -BKLG
    disabled
    oneshot

service dhcpcd_bt-pan /system/bin/dhcpcd -BKLG
    disabled
    oneshot

service iprenew_bt-pan /system/bin/dhcpcd -n
    disabled
    oneshot

service qseecomd /system/bin/qseecomd
    class core
    user root
    group root

service charger /sbin/healthd -c
    class charger
    critical
    seclabel u:r:healthd:s0

service qcamerasvr /system/bin/mm-qcamera-daemon
    class late_start
    user camera
    group camera system inet input

service bdAddrLoader /system/bin/bdAddrLoader -f /persist/bluetooth/.bdaddr -h -x
    class main
    user bluetooth
    group system bluetooth
    oneshot

# bugreport is triggered by holding down volume down, volume up and power
service bugreport /system/bin/dumpstate -d -p -B \
        -o /data/data/com.android.shell/files/bugreports/bugreport
    class main
    disabled
    oneshot
    keycodes 114 115 116

service mpdecision /system/bin/mpdecision --no_sleep --avg_comp
   class main
   user root
   group root system
   disabled

service ssr_ramdump /system/bin/subsystem_ramdump -m -t emmc
    class main
    user root
    group root
    disabled

service thermal-engine /system/bin/thermal-engine-hh
   class main
   user root
   group radio system

service vss_init /vendor/bin/vss_init
    class late_start
    user root
    group root
    disabled

service time_daemon /system/bin/time_daemon
    class late_start
    user root
    group root