# 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

# 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

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

# 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
