# Copyright (c) 2019, The Linux Foundation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above
#       copyright notice, this list of conditions and the following
#       disclaimer in the documentation and/or other materials provided
#       with the distribution.
#     * Neither the name of The Linux Foundation nor the names of its
#       contributors may be used to endorse or promote products derived
#       from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
# ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# property for uicc_daemon
type vendor_qcom_ims_prop, property_type;
type vendor_ctl_vendor_qmuxd_prop, property_type;
type vendor_ctl_vendor_netmgrd_prop, property_type;
type vendor_ctl_vendor_port-bridge_prop, property_type;
type vendor_ctl_qcrild_prop, property_type;
type vendor_tee_listener_prop, property_type;
type vendor_ctl_vendor_rild_prop, property_type;

# property for LKCore ctl start
type vendor_ctl_LKCore_prop, property_type;

type vendor_freq_prop, property_type;
type vendor_vm_bms_prop, property_type; #To start vm_bms
type vendor_vm_bms_debug_prop, property_type;
type vendor_dataqti_prop, property_type;
type vendor_dataadpl_prop, property_type;
type vendor_dataqdp_prop, property_type;
type vendor_ipacm_prop, property_type;
type vendor_ipacm-diag_prop, property_type;
type vendor_cnd_vendor_prop, property_type;
type vendor_sensors_prop, property_type;
type vendor_slpi_prop, property_type;
type vendor_msm_irqbalance_prop, property_type;
type vendor_msm_irqbl_sdm630_prop, property_type;
type camera_prop, property_type;
type vendor_spcomlib_prop, property_type;
type vendor_display_prop, property_type;
type vendor_scr_enabled_prop, property_type;
type vendor_bg_daemon_prop, property_type;
type vendor_bg_boot_complete_prop, property_type;
type vendor_opengles_prop, property_type;
type vendor_mdm_helper_prop, property_type;
type vendor_mpctl_prop, property_type;
type vendor_iop_prop, property_type;
type vendor_public_vendor_default_prop, property_type;
#Scroll Pre-obtain
type vendor_scroll_prop, property_type;

# properties for ActivityManager tuning
type vendor_am_prop, property_type;

#Needed for  ubwc support
type vendor_gralloc_prop, property_type;

type vendor_fm_prop, property_type;
type chgdiabled_prop, property_type;

vendor_restricted_prop(vendor_xlat_prop);

# property for location
type vendor_location_prop, property_type;

#properites for init.qcom.sh script
type vendor_usb_prop, property_type;

type vendor_coresight_prop, property_type;


type vendor_alarm_boot_prop, property_type;


type vendor_wifi_ftmd_prop, property_type;

type vendor_wifi_version, property_type;

type vendor_wifi_config_prop, property_type;

# WIGIG
type vendor_wigig_prop, property_type;
type vendor_ctl_vendor_wigigsvc_prop, property_type;

#HWUI property
type vendor_hwui_prop, property_type;

type vendor_graphics_vulkan_prop, property_type;

#cgroup follow
type vendor_cgroup_follow_prop, property_type;

#Bservice property
type vendor_bservice_prop, property_type;

#Delayed Service Reschedule property
type vendor_reschedule_service_prop, property_type;

#boot mode property
type vendor_boot_mode_prop, property_type;
#properties for nfc
type vendor_nfc_nq_prop, property_type;

type vendor_rild_libpath_prop, property_type;

#Peripheral manager
type vendor_per_mgr_state_prop, property_type;

type vendor_system_prop, property_type;

# Bluetooth props
type vendor_bluetooth_prop, property_type;

# HBTP
type vendor_ctl_vendor_hbtp_prop, property_type;

# factory properties
type vendor_ctl_vendor_mmid_prop, property_type;

#qcc property
#type vendor_qdma_prop, property_type;
vendor_public_prop(vendor_qcc_prop);

#imsrcsservice
type vendor_ctl_vendor_imsrcsservice_prop, property_type;

#mmi
type vendor_mmi_prop, property_type;

#time service
type vendor_time_service_prop, property_type;
type vendor_radio_prop, property_type;

# Audio props
type vendor_audio_prop, property_type;

# Audio debug props
type vendor_audio_debug_prop, property_type;

#ss-restart
type vendor_ssr_prop, property_type;

#ss-services (PD)
type vendor_pd_locater_dbg_prop, property_type;

#qdcmss property
type vendor_qdcmss_prop, property_type;

# Wifi Softap
type vendor_softap_prop, property_type;

#mm-video
type vendor_video_prop, property_type;

#rmt_storage
type vendor_ctl_vendor_rmt_storage_prop, property_type;

type vendor_gpu_prop, property_type;

type vendor_data_ko_prop, property_type;

#shsusrd props
type vendor_data_shsusr_prop, property_type;
type vendor_data_qmipriod_prop, property_type;

#hvdcp_opti
type vendor_hvdcp_opti_prop, property_type;
#adsprpc props
type vendor_adsprpc_prop, property_type;

#qvr property
type vendor_qvr_prop, property_type;

#capabilityconfigstore hal (CCHAL)
type vendor_cap_configstore_dbg_prop, property_type;

vendor_internal_prop(vendor_dcvs_prop)
