#
# Copyright (C) 2016 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.
#

# The modem image is mounted at /vendor/firmware_mnt
firmware_directories /vendor/firmware_mnt/image/

# the DIAG device node is not world writable/readable.
/dev/diag                 0660   system     diag

/dev/wlan                 0666   system     system
/dev/kgsl-3d0             0666   system     system
/dev/ion                  0664   system     system
/dev/rtc0                 0660   system     system
/dev/smd7                 0660   bluetooth  bluetooth
/dev/ipa                  0660   system     radio
/dev/wwan_ioctl           0660   system     radio
/dev/ipaNatTable          0660   system     radio
/dev/rmnet_ctrl           0660   usb        usb

#permissions for CSVT
/dev/smd11                0660   radio      radio

/dev/smdcntl8             0640   radio      radio
/dev/at_usb0              0640   radio      radio
/dev/at_mdm0              0640   radio      radio

/dev/video*               0660   system     camera
/dev/media*               0660   system     camera
/dev/v4l-subdev*          0660   system     camera

/dev/qseecom              0660   system     drmrpc
/dev/qsee_ipc_irq_spss    0660   system     drmrpc
/dev/seemplog             0660   system     system
/dev/spcom                0660   system     system

/dev/jpeg0                0660   system     camera
/dev/adsprpc-smd          0664   system     system
/dev/adsprpc-smd-secure   0644   system     system

/dev/sdsprpc-smd          0660   system     system

/dev/wcd-dsp-glink        0660   system     audio
/dev/wcd_dsp0_control     0660   system     audio
/dev/wcd-spi-ac-client    0660   system     audio

/dev/msm_qcelp            0660   system     audio
/dev/msm_evrc             0660   system     audio
/dev/msm_wma              0660   system     audio
/dev/msm_wmapro           0660   system     audio
/dev/msm_alac             0660   system     audio
/dev/msm_ape              0660   system     audio
/dev/msm_amrnb            0660   system     audio
/dev/msm_amrwb            0660   system     audio
/dev/msm_amrwbplus        0660   system     audio
/dev/msm_aac              0660   system     audio
/dev/msm_mp3*             0660   system     audio
/dev/msm_multi_aac        0660   system     audio
/dev/msm_aac_in           0660   system     audio
/dev/msm_qcelp_in         0660   system     audio
/dev/msm_evrc_in          0660   system     audio
/dev/msm_amrnb_in         0640   system     audio
/dev/msm_a2dp_in          0660   system     audio
/dev/msm_ac3              0660   system     audio
/dev/msm_cirrus_playback  0660   system     audio
/dev/msm_audio_cal        0660   system     audio
/dev/msm_hweffects        0660   system     audio
/dev/msm_rtac             0660   system     audio

/dev/i2c-5                0660   media      media
/dev/avtimer              0660   system     audio

/dev/uio0                 0660   system     system
/dev/uio1                 0660   system     system

# SSR devices
/dev/subsys_*             0640   system     system

# Ramdump devices
/dev/ramdump_*            0640   system     system

# BT
/dev/ttyMSM0              0600   bluetooth  bluetooth
/dev/ttyHS0               0660   bluetooth  net_bt
/dev/btpower              0660   bluetooth  net_bt

#nfc permissions
/dev/nq-nci               0660    nfc         nfc

#eSE device
/dev/pn81a                0660   secure_element secure_element

# Citadel
/dev/citadel0             0660    hsm         hsm

# fpc fingerprint
/sys/devices/platform/soc/soc:fp_fpc*        irq               0600  system system
/sys/devices/platform/soc/soc:fp_fpc*        wakeup_enable     0200  system system
/sys/devices/platform/soc/soc:fp_fpc*        hw_reset          0600  system system

# Easel
/dev/easelcomm-client     0666   cameraserver camera
/dev/mnh_sm               0666   cameraserver camera

# Storage: for factory reset protection feature
/dev/block/platform/soc/1d84000.ufshc/by-name/frp       0660   system     system

# fuel gauge history
/dev/maxfg_history        0644   system system

# Resume-on-Reboot
/dev/access-kregistry     0660   system system
