# Oriole specific init.rc
import /vendor/etc/init/hw/init.gs101.rc
import /vendor/etc/init/hw/init.raviole.rc

on init
    # logbuffer
    chown system system /dev/logbuffer_5-0057
    # nvmem dump
    chown system system /sys/bus/nvmem/devices/4-00500/nvmem

on init && property:ro.boot.vh_sched_available=0
    setprop vendor.powerhal.config powerhint-mainline.json

# Toggle glove_mode according to touch_sensitivity_mode
on property:persist.vendor.touch_sensitivity_mode=0 && property:sys.boot_completed=1
    write /sys/class/spi_master/spi11/spi11.0/glove_mode 00

on property:persist.vendor.touch_sensitivity_mode=1 && property:sys.boot_completed=1
    write /sys/class/spi_master/spi11/spi11.0/glove_mode 01

# Thermal
on late-init && property:ro.boot.hardware.revision=PROTO1.0
    setprop vendor.thermal.config "thermal_info_config_WHI_A.json"

on late-init && property:ro.boot.hardware.revision=PROTO1.1
    setprop vendor.disable.usb.overheat.mitigation.control 1

on late-init && property:ro.boot.hardware.revision=EVT1.0
    setprop vendor.disable.usb.overheat.mitigation.control 1

# For Japan sku, always enforce camera shutter sound
# Since this property is read by the audio server in system service,
# it should be written by the system init.
on property:ro.boot.hardware.sku=GR1YH
    setprop audio.camerasound.force true
