#
# Copyright (C) 2017 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 /vendor/etc/init/hw/init.${ro.boot.hardware.platform}.rc

on late-init && property:ro.boot.hardware.revision=DEV1.0
    setprop vendor.thermal.hw_mode "-evt"
    write /sys/devices/virtual/thermal/tz-by-name/quiet-therm-adc/mode enabled
    setprop vendor.thermal.config "thermal_info_config_evt.json"

on late-init && property:ro.boot.hardware.revision=DEV2.0
    setprop vendor.thermal.hw_mode "-evt"
    write /sys/devices/virtual/thermal/tz-by-name/quiet-therm-adc/mode enabled
    setprop vendor.thermal.config "thermal_info_config_evt.json"

on late-init && property:ro.boot.hardware.revision=PROTO1.0
    setprop vendor.thermal.hw_mode "-evt"
    write /sys/devices/virtual/thermal/tz-by-name/quiet-therm-adc/mode enabled
    setprop vendor.thermal.config "thermal_info_config_evt.json"

on late-init && property:ro.boot.hardware.revision=PROTO1.1
    setprop vendor.thermal.hw_mode "-evt"
    write /sys/devices/virtual/thermal/tz-by-name/quiet-therm-adc/mode enabled
    setprop vendor.thermal.config "thermal_info_config_evt.json"

on late-init && property:ro.boot.hardware.revision=EVT1.0
    setprop vendor.thermal.hw_mode "-evt"
    write /sys/devices/virtual/thermal/tz-by-name/quiet-therm-adc/mode enabled
    setprop vendor.thermal.config "thermal_info_config_evt.json"

on late-init && property:ro.boot.hardware.revision=EVT1.1
    setprop vendor.thermal.hw_mode "-evt"
    write /sys/devices/virtual/thermal/tz-by-name/quiet-therm-adc/mode enabled
    setprop vendor.thermal.config "thermal_info_config_evt.json"

on late-init && property:ro.boot.hardware.revision=EVT2.0
    setprop vendor.thermal.hw_mode "-evt"
    write /sys/devices/virtual/thermal/tz-by-name/quiet-therm-adc/mode enabled
    setprop vendor.thermal.config "thermal_info_config_evt.json"

on property:vendor.all.modules.ready=1
    chown system system /sys/devices/platform/soc/888000.i2c/i2c-2/2-0049/stm_fts_cmd

on property:sys.boot_completed=1
    # HardwareInfo needs to be able to read display info
    chmod 644 /sys/devices/platform/soc/soc:qcom,dsi-display@51/panel_info/panel0/serial_number
    chmod 644 /sys/devices/platform/soc/soc:qcom,dsi-display@51/panel_info/panel0/panel_vendor_name
