Home | History | Annotate | Download | only in hammerhead
      1 #
      2 # Copyright 2013 The Android Open Source Project
      3 #
      4 # Licensed under the Apache License, Version 2.0 (the "License");
      5 # you may not use this file except in compliance with the License.
      6 # You may obtain a copy of the License at
      7 #
      8 #      http://www.apache.org/licenses/LICENSE-2.0
      9 #
     10 # Unless required by applicable law or agreed to in writing, software
     11 # distributed under the License is distributed on an "AS IS" BASIS,
     12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13 # See the License for the specific language governing permissions and
     14 # limitations under the License.
     15 #
     16 
     17 import init.hammerhead.usb.rc
     18 import init.hammerhead_svelte.rc
     19 import init.hammerhead.diag.rc
     20 import init.hammerhead_fp.rc
     21 
     22 on early-init
     23     mount debugfs debugfs /sys/kernel/debug
     24     chown system system /sys/kernel/debug/kgsl/proc
     25 
     26 on init
     27     # Set permissions for persist partition
     28     mkdir /persist 0771 system system
     29     mkdir /firmware 0771 system system
     30 
     31     # Support legacy paths
     32     symlink /sdcard /mnt/sdcard
     33     symlink /sdcard /storage/sdcard0
     34 
     35 on fs
     36     mount_all ./fstab.hammerhead
     37     restorecon_recursive /persist
     38 
     39 on early-boot
     40     # set RLIMIT_MEMLOCK to 64MB
     41     setrlimit 8 67108864 67108864
     42 
     43 on boot
     44     # Enable DEBUG_SUSPEND, DEBUG_EXIT_SUSPEND, and DEBUG_WAKEUP
     45     write /sys/module/wakelock/parameters/debug_mask 7
     46 
     47     # bluetooth
     48     chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/type
     49     chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/state
     50     chmod 0660 /sys/class/rfkill/rfkill0/state
     51 
     52     # bluetooth LPM
     53     chown bluetooth net_bt_stack /proc/bluetooth/sleep/lpm
     54     chown bluetooth net_bt_stack /proc/bluetooth/sleep/btwrite
     55 
     56     #bluetooth UART dev
     57     chown bluetooth net_bt_stack /sys/devices/platform/msm_serial_hs.0/clock
     58     chmod 0660 /sys/devices/platform/msm_serial_hs.0/clock
     59 
     60     #Create QMUX deamon socket area
     61     mkdir /dev/socket/qmux_radio 0770 radio radio
     62     chmod 2770 /dev/socket/qmux_radio
     63     mkdir /dev/socket/qmux_audio 0770 media audio
     64     chmod 2770 /dev/socket/qmux_audio
     65     mkdir /dev/socket/qmux_bluetooth 0770 bluetooth bluetooth
     66     chmod 2770 /dev/socket/qmux_bluetooth
     67     mkdir /dev/socket/qmux_gps 0770 gps gps
     68     chmod 2770 /dev/socket/qmux_gps
     69 
     70     # Camera Recording
     71     mkdir /dev/video
     72     symlink /dev/video32 /dev/video/venus_dec
     73     symlink /dev/video33 /dev/video/venus_enc
     74 
     75     # Allow QMUX daemon to assign port open wait time
     76     chown radio radio /sys/devices/virtual/hsicctl/hsicctl0/modem_wait
     77 
     78     #For bridgemgr daemon to inform the USB driver of the correct transport
     79     chown radio radio /sys/class/android_usb/f_rmnet_smd_sdio/transport
     80 
     81     # Assign TCP buffer thresholds to be ceiling value of technology maximums
     82     # Increased technology maximums should be reflected here.
     83     write /proc/sys/net/core/rmem_max  2097152
     84     write /proc/sys/net/core/wmem_max  2097152
     85 
     86     # create symlink for fb1 as HDMI
     87     symlink /dev/graphics/fb1 /dev/graphics/hdmi
     88 
     89     # setup permissions for fb1 related nodes
     90     chown system graphics /sys/class/graphics/fb1/hpd
     91     chown system graphics /sys/class/graphics/fb1/vendor_name
     92     chown system graphics /sys/class/graphics/fb1/product_description
     93     chmod 0664 /sys/devices/virtual/graphics/fb1/hpd
     94     chmod 0664 /sys/devices/virtual/graphics/fb1/vendor_name
     95     chmod 0664 /sys/devices/virtual/graphics/fb1/product_description
     96 
     97     # To allow interfaces to get v6 address when tethering is enabled
     98     write /proc/sys/net/ipv6/conf/rmnet0/accept_ra 2
     99     write /proc/sys/net/ipv6/conf/rmnet1/accept_ra 2
    100     write /proc/sys/net/ipv6/conf/rmnet2/accept_ra 2
    101     write /proc/sys/net/ipv6/conf/rmnet3/accept_ra 2
    102     write /proc/sys/net/ipv6/conf/rmnet4/accept_ra 2
    103     write /proc/sys/net/ipv6/conf/rmnet5/accept_ra 2
    104     write /proc/sys/net/ipv6/conf/rmnet6/accept_ra 2
    105     write /proc/sys/net/ipv6/conf/rmnet7/accept_ra 2
    106 
    107     # Subsytem Restart
    108     #adsp
    109     write /sys/bus/msm_subsys/devices/subsys0/restart_level "related"
    110     #modem
    111     write /sys/bus/msm_subsys/devices/subsys1/restart_level "related"
    112     #venus
    113     write /sys/bus/msm_subsys/devices/subsys2/restart_level "related"
    114 
    115     # leds
    116     chown system system /sys/class/leds/red/on_off_ms
    117     chown system system /sys/class/leds/green/on_off_ms
    118     chown system system /sys/class/leds/blue/on_off_ms
    119     chown system system /sys/class/leds/red/rgb_start
    120     chmod 664 /sys/class/leds/lcd-backlight/brightness
    121 
    122 on post-fs-data
    123     write /sys/kernel/boot_adsp/boot 1
    124 
    125     # Subsytem Ramdump collection
    126     mkdir /data/tombstones/ramdump 0777 system system
    127     write /sys/module/subsystem_restart/parameters/enable_ramdumps 1
    128 
    129     # NFC: create data/nfc for nv storage
    130     mkdir /data/nfc 0770 nfc nfc
    131     mkdir /data/nfc/param 0770 nfc nfc
    132 
    133     # wifi
    134     chown wifi system /persist/wifi
    135 
    136     #  bluetooth
    137     mkdir /data/misc/bluetooth 0770 bluetooth bluetooth
    138 
    139     # Create directory used by audio subsystem
    140     mkdir /data/misc/audio 0770 audio audio
    141 
    142     # Create directory used by sensor subsystem
    143     mkdir /data/system 0755 system system
    144     mkdir /data/system/sensors
    145     chmod 755 /data/system/sensors
    146 
    147     # AKM setting data
    148     mkdir /data/misc/sensors
    149     chmod 775 /data/misc/sensors
    150 
    151     # Sensor
    152     mkdir /persist/sensors
    153     chmod 775 /persist/sensors
    154     write /persist/sensors/sensors_settings 1
    155     chmod 660 /persist/sensors/sensors_settings
    156 
    157     # communicate with mpdecision and thermald
    158     mkdir /dev/socket/mpdecision 2770 root system
    159 
    160     # save rtc time offsets
    161     mkdir /data/system/time 0700 system system
    162 
    163     # Ecc_Handler qcril.db
    164     mkdir /data/misc/radio 0770 radio radio
    165     symlink /system/etc/qcril.db /data/misc/radio/qcril.db
    166 
    167     setprop vold.post_fs_data_done 1
    168 
    169     # Set the CPU Freq Sampling rates
    170     write /sys/module/msm_thermal/core_control/enabled 0
    171     write /sys/devices/system/cpu/cpu1/online 1
    172     write /sys/devices/system/cpu/cpu2/online 1
    173     write /sys/devices/system/cpu/cpu3/online 1
    174     write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "ondemand"
    175     write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor "ondemand"
    176     write /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor "ondemand"
    177     write /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor "ondemand"
    178     write /sys/devices/system/cpu/cpufreq/ondemand/up_threshold 90
    179     write /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate 50000
    180     write /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy 1
    181     write /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor 4
    182     write /sys/devices/system/cpu/cpufreq/ondemand/down_differential 10
    183     write /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_multi_core 70
    184     write /sys/devices/system/cpu/cpufreq/ondemand/down_differential_multi_core 3
    185     write /sys/devices/system/cpu/cpufreq/ondemand/optimal_freq 960000
    186     write /sys/devices/system/cpu/cpufreq/ondemand/sync_freq 960000
    187     write /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_any_cpu_load 80
    188     restorecon_recursive /sys/devices/system/cpu/cpufreq/ondemand
    189     write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 300000
    190     write /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq 300000
    191     write /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq 300000
    192     write /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq 300000
    193     write /sys/module/msm_thermal/core_control/enabled 1
    194     chown root.system /sys/devices/system/cpu/mfreq
    195     chmod 220 /sys/devices/system/cpu/mfreq
    196     chown root.system /sys/devices/system/cpu/cpu1/online
    197     chown root.system /sys/devices/system/cpu/cpu2/online
    198     chown root.system /sys/devices/system/cpu/cpu3/online
    199     chmod 664 /sys/devices/system/cpu/cpu1/online
    200     chmod 664 /sys/devices/system/cpu/cpu2/online
    201     chmod 664 /sys/devices/system/cpu/cpu3/online
    202     write /dev/cpuctl/apps/cpu.notify_on_migrate 1
    203 
    204 on charger
    205     # Booting modem
    206     wait /dev/block/platform/msm_sdcc.1/by-name/modem
    207     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
    208     wait /dev/block/platform/msm_sdcc.1/by-name/system
    209     mount ext4 /dev/block/platform/msm_sdcc.1/by-name/system /system ro barrier=1
    210     start rmt_storage
    211     start irsc_util
    212 
    213     # Enable Power modes and set the CPU Freq Sampling rates
    214     write /sys/module/lpm_resources/enable_low_power/l2 2
    215     write /sys/module/lpm_resources/enable_low_power/pxo 1
    216     write /sys/module/lpm_resources/enable_low_power/vdd_dig 1
    217     write /sys/module/lpm_resources/enable_low_power/vdd_mem 1
    218     write /sys/module/pm_8x60/modes/cpu0/power_collapse/suspend_enabled 1
    219     write /sys/module/pm_8x60/modes/cpu1/power_collapse/suspend_enabled 1
    220     write /sys/module/pm_8x60/modes/cpu2/power_collapse/suspend_enabled 1
    221     write /sys/module/pm_8x60/modes/cpu3/power_collapse/suspend_enabled 1
    222     write /sys/module/pm_8x60/modes/cpu0/power_collapse/idle_enabled 1
    223     write /sys/module/msm_thermal/core_control/enabled 0
    224     write /sys/devices/system/cpu/cpu1/online 1
    225     write /sys/devices/system/cpu/cpu2/online 1
    226     write /sys/devices/system/cpu/cpu3/online 1
    227     write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "powersave"
    228     write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor "powersave"
    229     write /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor "powersave"
    230     write /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor "powersave"
    231     write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 300000
    232     write /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq 300000
    233     write /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq 300000
    234     write /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq 300000
    235     write /sys/module/msm_thermal/core_control/enabled 1
    236     write /sys/devices/system/cpu/cpu1/online 0
    237     write /sys/devices/system/cpu/cpu2/online 0
    238     write /sys/devices/system/cpu/cpu3/online 0
    239     start mpdecision
    240 
    241 on property:init.svc.wpa_supplicant=stopped
    242     stop dhcpcd
    243 
    244 on property:sys.boot_completed=1
    245     # Enable Power modes
    246     write /sys/module/lpm_resources/enable_low_power/l2 2
    247     write /sys/module/lpm_resources/enable_low_power/pxo 1
    248     write /sys/module/lpm_resources/enable_low_power/vdd_dig 1
    249     write /sys/module/lpm_resources/enable_low_power/vdd_mem 1
    250     write /sys/module/pm_8x60/modes/cpu0/power_collapse/suspend_enabled 1
    251     write /sys/module/pm_8x60/modes/cpu1/power_collapse/suspend_enabled 1
    252     write /sys/module/pm_8x60/modes/cpu2/power_collapse/suspend_enabled 1
    253     write /sys/module/pm_8x60/modes/cpu3/power_collapse/suspend_enabled 1
    254     write /sys/module/pm_8x60/modes/cpu0/power_collapse/idle_enabled 1
    255     write /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/suspend_enabled 1
    256     write /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/suspend_enabled 1
    257     write /sys/module/pm_8x60/modes/cpu2/standalone_power_collapse/suspend_enabled 1
    258     write /sys/module/pm_8x60/modes/cpu3/standalone_power_collapse/suspend_enabled 1
    259     write /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/idle_enabled 1
    260     write /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/idle_enabled 1
    261     write /sys/module/pm_8x60/modes/cpu2/standalone_power_collapse/idle_enabled 1
    262     write /sys/module/pm_8x60/modes/cpu3/standalone_power_collapse/idle_enabled 1
    263     write /sys/module/pm_8x60/modes/cpu0/retention/idle_enabled 1
    264     write /sys/module/pm_8x60/modes/cpu1/retention/idle_enabled 1
    265     write /sys/module/pm_8x60/modes/cpu2/retention/idle_enabled 1
    266     write /sys/module/pm_8x60/modes/cpu3/retention/idle_enabled 1
    267     start mpdecision
    268 
    269     # enable slimport detection
    270     write /sys/module/slimport/parameters/enable_irq 1
    271 
    272     # enable logging of wake up reasons to kernel logs
    273     write /sys/module/msm_show_resume_irq/parameters/debug_mask 1
    274 
    275 on property:ro.debuggable=1
    276     start ssr_ramdump
    277 
    278 service rmt_storage /system/bin/rmt_storage
    279     class core
    280     user root
    281     group system
    282 
    283 service bridgemgrd /system/bin/bridgemgrd
    284     class main
    285     user radio
    286     group radio
    287 
    288 # QMUX must be in multiple groups to support external process connections
    289 service qmuxd /system/bin/qmuxd
    290     class main
    291     user radio
    292     group radio audio bluetooth gps
    293 
    294 service netmgrd /system/bin/netmgrd
    295     class main
    296     group radio
    297 
    298 # QCOM sensor
    299 service sensors /system/bin/sensors.qcom
    300     class main
    301     user root
    302     group root
    303 
    304 service irsc_util /system/bin/irsc_util "/etc/sec_config"
    305     class main
    306     user root
    307     oneshot
    308 
    309 service p2p_supplicant /system/bin/wpa_supplicant \
    310     -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
    311     -I/system/etc/wifi/wpa_supplicant_overlay.conf -N \
    312     -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \
    313     -I/system/etc/wifi/p2p_supplicant_overlay.conf \
    314     -puse_p2p_group_interface=1 -e/data/misc/wifi/entropy.bin \
    315     -g@android:wpa_wlan0
    316     #   we will start as root and wpa_supplicant will switch to user wifi
    317     #   after setting up the capabilities required for WEXT
    318     #   user wifi
    319     #   group wifi inet keystore
    320     class main
    321     socket wpa_wlan0 dgram 660 wifi wifi
    322     disabled
    323     oneshot
    324 
    325 service wpa_supplicant /system/bin/wpa_supplicant \
    326     -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
    327     -I/system/etc/wifi/wpa_supplicant_overlay.conf \
    328     -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0
    329     #   we will start as root and wpa_supplicant will switch to user wifi
    330     #   after setting up the capabilities required for WEXT
    331     #   user wifi
    332     #   group wifi inet keystore
    333     class main
    334     socket wpa_wlan0 dgram 660 wifi wifi
    335     disabled
    336     oneshot
    337 
    338 service dhcpcd_wlan0 /system/bin/dhcpcd -aABDKL
    339     class late_start
    340     disabled
    341     oneshot
    342 
    343 service dhcpcd_p2p /system/bin/dhcpcd -aABKL
    344     class late_start
    345     disabled
    346     oneshot
    347 
    348 service iprenew_wlan0 /system/bin/dhcpcd -n
    349     class late_start
    350     disabled
    351     oneshot
    352 
    353 service iprenew_p2p /system/bin/dhcpcd -n
    354     class late_start
    355     disabled
    356     oneshot
    357 
    358 service dhcpcd_eth0 /system/bin/dhcpcd -aABDKL
    359     class late_start
    360     disabled
    361     oneshot
    362 
    363 service iprenew_eth0 /system/bin/dhcpcd -n
    364     class late_start
    365     disabled
    366     oneshot
    367 
    368 service dhcpcd_bnep0 /system/bin/dhcpcd -BKLG
    369     disabled
    370     oneshot
    371 
    372 service dhcpcd_bnep1 /system/bin/dhcpcd -BKLG
    373     disabled
    374     oneshot
    375 
    376 service dhcpcd_bnep2 /system/bin/dhcpcd -BKLG
    377     disabled
    378     oneshot
    379 
    380 service dhcpcd_bnep3 /system/bin/dhcpcd -BKLG
    381     disabled
    382     oneshot
    383 
    384 service dhcpcd_bnep4 /system/bin/dhcpcd -BKLG
    385     disabled
    386     oneshot
    387 
    388 service dhcpcd_bt-pan /system/bin/dhcpcd -BKLG
    389     disabled
    390     oneshot
    391 
    392 service iprenew_bt-pan /system/bin/dhcpcd -n
    393     disabled
    394     oneshot
    395 
    396 service qseecomd /system/bin/qseecomd
    397     class core
    398     user root
    399     group root
    400 
    401 service charger /sbin/healthd -c
    402     class charger
    403     critical
    404     seclabel u:r:healthd:s0
    405 
    406 service qcamerasvr /system/bin/mm-qcamera-daemon
    407     class late_start
    408     user camera
    409     group camera system inet input
    410 
    411 service bdAddrLoader /system/bin/bdAddrLoader -f /persist/bluetooth/.bdaddr -h -x
    412     class main
    413     user bluetooth
    414     group system bluetooth
    415     oneshot
    416 
    417 # bugreport is triggered by holding down volume down, volume up and power
    418 service bugreport /system/bin/dumpstate -d -p -B \
    419         -o /data/data/com.android.shell/files/bugreports/bugreport
    420     class main
    421     disabled
    422     oneshot
    423     keycodes 114 115 116
    424 
    425 service mpdecision /system/bin/mpdecision --no_sleep --avg_comp
    426    class main
    427    user root
    428    group root system
    429    disabled
    430 
    431 service ssr_ramdump /system/bin/subsystem_ramdump -m -t emmc
    432     class main
    433     user root
    434     group root
    435     disabled
    436 
    437 service thermal-engine /system/bin/thermal-engine-hh
    438    class main
    439    user root
    440    group radio system
    441 
    442 service vss_init /vendor/bin/vss_init
    443     class late_start
    444     user root
    445     group root
    446     disabled
    447 
    448 service time_daemon /system/bin/time_daemon
    449     class late_start
    450     user root
    451     group root
    452