diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S530/init.d/S25_Net b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S530/init.d/S25_Net index 5e3c4b730..9bb180826 100755 --- a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S530/init.d/S25_Net +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S530/init.d/S25_Net @@ -2,11 +2,24 @@ NETWORK_SETUP_SCRIPT="/etc/init.d/net_init.sh" +SF_BOOT_MODE=1 + +kernel_cmdline=$(cat /proc/cmdline) + +SF_HUNTING_BOOT_MODE=`dmesg | grep -o 'Mode=[0-9]*' | cut -d'=' -f2` + +echo SF_HUNTING_BOOT_MODE=${SF_HUNTING_BOOT_MODE} + do_wifi_init() { if [ "$NVT_SDIO_WIFI" == "NVT_SDIO_WIFI_RTK" ]; then #/etc/init.d/BS_Net_wifiap8189ftv - echo "Configuring BS_Net_wifiap8189ftv sf stop" + if [ "${SF_BOOT_MODE}" = "${SF_HUNTING_BOOT_MODE}" ]; then + echo "Configuring BS_Net_wifiap8189ftv sf start" + /etc/init.d/BS_Net_wifiap8189ftv + else + echo "Configuring BS_Net_wifiap8189ftv sf stop" + fi elif [ "$NVT_SDIO_WIFI" == "NVT_SDIO_WIFI_BRCM" ]; then modprobe bcmdhd # TBD diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/hostap.sh b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/hostap.sh new file mode 100755 index 000000000..eeb41f656 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/hostap.sh @@ -0,0 +1,304 @@ +#!/bin/sh +# +# History: +# 2013/06/24 - [Tao Wu] Create file +# 2016/06/22 - [Tao Wu] Update file +# +# Copyright (c) 2015 Ambarella International LP +# +# This file and its contents ("Software") are protected by intellectual +# property rights including, without limitation, U.S. and/or foreign +# copyrights. This Software is also the confidential and proprietary +# information of Ambarella International LP and its licensors. You may not use, reproduce, +# disclose, distribute, modify, or otherwise prepare derivative works of this +# Software or any portion thereof except pursuant to a signed license agreement +# or nondisclosure agreement with Ambarella International LP or its authorized affiliates. +# In the absence of such an agreement, you agree to promptly notify and return +# this Software to Ambarella International LP. +# +# This file includes sample code and is only for internal testing and evaluation. If you +# distribute this sample code (whether in source, object, or binary code form), it will be +# without any warranty or indemnity protection from Ambarella International LP or its affiliates. +# +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, +# MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL AMBARELLA INTERNATIONAL LP OR ITS AFFILIATES 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; COMPUTER FAILURE OR MALFUNCTION; 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. +# + +HOSTAP_VERSION="1.1.2" + +encryption=$1 +ssid=$2 +passwd=$3 +channel=$4 + +DEVICE=$5 +DIR_CONFIG=/tmp/config + +############# HOSTAP CONFIG ############### +WOWLAN=1 +HOSTAP_CTRL_INTERFACE=/var/run/hostapd +HOST_CONFIG=$DIR_CONFIG/hostapd.conf +DEFAULT_CHANNEL=1 +HOST_MAX_STA=1 +AP_PIN=12345670 +DRIVER=nl80211 + +wpa_group_rekey=120 +############# DHCP Server ############### +LOCAL_IP=192.168.1.1 +LOCAL_NETMASK=255.255.255.0 +DHCP_IP_START=192.168.1.20 +DHCP_IP_END=192.168.1.100 + +############# Exit Error Number ############### +ERRNO_OK=0 +ERRNO_PARAM=1 +ERRNO_ENV=2 +#ERRNO_SSID_NOT_FOUND=3 +#ERRNO_PASSWORD_WRONG=4 + +##################################### +usages() +{ + echo "Version: ${HOSTAP_VERSION}" + echo "This script used to Setup/Stop WiFi AP mode with hostapd" + echo "usage: $0 [open|wpa3|wpa2|wpa|wpawpa2|wps] " + echo "" + echo "Example:" + echo "Setup AP[Open]: $0 open 0 " + echo "Setup AP[Encrypt]: $0 [wpa3|wpa2|wpa|wpawpa2] " + echo "Setup AP[WPA2+WPS]:$0 wps " + echo " [Control AP] # hostapd_cli -i [wps_pbc | wps_pin any ] (PIN:${AP_PIN})" + echo "Stop AP mode: $0 stop" + echo "" + echo "NOTICE: Using interface AP[${DEVICE}] by default, change it if necessary." + + exit $ERRNO_OK +} + +# kill process +kill_apps() +{ + #the max times to kill app + local KILL_NUM_MAX=10 + + for app in "$@" + do + local kill_num=0 + while [ "$(pgrep "${app}")" != "" ] + do + if [ $kill_num -ge $KILL_NUM_MAX ]; then + echo "Please try execute \"killall ${app}\" by yourself" + exit $ERRNO_ENV + else + killall -9 "${app}" + sleep 1 + fi + kill_num=$((kill_num + 1)); + done + done +} + +stop_wifi_app() +{ + kill_apps udhcpc dnsmasq NetworkManager hostapd_cli hostapd + ifconfig ${DEVICE} down +} + +################ AP Mode ##################### +check_encrypt() +{ + if [ "${encryption}" != "open" ]; then + len=${#passwd} + if [ "$len" -lt 8 ]; then + echo "Password length at least 8" + exit 1 + fi + fi +} + +check_channel() +{ + if [ ${#channel} -gt 0 ]; then + if [ "${channel}" -gt 196 ] || [ "${channel}" -lt 1 ]; then + echo "Your Channel is wrong(1 ~ 196), using Channel ${DEFAULT_CHANNEL} by default." + channel=$DEFAULT_CHANNEL + fi + else + echo "No specified channel, using default channel ${DEFAULT_CHANNEL}." + channel=$DEFAULT_CHANNEL + fi +} + +generate_hostapd_conf() +{ + if [ -f ${HOST_CONFIG} ]; then + ## Use the saved config, Do not need generate new config except failed to connect. + return ; + fi + mkdir -p $DIR_CONFIG + + check_encrypt + check_channel + echo "AP: SSID[${ssid}], Password[${passwd}], Encryption[${encryption}], Channel[${channel}]." + + echo "interface=${DEVICE}" > ${HOST_CONFIG} + echo "ctrl_interface=${HOSTAP_CTRL_INTERFACE}" >> ${HOST_CONFIG} + echo "driver=${DRIVER}" >> ${HOST_CONFIG} + echo "ctrl_interface_group=0" >> ${HOST_CONFIG} + echo "ignore_broadcast_ssid=0" >> ${HOST_CONFIG} + echo "auth_algs=1" >> ${HOST_CONFIG} +# echo "country_code=CN" >> ${HOST_CONFIG} + + ## This for WiFi suspend/resume + #if [ $WOWLAN -eq 1 ]; then + #echo "wowlan_triggers=any" >> ${HOST_CONFIG} + #fi + + { + echo "beacon_int=100" + echo "dtim_period=1" + echo "preamble=0" + echo "ssid=${ssid}" + echo "max_num_sta=${HOST_MAX_STA}" + } >> ${HOST_CONFIG} + + if [ ${channel} -gt 14 ]; then + echo "hw_mode=a" >> ${HOST_CONFIG} + fi + echo "channel=${channel}" >> ${HOST_CONFIG} + + if [ "${encryption}" != "open" ]; then + local len_passwd=${#passwd} + local local_passwd_value="" + + if [ "$len_passwd" -eq 64 ]; then + echo "passphrase length is 64, using hex type" + local_passwd_value="${passwd}" + elif [ "$len_passwd" -ge 8 ] && [ "$len_passwd" -le 63 ]; then + local_passwd_value="${passwd}" + else + echo "Invalid passphrase length ${len_passwd} (expected: 8..63 or 64 hex)" + rm -rf ${HOST_CONFIG} + exit $ERRNO_PARAM + fi + fi + + case ${encryption} in + open) + ;; + wpa3) + echo "wpa=2" >> ${HOST_CONFIG} + echo "wpa_key_mgmt=SAE" >> ${HOST_CONFIG} + echo "rsn_pairwise=CCMP" >> ${HOST_CONFIG} + echo "wpa_passphrase=${local_passwd_value}" >> ${HOST_CONFIG} + echo "ieee80211w=2" >> ${HOST_CONFIG} +# echo "sae_password=${local_passwd_value}" >> ${HOST_CONFIG} + ;; + wpa2) + echo "wpa=2" >> ${HOST_CONFIG} + echo "wpa_key_mgmt=WPA-PSK" >> ${HOST_CONFIG} + echo "wpa_pairwise=CCMP" >> ${HOST_CONFIG} + echo "wpa_passphrase=${local_passwd_value}" >> ${HOST_CONFIG} + ;; + wpa) + echo "wpa=1" >> ${HOST_CONFIG} + echo "wpa_key_mgmt=WPA-PSK" >> ${HOST_CONFIG} + echo "wpa_pairwise=TKIP" >> ${HOST_CONFIG} + echo "wpa_passphrase=${local_passwd_value}" >> ${HOST_CONFIG} + ;; + wpawpa2) + echo "wpa=2" >> ${HOST_CONFIG} + echo "wpa_key_mgmt=WPA-PSK" >> ${HOST_CONFIG} + echo "wpa_pairwise=CCMP" >> ${HOST_CONFIG} + echo "wpa_passphrase=${local_passwd_value}" >> ${HOST_CONFIG} + ;; + wps) + echo "wpa=2" >> ${HOST_CONFIG} + echo "wpa_key_mgmt=WPA-PSK" >> ${HOST_CONFIG} + echo "wpa_pairwise=CCMP" >> ${HOST_CONFIG} + echo "wpa_passphrase=${local_passwd_value}" >> ${HOST_CONFIG} + + echo "wps_state=2" >> ${HOST_CONFIG} + echo "eap_server=1" >> ${HOST_CONFIG} + echo "ap_pin=${AP_PIN}" >> ${HOST_CONFIG} + echo "config_methods=label display push_button keypad ethernet" >> ${HOST_CONFIG} + echo "wps_pin_requests=/var/run/hostapd.pin-req" >> ${HOST_CONFIG} + ;; + *) + echo "Not support encryption [$encryption]" + exit $ERRNO_PARAM + ;; + esac + + #echo "wpa_group_rekey=$wpa_group_rekey" >> ${HOST_CONFIG} + #echo "ignore_broadcast_ssid=0" >> ${HOST_CONFIG} + #echo "ap_setup_locked=0" >> ${HOST_CONFIG} + echo "hw_mode=g" >> ${HOST_CONFIG} + echo "ieee80211n=1">>${HOST_CONFIG} +} + +start_dhcp_server() +{ +## Start DHCP Server ## + #mkdir -p /var/lib/misc + #mkdir -p /etc/dnsmasq.d + #dnsmasq -i${DEVICE} --no-daemon --no-resolv --no-poll --dhcp-range=${DHCP_IP_START},${DHCP_IP_END},1h & + udhcpd /appfs/etc/udhcpd.conf & +} + +hostapd_start_ap() +{ + ## Setup interface and set IP,gateway## + echo "Using Interface AP:[${DEVICE}]" + ifconfig ${DEVICE} ${LOCAL_IP} up + route add default netmask ${LOCAL_NETMASK} gw ${LOCAL_IP} + ## Start Hostapd ## + CMD="hostapd ${HOST_CONFIG} -e /appfs/etc/bpi/entropy.bin -B" + echo "CMD=${CMD}" + $CMD + + #start_dhcp_server + echo "HostAP Setup Finished." +} + +clear_config() +{ + rm -rf ${HOST_CONFIG} +} + +################ Main ################### + +## Show usage when no parameter +if [ $# -eq 0 ]; then + usages +fi + +## Start WiFi +if [ $# -gt 1 ]; then + clear_config +fi + +case ${encryption} in + "stop") + stop_wifi_app + ;; + open|wpa3|wpa2|wpa|wpawpa2|wps) + generate_hostapd_conf + hostapd_start_ap + ;; + *) + echo "Please Select Encryption [open|wpa3|wpa2|wpa|wpawpa2|wps] or stop" + exit $ERRNO_PARAM + ;; +esac +######################################## diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/dpc_table.bin b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/dpc_table.bin new file mode 100755 index 000000000..267a7e198 Binary files /dev/null and b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/dpc_table.bin differ diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/ecs_table.bin b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/ecs_table.bin new file mode 100755 index 000000000..71c253124 Binary files /dev/null and b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/ecs_table.bin differ diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/ecs_table_ir.bin b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/ecs_table_ir.bin new file mode 100755 index 000000000..67721c997 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/ecs_table_ir.bin @@ -0,0 +1 @@ +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ \ No newline at end of file diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/isp_gc4653_0.cfg b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/isp_gc4653_0.cfg new file mode 100755 index 000000000..e48ef90ee --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/isp_gc4653_0.cfg @@ -0,0 +1,2389 @@ +[INFO] +# NVT9856x ISP Config +sensor=gc4653 +isp_version=0x01000000 +ae_version=0x01000100 +awb_version=0x01000000 +iq_version=0x01000300 +tool_version=0x01000400 + +[NVT_AE] +expect_lum_mov=47 +expect_lum_photo=64 +expect_ratio_mov=73,74,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 +expect_ratio_photo=100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 +la_clamp_tab_normal_h=255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255 +la_clamp_tab_normal_l=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +la_clamp_tab_shdr_h=125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125 +la_clamp_tab_shdr_l=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +over_exp_enable=1 +over_exp_lum=140 +over_exp_speed=3 +over_exp_ratio=100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 +over_exp_thr_mov=6,6,8,9,10,11,11,11,12,13,14,15,16,16,16,16,16,16,16,16,16 +over_exp_thr_photo=2,2,3,3,3,3,4,5,6,7,8,9,10,10,10,10,10,10,10,10,10 +over_exp_maxcnt=4,4,4,4,4,4,4,4,5,7,10,10,10,10,10,10,10,10,10,10,10 +over_exp_mincnt=2,2,2,2,2,2,2,2,2,4,7,7,7,7,7,7,7,7,7,7,7 +conv_skip_frame=1 +conv_speed=128 +conv_range_conv=10,10 +conv_freeze_en=0 +conv_freeze_cyc=10 +conv_freeze_thr=100 +conv_slowshoot_en=1 +conv_slowshoot_range=30 +conv_slowshoot_thr=2 +conv_stable_counter=0 +curvegen_movie_iso_calcoef=500 +curvegen_movie_freq=0 +curvegen_movie_node0=44,100,0,0 +curvegen_movie_node1=40000,100,0,0 +curvegen_movie_node2=40000,6400,0,0 +curvegen_movie_node3=80000,6400,0,0 +curvegen_movie_node4=80000,12800,0,0 +curvegen_movie_node5=80000,6400,0,0 +curvegen_movie_node6=20000,200,0,0 +curvegen_movie_node7=20000,200,0,0 +curvegen_movie_node8=20000,200,0,0 +curvegen_movie_node9=20000,200,0,0 +curvegen_movie_node10=20000,200,0,0 +curvegen_movie_node11=20000,200,0,0 +curvegen_movie_node_num=5 +curvegen_movie_iso_max=12800 +curvegen_movie_hdr_ratio=1,16 +curvegen_movie_auto_lowlight_en=0 +curvegen_movie_extend_fps0=3000,1250 +curvegen_movie_extend_fps1=2400,1250 +curvegen_movie_extend_fps2=2000,2000 +curvegen_movie_extend_fps3=1500,1500 +curvegen_movie_extend_fps4=1200,1200 +curvegen_movie_iso_mode=0 +curvegen_movie_isp_gain_thres=60662 +curvegen_movie_flicker_mode=0 +win_weight0=1,1,1,1,1,1,1,1 +win_weight1=1,2,2,2,2,2,2,1 +win_weight2=1,2,3,3,3,3,2,1 +win_weight3=1,2,3,4,4,3,2,1 +win_weight4=1,2,3,4,4,3,2,1 +win_weight5=1,2,3,3,3,3,2,1 +win_weight6=1,2,2,2,2,2,2,1 +win_weight7=1,1,1,1,1,1,1,1 +lum_gamma=0,52,101,146,189,228,266,301,334,365,395,423,449,474,498,521,543,564,584,603,621,638,655,671,687,701,716,729,743,755,768,780,791,802,813,823,833,843,853,862,871,879,888,896,904,911,919,926,933,940,947,953,960,966,972,978,983,989,995,1000,1005,1010,1015,1020,1023 +shdr_expy_le=64 +shdr_tab_ratio_le=100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 +iris_en=0 +iris_min_exp=0 +iris_probe_balance=0 +iris_balance_ratio=110 +iris_driving_ratio=0 +iris_ctrl=3,2,2 +iris_pwm_id=-1 +iris_drv_max=200 +iris_freeze_time=500 +iris_unfreeze_time=1000 +iris_ctrl_dir_inv=0 +curvegen_photo_node0=1,100,0,0 +curvegen_photo_node1=33333,800,0,0 +curvegen_photo_node2=66666,1600,0,0 +curvegen_photo_node3=100000,3200,0,0 +curvegen_photo_node4=0,0,0,0 +curvegen_photo_node5=0,0,0,0 +curvegen_photo_node6=0,0,0,0 +curvegen_photo_node7=0,0,0,0 +curvegen_photo_node8=0,0,0,0 +curvegen_photo_node9=0,0,0,0 +curvegen_photo_node10=0,0,0,0 +curvegen_photo_node11=0,0,0,0 +curvegen_photo_node_num=4 +curvegen_photo_expt_max=66666 +curvegen_photo_iso_max=6400 +curvegen_photo_iso_mode=1 +curvegen_photo_isp_gain_thres=99200 +[NVT_AWB] +th_y=5,245 +th_rpb=60,250 +th_rsb=-50,129 +th_r2g=40,162 +th_b2g=20,88 +th_rmb=20,41 +lv_night=1,4 +lv_in=6,10 +lv_out=14,26 +ct_weight_ctmp=2300,2800,3700,4700,6500,11000 +ct_weight_cx=788,842,914,983,1064,1138 +ct_weight_out=1,1,1,1,1,1 +ct_weight_in=1,1,1,1,1,1 +ct_weight_night=1,1,1,1,1,1 +target_cx=842,983,1064 +target_rg_ratio=1024,1024,1024 +target_bg_ratio=1024,1024,1024 +ct_info_temperature=2300,2800,3700,4700,6500,11000 +ct_info_r_gain=256,294,387,475,549,708 +ct_info_g_gain=256,256,256,256,256,256 +ct_info_b_gain=1024,847,755,611,436,363 +mwb_r_gain=256,480,480,249,285,256,256,256,256,256,256,256 +mwb_g_gain=256,256,256,256,256,256,256,256,256,256,256,256 +mwb_b_gain=256,377,320,839,806,256,256,256,256,256,256,256 +conv_skip_frame=4 +conv_speed=50 +conv_tolerance=259 +expand_block_mode=0,0,0,0 +expand_block_lv_l=10,6,6,6 +expand_block_lv_h=16,10,10,10 +expand_block_y_l=5,5,5,5 +expand_block_y_u=245,245,245,245 +expand_block_rpb_l=105,105,91,114 +expand_block_rpb_u=120,122,105,128 +expand_block_rsb_l=5,56,18,32 +expand_block_rsb_u=25,74,32,-53 +luma_weight_enable=0 +luma_weight_y=4,8,20,32,192,208,224,240 +luma_weight_w=1,1,1,1,1,1,1,1 +[OB] +mode=0 +[OB_M] +cofs=256,256,256,256,256 +[OB_0] +cofs=256,256,256,256,256 +[OB_1] +cofs=256,256,256,256,256 +[OB_2] +cofs=256,256,256,256,256 +[OB_3] +cofs=256,256,256,256,256 +[OB_4] +cofs=256,256,256,256,256 +[OB_5] +cofs=256,256,256,256,256 +[OB_6] +cofs=256,256,256,256,256 +[OB_7] +cofs=256,256,256,256,256 +[OB_8] +cofs=256,256,256,256,256 +[OB_9] +cofs=256,256,256,256,256 +[OB_10] +cofs=256,256,256,256,256 +[OB_11] +cofs=256,256,256,256,256 +[OB_12] +cofs=256,256,256,256,256 +[OB_13] +cofs=256,256,256,256,256 +[OB_14] +cofs=256,256,256,256,256 +[OB_15] +cofs=256,256,256,256,256 +[NR] +outl_enable=1 +gbal_enable=1 +filter_enable=1 +lca_enable=1 +dbcs_enable=1 +mode=0 +[NR_M] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=4095,4095,4095,4095,4095 +outl_dark_th=4095,4095,4095,4095,4095 +gbal_diff_th_str=256 +gbal_edge_protect_th=128 +filter_th=0,0,0,0,0,0 +filter_lut=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +filter_th_b=0,0,0,0,0,0 +filter_lut_b=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=0 +lca_sub_center_filter_c=0 +lca_sub_filter_y=0 +lca_sub_filter_c=0 +lca_out_y_wt=0 +lca_out_c_wt=0 +dbcs_step_y=2 +dbcs_step_c=2 +[NR_0] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=0 +gbal_edge_protect_th=128 +filter_th=0,0,1,1,1,2 +filter_lut=0,2,2,3,4,4,4,5,5,6,6,6,6,7,7,7,8 +filter_th_b=0,2,3,4,5,7 +filter_lut_b=0,2,2,3,4,4,4,5,5,6,6,6,6,7,7,7,8 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=64 +lca_sub_center_filter_y=8 +lca_sub_center_filter_c=8 +lca_sub_filter_y=8 +lca_sub_filter_c=8 +lca_out_y_wt=0 +lca_out_c_wt=0 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_1] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=0 +gbal_edge_protect_th=128 +filter_th=0,0,1,1,1,2 +filter_lut=0,3,5,6,7,8,8,9,10,10,11,11,12,12,13,13,14 +filter_th_b=0,2,3,4,5,7 +filter_lut_b=0,2,2,1,1,1,1,2,2,2,2,2,2,2,2,3,3 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=64 +lca_sub_center_filter_y=8 +lca_sub_center_filter_c=8 +lca_sub_filter_y=8 +lca_sub_filter_c=8 +lca_out_y_wt=0 +lca_out_c_wt=4 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_2] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=0 +gbal_edge_protect_th=128 +filter_th=0,0,1,1,1,2 +filter_lut=0,3,5,6,7,8,8,9,10,10,11,11,12,12,13,13,14 +filter_th_b=0,3,6,9,9,12 +filter_lut_b=0,1,2,2,3,3,3,4,4,4,5,5,5,5,5,6,6 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=64 +lca_sub_center_filter_y=8 +lca_sub_center_filter_c=16 +lca_sub_filter_y=8 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=12 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_3] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=0 +gbal_edge_protect_th=128 +filter_th=0,1,1,2,2,3 +filter_lut=0,5,7,9,10,11,12,13,14,15,16,17,18,18,19,20,20 +filter_th_b=0,3,6,9,9,12 +filter_lut_b=0,1,2,2,3,3,3,4,4,4,5,5,5,5,5,6,6 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=64 +lca_sub_center_filter_y=8 +lca_sub_center_filter_c=16 +lca_sub_filter_y=8 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=12 +dbcs_step_y=1 +dbcs_step_c=0 +[NR_4] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=0 +gbal_edge_protect_th=128 +filter_th=0,2,4,5,5,8 +filter_lut=0,6,8,10,12,13,14,15,16,18,18,19,20,21,22,23,24 +filter_th_b=0,3,6,9,9,12 +filter_lut_b=0,1,2,2,3,3,3,4,4,4,5,5,5,5,5,6,6 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=64 +lca_sub_center_filter_y=8 +lca_sub_center_filter_c=16 +lca_sub_filter_y=8 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=15 +dbcs_step_y=2 +dbcs_step_c=1 +[NR_5] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=0 +gbal_edge_protect_th=128 +filter_th=0,5,7,9,10,14 +filter_lut=0,8,11,14,16,18,20,22,23,25,26,27,29,30,31,32,33 +filter_th_b=0,15,22,27,31,44 +filter_lut_b=0,8,11,14,16,18,20,22,23,25,26,27,29,30,31,32,33 +filter_blend_w=10 +filter_clamp_th=0 +filter_clamp_mul=64 +lca_sub_center_filter_y=10 +lca_sub_center_filter_c=24 +lca_sub_filter_y=16 +lca_sub_filter_c=24 +lca_out_y_wt=0 +lca_out_c_wt=15 +dbcs_step_y=2 +dbcs_step_c=2 +[NR_6] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,918,1589,2365,3905 +outl_dark_th=32,1036,1711,2365,3905 +gbal_diff_th_str=0 +gbal_edge_protect_th=128 +filter_th=0,6,9,11,12,18 +filter_lut=0,11,15,19,22,25,27,29,31,33,35,37,38,40,41,43,44 +filter_th_b=0,28,40,49,57,81 +filter_lut_b=0,19,27,33,39,43,48,51,55,58,61,65,67,70,73,75,78 +filter_blend_w=15 +filter_clamp_th=0 +filter_clamp_mul=64 +lca_sub_center_filter_y=10 +lca_sub_center_filter_c=48 +lca_sub_filter_y=16 +lca_sub_filter_c=29 +lca_out_y_wt=0 +lca_out_c_wt=15 +dbcs_step_y=2 +dbcs_step_c=1 +[NR_7] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,918,1589,2365,3905 +outl_dark_th=32,1036,1711,2365,3905 +gbal_diff_th_str=0 +gbal_edge_protect_th=128 +filter_th=0,8,12,14,17,24 +filter_lut=0,14,20,24,28,32,35,38,40,43,45,47,49,51,53,55,57 +filter_th_b=0,38,54,66,77,108 +filter_lut_b=0,24,34,42,48,54,59,64,69,73,77,80,84,87,91,94,97 +filter_blend_w=15 +filter_clamp_th=0 +filter_clamp_mul=64 +lca_sub_center_filter_y=10 +lca_sub_center_filter_c=48 +lca_sub_filter_y=16 +lca_sub_filter_c=48 +lca_out_y_wt=0 +lca_out_c_wt=15 +dbcs_step_y=2 +dbcs_step_c=1 +[NR_8] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,918,1589,2365,3905 +outl_dark_th=32,1036,1711,2365,3905 +gbal_diff_th_str=0 +gbal_edge_protect_th=128 +filter_th=0,13,18,22,26,37 +filter_lut=0,23,32,40,46,51,56,61,65,69,73,76,80,83,86,89,92 +filter_th_b=0,85,121,148,171,242 +filter_lut_b=0,33,47,58,67,75,82,88,95,100,106,111,116,121,125,130,134 +filter_blend_w=15 +filter_clamp_th=0 +filter_clamp_mul=64 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=18 +dbcs_step_y=3 +dbcs_step_c=2 +[NR_9] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=1 +outl_sel=0 +outl_bright_th=32,918,1589,2365,3905 +outl_dark_th=32,1036,1711,2365,3905 +gbal_diff_th_str=0 +gbal_edge_protect_th=128 +filter_th=0,13,18,22,26,37 +filter_lut=0,23,32,40,46,51,56,61,65,69,73,76,80,83,86,89,92 +filter_th_b=0,121,171,210,242,343 +filter_lut_b=0,58,82,101,116,130,143,154,165,175,184,193,202,210,218,226,233 +filter_blend_w=15 +filter_clamp_th=0 +filter_clamp_mul=64 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=22 +dbcs_step_y=3 +dbcs_step_c=2 +[NR_10] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=1 +outl_sel=0 +outl_bright_th=32,918,1589,2365,3905 +outl_dark_th=32,1036,1711,2365,3905 +gbal_diff_th_str=0 +gbal_edge_protect_th=128 +filter_th=0,13,18,22,26,37 +filter_lut=0,23,32,40,46,51,56,61,65,69,73,76,80,83,86,89,92 +filter_th_b=0,112,159,195,225,319 +filter_lut_b=0,84,118,145,168,187,205,222,237,251,265,278,290,302,314,325,336 +filter_blend_w=15 +filter_clamp_th=0 +filter_clamp_mul=64 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=22 +dbcs_step_y=3 +dbcs_step_c=3 +[NR_11] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,16,22,28,32,45 +filter_lut=0,18,24,32,37,42,46,49,53,56,59,62,65,67,70,72,75 +filter_th_b=0,282,399,489,564,798 +filter_lut_b=0,64,90,110,128,143,156,169,181,192,202,212,221,230,239,247,256 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=32 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=24 +dbcs_step_y=2 +dbcs_step_c=3 +[NR_12] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=532,771,1272,1844,3043 +outl_dark_th=532,771,1272,1844,3043 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,17,24,30,35,49 +filter_lut=0,48,67,83,96,107,117,126,135,144,151,159,166,173,179,185,192 +filter_th_b=0,138,198,243,279,396 +filter_lut_b=0,50,71,87,101,113,124,134,143,152,160,168,175,183,190,196,203 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=32 +lca_sub_center_filter_y=24 +lca_sub_center_filter_c=24 +lca_sub_filter_y=24 +lca_sub_filter_c=24 +lca_out_y_wt=0 +lca_out_c_wt=18 +dbcs_step_y=2 +dbcs_step_c=2 +[NR_13] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=410,595,982,1424,2350 +outl_dark_th=410,595,982,1424,2350 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,17,24,30,35,49 +filter_lut=0,48,67,83,96,107,117,126,135,144,151,159,166,173,179,185,192 +filter_th_b=0,138,198,243,279,396 +filter_lut_b=0,50,71,87,101,113,124,134,143,152,160,168,175,183,190,196,203 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=32 +lca_sub_center_filter_y=24 +lca_sub_center_filter_c=24 +lca_sub_filter_y=24 +lca_sub_filter_c=24 +lca_out_y_wt=0 +lca_out_c_wt=18 +dbcs_step_y=2 +dbcs_step_c=2 +[NR_14] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=410,595,982,1424,2350 +outl_dark_th=410,595,982,1424,2350 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,17,24,30,35,49 +filter_lut=0,48,67,83,96,107,117,126,135,144,151,159,166,173,179,185,192 +filter_th_b=0,138,198,243,279,396 +filter_lut_b=0,50,71,87,101,113,124,134,143,152,160,168,175,183,190,196,203 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=32 +lca_sub_center_filter_y=24 +lca_sub_center_filter_c=24 +lca_sub_filter_y=24 +lca_sub_filter_c=24 +lca_out_y_wt=0 +lca_out_c_wt=18 +dbcs_step_y=2 +dbcs_step_c=2 +[NR_15] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=410,595,982,1424,2350 +outl_dark_th=410,595,982,1424,2350 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,17,24,30,35,49 +filter_lut=0,48,67,83,96,107,117,126,135,144,151,159,166,173,179,185,192 +filter_th_b=0,138,198,243,279,396 +filter_lut_b=0,50,71,87,101,113,124,134,143,152,160,168,175,183,190,196,203 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=32 +lca_sub_center_filter_y=24 +lca_sub_center_filter_c=24 +lca_sub_filter_y=24 +lca_sub_filter_c=24 +lca_out_y_wt=0 +lca_out_c_wt=18 +dbcs_step_y=2 +dbcs_step_c=2 +[CFA] +mode=0 +[CFA_M] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_0] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_1] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_2] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_3] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_4] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_5] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=32 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_6] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=0 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_7] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=0 +fcs_strength=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CFA_8] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=0 +fcs_strength=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CFA_9] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=0 +fcs_strength=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CFA_10] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=0 +fcs_strength=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CFA_11] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=32 +fcs_strength=8,8,3,2,1,1,1,0,0,0,0,0,0,0,0,0 +[CFA_12] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_13] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_14] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_15] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[VA] +mode=0 +indep_roi_0=450,450,100,100 +indep_roi_1=200,200,100,100 +indep_roi_2=700,200,100,100 +indep_roi_3=200,700,100,100 +indep_roi_4=700,700,100,100 +g1=2,-1,0,0,3 +g2=2,0,-1,0,3 +[VA_M] +g1_th=6,8 +g2_th=6,8 +[VA_0] +g1_th=6,8 +g2_th=6,8 +[VA_1] +g1_th=6,8 +g2_th=6,8 +[VA_2] +g1_th=6,8 +g2_th=6,8 +[VA_3] +g1_th=6,8 +g2_th=6,8 +[VA_4] +g1_th=6,8 +g2_th=6,8 +[VA_5] +g1_th=6,8 +g2_th=6,8 +[VA_6] +g1_th=6,8 +g2_th=6,8 +[VA_7] +g1_th=6,8 +g2_th=6,8 +[VA_8] +g1_th=6,8 +g2_th=6,8 +[VA_9] +g1_th=6,8 +g2_th=6,8 +[VA_10] +g1_th=6,8 +g2_th=6,8 +[VA_11] +g1_th=6,8 +g2_th=6,8 +[VA_12] +g1_th=6,8 +g2_th=6,8 +[VA_13] +g1_th=6,8 +g2_th=6,8 +[VA_14] +g1_th=6,8 +g2_th=6,8 +[VA_15] +g1_th=6,8 +g2_th=6,8 +[GAMMA] +tone_enable=0 +gamma_enable=1 +mode=1 +tone_input_blend_lut=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +tone_lut_linear_idx=0,8,16,24,28,32,36,38,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63 +tone_lut_linear_split=3,3,3,2,2,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +tone_lut_linear_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +tone_lut_shdr_idx=0,8,16,24,28,32,36,38,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63 +tone_lut_shdr_split=3,3,3,2,2,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +tone_lut_shdr_set_num=5 +tone_lut_shdr_set0_lv=0 +tone_lut_shdr_set0_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +tone_lut_shdr_set1_lv=25 +tone_lut_shdr_set1_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +tone_lut_shdr_set2_lv=50 +tone_lut_shdr_set2_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +tone_lut_shdr_set3_lv=75 +tone_lut_shdr_set3_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +tone_lut_shdr_set4_lv=100 +tone_lut_shdr_set4_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +[GAMMA_M] +gamma_lut=0,37,73,107,139,169,198,225,241,257,273,289,304,318,333,347,360,373,386,399,411,422,433,444,455,465,475,484,493,502,510,518,525,532,539,546,553,560,566,573,580,587,594,601,607,614,621,627,634,640,647,653,659,666,672,678,684,691,697,703,709,715,721,727,733,739,744,750,756,762,767,772,777,782,787,792,797,801,806,811,816,821,826,830,835,840,845,849,854,859,863,868,872,877,882,886,891,895,900,904,908,913,917,921,926,930,934,939,943,947,951,955,959,964,968,972,976,980,984,988,992,996,1000,1003,1007,1011,1015,1019,1023 +[GAMMA_0] +lv=6 +gamma_lut=0,37,73,107,139,169,198,225,241,257,273,289,304,318,333,347,360,373,386,399,411,422,433,444,455,465,475,484,493,502,510,518,525,532,539,546,553,560,566,573,580,587,594,601,607,614,621,627,634,640,647,653,659,666,672,678,684,691,697,703,709,715,721,727,733,739,744,750,756,762,767,772,777,782,787,792,797,801,806,811,816,821,826,830,835,840,845,849,854,859,863,868,872,877,882,886,891,895,900,904,908,913,917,921,926,930,934,939,943,947,951,955,959,964,968,972,976,980,984,988,992,996,1000,1003,1007,1011,1015,1019,1023 +[GAMMA_1] +lv=4 +gamma_lut=0,37,73,107,139,169,198,225,241,257,273,289,304,318,333,347,360,373,386,399,411,422,433,444,455,465,475,484,493,502,510,518,525,532,539,546,553,560,566,573,580,587,594,601,607,614,621,627,634,640,647,653,659,666,672,678,684,691,697,703,709,715,721,727,733,739,744,750,756,762,767,772,777,782,787,792,797,801,806,811,816,821,826,830,835,840,845,849,854,859,863,868,872,877,882,886,891,895,900,904,908,913,917,921,926,930,934,939,943,947,951,955,959,964,968,972,976,980,984,988,992,996,1000,1003,1007,1011,1015,1019,1023 +[CCM] +mode=0 +[CCM_M] +coef=256,0,0,0,256,0,0,0,256 +hue_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +sat_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CCM_0] +ct=6400 +coef=363,-42,-65,-75,435,-104,0,-121,377 +hue_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +sat_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CCM_1] +ct=4700 +coef=342,-70,-16,-84,383,-43,4,-110,361 +hue_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +sat_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CCM_2] +ct=2900 +coef=242,69,-55,-120,421,-45,-20,-147,424 +hue_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +sat_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[COLOR] +mode=0 +[COLOR_M] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_0] +c_con=140 +fstab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +cconlut=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_1] +c_con=140 +fstab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +cconlut=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_2] +c_con=140 +fstab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +cconlut=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_3] +c_con=140 +fstab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +cconlut=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_4] +c_con=140 +fstab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +cconlut=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_5] +c_con=140 +fstab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +cconlut=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_6] +c_con=140 +fstab=110,64,32,16,4,0,0,0,0,0,0,0,0,0,0,0 +fdtab=110,64,32,16,4,0,0,0,0,0,0,0,0,0,0,0 +cconlut=80,100,115,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_7] +c_con=130 +fstab=64,32,16,8,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=64,32,16,8,0,0,0,0,0,0,0,0,0,0,0,0 +cconlut=64,80,100,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_8] +c_con=140 +fstab=96,64,32,16,8,0,0,0,0,0,0,0,0,0,0,0 +fdtab=96,64,32,16,8,0,0,0,0,0,0,0,0,0,0,0 +cconlut=64,80,100,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_9] +c_con=110 +fstab=200,120,70,32,16,0,0,0,0,0,0,0,0,0,0,0 +fdtab=200,120,70,32,16,0,0,0,0,0,0,0,0,0,0,0 +cconlut=16,32,70,90,110,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_10] +c_con=120 +fstab=180,110,64,32,16,0,0,0,0,0,0,0,0,0,0,0 +fdtab=180,110,64,32,16,0,0,0,0,0,0,0,0,0,0,0 +cconlut=64,80,100,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_11] +c_con=128 +fstab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +cconlut=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_12] +c_con=128 +fstab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +cconlut=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_13] +c_con=128 +fstab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +cconlut=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_14] +c_con=128 +fstab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +cconlut=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_15] +c_con=128 +fstab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +cconlut=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[CONTRAST] +mode=0 +[CONTRAST_M] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_0] +y_con=128 +lce_lum_wt_lut=10,10,10,10,10,10,10,10,10 +[CONTRAST_1] +y_con=128 +lce_lum_wt_lut=10,10,10,10,10,10,10,10,10 +[CONTRAST_2] +y_con=128 +lce_lum_wt_lut=10,10,10,10,10,10,10,10,10 +[CONTRAST_3] +y_con=128 +lce_lum_wt_lut=10,10,10,10,10,10,10,10,10 +[CONTRAST_4] +y_con=128 +lce_lum_wt_lut=5,5,5,5,5,5,5,5,5 +[CONTRAST_5] +y_con=128 +lce_lum_wt_lut=5,5,5,5,5,5,5,5,5 +[CONTRAST_6] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_7] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_8] +y_con=128 +lce_lum_wt_lut=5,5,5,5,5,5,5,5,5 +[CONTRAST_9] +y_con=128 +lce_lum_wt_lut=10,10,10,10,10,10,10,10,10 +[CONTRAST_10] +y_con=128 +lce_lum_wt_lut=10,10,10,10,10,10,10,10,10 +[CONTRAST_11] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_12] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_13] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_14] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_15] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[EDGE] +enable=1 +mode=0 +th_overshoot=128 +th_undershoot=49 +edge_map_lut=100,120,140,160,180,200,224,255,255,224,192,170,154,144,136,128 +es_map_lut=32,45,53,64,64,64,64,64,64,64,64,64,64,53,45,32 +edge_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +reduce_ratio=64 +[EDGE_M] +edge_enh=128,128 +thin_freq=8 +robust_freq=0 +wt=0,16 +th_flat_low=8 +th_flat_high=40 +th_edge_low=240 +th_edge_high=256 +str_flat=64 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,128,0,2 +es_map_th=0,512,0,5 +[EDGE_0] +edge_enh=130,140 +thin_freq=16 +robust_freq=0 +wt=16,16 +th_flat_low=40 +th_flat_high=50 +th_edge_low=120 +th_edge_high=146 +str_flat=32 +str_edge=100 +overshoot_str=256 +undershoot_str=180 +edge_map_th=0,128,0,1 +es_map_th=0,512,0,2 +[EDGE_1] +edge_enh=130,140 +thin_freq=16 +robust_freq=0 +wt=16,16 +th_flat_low=8 +th_flat_high=70 +th_edge_low=140 +th_edge_high=600 +str_flat=64 +str_edge=100 +overshoot_str=256 +undershoot_str=180 +edge_map_th=0,128,0,1 +es_map_th=0,512,0,2 +[EDGE_2] +edge_enh=120,135 +thin_freq=16 +robust_freq=0 +wt=16,16 +th_flat_low=20 +th_flat_high=90 +th_edge_low=140 +th_edge_high=300 +str_flat=64 +str_edge=96 +overshoot_str=256 +undershoot_str=180 +edge_map_th=0,176,0,2 +es_map_th=0,512,0,2 +[EDGE_3] +edge_enh=115,130 +thin_freq=16 +robust_freq=0 +wt=16,16 +th_flat_low=40 +th_flat_high=100 +th_edge_low=170 +th_edge_high=220 +str_flat=64 +str_edge=96 +overshoot_str=256 +undershoot_str=180 +edge_map_th=0,176,0,2 +es_map_th=0,512,0,2 +[EDGE_4] +edge_enh=115,130 +thin_freq=16 +robust_freq=0 +wt=16,16 +th_flat_low=80 +th_flat_high=170 +th_edge_low=200 +th_edge_high=240 +str_flat=64 +str_edge=96 +overshoot_str=256 +undershoot_str=180 +edge_map_th=0,176,0,2 +es_map_th=0,512,0,2 +[EDGE_5] +edge_enh=115,130 +thin_freq=14 +robust_freq=2 +wt=16,16 +th_flat_low=90 +th_flat_high=180 +th_edge_low=220 +th_edge_high=300 +str_flat=64 +str_edge=96 +overshoot_str=128 +undershoot_str=180 +edge_map_th=0,176,0,2 +es_map_th=0,512,0,2 +[EDGE_6] +edge_enh=115,130 +thin_freq=14 +robust_freq=2 +wt=4,4 +th_flat_low=94 +th_flat_high=208 +th_edge_low=254 +th_edge_high=300 +str_flat=64 +str_edge=96 +overshoot_str=128 +undershoot_str=180 +edge_map_th=0,160,1,2 +es_map_th=20,640,1,2 +[EDGE_7] +edge_enh=90,90 +thin_freq=9 +robust_freq=6 +wt=4,4 +th_flat_low=200 +th_flat_high=238 +th_edge_low=300 +th_edge_high=323 +str_flat=48 +str_edge=80 +overshoot_str=128 +undershoot_str=180 +edge_map_th=12,128,1,2 +es_map_th=10,512,1,2 +[EDGE_8] +edge_enh=90,90 +thin_freq=9 +robust_freq=6 +wt=4,4 +th_flat_low=200 +th_flat_high=238 +th_edge_low=325 +th_edge_high=345 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=15,128,1,2 +es_map_th=10,512,1,3 +[EDGE_9] +edge_enh=90,90 +thin_freq=0 +robust_freq=0 +wt=2,2 +th_flat_low=150 +th_flat_high=240 +th_edge_low=369 +th_edge_high=385 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=25,128,3,2 +es_map_th=10,512,0,5 +[EDGE_10] +edge_enh=90,90 +thin_freq=0 +robust_freq=0 +wt=0,4 +th_flat_low=136 +th_flat_high=444 +th_edge_low=595 +th_edge_high=603 +str_flat=32 +str_edge=70 +overshoot_str=256 +undershoot_str=256 +edge_map_th=25,128,5,2 +es_map_th=0,512,0,5 +[EDGE_11] +edge_enh=110,110 +thin_freq=0 +robust_freq=0 +wt=0,0 +th_flat_low=136 +th_flat_high=168 +th_edge_low=307 +th_edge_high=323 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,128,5,2 +es_map_th=0,512,0,5 +[EDGE_12] +edge_enh=96,96 +thin_freq=0 +robust_freq=0 +wt=0,4 +th_flat_low=136 +th_flat_high=168 +th_edge_low=307 +th_edge_high=323 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,128,3,2 +es_map_th=0,512,0,5 +[EDGE_13] +edge_enh=96,96 +thin_freq=0 +robust_freq=0 +wt=0,4 +th_flat_low=136 +th_flat_high=168 +th_edge_low=307 +th_edge_high=323 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,128,3,2 +es_map_th=0,512,0,5 +[EDGE_14] +edge_enh=96,96 +thin_freq=0 +robust_freq=0 +wt=0,4 +th_flat_low=136 +th_flat_high=168 +th_edge_low=307 +th_edge_high=323 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,128,3,2 +es_map_th=0,512,0,5 +[EDGE_15] +edge_enh=96,96 +thin_freq=0 +robust_freq=0 +wt=0,4 +th_flat_low=136 +th_flat_high=168 +th_edge_low=307 +th_edge_high=323 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,128,3,2 +es_map_th=0,512,0,5 +[3DNR] +enable=1 +fcvg_enable=0 +mode=0 +[3DNR_M] +pf_type=0 +cost_blend=15 +sad_penalty=64,64,0,128,128,128,200,200 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=5,5,6,6,7,7,8,8 +switch_rto=128 +probability=4 +sad_base=0,0,0,0,0,0,0,0 +sad_coefa=0,0,0,0,0,0,0,0 +sad_coefb=0,0,0,0,0,0,0,0 +sad_std=0,0,0,0,0,0,0,0 +fth=8,16 +mv_th=4 +mix_ratio=180,230 +ds_th=6 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=16,32,48,64 +pre_filter_rto=128,64 +snr_base_th=256 +tnr_base_th=256 +freq_wet=16,16,16,16 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=8,16,64 +tnr_str=64,16,8 +luma_3d_lut=0,6,12,24,40,76,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,6,12,24,40,76,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_0] +pf_type=0 +cost_blend=8 +sad_penalty=50,50,0,100,100,100,150,150 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=180 +probability=8 +sad_base=200,200,200,200,140,140,140,140 +sad_coefa=11,10,10,11,9,9,9,9 +sad_coefb=130,130,130,130,120,120,120,120 +sad_std=25,25,20,20,15,15,15,15 +fth=8,16 +mv_th=4 +mix_ratio=16,20 +ds_th=4 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,4,1 +tf0_c_str=20,8,2 +pre_filter_str=2,4,8,16 +pre_filter_rto=0,0 +snr_base_th=1000 +tnr_base_th=500 +freq_wet=8,8,8,8 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,15,30 +tnr_str=64,0,0 +luma_3d_lut=0,16,32,48,64,80,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,13,32,48,64,80,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=2 +fcvg_step_size=1 +[3DNR_1] +pf_type=0 +cost_blend=8 +sad_penalty=50,50,0,100,100,100,150,150 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=180 +probability=8 +sad_base=200,200,200,200,140,140,140,140 +sad_coefa=11,10,10,11,9,9,9,9 +sad_coefb=130,130,130,130,120,120,120,120 +sad_std=25,25,20,20,15,15,15,15 +fth=8,16 +mv_th=4 +mix_ratio=16,20 +ds_th=4 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,4,1 +tf0_c_str=20,8,2 +pre_filter_str=2,4,8,16 +pre_filter_rto=0,0 +snr_base_th=1000 +tnr_base_th=500 +freq_wet=8,8,8,8 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,15,30 +tnr_str=64,0,0 +luma_3d_lut=0,16,32,48,64,80,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,13,32,48,64,80,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=2 +fcvg_step_size=1 +[3DNR_2] +pf_type=0 +cost_blend=8 +sad_penalty=70,70,0,120,120,120,200,200 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=8 +sad_base=280,280,280,280,220,220,220,220 +sad_coefa=13,12,12,13,11,11,11,11 +sad_coefb=200,190,190,190,180,180,180,180 +sad_std=50,50,45,45,40,40,40,40 +fth=8,16 +mv_th=4 +mix_ratio=16,20 +ds_th=6 +luma_residue_th=1,3,3 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=16,4,2 +tf0_c_str=20,8,2 +pre_filter_str=4,8,16,32 +pre_filter_rto=64,32 +snr_base_th=1000 +tnr_base_th=500 +freq_wet=8,8,8,8 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,50,60 +tnr_str=64,32,16 +luma_3d_lut=0,15,23,27,35,43,49,58 +luma_3d_rto=128,64 +chroma_3d_lut=0,13,21,30,35,41,49,60 +chroma_3d_rto=128,64 +fcvg_start_point=2 +fcvg_step_size=1 +[3DNR_3] +pf_type=1 +cost_blend=8 +sad_penalty=70,70,0,120,120,120,200,200 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=8 +sad_base=330,330,330,330,270,270,270,270 +sad_coefa=15,14,14,15,13,13,13,13 +sad_coefb=280,270,270,270,260,260,260,260 +sad_std=55,55,50,50,45,45,45,45 +fth=8,16 +mv_th=4 +mix_ratio=16,20 +ds_th=6 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=20,100,150 +tf0_y_str=24,4,2 +tf0_c_str=20,8,2 +pre_filter_str=4,8,16,32 +pre_filter_rto=64,32 +snr_base_th=1000 +tnr_base_th=500 +freq_wet=8,8,8,8 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,50,60 +tnr_str=64,32,16 +luma_3d_lut=0,13,21,27,35,43,49,58 +luma_3d_rto=100,48 +chroma_3d_lut=0,13,21,30,35,41,49,60 +chroma_3d_rto=128,64 +fcvg_start_point=2 +fcvg_step_size=1 +[3DNR_4] +pf_type=2 +cost_blend=8 +sad_penalty=80,80,0,150,150,150,250,250 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=8 +sad_base=330,330,330,330,270,270,270,270 +sad_coefa=15,14,14,15,13,13,13,13 +sad_coefb=280,270,270,270,260,260,260,260 +sad_std=55,55,50,50,45,45,45,45 +fth=8,16 +mv_th=4 +mix_ratio=16,20 +ds_th=6 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=40,130,180 +tf0_y_str=24,4,2 +tf0_c_str=20,8,2 +pre_filter_str=4,8,16,32 +pre_filter_rto=64,32 +snr_base_th=1000 +tnr_base_th=500 +freq_wet=8,8,8,8 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,60,70 +tnr_str=64,32,16 +luma_3d_lut=0,13,21,27,35,43,49,58 +luma_3d_rto=100,48 +chroma_3d_lut=0,13,21,30,35,41,49,60 +chroma_3d_rto=128,64 +fcvg_start_point=2 +fcvg_step_size=1 +[3DNR_5] +pf_type=2 +cost_blend=8 +sad_penalty=100,100,0,190,190,190,400,400 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=8 +sad_base=330,330,330,330,270,270,270,270 +sad_coefa=22,21,21,22,20,20,20,20 +sad_coefb=330,320,320,320,310,310,310,310 +sad_std=60,60,55,55,50,50,50,50 +fth=8,16 +mv_th=4 +mix_ratio=16,20 +ds_th=6 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=40,180,200 +tf0_y_str=30,4,2 +tf0_c_str=20,8,2 +pre_filter_str=4,8,16,32 +pre_filter_rto=64,32 +snr_base_th=1000 +tnr_base_th=500 +freq_wet=8,8,8,8 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,60,70 +tnr_str=64,32,16 +luma_3d_lut=0,11,19,25,33,41,47,56 +luma_3d_rto=100,48 +chroma_3d_lut=0,13,21,30,35,41,49,60 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_6] +pf_type=2 +cost_blend=8 +sad_penalty=120,120,0,200,200,200,520,520 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=8 +sad_base=330,330,330,330,270,270,270,270 +sad_coefa=24,23,23,24,22,22,22,22 +sad_coefb=370,360,360,360,350,350,350,350 +sad_std=65,65,60,60,55,55,55,55 +fth=8,16 +mv_th=4 +mix_ratio=16,20 +ds_th=6 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=20,180,200 +tf0_y_str=30,4,2 +tf0_c_str=20,8,2 +pre_filter_str=4,8,16,32 +pre_filter_rto=64,32 +snr_base_th=1000 +tnr_base_th=800 +freq_wet=8,8,8,8 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,110,170 +tnr_str=64,32,16 +luma_3d_lut=0,11,19,25,33,41,47,56 +luma_3d_rto=100,48 +chroma_3d_lut=0,13,21,30,35,41,49,60 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_7] +pf_type=3 +cost_blend=8 +sad_penalty=150,150,0,220,220,220,700,700 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=8 +sad_base=330,330,330,330,270,270,270,270 +sad_coefa=29,28,28,29,27,27,27,27 +sad_coefb=430,420,420,420,410,410,410,410 +sad_std=69,69,64,64,59,59,59,59 +fth=8,16 +mv_th=4 +mix_ratio=16,20 +ds_th=6 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=60,100,130 +tf0_y_str=30,8,4 +tf0_c_str=20,8,2 +pre_filter_str=4,8,16,32 +pre_filter_rto=64,32 +snr_base_th=1000 +tnr_base_th=800 +freq_wet=8,8,8,8 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,80,120 +tnr_str=100,32,16 +luma_3d_lut=0,9,17,23,31,39,45,54 +luma_3d_rto=100,48 +chroma_3d_lut=0,11,19,28,35,41,49,60 +chroma_3d_rto=100,48 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_8] +pf_type=3 +cost_blend=8 +sad_penalty=150,150,0,220,220,220,800,800 +detail_penalty=3,3,2,3,3,3,3,3 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=7 +sad_base=330,330,330,330,270,270,270,270 +sad_coefa=33,32,32,33,31,31,31,31 +sad_coefb=490,480,480,480,470,470,470,470 +sad_std=73,73,68,68,63,63,63,63 +fth=8,16 +mv_th=4 +mix_ratio=16,20 +ds_th=6 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=70,105,140 +tf0_y_str=30,8,4 +tf0_c_str=20,8,2 +pre_filter_str=4,8,16,32 +pre_filter_rto=64,32 +snr_base_th=1000 +tnr_base_th=1000 +freq_wet=8,8,8,8 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,60,110 +tnr_str=100,32,16 +luma_3d_lut=0,9,17,23,31,39,45,54 +luma_3d_rto=100,48 +chroma_3d_lut=0,11,19,28,35,41,49,60 +chroma_3d_rto=100,48 +fcvg_start_point=2 +fcvg_step_size=1 +[3DNR_9] +pf_type=3 +cost_blend=8 +sad_penalty=150,150,0,220,220,220,900,900 +detail_penalty=2,2,1,2,2,2,2,2 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=7 +sad_base=330,330,330,330,270,270,270,270 +sad_coefa=44,43,43,44,42,42,42,42 +sad_coefb=640,630,630,630,620,620,620,620 +sad_std=73,73,68,68,63,63,63,63 +fth=8,16 +mv_th=4 +mix_ratio=16,20 +ds_th=6 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=100,110,140 +tf0_y_str=50,8,4 +tf0_c_str=20,8,2 +pre_filter_str=4,8,16,32 +pre_filter_rto=64,32 +snr_base_th=1000 +tnr_base_th=1000 +freq_wet=8,8,8,8 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,60,110 +tnr_str=100,32,16 +luma_3d_lut=0,7,12,21,30,38,44,52 +luma_3d_rto=100,48 +chroma_3d_lut=0,8,17,26,33,39,47,58 +chroma_3d_rto=100,48 +fcvg_start_point=2 +fcvg_step_size=1 +[3DNR_10] +pf_type=3 +cost_blend=8 +sad_penalty=150,150,0,220,220,220,900,900 +detail_penalty=2,2,1,2,2,2,2,2 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=7 +sad_base=330,330,330,330,270,270,270,270 +sad_coefa=47,46,46,47,45,45,45,45 +sad_coefb=641,631,631,631,621,621,621,621 +sad_std=73,73,68,68,63,63,63,63 +fth=8,16 +mv_th=4 +mix_ratio=16,20 +ds_th=6 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=180,120,160 +tf0_y_str=80,8,4 +tf0_c_str=20,8,2 +pre_filter_str=16,32,48,64 +pre_filter_rto=64,32 +snr_base_th=1000 +tnr_base_th=1000 +freq_wet=8,8,8,8 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,60,110 +tnr_str=100,32,16 +luma_3d_lut=0,7,12,21,30,38,44,52 +luma_3d_rto=64,32 +chroma_3d_lut=0,11,19,28,35,41,49,60 +chroma_3d_rto=64,32 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_11] +pf_type=0 +cost_blend=15 +sad_penalty=200,200,0,400,400,400,600,600 +detail_penalty=3,3,3,3,3,3,3,3 +switch_th=7,5,5,5,15,15,15,15 +switch_rto=175 +probability=3 +sad_base=1024,1100,1200,1300,1300,1300,1300,1300 +sad_coefa=25,50,50,50,35,35,20,20 +sad_coefb=80,110,110,110,140,150,160,160 +sad_std=60,90,90,90,68,80,80,90 +fth=16,20 +mv_th=3 +mix_ratio=180,200 +ds_th=4 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=140,150,160,170 +pre_filter_rto=128,64 +snr_base_th=3000 +tnr_base_th=6000 +freq_wet=16,16,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,64,128 +tnr_str=255,16,6 +luma_3d_lut=0,6,13,21,28,38,47,58 +luma_3d_rto=128,64 +chroma_3d_lut=0,6,11,11,19,24,33,52 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_12] +pf_type=0 +cost_blend=15 +sad_penalty=128,128,0,256,256,256,512,512 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=8,9,9,10,10,10,11,11 +switch_rto=150 +probability=3 +sad_base=512,512,512,512,512,512,512,512 +sad_coefa=24,24,23,21,22,22,22,22 +sad_coefb=90,90,90,90,90,90,90,90 +sad_std=60,60,60,60,60,60,60,60 +fth=8,16 +mv_th=20 +mix_ratio=180,230 +ds_th=2 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=100,110,120,130 +pre_filter_rto=128,64 +snr_base_th=1200 +tnr_base_th=2000 +freq_wet=20,16,16,16 +luma_wet=20,24,24,16,16,16,16,16 +snr_str=0,32,128 +tnr_str=255,32,2 +luma_3d_lut=0,1,1,1,1,2,3,4 +luma_3d_rto=128,64 +chroma_3d_lut=0,6,11,11,19,24,33,52 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_13] +pf_type=0 +cost_blend=15 +sad_penalty=128,128,0,256,256,256,512,512 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=8,9,9,10,10,10,11,11 +switch_rto=150 +probability=3 +sad_base=512,512,512,512,512,512,512,512 +sad_coefa=24,24,23,21,22,22,22,22 +sad_coefb=90,90,90,90,90,90,90,90 +sad_std=60,60,60,60,60,60,60,60 +fth=8,16 +mv_th=20 +mix_ratio=180,230 +ds_th=2 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=100,110,120,130 +pre_filter_rto=128,64 +snr_base_th=1200 +tnr_base_th=2000 +freq_wet=20,16,16,16 +luma_wet=20,24,24,16,16,16,16,16 +snr_str=0,32,128 +tnr_str=255,32,2 +luma_3d_lut=0,1,1,1,1,2,3,4 +luma_3d_rto=128,64 +chroma_3d_lut=0,6,11,11,19,24,33,52 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_14] +pf_type=0 +cost_blend=15 +sad_penalty=128,128,0,256,256,256,512,512 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=8,9,9,10,10,10,11,11 +switch_rto=150 +probability=3 +sad_base=512,512,512,512,512,512,512,512 +sad_coefa=24,24,23,21,22,22,22,22 +sad_coefb=90,90,90,90,90,90,90,90 +sad_std=60,60,60,60,60,60,60,60 +fth=8,16 +mv_th=20 +mix_ratio=180,230 +ds_th=2 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=100,110,120,130 +pre_filter_rto=128,64 +snr_base_th=1200 +tnr_base_th=2000 +freq_wet=20,16,16,16 +luma_wet=20,24,24,16,16,16,16,16 +snr_str=0,32,128 +tnr_str=255,32,2 +luma_3d_lut=0,1,1,1,1,2,3,4 +luma_3d_rto=128,64 +chroma_3d_lut=0,6,11,11,19,24,33,52 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_15] +pf_type=0 +cost_blend=15 +sad_penalty=128,128,0,256,256,256,512,512 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=8,9,9,10,10,10,11,11 +switch_rto=150 +probability=3 +sad_base=512,512,512,512,512,512,512,512 +sad_coefa=24,24,23,21,22,22,22,22 +sad_coefb=90,90,90,90,90,90,90,90 +sad_std=60,60,60,60,60,60,60,60 +fth=8,16 +mv_th=20 +mix_ratio=180,230 +ds_th=2 +luma_residue_th=1,1,1 +chroma_residue_th=0 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=100,110,120,130 +pre_filter_rto=128,64 +snr_base_th=1200 +tnr_base_th=2000 +freq_wet=20,16,16,16 +luma_wet=20,24,24,16,16,16,16,16 +snr_str=0,32,128 +tnr_str=255,32,2 +luma_3d_lut=0,1,1,1,1,2,3,4 +luma_3d_rto=128,64 +chroma_3d_lut=0,6,11,11,19,24,33,52 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[DPC] +enable=0 +bin_file=/mnt/app/isp/dpc_table.bin +[SHADING] +ecs_enable=0 +vig_enable=1 +ecs_bin_file=/mnt/app/isp/ecs_table.bin +vig_center_x=500 +vig_center_y=500 +vig_reduce_th=400 +vig_zero_th=1600 +vig_lut=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[SHADING_INTER] +mode=0 +ecs_smooth_l_m_ct_lower=3200 +ecs_smooth_l_m_ct_upper=3400 +ecs_smooth_m_h_ct_lower=4800 +ecs_smooth_m_h_ct_upper=5000 +[SHADING_EXT] +ecs_ext_0_bin_file=/mnt/app/isp/ecs_table.bin +ecs_ext_1_bin_file=/mnt/app/isp/ecs_table.bin +ecs_ext_2_bin_file=/mnt/app/isp/ecs_table.bin +[LDC] +geo_enable=0 +lut_2d_enable=0 +geo_center_x=500 +geo_center_y=500 +geo_fov_gain=1024 +geo_lut_g=65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535 +geo_r_lut_gain=4096 +geo_b_lut_gain=4096 +lut2d_bin_file=/mnt/app/isp/lut2d_table.bin +[WDR] +enable=1 +mode=0 +subimg_size_h=32 +subimg_size_v=18 +contrast=128 +max_gain=5 +min_gain=3 +lut_idx=0,1,3,7,15,23,31,35,39,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63 +lut_split=0,1,2,3,3,3,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +lut_val=4095,4070,4006,3881,3791,3684,3560,3422,3348,3271,3192,3111,3029,2945,2862,2778,2694,2611,2529,2448,2369,2291,2215,2142,2070,2001,1934,1869,1807,1747,1689,1634,1531,1436,1350,1272,1200,1136,1077,1024,932,855,740,660,603,561,530,507,489,476,465,456,449,443,439,435,432,429,427,425,423,422,420,419,418 +[WDR_M] +strength=32 +[WDR_0] +level=80 +strength_min=0 +strength_max=255 +[WDR_1] +level=80 +strength_min=0 +strength_max=255 +[WDR_2] +level=80 +strength_min=0 +strength_max=255 +[WDR_3] +level=72 +strength_min=0 +strength_max=255 +[WDR_4] +level=72 +strength_min=0 +strength_max=255 +[WDR_5] +level=64 +strength_min=0 +strength_max=255 +[WDR_6] +level=64 +strength_min=0 +strength_max=255 +[WDR_7] +level=64 +strength_min=0 +strength_max=255 +[WDR_8] +level=64 +strength_min=0 +strength_max=255 +[WDR_9] +level=64 +strength_min=0 +strength_max=255 +[WDR_10] +level=64 +strength_min=0 +strength_max=255 +[WDR_11] +level=64 +strength_min=0 +strength_max=255 +[WDR_12] +level=64 +strength_min=0 +strength_max=255 +[WDR_13] +level=64 +strength_min=0 +strength_max=255 +[WDR_14] +level=64 +strength_min=0 +strength_max=255 +[WDR_15] +level=64 +strength_min=0 +strength_max=255 +[SHDR] +nrs_enable=0 +mode=0 +fusion_nor_sel=1 +fusion_l_nor_knee=3072 +fusion_l_nor_range=9 +fusion_s_nor_knee=192 +fusion_s_nor_range=6 +fusion_dif_sel=2 +fusion_l_dif_knee=3072 +fusion_l_dif_range=9 +fusion_s_dif_knee=192 +fusion_s_dif_range=6 +fusion_lum_th=256 +fusion_diff_w=0,2,4,8,10,12,14,16,14,12,10,8,6,4,2,0 +fcurve_y_mean_sel=0 +fcurve_yv_w=8 +fcurve_idx_lut=0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62 +fcurve_split_lut=1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +fcurve_val_lut=0,835,1257,1542,1758,1931,2076,2200,2309,2407,2494,2574,2647,2715,2777,2836,2891,2943,2992,3038,3082,3124,3164,3203,3240,3275,3309,3341,3373,3403,3433,3461,3489,3516,3542,3567,3592,3616,3639,3662,3684,3705,3726,3747,3767,3787,3806,3825,3843,3861,3879,3896,3913,3930,3946,3962,3978,3994,4009,4024,4039,4053,4068,4082,4095 +[SHDR_M] +nrs_diff_th=256 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_0] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_1] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_2] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_3] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_4] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_5] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_6] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_7] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_8] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_9] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_10] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_11] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_12] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_13] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_14] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_15] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[RGBIR] +mode=0 +manual_irsub_r_weight=204 +manual_irsub_g_weight=204 +manual_irsub_b_weight=230 +manual_ir_sat_gain=256 +auto_irsub_r_weight=204 +auto_irsub_g_weight=204 +auto_irsub_b_weight=230 +auto_irsub_reduce_th=220 +auto_night_mode_th=240 +[COMPANDING] +decomp_knee_pts=512,768,2560,4095,4095,4095,4095,4095,4095,4095,4095 +decomp_str_pts=0,256,512,2048,2048,2048,2048,2048,2048,2048,2048,2048 +decomp_shift_pts=4,5,6,8,8,8,8,8,8,8,8,8 +comp_knee_pts=10,11,12,13,14,15,16,16,16,16,16 +comp_str_pts=0,512,1024,1536,2048,2560,3072,3072,3072,3072,3072,3072 +comp_shift_pts=3,4,5,6,7,8,9,9,9,9,9,9 +[RGBIR_ENH] +enable=1 +mode=0 +min_ir_th=50 +[RGBIR_ENH_M] +enh_ratio=16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16 +[RGBIR_ENH_0] +ir_th=80 +enh_ratio=32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 +[RGBIR_ENH_1] +ir_th=152 +enh_ratio=80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80 +[RGBIR_ENH_2] +ir_th=255 +enh_ratio=160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160 +[POST_SHARPEN] +enable=1 +mode=0 +[POST_SHARPEN_M] +noise_level=25 +noise_curve=50,50,50,48,47,44,39,38,37,36,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=175 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_0] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=150 +th_edge=250 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_1] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=150 +th_edge=250 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_2] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=150 +th_edge=250 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_3] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=200 +th_edge=300 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_4] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_5] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=300 +th_edge=400 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_6] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=350 +th_edge=450 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_7] +noise_level=72 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=311 +th_edge=500 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_8] +noise_level=90 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=176 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_9] +noise_level=90 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=176 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=15 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_10] +noise_level=50 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=81 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=15 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_11] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_12] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_13] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_14] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_15] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[YCURVE] +enable=0 +ycurve_lut=0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,93,95,97,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,255 +[SHDR_EXT] +fcurve_y_w_lut=255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255 +[CST] +mode=0 +cst_coef=77,150,29,-43,-85,128,128,-107,-21 +y_ofs=0 +cb_ofs=128 +cr_ofs=128 +[CST_M] +cstp_ratio=2 +[CST_0] +cstp_ratio=2 +[CST_1] +cstp_ratio=2 +[CST_2] +cstp_ratio=2 +[CST_3] +cstp_ratio=2 +[CST_4] +cstp_ratio=2 +[CST_5] +cstp_ratio=2 +[CST_6] +cstp_ratio=2 +[CST_7] +cstp_ratio=2 +[CST_8] +cstp_ratio=2 +[CST_9] +cstp_ratio=2 +[CST_10] +cstp_ratio=2 +[CST_11] +cstp_ratio=2 +[CST_12] +cstp_ratio=2 +[CST_13] +cstp_ratio=2 +[CST_14] +cstp_ratio=2 +[CST_15] +cstp_ratio=2 +[TOOL_PARAMS] +Gamma_VirtualGamma=13,13 +Gamma_VirtualBlack=0,0 +Gamma_VirtualContrast=100,100 +Gamma_VirtualManual0=0,2,4,6,8,12,16,24,32,48,64,96,128 +Gamma_VirtualManual1=0,2,4,6,8,12,16,24,32,48,64,96,128 +NR_VirtualOutlBright=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +NR_VirtualOutlDark=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +NR_VirtualFilterTH=3,3,3,4,10,18,22,29,45,-1,-1,-1,-1,-1,-1,-1,-1 +NR_VirtualFilterTHB=-1,-1,-1,-1,-1,-1,98,131,291,413,384,-1,-1,-1,-1,-1,-1 +NR_VirtualFilterLut=5,9,9,13,15,21,28,36,58,-1,-1,-1,-1,-1,-1,-1,-1 +NR_VirtualFilterLutB=-1,-1,-1,-1,-1,-1,49,61,84,146,210,-1,-1,-1,-1,-1,-1 +SHDR_VirtualContrast=100 +SHDR_VirtualDelta=1000 +SHDR_VirtualKnee=24576 +SHDR_VirtualBlendR=12 +TCurve_Linear_VirtualContrast=100 +TCurve_Linear_VirtualDelta=1000 +TCurve_Linear_VirtualKnee=1536 +TCurve_Linear_VirtualBlendR=12 +TCurve_SHDR_VirtualContrast=100,100,100,100,100 +TCurve_SHDR_VirtualDelta=1000,1000,1000,1000,1000 +TCurve_SHDR_VirtualKnee=1536,1536,1536,1536,1536 +TCurve_SHDR_VirtualBlendR=12,12,12,12,12 +WDR_VirtualDark=100 +WDR_VirtualBright=20 +YCurve_VirtualGamma=13 +YCurve_VirtualBlack=0 +YCurve_VirtualContrast=100 +YCurve_VirtualManual0=0,2,4,6,8,12,16,24,32,48,64,96,128 diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/isp_gc5603_0.cfg b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/isp_gc5603_0.cfg new file mode 100755 index 000000000..70c2e0715 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/isp_gc5603_0.cfg @@ -0,0 +1,2367 @@ +[INFO] +# NVT9856x ISP Config +sensor=gc5603 +isp_version=0x01000000 +ae_version=0x01000100 +awb_version=0x01000000 +af_version=0x01000000 +iq_version=0x01000200 +tool_version=0x01000600 + +[NVT_AE] +expect_lum_mov=47 +expect_lum_photo=64 +expect_ratio_mov=73,74,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 +expect_ratio_photo=100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 +la_clamp_tab_normal_h=255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255 +la_clamp_tab_normal_l=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +la_clamp_tab_shdr_h=125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125 +la_clamp_tab_shdr_l=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +over_exp_enable=1 +over_exp_lum=140 +over_exp_speed=3 +over_exp_ratio=100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 +over_exp_thr_mov=6,6,8,9,10,11,11,11,12,13,14,15,16,16,16,16,16,16,16,16,16 +over_exp_thr_photo=2,2,3,3,3,3,4,5,6,7,8,9,10,10,10,10,10,10,10,10,10 +over_exp_maxcnt=4,4,4,4,4,4,4,4,5,7,10,10,10,10,10,10,10,10,10,10,10 +over_exp_mincnt=2,2,2,2,2,2,2,2,2,4,7,7,7,7,7,7,7,7,7,7,7 +conv_skip_frame=1 +conv_speed=128 +conv_range_conv=5,5 +conv_freeze_en=0 +conv_freeze_cyc=10 +conv_freeze_thr=100 +conv_slowshoot_en=1 +conv_slowshoot_range=30 +conv_slowshoot_thr=2 +conv_stable_counter=0 +curvegen_movie_iso_calcoef=500 +curvegen_movie_freq=0 +curvegen_movie_node0=44,100,0,0 +curvegen_movie_node1=40000,100,0,0 +curvegen_movie_node2=40000,6400,0,0 +curvegen_movie_node3=80000,6400,0,0 +curvegen_movie_node4=80000,12800,0,0 +curvegen_movie_node5=80000,6400,0,0 +curvegen_movie_node6=20000,200,0,0 +curvegen_movie_node7=20000,200,0,0 +curvegen_movie_node8=20000,200,0,0 +curvegen_movie_node9=20000,200,0,0 +curvegen_movie_node10=20000,200,0,0 +curvegen_movie_node11=20000,200,0,0 +curvegen_movie_node_num=5 +curvegen_movie_iso_max=12800 +curvegen_movie_hdr_ratio=1,16 +curvegen_movie_auto_lowlight_en=0 +curvegen_movie_extend_fps0=3000,1250 +curvegen_movie_extend_fps1=2400,1250 +curvegen_movie_extend_fps2=2000,2000 +curvegen_movie_extend_fps3=1500,1500 +curvegen_movie_extend_fps4=1200,1200 +curvegen_movie_iso_mode=0 +curvegen_movie_isp_gain_thres=60662 +curvegen_movie_flicker_mode=0 +win_weight0=1,1,1,1,1,1,1,1 +win_weight1=1,2,2,2,2,2,2,1 +win_weight2=1,2,3,3,3,3,2,1 +win_weight3=1,2,3,4,4,3,2,1 +win_weight4=1,2,3,4,4,3,2,1 +win_weight5=1,2,3,3,3,3,2,1 +win_weight6=1,2,2,2,2,2,2,1 +win_weight7=1,1,1,1,1,1,1,1 +lum_gamma=0,52,101,146,189,228,266,301,334,365,395,423,449,474,498,521,543,564,584,603,621,638,655,671,687,701,716,729,743,755,768,780,791,802,813,823,833,843,853,862,871,879,888,896,904,911,919,926,933,940,947,953,960,966,972,978,983,989,995,1000,1005,1010,1015,1020,1023 +shdr_expy_le=64 +shdr_tab_ratio_le=100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 +iris_en=0 +iris_min_exp=0 +iris_probe_balance=0 +iris_balance_ratio=110 +iris_driving_ratio=0 +iris_ctrl=3,2,2 +iris_pwm_id=-1 +iris_drv_max=200 +iris_freeze_time=500 +iris_unfreeze_time=1000 +iris_ctrl_dir_inv=0 +curvegen_photo_node0=1,100,0,0 +curvegen_photo_node1=33333,800,0,0 +curvegen_photo_node2=66666,1600,0,0 +curvegen_photo_node3=100000,3200,0,0 +curvegen_photo_node4=0,0,0,0 +curvegen_photo_node5=0,0,0,0 +curvegen_photo_node6=0,0,0,0 +curvegen_photo_node7=0,0,0,0 +curvegen_photo_node8=0,0,0,0 +curvegen_photo_node9=0,0,0,0 +curvegen_photo_node10=0,0,0,0 +curvegen_photo_node11=0,0,0,0 +curvegen_photo_node_num=4 +curvegen_photo_expt_max=66666 +curvegen_photo_iso_max=6400 +curvegen_photo_iso_mode=1 +curvegen_photo_isp_gain_thres=99200 +[NVT_AWB] +th_y=5,245 +th_rpb=70,252 +th_rsb=-56,114 +th_r2g=44,153 +th_b2g=26,99 +th_rmb=28,49 +lv_night=1,4 +lv_in=6,10 +lv_out=14,26 +ct_weight_ctmp=2300,2800,3700,4700,6500,11000 +ct_weight_cx=820,864,921,981,1085,1149 +ct_weight_out=1,1,1,1,1,1 +ct_weight_in=1,1,1,1,1,1 +ct_weight_night=1,1,1,1,1,1 +target_cx=864,981,1085 +target_rg_ratio=1024,1024,1024 +target_bg_ratio=1024,1024,1024 +ct_info_temperature=2300,2800,3700,4700,6500,11000 +ct_info_r_gain=270,303,357,423,520,645 +ct_info_g_gain=256,256,256,256,256,256 +ct_info_b_gain=857,744,637,542,375,326 +mwb_r_gain=256,480,480,249,285,256,256,256,256,256,256,256 +mwb_g_gain=256,256,256,256,256,256,256,256,256,256,256,256 +mwb_b_gain=256,377,320,839,806,256,256,256,256,256,256,256 +conv_skip_frame=4 +conv_speed=50 +conv_tolerance=259 +expand_block_mode=0,0,0,0 +expand_block_lv_l=10,6,6,6 +expand_block_lv_h=16,10,10,10 +expand_block_y_l=5,5,5,5 +expand_block_y_u=245,245,245,245 +expand_block_rpb_l=105,105,91,114 +expand_block_rpb_u=120,122,105,128 +expand_block_rsb_l=5,56,18,32 +expand_block_rsb_u=25,74,32,-53 +luma_weight_enable=0 +luma_weight_y=4,8,20,32,192,208,224,240 +luma_weight_w=1,1,1,1,1,1,1,1 +[NVT_AF] +thres=20,80,95,60 +step_size=6,3,1 +max_search_cnt=200 +win_weight0=1,1,1,1,1,1,1,1 +win_weight1=1,1,1,1,1,1,1,1 +win_weight2=1,1,1,1,1,1,1,1 +win_weight3=1,1,1,1,1,1,1,1 +win_weight4=1,1,1,1,1,1,1,1 +win_weight5=1,1,1,1,1,1,1,1 +win_weight6=1,1,1,1,1,1,1,1 +win_weight7=1,1,1,1,1,1,1,1 +[OB] +mode=0 +[OB_M] +cofs=256,256,256,256,256 +[OB_0] +cofs=256,256,256,256,256 +[OB_1] +cofs=256,256,256,256,256 +[OB_2] +cofs=256,256,256,256,256 +[OB_3] +cofs=256,256,256,256,256 +[OB_4] +cofs=256,256,256,256,256 +[OB_5] +cofs=256,256,256,256,256 +[OB_6] +cofs=256,256,256,256,256 +[OB_7] +cofs=256,256,256,256,256 +[OB_8] +cofs=256,256,256,256,256 +[OB_9] +cofs=256,256,256,256,256 +[OB_10] +cofs=256,256,256,256,256 +[OB_11] +cofs=256,256,256,256,256 +[OB_12] +cofs=256,256,256,256,256 +[OB_13] +cofs=256,256,256,256,256 +[OB_14] +cofs=256,256,256,256,256 +[OB_15] +cofs=256,256,256,256,256 +[NR] +outl_enable=1 +gbal_enable=1 +filter_enable=1 +lca_enable=1 +dbcs_enable=1 +mode=0 +[NR_M] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=4095,4095,4095,4095,4095 +outl_dark_th=4095,4095,4095,4095,4095 +gbal_diff_th_str=256 +gbal_edge_protect_th=128 +filter_th=0,0,0,0,0,0 +filter_lut=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +filter_th_b=0,0,0,0,0,0 +filter_lut_b=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=0 +lca_sub_center_filter_c=0 +lca_sub_filter_y=0 +lca_sub_filter_c=0 +lca_out_y_wt=0 +lca_out_c_wt=0 +dbcs_step_y=2 +dbcs_step_c=2 +[NR_0] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=0 +gbal_edge_protect_th=128 +filter_th=0,0,1,1,1,2 +filter_lut=0,2,2,3,4,4,4,5,5,6,6,6,6,7,7,7,8 +filter_th_b=0,2,3,4,5,7 +filter_lut_b=0,2,2,3,4,4,4,5,5,6,6,6,6,7,7,7,8 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=64 +lca_sub_center_filter_y=8 +lca_sub_center_filter_c=8 +lca_sub_filter_y=8 +lca_sub_filter_c=8 +lca_out_y_wt=0 +lca_out_c_wt=0 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_1] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=0 +gbal_edge_protect_th=128 +filter_th=0,0,1,1,1,2 +filter_lut=0,3,5,6,7,8,8,9,10,10,11,11,12,12,13,13,14 +filter_th_b=0,2,3,4,5,7 +filter_lut_b=0,2,2,1,1,1,1,2,2,2,2,2,2,2,2,3,3 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=64 +lca_sub_center_filter_y=8 +lca_sub_center_filter_c=8 +lca_sub_filter_y=8 +lca_sub_filter_c=8 +lca_out_y_wt=0 +lca_out_c_wt=4 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_2] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=0 +gbal_edge_protect_th=128 +filter_th=0,0,1,1,1,2 +filter_lut=0,3,5,6,7,8,8,9,10,10,11,11,12,12,13,13,14 +filter_th_b=0,3,6,9,9,12 +filter_lut_b=0,1,2,2,3,3,3,4,4,4,5,5,5,5,5,6,6 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=64 +lca_sub_center_filter_y=8 +lca_sub_center_filter_c=16 +lca_sub_filter_y=8 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=12 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_3] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=0 +gbal_edge_protect_th=128 +filter_th=0,1,1,2,2,3 +filter_lut=0,5,7,9,10,11,12,13,14,15,16,17,18,18,19,20,20 +filter_th_b=0,3,6,9,9,12 +filter_lut_b=0,1,2,2,3,3,3,4,4,4,5,5,5,5,5,6,6 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=64 +lca_sub_center_filter_y=8 +lca_sub_center_filter_c=16 +lca_sub_filter_y=8 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=12 +dbcs_step_y=1 +dbcs_step_c=0 +[NR_4] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=0 +gbal_edge_protect_th=128 +filter_th=0,2,4,5,5,8 +filter_lut=0,6,8,10,12,13,14,15,16,18,18,19,20,21,22,23,24 +filter_th_b=0,3,6,9,9,12 +filter_lut_b=0,1,2,2,3,3,3,4,4,4,5,5,5,5,5,6,6 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=64 +lca_sub_center_filter_y=8 +lca_sub_center_filter_c=16 +lca_sub_filter_y=8 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=15 +dbcs_step_y=2 +dbcs_step_c=1 +[NR_5] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=0 +gbal_edge_protect_th=128 +filter_th=0,5,7,9,10,14 +filter_lut=0,8,11,14,16,18,20,22,23,25,26,27,29,30,31,32,33 +filter_th_b=0,15,22,27,31,44 +filter_lut_b=0,8,11,14,16,18,20,22,23,25,26,27,29,30,31,32,33 +filter_blend_w=10 +filter_clamp_th=0 +filter_clamp_mul=64 +lca_sub_center_filter_y=10 +lca_sub_center_filter_c=24 +lca_sub_filter_y=16 +lca_sub_filter_c=24 +lca_out_y_wt=0 +lca_out_c_wt=15 +dbcs_step_y=2 +dbcs_step_c=2 +[NR_6] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,918,1589,2365,3905 +outl_dark_th=32,1036,1711,2365,3905 +gbal_diff_th_str=0 +gbal_edge_protect_th=128 +filter_th=0,6,9,11,12,18 +filter_lut=0,11,15,19,22,25,27,29,31,33,35,37,38,40,41,43,44 +filter_th_b=0,28,40,49,57,81 +filter_lut_b=0,19,27,33,39,43,48,51,55,58,61,65,67,70,73,75,78 +filter_blend_w=15 +filter_clamp_th=0 +filter_clamp_mul=64 +lca_sub_center_filter_y=10 +lca_sub_center_filter_c=48 +lca_sub_filter_y=16 +lca_sub_filter_c=29 +lca_out_y_wt=0 +lca_out_c_wt=15 +dbcs_step_y=2 +dbcs_step_c=1 +[NR_7] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,918,1589,2365,3905 +outl_dark_th=32,1036,1711,2365,3905 +gbal_diff_th_str=0 +gbal_edge_protect_th=128 +filter_th=0,8,12,14,17,24 +filter_lut=0,14,20,24,28,32,35,38,40,43,45,47,49,51,53,55,57 +filter_th_b=0,38,54,66,77,108 +filter_lut_b=0,24,34,42,48,54,59,64,69,73,77,80,84,87,91,94,97 +filter_blend_w=15 +filter_clamp_th=0 +filter_clamp_mul=32 +lca_sub_center_filter_y=10 +lca_sub_center_filter_c=48 +lca_sub_filter_y=16 +lca_sub_filter_c=48 +lca_out_y_wt=0 +lca_out_c_wt=15 +dbcs_step_y=2 +dbcs_step_c=1 +[NR_8] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,918,1589,2365,3905 +outl_dark_th=32,1036,1711,2365,3905 +gbal_diff_th_str=0 +gbal_edge_protect_th=128 +filter_th=0,13,18,22,26,37 +filter_lut=0,23,32,40,46,51,56,61,65,69,73,76,80,83,86,89,92 +filter_th_b=0,85,121,148,171,242 +filter_lut_b=0,33,47,58,67,75,82,88,95,100,106,111,116,121,125,130,134 +filter_blend_w=15 +filter_clamp_th=0 +filter_clamp_mul=64 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=18 +dbcs_step_y=3 +dbcs_step_c=2 +[NR_9] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=1 +outl_sel=0 +outl_bright_th=32,918,1589,2365,3905 +outl_dark_th=32,1036,1711,2365,3905 +gbal_diff_th_str=0 +gbal_edge_protect_th=128 +filter_th=0,13,18,22,26,37 +filter_lut=0,23,32,40,46,51,56,61,65,69,73,76,80,83,86,89,92 +filter_th_b=0,121,171,210,242,343 +filter_lut_b=0,58,82,101,116,130,143,154,165,175,184,193,202,210,218,226,233 +filter_blend_w=15 +filter_clamp_th=0 +filter_clamp_mul=64 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=22 +dbcs_step_y=3 +dbcs_step_c=2 +[NR_10] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=1 +outl_sel=0 +outl_bright_th=32,918,1589,2365,3905 +outl_dark_th=32,1036,1711,2365,3905 +gbal_diff_th_str=0 +gbal_edge_protect_th=128 +filter_th=0,13,18,22,26,37 +filter_lut=0,23,32,40,46,51,56,61,65,69,73,76,80,83,86,89,92 +filter_th_b=0,112,159,195,225,319 +filter_lut_b=0,84,118,145,168,187,205,222,237,251,265,278,290,302,314,325,336 +filter_blend_w=15 +filter_clamp_th=0 +filter_clamp_mul=64 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=22 +dbcs_step_y=3 +dbcs_step_c=3 +[NR_11] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,16,22,28,32,45 +filter_lut=0,18,24,32,37,42,46,49,53,56,59,62,65,67,70,72,75 +filter_th_b=0,282,399,489,564,798 +filter_lut_b=0,64,90,110,128,143,156,169,181,192,202,212,221,230,239,247,256 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=32 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=24 +dbcs_step_y=2 +dbcs_step_c=3 +[NR_12] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=532,771,1272,1844,3043 +outl_dark_th=532,771,1272,1844,3043 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,17,24,30,35,49 +filter_lut=0,48,67,83,96,107,117,126,135,144,151,159,166,173,179,185,192 +filter_th_b=0,138,198,243,279,396 +filter_lut_b=0,50,71,87,101,113,124,134,143,152,160,168,175,183,190,196,203 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=32 +lca_sub_center_filter_y=24 +lca_sub_center_filter_c=24 +lca_sub_filter_y=24 +lca_sub_filter_c=24 +lca_out_y_wt=0 +lca_out_c_wt=18 +dbcs_step_y=2 +dbcs_step_c=2 +[NR_13] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=410,595,982,1424,2350 +outl_dark_th=410,595,982,1424,2350 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,17,24,30,35,49 +filter_lut=0,48,67,83,96,107,117,126,135,144,151,159,166,173,179,185,192 +filter_th_b=0,138,198,243,279,396 +filter_lut_b=0,50,71,87,101,113,124,134,143,152,160,168,175,183,190,196,203 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=32 +lca_sub_center_filter_y=24 +lca_sub_center_filter_c=24 +lca_sub_filter_y=24 +lca_sub_filter_c=24 +lca_out_y_wt=0 +lca_out_c_wt=18 +dbcs_step_y=2 +dbcs_step_c=2 +[NR_14] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=410,595,982,1424,2350 +outl_dark_th=410,595,982,1424,2350 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,17,24,30,35,49 +filter_lut=0,48,67,83,96,107,117,126,135,144,151,159,166,173,179,185,192 +filter_th_b=0,138,198,243,279,396 +filter_lut_b=0,50,71,87,101,113,124,134,143,152,160,168,175,183,190,196,203 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=32 +lca_sub_center_filter_y=24 +lca_sub_center_filter_c=24 +lca_sub_filter_y=24 +lca_sub_filter_c=24 +lca_out_y_wt=0 +lca_out_c_wt=18 +dbcs_step_y=2 +dbcs_step_c=2 +[NR_15] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=410,595,982,1424,2350 +outl_dark_th=410,595,982,1424,2350 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,17,24,30,35,49 +filter_lut=0,48,67,83,96,107,117,126,135,144,151,159,166,173,179,185,192 +filter_th_b=0,138,198,243,279,396 +filter_lut_b=0,50,71,87,101,113,124,134,143,152,160,168,175,183,190,196,203 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=32 +lca_sub_center_filter_y=24 +lca_sub_center_filter_c=24 +lca_sub_filter_y=24 +lca_sub_filter_c=24 +lca_out_y_wt=0 +lca_out_c_wt=18 +dbcs_step_y=2 +dbcs_step_c=2 +[CFA] +mode=0 +[CFA_M] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_0] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_1] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_2] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_3] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_4] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_5] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=32 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_6] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=0 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_7] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=0 +fcs_strength=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CFA_8] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=0 +fcs_strength=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CFA_9] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=0 +fcs_strength=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CFA_10] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=0 +fcs_strength=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CFA_11] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=32 +fcs_strength=8,8,3,2,1,1,1,0,0,0,0,0,0,0,0,0 +[CFA_12] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_13] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_14] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_15] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[VA] +mode=0 +indep_roi_0=450,450,100,100 +indep_roi_1=200,200,100,100 +indep_roi_2=700,200,100,100 +indep_roi_3=200,700,100,100 +indep_roi_4=700,700,100,100 +g1=2,-1,0,0,3 +g2=2,0,-1,0,3 +[VA_M] +g1_th=6,8 +g2_th=6,8 +[VA_0] +g1_th=6,8 +g2_th=6,8 +[VA_1] +g1_th=6,8 +g2_th=6,8 +[VA_2] +g1_th=6,8 +g2_th=6,8 +[VA_3] +g1_th=6,8 +g2_th=6,8 +[VA_4] +g1_th=6,8 +g2_th=6,8 +[VA_5] +g1_th=6,8 +g2_th=6,8 +[VA_6] +g1_th=6,8 +g2_th=6,8 +[VA_7] +g1_th=6,8 +g2_th=6,8 +[VA_8] +g1_th=6,8 +g2_th=6,8 +[VA_9] +g1_th=6,8 +g2_th=6,8 +[VA_10] +g1_th=6,8 +g2_th=6,8 +[VA_11] +g1_th=6,8 +g2_th=6,8 +[VA_12] +g1_th=6,8 +g2_th=6,8 +[VA_13] +g1_th=6,8 +g2_th=6,8 +[VA_14] +g1_th=6,8 +g2_th=6,8 +[VA_15] +g1_th=6,8 +g2_th=6,8 +[GAMMA] +tone_enable=0 +gamma_enable=1 +mode=1 +tone_input_blend_lut=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +tone_lut_linear_idx=0,8,16,24,28,32,36,38,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63 +tone_lut_linear_split=3,3,3,2,2,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +tone_lut_linear_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +tone_lut_shdr_idx=0,8,16,24,28,32,36,38,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63 +tone_lut_shdr_split=3,3,3,2,2,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +tone_lut_shdr_set_num=5 +tone_lut_shdr_set0_lv=0 +tone_lut_shdr_set0_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +tone_lut_shdr_set1_lv=25 +tone_lut_shdr_set1_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +tone_lut_shdr_set2_lv=50 +tone_lut_shdr_set2_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +tone_lut_shdr_set3_lv=75 +tone_lut_shdr_set3_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +tone_lut_shdr_set4_lv=100 +tone_lut_shdr_set4_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +[GAMMA_M] +gamma_lut=0,37,73,107,139,169,198,225,241,257,273,289,304,318,333,347,360,373,386,399,411,422,433,444,455,465,475,484,493,502,510,518,525,532,539,546,553,560,566,573,580,587,594,601,607,614,621,627,634,640,647,653,659,666,672,678,684,691,697,703,709,715,721,727,733,739,744,750,756,762,767,772,777,782,787,792,797,801,806,811,816,821,826,830,835,840,845,849,854,859,863,868,872,877,882,886,891,895,900,904,908,913,917,921,926,930,934,939,943,947,951,955,959,964,968,972,976,980,984,988,992,996,1000,1003,1007,1011,1015,1019,1023 +[GAMMA_0] +lv=6 +gamma_lut=0,37,73,107,139,169,198,225,241,257,273,289,304,318,333,347,360,373,386,399,411,422,433,444,455,465,475,484,493,502,510,518,525,532,539,546,553,560,566,573,580,587,594,601,607,614,621,627,634,640,647,653,659,666,672,678,684,691,697,703,709,715,721,727,733,739,744,750,756,762,767,772,777,782,787,792,797,801,806,811,816,821,826,830,835,840,845,849,854,859,863,868,872,877,882,886,891,895,900,904,908,913,917,921,926,930,934,939,943,947,951,955,959,964,968,972,976,980,984,988,992,996,1000,1003,1007,1011,1015,1019,1023 +[GAMMA_1] +lv=4 +gamma_lut=0,37,73,107,139,169,198,225,241,257,273,289,304,318,333,347,360,373,386,399,411,422,433,444,455,465,475,484,493,502,510,518,525,532,539,546,553,560,566,573,580,587,594,601,607,614,621,627,634,640,647,653,659,666,672,678,684,691,697,703,709,715,721,727,733,739,744,750,756,762,767,772,777,782,787,792,797,801,806,811,816,821,826,830,835,840,845,849,854,859,863,868,872,877,882,886,891,895,900,904,908,913,917,921,926,930,934,939,943,947,951,955,959,964,968,972,976,980,984,988,992,996,1000,1003,1007,1011,1015,1019,1023 +[CCM] +mode=0 +[CCM_M] +coef=256,0,0,0,256,0,0,0,256 +hue_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +sat_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CCM_0] +ct=6638 +coef=479,-124,-98,-109,526,-160,2,-161,415 +hue_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +sat_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CCM_1] +ct=3800 +coef=393,-82,-54,-137,457,-63,6,-178,428 +hue_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +sat_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CCM_2] +ct=2976 +coef=304,33,-81,-162,482,-63,-9,-223,488 +hue_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +sat_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[COLOR] +mode=0 +[COLOR_M] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_0] +c_con=140 +fstab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +cconlut=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_1] +c_con=140 +fstab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +cconlut=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_2] +c_con=140 +fstab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +cconlut=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_3] +c_con=140 +fstab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +cconlut=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_4] +c_con=140 +fstab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +cconlut=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_5] +c_con=140 +fstab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +cconlut=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_6] +c_con=140 +fstab=110,64,32,16,4,0,0,0,0,0,0,0,0,0,0,0 +fdtab=110,64,32,16,4,0,0,0,0,0,0,0,0,0,0,0 +cconlut=80,100,115,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_7] +c_con=130 +fstab=64,32,16,8,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=64,32,16,8,0,0,0,0,0,0,0,0,0,0,0,0 +cconlut=64,80,100,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_8] +c_con=140 +fstab=96,64,32,16,8,0,0,0,0,0,0,0,0,0,0,0 +fdtab=96,64,32,16,8,0,0,0,0,0,0,0,0,0,0,0 +cconlut=64,80,100,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_9] +c_con=110 +fstab=200,120,70,32,16,0,0,0,0,0,0,0,0,0,0,0 +fdtab=200,120,70,32,16,0,0,0,0,0,0,0,0,0,0,0 +cconlut=16,32,70,90,110,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_10] +c_con=120 +fstab=180,110,64,32,16,0,0,0,0,0,0,0,0,0,0,0 +fdtab=180,110,64,32,16,0,0,0,0,0,0,0,0,0,0,0 +cconlut=64,80,100,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_11] +c_con=128 +fstab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +cconlut=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_12] +c_con=128 +fstab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +cconlut=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_13] +c_con=128 +fstab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +cconlut=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_14] +c_con=128 +fstab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +cconlut=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_15] +c_con=128 +fstab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +cconlut=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[CONTRAST] +mode=0 +[CONTRAST_M] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_0] +y_con=128 +lce_lum_wt_lut=10,10,10,10,10,10,10,10,10 +[CONTRAST_1] +y_con=128 +lce_lum_wt_lut=10,10,10,10,10,10,10,10,10 +[CONTRAST_2] +y_con=128 +lce_lum_wt_lut=10,10,10,10,10,10,10,10,10 +[CONTRAST_3] +y_con=128 +lce_lum_wt_lut=10,10,10,10,10,10,10,10,10 +[CONTRAST_4] +y_con=128 +lce_lum_wt_lut=5,5,5,5,5,5,5,5,5 +[CONTRAST_5] +y_con=128 +lce_lum_wt_lut=5,5,5,5,5,5,5,5,5 +[CONTRAST_6] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_7] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_8] +y_con=128 +lce_lum_wt_lut=5,5,5,5,5,5,5,5,5 +[CONTRAST_9] +y_con=128 +lce_lum_wt_lut=10,10,10,10,10,10,10,10,10 +[CONTRAST_10] +y_con=128 +lce_lum_wt_lut=10,10,10,10,10,10,10,10,10 +[CONTRAST_11] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_12] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_13] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_14] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_15] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[EDGE] +enable=1 +mode=0 +th_overshoot=128 +th_undershoot=49 +edge_map_lut=100,120,140,160,180,200,224,255,255,224,192,170,154,144,136,128 +es_map_lut=32,45,53,64,64,64,64,64,64,64,64,64,64,53,45,32 +edge_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +reduce_ratio=64 +[EDGE_M] +edge_enh=128,128 +thin_freq=8 +robust_freq=0 +wt=0,16 +th_flat_low=8 +th_flat_high=40 +th_edge_low=240 +th_edge_high=256 +str_flat=64 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,128,0,2 +es_map_th=0,512,0,5 +[EDGE_0] +edge_enh=130,140 +thin_freq=16 +robust_freq=0 +wt=16,16 +th_flat_low=60 +th_flat_high=100 +th_edge_low=120 +th_edge_high=146 +str_flat=32 +str_edge=100 +overshoot_str=256 +undershoot_str=180 +edge_map_th=0,128,0,1 +es_map_th=0,512,0,2 +[EDGE_1] +edge_enh=130,140 +thin_freq=16 +robust_freq=0 +wt=16,16 +th_flat_low=60 +th_flat_high=100 +th_edge_low=120 +th_edge_high=146 +str_flat=32 +str_edge=100 +overshoot_str=256 +undershoot_str=180 +edge_map_th=0,128,0,1 +es_map_th=0,512,0,2 +[EDGE_2] +edge_enh=120,135 +thin_freq=16 +robust_freq=0 +wt=16,16 +th_flat_low=65 +th_flat_high=115 +th_edge_low=140 +th_edge_high=200 +str_flat=32 +str_edge=96 +overshoot_str=256 +undershoot_str=180 +edge_map_th=0,176,0,2 +es_map_th=0,512,0,2 +[EDGE_3] +edge_enh=115,130 +thin_freq=16 +robust_freq=0 +wt=16,16 +th_flat_low=65 +th_flat_high=115 +th_edge_low=170 +th_edge_high=220 +str_flat=32 +str_edge=96 +overshoot_str=256 +undershoot_str=180 +edge_map_th=0,176,0,2 +es_map_th=0,512,0,2 +[EDGE_4] +edge_enh=115,130 +thin_freq=16 +robust_freq=0 +wt=16,16 +th_flat_low=80 +th_flat_high=170 +th_edge_low=200 +th_edge_high=240 +str_flat=32 +str_edge=96 +overshoot_str=256 +undershoot_str=180 +edge_map_th=0,176,0,2 +es_map_th=0,512,0,2 +[EDGE_5] +edge_enh=115,130 +thin_freq=14 +robust_freq=2 +wt=16,16 +th_flat_low=90 +th_flat_high=180 +th_edge_low=220 +th_edge_high=300 +str_flat=32 +str_edge=96 +overshoot_str=128 +undershoot_str=180 +edge_map_th=0,176,0,2 +es_map_th=0,512,0,2 +[EDGE_6] +edge_enh=115,130 +thin_freq=14 +robust_freq=2 +wt=4,4 +th_flat_low=94 +th_flat_high=208 +th_edge_low=254 +th_edge_high=300 +str_flat=32 +str_edge=96 +overshoot_str=128 +undershoot_str=180 +edge_map_th=0,160,1,2 +es_map_th=20,640,1,2 +[EDGE_7] +edge_enh=90,90 +thin_freq=9 +robust_freq=6 +wt=4,4 +th_flat_low=280 +th_flat_high=350 +th_edge_low=377 +th_edge_high=390 +str_flat=32 +str_edge=85 +overshoot_str=128 +undershoot_str=180 +edge_map_th=12,128,1,2 +es_map_th=10,512,1,2 +[EDGE_8] +edge_enh=90,90 +thin_freq=9 +robust_freq=6 +wt=4,4 +th_flat_low=280 +th_flat_high=350 +th_edge_low=378 +th_edge_high=399 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=15,128,1,2 +es_map_th=10,512,1,3 +[EDGE_9] +edge_enh=90,90 +thin_freq=0 +robust_freq=0 +wt=2,2 +th_flat_low=280 +th_flat_high=350 +th_edge_low=389 +th_edge_high=399 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=25,128,3,2 +es_map_th=10,512,0,5 +[EDGE_10] +edge_enh=90,90 +thin_freq=0 +robust_freq=0 +wt=0,4 +th_flat_low=280 +th_flat_high=444 +th_edge_low=595 +th_edge_high=603 +str_flat=32 +str_edge=70 +overshoot_str=256 +undershoot_str=256 +edge_map_th=25,128,5,2 +es_map_th=0,512,0,5 +[EDGE_11] +edge_enh=110,110 +thin_freq=0 +robust_freq=0 +wt=0,0 +th_flat_low=289 +th_flat_high=446 +th_edge_low=600 +th_edge_high=620 +str_flat=32 +str_edge=70 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,128,5,2 +es_map_th=0,512,0,5 +[EDGE_12] +edge_enh=96,96 +thin_freq=0 +robust_freq=0 +wt=0,4 +th_flat_low=136 +th_flat_high=168 +th_edge_low=307 +th_edge_high=323 +str_flat=32 +str_edge=70 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,128,3,2 +es_map_th=0,512,0,5 +[EDGE_13] +edge_enh=96,96 +thin_freq=0 +robust_freq=0 +wt=0,4 +th_flat_low=136 +th_flat_high=168 +th_edge_low=307 +th_edge_high=323 +str_flat=32 +str_edge=70 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,128,3,2 +es_map_th=0,512,0,5 +[EDGE_14] +edge_enh=96,96 +thin_freq=0 +robust_freq=0 +wt=0,4 +th_flat_low=136 +th_flat_high=168 +th_edge_low=307 +th_edge_high=323 +str_flat=32 +str_edge=70 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,128,3,2 +es_map_th=0,512,0,5 +[EDGE_15] +edge_enh=96,96 +thin_freq=0 +robust_freq=0 +wt=0,4 +th_flat_low=136 +th_flat_high=168 +th_edge_low=307 +th_edge_high=323 +str_flat=32 +str_edge=70 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,128,3,2 +es_map_th=0,512,0,5 +[3DNR] +enable=1 +fcvg_enable=0 +mode=0 +[3DNR_M] +pf_type=0 +cost_blend=15 +sad_penalty=64,64,0,128,128,128,200,200 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=5,5,6,6,7,7,8,8 +switch_rto=128 +probability=4 +sad_base=0,0,0,0,0,0,0,0 +sad_coefa=0,0,0,0,0,0,0,0 +sad_coefb=0,0,0,0,0,0,0,0 +sad_std=0,0,0,0,0,0,0,0 +fth=8,16 +mv_th=4 +mix_ratio=180,230 +ds_th=6 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=16,32,48,64 +pre_filter_rto=128,64 +snr_base_th=256 +tnr_base_th=256 +freq_wet=16,16,16,16 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=8,16,64 +tnr_str=64,16,8 +luma_3d_lut=0,6,12,24,40,76,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,6,12,24,40,76,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_0] +pf_type=0 +cost_blend=8 +sad_penalty=50,50,0,100,100,100,150,150 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=180 +probability=8 +sad_base=200,200,200,200,140,140,140,140 +sad_coefa=11,10,10,11,9,9,9,9 +sad_coefb=130,130,130,130,120,120,120,120 +sad_std=25,25,20,20,15,15,15,15 +fth=8,16 +mv_th=4 +mix_ratio=16,20 +ds_th=4 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,4,1 +tf0_c_str=20,8,2 +pre_filter_str=2,4,8,16 +pre_filter_rto=0,0 +snr_base_th=1000 +tnr_base_th=500 +freq_wet=8,8,8,8 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,15,30 +tnr_str=64,0,0 +luma_3d_lut=0,16,32,48,64,80,96,112 +luma_3d_rto=100,48 +chroma_3d_lut=0,13,32,48,64,80,96,112 +chroma_3d_rto=100,48 +fcvg_start_point=2 +fcvg_step_size=1 +[3DNR_1] +pf_type=0 +cost_blend=8 +sad_penalty=50,50,0,100,100,100,150,150 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=180 +probability=8 +sad_base=200,200,200,200,140,140,140,140 +sad_coefa=11,10,10,11,9,9,9,9 +sad_coefb=130,130,130,130,120,120,120,120 +sad_std=25,25,20,20,15,15,15,15 +fth=8,16 +mv_th=4 +mix_ratio=16,20 +ds_th=4 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,4,1 +tf0_c_str=20,8,2 +pre_filter_str=2,4,8,16 +pre_filter_rto=0,0 +snr_base_th=1000 +tnr_base_th=500 +freq_wet=8,8,8,8 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,15,30 +tnr_str=64,0,0 +luma_3d_lut=0,16,32,48,64,80,96,112 +luma_3d_rto=100,48 +chroma_3d_lut=0,13,32,48,64,80,96,112 +chroma_3d_rto=100,48 +fcvg_start_point=2 +fcvg_step_size=1 +[3DNR_2] +pf_type=0 +cost_blend=8 +sad_penalty=70,70,0,120,120,120,200,200 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=8 +sad_base=280,280,280,280,220,220,220,220 +sad_coefa=13,12,12,13,11,11,11,11 +sad_coefb=200,190,190,190,180,180,180,180 +sad_std=50,50,45,45,40,40,40,40 +fth=8,16 +mv_th=4 +mix_ratio=16,20 +ds_th=6 +luma_residue_th=1,3,3 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=16,4,2 +tf0_c_str=20,8,2 +pre_filter_str=4,8,16,32 +pre_filter_rto=64,32 +snr_base_th=1000 +tnr_base_th=500 +freq_wet=8,8,8,8 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,50,60 +tnr_str=64,32,16 +luma_3d_lut=0,16,32,48,64,80,96,112 +luma_3d_rto=100,48 +chroma_3d_lut=0,16,32,48,64,80,96,112 +chroma_3d_rto=100,48 +fcvg_start_point=2 +fcvg_step_size=1 +[3DNR_3] +pf_type=1 +cost_blend=8 +sad_penalty=70,70,0,120,120,120,200,200 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=8 +sad_base=330,330,330,330,270,270,270,270 +sad_coefa=15,14,14,15,13,13,13,13 +sad_coefb=280,270,270,270,260,260,260,260 +sad_std=55,55,50,50,45,45,45,45 +fth=8,16 +mv_th=4 +mix_ratio=16,20 +ds_th=6 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=20,100,150 +tf0_y_str=24,4,2 +tf0_c_str=20,8,2 +pre_filter_str=4,8,16,32 +pre_filter_rto=64,32 +snr_base_th=1000 +tnr_base_th=500 +freq_wet=8,8,8,8 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,50,60 +tnr_str=64,32,16 +luma_3d_lut=0,16,32,48,64,80,96,112 +luma_3d_rto=100,48 +chroma_3d_lut=0,16,32,48,64,80,96,112 +chroma_3d_rto=100,48 +fcvg_start_point=2 +fcvg_step_size=1 +[3DNR_4] +pf_type=2 +cost_blend=8 +sad_penalty=80,80,0,150,150,150,250,250 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=8 +sad_base=330,330,330,330,270,270,270,270 +sad_coefa=15,14,14,15,13,13,13,13 +sad_coefb=280,270,270,270,260,260,260,260 +sad_std=55,55,50,50,45,45,45,45 +fth=8,16 +mv_th=4 +mix_ratio=16,20 +ds_th=6 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=40,130,180 +tf0_y_str=24,4,2 +tf0_c_str=20,8,2 +pre_filter_str=4,8,16,32 +pre_filter_rto=64,32 +snr_base_th=1000 +tnr_base_th=500 +freq_wet=8,8,8,8 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,60,70 +tnr_str=64,32,16 +luma_3d_lut=0,13,27,40,55,72,96,112 +luma_3d_rto=100,48 +chroma_3d_lut=0,13,32,48,62,72,87,112 +chroma_3d_rto=100,48 +fcvg_start_point=2 +fcvg_step_size=1 +[3DNR_5] +pf_type=2 +cost_blend=8 +sad_penalty=100,100,0,190,190,190,400,400 +detail_penalty=3,3,2,3,3,3,3,3 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=8 +sad_base=330,330,330,330,270,270,270,270 +sad_coefa=18,17,17,18,16,16,16,16 +sad_coefb=330,320,320,320,310,310,310,310 +sad_std=60,60,55,55,50,50,50,50 +fth=8,16 +mv_th=4 +mix_ratio=16,20 +ds_th=6 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=40,180,200 +tf0_y_str=30,4,2 +tf0_c_str=20,8,2 +pre_filter_str=4,8,16,32 +pre_filter_rto=64,32 +snr_base_th=1000 +tnr_base_th=500 +freq_wet=8,8,8,8 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,60,70 +tnr_str=64,32,16 +luma_3d_lut=0,11,19,25,33,41,47,56 +luma_3d_rto=100,48 +chroma_3d_lut=0,13,21,30,35,41,49,60 +chroma_3d_rto=100,48 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_6] +pf_type=2 +cost_blend=8 +sad_penalty=120,120,0,200,200,200,520,520 +detail_penalty=3,3,3,3,3,3,3,3 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=8 +sad_base=330,330,330,330,270,270,270,270 +sad_coefa=24,23,23,24,22,22,22,22 +sad_coefb=370,360,360,360,350,350,350,350 +sad_std=65,65,60,60,55,55,55,55 +fth=8,16 +mv_th=4 +mix_ratio=16,20 +ds_th=6 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=20,180,200 +tf0_y_str=30,4,2 +tf0_c_str=20,8,2 +pre_filter_str=4,8,16,32 +pre_filter_rto=64,32 +snr_base_th=1000 +tnr_base_th=800 +freq_wet=8,8,8,8 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,110,170 +tnr_str=64,16,8 +luma_3d_lut=0,11,19,25,33,41,47,56 +luma_3d_rto=100,48 +chroma_3d_lut=0,13,21,30,35,41,49,60 +chroma_3d_rto=100,48 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_7] +pf_type=3 +cost_blend=8 +sad_penalty=150,150,0,220,220,220,700,700 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=8 +sad_base=330,330,330,330,270,270,270,270 +sad_coefa=29,28,28,29,27,27,27,27 +sad_coefb=400,390,390,390,380,380,380,380 +sad_std=69,69,64,64,59,59,59,59 +fth=8,16 +mv_th=4 +mix_ratio=16,20 +ds_th=6 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=60,100,130 +tf0_y_str=30,8,4 +tf0_c_str=20,8,2 +pre_filter_str=4,8,16,32 +pre_filter_rto=64,32 +snr_base_th=1000 +tnr_base_th=800 +freq_wet=8,8,8,8 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,80,120 +tnr_str=64,16,8 +luma_3d_lut=0,13,31,44,56,63,69,75 +luma_3d_rto=64,32 +chroma_3d_lut=0,11,19,28,35,41,49,60 +chroma_3d_rto=64,32 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_8] +pf_type=3 +cost_blend=8 +sad_penalty=150,150,0,220,220,220,800,800 +detail_penalty=3,3,2,3,3,3,3,3 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=7 +sad_base=330,330,330,330,270,270,270,270 +sad_coefa=33,32,32,33,31,31,31,31 +sad_coefb=490,480,480,480,470,470,470,470 +sad_std=73,73,68,68,63,63,63,63 +fth=8,16 +mv_th=4 +mix_ratio=16,20 +ds_th=6 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=70,105,140 +tf0_y_str=30,8,4 +tf0_c_str=20,8,2 +pre_filter_str=4,8,16,32 +pre_filter_rto=64,32 +snr_base_th=1000 +tnr_base_th=1000 +freq_wet=8,8,8,8 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,60,110 +tnr_str=100,32,16 +luma_3d_lut=0,9,17,23,31,39,45,54 +luma_3d_rto=100,48 +chroma_3d_lut=0,11,19,28,35,41,49,60 +chroma_3d_rto=100,48 +fcvg_start_point=2 +fcvg_step_size=1 +[3DNR_9] +pf_type=3 +cost_blend=8 +sad_penalty=150,150,0,220,220,220,900,900 +detail_penalty=2,2,1,2,2,2,2,2 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=7 +sad_base=330,330,330,330,270,270,270,270 +sad_coefa=44,43,43,44,42,42,42,42 +sad_coefb=640,630,630,630,620,620,620,620 +sad_std=73,73,68,68,63,63,63,63 +fth=8,16 +mv_th=4 +mix_ratio=16,20 +ds_th=6 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=100,110,140 +tf0_y_str=50,8,4 +tf0_c_str=20,8,2 +pre_filter_str=4,8,16,32 +pre_filter_rto=64,32 +snr_base_th=1000 +tnr_base_th=1000 +freq_wet=8,8,8,8 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,60,110 +tnr_str=100,32,16 +luma_3d_lut=0,7,12,21,30,38,44,52 +luma_3d_rto=100,48 +chroma_3d_lut=0,8,17,26,33,39,47,58 +chroma_3d_rto=100,48 +fcvg_start_point=2 +fcvg_step_size=1 +[3DNR_10] +pf_type=3 +cost_blend=8 +sad_penalty=150,150,0,220,220,220,900,900 +detail_penalty=2,2,1,2,2,2,2,2 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=7 +sad_base=330,330,330,330,270,270,270,270 +sad_coefa=47,46,46,47,45,45,45,45 +sad_coefb=641,631,631,631,621,621,621,621 +sad_std=73,73,68,68,63,63,63,63 +fth=8,16 +mv_th=4 +mix_ratio=16,20 +ds_th=6 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=180,120,160 +tf0_y_str=80,8,4 +tf0_c_str=20,8,2 +pre_filter_str=16,32,48,64 +pre_filter_rto=64,32 +snr_base_th=1000 +tnr_base_th=1000 +freq_wet=8,8,8,8 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,60,110 +tnr_str=100,32,16 +luma_3d_lut=0,7,12,21,30,38,44,52 +luma_3d_rto=64,32 +chroma_3d_lut=0,11,19,28,35,41,49,60 +chroma_3d_rto=64,32 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_11] +pf_type=0 +cost_blend=15 +sad_penalty=200,200,0,400,400,400,600,600 +detail_penalty=3,3,3,3,3,3,3,3 +switch_th=7,5,5,5,15,15,15,15 +switch_rto=175 +probability=3 +sad_base=1024,1100,1200,1300,1300,1300,1300,1300 +sad_coefa=25,50,50,50,35,35,20,20 +sad_coefb=80,110,110,110,140,150,160,160 +sad_std=60,90,90,90,68,80,80,90 +fth=16,20 +mv_th=3 +mix_ratio=180,200 +ds_th=4 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=140,150,160,170 +pre_filter_rto=128,64 +snr_base_th=3000 +tnr_base_th=6000 +freq_wet=16,16,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,64,128 +tnr_str=255,16,6 +luma_3d_lut=0,6,13,21,28,38,47,58 +luma_3d_rto=64,32 +chroma_3d_lut=0,6,11,11,19,24,33,52 +chroma_3d_rto=64,32 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_12] +pf_type=0 +cost_blend=15 +sad_penalty=128,128,0,256,256,256,512,512 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=8,9,9,10,10,10,11,11 +switch_rto=150 +probability=3 +sad_base=512,512,512,512,512,512,512,512 +sad_coefa=24,24,23,21,22,22,22,22 +sad_coefb=90,90,90,90,90,90,90,90 +sad_std=60,60,60,60,60,60,60,60 +fth=8,16 +mv_th=20 +mix_ratio=180,230 +ds_th=2 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=100,110,120,130 +pre_filter_rto=128,64 +snr_base_th=1200 +tnr_base_th=2000 +freq_wet=20,16,16,16 +luma_wet=20,24,24,16,16,16,16,16 +snr_str=0,32,128 +tnr_str=255,32,2 +luma_3d_lut=0,1,1,1,1,2,3,4 +luma_3d_rto=64,32 +chroma_3d_lut=0,6,11,11,19,24,33,52 +chroma_3d_rto=64,32 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_13] +pf_type=0 +cost_blend=15 +sad_penalty=128,128,0,256,256,256,512,512 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=8,9,9,10,10,10,11,11 +switch_rto=150 +probability=3 +sad_base=512,512,512,512,512,512,512,512 +sad_coefa=24,24,23,21,22,22,22,22 +sad_coefb=90,90,90,90,90,90,90,90 +sad_std=60,60,60,60,60,60,60,60 +fth=8,16 +mv_th=20 +mix_ratio=180,230 +ds_th=2 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=100,110,120,130 +pre_filter_rto=128,64 +snr_base_th=1200 +tnr_base_th=2000 +freq_wet=20,16,16,16 +luma_wet=20,24,24,16,16,16,16,16 +snr_str=0,32,128 +tnr_str=255,32,2 +luma_3d_lut=0,1,1,1,1,2,3,4 +luma_3d_rto=64,32 +chroma_3d_lut=0,6,11,11,19,24,33,52 +chroma_3d_rto=64,32 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_14] +pf_type=0 +cost_blend=15 +sad_penalty=128,128,0,256,256,256,512,512 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=8,9,9,10,10,10,11,11 +switch_rto=150 +probability=3 +sad_base=512,512,512,512,512,512,512,512 +sad_coefa=24,24,23,21,22,22,22,22 +sad_coefb=90,90,90,90,90,90,90,90 +sad_std=60,60,60,60,60,60,60,60 +fth=8,16 +mv_th=20 +mix_ratio=180,230 +ds_th=2 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=100,110,120,130 +pre_filter_rto=128,64 +snr_base_th=1200 +tnr_base_th=2000 +freq_wet=20,16,16,16 +luma_wet=20,24,24,16,16,16,16,16 +snr_str=0,32,128 +tnr_str=255,32,2 +luma_3d_lut=0,1,1,1,1,2,3,4 +luma_3d_rto=64,32 +chroma_3d_lut=0,6,11,11,19,24,33,52 +chroma_3d_rto=64,32 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_15] +pf_type=0 +cost_blend=15 +sad_penalty=128,128,0,256,256,256,512,512 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=8,9,9,10,10,10,11,11 +switch_rto=150 +probability=3 +sad_base=512,512,512,512,512,512,512,512 +sad_coefa=24,24,23,21,22,22,22,22 +sad_coefb=90,90,90,90,90,90,90,90 +sad_std=60,60,60,60,60,60,60,60 +fth=8,16 +mv_th=20 +mix_ratio=180,230 +ds_th=2 +luma_residue_th=1,1,1 +chroma_residue_th=0 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=100,110,120,130 +pre_filter_rto=128,64 +snr_base_th=1200 +tnr_base_th=2000 +freq_wet=20,16,16,16 +luma_wet=20,24,24,16,16,16,16,16 +snr_str=0,32,128 +tnr_str=255,32,2 +luma_3d_lut=0,1,1,1,1,2,3,4 +luma_3d_rto=64,32 +chroma_3d_lut=0,6,11,11,19,24,33,52 +chroma_3d_rto=64,32 +fcvg_start_point=4 +fcvg_step_size=1 +[DPC] +enable=0 +bin_file=/mnt/app/isp/GC5603_dpc.bin +[SHADING] +ecs_enable=1 +vig_enable=1 +ecs_bin_file=/mnt/app/isp/GC5603_ecs.bin +vig_center_x=552 +vig_center_y=512 +vig_reduce_th=400 +vig_zero_th=1600 +vig_lut=0,1,4,9,16,28,41,57,74,96,122,153,183,220,272,327,357 +[SHADING_INTER] +mode=1 +ecs_smooth_l_m_ct_lower=3200 +ecs_smooth_l_m_ct_upper=3400 +ecs_smooth_m_h_ct_lower=4800 +ecs_smooth_m_h_ct_upper=5000 +[SHADING_EXT] +ecs_ext_0_bin_file=/mnt/app/isp/GC5603_ecs_auto_0.bin +ecs_ext_1_bin_file=/mnt/app/isp/GC5603_ecs_auto_1.bin +ecs_ext_2_bin_file=/mnt/app/isp/GC5603_ecs_auto_2.bin +[LDC] +geo_enable=0 +lut_2d_enable=0 +geo_center_x=500 +geo_center_y=500 +geo_fov_gain=1024 +geo_lut_g=65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535 +geo_r_lut_gain=4096 +geo_b_lut_gain=4096 +lut2d_bin_file=/mnt/app/isp/GC5603_lut2d.bin +[WDR] +enable=1 +mode=0 +subimg_size_h=32 +subimg_size_v=18 +contrast=128 +max_gain=5 +min_gain=3 +lut_idx=0,1,3,7,15,23,31,35,39,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63 +lut_split=0,1,2,3,3,3,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +lut_val=4095,4070,4006,3881,3791,3684,3560,3422,3348,3271,3192,3111,3029,2945,2862,2778,2694,2611,2529,2448,2369,2291,2215,2142,2070,2001,1934,1869,1807,1747,1689,1634,1531,1436,1350,1272,1200,1136,1077,1024,932,855,740,660,603,561,530,507,489,476,465,456,449,443,439,435,432,429,427,425,423,422,420,419,418 +[WDR_M] +strength=32 +[WDR_0] +level=80 +strength_min=0 +strength_max=255 +[WDR_1] +level=80 +strength_min=0 +strength_max=255 +[WDR_2] +level=80 +strength_min=0 +strength_max=255 +[WDR_3] +level=72 +strength_min=0 +strength_max=255 +[WDR_4] +level=72 +strength_min=0 +strength_max=255 +[WDR_5] +level=64 +strength_min=0 +strength_max=255 +[WDR_6] +level=64 +strength_min=0 +strength_max=255 +[WDR_7] +level=64 +strength_min=0 +strength_max=255 +[WDR_8] +level=64 +strength_min=0 +strength_max=255 +[WDR_9] +level=64 +strength_min=0 +strength_max=255 +[WDR_10] +level=64 +strength_min=0 +strength_max=255 +[WDR_11] +level=64 +strength_min=0 +strength_max=255 +[WDR_12] +level=64 +strength_min=0 +strength_max=255 +[WDR_13] +level=64 +strength_min=0 +strength_max=255 +[WDR_14] +level=64 +strength_min=0 +strength_max=255 +[WDR_15] +level=64 +strength_min=0 +strength_max=255 +[SHDR] +nrs_enable=0 +mode=0 +fusion_nor_sel=1 +fusion_l_nor_knee=3072 +fusion_l_nor_range=9 +fusion_s_nor_knee=192 +fusion_s_nor_range=6 +fusion_dif_sel=2 +fusion_l_dif_knee=3072 +fusion_l_dif_range=9 +fusion_s_dif_knee=192 +fusion_s_dif_range=6 +fusion_lum_th=256 +fusion_diff_w=0,2,4,8,10,12,14,16,14,12,10,8,6,4,2,0 +fcurve_y_mean_sel=0 +fcurve_yv_w=8 +fcurve_idx_lut=0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62 +fcurve_split_lut=1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +fcurve_val_lut=0,835,1257,1542,1758,1931,2076,2200,2309,2407,2494,2574,2647,2715,2777,2836,2891,2943,2992,3038,3082,3124,3164,3203,3240,3275,3309,3341,3373,3403,3433,3461,3489,3516,3542,3567,3592,3616,3639,3662,3684,3705,3726,3747,3767,3787,3806,3825,3843,3861,3879,3896,3913,3930,3946,3962,3978,3994,4009,4024,4039,4053,4068,4082,4095 +[SHDR_M] +nrs_diff_th=256 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_0] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_1] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_2] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_3] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_4] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_5] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_6] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_7] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_8] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_9] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_10] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_11] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_12] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_13] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_14] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_15] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[RGBIR] +mode=0 +manual_irsub_r_weight=204 +manual_irsub_g_weight=204 +manual_irsub_b_weight=230 +manual_ir_sat_gain=256 +auto_irsub_r_weight=204 +auto_irsub_g_weight=204 +auto_irsub_b_weight=230 +auto_irsub_reduce_th=220 +auto_night_mode_th=240 +[COMPANDING] +decomp_knee_pts=512,768,2560,4095,4095,4095,4095,4095,4095,4095,4095 +decomp_str_pts=0,256,512,2048,2048,2048,2048,2048,2048,2048,2048,2048 +decomp_shift_pts=4,5,6,8,8,8,8,8,8,8,8,8 +comp_knee_pts=10,11,12,13,14,15,16,16,16,16,16 +comp_str_pts=0,512,1024,1536,2048,2560,3072,3072,3072,3072,3072,3072 +comp_shift_pts=3,4,5,6,7,8,9,9,9,9,9,9 +[RGBIR_ENH] +enable=1 +mode=0 +min_ir_th=50 +[RGBIR_ENH_M] +enh_ratio=16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16 +[RGBIR_ENH_0] +ir_th=80 +enh_ratio=32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 +[RGBIR_ENH_1] +ir_th=152 +enh_ratio=80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80 +[RGBIR_ENH_2] +ir_th=255 +enh_ratio=160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160 +[POST_SHARPEN] +enable=1 +mode=0 +[POST_SHARPEN_M] +noise_level=25 +noise_curve=50,50,50,48,47,44,39,38,37,36,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=175 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_0] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=150 +th_edge=250 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_1] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=150 +th_edge=250 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_2] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=150 +th_edge=250 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_3] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=200 +th_edge=300 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_4] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_5] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=300 +th_edge=400 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_6] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=350 +th_edge=450 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_7] +noise_level=72 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=311 +th_edge=500 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_8] +noise_level=90 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=176 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_9] +noise_level=90 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=176 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=15 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_10] +noise_level=50 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=81 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=15 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_11] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_12] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_13] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_14] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_15] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[YCURVE] +enable=0 +ycurve_lut=0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,93,95,97,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,255 +[SHDR_EXT] +fcurve_y_w_lut=255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255 +[CST] +cst_coef=77,150,29,-43,-85,128,128,-107,-21 +y_ofs=0 +cb_ofs=128 +cr_ofs=128 +[TOOL_PARAMS] +Gamma_VirtualGamma=13,13 +Gamma_VirtualBlack=0,0 +Gamma_VirtualContrast=100,100 +Gamma_VirtualManual0=0,2,4,6,8,12,16,24,32,48,64,96,128 +Gamma_VirtualManual1=0,2,4,6,8,12,16,24,32,48,64,96,128 +NR_VirtualOutlBright=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +NR_VirtualOutlDark=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +NR_VirtualFilterTH=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +NR_VirtualFilterTHB=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +NR_VirtualFilterLut=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +NR_VirtualFilterLutB=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +SHDR_VirtualContrast=100 +SHDR_VirtualDelta=1000 +SHDR_VirtualKnee=24576 +SHDR_VirtualBlendR=12 +TCurve_Linear_VirtualContrast=100 +TCurve_Linear_VirtualDelta=1000 +TCurve_Linear_VirtualKnee=1536 +TCurve_Linear_VirtualBlendR=12 +TCurve_SHDR_VirtualContrast=100,100,100,100,100 +TCurve_SHDR_VirtualDelta=1000,1000,1000,1000,1000 +TCurve_SHDR_VirtualKnee=1536,1536,1536,1536,1536 +TCurve_SHDR_VirtualBlendR=12,12,12,12,12 +WDR_VirtualDark=100 +WDR_VirtualBright=20 +YCurve_VirtualGamma=13 +YCurve_VirtualBlack=0 +YCurve_VirtualContrast=100 +YCurve_VirtualManual0=0,2,4,6,8,12,16,24,32,48,64,96,128 diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/isp_imx290_0.cfg b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/isp_imx290_0.cfg new file mode 100755 index 000000000..2c11eb631 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/isp_imx290_0.cfg @@ -0,0 +1,2389 @@ +[INFO] +# NVT9856x ISP Config +sensor=imx290 +isp_version=0x01000000 +ae_version=0x01000100 +awb_version=0x01000000 +iq_version=0x01000300 +tool_version=0x01000400 + +[NVT_AE] +expect_lum_mov=47 +expect_lum_photo=64 +expect_ratio_mov=73,74,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 +expect_ratio_photo=100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 +la_clamp_tab_normal_h=255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255 +la_clamp_tab_normal_l=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +la_clamp_tab_shdr_h=125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125 +la_clamp_tab_shdr_l=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +over_exp_enable=1 +over_exp_lum=150 +over_exp_speed=3 +over_exp_ratio=100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 +over_exp_thr_mov=2,2,3,3,3,3,4,5,6,7,8,9,10,10,10,10,10,10,10,10,10 +over_exp_thr_photo=2,2,3,3,3,3,4,5,6,7,8,9,10,10,10,10,10,10,10,10,10 +over_exp_maxcnt=10,10,10,10,10,10,10,10,10,12,15,15,15,15,15,15,15,15,15,15,15 +over_exp_mincnt=3,3,3,3,3,3,3,3,3,5,8,8,8,8,8,8,8,8,8,8,8 +conv_skip_frame=1 +conv_speed=128 +conv_range_conv=10,10 +conv_freeze_en=0 +conv_freeze_cyc=10 +conv_freeze_thr=100 +conv_slowshoot_en=0 +conv_slowshoot_range=30 +conv_slowshoot_thr=2 +conv_stable_counter=0 +curvegen_movie_iso_calcoef=40 +curvegen_movie_freq=0 +curvegen_movie_node0=57,100,0,0 +curvegen_movie_node1=20000,200,0,0 +curvegen_movie_node2=0,0,0,0 +curvegen_movie_node3=0,0,0,0 +curvegen_movie_node4=0,0,0,0 +curvegen_movie_node5=0,0,0,0 +curvegen_movie_node6=0,0,0,0 +curvegen_movie_node7=0,0,0,0 +curvegen_movie_node8=0,0,0,0 +curvegen_movie_node9=0,0,0,0 +curvegen_movie_node10=0,0,0,0 +curvegen_movie_node11=0,0,0,0 +curvegen_movie_node_num=2 +curvegen_movie_iso_max=102400 +curvegen_movie_hdr_ratio=1,16 +curvegen_movie_auto_lowlight_en=0 +curvegen_movie_extend_fps0=3000,1000 +curvegen_movie_extend_fps1=2400,2400 +curvegen_movie_extend_fps2=2000,2000 +curvegen_movie_extend_fps3=1500,1500 +curvegen_movie_extend_fps4=1200,1200 +curvegen_movie_iso_mode=0 +curvegen_movie_isp_gain_thres=99200 +curvegen_movie_flicker_mode=0 +win_weight0=1,1,1,1,1,1,1,1 +win_weight1=1,2,2,2,2,2,2,1 +win_weight2=1,2,3,3,3,3,2,1 +win_weight3=1,2,3,4,4,3,2,1 +win_weight4=1,2,3,4,4,3,2,1 +win_weight5=1,2,3,3,3,3,2,1 +win_weight6=1,2,2,2,2,2,2,1 +win_weight7=1,1,1,1,1,1,1,1 +lum_gamma=0,52,101,146,189,228,266,301,334,365,395,423,449,474,498,521,543,564,584,603,621,638,655,671,687,701,716,729,743,755,768,780,791,802,813,823,833,843,853,862,871,879,888,896,904,911,919,926,933,940,947,953,960,966,972,978,983,989,995,1000,1005,1010,1015,1020,1023 +shdr_expy_le=64 +shdr_tab_ratio_le=100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 +iris_en=0 +iris_min_exp=0 +iris_probe_balance=0 +iris_balance_ratio=110 +iris_driving_ratio=0 +iris_ctrl=3,1,1 +iris_pwm_id=-1 +iris_drv_max=200 +iris_freeze_time=500 +iris_unfreeze_time=1000 +iris_ctrl_dir_inv=0 +curvegen_photo_node0=1,100,0,0 +curvegen_photo_node1=33333,800,0,0 +curvegen_photo_node2=66666,1600,0,0 +curvegen_photo_node3=100000,3200,0,0 +curvegen_photo_node4=0,0,0,0 +curvegen_photo_node5=0,0,0,0 +curvegen_photo_node6=0,0,0,0 +curvegen_photo_node7=0,0,0,0 +curvegen_photo_node8=0,0,0,0 +curvegen_photo_node9=0,0,0,0 +curvegen_photo_node10=0,0,0,0 +curvegen_photo_node11=0,0,0,0 +curvegen_photo_node_num=4 +curvegen_photo_expt_max=66666 +curvegen_photo_iso_max=6400 +curvegen_photo_iso_mode=1 +curvegen_photo_isp_gain_thres=99200 +[NVT_AWB] +th_y=5,245 +th_rpb=69,261 +th_rsb=-50,131 +th_r2g=46,167 +th_b2g=23,94 +th_rmb=27,50 +lv_night=1,4 +lv_in=6,10 +lv_out=14,26 +ct_weight_ctmp=2300,2800,3700,4700,6500,11000 +ct_weight_cx=784,838,919,987,1066,1132 +ct_weight_out=1,1,1,1,1,1 +ct_weight_in=1,1,1,1,1,1 +ct_weight_night=1,1,1,1,1,1 +target_cx=838,987,1066 +target_rg_ratio=1024,1024,1024 +target_bg_ratio=1024,1024,1024 +ct_info_temperature=2300,2800,3700,4700,6500,11000 +ct_info_r_gain=245,281,365,432,490,623 +ct_info_g_gain=256,256,256,256,256,256 +ct_info_b_gain=964,796,667,534,392,344 +mwb_r_gain=256,480,480,249,285,256,256,256,256,256,256,256 +mwb_g_gain=256,256,256,256,256,256,256,256,256,256,256,256 +mwb_b_gain=256,377,320,839,806,256,256,256,256,256,256,256 +conv_skip_frame=1 +conv_speed=50 +conv_tolerance=259 +expand_block_mode=0,0,0,0 +expand_block_lv_l=6,6,6,6 +expand_block_lv_h=10,10,10,10 +expand_block_y_l=5,5,5,5 +expand_block_y_u=245,245,245,245 +expand_block_rpb_l=115,105,91,114 +expand_block_rpb_u=141,122,105,128 +expand_block_rsb_l=14,56,18,32 +expand_block_rsb_u=40,74,32,-53 +luma_weight_enable=0 +luma_weight_y=4,8,20,32,192,208,224,240 +luma_weight_w=1,1,1,1,1,1,1,1 +[OB] +mode=0 +[OB_M] +cofs=240,240,240,240,240 +[OB_0] +cofs=240,240,240,240,240 +[OB_1] +cofs=240,240,240,240,240 +[OB_2] +cofs=240,240,240,240,240 +[OB_3] +cofs=240,240,240,240,240 +[OB_4] +cofs=240,240,240,240,240 +[OB_5] +cofs=240,240,240,240,240 +[OB_6] +cofs=240,240,240,240,240 +[OB_7] +cofs=240,240,240,240,240 +[OB_8] +cofs=240,240,240,240,240 +[OB_9] +cofs=240,240,240,240,240 +[OB_10] +cofs=240,240,240,240,240 +[OB_11] +cofs=240,240,240,240,240 +[OB_12] +cofs=240,240,240,240,240 +[OB_13] +cofs=240,240,240,240,240 +[OB_14] +cofs=240,240,240,240,240 +[OB_15] +cofs=240,240,240,240,240 +[NR] +outl_enable=1 +gbal_enable=1 +filter_enable=1 +lca_enable=1 +dbcs_enable=1 +mode=0 +[NR_M] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=4095,4095,4095,4095,4095 +outl_dark_th=4095,4095,4095,4095,4095 +gbal_diff_th_str=256 +gbal_edge_protect_th=128 +filter_th=0,0,0,0,0,0 +filter_lut=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +filter_th_b=0,0,0,0,0,0 +filter_lut_b=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=0 +lca_sub_center_filter_c=0 +lca_sub_filter_y=0 +lca_sub_filter_c=0 +lca_out_y_wt=0 +lca_out_c_wt=0 +dbcs_step_y=2 +dbcs_step_c=2 +[NR_0] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1900,3135,4095,4095 +outl_dark_th=32,1900,3135,4095,4095 +gbal_diff_th_str=2 +gbal_edge_protect_th=128 +filter_th=0,0,0,0,0,0 +filter_lut=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +filter_th_b=0,0,0,0,0,0 +filter_lut_b=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=64 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=0 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_1] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1900,3135,4095,4095 +outl_dark_th=32,1900,3135,4095,4095 +gbal_diff_th_str=2 +gbal_edge_protect_th=128 +filter_th=0,0,0,1,1,1 +filter_lut=0,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4 +filter_th_b=0,1,2,3,3,4 +filter_lut_b=0,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=64 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=0 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_2] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1723,2843,4095,4095 +outl_dark_th=32,1723,2843,4095,4095 +gbal_diff_th_str=2 +gbal_edge_protect_th=128 +filter_th=0,1,1,2,2,3 +filter_lut=0,2,3,4,4,5,5,6,6,7,7,7,8,8,8,9,9 +filter_th_b=0,3,4,6,7,9 +filter_lut_b=0,2,3,4,4,5,5,6,6,7,7,7,8,8,8,9,9 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=64 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=0 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_3] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1604,2647,3838,4095 +outl_dark_th=32,1604,2647,3838,4095 +gbal_diff_th_str=2 +gbal_edge_protect_th=128 +filter_th=0,1,2,3,3,4 +filter_lut=0,3,4,5,6,7,7,8,9,9,10,10,11,11,11,12,12 +filter_th_b=0,5,7,9,10,14 +filter_lut_b=0,3,4,5,6,7,7,8,9,9,10,10,11,11,11,12,12 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=64 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=2 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_4] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1485,2450,3553,4095 +outl_dark_th=32,1485,2450,3553,4095 +gbal_diff_th_str=6 +gbal_edge_protect_th=128 +filter_th=0,2,3,4,4,6 +filter_lut=0,4,5,6,8,8,9,10,11,12,12,13,13,14,14,15,16 +filter_th_b=0,7,9,12,14,19 +filter_lut_b=0,4,5,6,8,8,9,10,11,12,12,13,13,14,14,15,16 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=64 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=4 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_5] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1366,2254,3268,4095 +outl_dark_th=32,1366,2254,3268,4095 +gbal_diff_th_str=8 +gbal_edge_protect_th=128 +filter_th=0,3,5,6,7,10 +filter_lut=0,6,8,10,12,13,14,15,16,18,18,19,20,21,22,23,24 +filter_th_b=0,11,16,19,22,32 +filter_lut_b=0,6,8,10,12,13,14,15,16,18,18,19,20,21,22,23,24 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=64 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=6 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_6] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1247,2058,2984,4095 +outl_dark_th=32,1247,2058,2984,4095 +gbal_diff_th_str=15 +gbal_edge_protect_th=128 +filter_th=0,5,7,9,10,14 +filter_lut=0,9,13,15,18,20,22,24,26,27,29,30,31,33,34,35,36 +filter_th_b=0,15,22,27,31,44 +filter_lut_b=0,9,13,15,18,20,22,24,26,27,29,30,31,33,34,35,36 +filter_blend_w=8 +filter_clamp_th=32 +filter_clamp_mul=64 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=8 +dbcs_step_y=1 +dbcs_step_c=1 +[NR_7] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1128,1861,2698,4095 +outl_dark_th=32,1128,1861,2698,4095 +gbal_diff_th_str=30 +gbal_edge_protect_th=128 +filter_th=0,7,11,13,15,22 +filter_lut=0,22,31,38,44,49,53,58,62,66,69,72,76,79,82,85,88 +filter_th_b=0,20,29,36,41,59 +filter_lut_b=0,22,31,38,44,49,53,58,62,66,69,72,76,79,82,85,88 +filter_blend_w=15 +filter_clamp_th=32 +filter_clamp_mul=64 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=20 +lca_sub_filter_y=16 +lca_sub_filter_c=20 +lca_out_y_wt=4 +lca_out_c_wt=16 +dbcs_step_y=1 +dbcs_step_c=2 +[NR_8] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1128,1861,2698,4095 +outl_dark_th=32,1128,1861,2698,4095 +gbal_diff_th_str=60 +gbal_edge_protect_th=128 +filter_th=0,8,12,14,17,24 +filter_lut=0,38,54,66,76,85,94,101,108,115,121,127,133,138,143,148,153 +filter_th_b=0,25,36,44,51,72 +filter_lut_b=0,38,54,66,76,85,94,101,108,115,121,127,133,138,143,148,153 +filter_blend_w=15 +filter_clamp_th=32 +filter_clamp_mul=64 +lca_sub_center_filter_y=20 +lca_sub_center_filter_c=24 +lca_sub_filter_y=20 +lca_sub_filter_c=24 +lca_out_y_wt=4 +lca_out_c_wt=18 +dbcs_step_y=1 +dbcs_step_c=2 +[NR_9] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1128,1861,2698,4095 +outl_dark_th=32,1128,1861,2698,4095 +gbal_diff_th_str=90 +gbal_edge_protect_th=128 +filter_th=0,11,16,19,22,32 +filter_lut=0,51,72,88,102,114,125,135,144,153,161,169,177,184,191,198,204 +filter_th_b=0,33,47,58,67,94 +filter_lut_b=0,51,72,88,102,114,125,135,144,153,161,169,177,184,191,198,204 +filter_blend_w=15 +filter_clamp_th=32 +filter_clamp_mul=64 +lca_sub_center_filter_y=24 +lca_sub_center_filter_c=28 +lca_sub_filter_y=24 +lca_sub_filter_c=28 +lca_out_y_wt=6 +lca_out_c_wt=20 +dbcs_step_y=1 +dbcs_step_c=2 +[NR_10] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1128,1861,2698,4095 +outl_dark_th=32,1128,1861,2698,4095 +gbal_diff_th_str=90 +gbal_edge_protect_th=128 +filter_th=0,13,19,23,27,38 +filter_lut=0,21,29,36,42,47,51,56,59,63,67,70,73,76,79,82,84 +filter_th_b=0,40,57,70,81,114 +filter_lut_b=0,64,90,110,128,143,156,169,181,192,202,212,221,230,239,247,256 +filter_blend_w=15 +filter_clamp_th=32 +filter_clamp_mul=64 +lca_sub_center_filter_y=28 +lca_sub_center_filter_c=32 +lca_sub_filter_y=28 +lca_sub_filter_c=32 +lca_out_y_wt=10 +lca_out_c_wt=24 +dbcs_step_y=1 +dbcs_step_c=2 +[NR_11] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1128,1861,2698,4095 +outl_dark_th=32,1128,1861,2698,4095 +gbal_diff_th_str=90 +gbal_edge_protect_th=128 +filter_th=0,13,19,23,27,38 +filter_lut=0,21,29,36,42,47,51,56,59,63,67,70,73,76,79,82,84 +filter_th_b=0,40,57,70,81,114 +filter_lut_b=0,64,90,110,128,143,156,169,181,192,202,212,221,230,239,247,256 +filter_blend_w=15 +filter_clamp_th=32 +filter_clamp_mul=64 +lca_sub_center_filter_y=28 +lca_sub_center_filter_c=32 +lca_sub_filter_y=28 +lca_sub_filter_c=32 +lca_out_y_wt=10 +lca_out_c_wt=24 +dbcs_step_y=1 +dbcs_step_c=2 +[NR_12] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1128,1861,2698,4095 +outl_dark_th=32,1128,1861,2698,4095 +gbal_diff_th_str=90 +gbal_edge_protect_th=128 +filter_th=0,13,19,23,27,38 +filter_lut=0,21,29,36,42,47,51,56,59,63,67,70,73,76,79,82,84 +filter_th_b=0,40,57,70,81,114 +filter_lut_b=0,64,90,110,128,143,156,169,181,192,202,212,221,230,239,247,256 +filter_blend_w=15 +filter_clamp_th=32 +filter_clamp_mul=64 +lca_sub_center_filter_y=28 +lca_sub_center_filter_c=32 +lca_sub_filter_y=28 +lca_sub_filter_c=32 +lca_out_y_wt=10 +lca_out_c_wt=24 +dbcs_step_y=1 +dbcs_step_c=2 +[NR_13] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1128,1861,2698,4095 +outl_dark_th=32,1128,1861,2698,4095 +gbal_diff_th_str=90 +gbal_edge_protect_th=128 +filter_th=0,13,19,23,27,38 +filter_lut=0,21,29,36,42,47,51,56,59,63,67,70,73,76,79,82,84 +filter_th_b=0,40,57,70,81,114 +filter_lut_b=0,64,90,110,128,143,156,169,181,192,202,212,221,230,239,247,256 +filter_blend_w=15 +filter_clamp_th=32 +filter_clamp_mul=64 +lca_sub_center_filter_y=28 +lca_sub_center_filter_c=32 +lca_sub_filter_y=28 +lca_sub_filter_c=32 +lca_out_y_wt=10 +lca_out_c_wt=24 +dbcs_step_y=1 +dbcs_step_c=2 +[NR_14] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1128,1861,2698,4095 +outl_dark_th=32,1128,1861,2698,4095 +gbal_diff_th_str=90 +gbal_edge_protect_th=128 +filter_th=0,13,19,23,27,38 +filter_lut=0,21,29,36,42,47,51,56,59,63,67,70,73,76,79,82,84 +filter_th_b=0,40,57,70,81,114 +filter_lut_b=0,64,90,110,128,143,156,169,181,192,202,212,221,230,239,247,256 +filter_blend_w=15 +filter_clamp_th=32 +filter_clamp_mul=64 +lca_sub_center_filter_y=28 +lca_sub_center_filter_c=32 +lca_sub_filter_y=28 +lca_sub_filter_c=32 +lca_out_y_wt=10 +lca_out_c_wt=24 +dbcs_step_y=1 +dbcs_step_c=2 +[NR_15] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1128,1861,2698,4095 +outl_dark_th=32,1128,1861,2698,4095 +gbal_diff_th_str=90 +gbal_edge_protect_th=128 +filter_th=0,13,19,23,27,38 +filter_lut=0,21,29,36,42,47,51,56,59,63,67,70,73,76,79,82,84 +filter_th_b=0,40,57,70,81,114 +filter_lut_b=0,64,90,110,128,143,156,169,181,192,202,212,221,230,239,247,256 +filter_blend_w=15 +filter_clamp_th=32 +filter_clamp_mul=64 +lca_sub_center_filter_y=28 +lca_sub_center_filter_c=32 +lca_sub_filter_y=28 +lca_sub_filter_c=32 +lca_out_y_wt=10 +lca_out_c_wt=24 +dbcs_step_y=1 +dbcs_step_c=2 +[CFA] +mode=0 +[CFA_M] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_0] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_1] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_2] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_3] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_4] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_5] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_6] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=48 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_7] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_8] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_9] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_10] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_11] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_12] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_13] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_14] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_15] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[VA] +mode=0 +indep_roi_0=0,0,1000,1000 +indep_roi_1=0,0,1000,1000 +indep_roi_2=0,0,1000,1000 +indep_roi_3=0,0,1000,1000 +indep_roi_4=0,0,1000,1000 +g1=0,0,-1,0,2 +g2=2,0,-1,0,3 +[VA_M] +g1_th=0,0 +g2_th=0,0 +[VA_0] +g1_th=0,0 +g2_th=0,0 +[VA_1] +g1_th=0,0 +g2_th=0,0 +[VA_2] +g1_th=0,0 +g2_th=0,0 +[VA_3] +g1_th=0,0 +g2_th=0,0 +[VA_4] +g1_th=0,0 +g2_th=0,0 +[VA_5] +g1_th=0,0 +g2_th=0,0 +[VA_6] +g1_th=0,0 +g2_th=0,0 +[VA_7] +g1_th=0,0 +g2_th=0,0 +[VA_8] +g1_th=0,0 +g2_th=0,0 +[VA_9] +g1_th=0,0 +g2_th=0,0 +[VA_10] +g1_th=0,0 +g2_th=0,0 +[VA_11] +g1_th=0,0 +g2_th=0,0 +[VA_12] +g1_th=0,0 +g2_th=0,0 +[VA_13] +g1_th=0,0 +g2_th=0,0 +[VA_14] +g1_th=0,0 +g2_th=0,0 +[VA_15] +g1_th=0,0 +g2_th=0,0 +[GAMMA] +tone_enable=0 +gamma_enable=1 +mode=1 +tone_input_blend_lut=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +tone_lut_linear_idx=0,8,16,24,28,32,36,38,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63 +tone_lut_linear_split=3,3,3,2,2,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +tone_lut_linear_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +tone_lut_shdr_idx=0,8,16,24,28,32,36,38,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63 +tone_lut_shdr_split=3,3,3,2,2,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +tone_lut_shdr_set_num=5 +tone_lut_shdr_set0_lv=0 +tone_lut_shdr_set0_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +tone_lut_shdr_set1_lv=25 +tone_lut_shdr_set1_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +tone_lut_shdr_set2_lv=50 +tone_lut_shdr_set2_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +tone_lut_shdr_set3_lv=75 +tone_lut_shdr_set3_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +tone_lut_shdr_set4_lv=100 +tone_lut_shdr_set4_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +[GAMMA_M] +gamma_lut=0,37,73,107,139,169,198,225,241,257,273,289,304,318,333,347,360,373,386,399,411,422,433,444,455,465,475,484,493,502,510,518,525,532,539,546,553,560,566,573,580,587,594,601,607,614,621,627,634,640,647,653,659,666,672,678,684,691,697,703,709,715,721,727,733,739,744,750,756,762,767,772,777,782,787,792,797,801,806,811,816,821,826,830,835,840,845,849,854,859,863,868,872,877,882,886,891,895,900,904,908,913,917,921,926,930,934,939,943,947,951,955,959,964,968,972,976,980,984,988,992,996,1000,1003,1007,1011,1015,1019,1023 +[GAMMA_0] +lv=6 +gamma_lut=0,37,73,107,139,169,198,225,241,257,273,289,304,318,333,347,360,373,386,399,411,422,433,444,455,465,475,484,493,502,510,518,525,532,539,546,553,560,566,573,580,587,594,601,607,614,621,627,634,640,647,653,659,666,672,678,684,691,697,703,709,715,721,727,733,739,744,750,756,762,767,772,777,782,787,792,797,801,806,811,816,821,826,830,835,840,845,849,854,859,863,868,872,877,882,886,891,895,900,904,908,913,917,921,926,930,934,939,943,947,951,955,959,964,968,972,976,980,984,988,992,996,1000,1003,1007,1011,1015,1019,1023 +[GAMMA_1] +lv=4 +gamma_lut=0,37,73,107,139,169,198,225,241,257,273,289,304,318,333,347,360,373,386,399,411,422,433,444,455,465,475,484,493,502,510,518,525,532,539,546,553,560,566,573,580,587,594,601,607,614,621,627,634,640,647,653,659,666,672,678,684,691,697,703,709,715,721,727,733,739,744,750,756,762,767,772,777,782,787,792,797,801,806,811,816,821,826,830,835,840,845,849,854,859,863,868,872,877,882,886,891,895,900,904,908,913,917,921,926,930,934,939,943,947,951,955,959,964,968,972,976,980,984,988,992,996,1000,1003,1007,1011,1015,1019,1023 +[CCM] +mode=0 +[CCM_M] +coef=382,-47,-78,-97,476,-123,19,-180,417 +hue_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +sat_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CCM_0] +ct=6500 +coef=382,-47,-78,-97,476,-123,19,-180,417 +hue_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +sat_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CCM_1] +ct=3700 +coef=358,-59,-43,-140,439,-43,17,-180,418 +hue_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +sat_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CCM_2] +ct=2800 +coef=209,109,-63,-152,441,-33,-11,-197,464 +hue_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +sat_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[COLOR] +mode=0 +[COLOR_M] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_0] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_1] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_2] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_3] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_4] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_5] +c_con=128 +fstab=192,96,32,4,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_6] +c_con=128 +fstab=255,128,64,16,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_7] +c_con=128 +fstab=255,192,128,64,16,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=80,90,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_8] +c_con=128 +fstab=255,255,192,128,64,16,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=80,90,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_9] +c_con=128 +fstab=255,255,192,128,64,16,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=60,80,90,100,120,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_10] +c_con=128 +fstab=255,255,192,128,64,16,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=60,80,90,100,120,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_11] +c_con=128 +fstab=255,255,192,128,64,16,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=60,80,90,100,120,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_12] +c_con=128 +fstab=255,255,192,128,64,16,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=60,80,90,100,120,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_13] +c_con=128 +fstab=255,255,192,128,64,16,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=60,80,90,100,120,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_14] +c_con=128 +fstab=255,255,192,128,64,16,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=60,80,90,100,120,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_15] +c_con=128 +fstab=255,255,192,128,64,16,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=60,80,90,100,120,128,128,128,128,128,128,128,128,128,128,128,128 +[CONTRAST] +mode=0 +[CONTRAST_M] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_0] +y_con=128 +lce_lum_wt_lut=10,10,10,10,10,10,10,10,10 +[CONTRAST_1] +y_con=128 +lce_lum_wt_lut=10,10,10,10,10,10,10,10,10 +[CONTRAST_2] +y_con=128 +lce_lum_wt_lut=10,10,10,10,10,10,10,10,10 +[CONTRAST_3] +y_con=128 +lce_lum_wt_lut=10,10,10,10,10,10,10,10,10 +[CONTRAST_4] +y_con=128 +lce_lum_wt_lut=5,5,5,5,5,5,5,5,5 +[CONTRAST_5] +y_con=128 +lce_lum_wt_lut=5,5,5,5,5,5,5,5,5 +[CONTRAST_6] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_7] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_8] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_9] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_10] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_11] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_12] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_13] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_14] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_15] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[EDGE] +enable=1 +mode=0 +th_overshoot=128 +th_undershoot=49 +edge_map_lut=100,120,140,160,180,200,224,255,255,224,192,170,154,144,136,128 +es_map_lut=32,45,53,64,64,64,64,64,64,64,64,64,64,53,45,32 +edge_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +reduce_ratio=64 +[EDGE_M] +edge_enh=128,128 +thin_freq=8 +robust_freq=0 +wt=0,16 +th_flat_low=8 +th_flat_high=40 +th_edge_low=240 +th_edge_high=256 +str_flat=64 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,128,0,2 +es_map_th=0,512,0,5 +[EDGE_0] +edge_enh=100,100 +thin_freq=16 +robust_freq=0 +wt=16,16 +th_flat_low=18 +th_flat_high=50 +th_edge_low=100 +th_edge_high=132 +str_flat=48 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_1] +edge_enh=100,100 +thin_freq=16 +robust_freq=0 +wt=16,16 +th_flat_low=28 +th_flat_high=60 +th_edge_low=110 +th_edge_high=142 +str_flat=48 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_2] +edge_enh=100,100 +thin_freq=16 +robust_freq=0 +wt=16,16 +th_flat_low=32 +th_flat_high=80 +th_edge_low=120 +th_edge_high=152 +str_flat=48 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_3] +edge_enh=100,100 +thin_freq=16 +robust_freq=0 +wt=16,16 +th_flat_low=36 +th_flat_high=100 +th_edge_low=130 +th_edge_high=162 +str_flat=40 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_4] +edge_enh=100,100 +thin_freq=16 +robust_freq=0 +wt=12,12 +th_flat_low=46 +th_flat_high=110 +th_edge_low=140 +th_edge_high=172 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_5] +edge_enh=100,100 +thin_freq=16 +robust_freq=0 +wt=8,8 +th_flat_low=86 +th_flat_high=150 +th_edge_low=180 +th_edge_high=212 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_6] +edge_enh=100,100 +thin_freq=16 +robust_freq=0 +wt=8,8 +th_flat_low=176 +th_flat_high=240 +th_edge_low=270 +th_edge_high=302 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_7] +edge_enh=100,100 +thin_freq=16 +robust_freq=0 +wt=8,8 +th_flat_low=266 +th_flat_high=330 +th_edge_low=360 +th_edge_high=392 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_8] +edge_enh=100,100 +thin_freq=16 +robust_freq=0 +wt=4,4 +th_flat_low=306 +th_flat_high=370 +th_edge_low=400 +th_edge_high=432 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_9] +edge_enh=90,90 +thin_freq=16 +robust_freq=0 +wt=2,2 +th_flat_low=350 +th_flat_high=450 +th_edge_low=480 +th_edge_high=512 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,2,5 +es_map_th=0,512,0,5 +[EDGE_10] +edge_enh=80,80 +thin_freq=16 +robust_freq=0 +wt=0,0 +th_flat_low=450 +th_flat_high=500 +th_edge_low=530 +th_edge_high=562 +str_flat=16 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,2,5 +es_map_th=0,512,0,5 +[EDGE_11] +edge_enh=80,80 +thin_freq=16 +robust_freq=0 +wt=0,0 +th_flat_low=450 +th_flat_high=500 +th_edge_low=530 +th_edge_high=562 +str_flat=16 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,2,5 +es_map_th=0,512,0,5 +[EDGE_12] +edge_enh=80,80 +thin_freq=16 +robust_freq=0 +wt=0,0 +th_flat_low=450 +th_flat_high=500 +th_edge_low=530 +th_edge_high=562 +str_flat=16 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,2,5 +es_map_th=0,512,0,5 +[EDGE_13] +edge_enh=80,80 +thin_freq=16 +robust_freq=0 +wt=0,0 +th_flat_low=450 +th_flat_high=500 +th_edge_low=530 +th_edge_high=562 +str_flat=16 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,2,5 +es_map_th=0,512,0,5 +[EDGE_14] +edge_enh=80,80 +thin_freq=16 +robust_freq=0 +wt=0,0 +th_flat_low=450 +th_flat_high=500 +th_edge_low=530 +th_edge_high=562 +str_flat=16 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,2,5 +es_map_th=0,512,0,5 +[EDGE_15] +edge_enh=80,80 +thin_freq=16 +robust_freq=0 +wt=0,0 +th_flat_low=450 +th_flat_high=500 +th_edge_low=530 +th_edge_high=562 +str_flat=16 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,2,5 +es_map_th=0,512,0,5 +[3DNR] +enable=1 +fcvg_enable=0 +mode=0 +[3DNR_M] +pf_type=0 +cost_blend=15 +sad_penalty=64,64,0,128,128,128,200,200 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=5,5,6,6,7,7,8,8 +switch_rto=128 +probability=4 +sad_base=0,0,0,0,0,0,0,0 +sad_coefa=0,0,0,0,0,0,0,0 +sad_coefb=0,0,0,0,0,0,0,0 +sad_std=0,0,0,0,0,0,0,0 +fth=8,16 +mv_th=4 +mix_ratio=16,32 +ds_th=6 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=16,32,48,64 +pre_filter_rto=128,64 +snr_base_th=256 +tnr_base_th=256 +freq_wet=16,16,16,16 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=8,16,64 +tnr_str=64,16,8 +luma_3d_lut=0,6,12,24,40,76,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,6,12,24,40,76,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_0] +pf_type=0 +cost_blend=8 +sad_penalty=32,32,0,48,48,48,64,64 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=180 +probability=8 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=7,8,7,7,6,6,6,6 +sad_coefb=80,90,80,70,60,60,60,60 +sad_std=25,30,25,20,20,20,20,20 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=16,0,0 +tf0_c_str=16,0,0 +pre_filter_str=8,10,12,14 +pre_filter_rto=64,16 +snr_base_th=300 +tnr_base_th=200 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,32 +tnr_str=16,4,2 +luma_3d_lut=0,12,24,43,62,80,96,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,9,22,40,57,75,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_1] +pf_type=0 +cost_blend=8 +sad_penalty=32,32,0,64,64,64,80,80 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=180 +probability=8 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=8,9,8,8,7,7,7,7 +sad_coefb=80,90,80,70,60,60,60,60 +sad_std=25,30,25,20,20,20,20,20 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=16,0,0 +tf0_c_str=16,0,0 +pre_filter_str=8,10,12,14 +pre_filter_rto=64,16 +snr_base_th=400 +tnr_base_th=300 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,32 +tnr_str=16,4,2 +luma_3d_lut=0,10,22,40,62,80,96,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,9,22,40,57,75,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_2] +pf_type=0 +cost_blend=8 +sad_penalty=64,64,0,96,96,96,156,156 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=180 +probability=8 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=9,10,9,9,8,8,8,8 +sad_coefb=90,100,90,70,60,60,60,60 +sad_std=30,40,30,25,25,25,25,25 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=0,128,128 +tf0_y_str=16,0,0 +tf0_c_str=16,0,0 +pre_filter_str=12,15,18,22 +pre_filter_rto=64,32 +snr_base_th=400 +tnr_base_th=400 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,32 +tnr_str=32,4,2 +luma_3d_lut=0,10,22,40,62,80,96,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,9,22,40,57,75,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_3] +pf_type=1 +cost_blend=8 +sad_penalty=80,80,0,128,128,128,256,256 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=140 +probability=6 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=10,11,10,10,9,9,9,9 +sad_coefb=100,110,100,80,70,70,70,70 +sad_std=35,45,35,30,30,30,30,30 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,3,3 +chroma_residue_th=1 +tf0_blur_str=0,128,128 +tf0_y_str=16,0,0 +tf0_c_str=16,0,0 +pre_filter_str=12,15,18,22 +pre_filter_rto=64,32 +snr_base_th=400 +tnr_base_th=400 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,32 +tnr_str=32,8,2 +luma_3d_lut=0,10,22,40,62,80,96,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,9,22,40,57,75,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_4] +pf_type=1 +cost_blend=8 +sad_penalty=96,96,0,192,192,192,384,384 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=6 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=11,12,11,11,10,10,10,10 +sad_coefb=110,120,110,90,80,80,80,80 +sad_std=40,50,40,35,35,35,35,35 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,3,3 +chroma_residue_th=1 +tf0_blur_str=0,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=16,20,24,28 +pre_filter_rto=64,32 +snr_base_th=400 +tnr_base_th=400 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,32 +tnr_str=32,8,2 +luma_3d_lut=0,10,22,40,62,80,96,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,9,22,40,57,75,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_5] +pf_type=1 +cost_blend=8 +sad_penalty=96,96,0,192,192,192,384,384 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=6 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=12,13,12,12,11,11,11,19 +sad_coefb=120,130,120,100,90,90,90,90 +sad_std=45,55,45,40,40,40,40,40 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,1 +chroma_residue_th=1 +tf0_blur_str=0,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=16,20,24,28 +pre_filter_rto=64,32 +snr_base_th=500 +tnr_base_th=500 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,32 +tnr_str=32,8,2 +luma_3d_lut=0,10,22,40,62,80,96,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,9,22,40,57,75,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_6] +pf_type=1 +cost_blend=8 +sad_penalty=128,128,0,225,225,225,480,480 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=6 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=13,14,13,13,12,12,12,20 +sad_coefb=160,170,160,140,130,130,130,130 +sad_std=50,60,50,45,45,45,45,45 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=0,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=20,30,40,50 +pre_filter_rto=128,64 +snr_base_th=500 +tnr_base_th=500 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,32 +tnr_str=32,8,2 +luma_3d_lut=0,10,22,40,62,80,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,9,22,40,57,75,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_7] +pf_type=2 +cost_blend=8 +sad_penalty=350,350,0,700,700,700,900,900 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=5 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=14,15,14,14,13,13,13,13 +sad_coefb=340,340,280,210,200,200,200,200 +sad_std=75,75,65,60,50,50,50,50 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,3 +chroma_residue_th=1 +tf0_blur_str=32,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=30,40,50,60 +pre_filter_rto=128,64 +snr_base_th=700 +tnr_base_th=700 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,64 +tnr_str=32,8,2 +luma_3d_lut=0,10,22,40,62,80,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,8,20,36,55,75,96,112 +chroma_3d_rto=0,0 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_8] +pf_type=2 +cost_blend=8 +sad_penalty=400,400,0,800,800,800,1023,1023 +detail_penalty=3,3,2,3,3,3,3,3 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=5 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=15,16,15,15,14,14,14,18 +sad_coefb=440,440,380,310,300,300,300,300 +sad_std=75,75,65,60,50,50,50,50 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,3 +chroma_residue_th=1 +tf0_blur_str=32,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=40,55,70,85 +pre_filter_rto=128,64 +snr_base_th=700 +tnr_base_th=700 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,64 +tnr_str=32,8,2 +luma_3d_lut=0,10,22,40,62,80,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,6,18,34,55,75,96,112 +chroma_3d_rto=0,0 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_9] +pf_type=2 +cost_blend=8 +sad_penalty=400,400,0,800,800,800,1023,1023 +detail_penalty=2,2,1,2,2,2,2,2 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=5 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=16,17,16,16,15,15,15,15 +sad_coefb=540,540,480,410,400,400,400,400 +sad_std=85,85,75,70,60,60,60,60 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,3 +chroma_residue_th=1 +tf0_blur_str=32,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=55,70,85,140 +pre_filter_rto=128,64 +snr_base_th=1000 +tnr_base_th=700 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,64 +tnr_str=32,8,2 +luma_3d_lut=0,8,20,38,60,80,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,6,18,34,55,75,96,112 +chroma_3d_rto=0,0 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_10] +pf_type=2 +cost_blend=8 +sad_penalty=400,400,0,800,800,800,1023,1023 +detail_penalty=2,2,1,2,2,2,2,2 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=5 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=17,19,17,17,16,16,16,16 +sad_coefb=640,640,590,540,440,440,440,440 +sad_std=95,95,85,80,70,70,70,70 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=32,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=70,85,100,115 +pre_filter_rto=128,64 +snr_base_th=1000 +tnr_base_th=1000 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,64 +tnr_str=32,8,2 +luma_3d_lut=0,6,18,34,54,78,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,0,12,34,55,75,96,112 +chroma_3d_rto=0,0 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_11] +pf_type=2 +cost_blend=8 +sad_penalty=400,400,0,800,800,800,1023,1023 +detail_penalty=2,2,1,2,2,2,2,2 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=5 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=17,19,17,17,16,16,16,16 +sad_coefb=640,640,590,540,440,440,440,440 +sad_std=95,95,85,80,70,70,70,70 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=32,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=70,85,100,115 +pre_filter_rto=128,64 +snr_base_th=1000 +tnr_base_th=1000 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,64 +tnr_str=32,8,2 +luma_3d_lut=0,6,18,34,54,78,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,0,12,34,55,75,96,112 +chroma_3d_rto=0,0 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_12] +pf_type=2 +cost_blend=8 +sad_penalty=400,400,0,800,800,800,1023,1023 +detail_penalty=2,2,1,2,2,2,2,2 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=5 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=17,19,17,17,16,16,16,16 +sad_coefb=640,640,590,540,440,440,440,440 +sad_std=95,95,85,80,70,70,70,70 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=32,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=70,85,100,115 +pre_filter_rto=128,64 +snr_base_th=1000 +tnr_base_th=1000 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,64 +tnr_str=32,8,2 +luma_3d_lut=0,6,18,34,54,78,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,0,12,34,55,75,96,112 +chroma_3d_rto=0,0 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_13] +pf_type=2 +cost_blend=8 +sad_penalty=400,400,0,800,800,800,1023,1023 +detail_penalty=2,2,1,2,2,2,2,2 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=5 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=17,19,17,17,16,16,16,16 +sad_coefb=640,640,590,540,440,440,440,440 +sad_std=95,95,85,80,70,70,70,70 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=32,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=70,85,100,115 +pre_filter_rto=128,64 +snr_base_th=1000 +tnr_base_th=1000 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,64 +tnr_str=32,8,2 +luma_3d_lut=0,6,18,34,54,78,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,0,12,34,55,75,96,112 +chroma_3d_rto=0,0 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_14] +pf_type=2 +cost_blend=8 +sad_penalty=400,400,0,800,800,800,1023,1023 +detail_penalty=2,2,1,2,2,2,2,2 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=5 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=17,19,17,17,16,16,16,16 +sad_coefb=640,640,590,540,440,440,440,440 +sad_std=95,95,85,80,70,70,70,70 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=32,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=70,85,100,115 +pre_filter_rto=128,64 +snr_base_th=1000 +tnr_base_th=1000 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,64 +tnr_str=32,8,2 +luma_3d_lut=0,6,18,34,54,78,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,0,12,34,55,75,96,112 +chroma_3d_rto=0,0 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_15] +pf_type=2 +cost_blend=8 +sad_penalty=400,400,0,800,800,800,1023,1023 +detail_penalty=2,2,1,2,2,2,2,2 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=5 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=17,19,17,17,16,16,16,16 +sad_coefb=640,640,590,540,440,440,440,440 +sad_std=95,95,85,80,70,70,70,70 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=32,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=70,85,100,115 +pre_filter_rto=128,64 +snr_base_th=1000 +tnr_base_th=1000 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,64 +tnr_str=32,8,2 +luma_3d_lut=0,6,18,34,54,78,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,0,12,34,55,75,96,112 +chroma_3d_rto=0,0 +fcvg_start_point=4 +fcvg_step_size=1 +[DPC] +enable=0 +bin_file=/mnt/app/isp/dpc_table.bin +[SHADING] +ecs_enable=0 +vig_enable=0 +ecs_bin_file=/mnt/app/isp/ecs_table.bin +vig_center_x=500 +vig_center_y=500 +vig_reduce_th=400 +vig_zero_th=1600 +vig_lut=0,1,4,7,10,13,23,36,57,82,112,144,198,259,375,586,1023 +[SHADING_INTER] +mode=1 +ecs_smooth_l_m_ct_lower=3200 +ecs_smooth_l_m_ct_upper=3400 +ecs_smooth_m_h_ct_lower=4800 +ecs_smooth_m_h_ct_upper=5000 +[SHADING_EXT] +ecs_ext_0_bin_file=/mnt/app/isp/ecs_table.bin +ecs_ext_1_bin_file=/mnt/app/isp/ecs_table.bin +ecs_ext_2_bin_file=/mnt/app/isp/ecs_table.bin +[LDC] +geo_enable=1 +lut_2d_enable=0 +geo_center_x=500 +geo_center_y=500 +geo_fov_gain=1024 +geo_lut_g=65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535 +geo_r_lut_gain=4096 +geo_b_lut_gain=4096 +lut2d_bin_file=/mnt/app/isp/lut2d_table.bin +[WDR] +enable=1 +mode=0 +subimg_size_h=32 +subimg_size_v=18 +contrast=128 +max_gain=5 +min_gain=3 +lut_idx=0,1,3,7,15,23,31,35,39,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63 +lut_split=0,1,2,3,3,3,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +lut_val=4095,4070,4006,3881,3791,3684,3560,3422,3348,3271,3192,3111,3029,2945,2862,2778,2694,2611,2529,2448,2369,2291,2215,2142,2070,2001,1934,1869,1807,1747,1689,1634,1531,1436,1350,1272,1200,1136,1077,1024,932,855,740,660,603,561,530,507,489,476,465,456,449,443,439,435,432,429,427,425,423,422,420,419,418 +[WDR_M] +strength=32 +[WDR_0] +level=80 +strength_min=0 +strength_max=255 +[WDR_1] +level=80 +strength_min=0 +strength_max=255 +[WDR_2] +level=80 +strength_min=0 +strength_max=255 +[WDR_3] +level=72 +strength_min=0 +strength_max=255 +[WDR_4] +level=72 +strength_min=0 +strength_max=255 +[WDR_5] +level=64 +strength_min=0 +strength_max=255 +[WDR_6] +level=64 +strength_min=0 +strength_max=128 +[WDR_7] +level=48 +strength_min=0 +strength_max=64 +[WDR_8] +level=48 +strength_min=0 +strength_max=48 +[WDR_9] +level=48 +strength_min=0 +strength_max=48 +[WDR_10] +level=48 +strength_min=0 +strength_max=48 +[WDR_11] +level=48 +strength_min=0 +strength_max=48 +[WDR_12] +level=48 +strength_min=0 +strength_max=48 +[WDR_13] +level=48 +strength_min=0 +strength_max=48 +[WDR_14] +level=48 +strength_min=0 +strength_max=48 +[WDR_15] +level=48 +strength_min=0 +strength_max=48 +[SHDR] +nrs_enable=0 +mode=0 +fusion_nor_sel=1 +fusion_l_nor_knee=3072 +fusion_l_nor_range=9 +fusion_s_nor_knee=192 +fusion_s_nor_range=6 +fusion_dif_sel=2 +fusion_l_dif_knee=3072 +fusion_l_dif_range=9 +fusion_s_dif_knee=192 +fusion_s_dif_range=6 +fusion_lum_th=256 +fusion_diff_w=0,2,4,8,10,12,14,16,14,12,10,8,6,4,2,0 +fcurve_y_mean_sel=0 +fcurve_yv_w=8 +fcurve_idx_lut=0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62 +fcurve_split_lut=1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +fcurve_val_lut=0,835,1257,1542,1758,1931,2076,2200,2309,2407,2494,2574,2647,2715,2777,2836,2891,2943,2992,3038,3082,3124,3164,3203,3240,3275,3309,3341,3373,3403,3433,3461,3489,3516,3542,3567,3592,3616,3639,3662,3684,3705,3726,3747,3767,3787,3806,3825,3843,3861,3879,3896,3913,3930,3946,3962,3978,3994,4009,4024,4039,4053,4068,4082,4095 +[SHDR_M] +nrs_diff_th=256 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_0] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_1] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_2] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_3] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_4] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_5] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_6] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_7] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_8] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_9] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_10] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_11] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_12] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_13] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_14] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_15] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[RGBIR] +mode=0 +manual_irsub_r_weight=204 +manual_irsub_g_weight=204 +manual_irsub_b_weight=230 +manual_ir_sat_gain=256 +auto_irsub_r_weight=204 +auto_irsub_g_weight=204 +auto_irsub_b_weight=230 +auto_irsub_reduce_th=220 +auto_night_mode_th=240 +[COMPANDING] +decomp_knee_pts=512,768,2560,4095,4095,4095,4095,4095,4095,4095,4095 +decomp_str_pts=0,256,512,2048,2048,2048,2048,2048,2048,2048,2048,2048 +decomp_shift_pts=4,5,6,8,8,8,8,8,8,8,8,8 +comp_knee_pts=10,11,12,13,14,15,16,16,16,16,16 +comp_str_pts=0,512,1024,1536,2048,2560,3072,3072,3072,3072,3072,3072 +comp_shift_pts=3,4,5,6,7,8,9,9,9,9,9,9 +[RGBIR_ENH] +enable=1 +mode=0 +min_ir_th=50 +[RGBIR_ENH_M] +enh_ratio=16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16 +[RGBIR_ENH_0] +ir_th=128 +enh_ratio=32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 +[RGBIR_ENH_1] +ir_th=152 +enh_ratio=80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80 +[RGBIR_ENH_2] +ir_th=255 +enh_ratio=160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160 +[POST_SHARPEN] +enable=1 +mode=0 +[POST_SHARPEN_M] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_0] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=150 +th_edge=250 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_1] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=150 +th_edge=250 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_2] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=150 +th_edge=250 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_3] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=150 +th_edge=250 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_4] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=150 +th_edge=250 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_5] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=150 +th_edge=250 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_6] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=150 +th_edge=250 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_7] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=150 +th_edge=250 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_8] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=100 +th_edge=200 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_9] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=100 +th_edge=200 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_10] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=100 +th_edge=200 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_11] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=100 +th_edge=200 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_12] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=100 +th_edge=200 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_13] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=100 +th_edge=200 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_14] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=100 +th_edge=200 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_15] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=100 +th_edge=200 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[YCURVE] +enable=0 +ycurve_lut=0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,93,95,97,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,255 +[SHDR_EXT] +fcurve_y_w_lut=255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255 +[CST] +mode=0 +cst_coef=77,150,29,-43,-85,128,128,-107,-21 +y_ofs=0 +cb_ofs=128 +cr_ofs=128 +[CST_M] +cstp_ratio=2 +[CST_0] +cstp_ratio=2 +[CST_1] +cstp_ratio=2 +[CST_2] +cstp_ratio=2 +[CST_3] +cstp_ratio=2 +[CST_4] +cstp_ratio=2 +[CST_5] +cstp_ratio=2 +[CST_6] +cstp_ratio=2 +[CST_7] +cstp_ratio=2 +[CST_8] +cstp_ratio=2 +[CST_9] +cstp_ratio=2 +[CST_10] +cstp_ratio=2 +[CST_11] +cstp_ratio=2 +[CST_12] +cstp_ratio=2 +[CST_13] +cstp_ratio=2 +[CST_14] +cstp_ratio=2 +[CST_15] +cstp_ratio=2 +[TOOL_PARAMS] +Gamma_VirtualGamma=13,13 +Gamma_VirtualBlack=0,0 +Gamma_VirtualContrast=100,100 +Gamma_VirtualManual0=0,2,4,6,8,12,16,24,32,48,64,96,128 +Gamma_VirtualManual1=0,2,4,6,8,12,16,24,32,48,64,96,128 +NR_VirtualOutlBright=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +NR_VirtualOutlDark=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +NR_VirtualFilterTH=0,2,4,6,8,13,18,32,-1,-1,-1,-1,-1,-1,-1,-1,-1 +NR_VirtualFilterTHB=0,6,12,18,24,39,54,96,-1,-1,-1,-1,-1,-1,-1,-1,-1 +NR_VirtualFilterLut=0,3,6,8,10,15,23,40,-1,-1,-1,-1,-1,-1,-1,-1,-1 +NR_VirtualFilterLutB=0,3,6,8,10,15,23,40,-1,-1,-1,-1,-1,-1,-1,-1,-1 +SHDR_VirtualContrast=100 +SHDR_VirtualDelta=1000 +SHDR_VirtualKnee=24576 +SHDR_VirtualBlendR=12 +TCurve_Linear_VirtualContrast=100 +TCurve_Linear_VirtualDelta=1000 +TCurve_Linear_VirtualKnee=1536 +TCurve_Linear_VirtualBlendR=12 +TCurve_SHDR_VirtualContrast=100,100,100,100,100 +TCurve_SHDR_VirtualDelta=1000,1000,1000,1000,1000 +TCurve_SHDR_VirtualKnee=1536,1536,1536,1536,1536 +TCurve_SHDR_VirtualBlendR=12,12,12,12,12 +WDR_VirtualDark=100 +WDR_VirtualBright=20 +YCurve_VirtualGamma=13 +YCurve_VirtualBlack=0 +YCurve_VirtualContrast=100 +YCurve_VirtualManual0=0,2,4,6,8,12,16,24,32,48,64,96,128 diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/isp_os05a10_0.cfg b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/isp_os05a10_0.cfg new file mode 100755 index 000000000..f7fddaa36 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/isp_os05a10_0.cfg @@ -0,0 +1,2401 @@ +[INFO] +# NVT9856x ISP Config +sensor=os05a10 +isp_version=0x01000000 +ae_version=0x01000100 +awb_version=0x01000000 +iq_version=0x01000300 +tool_version=0x01000400 + +[NVT_AE] +expect_lum_mov=47 +expect_lum_photo=64 +expect_ratio_mov=73,74,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 +expect_ratio_photo=100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 +la_clamp_tab_normal_h=255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255 +la_clamp_tab_normal_l=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +la_clamp_tab_shdr_h=125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125 +la_clamp_tab_shdr_l=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +over_exp_enable=1 +over_exp_lum=150 +over_exp_speed=3 +over_exp_ratio=100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 +over_exp_thr_mov=2,2,3,3,3,3,4,5,6,7,8,9,10,10,10,10,10,10,10,10,10 +over_exp_thr_photo=2,2,3,3,3,3,4,5,6,7,8,9,10,10,10,10,10,10,10,10,10 +over_exp_maxcnt=10,10,10,10,10,10,10,10,10,12,15,15,15,15,15,15,15,15,15,15,15 +over_exp_mincnt=3,3,3,3,3,3,3,3,3,5,8,8,8,8,8,8,8,8,8,8,8 +conv_skip_frame=1 +conv_speed=128 +conv_range_conv=10,10 +conv_freeze_en=0 +conv_freeze_cyc=10 +conv_freeze_thr=100 +conv_slowshoot_en=1 +conv_slowshoot_range=30 +conv_slowshoot_thr=2 +conv_stable_counter=0 +curvegen_movie_iso_calcoef=40 +curvegen_movie_freq=0 +curvegen_movie_node0=57,100,0,0 +curvegen_movie_node1=20000,200,0,0 +curvegen_movie_node2=0,0,0,0 +curvegen_movie_node3=0,0,0,0 +curvegen_movie_node4=0,0,0,0 +curvegen_movie_node5=0,0,0,0 +curvegen_movie_node6=0,0,0,0 +curvegen_movie_node7=0,0,0,0 +curvegen_movie_node8=0,0,0,0 +curvegen_movie_node9=0,0,0,0 +curvegen_movie_node10=0,0,0,0 +curvegen_movie_node11=0,0,0,0 +curvegen_movie_node_num=2 +curvegen_movie_iso_max=102400 +curvegen_movie_hdr_ratio=1,16 +curvegen_movie_auto_lowlight_en=0 +curvegen_movie_extend_fps0=3000,1000 +curvegen_movie_extend_fps1=2400,2400 +curvegen_movie_extend_fps2=2000,2000 +curvegen_movie_extend_fps3=1500,1500 +curvegen_movie_extend_fps4=1200,1200 +curvegen_movie_iso_mode=0 +curvegen_movie_isp_gain_thres=99200 +curvegen_movie_flicker_mode=0 +win_weight0=1,1,1,1,1,1,1,1 +win_weight1=1,2,2,2,2,2,2,1 +win_weight2=1,2,3,3,3,3,2,1 +win_weight3=1,2,3,4,4,3,2,1 +win_weight4=1,2,3,4,4,3,2,1 +win_weight5=1,2,3,3,3,3,2,1 +win_weight6=1,2,2,2,2,2,2,1 +win_weight7=1,1,1,1,1,1,1,1 +lum_gamma=0,52,101,146,189,228,266,301,334,365,395,423,449,474,498,521,543,564,584,603,621,638,655,671,687,701,716,729,743,755,768,780,791,802,813,823,833,843,853,862,871,879,888,896,904,911,919,926,933,940,947,953,960,966,972,978,983,989,995,1000,1005,1010,1015,1020,1023 +shdr_expy_le=64 +shdr_tab_ratio_le=100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 +iris_en=0 +iris_min_exp=0 +iris_probe_balance=0 +iris_balance_ratio=110 +iris_driving_ratio=0 +iris_ctrl=3,1,1 +iris_pwm_id=-1 +iris_drv_max=200 +iris_freeze_time=500 +iris_unfreeze_time=1000 +iris_ctrl_dir_inv=0 +curvegen_photo_node0=1,100,0,0 +curvegen_photo_node1=33333,800,0,0 +curvegen_photo_node2=66666,1600,0,0 +curvegen_photo_node3=100000,3200,0,0 +curvegen_photo_node4=0,0,0,0 +curvegen_photo_node5=0,0,0,0 +curvegen_photo_node6=0,0,0,0 +curvegen_photo_node7=0,0,0,0 +curvegen_photo_node8=0,0,0,0 +curvegen_photo_node9=0,0,0,0 +curvegen_photo_node10=0,0,0,0 +curvegen_photo_node11=0,0,0,0 +curvegen_photo_node_num=4 +curvegen_photo_expt_max=66666 +curvegen_photo_iso_max=6400 +curvegen_photo_iso_mode=1 +curvegen_photo_isp_gain_thres=99200 +[NVT_AWB] +th_y=5,220 +th_rpb=64,236 +th_rsb=-58,103 +th_r2g=39,141 +th_b2g=25,95 +th_rmb=23,43 +lv_night=1,4 +lv_in=6,10 +lv_out=14,26 +ct_weight_ctmp=2300,2800,3700,4700,6500,11000 +ct_weight_cx=836,885,951,1010,1093,1156 +ct_weight_out=1,1,1,1,1,1 +ct_weight_in=1,1,1,1,1,1 +ct_weight_night=1,1,1,1,1,1 +target_cx=885,1010,1093 +target_rg_ratio=1024,1024,1024 +target_bg_ratio=1024,1024,1024 +ct_info_temperature=2300,2800,3700,4700,6500,11000 +ct_info_r_gain=293,337,412,490,584,720 +ct_info_g_gain=256,256,256,256,256,256 +ct_info_b_gain=879,758,636,535,395,338 +mwb_r_gain=256,480,480,249,285,256,256,256,256,256,256,256 +mwb_g_gain=256,256,256,256,256,256,256,256,256,256,256,256 +mwb_b_gain=256,377,320,839,806,256,256,256,256,256,256,256 +conv_skip_frame=1 +conv_speed=50 +conv_tolerance=259 +expand_block_mode=1,0,0,0 +expand_block_lv_l=6,6,6,6 +expand_block_lv_h=10,10,10,10 +expand_block_y_l=5,5,5,5 +expand_block_y_u=245,245,245,245 +expand_block_rpb_l=105,105,91,114 +expand_block_rpb_u=118,122,105,128 +expand_block_rsb_l=10,56,18,32 +expand_block_rsb_u=23,74,32,-53 +luma_weight_enable=0 +luma_weight_y=4,8,20,32,192,208,224,240 +luma_weight_w=1,1,1,1,1,1,1,1 +[NVT_AF] +thres=20,80,95,25 +step_size=6,3,1 +max_search_cnt=160 +win_weight0=1,1,1,1,1,1,1,1 +win_weight1=1,1,1,1,1,1,1,1 +win_weight2=1,1,1,1,1,1,1,1 +win_weight3=1,1,1,1,1,1,1,1 +win_weight4=1,1,1,1,1,1,1,1 +win_weight5=1,1,1,1,1,1,1,1 +win_weight6=1,1,1,1,1,1,1,1 +win_weight7=1,1,1,1,1,1,1,1 +[OB] +mode=0 +[OB_M] +cofs=256,256,256,256,256 +[OB_0] +cofs=256,256,256,256,256 +[OB_1] +cofs=256,256,256,256,256 +[OB_2] +cofs=256,256,256,256,256 +[OB_3] +cofs=256,256,256,256,256 +[OB_4] +cofs=256,256,256,256,256 +[OB_5] +cofs=256,256,256,256,256 +[OB_6] +cofs=256,256,256,256,256 +[OB_7] +cofs=256,256,256,256,256 +[OB_8] +cofs=256,256,256,256,256 +[OB_9] +cofs=256,256,256,256,256 +[OB_10] +cofs=256,256,256,256,256 +[OB_11] +cofs=264,264,264,264,264 +[OB_12] +cofs=256,256,256,256,256 +[OB_13] +cofs=256,256,256,256,256 +[OB_14] +cofs=256,256,256,256,256 +[OB_15] +cofs=256,256,256,256,256 +[NR] +outl_enable=1 +gbal_enable=1 +filter_enable=1 +lca_enable=1 +dbcs_enable=1 +mode=0 +[NR_M] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=4095,4095,4095,4095,4095 +outl_dark_th=4095,4095,4095,4095,4095 +gbal_diff_th_str=256 +gbal_edge_protect_th=128 +filter_th=0,0,0,0,0,0 +filter_lut=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +filter_th_b=0,0,0,0,0,0 +filter_lut_b=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=0 +lca_sub_center_filter_c=0 +lca_sub_filter_y=0 +lca_sub_filter_c=0 +lca_out_y_wt=0 +lca_out_c_wt=0 +dbcs_step_y=2 +dbcs_step_c=2 +[NR_0] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1900,3135,4095,4095 +outl_dark_th=32,1900,3135,4095,4095 +gbal_diff_th_str=2 +gbal_edge_protect_th=128 +filter_th=0,0,0,0,0,0 +filter_lut=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +filter_th_b=0,0,0,0,0,0 +filter_lut_b=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=0 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_1] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1900,3135,4095,4095 +outl_dark_th=32,1900,3135,4095,4095 +gbal_diff_th_str=2 +gbal_edge_protect_th=128 +filter_th=0,0,0,1,1,1 +filter_lut=0,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4 +filter_th_b=0,1,2,3,3,4 +filter_lut_b=0,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=0 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_2] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1723,2843,4095,4095 +outl_dark_th=32,1723,2843,4095,4095 +gbal_diff_th_str=2 +gbal_edge_protect_th=128 +filter_th=0,1,1,2,2,3 +filter_lut=0,2,3,4,4,5,5,6,6,7,7,7,8,8,8,9,9 +filter_th_b=0,3,4,6,7,9 +filter_lut_b=0,2,3,4,4,5,5,6,6,7,7,7,8,8,8,9,9 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=0 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_3] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1604,2647,3838,4095 +outl_dark_th=32,1604,2647,3838,4095 +gbal_diff_th_str=2 +gbal_edge_protect_th=128 +filter_th=0,1,2,3,3,4 +filter_lut=0,3,4,5,6,7,7,8,9,9,10,10,11,11,11,12,12 +filter_th_b=0,5,7,9,10,14 +filter_lut_b=0,3,4,5,6,7,7,8,9,9,10,10,11,11,11,12,12 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=2 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_4] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1485,2450,3553,4095 +outl_dark_th=32,1485,2450,3553,4095 +gbal_diff_th_str=6 +gbal_edge_protect_th=128 +filter_th=0,2,3,4,4,6 +filter_lut=0,4,5,6,8,8,9,10,11,12,12,13,13,14,14,15,16 +filter_th_b=0,7,9,12,14,19 +filter_lut_b=0,4,5,6,8,8,9,10,11,12,12,13,13,14,14,15,16 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=4 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_5] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1366,2254,3268,4095 +outl_dark_th=32,1366,2254,3268,4095 +gbal_diff_th_str=8 +gbal_edge_protect_th=128 +filter_th=0,3,5,6,7,10 +filter_lut=0,6,8,10,12,13,14,15,16,18,18,19,20,21,22,23,24 +filter_th_b=0,11,16,19,22,32 +filter_lut_b=0,6,8,10,12,13,14,15,16,18,18,19,20,21,22,23,24 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=6 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_6] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1247,2058,2984,4095 +outl_dark_th=32,1247,2058,2984,4095 +gbal_diff_th_str=15 +gbal_edge_protect_th=128 +filter_th=0,5,7,9,10,14 +filter_lut=0,9,13,15,18,20,22,24,26,27,29,30,31,33,34,35,36 +filter_th_b=0,15,22,27,31,44 +filter_lut_b=0,9,13,15,18,20,22,24,26,27,29,30,31,33,34,35,36 +filter_blend_w=8 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=8 +dbcs_step_y=1 +dbcs_step_c=1 +[NR_7] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1128,1861,2698,4095 +outl_dark_th=32,1128,1861,2698,4095 +gbal_diff_th_str=30 +gbal_edge_protect_th=128 +filter_th=0,10,14,18,21,29 +filter_lut=0,22,31,38,44,49,53,58,62,66,69,72,76,79,82,85,88 +filter_th_b=0,31,44,55,63,89 +filter_lut_b=0,22,31,38,44,49,53,58,62,66,69,72,76,79,82,85,88 +filter_blend_w=15 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=20 +lca_sub_filter_y=16 +lca_sub_filter_c=20 +lca_out_y_wt=4 +lca_out_c_wt=16 +dbcs_step_y=1 +dbcs_step_c=2 +[NR_8] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1128,1861,2698,4095 +outl_dark_th=32,1128,1861,2698,4095 +gbal_diff_th_str=60 +gbal_edge_protect_th=128 +filter_th=0,18,26,32,37,53 +filter_lut=0,38,54,66,76,85,94,101,108,115,121,127,133,138,143,148,153 +filter_th_b=0,56,79,97,112,159 +filter_lut_b=0,38,54,66,76,85,94,101,108,115,121,127,133,138,143,148,153 +filter_blend_w=15 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=20 +lca_sub_center_filter_c=24 +lca_sub_filter_y=20 +lca_sub_filter_c=24 +lca_out_y_wt=4 +lca_out_c_wt=18 +dbcs_step_y=1 +dbcs_step_c=2 +[NR_9] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1128,1861,2698,4095 +outl_dark_th=32,1128,1861,2698,4095 +gbal_diff_th_str=90 +gbal_edge_protect_th=128 +filter_th=0,24,34,41,48,68 +filter_lut=0,51,72,88,102,114,125,135,144,153,161,169,177,184,191,198,204 +filter_th_b=0,72,102,125,144,204 +filter_lut_b=0,51,72,88,102,114,125,135,144,153,161,169,177,184,191,198,204 +filter_blend_w=15 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=24 +lca_sub_center_filter_c=28 +lca_sub_filter_y=24 +lca_sub_filter_c=28 +lca_out_y_wt=6 +lca_out_c_wt=20 +dbcs_step_y=1 +dbcs_step_c=2 +[NR_10] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,32,500,1000,1800 +outl_dark_th=32,32,500,1000,1800 +gbal_diff_th_str=90 +gbal_edge_protect_th=128 +filter_th=0,42,59,72,84,118 +filter_lut=0,89,126,155,179,200,219,237,253,268,283,297,310,323,335,347,358 +filter_th_b=0,126,178,218,252,356 +filter_lut_b=0,89,126,155,179,200,219,237,253,268,283,297,310,323,335,347,358 +filter_blend_w=15 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=28 +lca_sub_center_filter_c=32 +lca_sub_filter_y=28 +lca_sub_filter_c=32 +lca_out_y_wt=10 +lca_out_c_wt=24 +dbcs_step_y=1 +dbcs_step_c=2 +[NR_11] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,18,26,32,37,52 +filter_lut=0,29,41,51,59,66,72,78,83,88,93,98,102,106,110,114,118 +filter_th_b=0,54,78,96,111,156 +filter_lut_b=0,29,41,51,59,66,72,78,83,88,93,98,102,106,110,114,118 +filter_blend_w=0 +filter_clamp_th=16 +filter_clamp_mul=32 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=16 +lca_out_c_wt=28 +dbcs_step_y=1 +dbcs_step_c=1 +[NR_12] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,46,66,81,93,132 +filter_lut=0,50,71,87,101,113,124,134,143,152,160,168,175,183,190,196,203 +filter_th_b=0,138,198,243,279,396 +filter_lut_b=0,50,71,87,101,113,124,134,143,152,160,168,175,183,190,196,203 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=32 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=28 +lca_out_c_wt=22 +dbcs_step_y=1 +dbcs_step_c=1 +[NR_13] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=410,595,982,1424,2350 +outl_dark_th=410,595,982,1424,2350 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,17,24,30,35,49 +filter_lut=0,48,67,83,96,107,117,126,135,144,151,159,166,173,179,185,192 +filter_th_b=0,51,72,90,105,147 +filter_lut_b=0,48,67,83,96,107,117,126,135,144,151,159,166,173,179,185,192 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=32 +lca_sub_center_filter_y=24 +lca_sub_center_filter_c=24 +lca_sub_filter_y=24 +lca_sub_filter_c=24 +lca_out_y_wt=28 +lca_out_c_wt=18 +dbcs_step_y=2 +dbcs_step_c=2 +[NR_14] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=410,595,982,1424,2350 +outl_dark_th=410,595,982,1424,2350 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,17,24,30,35,49 +filter_lut=0,48,67,83,96,107,117,126,135,144,151,159,166,173,179,185,192 +filter_th_b=0,51,72,90,105,147 +filter_lut_b=0,48,67,83,96,107,117,126,135,144,151,159,166,173,179,185,192 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=32 +lca_sub_center_filter_y=24 +lca_sub_center_filter_c=24 +lca_sub_filter_y=24 +lca_sub_filter_c=24 +lca_out_y_wt=28 +lca_out_c_wt=18 +dbcs_step_y=2 +dbcs_step_c=2 +[NR_15] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=410,595,982,1424,2350 +outl_dark_th=410,595,982,1424,2350 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,17,24,30,35,49 +filter_lut=0,48,67,83,96,107,117,126,135,144,151,159,166,173,179,185,192 +filter_th_b=0,51,72,90,105,147 +filter_lut_b=0,48,67,83,96,107,117,126,135,144,151,159,166,173,179,185,192 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=32 +lca_sub_center_filter_y=24 +lca_sub_center_filter_c=24 +lca_sub_filter_y=24 +lca_sub_filter_c=24 +lca_out_y_wt=28 +lca_out_c_wt=18 +dbcs_step_y=2 +dbcs_step_c=2 +[CFA] +mode=0 +[CFA_M] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_0] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_1] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_2] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_3] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_4] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_5] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_6] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=48 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_7] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_8] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_9] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_10] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_11] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=32 +fcs_strength=8,8,3,2,1,1,1,0,0,0,0,0,0,0,0,0 +[CFA_12] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_13] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_14] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_15] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[VA] +mode=0 +indep_roi_0=0,0,1000,1000 +indep_roi_1=0,0,1000,1000 +indep_roi_2=0,0,1000,1000 +indep_roi_3=0,0,1000,1000 +indep_roi_4=0,0,1000,1000 +g1=0,0,-1,0,2 +g2=2,0,-1,0,3 +[VA_M] +g1_th=0,0 +g2_th=0,0 +[VA_0] +g1_th=0,0 +g2_th=0,0 +[VA_1] +g1_th=0,0 +g2_th=0,0 +[VA_2] +g1_th=0,0 +g2_th=0,0 +[VA_3] +g1_th=0,0 +g2_th=0,0 +[VA_4] +g1_th=0,0 +g2_th=0,0 +[VA_5] +g1_th=0,0 +g2_th=0,0 +[VA_6] +g1_th=0,0 +g2_th=0,0 +[VA_7] +g1_th=0,0 +g2_th=0,0 +[VA_8] +g1_th=0,0 +g2_th=0,0 +[VA_9] +g1_th=0,0 +g2_th=0,0 +[VA_10] +g1_th=0,0 +g2_th=0,0 +[VA_11] +g1_th=0,0 +g2_th=0,0 +[VA_12] +g1_th=0,0 +g2_th=0,0 +[VA_13] +g1_th=0,0 +g2_th=0,0 +[VA_14] +g1_th=0,0 +g2_th=0,0 +[VA_15] +g1_th=0,0 +g2_th=0,0 +[GAMMA] +tone_enable=0 +gamma_enable=1 +mode=1 +tone_input_blend_lut=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +tone_lut_linear_idx=0,8,16,24,28,32,36,38,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63 +tone_lut_linear_split=3,3,3,2,2,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +tone_lut_linear_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +tone_lut_shdr_idx=0,8,16,24,28,32,36,38,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63 +tone_lut_shdr_split=3,3,3,2,2,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +tone_lut_shdr_set_num=5 +tone_lut_shdr_set0_lv=0 +tone_lut_shdr_set0_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +tone_lut_shdr_set1_lv=25 +tone_lut_shdr_set1_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +tone_lut_shdr_set2_lv=50 +tone_lut_shdr_set2_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +tone_lut_shdr_set3_lv=75 +tone_lut_shdr_set3_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +tone_lut_shdr_set4_lv=100 +tone_lut_shdr_set4_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +[GAMMA_M] +gamma_lut=0,37,73,107,139,169,198,225,241,257,273,289,304,318,333,347,360,373,386,399,411,422,433,444,455,465,475,484,493,502,510,518,525,532,539,546,553,560,566,573,580,587,594,601,607,614,621,627,634,640,647,653,659,666,672,678,684,691,697,703,709,715,721,727,733,739,744,750,756,762,767,772,777,782,787,792,797,801,806,811,816,821,826,830,835,840,845,849,854,859,863,868,872,877,882,886,891,895,900,904,908,913,917,921,926,930,934,939,943,947,951,955,959,964,968,972,976,980,984,988,992,996,1000,1003,1007,1011,1015,1019,1023 +[GAMMA_0] +lv=6 +gamma_lut=0,37,73,107,139,169,198,225,241,257,273,289,304,318,333,347,360,373,386,399,411,422,433,444,455,465,475,484,493,502,510,518,525,532,539,546,553,560,566,573,580,587,594,601,607,614,621,627,634,640,647,653,659,666,672,678,684,691,697,703,709,715,721,727,733,739,744,750,756,762,767,772,777,782,787,792,797,801,806,811,816,821,826,830,835,840,845,849,854,859,863,868,872,877,882,886,891,895,900,904,908,913,917,921,926,930,934,939,943,947,951,955,959,964,968,972,976,980,984,988,992,996,1000,1003,1007,1011,1015,1019,1023 +[GAMMA_1] +lv=4 +gamma_lut=0,37,73,107,139,169,198,225,241,257,273,289,304,318,333,347,360,373,386,399,411,422,433,444,455,465,475,484,493,502,510,518,525,532,539,546,553,560,566,573,580,587,594,601,607,614,621,627,634,640,647,653,659,666,672,678,684,691,697,703,709,715,721,727,733,739,744,750,756,762,767,772,777,782,787,792,797,801,806,811,816,821,826,830,835,840,845,849,854,859,863,868,872,877,882,886,891,895,900,904,908,913,917,921,926,930,934,939,943,947,951,955,959,964,968,972,976,980,984,988,992,996,1000,1003,1007,1011,1015,1019,1023 +[CCM] +mode=0 +[CCM_M] +coef=256,0,0,0,256,0,0,0,256 +hue_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +sat_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CCM_0] +ct=6500 +coef=395,-79,-60,-93,472,-123,14,-190,431 +hue_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +sat_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CCM_1] +ct=3700 +coef=342,-57,-29,-137,432,-39,15,-217,457 +hue_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +sat_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CCM_2] +ct=2800 +coef=224,87,-55,-152,441,-33,-9,-228,493 +hue_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +sat_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[COLOR] +mode=0 +[COLOR_M] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_0] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_1] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_2] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_3] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_4] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_5] +c_con=128 +fstab=192,96,32,4,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_6] +c_con=128 +fstab=255,128,64,16,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_7] +c_con=128 +fstab=255,192,128,64,16,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=80,90,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_8] +c_con=128 +fstab=255,255,192,128,64,16,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=80,90,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_9] +c_con=128 +fstab=255,255,192,128,64,16,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=60,80,90,100,120,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_10] +c_con=128 +fstab=255,255,192,128,64,16,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=60,80,90,100,120,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_11] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_12] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_13] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_14] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_15] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[CONTRAST] +mode=0 +[CONTRAST_M] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_0] +y_con=128 +lce_lum_wt_lut=10,10,10,10,10,10,10,10,10 +[CONTRAST_1] +y_con=128 +lce_lum_wt_lut=10,10,10,10,10,10,10,10,10 +[CONTRAST_2] +y_con=128 +lce_lum_wt_lut=10,10,10,10,10,10,10,10,10 +[CONTRAST_3] +y_con=128 +lce_lum_wt_lut=10,10,10,10,10,10,10,10,10 +[CONTRAST_4] +y_con=128 +lce_lum_wt_lut=5,5,5,5,5,5,5,5,5 +[CONTRAST_5] +y_con=128 +lce_lum_wt_lut=5,5,5,5,5,5,5,5,5 +[CONTRAST_6] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_7] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_8] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_9] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_10] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_11] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_12] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_13] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_14] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_15] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[EDGE] +enable=1 +mode=0 +th_overshoot=128 +th_undershoot=49 +edge_map_lut=100,120,140,160,180,200,224,255,255,224,192,170,154,144,136,128 +es_map_lut=32,45,53,64,64,64,64,64,64,64,64,64,64,53,45,32 +edge_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +reduce_ratio=64 +[EDGE_M] +edge_enh=128,128 +thin_freq=8 +robust_freq=0 +wt=0,16 +th_flat_low=8 +th_flat_high=40 +th_edge_low=240 +th_edge_high=256 +str_flat=64 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,128,0,2 +es_map_th=0,512,0,5 +[EDGE_0] +edge_enh=100,100 +thin_freq=16 +robust_freq=0 +wt=16,16 +th_flat_low=18 +th_flat_high=50 +th_edge_low=100 +th_edge_high=132 +str_flat=48 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_1] +edge_enh=100,100 +thin_freq=16 +robust_freq=0 +wt=16,16 +th_flat_low=28 +th_flat_high=60 +th_edge_low=110 +th_edge_high=142 +str_flat=48 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_2] +edge_enh=100,100 +thin_freq=16 +robust_freq=0 +wt=16,16 +th_flat_low=32 +th_flat_high=80 +th_edge_low=120 +th_edge_high=152 +str_flat=48 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_3] +edge_enh=100,100 +thin_freq=16 +robust_freq=0 +wt=16,16 +th_flat_low=36 +th_flat_high=100 +th_edge_low=130 +th_edge_high=162 +str_flat=40 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_4] +edge_enh=100,100 +thin_freq=16 +robust_freq=0 +wt=12,12 +th_flat_low=46 +th_flat_high=110 +th_edge_low=140 +th_edge_high=172 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_5] +edge_enh=100,100 +thin_freq=16 +robust_freq=0 +wt=8,8 +th_flat_low=86 +th_flat_high=150 +th_edge_low=180 +th_edge_high=212 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_6] +edge_enh=100,100 +thin_freq=16 +robust_freq=0 +wt=8,8 +th_flat_low=176 +th_flat_high=240 +th_edge_low=270 +th_edge_high=302 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_7] +edge_enh=100,100 +thin_freq=16 +robust_freq=0 +wt=8,8 +th_flat_low=266 +th_flat_high=330 +th_edge_low=360 +th_edge_high=392 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_8] +edge_enh=80,80 +thin_freq=16 +robust_freq=0 +wt=4,4 +th_flat_low=306 +th_flat_high=370 +th_edge_low=400 +th_edge_high=432 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,2,5 +es_map_th=0,512,0,5 +[EDGE_9] +edge_enh=80,80 +thin_freq=16 +robust_freq=0 +wt=2,2 +th_flat_low=350 +th_flat_high=450 +th_edge_low=480 +th_edge_high=512 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,4,5 +es_map_th=0,512,0,5 +[EDGE_10] +edge_enh=80,80 +thin_freq=16 +robust_freq=0 +wt=0,0 +th_flat_low=450 +th_flat_high=500 +th_edge_low=530 +th_edge_high=562 +str_flat=16 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,6,5 +es_map_th=0,512,0,5 +[EDGE_11] +edge_enh=80,80 +thin_freq=0 +robust_freq=0 +wt=0,4 +th_flat_low=568 +th_flat_high=600 +th_edge_low=700 +th_edge_high=716 +str_flat=64 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,3,2 +es_map_th=0,512,0,5 +[EDGE_12] +edge_enh=60,60 +thin_freq=0 +robust_freq=0 +wt=0,4 +th_flat_low=627 +th_flat_high=659 +th_edge_low=757 +th_edge_high=773 +str_flat=64 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,5,2 +es_map_th=0,512,0,5 +[EDGE_13] +edge_enh=96,96 +thin_freq=0 +robust_freq=0 +wt=0,4 +th_flat_low=136 +th_flat_high=168 +th_edge_low=307 +th_edge_high=323 +str_flat=64 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,3,2 +es_map_th=0,512,0,5 +[EDGE_14] +edge_enh=96,96 +thin_freq=0 +robust_freq=0 +wt=0,4 +th_flat_low=136 +th_flat_high=168 +th_edge_low=307 +th_edge_high=323 +str_flat=64 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,3,2 +es_map_th=0,512,0,5 +[EDGE_15] +edge_enh=96,96 +thin_freq=0 +robust_freq=0 +wt=0,4 +th_flat_low=136 +th_flat_high=168 +th_edge_low=307 +th_edge_high=323 +str_flat=64 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,3,2 +es_map_th=0,512,0,5 +[3DNR] +enable=1 +fcvg_enable=0 +mode=0 +[3DNR_M] +pf_type=0 +cost_blend=15 +sad_penalty=64,64,0,128,128,128,200,200 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=5,5,6,6,7,7,8,8 +switch_rto=128 +probability=4 +sad_base=0,0,0,0,0,0,0,0 +sad_coefa=0,0,0,0,0,0,0,0 +sad_coefb=0,0,0,0,0,0,0,0 +sad_std=0,0,0,0,0,0,0,0 +fth=8,16 +mv_th=4 +mix_ratio=16,32 +ds_th=6 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=16,32,48,64 +pre_filter_rto=128,64 +snr_base_th=256 +tnr_base_th=256 +freq_wet=16,16,16,16 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=8,16,64 +tnr_str=64,16,8 +luma_3d_lut=0,6,12,24,40,76,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,6,12,24,40,76,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_0] +pf_type=0 +cost_blend=8 +sad_penalty=32,32,0,48,48,48,64,64 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=180 +probability=8 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=9,9,8,8,7,7,7,7 +sad_coefb=80,80,80,60,50,50,50,50 +sad_std=30,30,25,20,20,20,20,20 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=16,0,0 +tf0_c_str=16,0,0 +pre_filter_str=8,10,12,14 +pre_filter_rto=64,16 +snr_base_th=300 +tnr_base_th=200 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,32 +tnr_str=16,4,2 +luma_3d_lut=0,12,24,43,62,80,96,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,9,22,40,57,75,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_1] +pf_type=0 +cost_blend=8 +sad_penalty=32,32,0,64,64,64,80,80 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=180 +probability=8 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=9,9,8,8,7,7,7,7 +sad_coefb=80,80,80,60,50,50,50,50 +sad_std=30,30,25,20,20,20,20,20 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=16,0,0 +tf0_c_str=16,0,0 +pre_filter_str=8,10,12,14 +pre_filter_rto=64,16 +snr_base_th=400 +tnr_base_th=300 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,32 +tnr_str=16,4,2 +luma_3d_lut=0,10,22,40,62,80,96,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,9,22,40,57,75,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_2] +pf_type=1 +cost_blend=8 +sad_penalty=64,64,0,96,96,96,156,156 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=180 +probability=8 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=11,11,10,10,9,9,9,9 +sad_coefb=100,100,90,70,60,60,60,60 +sad_std=40,40,30,25,25,25,25,25 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=0,128,128 +tf0_y_str=16,0,0 +tf0_c_str=16,0,0 +pre_filter_str=12,15,18,22 +pre_filter_rto=64,32 +snr_base_th=400 +tnr_base_th=400 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,32 +tnr_str=32,4,2 +luma_3d_lut=0,10,22,40,62,80,96,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,9,22,40,57,75,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_3] +pf_type=1 +cost_blend=8 +sad_penalty=80,80,0,128,128,128,256,256 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=140 +probability=6 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=12,12,11,11,10,10,10,10 +sad_coefb=110,110,100,80,70,70,70,70 +sad_std=45,45,35,30,30,30,30,30 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,3,3 +chroma_residue_th=1 +tf0_blur_str=0,255,255 +tf0_y_str=32,0,0 +tf0_c_str=32,0,0 +pre_filter_str=12,15,18,22 +pre_filter_rto=64,32 +snr_base_th=400 +tnr_base_th=400 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,32 +tnr_str=32,8,2 +luma_3d_lut=0,10,22,40,62,80,96,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,9,22,40,57,75,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_4] +pf_type=1 +cost_blend=8 +sad_penalty=96,96,0,192,192,192,384,384 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=6 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=13,13,12,12,11,11,11,11 +sad_coefb=120,120,110,90,80,80,80,80 +sad_std=50,50,40,35,35,35,35,35 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,3,3 +chroma_residue_th=1 +tf0_blur_str=0,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=16,20,24,28 +pre_filter_rto=64,32 +snr_base_th=400 +tnr_base_th=400 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,32 +tnr_str=32,8,2 +luma_3d_lut=0,10,22,40,62,80,96,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,9,22,40,57,75,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_5] +pf_type=1 +cost_blend=8 +sad_penalty=96,96,0,192,192,192,384,384 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=6 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=14,14,13,13,12,12,12,12 +sad_coefb=130,130,120,100,90,90,90,90 +sad_std=55,55,45,40,40,40,40,40 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,3,3 +chroma_residue_th=1 +tf0_blur_str=0,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=16,20,24,28 +pre_filter_rto=64,32 +snr_base_th=500 +tnr_base_th=500 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,32 +tnr_str=32,8,2 +luma_3d_lut=0,10,22,40,62,80,96,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,9,22,40,57,75,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_6] +pf_type=1 +cost_blend=8 +sad_penalty=128,128,0,225,225,225,480,480 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=6 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=17,17,16,16,15,15,15,15 +sad_coefb=170,170,160,140,130,130,130,130 +sad_std=60,60,50,45,45,45,45,45 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,3,3 +chroma_residue_th=1 +tf0_blur_str=0,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=20,30,40,50 +pre_filter_rto=128,64 +snr_base_th=500 +tnr_base_th=500 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,32 +tnr_str=32,8,2 +luma_3d_lut=0,10,22,40,62,80,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,9,22,40,57,75,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_7] +pf_type=2 +cost_blend=8 +sad_penalty=350,350,0,700,700,700,900,900 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=5 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=22,22,20,20,18,18,18,18 +sad_coefb=340,340,280,210,200,200,200,200 +sad_std=75,75,65,60,50,50,50,50 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,3,3 +chroma_residue_th=1 +tf0_blur_str=32,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=30,40,50,60 +pre_filter_rto=128,64 +snr_base_th=700 +tnr_base_th=700 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,64 +tnr_str=32,8,2 +luma_3d_lut=0,10,22,40,62,80,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,8,20,36,55,75,96,112 +chroma_3d_rto=0,0 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_8] +pf_type=2 +cost_blend=8 +sad_penalty=400,400,0,800,800,800,1023,1023 +detail_penalty=3,3,2,3,3,3,3,3 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=5 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=32,32,29,29,25,25,25,25 +sad_coefb=440,440,380,310,300,300,300,300 +sad_std=75,75,65,60,50,50,50,50 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,3,3 +chroma_residue_th=1 +tf0_blur_str=32,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=40,55,70,85 +pre_filter_rto=128,64 +snr_base_th=1000 +tnr_base_th=1000 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,64 +tnr_str=32,8,2 +luma_3d_lut=0,10,22,40,62,80,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,6,18,34,55,75,96,112 +chroma_3d_rto=0,0 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_9] +pf_type=3 +cost_blend=8 +sad_penalty=400,400,0,800,800,800,1023,1023 +detail_penalty=2,2,1,2,2,2,2,2 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=5 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=40,40,36,36,30,30,30,30 +sad_coefb=540,540,480,410,400,400,400,400 +sad_std=85,85,75,70,60,60,60,60 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,3,3 +chroma_residue_th=1 +tf0_blur_str=32,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=80,100,120,140 +pre_filter_rto=128,64 +snr_base_th=1000 +tnr_base_th=1000 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,64 +tnr_str=32,8,2 +luma_3d_lut=0,8,20,38,60,80,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,6,18,34,55,75,96,112 +chroma_3d_rto=0,0 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_10] +pf_type=3 +cost_blend=8 +sad_penalty=400,400,0,800,800,800,1023,1023 +detail_penalty=3,3,1,3,3,3,3,3 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=5 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=60,60,55,55,45,45,45,45 +sad_coefb=800,800,750,700,600,600,600,600 +sad_std=95,95,85,80,70,70,70,70 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,3,3 +chroma_residue_th=1 +tf0_blur_str=32,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=100,130,160,190 +pre_filter_rto=128,64 +snr_base_th=1000 +tnr_base_th=1000 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,64 +tnr_str=32,8,2 +luma_3d_lut=0,6,18,34,54,78,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,0,12,34,55,75,96,112 +chroma_3d_rto=0,0 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_11] +pf_type=0 +cost_blend=0 +sad_penalty=400,400,0,800,800,800,1023,1023 +detail_penalty=1,1,0,1,1,1,1,1 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=4 +sad_base=400,400,400,400,500,1300,1300,1300 +sad_coefa=37,36,36,37,34,34,34,34 +sad_coefb=540,590,590,590,550,540,400,400 +sad_std=90,90,90,90,90,90,90,90 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=120,140,180,200 +pre_filter_rto=128,64 +snr_base_th=4000 +tnr_base_th=3000 +freq_wet=16,16,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,60,80 +tnr_str=200,64,24 +luma_3d_lut=0,4,8,14,24,37,49,58 +luma_3d_rto=128,64 +chroma_3d_lut=0,5,10,14,24,35,49,60 +chroma_3d_rto=128,64 +fcvg_start_point=0 +fcvg_step_size=0 +[3DNR_12] +pf_type=0 +cost_blend=0 +sad_penalty=300,300,0,600,600,600,800,800 +detail_penalty=3,3,3,3,3,3,3,3 +switch_th=5,5,6,6,6,7,7,8 +switch_rto=128 +probability=3 +sad_base=400,400,400,400,500,500,500,500 +sad_coefa=32,29,29,29,21,21,21,21 +sad_coefb=150,130,130,130,130,130,130,130 +sad_std=50,60,64,66,68,68,70,70 +fth=30,40 +mv_th=3 +mix_ratio=16,32 +ds_th=4 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=70,80,90,100 +pre_filter_rto=50,16 +snr_base_th=1000 +tnr_base_th=5000 +freq_wet=16,16,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,100,120 +tnr_str=255,32,0 +luma_3d_lut=0,5,8,14,17,19,25,28 +luma_3d_rto=128,64 +chroma_3d_lut=0,3,8,11,13,16,16,17 +chroma_3d_rto=128,64 +fcvg_start_point=0 +fcvg_step_size=0 +[3DNR_13] +pf_type=0 +cost_blend=0 +sad_penalty=128,128,0,256,256,256,512,512 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=8,9,9,10,10,10,11,11 +switch_rto=150 +probability=3 +sad_base=512,512,512,512,512,512,512,512 +sad_coefa=24,24,23,21,22,22,22,22 +sad_coefb=90,90,90,90,90,90,90,90 +sad_std=60,60,60,60,60,60,60,60 +fth=8,16 +mv_th=20 +mix_ratio=16,32 +ds_th=2 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=100,110,120,130 +pre_filter_rto=128,64 +snr_base_th=1200 +tnr_base_th=2000 +freq_wet=20,16,16,16 +luma_wet=20,24,24,16,16,16,16,16 +snr_str=0,32,128 +tnr_str=255,32,2 +luma_3d_lut=0,1,1,1,1,2,3,4 +luma_3d_rto=128,64 +chroma_3d_lut=0,6,11,11,19,24,33,52 +chroma_3d_rto=128,64 +fcvg_start_point=0 +fcvg_step_size=0 +[3DNR_14] +pf_type=0 +cost_blend=0 +sad_penalty=128,128,0,256,256,256,512,512 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=8,9,9,10,10,10,11,11 +switch_rto=150 +probability=3 +sad_base=512,512,512,512,512,512,512,512 +sad_coefa=24,24,23,21,22,22,22,22 +sad_coefb=90,90,90,90,90,90,90,90 +sad_std=60,60,60,60,60,60,60,60 +fth=8,16 +mv_th=20 +mix_ratio=16,32 +ds_th=2 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=100,110,120,130 +pre_filter_rto=128,64 +snr_base_th=1200 +tnr_base_th=2000 +freq_wet=20,16,16,16 +luma_wet=20,24,24,16,16,16,16,16 +snr_str=0,32,128 +tnr_str=255,32,2 +luma_3d_lut=0,1,1,1,1,2,3,4 +luma_3d_rto=128,64 +chroma_3d_lut=0,6,11,11,19,24,33,52 +chroma_3d_rto=128,64 +fcvg_start_point=0 +fcvg_step_size=0 +[3DNR_15] +pf_type=0 +cost_blend=0 +sad_penalty=128,128,0,256,256,256,512,512 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=8,9,9,10,10,10,11,11 +switch_rto=150 +probability=3 +sad_base=512,512,512,512,512,512,512,512 +sad_coefa=24,24,23,21,22,22,22,22 +sad_coefb=90,90,90,90,90,90,90,90 +sad_std=60,60,60,60,60,60,60,60 +fth=8,16 +mv_th=20 +mix_ratio=16,32 +ds_th=2 +luma_residue_th=1,1,1 +chroma_residue_th=0 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=100,110,120,130 +pre_filter_rto=128,64 +snr_base_th=1200 +tnr_base_th=2000 +freq_wet=20,16,16,16 +luma_wet=20,24,24,16,16,16,16,16 +snr_str=0,32,128 +tnr_str=255,32,2 +luma_3d_lut=0,1,1,1,1,2,3,4 +luma_3d_rto=128,64 +chroma_3d_lut=0,6,11,11,19,24,33,52 +chroma_3d_rto=128,64 +fcvg_start_point=0 +fcvg_step_size=0 +[DPC] +enable=0 +bin_file=/mnt/app/isp/dpc_table.bin +[SHADING] +ecs_enable=0 +vig_enable=0 +ecs_bin_file=/mnt/app/isp/ecs_table.bin +vig_center_x=500 +vig_center_y=500 +vig_reduce_th=400 +vig_zero_th=1600 +vig_lut=0,1,4,7,10,13,23,36,57,82,112,144,198,259,375,586,1023 +[SHADING_INTER] +mode=1 +ecs_smooth_l_m_ct_lower=3200 +ecs_smooth_l_m_ct_upper=3400 +ecs_smooth_m_h_ct_lower=4800 +ecs_smooth_m_h_ct_upper=5000 +[SHADING_EXT] +ecs_ext_0_bin_file=/mnt/app/isp/ecs_table.bin +ecs_ext_1_bin_file=/mnt/app/isp/ecs_table.bin +ecs_ext_2_bin_file=/mnt/app/isp/ecs_table.bin +[LDC] +geo_enable=1 +lut_2d_enable=0 +geo_center_x=500 +geo_center_y=500 +geo_fov_gain=1024 +geo_lut_g=65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535 +geo_r_lut_gain=4096 +geo_b_lut_gain=4096 +lut2d_bin_file=/mnt/app/isp/lut2d_table.bin +[WDR] +enable=1 +mode=0 +subimg_size_h=32 +subimg_size_v=18 +contrast=128 +max_gain=5 +min_gain=3 +lut_idx=0,1,3,7,15,23,31,35,39,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63 +lut_split=0,1,2,3,3,3,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +lut_val=4095,4070,4006,3881,3791,3684,3560,3422,3348,3271,3192,3111,3029,2945,2862,2778,2694,2611,2529,2448,2369,2291,2215,2142,2070,2001,1934,1869,1807,1747,1689,1634,1531,1436,1350,1272,1200,1136,1077,1024,932,855,740,660,603,561,530,507,489,476,465,456,449,443,439,435,432,429,427,425,423,422,420,419,418 +[WDR_M] +strength=32 +[WDR_0] +level=80 +strength_min=0 +strength_max=255 +[WDR_1] +level=80 +strength_min=0 +strength_max=255 +[WDR_2] +level=80 +strength_min=0 +strength_max=255 +[WDR_3] +level=72 +strength_min=0 +strength_max=255 +[WDR_4] +level=72 +strength_min=0 +strength_max=255 +[WDR_5] +level=64 +strength_min=0 +strength_max=255 +[WDR_6] +level=64 +strength_min=0 +strength_max=128 +[WDR_7] +level=48 +strength_min=0 +strength_max=64 +[WDR_8] +level=48 +strength_min=0 +strength_max=48 +[WDR_9] +level=48 +strength_min=0 +strength_max=48 +[WDR_10] +level=48 +strength_min=0 +strength_max=48 +[WDR_11] +level=48 +strength_min=0 +strength_max=48 +[WDR_12] +level=48 +strength_min=0 +strength_max=48 +[WDR_13] +level=48 +strength_min=0 +strength_max=48 +[WDR_14] +level=48 +strength_min=0 +strength_max=48 +[WDR_15] +level=48 +strength_min=0 +strength_max=48 +[SHDR] +nrs_enable=0 +mode=0 +fusion_nor_sel=1 +fusion_l_nor_knee=3072 +fusion_l_nor_range=9 +fusion_s_nor_knee=192 +fusion_s_nor_range=6 +fusion_dif_sel=2 +fusion_l_dif_knee=3072 +fusion_l_dif_range=9 +fusion_s_dif_knee=192 +fusion_s_dif_range=6 +fusion_lum_th=256 +fusion_diff_w=0,2,4,8,10,12,14,16,14,12,10,8,6,4,2,0 +fcurve_y_mean_sel=0 +fcurve_yv_w=8 +fcurve_idx_lut=0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62 +fcurve_split_lut=1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +fcurve_val_lut=0,835,1257,1542,1758,1931,2076,2200,2309,2407,2494,2574,2647,2715,2777,2836,2891,2943,2992,3038,3082,3124,3164,3203,3240,3275,3309,3341,3373,3403,3433,3461,3489,3516,3542,3567,3592,3616,3639,3662,3684,3705,3726,3747,3767,3787,3806,3825,3843,3861,3879,3896,3913,3930,3946,3962,3978,3994,4009,4024,4039,4053,4068,4082,4095 +[SHDR_M] +nrs_diff_th=256 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_0] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_1] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_2] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_3] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_4] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_5] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_6] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_7] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_8] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_9] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_10] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_11] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_12] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_13] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_14] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_15] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[RGBIR] +mode=0 +manual_irsub_r_weight=204 +manual_irsub_g_weight=204 +manual_irsub_b_weight=230 +manual_ir_sat_gain=256 +auto_irsub_r_weight=204 +auto_irsub_g_weight=204 +auto_irsub_b_weight=230 +auto_irsub_reduce_th=220 +auto_night_mode_th=240 +[COMPANDING] +decomp_knee_pts=512,768,2560,4095,4095,4095,4095,4095,4095,4095,4095 +decomp_str_pts=0,256,512,2048,2048,2048,2048,2048,2048,2048,2048,2048 +decomp_shift_pts=4,5,6,8,8,8,8,8,8,8,8,8 +comp_knee_pts=10,11,12,13,14,15,16,16,16,16,16 +comp_str_pts=0,512,1024,1536,2048,2560,3072,3072,3072,3072,3072,3072 +comp_shift_pts=3,4,5,6,7,8,9,9,9,9,9,9 +[RGBIR_ENH] +enable=1 +mode=0 +min_ir_th=50 +[RGBIR_ENH_M] +enh_ratio=16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16 +[RGBIR_ENH_0] +ir_th=128 +enh_ratio=32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 +[RGBIR_ENH_1] +ir_th=152 +enh_ratio=80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80 +[RGBIR_ENH_2] +ir_th=255 +enh_ratio=160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160 +[POST_SHARPEN] +enable=1 +mode=0 +[POST_SHARPEN_M] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_0] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=150 +th_edge=250 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_1] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=150 +th_edge=250 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_2] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=150 +th_edge=250 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_3] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=200 +th_edge=300 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_4] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_5] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=300 +th_edge=400 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_6] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=350 +th_edge=450 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_7] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=350 +th_edge=450 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_8] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=400 +th_edge=500 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_9] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=400 +th_edge=500 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_10] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_11] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_12] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_13] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_14] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_15] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[YCURVE] +enable=0 +ycurve_lut=0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,93,95,97,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,255 +[SHDR_EXT] +fcurve_y_w_lut=255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255 +[CST] +mode=0 +cst_coef=77,150,29,-43,-85,128,128,-107,-21 +y_ofs=0 +cb_ofs=128 +cr_ofs=128 +[CST_M] +cstp_ratio=2 +[CST_0] +cstp_ratio=2 +[CST_1] +cstp_ratio=2 +[CST_2] +cstp_ratio=2 +[CST_3] +cstp_ratio=2 +[CST_4] +cstp_ratio=2 +[CST_5] +cstp_ratio=2 +[CST_6] +cstp_ratio=2 +[CST_7] +cstp_ratio=2 +[CST_8] +cstp_ratio=2 +[CST_9] +cstp_ratio=2 +[CST_10] +cstp_ratio=2 +[CST_11] +cstp_ratio=2 +[CST_12] +cstp_ratio=2 +[CST_13] +cstp_ratio=2 +[CST_14] +cstp_ratio=2 +[CST_15] +cstp_ratio=2 +[TOOL_PARAMS] +Gamma_VirtualGamma=13,13 +Gamma_VirtualBlack=0,0 +Gamma_VirtualContrast=100,100 +Gamma_VirtualManual0=0,2,4,6,8,12,16,24,32,48,64,96,128 +Gamma_VirtualManual1=0,2,4,6,8,12,16,24,32,48,64,96,128 +NR_VirtualOutlBright=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,-1,-1,-1,-1,-1,-1 +NR_VirtualOutlDark=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,-1,-1,-1,-1,-1,-1 +NR_VirtualFilterTH=-1,-1,-1,-1,-1,-1,-1,36,64,82,143,-1,-1,-1,-1,-1,-1 +NR_VirtualFilterTHB=-1,-1,-1,-1,-1,-1,-1,108,180,-1,500,-1,-1,-1,-1,-1,-1 +NR_VirtualFilterLut=-1,-1,-1,-1,-1,-1,-1,55,96,128,224,-1,-1,-1,-1,-1,-1 +NR_VirtualFilterLutB=-1,-1,-1,-1,-1,-1,-1,55,92,-1,-1,-1,-1,-1,-1,-1,-1 +SHDR_VirtualContrast=100 +SHDR_VirtualDelta=1000 +SHDR_VirtualKnee=24576 +SHDR_VirtualBlendR=12 +TCurve_Linear_VirtualContrast=100 +TCurve_Linear_VirtualDelta=1000 +TCurve_Linear_VirtualKnee=1536 +TCurve_Linear_VirtualBlendR=12 +TCurve_SHDR_VirtualContrast=100,100,100,100,100 +TCurve_SHDR_VirtualDelta=1000,1000,1000,1000,1000 +TCurve_SHDR_VirtualKnee=1536,1536,1536,1536,1536 +TCurve_SHDR_VirtualBlendR=12,12,12,12,12 +WDR_VirtualDark=100 +WDR_VirtualBright=20 +YCurve_VirtualGamma=13 +YCurve_VirtualBlack=0 +YCurve_VirtualContrast=100 +YCurve_VirtualManual0=0,2,4,6,8,12,16,24,32,48,64,96,128 diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/isp_os05b10_0.cfg b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/isp_os05b10_0.cfg new file mode 100755 index 000000000..cde058065 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/isp_os05b10_0.cfg @@ -0,0 +1,2409 @@ +[INFO] +# NVT9856x ISP Config +sensor=os05b10 +isp_version=0x01000000 +ae_version=0x01000100 +awb_version=0x01000000 +iq_version=0x01000400 +tool_version=0x01000700 + +[NVT_AE] +expect_lum_mov=47 +expect_lum_photo=64 +expect_ratio_mov=73,74,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 +expect_ratio_photo=100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 +la_clamp_tab_normal_h=255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255 +la_clamp_tab_normal_l=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +la_clamp_tab_shdr_h=125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125 +la_clamp_tab_shdr_l=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +over_exp_enable=1 +over_exp_lum=150 +over_exp_speed=3 +over_exp_ratio=100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 +over_exp_thr_mov=2,2,3,3,3,3,4,5,6,7,8,9,10,10,10,10,10,10,10,10,10 +over_exp_thr_photo=2,2,3,3,3,3,4,5,6,7,8,9,10,10,10,10,10,10,10,10,10 +over_exp_maxcnt=10,10,10,10,10,10,10,10,10,12,15,15,15,15,15,15,15,15,15,15,15 +over_exp_mincnt=3,3,3,3,3,3,3,3,3,5,8,8,8,8,8,8,8,8,8,8,8 +conv_skip_frame=1 +conv_speed=128 +conv_range_conv=10,10 +conv_freeze_en=0 +conv_freeze_cyc=10 +conv_freeze_thr=100 +conv_slowshoot_en=1 +conv_slowshoot_range=30 +conv_slowshoot_thr=2 +conv_stable_counter=0 +curvegen_movie_iso_calcoef=40 +curvegen_movie_freq=0 +curvegen_movie_node0=57,100,0,0 +curvegen_movie_node1=20000,200,0,0 +curvegen_movie_node2=0,0,0,0 +curvegen_movie_node3=0,0,0,0 +curvegen_movie_node4=0,0,0,0 +curvegen_movie_node5=0,0,0,0 +curvegen_movie_node6=0,0,0,0 +curvegen_movie_node7=0,0,0,0 +curvegen_movie_node8=0,0,0,0 +curvegen_movie_node9=0,0,0,0 +curvegen_movie_node10=0,0,0,0 +curvegen_movie_node11=0,0,0,0 +curvegen_movie_node_num=2 +curvegen_movie_iso_max=102400 +curvegen_movie_hdr_ratio=1,16 +curvegen_movie_auto_lowlight_en=0 +curvegen_movie_extend_fps0=3000,1000 +curvegen_movie_extend_fps1=2400,2400 +curvegen_movie_extend_fps2=2000,2000 +curvegen_movie_extend_fps3=1500,1500 +curvegen_movie_extend_fps4=1200,1200 +curvegen_movie_iso_mode=0 +curvegen_movie_isp_gain_thres=99200 +curvegen_movie_flicker_mode=0 +win_weight0=1,1,1,1,1,1,1,1 +win_weight1=1,2,2,2,2,2,2,1 +win_weight2=1,2,3,3,3,3,2,1 +win_weight3=1,2,3,4,4,3,2,1 +win_weight4=1,2,3,4,4,3,2,1 +win_weight5=1,2,3,3,3,3,2,1 +win_weight6=1,2,2,2,2,2,2,1 +win_weight7=1,1,1,1,1,1,1,1 +lum_gamma=0,52,101,146,189,228,266,301,334,365,395,423,449,474,498,521,543,564,584,603,621,638,655,671,687,701,716,729,743,755,768,780,791,802,813,823,833,843,853,862,871,879,888,896,904,911,919,926,933,940,947,953,960,966,972,978,983,989,995,1000,1005,1010,1015,1020,1023 +shdr_expy_le=64 +shdr_tab_ratio_le=100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 +iris_en=0 +iris_min_exp=0 +iris_probe_balance=0 +iris_balance_ratio=110 +iris_driving_ratio=0 +iris_ctrl=3,1,1 +iris_pwm_id=-1 +iris_drv_max=200 +iris_freeze_time=500 +iris_unfreeze_time=1000 +iris_ctrl_dir_inv=0 +curvegen_photo_node0=1,100,0,0 +curvegen_photo_node1=33333,800,0,0 +curvegen_photo_node2=66666,1600,0,0 +curvegen_photo_node3=100000,3200,0,0 +curvegen_photo_node4=0,0,0,0 +curvegen_photo_node5=0,0,0,0 +curvegen_photo_node6=0,0,0,0 +curvegen_photo_node7=0,0,0,0 +curvegen_photo_node8=0,0,0,0 +curvegen_photo_node9=0,0,0,0 +curvegen_photo_node10=0,0,0,0 +curvegen_photo_node11=0,0,0,0 +curvegen_photo_node_num=4 +curvegen_photo_expt_max=66666 +curvegen_photo_iso_max=6400 +curvegen_photo_iso_mode=1 +curvegen_photo_isp_gain_thres=99200 +[NVT_AWB] +th_y=5,220 +th_rpb=64,236 +th_rsb=-58,103 +th_r2g=39,141 +th_b2g=25,95 +th_rmb=23,43 +lv_night=1,4 +lv_in=6,10 +lv_out=14,26 +ct_weight_ctmp=2300,2800,3700,4700,6500,11000 +ct_weight_cx=836,885,951,1010,1093,1156 +ct_weight_out=1,1,1,1,1,1 +ct_weight_in=1,1,1,1,1,1 +ct_weight_night=1,1,1,1,1,1 +target_cx=885,1010,1093 +target_rg_ratio=1024,1024,1024 +target_bg_ratio=1024,1024,1024 +ct_info_temperature=2300,2800,3700,4700,6500,11000 +ct_info_r_gain=293,337,412,490,584,720 +ct_info_g_gain=256,256,256,256,256,256 +ct_info_b_gain=879,758,636,535,395,338 +mwb_r_gain=256,480,480,249,285,256,256,256,256,256,256,256 +mwb_g_gain=256,256,256,256,256,256,256,256,256,256,256,256 +mwb_b_gain=256,377,320,839,806,256,256,256,256,256,256,256 +conv_skip_frame=1 +conv_speed=50 +conv_tolerance=259 +expand_block_mode=1,0,0,0 +expand_block_lv_l=6,6,6,6 +expand_block_lv_h=10,10,10,10 +expand_block_y_l=5,5,5,5 +expand_block_y_u=245,245,245,245 +expand_block_rpb_l=105,105,91,114 +expand_block_rpb_u=118,122,105,128 +expand_block_rsb_l=10,56,18,32 +expand_block_rsb_u=23,74,32,-53 +luma_weight_enable=0 +luma_weight_y=4,8,20,32,192,208,224,240 +luma_weight_w=1,1,1,1,1,1,1,1 +[NVT_AF] +thres=20,80,95,25 +step_size=6,3,1 +max_search_cnt=160 +win_weight0=1,1,1,1,1,1,1,1 +win_weight1=1,1,1,1,1,1,1,1 +win_weight2=1,1,1,1,1,1,1,1 +win_weight3=1,1,1,1,1,1,1,1 +win_weight4=1,1,1,1,1,1,1,1 +win_weight5=1,1,1,1,1,1,1,1 +win_weight6=1,1,1,1,1,1,1,1 +win_weight7=1,1,1,1,1,1,1,1 +[OB] +mode=0 +[OB_M] +cofs=256,256,256,256,256 +[OB_0] +cofs=256,256,256,256,256 +[OB_1] +cofs=256,256,256,256,256 +[OB_2] +cofs=256,256,256,256,256 +[OB_3] +cofs=256,256,256,256,256 +[OB_4] +cofs=256,256,256,256,256 +[OB_5] +cofs=256,256,256,256,256 +[OB_6] +cofs=256,256,256,256,256 +[OB_7] +cofs=256,256,256,256,256 +[OB_8] +cofs=256,256,256,256,256 +[OB_9] +cofs=256,256,256,256,256 +[OB_10] +cofs=256,256,256,256,256 +[OB_11] +cofs=264,264,264,264,264 +[OB_12] +cofs=256,256,256,256,256 +[OB_13] +cofs=256,256,256,256,256 +[OB_14] +cofs=256,256,256,256,256 +[OB_15] +cofs=256,256,256,256,256 +[NR] +outl_enable=1 +gbal_enable=1 +filter_enable=1 +lca_enable=1 +dbcs_enable=1 +mode=0 +[NR_M] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=4095,4095,4095,4095,4095 +outl_dark_th=4095,4095,4095,4095,4095 +gbal_diff_th_str=256 +gbal_edge_protect_th=128 +filter_th=0,0,0,0,0,0 +filter_lut=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +filter_th_b=0,0,0,0,0,0 +filter_lut_b=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=0 +lca_sub_center_filter_c=0 +lca_sub_filter_y=0 +lca_sub_filter_c=0 +lca_out_y_wt=0 +lca_out_c_wt=0 +dbcs_step_y=2 +dbcs_step_c=2 +[NR_0] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1900,3135,4095,4095 +outl_dark_th=32,1900,3135,4095,4095 +gbal_diff_th_str=2 +gbal_edge_protect_th=128 +filter_th=0,0,0,0,0,0 +filter_lut=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +filter_th_b=0,0,0,0,0,0 +filter_lut_b=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=0 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_1] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1900,3135,4095,4095 +outl_dark_th=32,1900,3135,4095,4095 +gbal_diff_th_str=2 +gbal_edge_protect_th=128 +filter_th=0,0,0,1,1,1 +filter_lut=0,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4 +filter_th_b=0,1,2,3,3,4 +filter_lut_b=0,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=0 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_2] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1723,2843,4095,4095 +outl_dark_th=32,1723,2843,4095,4095 +gbal_diff_th_str=2 +gbal_edge_protect_th=128 +filter_th=0,1,1,2,2,3 +filter_lut=0,2,3,4,4,5,5,6,6,7,7,7,8,8,8,9,9 +filter_th_b=0,3,4,6,7,9 +filter_lut_b=0,2,3,4,4,5,5,6,6,7,7,7,8,8,8,9,9 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=0 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_3] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1604,2647,3838,4095 +outl_dark_th=32,1604,2647,3838,4095 +gbal_diff_th_str=2 +gbal_edge_protect_th=128 +filter_th=0,1,2,3,3,4 +filter_lut=0,3,4,5,6,7,7,8,9,9,10,10,11,11,11,12,12 +filter_th_b=0,5,7,9,10,14 +filter_lut_b=0,3,4,5,6,7,7,8,9,9,10,10,11,11,11,12,12 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=2 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_4] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1485,2450,3553,4095 +outl_dark_th=32,1485,2450,3553,4095 +gbal_diff_th_str=6 +gbal_edge_protect_th=128 +filter_th=0,2,3,4,4,6 +filter_lut=0,4,5,6,8,8,9,10,11,12,12,13,13,14,14,15,16 +filter_th_b=0,7,9,12,14,19 +filter_lut_b=0,4,5,6,8,8,9,10,11,12,12,13,13,14,14,15,16 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=4 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_5] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1366,2254,3268,4095 +outl_dark_th=32,1366,2254,3268,4095 +gbal_diff_th_str=8 +gbal_edge_protect_th=128 +filter_th=0,3,5,6,7,10 +filter_lut=0,6,8,10,12,13,14,15,16,18,18,19,20,21,22,23,24 +filter_th_b=0,11,16,19,22,32 +filter_lut_b=0,6,8,10,12,13,14,15,16,18,18,19,20,21,22,23,24 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=6 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_6] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1247,2058,2984,4095 +outl_dark_th=32,1247,2058,2984,4095 +gbal_diff_th_str=15 +gbal_edge_protect_th=128 +filter_th=0,5,7,9,10,14 +filter_lut=0,9,13,15,18,20,22,24,26,27,29,30,31,33,34,35,36 +filter_th_b=0,15,22,27,31,44 +filter_lut_b=0,9,13,15,18,20,22,24,26,27,29,30,31,33,34,35,36 +filter_blend_w=8 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=8 +dbcs_step_y=1 +dbcs_step_c=1 +[NR_7] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1128,1861,2698,4095 +outl_dark_th=32,1128,1861,2698,4095 +gbal_diff_th_str=30 +gbal_edge_protect_th=128 +filter_th=0,10,14,18,21,29 +filter_lut=0,22,31,38,44,49,53,58,62,66,69,72,76,79,82,85,88 +filter_th_b=0,31,44,55,63,89 +filter_lut_b=0,22,31,38,44,49,53,58,62,66,69,72,76,79,82,85,88 +filter_blend_w=15 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=20 +lca_sub_filter_y=16 +lca_sub_filter_c=20 +lca_out_y_wt=4 +lca_out_c_wt=16 +dbcs_step_y=1 +dbcs_step_c=2 +[NR_8] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1128,1861,2698,4095 +outl_dark_th=32,1128,1861,2698,4095 +gbal_diff_th_str=60 +gbal_edge_protect_th=128 +filter_th=0,18,26,32,37,53 +filter_lut=0,38,54,66,76,85,94,101,108,115,121,127,133,138,143,148,153 +filter_th_b=0,56,79,97,112,159 +filter_lut_b=0,38,54,66,76,85,94,101,108,115,121,127,133,138,143,148,153 +filter_blend_w=15 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=20 +lca_sub_center_filter_c=24 +lca_sub_filter_y=20 +lca_sub_filter_c=24 +lca_out_y_wt=4 +lca_out_c_wt=18 +dbcs_step_y=1 +dbcs_step_c=2 +[NR_9] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1128,1861,2698,4095 +outl_dark_th=32,1128,1861,2698,4095 +gbal_diff_th_str=90 +gbal_edge_protect_th=128 +filter_th=0,24,34,41,48,68 +filter_lut=0,51,72,88,102,114,125,135,144,153,161,169,177,184,191,198,204 +filter_th_b=0,72,102,125,144,204 +filter_lut_b=0,51,72,88,102,114,125,135,144,153,161,169,177,184,191,198,204 +filter_blend_w=15 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=24 +lca_sub_center_filter_c=28 +lca_sub_filter_y=24 +lca_sub_filter_c=28 +lca_out_y_wt=6 +lca_out_c_wt=20 +dbcs_step_y=1 +dbcs_step_c=2 +[NR_10] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,32,500,1000,1800 +outl_dark_th=32,32,500,1000,1800 +gbal_diff_th_str=90 +gbal_edge_protect_th=128 +filter_th=0,42,59,72,84,118 +filter_lut=0,89,126,155,179,200,219,237,253,268,283,297,310,323,335,347,358 +filter_th_b=0,126,178,218,252,356 +filter_lut_b=0,89,126,155,179,200,219,237,253,268,283,297,310,323,335,347,358 +filter_blend_w=15 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=28 +lca_sub_center_filter_c=32 +lca_sub_filter_y=28 +lca_sub_filter_c=32 +lca_out_y_wt=10 +lca_out_c_wt=24 +dbcs_step_y=1 +dbcs_step_c=2 +[NR_11] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,18,26,32,37,52 +filter_lut=0,29,41,51,59,66,72,78,83,88,93,98,102,106,110,114,118 +filter_th_b=0,54,78,96,111,156 +filter_lut_b=0,29,41,51,59,66,72,78,83,88,93,98,102,106,110,114,118 +filter_blend_w=0 +filter_clamp_th=16 +filter_clamp_mul=32 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=16 +lca_out_c_wt=28 +dbcs_step_y=1 +dbcs_step_c=1 +[NR_12] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,46,66,81,93,132 +filter_lut=0,50,71,87,101,113,124,134,143,152,160,168,175,183,190,196,203 +filter_th_b=0,138,198,243,279,396 +filter_lut_b=0,50,71,87,101,113,124,134,143,152,160,168,175,183,190,196,203 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=32 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=28 +lca_out_c_wt=22 +dbcs_step_y=1 +dbcs_step_c=1 +[NR_13] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=410,595,982,1424,2350 +outl_dark_th=410,595,982,1424,2350 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,17,24,30,35,49 +filter_lut=0,48,67,83,96,107,117,126,135,144,151,159,166,173,179,185,192 +filter_th_b=0,51,72,90,105,147 +filter_lut_b=0,48,67,83,96,107,117,126,135,144,151,159,166,173,179,185,192 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=32 +lca_sub_center_filter_y=24 +lca_sub_center_filter_c=24 +lca_sub_filter_y=24 +lca_sub_filter_c=24 +lca_out_y_wt=28 +lca_out_c_wt=18 +dbcs_step_y=2 +dbcs_step_c=2 +[NR_14] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=410,595,982,1424,2350 +outl_dark_th=410,595,982,1424,2350 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,17,24,30,35,49 +filter_lut=0,48,67,83,96,107,117,126,135,144,151,159,166,173,179,185,192 +filter_th_b=0,51,72,90,105,147 +filter_lut_b=0,48,67,83,96,107,117,126,135,144,151,159,166,173,179,185,192 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=32 +lca_sub_center_filter_y=24 +lca_sub_center_filter_c=24 +lca_sub_filter_y=24 +lca_sub_filter_c=24 +lca_out_y_wt=28 +lca_out_c_wt=18 +dbcs_step_y=2 +dbcs_step_c=2 +[NR_15] +outl_ord_protect_th=256 +outl_ord_blend_w=255 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=410,595,982,1424,2350 +outl_dark_th=410,595,982,1424,2350 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,17,24,30,35,49 +filter_lut=0,48,67,83,96,107,117,126,135,144,151,159,166,173,179,185,192 +filter_th_b=0,51,72,90,105,147 +filter_lut_b=0,48,67,83,96,107,117,126,135,144,151,159,166,173,179,185,192 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=32 +lca_sub_center_filter_y=24 +lca_sub_center_filter_c=24 +lca_sub_filter_y=24 +lca_sub_filter_c=24 +lca_out_y_wt=28 +lca_out_c_wt=18 +dbcs_step_y=2 +dbcs_step_c=2 +[CFA] +mode=0 +[CFA_M] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_0] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_1] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_2] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_3] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_4] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_5] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_6] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=48 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_7] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_8] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_9] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_10] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_11] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=32 +fcs_strength=8,8,3,2,1,1,1,0,0,0,0,0,0,0,0,0 +[CFA_12] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_13] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_14] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_15] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[VA] +mode=0 +indep_roi_0=0,0,1000,1000 +indep_roi_1=0,0,1000,1000 +indep_roi_2=0,0,1000,1000 +indep_roi_3=0,0,1000,1000 +indep_roi_4=0,0,1000,1000 +g1=0,0,-1,0,2 +g2=2,0,-1,0,3 +[VA_M] +g1_th=0,0 +g2_th=0,0 +[VA_0] +g1_th=0,0 +g2_th=0,0 +[VA_1] +g1_th=0,0 +g2_th=0,0 +[VA_2] +g1_th=0,0 +g2_th=0,0 +[VA_3] +g1_th=0,0 +g2_th=0,0 +[VA_4] +g1_th=0,0 +g2_th=0,0 +[VA_5] +g1_th=0,0 +g2_th=0,0 +[VA_6] +g1_th=0,0 +g2_th=0,0 +[VA_7] +g1_th=0,0 +g2_th=0,0 +[VA_8] +g1_th=0,0 +g2_th=0,0 +[VA_9] +g1_th=0,0 +g2_th=0,0 +[VA_10] +g1_th=0,0 +g2_th=0,0 +[VA_11] +g1_th=0,0 +g2_th=0,0 +[VA_12] +g1_th=0,0 +g2_th=0,0 +[VA_13] +g1_th=0,0 +g2_th=0,0 +[VA_14] +g1_th=0,0 +g2_th=0,0 +[VA_15] +g1_th=0,0 +g2_th=0,0 +[GAMMA] +tone_enable=0 +gamma_enable=1 +mode=1 +tone_input_blend_lut=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +tone_lut_linear_idx=0,8,16,24,28,32,36,38,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63 +tone_lut_linear_split=3,3,3,2,2,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +tone_lut_linear_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +tone_lut_shdr_idx=0,8,16,24,28,32,36,38,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63 +tone_lut_shdr_split=3,3,3,2,2,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +tone_lut_shdr_set_num=5 +tone_lut_shdr_set0_lv=0 +tone_lut_shdr_set0_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +tone_lut_shdr_set1_lv=25 +tone_lut_shdr_set1_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +tone_lut_shdr_set2_lv=50 +tone_lut_shdr_set2_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +tone_lut_shdr_set3_lv=75 +tone_lut_shdr_set3_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +tone_lut_shdr_set4_lv=100 +tone_lut_shdr_set4_val=0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,416,448,480,512,544,576,608,640,672,704,736,768,832,896,960,1024,1152,1280,1408,1536,1664,1792,1920,2048,2176,2304,2432,2560,2688,2816,2944,3072,3200,3328,3456,3584,3712,3840,3968,4095 +[GAMMA_M] +gamma_lut=0,37,73,107,139,169,198,225,241,257,273,289,304,318,333,347,360,373,386,399,411,422,433,444,455,465,475,484,493,502,510,518,525,532,539,546,553,560,566,573,580,587,594,601,607,614,621,627,634,640,647,653,659,666,672,678,684,691,697,703,709,715,721,727,733,739,744,750,756,762,767,772,777,782,787,792,797,801,806,811,816,821,826,830,835,840,845,849,854,859,863,868,872,877,882,886,891,895,900,904,908,913,917,921,926,930,934,939,943,947,951,955,959,964,968,972,976,980,984,988,992,996,1000,1003,1007,1011,1015,1019,1023 +[GAMMA_0] +lv=6 +gamma_lut=0,37,73,107,139,169,198,225,241,257,273,289,304,318,333,347,360,373,386,399,411,422,433,444,455,465,475,484,493,502,510,518,525,532,539,546,553,560,566,573,580,587,594,601,607,614,621,627,634,640,647,653,659,666,672,678,684,691,697,703,709,715,721,727,733,739,744,750,756,762,767,772,777,782,787,792,797,801,806,811,816,821,826,830,835,840,845,849,854,859,863,868,872,877,882,886,891,895,900,904,908,913,917,921,926,930,934,939,943,947,951,955,959,964,968,972,976,980,984,988,992,996,1000,1003,1007,1011,1015,1019,1023 +[GAMMA_1] +lv=4 +gamma_lut=0,37,73,107,139,169,198,225,241,257,273,289,304,318,333,347,360,373,386,399,411,422,433,444,455,465,475,484,493,502,510,518,525,532,539,546,553,560,566,573,580,587,594,601,607,614,621,627,634,640,647,653,659,666,672,678,684,691,697,703,709,715,721,727,733,739,744,750,756,762,767,772,777,782,787,792,797,801,806,811,816,821,826,830,835,840,845,849,854,859,863,868,872,877,882,886,891,895,900,904,908,913,917,921,926,930,934,939,943,947,951,955,959,964,968,972,976,980,984,988,992,996,1000,1003,1007,1011,1015,1019,1023 +[CCM] +mode=0 +[CCM_M] +coef=256,0,0,0,256,0,0,0,256 +hue_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +sat_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CCM_0] +ct=6500 +coef=395,-79,-60,-93,472,-123,14,-190,431 +hue_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +sat_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CCM_1] +ct=3700 +coef=342,-57,-29,-137,432,-39,15,-217,457 +hue_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +sat_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CCM_2] +ct=2800 +coef=224,87,-55,-152,441,-33,-9,-228,493 +hue_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +sat_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CCM_EXT_M] +int_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CCM_EXT_0] +int_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CCM_EXT_1] +int_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CCM_EXT_2] +int_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[COLOR] +mode=0 +[COLOR_M] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_0] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_1] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_2] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_3] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_4] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_5] +c_con=128 +fstab=192,96,32,4,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_6] +c_con=128 +fstab=255,128,64,16,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_7] +c_con=128 +fstab=255,192,128,64,16,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=80,90,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_8] +c_con=128 +fstab=255,255,192,128,64,16,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=80,90,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_9] +c_con=128 +fstab=255,255,192,128,64,16,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=60,80,90,100,120,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_10] +c_con=128 +fstab=255,255,192,128,64,16,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=60,80,90,100,120,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_11] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_12] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_13] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_14] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_15] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[CONTRAST] +mode=0 +[CONTRAST_M] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_0] +y_con=128 +lce_lum_wt_lut=10,10,10,10,10,10,10,10,10 +[CONTRAST_1] +y_con=128 +lce_lum_wt_lut=10,10,10,10,10,10,10,10,10 +[CONTRAST_2] +y_con=128 +lce_lum_wt_lut=10,10,10,10,10,10,10,10,10 +[CONTRAST_3] +y_con=128 +lce_lum_wt_lut=10,10,10,10,10,10,10,10,10 +[CONTRAST_4] +y_con=128 +lce_lum_wt_lut=5,5,5,5,5,5,5,5,5 +[CONTRAST_5] +y_con=128 +lce_lum_wt_lut=5,5,5,5,5,5,5,5,5 +[CONTRAST_6] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_7] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_8] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_9] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_10] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_11] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_12] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_13] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_14] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_15] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[EDGE] +enable=1 +mode=0 +th_overshoot=128 +th_undershoot=49 +edge_map_lut=100,120,140,160,180,200,224,255,255,224,192,170,154,144,136,128 +es_map_lut=32,45,53,64,64,64,64,64,64,64,64,64,64,53,45,32 +edge_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +reduce_ratio=64 +[EDGE_M] +edge_enh=128,128 +thin_freq=8 +robust_freq=0 +wt=0,16 +th_flat_low=8 +th_flat_high=40 +th_edge_low=240 +th_edge_high=256 +str_flat=64 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,128,0,2 +es_map_th=0,512,0,5 +[EDGE_0] +edge_enh=100,100 +thin_freq=16 +robust_freq=0 +wt=16,16 +th_flat_low=18 +th_flat_high=50 +th_edge_low=100 +th_edge_high=132 +str_flat=48 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_1] +edge_enh=100,100 +thin_freq=16 +robust_freq=0 +wt=16,16 +th_flat_low=28 +th_flat_high=60 +th_edge_low=110 +th_edge_high=142 +str_flat=48 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_2] +edge_enh=100,100 +thin_freq=16 +robust_freq=0 +wt=16,16 +th_flat_low=32 +th_flat_high=80 +th_edge_low=120 +th_edge_high=152 +str_flat=48 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_3] +edge_enh=100,100 +thin_freq=16 +robust_freq=0 +wt=16,16 +th_flat_low=36 +th_flat_high=100 +th_edge_low=130 +th_edge_high=162 +str_flat=40 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_4] +edge_enh=100,100 +thin_freq=16 +robust_freq=0 +wt=12,12 +th_flat_low=46 +th_flat_high=110 +th_edge_low=140 +th_edge_high=172 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_5] +edge_enh=100,100 +thin_freq=16 +robust_freq=0 +wt=8,8 +th_flat_low=86 +th_flat_high=150 +th_edge_low=180 +th_edge_high=212 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_6] +edge_enh=100,100 +thin_freq=16 +robust_freq=0 +wt=8,8 +th_flat_low=176 +th_flat_high=240 +th_edge_low=270 +th_edge_high=302 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_7] +edge_enh=100,100 +thin_freq=16 +robust_freq=0 +wt=8,8 +th_flat_low=266 +th_flat_high=330 +th_edge_low=360 +th_edge_high=392 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_8] +edge_enh=80,80 +thin_freq=16 +robust_freq=0 +wt=4,4 +th_flat_low=306 +th_flat_high=370 +th_edge_low=400 +th_edge_high=432 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,2,5 +es_map_th=0,512,0,5 +[EDGE_9] +edge_enh=80,80 +thin_freq=16 +robust_freq=0 +wt=2,2 +th_flat_low=350 +th_flat_high=450 +th_edge_low=480 +th_edge_high=512 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,4,5 +es_map_th=0,512,0,5 +[EDGE_10] +edge_enh=80,80 +thin_freq=16 +robust_freq=0 +wt=0,0 +th_flat_low=450 +th_flat_high=500 +th_edge_low=530 +th_edge_high=562 +str_flat=16 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,6,5 +es_map_th=0,512,0,5 +[EDGE_11] +edge_enh=80,80 +thin_freq=0 +robust_freq=0 +wt=0,4 +th_flat_low=568 +th_flat_high=600 +th_edge_low=700 +th_edge_high=716 +str_flat=64 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,3,2 +es_map_th=0,512,0,5 +[EDGE_12] +edge_enh=60,60 +thin_freq=0 +robust_freq=0 +wt=0,4 +th_flat_low=627 +th_flat_high=659 +th_edge_low=757 +th_edge_high=773 +str_flat=64 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,5,2 +es_map_th=0,512,0,5 +[EDGE_13] +edge_enh=96,96 +thin_freq=0 +robust_freq=0 +wt=0,4 +th_flat_low=136 +th_flat_high=168 +th_edge_low=307 +th_edge_high=323 +str_flat=64 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,3,2 +es_map_th=0,512,0,5 +[EDGE_14] +edge_enh=96,96 +thin_freq=0 +robust_freq=0 +wt=0,4 +th_flat_low=136 +th_flat_high=168 +th_edge_low=307 +th_edge_high=323 +str_flat=64 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,3,2 +es_map_th=0,512,0,5 +[EDGE_15] +edge_enh=96,96 +thin_freq=0 +robust_freq=0 +wt=0,4 +th_flat_low=136 +th_flat_high=168 +th_edge_low=307 +th_edge_high=323 +str_flat=64 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,3,2 +es_map_th=0,512,0,5 +[3DNR] +enable=1 +fcvg_enable=0 +mode=0 +[3DNR_M] +pf_type=0 +cost_blend=15 +sad_penalty=64,64,0,128,128,128,200,200 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=5,5,6,6,7,7,8,8 +switch_rto=128 +probability=4 +sad_base=0,0,0,0,0,0,0,0 +sad_coefa=0,0,0,0,0,0,0,0 +sad_coefb=0,0,0,0,0,0,0,0 +sad_std=0,0,0,0,0,0,0,0 +fth=8,16 +mv_th=4 +mix_ratio=16,32 +ds_th=6 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=16,32,48,64 +pre_filter_rto=128,64 +snr_base_th=256 +tnr_base_th=256 +freq_wet=16,16,16,16 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=8,16,64 +tnr_str=64,16,8 +luma_3d_lut=0,6,12,24,40,76,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,6,12,24,40,76,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_0] +pf_type=0 +cost_blend=8 +sad_penalty=32,32,0,48,48,48,64,64 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=180 +probability=8 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=9,9,8,8,7,7,7,7 +sad_coefb=80,80,80,60,50,50,50,50 +sad_std=30,30,25,20,20,20,20,20 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=16,0,0 +tf0_c_str=16,0,0 +pre_filter_str=8,10,12,14 +pre_filter_rto=64,16 +snr_base_th=300 +tnr_base_th=200 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,32 +tnr_str=16,4,2 +luma_3d_lut=0,12,24,43,62,80,96,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,9,22,40,57,75,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_1] +pf_type=0 +cost_blend=8 +sad_penalty=32,32,0,64,64,64,80,80 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=180 +probability=8 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=9,9,8,8,7,7,7,7 +sad_coefb=80,80,80,60,50,50,50,50 +sad_std=30,30,25,20,20,20,20,20 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=16,0,0 +tf0_c_str=16,0,0 +pre_filter_str=8,10,12,14 +pre_filter_rto=64,16 +snr_base_th=400 +tnr_base_th=300 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,32 +tnr_str=16,4,2 +luma_3d_lut=0,10,22,40,62,80,96,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,9,22,40,57,75,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_2] +pf_type=1 +cost_blend=8 +sad_penalty=64,64,0,96,96,96,156,156 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=180 +probability=8 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=11,11,10,10,9,9,9,9 +sad_coefb=100,100,90,70,60,60,60,60 +sad_std=40,40,30,25,25,25,25,25 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=0,128,128 +tf0_y_str=16,0,0 +tf0_c_str=16,0,0 +pre_filter_str=12,15,18,22 +pre_filter_rto=64,32 +snr_base_th=400 +tnr_base_th=400 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,32 +tnr_str=32,4,2 +luma_3d_lut=0,10,22,40,62,80,96,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,9,22,40,57,75,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_3] +pf_type=1 +cost_blend=8 +sad_penalty=80,80,0,128,128,128,256,256 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=140 +probability=6 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=12,12,11,11,10,10,10,10 +sad_coefb=110,110,100,80,70,70,70,70 +sad_std=45,45,35,30,30,30,30,30 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,3,3 +chroma_residue_th=1 +tf0_blur_str=0,255,255 +tf0_y_str=32,0,0 +tf0_c_str=32,0,0 +pre_filter_str=12,15,18,22 +pre_filter_rto=64,32 +snr_base_th=400 +tnr_base_th=400 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,32 +tnr_str=32,8,2 +luma_3d_lut=0,10,22,40,62,80,96,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,9,22,40,57,75,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_4] +pf_type=1 +cost_blend=8 +sad_penalty=96,96,0,192,192,192,384,384 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=6 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=13,13,12,12,11,11,11,11 +sad_coefb=120,120,110,90,80,80,80,80 +sad_std=50,50,40,35,35,35,35,35 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,3,3 +chroma_residue_th=1 +tf0_blur_str=0,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=16,20,24,28 +pre_filter_rto=64,32 +snr_base_th=400 +tnr_base_th=400 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,32 +tnr_str=32,8,2 +luma_3d_lut=0,10,22,40,62,80,96,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,9,22,40,57,75,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_5] +pf_type=1 +cost_blend=8 +sad_penalty=96,96,0,192,192,192,384,384 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=6 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=14,14,13,13,12,12,12,12 +sad_coefb=130,130,120,100,90,90,90,90 +sad_std=55,55,45,40,40,40,40,40 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,3,3 +chroma_residue_th=1 +tf0_blur_str=0,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=16,20,24,28 +pre_filter_rto=64,32 +snr_base_th=500 +tnr_base_th=500 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,32 +tnr_str=32,8,2 +luma_3d_lut=0,10,22,40,62,80,96,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,9,22,40,57,75,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_6] +pf_type=1 +cost_blend=8 +sad_penalty=128,128,0,225,225,225,480,480 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=6 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=17,17,16,16,15,15,15,15 +sad_coefb=170,170,160,140,130,130,130,130 +sad_std=60,60,50,45,45,45,45,45 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,3,3 +chroma_residue_th=1 +tf0_blur_str=0,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=20,30,40,50 +pre_filter_rto=128,64 +snr_base_th=500 +tnr_base_th=500 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,32 +tnr_str=32,8,2 +luma_3d_lut=0,10,22,40,62,80,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,9,22,40,57,75,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_7] +pf_type=2 +cost_blend=8 +sad_penalty=350,350,0,700,700,700,900,900 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=5 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=22,22,20,20,18,18,18,18 +sad_coefb=340,340,280,210,200,200,200,200 +sad_std=75,75,65,60,50,50,50,50 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,3,3 +chroma_residue_th=1 +tf0_blur_str=32,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=30,40,50,60 +pre_filter_rto=128,64 +snr_base_th=700 +tnr_base_th=700 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,64 +tnr_str=32,8,2 +luma_3d_lut=0,10,22,40,62,80,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,8,20,36,55,75,96,112 +chroma_3d_rto=0,0 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_8] +pf_type=2 +cost_blend=8 +sad_penalty=400,400,0,800,800,800,1023,1023 +detail_penalty=3,3,2,3,3,3,3,3 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=5 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=32,32,29,29,25,25,25,25 +sad_coefb=440,440,380,310,300,300,300,300 +sad_std=75,75,65,60,50,50,50,50 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,3,3 +chroma_residue_th=1 +tf0_blur_str=32,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=40,55,70,85 +pre_filter_rto=128,64 +snr_base_th=1000 +tnr_base_th=1000 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,64 +tnr_str=32,8,2 +luma_3d_lut=0,10,22,40,62,80,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,6,18,34,55,75,96,112 +chroma_3d_rto=0,0 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_9] +pf_type=3 +cost_blend=8 +sad_penalty=400,400,0,800,800,800,1023,1023 +detail_penalty=2,2,1,2,2,2,2,2 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=5 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=40,40,36,36,30,30,30,30 +sad_coefb=540,540,480,410,400,400,400,400 +sad_std=85,85,75,70,60,60,60,60 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,3,3 +chroma_residue_th=1 +tf0_blur_str=32,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=80,100,120,140 +pre_filter_rto=128,64 +snr_base_th=1000 +tnr_base_th=1000 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,64 +tnr_str=32,8,2 +luma_3d_lut=0,8,20,38,60,80,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,6,18,34,55,75,96,112 +chroma_3d_rto=0,0 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_10] +pf_type=3 +cost_blend=8 +sad_penalty=400,400,0,800,800,800,1023,1023 +detail_penalty=3,3,1,3,3,3,3,3 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=5 +sad_base=200,200,200,100,100,100,100,100 +sad_coefa=60,60,55,55,45,45,45,45 +sad_coefb=800,800,750,700,600,600,600,600 +sad_std=95,95,85,80,70,70,70,70 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,3,3 +chroma_residue_th=1 +tf0_blur_str=32,255,255 +tf0_y_str=64,4,2 +tf0_c_str=64,4,2 +pre_filter_str=100,130,160,190 +pre_filter_rto=128,64 +snr_base_th=1000 +tnr_base_th=1000 +freq_wet=32,32,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,16,64 +tnr_str=32,8,2 +luma_3d_lut=0,6,18,34,54,78,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,0,12,34,55,75,96,112 +chroma_3d_rto=0,0 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_11] +pf_type=0 +cost_blend=0 +sad_penalty=400,400,0,800,800,800,1023,1023 +detail_penalty=1,1,0,1,1,1,1,1 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=4 +sad_base=400,400,400,400,500,1300,1300,1300 +sad_coefa=37,36,36,37,34,34,34,34 +sad_coefb=540,590,590,590,550,540,400,400 +sad_std=90,90,90,90,90,90,90,90 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=120,140,180,200 +pre_filter_rto=128,64 +snr_base_th=4000 +tnr_base_th=3000 +freq_wet=16,16,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,60,80 +tnr_str=200,64,24 +luma_3d_lut=0,4,8,14,24,37,49,58 +luma_3d_rto=128,64 +chroma_3d_lut=0,5,10,14,24,35,49,60 +chroma_3d_rto=128,64 +fcvg_start_point=0 +fcvg_step_size=0 +[3DNR_12] +pf_type=0 +cost_blend=0 +sad_penalty=300,300,0,600,600,600,800,800 +detail_penalty=3,3,3,3,3,3,3,3 +switch_th=5,5,6,6,6,7,7,8 +switch_rto=128 +probability=3 +sad_base=400,400,400,400,500,500,500,500 +sad_coefa=32,29,29,29,21,21,21,21 +sad_coefb=150,130,130,130,130,130,130,130 +sad_std=50,60,64,66,68,68,70,70 +fth=30,40 +mv_th=3 +mix_ratio=16,32 +ds_th=4 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=70,80,90,100 +pre_filter_rto=50,16 +snr_base_th=1000 +tnr_base_th=5000 +freq_wet=16,16,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,100,120 +tnr_str=255,32,0 +luma_3d_lut=0,5,8,14,17,19,25,28 +luma_3d_rto=128,64 +chroma_3d_lut=0,3,8,11,13,16,16,17 +chroma_3d_rto=128,64 +fcvg_start_point=0 +fcvg_step_size=0 +[3DNR_13] +pf_type=0 +cost_blend=0 +sad_penalty=128,128,0,256,256,256,512,512 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=8,9,9,10,10,10,11,11 +switch_rto=150 +probability=3 +sad_base=512,512,512,512,512,512,512,512 +sad_coefa=24,24,23,21,22,22,22,22 +sad_coefb=90,90,90,90,90,90,90,90 +sad_std=60,60,60,60,60,60,60,60 +fth=8,16 +mv_th=20 +mix_ratio=16,32 +ds_th=2 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=100,110,120,130 +pre_filter_rto=128,64 +snr_base_th=1200 +tnr_base_th=2000 +freq_wet=20,16,16,16 +luma_wet=20,24,24,16,16,16,16,16 +snr_str=0,32,128 +tnr_str=255,32,2 +luma_3d_lut=0,1,1,1,1,2,3,4 +luma_3d_rto=128,64 +chroma_3d_lut=0,6,11,11,19,24,33,52 +chroma_3d_rto=128,64 +fcvg_start_point=0 +fcvg_step_size=0 +[3DNR_14] +pf_type=0 +cost_blend=0 +sad_penalty=128,128,0,256,256,256,512,512 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=8,9,9,10,10,10,11,11 +switch_rto=150 +probability=3 +sad_base=512,512,512,512,512,512,512,512 +sad_coefa=24,24,23,21,22,22,22,22 +sad_coefb=90,90,90,90,90,90,90,90 +sad_std=60,60,60,60,60,60,60,60 +fth=8,16 +mv_th=20 +mix_ratio=16,32 +ds_th=2 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=100,110,120,130 +pre_filter_rto=128,64 +snr_base_th=1200 +tnr_base_th=2000 +freq_wet=20,16,16,16 +luma_wet=20,24,24,16,16,16,16,16 +snr_str=0,32,128 +tnr_str=255,32,2 +luma_3d_lut=0,1,1,1,1,2,3,4 +luma_3d_rto=128,64 +chroma_3d_lut=0,6,11,11,19,24,33,52 +chroma_3d_rto=128,64 +fcvg_start_point=0 +fcvg_step_size=0 +[3DNR_15] +pf_type=0 +cost_blend=0 +sad_penalty=128,128,0,256,256,256,512,512 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=8,9,9,10,10,10,11,11 +switch_rto=150 +probability=3 +sad_base=512,512,512,512,512,512,512,512 +sad_coefa=24,24,23,21,22,22,22,22 +sad_coefb=90,90,90,90,90,90,90,90 +sad_std=60,60,60,60,60,60,60,60 +fth=8,16 +mv_th=20 +mix_ratio=16,32 +ds_th=2 +luma_residue_th=1,1,1 +chroma_residue_th=0 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=100,110,120,130 +pre_filter_rto=128,64 +snr_base_th=1200 +tnr_base_th=2000 +freq_wet=20,16,16,16 +luma_wet=20,24,24,16,16,16,16,16 +snr_str=0,32,128 +tnr_str=255,32,2 +luma_3d_lut=0,1,1,1,1,2,3,4 +luma_3d_rto=128,64 +chroma_3d_lut=0,6,11,11,19,24,33,52 +chroma_3d_rto=128,64 +fcvg_start_point=0 +fcvg_step_size=0 +[DPC] +enable=0 +bin_file=/mnt/app/isp/dpc_table.bin +[SHADING] +ecs_enable=0 +vig_enable=0 +ecs_bin_file=/mnt/app/isp/ecs_table.bin +vig_center_x=500 +vig_center_y=500 +vig_reduce_th=400 +vig_zero_th=1600 +vig_lut=0,1,4,7,10,13,23,36,57,82,112,144,198,259,375,586,1023 +[SHADING_INTER] +mode=1 +ecs_smooth_l_m_ct_lower=3200 +ecs_smooth_l_m_ct_upper=3400 +ecs_smooth_m_h_ct_lower=4800 +ecs_smooth_m_h_ct_upper=5000 +[SHADING_EXT] +ecs_ext_0_bin_file=/mnt/app/isp/ecs_table.bin +ecs_ext_1_bin_file=/mnt/app/isp/ecs_table.bin +ecs_ext_2_bin_file=/mnt/app/isp/ecs_table.bin +[LDC] +geo_enable=1 +lut_2d_enable=0 +geo_center_x=500 +geo_center_y=500 +geo_fov_gain=1024 +geo_lut_g=65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535 +geo_r_lut_gain=4096 +geo_b_lut_gain=4096 +lut2d_bin_file=/mnt/app/isp/lut2d_table.bin +[WDR] +enable=1 +mode=0 +subimg_size_h=32 +subimg_size_v=18 +contrast=128 +max_gain=5 +min_gain=3 +lut_idx=0,1,3,7,15,23,31,35,39,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63 +lut_split=0,1,2,3,3,3,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +lut_val=4095,4070,4006,3881,3791,3684,3560,3422,3348,3271,3192,3111,3029,2945,2862,2778,2694,2611,2529,2448,2369,2291,2215,2142,2070,2001,1934,1869,1807,1747,1689,1634,1531,1436,1350,1272,1200,1136,1077,1024,932,855,740,660,603,561,530,507,489,476,465,456,449,443,439,435,432,429,427,425,423,422,420,419,418 +[WDR_M] +strength=32 +[WDR_0] +level=80 +strength_min=0 +strength_max=255 +[WDR_1] +level=80 +strength_min=0 +strength_max=255 +[WDR_2] +level=80 +strength_min=0 +strength_max=255 +[WDR_3] +level=72 +strength_min=0 +strength_max=255 +[WDR_4] +level=72 +strength_min=0 +strength_max=255 +[WDR_5] +level=64 +strength_min=0 +strength_max=255 +[WDR_6] +level=64 +strength_min=0 +strength_max=128 +[WDR_7] +level=48 +strength_min=0 +strength_max=64 +[WDR_8] +level=48 +strength_min=0 +strength_max=48 +[WDR_9] +level=48 +strength_min=0 +strength_max=48 +[WDR_10] +level=48 +strength_min=0 +strength_max=48 +[WDR_11] +level=48 +strength_min=0 +strength_max=48 +[WDR_12] +level=48 +strength_min=0 +strength_max=48 +[WDR_13] +level=48 +strength_min=0 +strength_max=48 +[WDR_14] +level=48 +strength_min=0 +strength_max=48 +[WDR_15] +level=48 +strength_min=0 +strength_max=48 +[SHDR] +nrs_enable=0 +mode=0 +fusion_nor_sel=1 +fusion_l_nor_knee=3072 +fusion_l_nor_range=9 +fusion_s_nor_knee=192 +fusion_s_nor_range=6 +fusion_dif_sel=2 +fusion_l_dif_knee=3072 +fusion_l_dif_range=9 +fusion_s_dif_knee=192 +fusion_s_dif_range=6 +fusion_lum_th=256 +fusion_diff_w=0,2,4,8,10,12,14,16,14,12,10,8,6,4,2,0 +fcurve_y_mean_sel=0 +fcurve_yv_w=8 +fcurve_idx_lut=0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62 +fcurve_split_lut=1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +fcurve_val_lut=0,835,1257,1542,1758,1931,2076,2200,2309,2407,2494,2574,2647,2715,2777,2836,2891,2943,2992,3038,3082,3124,3164,3203,3240,3275,3309,3341,3373,3403,3433,3461,3489,3516,3542,3567,3592,3616,3639,3662,3684,3705,3726,3747,3767,3787,3806,3825,3843,3861,3879,3896,3913,3930,3946,3962,3978,3994,4009,4024,4039,4053,4068,4082,4095 +[SHDR_M] +nrs_diff_th=256 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_0] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_1] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_2] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_3] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_4] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_5] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_6] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_7] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_8] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_9] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_10] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_11] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_12] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_13] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_14] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_15] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[RGBIR] +mode=0 +manual_irsub_r_weight=204 +manual_irsub_g_weight=204 +manual_irsub_b_weight=230 +manual_ir_sat_gain=256 +auto_irsub_r_weight=204 +auto_irsub_g_weight=204 +auto_irsub_b_weight=230 +auto_irsub_reduce_th=220 +auto_night_mode_th=240 +[COMPANDING] +decomp_knee_pts=512,768,2560,4095,4095,4095,4095,4095,4095,4095,4095 +decomp_str_pts=0,256,512,2048,2048,2048,2048,2048,2048,2048,2048,2048 +decomp_shift_pts=4,5,6,8,8,8,8,8,8,8,8,8 +comp_knee_pts=10,11,12,13,14,15,16,16,16,16,16 +comp_str_pts=0,512,1024,1536,2048,2560,3072,3072,3072,3072,3072,3072 +comp_shift_pts=3,4,5,6,7,8,9,9,9,9,9,9 +[RGBIR_ENH] +enable=1 +mode=0 +min_ir_th=50 +[RGBIR_ENH_M] +enh_ratio=16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16 +[RGBIR_ENH_0] +ir_th=128 +enh_ratio=32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 +[RGBIR_ENH_1] +ir_th=152 +enh_ratio=80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80 +[RGBIR_ENH_2] +ir_th=255 +enh_ratio=160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160 +[POST_SHARPEN] +enable=1 +mode=0 +[POST_SHARPEN_M] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_0] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=150 +th_edge=250 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_1] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=150 +th_edge=250 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_2] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=150 +th_edge=250 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_3] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=200 +th_edge=300 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_4] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_5] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=300 +th_edge=400 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_6] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=350 +th_edge=450 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_7] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=350 +th_edge=450 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_8] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=400 +th_edge=500 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_9] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=400 +th_edge=500 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_10] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_11] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_12] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_13] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_14] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_15] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[YCURVE] +enable=0 +ycurve_lut=0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,93,95,97,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,255 +[SHDR_EXT] +fcurve_y_w_lut=255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255 +[CST] +mode=0 +cst_coef=77,150,29,-43,-85,128,128,-107,-21 +y_ofs=0 +cb_ofs=128 +cr_ofs=128 +[CST_M] +cstp_ratio=2 +[CST_0] +cstp_ratio=2 +[CST_1] +cstp_ratio=2 +[CST_2] +cstp_ratio=2 +[CST_3] +cstp_ratio=2 +[CST_4] +cstp_ratio=2 +[CST_5] +cstp_ratio=2 +[CST_6] +cstp_ratio=2 +[CST_7] +cstp_ratio=2 +[CST_8] +cstp_ratio=2 +[CST_9] +cstp_ratio=2 +[CST_10] +cstp_ratio=2 +[CST_11] +cstp_ratio=2 +[CST_12] +cstp_ratio=2 +[CST_13] +cstp_ratio=2 +[CST_14] +cstp_ratio=2 +[CST_15] +cstp_ratio=2 +[TOOL_PARAMS] +Gamma_VirtualGamma=13,13 +Gamma_VirtualBlack=0,0 +Gamma_VirtualContrast=100,100 +Gamma_VirtualManual0=0,2,4,6,8,12,16,24,32,48,64,96,128 +Gamma_VirtualManual1=0,2,4,6,8,12,16,24,32,48,64,96,128 +NR_VirtualOutlBright=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,-1,-1,-1,-1,-1,-1 +NR_VirtualOutlDark=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,-1,-1,-1,-1,-1,-1 +NR_VirtualFilterTH=-1,-1,-1,-1,-1,-1,-1,36,64,82,143,-1,-1,-1,-1,-1,-1 +NR_VirtualFilterTHB=-1,-1,-1,-1,-1,-1,-1,108,180,-1,500,-1,-1,-1,-1,-1,-1 +NR_VirtualFilterLut=-1,-1,-1,-1,-1,-1,-1,55,96,128,224,-1,-1,-1,-1,-1,-1 +NR_VirtualFilterLutB=-1,-1,-1,-1,-1,-1,-1,55,92,-1,-1,-1,-1,-1,-1,-1,-1 +SHDR_VirtualContrast=100 +SHDR_VirtualDelta=1000 +SHDR_VirtualKnee=24576 +SHDR_VirtualBlendR=12 +TCurve_Linear_VirtualContrast=100 +TCurve_Linear_VirtualDelta=1000 +TCurve_Linear_VirtualKnee=1536 +TCurve_Linear_VirtualBlendR=12 +TCurve_SHDR_VirtualContrast=100,100,100,100,100 +TCurve_SHDR_VirtualDelta=1000,1000,1000,1000,1000 +TCurve_SHDR_VirtualKnee=1536,1536,1536,1536,1536 +TCurve_SHDR_VirtualBlendR=12,12,12,12,12 +WDR_VirtualDark=100 +WDR_VirtualBright=20 +YCurve_VirtualGamma=13 +YCurve_VirtualBlack=0 +YCurve_VirtualContrast=100 +YCurve_VirtualManual0=0,2,4,6,8,12,16,24,32,48,64,96,128 diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/isp_sc401ai_0.cfg b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/isp_sc401ai_0.cfg new file mode 100755 index 000000000..a12fa47c6 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/isp_sc401ai_0.cfg @@ -0,0 +1,2389 @@ +[INFO] +# NVT9856x ISP Config +sensor=sc401ai +isp_version=0x01000000 +ae_version=0x01000100 +awb_version=0x01000000 +iq_version=0x01000300 +tool_version=0x01000400 + +[NVT_AE] +expect_lum_mov=47 +expect_lum_photo=64 +expect_ratio_mov=70,79,91,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 +expect_ratio_photo=100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 +la_clamp_tab_normal_h=255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255 +la_clamp_tab_normal_l=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +la_clamp_tab_shdr_h=125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125 +la_clamp_tab_shdr_l=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +over_exp_enable=1 +over_exp_lum=150 +over_exp_speed=3 +over_exp_ratio=100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 +over_exp_thr_mov=2,2,3,3,3,3,4,5,6,7,8,9,10,10,10,10,10,10,10,10,10 +over_exp_thr_photo=2,2,3,3,3,3,4,5,6,7,8,9,10,10,10,10,10,10,10,10,10 +over_exp_maxcnt=10,10,10,10,10,10,10,10,10,12,15,15,15,15,15,15,15,15,15,15,15 +over_exp_mincnt=3,3,3,3,3,3,3,3,3,5,8,8,8,8,8,8,8,8,8,8,8 +conv_skip_frame=1 +conv_speed=128 +conv_range_conv=10,10 +conv_freeze_en=0 +conv_freeze_cyc=10 +conv_freeze_thr=100 +conv_slowshoot_en=1 +conv_slowshoot_range=30 +conv_slowshoot_thr=2 +conv_stable_counter=0 +curvegen_movie_iso_calcoef=40 +curvegen_movie_freq=0 +curvegen_movie_node0=56,100,0,0 +curvegen_movie_node1=20000,200,0,0 +curvegen_movie_node2=0,0,0,0 +curvegen_movie_node3=0,0,0,0 +curvegen_movie_node4=0,0,0,0 +curvegen_movie_node5=0,0,0,0 +curvegen_movie_node6=0,0,0,0 +curvegen_movie_node7=0,0,0,0 +curvegen_movie_node8=0,0,0,0 +curvegen_movie_node9=0,0,0,0 +curvegen_movie_node10=0,0,0,0 +curvegen_movie_node11=0,0,0,0 +curvegen_movie_node_num=2 +curvegen_movie_iso_max=102400 +curvegen_movie_hdr_ratio=1,16 +curvegen_movie_auto_lowlight_en=0 +curvegen_movie_extend_fps0=3000,1000 +curvegen_movie_extend_fps1=2400,2400 +curvegen_movie_extend_fps2=2000,2000 +curvegen_movie_extend_fps3=1500,1500 +curvegen_movie_extend_fps4=1200,1200 +curvegen_movie_iso_mode=0 +curvegen_movie_isp_gain_thres=51200 +curvegen_movie_flicker_mode=0 +win_weight0=1,1,1,1,1,1,1,1 +win_weight1=1,2,2,2,2,2,2,1 +win_weight2=1,2,3,3,3,3,2,1 +win_weight3=1,2,3,4,4,3,2,1 +win_weight4=1,2,3,4,4,3,2,1 +win_weight5=1,2,3,3,3,3,2,1 +win_weight6=1,2,2,2,2,2,2,1 +win_weight7=1,1,1,1,1,1,1,1 +lum_gamma=0,52,101,146,189,228,266,301,334,365,395,423,449,474,498,521,543,564,584,603,621,638,655,671,687,701,716,729,743,755,768,780,791,802,813,823,833,843,853,862,871,879,888,896,904,911,919,926,933,940,947,953,960,966,972,978,983,989,995,1000,1005,1010,1015,1020,1023 +shdr_expy_le=64 +shdr_tab_ratio_le=100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 +iris_en=0 +iris_min_exp=0 +iris_probe_balance=0 +iris_balance_ratio=110 +iris_driving_ratio=0 +iris_ctrl=3,1,1 +iris_pwm_id=-1 +iris_drv_max=200 +iris_freeze_time=500 +iris_unfreeze_time=1000 +iris_ctrl_dir_inv=0 +curvegen_photo_node0=1,100,0,0 +curvegen_photo_node1=33333,800,0,0 +curvegen_photo_node2=66666,1600,0,0 +curvegen_photo_node3=100000,3200,0,0 +curvegen_photo_node4=0,0,0,0 +curvegen_photo_node5=0,0,0,0 +curvegen_photo_node6=0,0,0,0 +curvegen_photo_node7=0,0,0,0 +curvegen_photo_node8=0,0,0,0 +curvegen_photo_node9=0,0,0,0 +curvegen_photo_node10=0,0,0,0 +curvegen_photo_node11=0,0,0,0 +curvegen_photo_node_num=4 +curvegen_photo_expt_max=66666 +curvegen_photo_iso_max=6400 +curvegen_photo_iso_mode=1 +curvegen_photo_isp_gain_thres=50000 +[NVT_AWB] +th_y=5,245 +th_rpb=69,260 +th_rsb=-51,128 +th_r2g=44,167 +th_b2g=26,94 +th_rmb=29,47 +lv_night=1,4 +lv_in=6,10 +lv_out=14,26 +ct_weight_ctmp=2300,2800,3700,4700,6500,11000 +ct_weight_cx=803,854,928,991,1071,1139 +ct_weight_out=1,1,1,1,1,1 +ct_weight_in=1,1,1,1,1,1 +ct_weight_night=1,1,1,1,1,1 +target_cx=854,991,1071 +target_rg_ratio=1024,1024,1024 +target_bg_ratio=1024,1024,1024 +ct_info_temperature=2300,2800,3700,4700,6500,11000 +ct_info_r_gain=252,288,362,443,520,652 +ct_info_g_gain=256,256,256,256,256,256 +ct_info_b_gain=861,731,623,535,401,343 +mwb_r_gain=256,480,480,249,285,256,256,256,256,256,256,256 +mwb_g_gain=256,256,256,256,256,256,256,256,256,256,256,256 +mwb_b_gain=256,377,320,839,806,256,256,256,256,256,256,256 +conv_skip_frame=1 +conv_speed=50 +conv_tolerance=259 +expand_block_mode=1,1,0,0 +expand_block_lv_l=5,3,6,6 +expand_block_lv_h=9,9,10,10 +expand_block_y_l=5,5,5,5 +expand_block_y_u=245,245,245,245 +expand_block_rpb_l=115,108,91,114 +expand_block_rpb_u=128,122,105,128 +expand_block_rsb_l=19,-10,18,32 +expand_block_rsb_u=32,2,32,-53 +luma_weight_enable=1 +luma_weight_y=4,8,20,32,192,208,224,240 +luma_weight_w=1,1,4,4,4,4,1,1 +[OB] +mode=0 +[OB_M] +cofs=260,260,260,260,260 +[OB_0] +cofs=260,260,260,260,260 +[OB_1] +cofs=260,260,260,260,260 +[OB_2] +cofs=260,260,260,260,260 +[OB_3] +cofs=260,260,260,260,260 +[OB_4] +cofs=260,260,260,260,260 +[OB_5] +cofs=260,260,260,260,260 +[OB_6] +cofs=260,260,260,260,260 +[OB_7] +cofs=260,260,260,260,260 +[OB_8] +cofs=260,260,260,260,260 +[OB_9] +cofs=260,260,260,260,260 +[OB_10] +cofs=260,260,260,260,260 +[OB_11] +cofs=260,260,260,260,260 +[OB_12] +cofs=260,260,260,260,260 +[OB_13] +cofs=260,260,260,260,260 +[OB_14] +cofs=260,260,260,260,260 +[OB_15] +cofs=260,260,260,260,260 +[NR] +outl_enable=1 +gbal_enable=1 +filter_enable=1 +lca_enable=1 +dbcs_enable=1 +mode=0 +[NR_M] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=4095,4095,4095,4095,4095 +outl_dark_th=4095,4095,4095,4095,4095 +gbal_diff_th_str=256 +gbal_edge_protect_th=128 +filter_th=0,0,0,0,0,0 +filter_lut=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +filter_th_b=0,0,0,0,0,0 +filter_lut_b=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +filter_blend_w=0 +filter_clamp_th=0 +filter_clamp_mul=128 +lca_sub_center_filter_y=0 +lca_sub_center_filter_c=0 +lca_sub_filter_y=0 +lca_sub_filter_c=0 +lca_out_y_wt=0 +lca_out_c_wt=0 +dbcs_step_y=2 +dbcs_step_c=2 +[NR_0] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1723,2843,4095,4095 +outl_dark_th=32,1723,2843,4095,4095 +gbal_diff_th_str=0 +gbal_edge_protect_th=128 +filter_th=0,0,1,1,1,2 +filter_lut=0,2,2,3,4,4,4,5,5,6,6,6,6,7,7,7,8 +filter_th_b=0,0,3,3,3,6 +filter_lut_b=0,2,2,3,4,4,4,5,5,6,6,6,6,7,7,7,8 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=128 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=0 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_1] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1723,2843,4095,4095 +outl_dark_th=32,1723,2843,4095,4095 +gbal_diff_th_str=0 +gbal_edge_protect_th=128 +filter_th=0,2,2,3,4,5 +filter_lut=0,2,3,4,4,5,5,6,6,7,7,7,8,8,8,9,9 +filter_th_b=0,6,6,9,12,15 +filter_lut_b=0,2,3,4,4,5,5,6,6,7,7,7,8,8,8,9,9 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=110 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=0 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_2] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1723,2843,4095,4095 +outl_dark_th=32,1723,2843,4095,4095 +gbal_diff_th_str=0 +gbal_edge_protect_th=128 +filter_th=0,2,3,4,5,7 +filter_lut=0,3,4,5,6,7,7,8,9,9,10,10,11,11,11,12,12 +filter_th_b=0,7,11,13,15,22 +filter_lut_b=0,3,4,5,6,7,7,8,9,9,10,10,11,11,11,12,12 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=110 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=4 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_3] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1723,2843,4095,4095 +outl_dark_th=32,1723,2843,4095,4095 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,3,5,6,7,10 +filter_lut=0,4,5,6,8,8,9,10,11,12,12,13,13,14,14,15,16 +filter_th_b=0,11,16,19,22,32 +filter_lut_b=0,4,5,6,8,8,9,10,11,12,12,13,13,14,14,15,16 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=100 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=6 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_4] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1723,2843,4095,4095 +outl_dark_th=32,1723,2843,4095,4095 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,4,6,7,8,12 +filter_lut=0,7,10,12,14,16,17,19,20,21,22,23,24,25,26,27,28 +filter_th_b=0,13,18,22,26,37 +filter_lut_b=0,7,10,12,14,16,17,19,20,21,22,23,24,25,26,27,28 +filter_blend_w=0 +filter_clamp_th=32 +filter_clamp_mul=80 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=8 +dbcs_step_y=0 +dbcs_step_c=0 +[NR_5] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1723,2843,4095,4095 +outl_dark_th=32,1723,2843,4095,4095 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,8,12,15,17,24 +filter_lut=0,12,16,20,24,26,29,31,33,36,37,39,41,43,44,46,48 +filter_th_b=0,26,37,45,52,74 +filter_lut_b=0,12,16,20,24,26,29,31,33,36,37,39,41,43,44,46,48 +filter_blend_w=2 +filter_clamp_th=32 +filter_clamp_mul=70 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=10 +dbcs_step_y=1 +dbcs_step_c=1 +[NR_6] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1723,2843,4095,4095 +outl_dark_th=32,1128,1861,3070,4095 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,11,16,20,23,33 +filter_lut=0,16,22,27,32,35,39,42,45,48,50,53,55,57,59,61,64 +filter_th_b=0,35,49,61,70,99 +filter_lut_b=0,16,22,27,32,35,39,42,45,48,50,53,55,57,59,61,64 +filter_blend_w=4 +filter_clamp_th=32 +filter_clamp_mul=64 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=14 +dbcs_step_y=1 +dbcs_step_c=1 +[NR_7] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=32,1723,2843,4095,4095 +outl_dark_th=32,1128,1861,3070,4095 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,14,20,25,29,41 +filter_lut=0,20,28,34,40,44,48,52,56,60,63,66,69,72,74,77,80 +filter_th_b=0,44,62,76,88,124 +filter_lut_b=0,20,28,34,40,44,48,52,56,60,63,66,69,72,74,77,80 +filter_blend_w=8 +filter_clamp_th=10 +filter_clamp_mul=32 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=16 +dbcs_step_y=2 +dbcs_step_c=1 +[NR_8] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,17,24,30,35,49 +filter_lut=0,24,33,41,48,53,58,63,67,72,75,79,83,86,89,92,96 +filter_th_b=0,52,74,91,105,149 +filter_lut_b=0,24,33,41,48,53,58,63,67,72,75,79,83,86,89,92,96 +filter_blend_w=12 +filter_clamp_th=10 +filter_clamp_mul=20 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=18 +dbcs_step_y=2 +dbcs_step_c=1 +[NR_9] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,23,33,40,47,66 +filter_lut=0,32,45,55,64,71,78,84,90,96,101,106,110,115,119,123,128 +filter_th_b=0,70,99,122,141,199 +filter_lut_b=0,32,45,55,64,71,78,84,90,96,101,106,110,115,119,123,128 +filter_blend_w=15 +filter_clamp_th=0 +filter_clamp_mul=0 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=0 +lca_out_c_wt=20 +dbcs_step_y=2 +dbcs_step_c=1 +[NR_10] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,29,41,50,58,83 +filter_lut=0,40,56,69,80,89,97,105,113,120,126,132,138,144,149,154,160 +filter_th_b=0,88,124,152,176,249 +filter_lut_b=0,40,56,69,80,89,97,105,113,120,126,132,138,144,149,154,160 +filter_blend_w=15 +filter_clamp_th=0 +filter_clamp_mul=0 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=16 +lca_out_c_wt=20 +dbcs_step_y=2 +dbcs_step_c=1 +[NR_11] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,21,30,37,42,60 +filter_lut=0,31,44,54,63,70,77,83,89,94,99,104,109,113,118,122,126 +filter_th_b=0,63,90,111,126,180 +filter_lut_b=0,31,44,54,63,70,77,83,89,94,99,104,109,113,118,122,126 +filter_blend_w=8 +filter_clamp_th=32 +filter_clamp_mul=64 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=18 +lca_out_c_wt=28 +dbcs_step_y=1 +dbcs_step_c=1 +[NR_12] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,21,30,37,42,60 +filter_lut=0,31,44,54,63,70,77,83,89,94,99,104,109,113,118,122,126 +filter_th_b=0,63,90,111,126,180 +filter_lut_b=0,31,44,54,63,70,77,83,89,94,99,104,109,113,118,122,126 +filter_blend_w=8 +filter_clamp_th=32 +filter_clamp_mul=64 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=18 +lca_out_c_wt=28 +dbcs_step_y=1 +dbcs_step_c=1 +[NR_13] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,21,30,37,42,60 +filter_lut=0,31,44,54,63,70,77,83,89,94,99,104,109,113,118,122,126 +filter_th_b=0,63,90,111,126,180 +filter_lut_b=0,31,44,54,63,70,77,83,89,94,99,104,109,113,118,122,126 +filter_blend_w=8 +filter_clamp_th=32 +filter_clamp_mul=64 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=18 +lca_out_c_wt=28 +dbcs_step_y=1 +dbcs_step_c=1 +[NR_14] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,21,30,37,42,60 +filter_lut=0,31,44,54,63,70,77,83,89,94,99,104,109,113,118,122,126 +filter_th_b=0,63,90,111,126,180 +filter_lut_b=0,31,44,54,63,70,77,83,89,94,99,104,109,113,118,122,126 +filter_blend_w=8 +filter_clamp_th=32 +filter_clamp_mul=64 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=18 +lca_out_c_wt=28 +dbcs_step_y=1 +dbcs_step_c=1 +[NR_15] +outl_ord_protect_th=256 +outl_ord_blend_w=0 +outl_avg_mode=0 +outl_sel=0 +outl_bright_th=710,1036,1711,2365,3905 +outl_dark_th=710,1036,1711,2365,3905 +gbal_diff_th_str=9 +gbal_edge_protect_th=128 +filter_th=0,21,30,37,42,60 +filter_lut=0,31,44,54,63,70,77,83,89,94,99,104,109,113,118,122,126 +filter_th_b=0,63,90,111,126,180 +filter_lut_b=0,31,44,54,63,70,77,83,89,94,99,104,109,113,118,122,126 +filter_blend_w=8 +filter_clamp_th=32 +filter_clamp_mul=64 +lca_sub_center_filter_y=16 +lca_sub_center_filter_c=16 +lca_sub_filter_y=16 +lca_sub_filter_c=16 +lca_out_y_wt=18 +lca_out_c_wt=28 +dbcs_step_y=1 +dbcs_step_c=1 +[CFA] +mode=0 +[CFA_M] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_0] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_1] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_2] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_3] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_4] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=64 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_5] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=48 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_6] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=32 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_7] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_8] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_9] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_10] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_11] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_12] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_13] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_14] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[CFA_15] +edge_dth=40 +edge_dth2=160 +freq_th=160 +fcs_weight=16 +fcs_strength=15,15,7,4,3,2,2,1,1,1,1,0,0,0,0,0 +[VA] +mode=0 +indep_roi_0=0,0,1000,1000 +indep_roi_1=0,0,1000,1000 +indep_roi_2=0,0,1000,1000 +indep_roi_3=0,0,1000,1000 +indep_roi_4=0,0,1000,1000 +g1=0,0,-1,0,2 +g2=2,0,-1,0,3 +[VA_M] +g1_th=0,0 +g2_th=0,0 +[VA_0] +g1_th=0,0 +g2_th=0,0 +[VA_1] +g1_th=0,0 +g2_th=0,0 +[VA_2] +g1_th=0,0 +g2_th=0,0 +[VA_3] +g1_th=0,0 +g2_th=0,0 +[VA_4] +g1_th=0,0 +g2_th=0,0 +[VA_5] +g1_th=0,0 +g2_th=0,0 +[VA_6] +g1_th=0,0 +g2_th=0,0 +[VA_7] +g1_th=0,0 +g2_th=0,0 +[VA_8] +g1_th=0,0 +g2_th=0,0 +[VA_9] +g1_th=0,0 +g2_th=0,0 +[VA_10] +g1_th=0,0 +g2_th=0,0 +[VA_11] +g1_th=0,0 +g2_th=0,0 +[VA_12] +g1_th=0,0 +g2_th=0,0 +[VA_13] +g1_th=0,0 +g2_th=0,0 +[VA_14] +g1_th=0,0 +g2_th=0,0 +[VA_15] +g1_th=0,0 +g2_th=0,0 +[GAMMA] +tone_enable=1 +gamma_enable=1 +mode=0 +tone_input_blend_lut=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +tone_lut_linear_idx=0,8,16,24,28,32,36,38,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63 +tone_lut_linear_split=3,3,3,2,2,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +tone_lut_linear_val=0,18,38,56,76,95,114,133,152,171,189,208,227,245,265,283,302,321,339,358,377,396,414,433,452,490,527,565,603,642,680,719,758,796,836,875,915,998,1079,1158,1235,1369,1503,1638,1773,1910,2046,2180,2313,2443,2571,2698,2823,2946,3067,3186,3304,3412,3517,3619,3718,3815,3909,4003,4095 +tone_lut_shdr_idx=0,4,8,12,16,20,24,26,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,52,56,60 +tone_lut_shdr_split=2,2,2,2,2,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2 +tone_lut_shdr_set_num=5 +tone_lut_shdr_set0_lv=0 +tone_lut_shdr_set0_val=0,128,247,359,464,560,642,702,759,807,854,900,946,990,1033,1075,1116,1156,1196,1235,1273,1311,1347,1383,1419,1489,1557,1624,1689,1815,1936,2054,2168,2279,2388,2494,2598,2701,2801,2901,2998,3095,3190,3284,3378,3470,3561,3652,3742,3765,3787,3809,3831,3854,3876,3898,3920,3942,3964,3986,4008,4030,4052,4073,4095 +tone_lut_shdr_set1_lv=25 +tone_lut_shdr_set1_val=0,158,302,433,554,666,769,867,958,1044,1125,1203,1276,1345,1412,1476,1538,1594,1649,1702,1753,1801,1848,1892,1935,2003,2070,2135,2198,2317,2429,2533,2630,2726,2818,2905,2988,3070,3149,3226,3301,3375,3447,3517,3586,3653,3719,3784,3848,3864,3880,3896,3912,3927,3943,3958,3973,3989,4004,4020,4035,4050,4065,4080,4095 +tone_lut_shdr_set2_lv=50 +tone_lut_shdr_set2_val=0,224,414,579,725,856,975,1083,1182,1275,1361,1441,1517,1587,1655,1719,1781,1836,1889,1941,1990,2036,2081,2123,2164,2227,2289,2349,2407,2516,2618,2712,2798,2884,2966,3044,3118,3190,3260,3329,3395,3460,3523,3585,3646,3706,3764,3821,3878,3892,3906,3919,3933,3947,3961,3974,3988,4002,4015,4028,4042,4055,4068,4082,4095 +tone_lut_shdr_set3_lv=75 +tone_lut_shdr_set3_val=0,368,624,825,991,1133,1258,1369,1470,1561,1645,1722,1795,1857,1917,1973,2028,2076,2123,2168,2212,2253,2293,2331,2369,2431,2491,2548,2602,2705,2800,2887,2965,3042,3116,3186,3252,3316,3378,3439,3497,3553,3608,3661,3714,3765,3815,3863,3911,3923,3935,3946,3958,3970,3982,3993,4005,4016,4027,4038,4050,4061,4072,4084,4095 +tone_lut_shdr_set4_lv=100 +tone_lut_shdr_set4_val=0,512,835,1071,1257,1411,1542,1656,1758,1847,1929,2004,2073,2127,2179,2228,2276,2317,2357,2396,2434,2471,2506,2540,2574,2636,2694,2748,2797,2894,2983,3062,3132,3201,3266,3328,3387,3443,3497,3549,3599,3646,3693,3738,3782,3824,3866,3906,3945,3955,3965,3974,3984,3994,4003,4012,4022,4031,4040,4049,4059,4068,4077,4086,4095 +[GAMMA_M] +gamma_lut=0,37,73,107,139,169,198,225,241,257,273,289,304,318,333,347,360,373,386,399,411,422,433,444,455,465,475,484,493,502,510,518,525,532,539,546,553,560,566,573,580,587,594,601,607,614,621,627,634,640,647,653,659,666,672,678,684,691,697,703,709,715,721,727,733,739,744,750,756,762,767,772,777,782,787,792,797,801,806,811,816,821,826,830,835,840,845,849,854,859,863,868,872,877,882,886,891,895,900,904,908,913,917,921,926,930,934,939,943,947,951,955,959,964,968,972,976,980,984,988,992,996,1000,1003,1007,1011,1015,1019,1023 +[GAMMA_0] +lv=6 +gamma_lut=0,37,73,107,139,169,198,225,241,257,273,289,304,318,333,347,360,373,386,399,411,422,433,444,455,465,475,484,493,502,510,518,525,532,539,546,553,560,566,573,580,587,594,601,607,614,621,627,634,640,647,653,659,666,672,678,684,691,697,703,709,715,721,727,733,739,744,750,756,762,767,772,777,782,787,792,797,801,806,811,816,821,826,830,835,840,845,849,854,859,863,868,872,877,882,886,891,895,900,904,908,913,917,921,926,930,934,939,943,947,951,955,959,964,968,972,976,980,984,988,992,996,1000,1003,1007,1011,1015,1019,1023 +[GAMMA_1] +lv=4 +gamma_lut=0,37,73,107,139,169,198,225,241,257,273,289,304,318,333,347,360,373,386,399,411,422,433,444,455,465,475,484,493,502,510,518,525,532,539,546,553,560,566,573,580,587,594,601,607,614,621,627,634,640,647,653,659,666,672,678,684,691,697,703,709,715,721,727,733,739,744,750,756,762,767,772,777,782,787,792,797,801,806,811,816,821,826,830,835,840,845,849,854,859,863,868,872,877,882,886,891,895,900,904,908,913,917,921,926,930,934,939,943,947,951,955,959,964,968,972,976,980,984,988,992,996,1000,1003,1007,1011,1015,1019,1023 +[CCM] +mode=0 +[CCM_M] +coef=600,-158,-186,-143,719,-320,-30,-232,518 +hue_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +sat_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CCM_0] +ct=6500 +coef=445,-86,-103,-93,497,-148,0,-170,426 +hue_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +sat_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CCM_1] +ct=3700 +coef=400,-37,-107,-146,487,-85,-4,-187,447 +hue_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +sat_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[CCM_2] +ct=2800 +coef=317,75,-136,-163,514,-95,-2,-271,529 +hue_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +sat_tab=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[COLOR] +mode=0 +[COLOR_M] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_0] +c_con=140 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_1] +c_con=140 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_2] +c_con=140 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_3] +c_con=135 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_4] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_5] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_6] +c_con=128 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=90,100,114,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_7] +c_con=110 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=57,85,114,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_8] +c_con=100 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_9] +c_con=90 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,18 +cconlut=100,100,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_10] +c_con=64 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=26,58,74,122,122,122,122,122,122,122,122,122,122,122,122,122,122 +[COLOR_11] +c_con=64 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_12] +c_con=64 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_13] +c_con=64 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_14] +c_con=64 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[COLOR_15] +c_con=64 +fstab=128,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0 +fdtab=20,15,10,5,0,0,0,0,0,0,0,0,0,5,10,15 +cconlut=110,110,120,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +[CONTRAST] +mode=0 +[CONTRAST_M] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_0] +y_con=140 +lce_lum_wt_lut=20,20,20,20,20,20,20,20,20 +[CONTRAST_1] +y_con=140 +lce_lum_wt_lut=20,20,20,20,20,20,20,20,20 +[CONTRAST_2] +y_con=140 +lce_lum_wt_lut=20,20,20,20,20,20,20,20,20 +[CONTRAST_3] +y_con=135 +lce_lum_wt_lut=20,20,20,20,20,20,20,20,20 +[CONTRAST_4] +y_con=132 +lce_lum_wt_lut=20,20,20,20,20,20,20,20,20 +[CONTRAST_5] +y_con=132 +lce_lum_wt_lut=20,20,20,20,20,20,20,20,20 +[CONTRAST_6] +y_con=132 +lce_lum_wt_lut=20,20,20,20,20,20,20,20,20 +[CONTRAST_7] +y_con=132 +lce_lum_wt_lut=20,20,20,20,20,20,20,20,20 +[CONTRAST_8] +y_con=128 +lce_lum_wt_lut=20,20,20,20,20,20,20,20,20 +[CONTRAST_9] +y_con=128 +lce_lum_wt_lut=20,20,20,20,20,20,20,20,20 +[CONTRAST_10] +y_con=128 +lce_lum_wt_lut=10,10,10,10,10,10,10,10,10 +[CONTRAST_11] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_12] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_13] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_14] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[CONTRAST_15] +y_con=128 +lce_lum_wt_lut=0,0,0,0,0,0,0,0,0 +[EDGE] +enable=1 +mode=0 +th_overshoot=128 +th_undershoot=49 +edge_map_lut=100,120,140,160,180,200,220,255,255,224,192,170,154,144,136,128 +es_map_lut=32,45,53,64,64,64,64,64,64,64,64,64,64,52,44,38 +edge_tab=128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 +reduce_ratio=64 +[EDGE_M] +edge_enh=128,128 +thin_freq=8 +robust_freq=0 +wt=0,16 +th_flat_low=8 +th_flat_high=40 +th_edge_low=240 +th_edge_high=256 +str_flat=64 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,128,0,2 +es_map_th=0,512,0,5 +[EDGE_0] +edge_enh=140,140 +thin_freq=16 +robust_freq=16 +wt=0,16 +th_flat_low=50 +th_flat_high=70 +th_edge_low=130 +th_edge_high=150 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_1] +edge_enh=140,140 +thin_freq=16 +robust_freq=16 +wt=0,16 +th_flat_low=60 +th_flat_high=80 +th_edge_low=140 +th_edge_high=160 +str_flat=48 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_2] +edge_enh=140,140 +thin_freq=16 +robust_freq=12 +wt=0,16 +th_flat_low=70 +th_flat_high=90 +th_edge_low=150 +th_edge_high=170 +str_flat=48 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,5 +es_map_th=0,512,0,5 +[EDGE_3] +edge_enh=140,140 +thin_freq=12 +robust_freq=8 +wt=0,12 +th_flat_low=70 +th_flat_high=100 +th_edge_low=160 +th_edge_high=180 +str_flat=48 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,4 +es_map_th=0,512,0,5 +[EDGE_4] +edge_enh=128,128 +thin_freq=8 +robust_freq=8 +wt=0,8 +th_flat_low=70 +th_flat_high=110 +th_edge_low=170 +th_edge_high=190 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,4 +es_map_th=0,512,0,5 +[EDGE_5] +edge_enh=128,128 +thin_freq=4 +robust_freq=4 +wt=0,8 +th_flat_low=70 +th_flat_high=120 +th_edge_low=190 +th_edge_high=210 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,4 +es_map_th=0,512,0,5 +[EDGE_6] +edge_enh=100,100 +thin_freq=2 +robust_freq=2 +wt=0,6 +th_flat_low=100 +th_flat_high=160 +th_edge_low=220 +th_edge_high=240 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,4 +es_map_th=0,512,0,5 +[EDGE_7] +edge_enh=100,100 +thin_freq=4 +robust_freq=4 +wt=0,6 +th_flat_low=120 +th_flat_high=200 +th_edge_low=260 +th_edge_high=280 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,0,4 +es_map_th=0,512,0,5 +[EDGE_8] +edge_enh=80,80 +thin_freq=2 +robust_freq=2 +wt=0,2 +th_flat_low=260 +th_flat_high=300 +th_edge_low=360 +th_edge_high=380 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,3,0 +es_map_th=0,512,1,5 +[EDGE_9] +edge_enh=64,64 +thin_freq=0 +robust_freq=0 +wt=0,2 +th_flat_low=300 +th_flat_high=410 +th_edge_low=490 +th_edge_high=510 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,3,0 +es_map_th=0,512,3,5 +[EDGE_10] +edge_enh=64,64 +thin_freq=0 +robust_freq=0 +wt=0,0 +th_flat_low=400 +th_flat_high=600 +th_edge_low=700 +th_edge_high=720 +str_flat=32 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,3,0 +es_map_th=0,512,3,5 +[EDGE_11] +edge_enh=64,64 +thin_freq=2 +robust_freq=0 +wt=0,2 +th_flat_low=183 +th_flat_high=215 +th_edge_low=260 +th_edge_high=276 +str_flat=64 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,3,0 +es_map_th=0,512,0,5 +[EDGE_12] +edge_enh=64,64 +thin_freq=2 +robust_freq=0 +wt=0,2 +th_flat_low=183 +th_flat_high=215 +th_edge_low=260 +th_edge_high=276 +str_flat=64 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,3,0 +es_map_th=0,512,0,5 +[EDGE_13] +edge_enh=64,64 +thin_freq=2 +robust_freq=0 +wt=0,2 +th_flat_low=183 +th_flat_high=215 +th_edge_low=260 +th_edge_high=276 +str_flat=64 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,3,0 +es_map_th=0,512,0,5 +[EDGE_14] +edge_enh=64,64 +thin_freq=2 +robust_freq=0 +wt=0,2 +th_flat_low=183 +th_flat_high=215 +th_edge_low=260 +th_edge_high=276 +str_flat=64 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,3,0 +es_map_th=0,512,0,5 +[EDGE_15] +edge_enh=64,64 +thin_freq=2 +robust_freq=0 +wt=0,2 +th_flat_low=183 +th_flat_high=215 +th_edge_low=260 +th_edge_high=276 +str_flat=64 +str_edge=80 +overshoot_str=256 +undershoot_str=256 +edge_map_th=0,80,3,0 +es_map_th=0,512,0,5 +[3DNR] +enable=1 +fcvg_enable=1 +mode=0 +[3DNR_M] +pf_type=0 +cost_blend=15 +sad_penalty=64,64,0,128,128,128,200,200 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=5,5,6,6,7,7,8,8 +switch_rto=128 +probability=4 +sad_base=0,0,0,0,0,0,0,0 +sad_coefa=0,0,0,0,0,0,0,0 +sad_coefb=0,0,0,0,0,0,0,0 +sad_std=0,0,0,0,0,0,0,0 +fth=8,16 +mv_th=4 +mix_ratio=16,32 +ds_th=6 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=16,32,48,64 +pre_filter_rto=128,64 +snr_base_th=256 +tnr_base_th=256 +freq_wet=16,16,16,16 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=8,16,64 +tnr_str=64,16,8 +luma_3d_lut=0,6,12,24,40,76,96,112 +luma_3d_rto=128,64 +chroma_3d_lut=0,6,12,24,40,76,96,112 +chroma_3d_rto=128,64 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_0] +pf_type=0 +cost_blend=8 +sad_penalty=32,32,0,64,64,64,100,100 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=180 +probability=8 +sad_base=100,100,100,100,100,100,100,150 +sad_coefa=7,7,7,7,7,7,7,7 +sad_coefb=50,40,40,40,40,40,40,40 +sad_std=50,50,45,45,45,45,45,45 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=8,4,2 +tf0_c_str=8,4,2 +pre_filter_str=16,32,64,80 +pre_filter_rto=0,0 +snr_base_th=500 +tnr_base_th=500 +freq_wet=16,16,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,40,60 +tnr_str=64,5,2 +luma_3d_lut=0,14,28,44,64,80,96,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,14,28,44,64,80,96,112 +chroma_3d_rto=64,32 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_1] +pf_type=0 +cost_blend=8 +sad_penalty=40,40,0,80,80,80,120,120 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=180 +probability=8 +sad_base=100,100,100,100,100,100,100,150 +sad_coefa=8,8,8,8,8,8,8,8 +sad_coefb=70,60,60,60,60,60,60,60 +sad_std=55,55,50,50,50,50,50,50 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=8,4,2 +tf0_c_str=8,4,2 +pre_filter_str=16,32,64,80 +pre_filter_rto=0,0 +snr_base_th=600 +tnr_base_th=600 +freq_wet=16,16,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,40,60 +tnr_str=64,5,2 +luma_3d_lut=0,14,28,44,64,80,96,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,14,28,44,64,80,96,112 +chroma_3d_rto=64,32 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_2] +pf_type=0 +cost_blend=8 +sad_penalty=50,50,0,100,100,100,150,150 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=180 +probability=8 +sad_base=100,100,100,100,100,200,300,300 +sad_coefa=10,10,10,10,10,10,10,10 +sad_coefb=90,80,80,80,80,80,80,80 +sad_std=60,60,55,55,55,55,55,55 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=16,4,2 +tf0_c_str=16,4,2 +pre_filter_str=30,50,70,90 +pre_filter_rto=0,0 +snr_base_th=700 +tnr_base_th=700 +freq_wet=16,16,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,40,60 +tnr_str=64,20,10 +luma_3d_lut=0,12,24,40,57,75,92,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,12,24,40,56,75,92,112 +chroma_3d_rto=64,32 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_3] +pf_type=1 +cost_blend=8 +sad_penalty=60,60,0,120,120,120,180,180 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=180 +probability=8 +sad_base=100,100,100,100,100,200,300,300 +sad_coefa=13,13,13,13,13,13,13,13 +sad_coefb=110,100,100,100,100,100,100,100 +sad_std=70,70,65,65,65,65,65,65 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=0,128,255 +tf0_y_str=32,8,4 +tf0_c_str=32,8,4 +pre_filter_str=40,60,80,100 +pre_filter_rto=64,32 +snr_base_th=800 +tnr_base_th=800 +freq_wet=16,16,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=1,40,60 +tnr_str=64,20,10 +luma_3d_lut=0,12,24,40,57,75,92,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,12,24,40,56,75,92,112 +chroma_3d_rto=64,32 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_4] +pf_type=1 +cost_blend=8 +sad_penalty=80,80,0,160,160,160,240,240 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=160 +probability=7 +sad_base=100,100,100,100,100,200,300,300 +sad_coefa=14,14,14,14,14,14,14,14 +sad_coefb=120,110,110,110,110,110,110,110 +sad_std=75,75,70,70,70,70,70,70 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=0,128,255 +tf0_y_str=32,8,4 +tf0_c_str=32,8,4 +pre_filter_str=70,80,90,100 +pre_filter_rto=64,32 +snr_base_th=900 +tnr_base_th=900 +freq_wet=16,16,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=1,40,60 +tnr_str=64,20,10 +luma_3d_lut=0,11,22,38,57,75,92,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,11,22,38,56,75,92,112 +chroma_3d_rto=64,32 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_5] +pf_type=1 +cost_blend=8 +sad_penalty=100,100,0,200,200,200,300,300 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=150 +probability=6 +sad_base=100,100,100,100,100,200,300,300 +sad_coefa=17,17,17,16,16,16,16,16 +sad_coefb=130,120,120,120,120,120,120,120 +sad_std=80,80,75,75,75,75,75,75 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=32,255,255 +tf0_y_str=32,8,4 +tf0_c_str=32,8,4 +pre_filter_str=70,80,90,100 +pre_filter_rto=64,32 +snr_base_th=1100 +tnr_base_th=1100 +freq_wet=16,16,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=1,40,60 +tnr_str=64,20,10 +luma_3d_lut=0,10,20,36,50,72,92,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,10,20,36,50,69,92,112 +chroma_3d_rto=64,32 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_6] +pf_type=1 +cost_blend=8 +sad_penalty=150,150,0,300,300,300,500,500 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=140 +probability=5 +sad_base=100,100,100,100,100,200,300,300 +sad_coefa=19,19,19,19,19,19,19,19 +sad_coefb=160,150,150,140,140,140,140,140 +sad_std=85,85,80,80,80,80,80,80 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=32,255,255 +tf0_y_str=32,8,4 +tf0_c_str=32,8,4 +pre_filter_str=80,90,100,110 +pre_filter_rto=64,32 +snr_base_th=1300 +tnr_base_th=1300 +freq_wet=16,16,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=1,30,40 +tnr_str=64,30,20 +luma_3d_lut=0,8,16,32,50,72,92,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,8,16,32,50,69,92,112 +chroma_3d_rto=64,32 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_7] +pf_type=2 +cost_blend=8 +sad_penalty=350,350,0,700,700,700,1023,1023 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=4 +sad_base=100,100,100,100,100,200,300,300 +sad_coefa=22,22,22,22,22,22,22,22 +sad_coefb=220,200,190,170,150,150,150,150 +sad_std=95,95,90,90,90,90,90,90 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=64,255,255 +tf0_y_str=32,8,4 +tf0_c_str=32,8,4 +pre_filter_str=90,100,110,120 +pre_filter_rto=64,32 +snr_base_th=1500 +tnr_base_th=1500 +freq_wet=16,16,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=2,30,40 +tnr_str=64,30,20 +luma_3d_lut=0,6,12,32,50,72,92,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,8,12,32,50,69,92,112 +chroma_3d_rto=64,32 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_8] +pf_type=2 +cost_blend=8 +sad_penalty=350,350,0,700,700,700,1023,1023 +detail_penalty=3,3,2,3,3,3,3,3 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=4 +sad_base=100,100,100,100,100,200,300,300 +sad_coefa=26,26,26,26,26,26,26,26 +sad_coefb=290,270,260,240,220,220,220,220 +sad_std=120,120,120,110,105,105,105,105 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=64,255,255 +tf0_y_str=32,16,8 +tf0_c_str=32,16,8 +pre_filter_str=90,100,110,120 +pre_filter_rto=64,32 +snr_base_th=2000 +tnr_base_th=2000 +freq_wet=16,16,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=2,30,40 +tnr_str=64,30,20 +luma_3d_lut=0,5,10,32,50,72,92,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,7,11,22,44,69,92,112 +chroma_3d_rto=48,24 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_9] +pf_type=3 +cost_blend=8 +sad_penalty=300,300,0,600,600,600,1023,1023 +detail_penalty=1,1,0,1,1,1,1,1 +switch_th=7,7,7,7,7,8,8,9 +switch_rto=128 +probability=4 +sad_base=100,100,100,100,100,200,300,300 +sad_coefa=38,38,38,38,38,38,38,38 +sad_coefb=330,310,300,280,260,260,260,260 +sad_std=140,140,135,135,135,135,135,135 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=64,255,255 +tf0_y_str=32,16,8 +tf0_c_str=32,16,8 +pre_filter_str=110,120,130,140 +pre_filter_rto=64,32 +snr_base_th=2500 +tnr_base_th=2500 +freq_wet=16,16,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=2,30,40 +tnr_str=64,30,20 +luma_3d_lut=0,5,10,32,50,72,92,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,7,11,22,44,69,92,112 +chroma_3d_rto=48,24 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_10] +pf_type=3 +cost_blend=8 +sad_penalty=350,350,0,700,700,700,1023,1023 +detail_penalty=1,1,0,1,1,1,1,1 +switch_th=7,7,7,7,7,8,8,9 +switch_rto=128 +probability=4 +sad_base=100,100,100,100,100,200,300,300 +sad_coefa=33,33,33,33,33,33,33,33 +sad_coefb=380,360,350,330,310,310,310,310 +sad_std=145,145,140,140,140,140,140,140 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,2,2 +chroma_residue_th=1 +tf0_blur_str=64,255,255 +tf0_y_str=32,16,8 +tf0_c_str=32,16,8 +pre_filter_str=110,120,130,140 +pre_filter_rto=64,32 +snr_base_th=2500 +tnr_base_th=2500 +freq_wet=16,16,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=4,30,40 +tnr_str=64,30,20 +luma_3d_lut=0,13,28,43,60,72,92,112 +luma_3d_rto=64,32 +chroma_3d_lut=0,8,16,32,50,69,92,112 +chroma_3d_rto=48,24 +fcvg_start_point=4 +fcvg_step_size=1 +[3DNR_11] +pf_type=0 +cost_blend=0 +sad_penalty=400,400,0,800,800,800,1000,1000 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=4 +sad_base=400,400,400,400,500,1300,1300,1300 +sad_coefa=20,21,21,22,19,19,19,19 +sad_coefb=400,450,450,450,410,400,260,260 +sad_std=95,95,95,95,95,95,95,95 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=90,110,130,150 +pre_filter_rto=128,64 +snr_base_th=1000 +tnr_base_th=1400 +freq_wet=16,16,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,55,70 +tnr_str=200,64,24 +luma_3d_lut=0,5,10,18,26,36,45,58 +luma_3d_rto=128,64 +chroma_3d_lut=0,5,15,22,32,40,49,60 +chroma_3d_rto=128,64 +fcvg_start_point=0 +fcvg_step_size=0 +[3DNR_12] +pf_type=0 +cost_blend=0 +sad_penalty=400,400,0,800,800,800,1000,1000 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=4 +sad_base=400,400,400,400,500,1300,1300,1300 +sad_coefa=20,21,21,22,19,19,19,19 +sad_coefb=400,450,450,450,410,400,260,260 +sad_std=95,95,95,95,95,95,95,95 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=90,110,130,150 +pre_filter_rto=128,64 +snr_base_th=1000 +tnr_base_th=1400 +freq_wet=16,16,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,55,70 +tnr_str=200,64,24 +luma_3d_lut=0,5,10,18,26,36,45,58 +luma_3d_rto=128,64 +chroma_3d_lut=0,5,15,22,32,40,49,60 +chroma_3d_rto=128,64 +fcvg_start_point=0 +fcvg_step_size=0 +[3DNR_13] +pf_type=0 +cost_blend=0 +sad_penalty=400,400,0,800,800,800,1000,1000 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=4 +sad_base=400,400,400,400,500,1300,1300,1300 +sad_coefa=20,21,21,22,19,19,19,19 +sad_coefb=400,450,450,450,410,400,260,260 +sad_std=95,95,95,95,95,95,95,95 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=90,110,130,150 +pre_filter_rto=128,64 +snr_base_th=1000 +tnr_base_th=1400 +freq_wet=16,16,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,55,70 +tnr_str=200,64,24 +luma_3d_lut=0,5,10,18,26,36,45,58 +luma_3d_rto=128,64 +chroma_3d_lut=0,5,15,22,32,40,49,60 +chroma_3d_rto=128,64 +fcvg_start_point=0 +fcvg_step_size=0 +[3DNR_14] +pf_type=0 +cost_blend=0 +sad_penalty=400,400,0,800,800,800,1000,1000 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=4 +sad_base=400,400,400,400,500,1300,1300,1300 +sad_coefa=20,21,21,22,19,19,19,19 +sad_coefb=400,450,450,450,410,400,260,260 +sad_std=95,95,95,95,95,95,95,95 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,1,1 +chroma_residue_th=1 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=90,110,130,150 +pre_filter_rto=128,64 +snr_base_th=1000 +tnr_base_th=1400 +freq_wet=16,16,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,55,70 +tnr_str=200,64,24 +luma_3d_lut=0,5,10,18,26,36,45,58 +luma_3d_rto=128,64 +chroma_3d_lut=0,5,15,22,32,40,49,60 +chroma_3d_rto=128,64 +fcvg_start_point=0 +fcvg_step_size=0 +[3DNR_15] +pf_type=0 +cost_blend=0 +sad_penalty=400,400,0,800,800,800,1000,1000 +detail_penalty=4,4,3,4,4,4,4,4 +switch_th=6,6,6,6,6,7,7,8 +switch_rto=128 +probability=4 +sad_base=400,400,400,400,500,1300,1300,1300 +sad_coefa=20,21,21,22,19,19,19,19 +sad_coefb=400,450,450,450,410,400,260,260 +sad_std=95,95,95,95,95,95,95,95 +fth=8,16 +mv_th=3 +mix_ratio=16,32 +ds_th=3 +luma_residue_th=1,1,1 +chroma_residue_th=0 +tf0_blur_str=0,0,0 +tf0_y_str=0,0,0 +tf0_c_str=0,0,0 +pre_filter_str=90,110,130,150 +pre_filter_rto=128,64 +snr_base_th=1000 +tnr_base_th=1400 +freq_wet=16,16,32,32 +luma_wet=16,16,16,16,16,16,16,16 +snr_str=0,55,70 +tnr_str=200,64,24 +luma_3d_lut=0,5,10,18,26,36,45,58 +luma_3d_rto=128,64 +chroma_3d_lut=0,5,15,22,32,40,49,60 +chroma_3d_rto=128,64 +fcvg_start_point=0 +fcvg_step_size=0 +[DPC] +enable=0 +bin_file=/mnt/app/isp/dpc_table.bin +[SHADING] +ecs_enable=0 +vig_enable=0 +ecs_bin_file=/mnt/app/isp/ecs_table.bin +vig_center_x=500 +vig_center_y=500 +vig_reduce_th=400 +vig_zero_th=1600 +vig_lut=0,1,4,7,10,13,23,36,57,82,112,144,198,259,375,586,1023 +[SHADING_INTER] +mode=1 +ecs_smooth_l_m_ct_lower=3200 +ecs_smooth_l_m_ct_upper=3400 +ecs_smooth_m_h_ct_lower=4800 +ecs_smooth_m_h_ct_upper=5000 +[SHADING_EXT] +ecs_ext_0_bin_file=/mnt/app/isp/ecs_table.bin +ecs_ext_1_bin_file=/mnt/app/isp/ecs_table.bin +ecs_ext_2_bin_file=/mnt/app/isp/ecs_table.bin +[LDC] +geo_enable=1 +lut_2d_enable=0 +geo_center_x=500 +geo_center_y=500 +geo_fov_gain=1024 +geo_lut_g=65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535 +geo_r_lut_gain=4096 +geo_b_lut_gain=4096 +lut2d_bin_file=/mnt/app/isp/lut2d_table.bin +[WDR] +enable=1 +mode=0 +subimg_size_h=32 +subimg_size_v=18 +contrast=128 +max_gain=5 +min_gain=3 +lut_idx=0,1,2,6,14,22,30,34,38,40,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63 +lut_split=0,0,2,3,3,3,2,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +lut_val=4095,4088,4011,3970,3918,3853,3776,3732,3686,3637,3584,3530,3472,3413,3351,3288,3223,3157,3090,3023,2955,2887,2819,2752,2685,2619,2554,2490,2427,2366,2307,2193,2085,1985,1892,1806,1726,1654,1587,1470,1372,1291,1224,1120,1047,994,956,928,907,890,878,868,860,853,848,844,841,838,835,833,832,830,829,828,827 +[WDR_M] +strength=32 +[WDR_0] +level=128 +strength_min=0 +strength_max=255 +[WDR_1] +level=64 +strength_min=0 +strength_max=255 +[WDR_2] +level=64 +strength_min=0 +strength_max=255 +[WDR_3] +level=32 +strength_min=0 +strength_max=255 +[WDR_4] +level=32 +strength_min=0 +strength_max=255 +[WDR_5] +level=16 +strength_min=0 +strength_max=255 +[WDR_6] +level=16 +strength_min=0 +strength_max=255 +[WDR_7] +level=16 +strength_min=0 +strength_max=255 +[WDR_8] +level=0 +strength_min=0 +strength_max=255 +[WDR_9] +level=0 +strength_min=0 +strength_max=255 +[WDR_10] +level=0 +strength_min=0 +strength_max=255 +[WDR_11] +level=0 +strength_min=0 +strength_max=255 +[WDR_12] +level=0 +strength_min=0 +strength_max=255 +[WDR_13] +level=0 +strength_min=0 +strength_max=255 +[WDR_14] +level=0 +strength_min=0 +strength_max=255 +[WDR_15] +level=0 +strength_min=0 +strength_max=255 +[SHDR] +nrs_enable=0 +mode=0 +fusion_nor_sel=1 +fusion_l_nor_knee=3232 +fusion_l_nor_range=9 +fusion_s_nor_knee=202 +fusion_s_nor_range=5 +fusion_dif_sel=1 +fusion_l_dif_knee=2048 +fusion_l_dif_range=10 +fusion_s_dif_knee=128 +fusion_s_dif_range=7 +fusion_lum_th=2 +fusion_diff_w=0,2,4,8,10,12,14,16,14,12,10,8,6,4,2,0 +fcurve_y_mean_sel=0 +fcurve_yv_w=4 +fcurve_idx_lut=0,8,16,24,28,32,36,38,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63 +fcurve_split_lut=3,3,3,2,2,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +fcurve_val_lut=0,101,195,283,365,443,517,586,653,716,776,834,889,943,994,1043,1090,1136,1181,1224,1265,1306,1345,1383,1420,1491,1551,1602,1644,1684,1724,1762,1799,1835,1870,1905,1938,2003,2066,2126,2184,2295,2401,2501,2597,2689,2778,2864,2948,3030,3109,3187,3264,3339,3412,3485,3556,3626,3696,3764,3832,3899,3965,4030,4095 +[SHDR_M] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_0] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_1] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_2] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_3] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_4] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_5] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_6] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_7] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_8] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_9] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_10] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_11] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_12] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_13] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_14] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[SHDR_15] +nrs_diff_th=224 +nrs_ofs=4,5,6,7,8,8 +nrs_th=0,0,1,2,3 +[RGBIR] +mode=0 +manual_irsub_r_weight=204 +manual_irsub_g_weight=204 +manual_irsub_b_weight=230 +manual_ir_sat_gain=256 +auto_irsub_r_weight=204 +auto_irsub_g_weight=204 +auto_irsub_b_weight=230 +auto_irsub_reduce_th=220 +auto_night_mode_th=240 +[COMPANDING] +decomp_knee_pts=512,768,2560,4095,4095,4095,4095,4095,4095,4095,4095 +decomp_str_pts=0,256,512,2048,2048,2048,2048,2048,2048,2048,2048,2048 +decomp_shift_pts=4,5,6,8,8,8,8,8,8,8,8,8 +comp_knee_pts=10,11,12,13,14,15,16,16,16,16,16 +comp_str_pts=0,512,1024,1536,2048,2560,3072,3072,3072,3072,3072,3072 +comp_shift_pts=3,4,5,6,7,8,9,9,9,9,9,9 +[RGBIR_ENH] +enable=1 +mode=0 +min_ir_th=50 +[RGBIR_ENH_M] +enh_ratio=16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16 +[RGBIR_ENH_0] +ir_th=128 +enh_ratio=32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 +[RGBIR_ENH_1] +ir_th=152 +enh_ratio=80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80 +[RGBIR_ENH_2] +ir_th=255 +enh_ratio=160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160 +[POST_SHARPEN] +enable=1 +mode=0 +[POST_SHARPEN_M] +noise_level=25 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=175 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_0] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=50 +th_edge=100 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_1] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=50 +th_edge=100 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=0 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_2] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=50 +th_edge=100 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_3] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=50 +th_edge=100 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_4] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=50 +th_edge=100 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_5] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=50 +th_edge=100 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_6] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=50 +th_edge=100 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_7] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=50 +th_edge=100 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_8] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=50 +th_edge=100 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_9] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=100 +th_edge=150 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_10] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=50 +th_edge=100 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_11] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_12] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_13] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_14] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[POST_SHARPEN_15] +noise_level=105 +noise_curve=35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 +edge_weight_th=2 +edge_weight_gain=255 +th_flat=250 +th_edge=350 +tarnsition_region_str=80 +edge_region_str=80 +edge_sharp_str=80 +motion_edge_w_str=128 +static_edge_w_str=255 +coring_th=0 +blend_inv_gamma=64 +bright_halo_clip=128 +dark_halo_clip=128 +[YCURVE] +enable=0 +ycurve_lut=0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,93,95,97,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,255 +[SHDR_EXT] +fcurve_y_w_lut=255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255 +[CST] +mode=0 +cst_coef=77,150,29,-43,-85,128,128,-107,-21 +y_ofs=0 +cb_ofs=128 +cr_ofs=128 +[CST_M] +cstp_ratio=2 +[CST_0] +cstp_ratio=2 +[CST_1] +cstp_ratio=2 +[CST_2] +cstp_ratio=2 +[CST_3] +cstp_ratio=2 +[CST_4] +cstp_ratio=2 +[CST_5] +cstp_ratio=2 +[CST_6] +cstp_ratio=2 +[CST_7] +cstp_ratio=2 +[CST_8] +cstp_ratio=2 +[CST_9] +cstp_ratio=2 +[CST_10] +cstp_ratio=2 +[CST_11] +cstp_ratio=2 +[CST_12] +cstp_ratio=2 +[CST_13] +cstp_ratio=2 +[CST_14] +cstp_ratio=2 +[CST_15] +cstp_ratio=2 +[TOOL_PARAMS] +Gamma_VirtualGamma=13,13 +Gamma_VirtualBlack=0,0 +Gamma_VirtualContrast=100,100 +Gamma_VirtualManual0=0,2,4,6,8,12,16,24,32,48,64,96,128 +Gamma_VirtualManual1=0,2,4,6,8,12,16,24,32,48,64,96,128 +NR_VirtualOutlBright=1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +NR_VirtualOutlDark=1,1,1,1,1,1,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +NR_VirtualFilterTH=-1,-1,9,13,15,30,40,50,60,80,100,-1,-1,-1,-1,-1,-1 +NR_VirtualFilterTHB=-1,-1,23,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +NR_VirtualFilterLut=-1,6,8,10,18,30,40,50,60,80,100,-1,-1,-1,-1,-1,-1 +NR_VirtualFilterLutB=-1,6,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +SHDR_VirtualContrast=100 +SHDR_VirtualDelta=1000 +SHDR_VirtualKnee=24576 +SHDR_VirtualBlendR=12 +TCurve_Linear_VirtualContrast=100 +TCurve_Linear_VirtualDelta=1000 +TCurve_Linear_VirtualKnee=1536 +TCurve_Linear_VirtualBlendR=12 +TCurve_SHDR_VirtualContrast=100,100,100,100,100 +TCurve_SHDR_VirtualDelta=1000,1000,1000,1000,1000 +TCurve_SHDR_VirtualKnee=1536,1536,1536,1536,1536 +TCurve_SHDR_VirtualBlendR=12,12,12,12,12 +WDR_VirtualDark=100 +WDR_VirtualBright=20 +YCurve_VirtualGamma=13 +YCurve_VirtualBlack=0 +YCurve_VirtualContrast=100 +YCurve_VirtualManual0=0,2,4,6,8,12,16,24,32,48,64,96,128 diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/lut2d_table.bin b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/lut2d_table.bin new file mode 100755 index 000000000..6652d8adf Binary files /dev/null and b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/isp/lut2d_table.bin differ diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/sensor/sen_gc4653_565.cfg b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/sensor/sen_gc4653_565.cfg new file mode 100755 index 000000000..491d87d1e --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/sensor/sen_gc4653_565.cfg @@ -0,0 +1,28 @@ +[MAP] +path_1 = 1 #Path 1 Enable +path_2 = 0 #Path 2 Disable +path_3 = 0 #Path 3 Disable +path_4 = 0 #Path 4 Disable +path_5 = 0 #Path 5 Disable +path_6 = 0 #Path 6 Disable +path_7 = 0 #Path 7 Disable +path_8 = 0 #Path 8 Disable + +[PRESET] +id_0_expt_time = 10000 #10000us +id_0_gain_ratio = 1000 #1x gain + +[DIRECTION] +id_0_mirror = 0 #no mirror +id_0_flip = 0 #no flip + +[POWER] +id_0_mclk = 0 #CTL_SEN_CLK_SEL_SIEMCLK +id_0_pwdn_pin = 0xFFFFFFFF #S_GPIO_9, C_GPIO:+0x0; P_GPIO:+0x20; S_GPIO:+0x40; L_GPIO:0x60 +id_0_rst_pin = 0x44 #S_GPIO_4, C_GPIO:+0x0; P_GPIO:+0x20; S_GPIO:+0x40; L_GPIO:0x60 +id_0_rst_time = 2 #2ms +id_0_stable_time = 2 #2ms + +[I2C] +id_0_i2c_id = 0 #SEN_I2C_ID_1 +id_0_i2c_addr = 0x29 #0x52 >> 1 \ No newline at end of file diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/sensor/sen_gc5603_565.cfg b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/sensor/sen_gc5603_565.cfg new file mode 100755 index 000000000..62528214a --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/sensor/sen_gc5603_565.cfg @@ -0,0 +1,28 @@ +[MAP] +path_1 = 1 #Path 1 Enable +path_2 = 0 #Path 2 Disable +path_3 = 0 #Path 3 Disable +path_4 = 0 #Path 4 Disable +path_5 = 0 #Path 5 Disable +path_6 = 0 #Path 6 Disable +path_7 = 0 #Path 7 Disable +path_8 = 0 #Path 8 Disable + +[PRESET] +id_0_expt_time = 10000 #10000us +id_0_gain_ratio = 1000 #1x gain + +[DIRECTION] +id_0_mirror = 0 #no mirror +id_0_flip = 0 #no flip + +[POWER] +id_0_mclk = 0 #CTL_SEN_CLK_SEL_SIEMCLK +id_0_pwdn_pin = 0xFFFFFFFF #no pwdn pin, C_GPIO:+0x0; P_GPIO:+0x20; S_GPIO:+0x40; L_GPIO:0x60 +id_0_rst_pin = 0x44 #S_GPIO_4, C_GPIO:+0x0; P_GPIO:+0x20; S_GPIO:+0x40; L_GPIO:0x60 +id_0_rst_time = 1 #1ms +id_0_stable_time = 1 #1ms + +[I2C] +id_0_i2c_id = 0 #SEN_I2C_ID_1 +id_0_i2c_addr = 0x31 #0x62>> 1 \ No newline at end of file diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/sensor/sen_imx290_565.cfg b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/sensor/sen_imx290_565.cfg new file mode 100755 index 000000000..6c11533c5 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/sensor/sen_imx290_565.cfg @@ -0,0 +1,44 @@ +[MAP] +path_1 = 1 #Path 1 Enable +path_2 = 1 #Path 2 Enable +path_3 = 0 #Path 3 Disable +path_4 = 0 #Path 4 Disable +path_5 = 0 #Path 5 Disable +path_6 = 0 #Path 6 Disable +path_7 = 0 #Path 7 Disable +path_8 = 0 #Path 8 Disable + +[PRESET] +id_0_expt_time = 10000 #10000us +id_0_gain_ratio = 1000 #1x gain + +id_1_expt_time = 10000 #10000us +id_1_gain_ratio = 1000 #1x gain + +[DIRECTION] +id_0_mirror = 0 #no mirror +id_0_flip = 0 #no flip + +id_1_mirror = 0 #no mirror +id_1_flip = 0 #no flip + +[POWER] +id_0_mclk = 0 #CTL_SEN_CLK_SEL_SIEMCLK +id_0_pwdn_pin = 0xFFFFFFFF #no pwdn pin, C_GPIO:+0x0; P_GPIO:+0x20; S_GPIO:+0x40; L_GPIO:0x60 +id_0_rst_pin = 0x44 #S_GPIO_4, C_GPIO:+0x0; P_GPIO:+0x20; S_GPIO:+0x40; L_GPIO:0x60 +id_0_rst_time = 1 #1ms +id_0_stable_time = 1 #1ms + +id_1_mclk = 0 #CTL_SEN_CLK_SEL_SIEMCLK +id_1_pwdn_pin = 0xFFFFFFFF #no pwdn pin, C_GPIO:+0x0; P_GPIO:+0x20; S_GPIO:+0x40; L_GPIO:0x60 +id_1_rst_pin = 0x44 #S_GPIO_4, C_GPIO:+0x0; P_GPIO:+0x20; S_GPIO:+0x40; L_GPIO:0x60 +id_1_rst_time = 1 #1ms +id_1_stable_time = 1 #1ms + +[I2C] +id_0_i2c_id = 0 #SEN_I2C_ID_1 +id_0_i2c_addr = 0x1A #0x34 >> 1 = 0x1A + +id_1_i2c_id = 1 #SEN_I2C_ID_2 +id_1_i2c_addr = 0x1A #0x34 >> 1 = 0x1A + diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/sensor/sen_os02k10_565.cfg b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/sensor/sen_os02k10_565.cfg new file mode 100755 index 000000000..6e8ea81c5 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/sensor/sen_os02k10_565.cfg @@ -0,0 +1,43 @@ +[MAP] +path_1 = 1 #Path 1 Enable +path_2 = 1 #Path 2 Enable +path_3 = 0 #Path 3 Disable +path_4 = 0 #Path 4 Enable +path_5 = 0 #Path 5 Enable +path_6 = 0 #Path 6 Disable +path_7 = 0 #Path 7 Disable +path_8 = 0 #Path 8 Disable + +[PRESET] +id_0_expt_time = 10000 #10000us +id_0_gain_ratio = 1000 #1x gain + +id_1_expt_time = 10000 #10000us +id_1_gain_ratio = 1000 #1x gain + +[DIRECTION] +id_0_mirror = 1 #mirror +id_0_flip = 0 #no flip + +id_1_mirror = 1 #mirror +id_1_flip = 0 #no flip + +[POWER] +id_0_mclk = 0 #CTL_SEN_CLK_SEL_SIEMCLK +id_0_pwdn_pin = 0xFFFFFFFF #no pwdn pin, C_GPIO:+0x0; P_GPIO:+0x20; S_GPIO:+0x40; L_GPIO:0x60 +id_0_rst_pin = 0x44 #S_GPIO_4, C_GPIO:+0x0; P_GPIO:+0x20; S_GPIO:+0x40; L_GPIO:0x60 +id_0_rst_time = 1 #1ms +id_0_stable_time = 1 #1ms + +id_1_mclk = 0 #CTL_SEN_CLK_SEL_SIEMCLK +id_1_pwdn_pin = 0xFFFFFFFF #no pwdn pin, C_GPIO:+0x0; P_GPIO:+0x20; S_GPIO:+0x40; L_GPIO:0x60 +id_1_rst_pin = 0x44 #S_GPIO_4, C_GPIO:+0x0; P_GPIO:+0x20; S_GPIO:+0x40; L_GPIO:0x60 +id_1_rst_time = 1 #1ms +id_1_stable_time = 1 #1ms + +[I2C] +id_0_i2c_id = 0 #SEN_I2C_ID_1 +id_0_i2c_addr = 0x36 #0x6C >> 1 = 0x36 + +id_1_i2c_id = 1 #SEN_I2C_ID_2 +id_1_i2c_addr = 0x36 #0x6C >> 1 = 0x36 diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/sensor/sen_os05a10_565.cfg b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/sensor/sen_os05a10_565.cfg new file mode 100755 index 000000000..b5f5726d6 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/sensor/sen_os05a10_565.cfg @@ -0,0 +1,29 @@ +[MAP] +path_1 = 1 #Path 1 Enable +path_2 = 0 #Path 2 Disable +path_3 = 0 #Path 3 Disable +path_4 = 0 #Path 4 Disable +path_5 = 0 #Path 5 Disable +path_6 = 0 #Path 6 Disable +path_7 = 0 #Path 7 Disable +path_8 = 0 #Path 8 Disable + +[PRESET] +id_0_expt_time = 10000 #10000us +id_0_gain_ratio = 1000 #1x gain + +[DIRECTION] +id_0_mirror = 0 #no mirror +id_0_flip = 1 #flip + +[POWER] +id_0_mclk = 0 #CTL_SEN_CLK_SEL_SIEMCLK +id_0_pwdn_pin = 0xFFFFFFFF #no pwdn pin, C_GPIO:+0x0; P_GPIO:+0x20; S_GPIO:+0x40; L_GPIO:0x60 +id_0_rst_pin = 0x44 #S_GPIO_4, C_GPIO:+0x0; P_GPIO:+0x20; S_GPIO:+0x40; L_GPIO:0x60 +id_0_rst_time = 1 #1ms +id_0_stable_time = 1 #1ms + +[I2C] +id_0_i2c_id = 0 #SEN_I2C_ID_1 +id_0_i2c_addr = 0x36 #0x6C >> 1 + diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/sensor/sen_os05b10_565.cfg b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/sensor/sen_os05b10_565.cfg new file mode 100755 index 000000000..679462a4e --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/sensor/sen_os05b10_565.cfg @@ -0,0 +1,29 @@ +[MAP] +path_1 = 1 #Path 1 Enable +path_2 = 0 #Path 2 Disable +path_3 = 0 #Path 3 Disable +path_4 = 0 #Path 4 Disable +path_5 = 0 #Path 5 Disable +path_6 = 0 #Path 6 Disable +path_7 = 0 #Path 7 Disable +path_8 = 0 #Path 8 Disable + +[PRESET] +id_0_expt_time = 10000 #10000us +id_0_gain_ratio = 1000 #1x gain + +[DIRECTION] +id_0_mirror = 1 #no mirror +id_0_flip = 0 #flip + +[POWER] +id_0_mclk = 0 #CTL_SEN_CLK_SEL_SIEMCLK +id_0_pwdn_pin = 0xFFFFFFFF #no pwdn pin, C_GPIO:+0x0; P_GPIO:+0x20; S_GPIO:+0x40; L_GPIO:0x60 +id_0_rst_pin = 0x44 #S_GPIO_4, C_GPIO:+0x0; P_GPIO:+0x20; S_GPIO:+0x40; L_GPIO:0x60 +id_0_rst_time = 1 #1ms +id_0_stable_time = 1 #1ms + +[I2C] +id_0_i2c_id = 0 #SEN_I2C_ID_1 +id_0_i2c_addr = 0x36 #0x6C >> 1 + diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/sensor/sen_sc401ai_565.cfg b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/sensor/sen_sc401ai_565.cfg new file mode 100755 index 000000000..c3a88213d --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/sensor/sen_sc401ai_565.cfg @@ -0,0 +1,28 @@ +[MAP] +path_1 = 1 #Path 1 Enable +path_2 = 0 #Path 2 Disable +path_3 = 0 #Path 3 Disable +path_4 = 0 #Path 4 Disable +path_5 = 0 #Path 5 Disable +path_6 = 0 #Path 6 Disable +path_7 = 0 #Path 7 Disable +path_8 = 0 #Path 8 Disable + +[PRESET] +id_0_expt_time = 10000 #10000us +id_0_gain_ratio = 1000 #1x gain + +[DIRECTION] +id_0_mirror = 1 #mirror +id_0_flip = 1 #flip + +[POWER] +id_0_mclk = 0 #CTL_SEN_CLK_SEL_SIEMCLK +id_0_pwdn_pin = 0xFFFFFFFF #no pwdn pin, C_GPIO:+0x0; P_GPIO:+0x20; S_GPIO:+0x40; L_GPIO:0x60 +id_0_rst_pin = 0x44 #S_GPIO_4, C_GPIO:+0x0; P_GPIO:+0x20; S_GPIO:+0x40; L_GPIO:0x60 +id_0_rst_time = 1 #1ms +id_0_stable_time = 1 #1ms + +[I2C] +id_0_i2c_id = 0 #SEN_I2C_ID_1 +id_0_i2c_addr = 0x30 #0x60>> 1 \ No newline at end of file diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/application.dtb b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/application.dtb new file mode 100755 index 000000000..1a490d938 Binary files /dev/null and b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/application.dtb differ diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/bootchartd.conf b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/bootchartd.conf new file mode 100755 index 000000000..214d43105 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/bootchartd.conf @@ -0,0 +1,2 @@ +SAMPLE_PERIOD=0.1 +PROCESS_ACCOUNTING="yes" diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/firmware.info b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/firmware.info new file mode 100755 index 000000000..a11b0550d --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/firmware.info @@ -0,0 +1,2 @@ +SDK_VER="NVT_NT96660_Linux_V0.4.8" +BUILDDATE="Tue Mar 1 18:25:28 CST 2016" diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/fstab b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/fstab new file mode 100755 index 000000000..2d5c63782 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/fstab @@ -0,0 +1,6 @@ +proc /proc proc defaults 0 0 +sysfs /sys sysfs defaults 0 0 +tmpfs /dev tmpfs defaults 0 0 +tmpfs /tmp tmpfs defaults,noatime,nosuid,nodev,exec,mode=1777,size=5M 0 0 +tmpfs /var/run tmpfs defaults,rw,nosuid,mode=0755 0 0 +debugfs /sys/kernel/debug debugfs defaults 0 0 diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/group b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/group new file mode 100755 index 000000000..1dbf9013e --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/group @@ -0,0 +1 @@ +root:x:0: diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/hostname b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/hostname new file mode 100755 index 000000000..22f650d60 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/hostname @@ -0,0 +1 @@ +NVTEVM diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/hosts b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/hosts new file mode 100755 index 000000000..b0b80b91c --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/hosts @@ -0,0 +1,3 @@ +127.0.0.1 localhost + + diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/inetd.conf b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/inetd.conf new file mode 100755 index 000000000..3a2180550 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/inetd.conf @@ -0,0 +1,76 @@ +# /etc/inetd.conf: see inetd(8) for further informations. +# +# Internet server configuration database +# +# +# If you want to disable an entry so it isn't touched during +# package updates just comment it out with a single '#' character. +# +# If you make changes to this file, either reboot your machine or +# send the inetd process a HUP signal: +# Do a "ps x" as root and look up the pid of inetd. Then do a +# kill -HUP +# inetd will re-read this file whenever it gets that signal. +# +# +#:INTERNAL: Internal services +# It is generally considered safer to keep these off. +echo stream tcp nowait root internal +echo dgram udp wait root internal +#discard stream tcp nowait root internal +#discard dgram udp wait root internal +daytime stream tcp nowait root internal +daytime dgram udp wait root internal +#chargen stream tcp nowait root internal +#chargen dgram udp wait root internal +time stream tcp nowait root internal +time dgram udp wait root internal + +# These are standard services. +# +#ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd +#telnet stream tcp nowait root /sbin/telnetd /sbin/telnetd +#nntp stream tcp nowait root tcpd in.nntpd +#smtp stream tcp nowait root tcpd sendmail -v +# +# Shell, login, exec and talk are BSD protocols. +# +# If you run an ntalk daemon (such as netkit-ntalk) on the old talk +# port, that is, "talk" as opposed to "ntalk", it won't work and may +# cause certain broken talk clients to malfunction. +# +# The talkd from netkit-ntalk 0.12 and higher, however, can speak the +# old talk protocol and can be used safely. +# +#shell stream tcp nowait root /usr/sbin/tcpd in.rshd -L +#login stream tcp nowait root /usr/sbin/tcpd in.rlogind -L +#exec stream tcp nowait root /usr/sbin/tcpd in.rexecd +#talk dgram udp wait root /usr/sbin/tcpd in.talkd +#ntalk dgram udp wait root /usr/sbin/tcpd in.talkd +# +# Pop et al +# Leave these off unless you're using them. +#pop2 stream tcp nowait root /usr/sbin/tcpd in.pop2d +#pop3 stream tcp nowait root /usr/sbin/tcpd in.pop3d +# +# The Internet UUCP service. +# uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/lib/uucp/uucico -l +# +# Tftp service is provided primarily for booting. Most sites +# run this only on machines acting as "boot servers." If you don't +# need it, don't use it. +# +#tftp dgram udp wait nobody /usr/sbin/tcpd in.tftpd +#bootps dgram udp wait root /usr/sbin/in.bootpd in.bootpd +# +# Finger, systat and netstat give out user information which may be +# valuable to potential "system crackers." Many sites choose to disable +# some or all of these services to improve security. +# +#finger stream tcp nowait nobody /usr/sbin/tcpd in.fingerd -w +#systat stream tcp nowait nobody /usr/sbin/tcpd /bin/ps -auwwx +#netstat stream tcp nowait root /bin/netstat /bin/netstat -a +#ident stream tcp nowait root /usr/sbin/in.identd in.identd + +21 stream tcp nowait root ftpd ftpd -w /mnt/sd +69 dgram udp nowait root tftpd tftpd -l -c /home \ No newline at end of file diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/BS_Net_eth b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/BS_Net_eth new file mode 100755 index 000000000..d17d7373a --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/BS_Net_eth @@ -0,0 +1,34 @@ +#!/bin/sh + +NETWORK_SETUP_SCRIPT="/etc/init.d/net_init.sh" + +echo "eth" > /proc/nvt_info/bootts +modprobe ntkimethmac + +#FOR NVTIMETHMAC +ifconfig eth0 down +ifconfig eth0 hw ether 00:80:48:BA:D1:30 +ifconfig eth0 up + +if [ -f "$NETWORK_SETUP_SCRIPT" ]; then + $NETWORK_SETUP_SCRIPT +else + echo "Configuring loopback interface" + ifconfig lo 127.0.0.1 + + ifconfig eth0 192.168.0.3 + + #FOR WiFi Sample + # ifup wlan0 + # hostapd -B -dd /etc/wifiap_wpa2.conf + + #DHCP Deamon + udhcpd -fS /etc/udhcpd.conf & + + #FTP + #inetd & +fi + +echo "eth" > /proc/nvt_info/bootts + +uctrl usys -notify net_init_ok diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/BS_Net_wifi b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/BS_Net_wifi new file mode 100755 index 000000000..6b830f91a --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/BS_Net_wifi @@ -0,0 +1,12 @@ +#!/bin/sh + +modprobe 8189es + +#set essid,psk,... +wpa_supplicant -B -Dwext -d -i wlan0 -c /etc/wpa_supplicant.conf + +#get an ip +udhcpc -i wlan0 + +#check got ip +ifconfig diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/BS_Net_wifiap b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/BS_Net_wifiap new file mode 100755 index 000000000..e39d83119 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/BS_Net_wifiap @@ -0,0 +1,14 @@ +#!/bin/sh + +modprobe 8189es + +echo "Configuring loopback interface" +ifconfig lo 127.0.0.1 + +#FOR WiFi Sample +ifconfig wlan0 up +ifconfig wlan0 192.168.1.3 +hostapd -B -dd /etc/wifiap_wpa2.conf + +#DHCP Deamon +udhcpd -S /etc/udhcpdw.conf diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/BS_Net_wifiap8189ftv b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/BS_Net_wifiap8189ftv new file mode 100755 index 000000000..8d65a442d --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/BS_Net_wifiap8189ftv @@ -0,0 +1,14 @@ +#!/bin/sh + +modprobe 8189fs + +echo "Configuring loopback interface 8189fs" +ifconfig lo 127.0.0.1 + +#FOR WiFi Sample +ifconfig wlan0 up +ifconfig wlan0 192.168.1.1 +#hostapd -B -dd /etc/wifiap_wpa2.conf + +#DHCP Deamon +#udhcpd -fS /etc/udhcpdw.conf & diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/K00_Sys b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/K00_Sys new file mode 100755 index 000000000..2fb598b97 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/K00_Sys @@ -0,0 +1,4 @@ +#!/bin/sh + +echo "K00 power off" + diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/K99_Sys b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/K99_Sys new file mode 100755 index 000000000..4c4f03bb2 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/K99_Sys @@ -0,0 +1,5 @@ +#!/bin/sh + +umount /mnt/sd +echo "K99 power off end" + diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S00_PreReady b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S00_PreReady new file mode 100755 index 000000000..1050566f3 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S00_PreReady @@ -0,0 +1,9 @@ +device_node_create() +{ + if [ ! -e /dev/$1 ]; then mknod /dev/$1 c `cat /sys/class/$1/$1/dev | sed "s/:/\ /g"`; fi +} + +mkdir /var/run/lock + +mkdir /dev/pts +mount -t devpts devpts /dev/pts diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S05_FS_Overlay b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S05_FS_Overlay new file mode 100755 index 000000000..6e4b7771c --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S05_FS_Overlay @@ -0,0 +1,112 @@ +#!/bin/sh +KERVER=`cat /proc/version | awk -F'version ' '{print $2}' | awk -F' ' '{print $1}'` + +overlay_files() +{ + if [ ! -f /mnt/overlay_rw0/rootfs/.fileexisted ]; then + mkdir /mnt/overlay_rw0/rootfs + cp -arf /etc /mnt/overlay_rw0/rootfs + cp -arf /var /mnt/overlay_rw0/rootfs + sync + mkdir /mnt/overlay_rw0/rootfs/lib + cp -arf /lib/modules /mnt/overlay_rw0/rootfs/lib/modules + sync; + touch /mnt/overlay_rw0/rootfs/.fileexisted + sync; + fi + mount /mnt/overlay_rw0/rootfs/etc /etc + mount /mnt/overlay_rw0/rootfs/var /var + mount /mnt/overlay_rw0/rootfs/lib/modules /lib/modules +} + +wait_dev_or_exit() +{ + x=0 + timeout=5 + while [ "$x" -lt "$timeout" -a ! -e $1 ]; do + x=$((x+1)) + sleep .1 + done + if [ "$x" -ge "$timeout" ]; then + echo "[app mount] $1 not found" + exit -1 + fi +} + +echo "/sbin/mdev" > /proc/sys/kernel/hotplug +mdev -s + +if [ "$EMBMEM" == "EMBMEM_EMMC" ]; then + # if /proc/mtd not exist, exit + wait_dev_or_exit /proc/nvt_info/emmc + if [ ! -f /proc/nvt_info/emmc ]; then + echo "[fs overlay] /proc/nvt_info/emmc not ready" + exit -1 + fi + mmcblkpn=`cat /proc/nvt_info/emmc | grep '^rootfs1 ' | awk -F' ' '{print $NF}'`; + mmcblkn=`echo $mmcblkpn | sed 's/.*\(mmcblk.\)p.*/\1/g'` + wait_dev_or_exit /sys/class/block/$mmcblkn/dev + mknod /dev/$mmcblkn b `cat /sys/class/block/$mmcblkn/dev | sed "s/:/\ /g"` + mknod /dev/$mmcblkpn b `cat /sys/class/block/$mmcblkpn/dev | sed "s/:/\ /g"` +else + # if /proc/mtd not exist, exit + if [ ! -f /proc/mtd ]; then + echo "[fs overlay] /proc/mtd not ready" + exit -1 + fi + + # if the partition not found, exit + num=`cat /proc/mtd | grep \"rootfs1\" | awk -F' ' '{print $1}' | tr -d 'mtd' | tr -d ':'`; + if [ -z "$num" ]; then + echo "[fs overlay] no rootfs1 partition" + exit 0 + fi + + mknod /dev/mtdblock$num b `cat /sys/block/mtdblock$num/dev | sed "s/:/\ /g"` +fi + + +if [ "$NVT_ROOTFS_TYPE" == "NVT_ROOTFS_TYPE_NAND_UBI" ]; then + echo "[fs overlay] ubi mount rootfs1" + ubiattach /dev/ubi_ctrl -m $num + wait_dev_or_exit /dev/ubi1_0 + mount -t ubifs /dev/ubi1_0 /mnt/overlay_rw0; + overlay_files; + sync + echo 1 > /proc/sys/vm/drop_caches +elif [ "$NVT_ROOTFS_TYPE" == "NVT_ROOTFS_TYPE_SQUASH" ] && [ "$EMBMEM" != "EMBMEM_NONE" ]; then + echo "[fs overlay] squash mount rootfs1" + if [ "$EMBMEM" == "EMBMEM_SPI_NAND" ]; then + ubiattach /dev/ubi_ctrl -m $num + wait_dev_or_exit /dev/ubi1_0 + mount -t ubifs /dev/ubi1_0 /lib/modules; + elif [ "$EMBMEM" == "EMBMEM_EMMC" ]; then + mount -t ext4 /dev/$mmcblkpn /lib/modules; + else + mount -t squashfs /dev/mtdblock$num /lib/modules; + fi + mount /lib/modules/usr/bin/ /usr/bin/; + mount /lib/modules/usr/lib/ /usr/lib/; +elif [ "$NVT_ROOTFS_TYPE" == "NVT_ROOTFS_TYPE_RAMDISK" ] && [ "$EMBMEM" != "EMBMEM_NONE" ]; then + if [ "$EMBMEM" == "EMBMEM_SPI_NAND" ]; then + echo "[fs overlay] ubi mount rootfs1" + mknod /dev/ubi_ctrl c `cat /sys/class/misc/ubi_ctrl/dev | sed "s/:/\ /g"` + ubiattach /dev/ubi_ctrl -m $num + mknod /dev/ubi0_0 c `cat /sys/class/ubi/ubi0_0/dev | sed "s/:/\ /g"` + wait_dev_or_exit /dev/ubi0_0 + mount -t ubifs /dev/ubi0_0 /lib/modules; + elif [ "$EMBMEM" == "EMBMEM_EMMC" ]; then + echo "[fs overlay] ext4 mount rootfs1" + mount -t ext4 /dev/$mmcblkpn /lib/modules; + else + echo "[fs overlay] squash mount rootfs1" + #echo "mount -t squashfs /dev/mtdblock$num /lib/modules" + mount -t squashfs /dev/mtdblock$num /lib/modules; + fi + mount /lib/modules/usr/bin/ /usr/bin/; + mount /lib/modules/usr/lib/ /usr/lib/; +else + echo "[fs overlay] jffs2 mount rootfs1" + mount -t jffs2 /dev/mtdblock$num /mnt/overlay_rw0 + overlay_files; +fi diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S07_APP_Overlay b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S07_APP_Overlay new file mode 100755 index 000000000..e48625bbe --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S07_APP_Overlay @@ -0,0 +1,64 @@ +#!/bin/sh +wait_dev_or_exit() +{ + x=0 + timeout=5 + while [ "$x" -lt "$timeout" -a ! -e $1 ]; do + x=$((x+1)) + sleep .1 + done + if [ "$x" -ge "$timeout" ]; then + echo "[app overlay] $1 not found" + exit -1 + fi +} + +# if /proc/mtd not exist, exit +if [ ! -f /proc/mtd ]; then + echo "[app overlay] /proc/mtd not ready" + exit -1 +fi + +# if the partition not found, exit +num=`cat /proc/mtd | grep \"app\" | awk -F' ' '{print $1}' | tr -d 'mtd' | tr -d ':'`; +if [ -z "$num" ]; then + echo "[app overlay] no app partition" + exit 0 +fi + +# mount app partition by type +if [ "$NVT_ROOTFS_TYPE" == "NVT_ROOTFS_TYPE_NAND_UBI" ]; then + echo "[app overlay] ubi mount app" + ubiattach /dev/ubi_ctrl -m $num + wait_dev_or_exit /dev/ubi1_0 + mount -t ubifs /dev/ubi1_0 /mnt/app; +elif [ "$NVT_ROOTFS_TYPE" == "NVT_ROOTFS_TYPE_SQUASH" ] && [ "$EMBMEM" != "EMBMEM_SPI_NOR" ]; then + echo "[app overlay] squash mount app" + ubiattach /dev/ubi_ctrl -m $num + wait_dev_or_exit /dev/ubi1_0 + mount -t ubifs /dev/ubi1_0 /mnt/app; +elif [ "$NVT_ROOTFS_TYPE" == "NVT_ROOTFS_TYPE_RAMDISK" ] && [ "$EMBMEM" != "EMBMEM_NONE" ]; then + if [ "$EMBMEM" == "EMBMEM_SPI_NAND" ]; then + echo "[app overlay] ubi mount app" + ubiattach /dev/ubi_ctrl -m $num + mknod /dev/ubi1_0 c `cat /sys/class/ubi/ubi1_0/dev | sed "s/:/\ /g"` + wait_dev_or_exit /dev/ubi1_0 + mount -t ubifs /dev/ubi1_0 /mnt/app; + elif [ "$EMBMEM" == "EMBMEM_EMMC" ]; then + echo "[app overlay] ext4 mount app" + mount -t ext4 /dev/$mmcblkpn /mnt/app; + else + #echo "[app overlay] jffs2 mount app" + #cat /proc/mtd + #ls /dev/mtdblock* + wait_dev_or_exit /dev/mtdblock$num + wait_dev_or_exit /mnt/app + #echo "mount -t jffs2 /dev/mtdblock$num /mnt/app" + mount -t jffs2 /dev/mtdblock$num /mnt/app; + fi +else + echo "[app overlay] jffs2 mount app" + mount -t jffs2 /dev/mtdblock$num /mnt/app; +fi + + diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S07_SysInit b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S07_SysInit new file mode 100755 index 000000000..7ece30fb3 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S07_SysInit @@ -0,0 +1,20 @@ +#!/bin/sh + +device_node_create() +{ + mknod /dev/$1 c `cat /sys/class/$1/$1/dev | sed "s/:/\ /g"` +} + +# Setup mdev +echo "fs" > /proc/nvt_info/bootts +echo "/sbin/mdev" > /proc/sys/kernel/hotplug +#modprobe mmc_na51055 +mdev -s + +# Scan for without insert card +if [ ! -f /tmp/.nvt_mounts ]; then + /etc/mdev-script/autosd.sh + rm -rf /tmp/.nvt_mounts; +fi + +echo "fs" > /proc/nvt_info/bootts diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S10_SysInit2 b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S10_SysInit2 new file mode 100755 index 000000000..f2bdc2ac1 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S10_SysInit2 @@ -0,0 +1,161 @@ +#!/bin/sh +KERVER=`cat /proc/version | awk -F'version ' '{print $2}' | awk -F' ' '{print $1}'` +RAMDISK_KO=ON +if [ "${RAMDISK_KO}" == "ON" ]; then +PREFIX="/etc" +else +PREFIX="" +fi + +HUNTING_BOOT_MODE_4G_ONLY=4G_ONLY + +# System Driver Init +#modprobe ehci-hcd +#modprobe xhci_plat_hcd +#modprobe nvt_status +#modprobe nvt_pstore + +HUNTING_BOOT_MODE=`dmesg | grep "Kernel command line" | sed 's/.* hunt_boot_mode=\(.*\) .*/\1/'` + +echo HUNTING_BOOT_MODE=${HUNTING_BOOT_MODE} + + +if [ -f /usr/bin/sf_app ]; then + sf_app & +else + echo "sf_app not found" +fi + +if [ "${HUNTING_BOOT_MODE_4G_ONLY}" = "${HUNTING_BOOT_MODE}" ]; then + +echo "skip insert ko" + +else + +#insmod ${PREFIX}/lib/modules/$KERVER/extra/mcu/drv_sf_i2c_mcu.ko +insmod ${PREFIX}/lib/modules/$KERVER/extra/crypto/cryptodev-linux/cryptodev.ko + +#insmod /lib/modules/$KERVER/vos/kwrap/kwrap.ko +insmod ${PREFIX}/lib/modules/$KERVER/hdal/comm/nvtmem/nvtmem.ko +#insmod /lib/modules/$KERVER/hdal/kdrv_builtin/kdrv_builtin.ko +#insmod /lib/modules/$KERVER/kernel/fs/fat/fat.ko +#insmod /lib/modules/$KERVER/kernel/fs/fat/vfat.ko +#insmod /lib/modules/$KERVER/extra/fs/exfat/exfat.ko + +if [[ -f ${PREFIX}/lib/modules/$KERVER/hdal/comm/kdrv_comm.ko ]]; then +insmod ${PREFIX}/lib/modules/$KERVER/hdal/comm/kdrv_comm.ko +insmod ${PREFIX}/lib/modules/$KERVER/hdal/kdrv_gfx2d/kdrv_gfx2d.ko +insmod ${PREFIX}/lib/modules/$KERVER/hdal/kdrv_videocapture/kdrv_videocapture.ko +insmod ${PREFIX}/lib/modules/$KERVER/hdal/kdrv_videoprocess/kdrv_videoprocess.ko +insmod ${PREFIX}/lib/modules/$KERVER/hdal/kflow_common/kflow_common.ko +insmod ${PREFIX}/lib/modules/$KERVER/hdal/kflow_gfx/videosprite/nvt_videosprite.ko +insmod ${PREFIX}/lib/modules/$KERVER/hdal/kflow_videocapture/kflow_videocapture.ko +insmod ${PREFIX}/lib/modules/$KERVER/hdal/kflow_videoprocess/kflow_videoprocess.ko +fi + +# kdrv_gfx2d +insmod ${PREFIX}/lib/modules/$KERVER/hdal/kdrv_gfx2d/kdrv_affine/affine_neon/kdrv_afn_neon.ko +insmod ${PREFIX}/lib/modules/$KERVER/hdal/kdrv_gfx2d/kdrv_affine/kdrv_afn.ko +insmod ${PREFIX}/lib/modules/$KERVER/hdal/kflow_gfx/nvt_gfx.ko + +# kdrv_vdoout +insmod ${PREFIX}/lib/modules/$KERVER/hdal/kdrv_videoout/ide/nvt_ide.ko +insmod ${PREFIX}/lib/modules/$KERVER/hdal/kdrv_videoout/display_obj/kdrv_videoout.ko + +# kflow_videoout +insmod ${PREFIX}/lib/modules/$KERVER/hdal/kflow_videoout/unit/kflow_videoout.ko + +# panel device +insmod ${PREFIX}/lib/modules/$KERVER/hdal/display_panel/nvt_dispdev_panel.ko +case "${LCD1}" in + disp_off) + ;; + disp_if8b_lcd1_pw35p00) + insmod /lib/modules/$KERVER/hdal/display_panel/${LCD1}_hx8238d/$LCD1.ko + ;; + *) + if [[ $(echo $LCD1 | grep -c 'ifdsi') == "1" ]]; then + insmod /lib/modules/$KERVER/hdal/kdrv_videoout/dsi/nvt_dsi.ko + fi + insmod ${PREFIX}/lib/modules/$KERVER/hdal/display_panel/${LCD1}/${LCD1}.ko + ;; +esac + +# nvt_h26x +insmod ${PREFIX}/lib/modules/$KERVER/hdal/kdrv_videocodec/kdrv_h26x.ko +insmod ${PREFIX}/lib/modules/$KERVER/hdal/nvt_vencrc/nvt_vencrc.ko + +# isf vdoenc +insmod ${PREFIX}/lib/modules/$KERVER/hdal/kflow_videoenc/unit/kflow_videoenc.ko + +# isf vdodec +insmod ${PREFIX}/lib/modules/$KERVER/hdal/kflow_videodec/unit/kflow_videodec.ko + +# audio +if [[ -f ${PREFIX}/lib/modules/$KERVER/hdal/kdrv_audioio/audio_common/nvt_audio.ko ]]; then +insmod ${PREFIX}/lib/modules/$KERVER/hdal/kdrv_audioio/audio_common/nvt_audio.ko +insmod ${PREFIX}/lib/modules/$KERVER/hdal/kdrv_audioio/kdrv_audio/nvt_kdrv_audio.ko +insmod ${PREFIX}/lib/modules/$KERVER/hdal/kflow_audiocapture/unit/kflow_audiocap.ko +insmod ${PREFIX}/lib/modules/$KERVER/hdal/kflow_audioout/unit/kflow_audioout.ko +fi + +insmod ${PREFIX}/lib/modules/$KERVER/hdal/kdrv_audioio/audlib_aac/nvt_audlib_aac.ko + +# isf audenc +insmod ${PREFIX}/lib/modules/$KERVER/hdal/kflow_audioenc/unit/kflow_audioenc.ko + +# isf auddec +insmod ${PREFIX}/lib/modules/$KERVER/hdal/kflow_audiodec/unit/kflow_audiodec.ko + +# iq, 3a +#echo "isp_id_list: 0x3, ae_id_list: 0x3, awb_id_list: 0x3, iq_id_list 0x3" +insmod ${PREFIX}/lib/modules/$KERVER/hdal/isp/nvt_isp.ko + +if [[ -f ${PREFIX}/lib/modules/$KERVER/hdal/awb/nvt_awb.ko ]]; then +insmod ${PREFIX}/lib/modules/$KERVER/hdal/ae/nvt_ae.ko +insmod ${PREFIX}/lib/modules/$KERVER/hdal/awb/nvt_awb.ko +insmod ${PREFIX}/lib/modules/$KERVER/hdal/iq/nvt_iq.ko +fi + +insmod ${PREFIX}/lib/modules/$KERVER/hdal/${SENSOR1}/nvt_${SENSOR1}.ko sen_cfg_path=/mnt/app/sensor/${SENSOR1_CFG}.cfg + +#cv +insmod ${PREFIX}/lib/modules/$KERVER/hdal/kdrv_md/kdrv_md.ko + +#fb +if [[ -f ${PREFIX}/lib/modules/$KERVER/hdal/kdrv_videoout/fbdev/nvt_fb.ko ]]; then +insmod ${PREFIX}/lib/modules/$KERVER/kernel/drivers/video/fbdev/core/cfbcopyarea.ko +insmod ${PREFIX}/lib/modules/$KERVER/kernel/drivers/video/fbdev/core/cfbfillrect.ko +insmod ${PREFIX}/lib/modules/$KERVER/kernel/drivers/video/fbdev/core/cfbimgblt.ko +insmod ${PREFIX}/lib/modules/$KERVER/hdal/kdrv_videoout/fbdev/nvt_fb.ko +fi + +#iio & adc (for keyscan) + +if [[ -f ${PREFIX}/lib/modules/$KERVER/kernel/drivers/iio/industrialio.ko ]]; then +insmod ${PREFIX}/lib/modules/$KERVER/kernel/drivers/iio/industrialio.ko +fi + +if [[ -f ${PREFIX}/lib/modules/$KERVER/kernel/drivers/iio/adc/nvt_adc.ko ]]; then +insmod ${PREFIX}/lib/modules/$KERVER/kernel/drivers/iio/adc/nvt_adc.ko +fi + +#usb +#if [[ -f ${PREFIX}/lib/modules/$KERVER/hdal/comm/uvcp/nvt_uvcp.ko ]]; then +#insmod ${PREFIX}/lib/modules/$KERVER/hdal/comm/uvcp/nvt_uvcp.ko +#insmod ${PREFIX}/lib/modules/$KERVER/hdal/comm/usb2dev/nvt_usb2dev.ko +#fi + +if [ -f /usr/bin/isp_demon ]; then + /usr/bin/isp_demon +else + echo "isp_demon not found" +fi + +if [ -f /usr/bin/cardv ]; then + cardv & +else + echo "cardv not found" +fi + +fi diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S15_NvtAppInit b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S15_NvtAppInit new file mode 100755 index 000000000..78a14265a --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S15_NvtAppInit @@ -0,0 +1,17 @@ +#!/bin/sh +# System Daemon Run +echo "nvtapp" > /proc/nvt_info/bootts + +inetd + +crond + +#DeviceDiscovery -d & +echo "nvtapp" > /proc/nvt_info/bootts + +# for ISP tool +#echo "run isp_demon" +#/usr/bin/isp_demon + +# disable childless pll +echo d > /proc/nvt_info/nvt_clk/clk_childless diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S25_Net b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S25_Net new file mode 100755 index 000000000..9bb180826 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S25_Net @@ -0,0 +1,60 @@ +#!/bin/sh + +NETWORK_SETUP_SCRIPT="/etc/init.d/net_init.sh" + +SF_BOOT_MODE=1 + +kernel_cmdline=$(cat /proc/cmdline) + +SF_HUNTING_BOOT_MODE=`dmesg | grep -o 'Mode=[0-9]*' | cut -d'=' -f2` + +echo SF_HUNTING_BOOT_MODE=${SF_HUNTING_BOOT_MODE} + +do_wifi_init() +{ + if [ "$NVT_SDIO_WIFI" == "NVT_SDIO_WIFI_RTK" ]; then + #/etc/init.d/BS_Net_wifiap8189ftv + if [ "${SF_BOOT_MODE}" = "${SF_HUNTING_BOOT_MODE}" ]; then + echo "Configuring BS_Net_wifiap8189ftv sf start" + /etc/init.d/BS_Net_wifiap8189ftv + else + echo "Configuring BS_Net_wifiap8189ftv sf stop" + fi + elif [ "$NVT_SDIO_WIFI" == "NVT_SDIO_WIFI_BRCM" ]; then + modprobe bcmdhd + # TBD + fi +} + +echo "net" > /proc/nvt_info/bootts + +if [ "$NVT_ETHERNET" == "NVT_ETHERNET_NONE" ] && [ "$NVT_SDIO_WIFI" == "NVT_SDIO_WIFI_NONE" ]; then + echo "Without network" +else + if [ "$NVT_SDIO_WIFI" != "NVT_SDIO_WIFI_NONE" ]; then + do_wifi_init; + fi + + if [ "$NVT_ETHERNET" != "NVT_ETHERNET_NONE" ]; then + modprobe ntkimethmac + ifconfig eth0 up + # nvtsystem will generate this network setup script + if [ -f "$NETWORK_SETUP_SCRIPT" ]; then + $NETWORK_SETUP_SCRIPT + else + echo "Configuring loopback interface" + ifconfig lo 127.0.0.1 + if [ "$NVT_DEFAULT_NETWORK_BOOT_PROTOCOL" == "NVT_DEFAULT_NETWORK_BOOT_PROTOCOL_DHCP_SERVER" ]; then + ifconfig eth0 192.168.0.3 + udhcpd -fS /etc/udhcpd.conf & + elif [ "$NVT_DEFAULT_NETWORK_BOOT_PROTOCOL" == "NVT_DEFAULT_NETWORK_BOOT_PROTOCOL_DHCP_CLIENT" ]; then + udhcpc -i %s -p /var/run/udhcpc_%s.pid -T 10 -t 1 -x hostname:$(hostname) & + else + ifconfig eth0 192.168.0.3 + fi + fi + fi +fi + +echo "net" > /proc/nvt_info/bootts +telnetd diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S99_Sysctl b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S99_Sysctl new file mode 100755 index 000000000..625c99fbd --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S99_Sysctl @@ -0,0 +1,13 @@ +[ -f /etc/sysctl.conf ] && sysctl -p >&- +modprobe drvdump +# coredump setting +# echo 1 > /proc/sys/kernel/core_uses_pid +ulimit -c unlimited +# echo "/var/log/core-%e-%p-%t" > /proc/sys/kernel/core_pattern +# cardv & +# echo 7 4 1 7 > /proc/sys/kernel/printk +# cat /proc/{cardv_pid}/maps for debug purpose +# sleep 0.2 +# cat /proc/$(ps | grep 'cardv' | awk 'NR==1{print $1}')/maps +#cat /proc/$(ps | grep 'sf_app' | awk 'NR==1{print $1}')/maps + diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/rcK b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/rcK new file mode 100755 index 000000000..5985ac4e1 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/rcK @@ -0,0 +1,10 @@ +#!/bin/sh +# To run /etc/init.d/S* script +for deinitscript in /etc/init.d/K[0-9][0-9]* +do + if [ -x $deinitscript ] ; + then + echo "[End] $deinitscript" + $deinitscript + fi +done diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/rcS b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/rcS new file mode 100755 index 000000000..7bf1d7eac --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/rcS @@ -0,0 +1,20 @@ +#!/bin/sh +# source profile_prjcfg on /etc/init.d/rcS (init script cycle) and /etc/profile (after startup cycle) +source /etc/profile_prjcfg + +# fstab devices create +mount -a + +echo "ker" > /proc/nvt_info/bootts +echo "rcS" > /proc/nvt_info/bootts + +# To run /etc/init.d/S* script +for initscript in /etc/init.d/S[0-9][0-9]* +do + if [ -x $initscript ]; then + echo "[Start] $initscript" + $initscript + fi +done + +echo "rcS" > /proc/nvt_info/bootts diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/inittab b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/inittab new file mode 100755 index 000000000..91b3678d7 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/inittab @@ -0,0 +1,93 @@ +# /etc/inittab init(8) configuration for BusyBox +# +# Copyright (C) 1999-2004 by Erik Andersen +# +# +# Note, BusyBox init doesn't support runlevels. The runlevels field is +# completely ignored by BusyBox init. If you want runlevels, use sysvinit. +# +# +# Format for each entry: ::: +# +# : WARNING: This field has a non-traditional meaning for BusyBox init! +# +# The id field is used by BusyBox init to specify the controlling tty for +# the specified process to run on. The contents of this field are +# appended to "/dev/" and used as-is. There is no need for this field to +# be unique, although if it isn't you may have strange results. If this +# field is left blank, it is completely ignored. Also note that if +# BusyBox detects that a serial console is in use, then all entries +# containing non-empty id fields will be ignored. BusyBox init does +# nothing with utmp. We don't need no stinkin' utmp. +# +# : The runlevels field is completely ignored. +# +# : Valid actions include: sysinit, respawn, askfirst, wait, once, +# restart, ctrlaltdel, and shutdown. +# +# Note: askfirst acts just like respawn, but before running the specified +# process it displays the line "Please press Enter to activate this +# console." and then waits for the user to press enter before starting +# the specified process. +# +# Note: unrecognized actions (like initdefault) will cause init to emit +# an error message, and then go along with its business. +# +# : Specifies the process to be executed and it's command line. +# +# Note: BusyBox init works just fine without an inittab. If no inittab is +# found, it has the following default behavior: +# ::sysinit:/etc/init.d/rcS +# ::askfirst:/bin/sh +# ::ctrlaltdel:/sbin/reboot +# ::shutdown:/sbin/swapoff -a +# ::shutdown:/bin/umount -a -r +# ::restart:/sbin/init +# +# if it detects that /dev/console is _not_ a serial console, it will +# also run: +# tty2::askfirst:/bin/sh +# tty3::askfirst:/bin/sh +# tty4::askfirst:/bin/sh +# +# Boot-time system configuration/initialization script. +# This is run first except when booting in single-user mode. +# +::sysinit:sh /etc/init.d/rcS + +# /bin/sh invocations on selected ttys +# +# Note below that we prefix the shell commands with a "-" to indicate to the +# shell that it is supposed to be a login shell. Normally this is handled by +# login, but since we are bypassing login in this case, BusyBox lets you do +# this yourself... +# +# Start an "askfirst" shell on the console (whatever that may be) +# Start a shell whatever it is. +ttyS0::respawn:-/bin/login -f root +#ttyS0::sysinit:/bin/sh +#ttyUSB0::sysinit:/bin/sh +# Start an "askfirst" shell on /dev/tty2-4 +#tty2::askfirst:-/bin/sh +#tty3::askfirst:-/bin/sh +#tty4::askfirst:-/bin/sh + +# /sbin/getty invocations for selected ttys +#tty4::respawn:/sbin/getty 38400 tty5 +#tty5::respawn:/sbin/getty 38400 tty6 + +# Example of how to put a getty on a serial line (for a terminal) +#::respawn:/sbin/getty -L ttyS0 9600 vt100 +#::respawn:/sbin/getty -L ttyS1 9600 vt100 +# +# Example how to put a getty on a modem line. +#::respawn:/sbin/getty 57600 ttyS2 + +# Stuff to do when restarting the init process +::restart:/sbin/init + +# Stuff to do before rebooting +::ctrlaltdel:/sbin/reboot +::shutdown:/etc/init.d/rcK +::shutdown:/bin/umount -a -r +::shutdown:/sbin/swapoff -a diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/localtime b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/localtime new file mode 100755 index 000000000..06db2eff7 Binary files /dev/null and b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/localtime differ diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/mdev-script/automount.sh b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/mdev-script/automount.sh new file mode 100755 index 000000000..996c25d04 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/mdev-script/automount.sh @@ -0,0 +1,36 @@ +#! /bin/sh +if [ "$1" == "" ]; then +echo "parameter is none" > /tmp/error.txt +exit 1 +fi +mounted=`mount | grep $1 | wc -l` + +# mounted, assume we umount +if [ $mounted -ge 1 ]; then +echo "R/media/$1" >> /tmp/usbmnt.log +echo "R/media/$1" > /tmp/fifo.1 +if ! umount "/media/$1"; then +exit 1 +fi + +if ! rmdir "/media/$1"; then +exit 1 +fi +# not mounted, lets mount under /media +else +if ! mkdir -p "/media/$1"; then +exit 1 +fi + +if ! mount "/dev/$1" "/media/$1"; then +# failed to mount, clean up mountpoint +if ! rmdir "/media/$1"; then +exit 1 +fi +exit 1 +fi +echo "A/media/$1" >> /tmp/usbmnt.log +echo "A/media/$1" > /tmp/fifo.1 +fi + +exit 0 diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/mdev-script/autoscsi.sh b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/mdev-script/autoscsi.sh new file mode 100755 index 000000000..73ffe4070 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/mdev-script/autoscsi.sh @@ -0,0 +1,258 @@ +#!/bin/sh +ISCSI_CONF_FILE=/etc/event_iscsi.conf + +# the first session path or the current device +G_SESSION_PATH1= + +# values of the configuration file +G_CFG_NAME= +G_CFG_IP= +G_CFG_TARGET= +G_CFG_USER= +G_CFG_PASSWD= +G_CFG_BMOUNT= + +# parsing values in sysfs +G_SYS_PTNUM= +G_SYS_IP= +G_SYS_USER= +G_SYS_PASSWD= +G_SYS_TARGET= + +myecho() +{ + # normal echo + # echo "$*" + # output to file + # echo "$*" >> /autoscsi.log + : +} + +reset_cfg_value() +{ + G_CFG_NAME= + G_CFG_IP= + G_CFG_TARGET= + G_CFG_USER= + G_CFG_PASSWD= + G_CFG_BMOUNT= +} + +get_cfg_setting() +{ + #File content example: + #iscsi_name=iscsi_name + #iscsi_ip=192.168.0.6 + #iscsi_target_name=iqn.2006-03.com.kernsafe:jtv208-PC.RamDisk0 + #iscsi_user= + #iscsi_password= + #iscsi_bmount=0 + + #assume TARGET_TAG=my_iscsi_name + local FIND_IP=$1 + local FIND_TARGET=$2 + + myecho FIND_IP=$FIND_IP + myecho FIND_TARGET=$FIND_TARGET + + reset_cfg_value + + if [ ! -e $ISCSI_CONF_FILE ]; then + myecho $ISCSI_CONF_FILE not found + return 1 + fi + + exec < $ISCSI_CONF_FILE + while read line; do + #myecho $line + TAG_NAME=${line%%=*} + TAG_VAL=${line##*=} + + case "${TAG_NAME}" in + "iscsi_name") + #the following belongs to other groups, check the previous group + if [ ! -z $G_CFG_NAME ] && [ $FIND_IP == $G_CFG_IP ] && [ $FIND_TARGET == $G_CFG_TARGET ]; then + break #break while read line + fi + reset_cfg_value + G_CFG_NAME=$TAG_VAL + ;; + "iscsi_ip") + G_CFG_IP=$TAG_VAL + ;; + "iscsi_target_name") + G_CFG_TARGET=$TAG_VAL + ;; + "iscsi_user") + G_CFG_USER=$TAG_VAL + ;; + "iscsi_password") + G_CFG_PASSWD=$TAG_VAL + ;; + "iscsi_bmount") + G_CFG_BMOUNT=$TAG_VAL + ;; + *) + ;; + esac + done + + # check the last group, it may double check here when we found it before the file end + if [ ! -z $G_CFG_NAME ] && [ $FIND_IP == $G_CFG_IP ] && [ $FIND_TARGET == $G_CFG_TARGET ]; then + myecho G_CFG_NAME=$G_CFG_NAME + myecho G_CFG_IP=$G_CFG_IP + myecho G_CFG_TARGET=$G_CFG_TARGET + myecho G_CFG_USER=$G_CFG_USER + myecho G_CFG_PASSWD=$G_CFG_PASSWD + myecho G_CFG_BMOUNT=$G_CFG_BMOUNT + return 0 + fi + + return 1 +} + +get_session_path1() +{ + #assume $1 is the iscsi device name, such as "sda" + local TARGET_ISCSI_DEV=$1 + local HOST_DIR + local SESSION_PATH1 + local BLOCK_FILE + local BLOCK_DEV + + myecho TARGET_ISCSI_DEV=$TARGET_ISCSI_DEV + + for HOST_DIR in /sys/devices/platform/host*; do + #e.g. HOST_DIR=/sys/devices/platform/host0 + if ! [ -d $HOST_DIR/iscsi_host* ]; then + continue + fi + for SESSION_PATH1 in $HOST_DIR/session*; do + #e.g. SESSION_PATH1=/sys/devices/platform/host0/session1 + if ! [ -d $SESSION_PATH1/target* ]; then + continue + fi + for BLOCK_FILE in $SESSION_PATH1/target*/*\:*/block/*; do + #e.g. BLOCK_FILE=/sys/devices/platform/host0/session1/target0:0:0/0:0:0:0/block/sda + BLOCK_DEV=`echo "$BLOCK_FILE" | sed 's/.*block\///'` + #e.g. BLOCK_DEV=sda + if [ $BLOCK_DEV == $TARGET_ISCSI_DEV ]; then + myecho BLOCK_DEV=$BLOCK_DEV + G_SESSION_PATH1=$SESSION_PATH1 + return 0 + fi + done + done + done + + G_SESSION_PATH1= + return 1 +} + +get_sys_devinfo() +{ + local SESSION_PATH1=$1 + local SESSION_PATH2 + local BLOCK_DEVPATH + local DEV_PARTIPATH + local CONNECTION_PATH + local BLOCK_DEV + local DEV_PARTINAME + + for BLOCK_DEVPATH in $SESSION_PATH1/target*/*\:*/block/*; do + #e.g. BLOCK_DEVPATH=/sys/devices/platform/host2/session3/target2:0:0/2:0:0:0/block/sda + myecho BLOCK_DEVPATH=$BLOCK_DEVPATH + BLOCK_DEV=`echo "$BLOCK_DEVPATH" | sed 's/.*block\///'` + #e.g. BLOCK_DEV=sda + myecho BLOCK_DEV=$BLOCK_DEV + + G_SYS_PTNUM=0 + for DEV_PARTIPATH in $BLOCK_DEVPATH/$BLOCK_DEV*; do + #e.g. DEV_PARTIPATH=/sys/devices/platform/host2/session3/target2:0:0/2:0:0:0/block/sda/sda1 + myecho DEV_PARTIPATH=$DEV_PARTIPATH + + DEV_PARTINAME=`echo "$DEV_PARTIPATH" | sed "s/.*$BLOCK_DEV\///"` + #e.g. DEV_PARTINAME=sda1 + myecho DEV_PARTINAME=$DEV_PARTINAME + let "G_SYS_PTNUM += 1" + done + done + + for SESSION_PATH2 in $SESSION_PATH1/iscsi_session/session*; do + #e.g. SESSION_PATH2=/sys/devices/platform/host1/session2/iscsi_session/session2 + #myecho SESSION_PATH2=$SESSION_PATH2 + G_SYS_USER=`cat $SESSION_PATH2/username` + G_SYS_PASSWD=`cat $SESSION_PATH2/password` + G_SYS_TARGET=`cat $SESSION_PATH2/targetname` + done + + for CONNECTION_PATH in $SESSION_PATH1/connection*/iscsi_connection/connection*\:*; do + #e.g. CONNECTION_PATH=/sys/devices/platform/host1/session2/connection2:0/iscsi_connection/connection2:0 + myecho CONNECTION_PATH=$CONNECTION_PATH + G_SYS_IP=`cat $CONNECTION_PATH/address` + done + + myecho G_SYS_PTNUM=$G_SYS_PTNUM + myecho G_SYS_IP=$G_SYS_IP + myecho G_SYS_USER=$G_SYS_USER + myecho G_SYS_PASSWD=$G_SYS_PASSWD + myecho G_SYS_TARGET=$G_SYS_TARGET + + return 0 +} + +my_umount() +{ + FOLDER=`grep "/dev/$1" /proc/mounts | cut -d ' ' -f 2` + if [ ! -z "$FOLDER" ]; then + umount -l "$FOLDER"; + fi +} + +my_mount() +{ + #assume $1=sda, sdb, ... + local DEV_NAME=$1 + + #set default values + local MOUNT_DEV=/dev/$DEV_NAME + local MOUNT_FOLDER=/mnt/$DEV_NAME + + #if it is iscsi, update the values + get_session_path1 $DEV_NAME + if [ $? = 0 ]; then + #is iscsi device + get_sys_devinfo $G_SESSION_PATH1 + if [ $? = 0 ]; then + get_cfg_setting $G_SYS_IP $G_SYS_TARGET + if [ $? = 0 ]; then + myecho G_SYS_PTNUM=$G_SYS_PTNUM + if [ $G_SYS_PTNUM = 0 ]; then + MOUNT_DEV=/dev/$DEV_NAME + MOUNT_FOLDER=/mnt/iscsi/$G_CFG_NAME + elif [ $G_SYS_PTNUM = 1 ]; then + MOUNT_DEV=/dev/$DEV_NAME$G_SYS_PTNUM + MOUNT_FOLDER=/mnt/iscsi/$G_CFG_NAME + else + myecho Partition Num $G_SYS_PTNUM not supported + return 1 + fi + fi + fi + fi + + myecho MOUNT_DEV=$MOUNT_DEV + myecho MOUNT_FOLDER=$MOUNT_FOLDER + + mkdir -p "${MOUNT_FOLDER}" || return 1 + mount "${MOUNT_DEV}" "${MOUNT_FOLDER}" || return 1 +} + +case "${ACTION}" in +add|"") + my_mount ${MDEV} + ;; +remove) + my_umount ${MDEV} + ;; +esac diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/mdev-script/autosd.sh b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/mdev-script/autosd.sh new file mode 100755 index 000000000..c806018e3 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/mdev-script/autosd.sh @@ -0,0 +1,240 @@ +#!/bin/sh + +MNT_PATH=/mnt + +MNT_DIR= +SD1_DIR=sd +SD2_DIR=sd2 +SD3_DIR=sd3 +EMMC1_DIR=emmc1 +EMMC2_DIR=emmc2 +CACHE_DIR=cache +DRIVE_A="" +DRIVE_B="" + +my_umount() +{ + FOLDER=`grep "/dev/$1" /proc/mounts | cut -d ' ' -f 2` + if [ ! -z "$FOLDER" ]; then + umount -l "$FOLDER"; + fi +} + +my_mount() +{ + MMCBUSNUM=`echo $DEVPATH | cut -d '/' -f 4` + if [ "$MMCBUSNUM" == "nt96660_mmc.0" ] || [ "$MMCBUSNUM" == "f0420000.mmc" ]; then + MNT_DIR=$SD1_DIR + elif [ "$MMCBUSNUM" == "nt96660_mmc.1" ] || [ "$MMCBUSNUM" == "f0500000.mmc" ]; then + MNT_DIR=$SD2_DIR + else + MNT_DIR=$SD3_DIR + fi + + if [ -b /dev/$1 ]; then + MOUNTDEV="/dev/$1" + if [ -b "/dev/$1p1" ]; then + MOUNTDEV="/dev/$1p1" + fi + fi + + time_offset_sig=`date +%z | cut -c 1` + time_offset_h=`date +%z | cut -c 2-3` + time_offset_m=`date +%z | cut -c 4-5` + time_offset=`expr $local_time - $utc_time` + if [ $time_offset_sig == + ]; then + time_offset_sig=""; + fi + time_offset_total_m=$time_offset_sig`expr $time_offset_h \* 60 + $time_offset_m` + + mkdir -p "${MNT_PATH}/${MNT_DIR}" || exit 1 + fat_type=`blkid "$MOUNTDEV" | awk -F'TYPE=' '{print $NF}'` + if [ "${fat_type}" == "\"vfat\"" ]; then + if ! mount -o usefree,dirsync,time_offset=$time_offset_total_m "$MOUNTDEV" "${MNT_PATH}/${MNT_DIR}" 2>&1 | tee -a /tmp/mountstat; then + echo "$MOUNTDEV $MNT_PATH/$MNT_DIR ignore defaults 0 0" >> /tmp/.nvt_mounts + exit 1 + fi + elif [ "${fat_type}" == "\"exfat\"" ]; then + if ! mount -t exfat "$MOUNTDEV" "${MNT_PATH}/${MNT_DIR}" 2>&1 | tee -a /tmp/mountstat; then + echo "$MOUNTDEV $MNT_PATH/$MNT_DIR ignore defaults 0 0" >> /tmp/.nvt_mounts + continue + fi + else + echo "$MOUNTDEV FAIL" >> /tmp/.nvt_mounts + exit 1 + fi +} + +check_mmc_ready() +{ + MMCBUSPATH="/sys/bus/mmc/devices/" + x=0 + timeout=100 + while [ "$x" -lt "$timeout" -a ! -d $MMCBUSPATH ]; do + x=$((x+1)) + sleep .1 + done + if [ "$x" -ge "$timeout" ]; then + return -1; + fi + return 0; +} + +if [ -z $DEVPATH ]; then + # This is for boot stage handling + MMCBUSPATH="/sys/bus/mmc/devices/" + check_mmc_ready + if [ $? != 0 ]; then + exit; + fi + MMCDEVLIST=`ls $MMCBUSPATH` + time_offset_sig=`date +%z | cut -c 1` + time_offset_h=`date +%z | cut -c 2-3` + time_offset_m=`date +%z | cut -c 4-5` + time_offset=`expr $local_time - $utc_time` + if [ $time_offset_sig == + ]; then + time_offset_sig=""; + fi + time_offset_total_m=$time_offset_sig`expr $time_offset_h \* 60 + $time_offset_m` + + for n in $MMCDEVLIST + do + # Check if it is not SD device + SD_TYPE=`cat $MMCBUSPATH/$n/type` + if [ $SD_TYPE == SDIO ]; then + continue + fi + + if [ $SD_TYPE == MMC ]; then + # To check if it's the emmc storage device + if [ -f $MMCBUSPATH/$n/bga ]; then + BGA=`cat $MMCBUSPATH/$n/bga` + if [ 1 == $BGA ]; then + # Get the block device name + BLOCKDEV=`ls $MMCBUSPATH/$n/block` + + # Check if device is mounted + MOUNTED=`grep $BLOCKDEV /proc/mounts` + if [ ! -z "$MOUNTED" ]; then + continue + fi + + if [ "$NVT_ROOTFS_TYPE" == "NVT_ROOTFS_TYPE_EMMC" ]; then + if [ -b "/dev/${BLOCKDEV}p2" ]; then + if ! mount -t vfat /dev/${BLOCKDEV}p2 /mnt/${CACHE_DIR}; then + echo yes | mkfs.vfat /dev/${BLOCKDEV}p2; + if ! mount -t vfat /dev/${BLOCKDEV}p2 /mnt/${CACHE_DIR}; then + exit 1; + fi + fi + fi + if [ -b "/dev/${BLOCKDEV}p5" ]; then + if ! mount -t ext4 /dev/${BLOCKDEV}p5 /mnt/${EMMC1_DIR}; then + echo yes | mkfs.ext4 /dev/${BLOCKDEV}p5; + if ! mount -t ext4 /dev/${BLOCKDEV}p5 /mnt/${EMMC1_DIR}; then + exit 1; + fi + fi + fi + if [ -b "/dev/${BLOCKDEV}p6" ]; then + if ! mount -t ext4 /dev/${BLOCKDEV}p6 /mnt/${EMMC2_DIR}; then + echo yes | mkfs.ext4 /dev/${BLOCKDEV}p6; + if ! mount -t ext4 /dev/${BLOCKDEV}p6 /mnt/${EMMC2_DIR}; then + exit 1; + fi + fi + fi + else + # Using fdisk to check if it needs to be partitioned + if [ -f /etc/autofdisk.sh ]; then + mknod /dev/${BLOCKDEV} b `cat /sys/block/${BLOCKDEV}/dev | sed "s/:/\ /g"` + /etc/autofdisk.sh ${BLOCKDEV} + if [ $? != 0 ]; then + echo -e "\e[1;31m\rUpdate rootfs failed. #1\r\e[0m" + exit 1; + fi + fi + sync + sleep 1 + if [ -b "/dev/${BLOCKDEV}p1" ]; then + if ! mount -t ext4 /dev/${BLOCKDEV}p1 /mnt/${EMMC1_DIR}; then + echo yes | mkfs.ext4 /dev/${BLOCKDEV}p1; + if ! mount -t ext4 /dev/${BLOCKDEV}p1 /mnt/${EMMC1_DIR}; then + exit 1; + fi + fi + fi + if [ -b "/dev/${BLOCKDEV}p2" ]; then + if ! mount -t ext4 /dev/${BLOCKDEV}p2 /mnt/${EMMC2_DIR}; then + echo yes | mkfs.ext4 /dev/${BLOCKDEV}p2; + if ! mount -t ext4 /dev/${BLOCKDEV}p2 /mnt/${EMMC2_DIR}; then + exit 1; + fi + fi + fi + fi + fi + fi + continue + fi + + # Get the block device name + BLOCKDEV=`ls $MMCBUSPATH/$n/block` + # Check if device is mounted + MOUNTED=`grep $BLOCKDEV /proc/mounts` + + # Create folder + if [ ! -z `echo $n | grep mmc0` ]; then + MNT_DIR=$SD1_DIR + elif [ ! -z `echo $n | grep mmc1` ]; then + MNT_DIR=$SD2_DIR + else + MNT_DIR=$SD3_DIR + fi + + if [ ! -z "$MOUNTED" ]; then + continue + fi + + # Check if /dev/mmcblk* exists + if [ -b /dev/$BLOCKDEV ]; then + MOUNTDEV="/dev/$BLOCKDEV" + if [ -b "/dev/${BLOCKDEV}p1" ]; then + MOUNTDEV="/dev/${BLOCKDEV}p1" + fi + else + continue + fi + + # Inserted but can't be mounted + fat_type=`blkid "$MOUNTDEV" | awk -F'TYPE=' '{print $NF}'` + if [ "${fat_type}" == "\"vfat\"" ]; then + if ! mount -o usefree,dirsync,time_offset=$time_offset_total_m "$MOUNTDEV" "${MNT_PATH}/${MNT_DIR}" 2>&1 | tee -a /tmp/mountstat; then + echo "$MOUNTDEV $MNT_PATH/$MNT_DIR ignore defaults 0 0" >> /tmp/.nvt_mounts + continue + fi + elif [ "${fat_type}" == "\"exfat\"" ]; then + if ! mount -t exfat "$MOUNTDEV" "${MNT_PATH}/${MNT_DIR}" 2>&1 | tee -a /tmp/mountstat; then + echo "$MOUNTDEV $MNT_PATH/$MNT_DIR ignore defaults 0 0" >> /tmp/.nvt_mounts + continue + fi + else + echo "Unkown SD type!!!" + echo "$MOUNTDEV $MNT_PATH/$MNT_DIR ignore defaults 0 0" >> /tmp/.nvt_mounts + continue + fi + + done + touch /tmp/.nvt_mounts +else + # This is for booted up stage + case "${ACTION}" in + add|"") + my_umount ${MDEV} + my_mount ${MDEV} + ;; + remove) + my_umount ${MDEV} + ;; + esac +fi diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/mdev.conf b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/mdev.conf new file mode 100755 index 000000000..e1b97432c --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/mdev.conf @@ -0,0 +1,24 @@ +# +# This is a sample mdev.conf +# + +# Provide user, group, and mode information for devices. If a regex matches +# the device name provided by sysfs, use the appropriate user:group and mode +# instead of the default 0:0 660. +# +# Syntax: +# [-]devicename_regex user:group mode [=path]|[>path]|[!] [@|$|*cmd args...] +# [-]$ENVVAR=regex user:group mode [=path]|[>path]|[!] [@|$|*cmd args...] +# [-]@maj,min[-min2] user:group mode [=path]|[>path]|[!] [@|$|*cmd args...] +# +# [-]: do not stop on this match, continue reading mdev.conf +# =: move, >: move and create a symlink +# !: do not create device node +# @|$|*: run@cmd if $ACTION=add, $cmd if $ACTION=remove, *cmd in all cases + +# support module loading on hotplug +$MODALIAS=.* root:root 660 @modprobe "$MODALIAS" + +#mmcblk[0-9]p[0-9] root:root 660 */etc/mdev-script/autosd.sh +mmcblk[0-2] root:root 660 */etc/mdev-script/autosd.sh +#sd[a-z] root:root 660 */etc/mdev-script/autoscsi.sh diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/network/interfaces b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/network/interfaces new file mode 100755 index 000000000..088932e61 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/network/interfaces @@ -0,0 +1,27 @@ +# Configure Loopback +auto lo +iface lo inet loopback + +# Configure eth0, dhcp client +auto eth0 +iface eth0 inet dhcp + +# Configure wlan0, dhcp client +#auto wlan0 +#iface wlan0 inet dhcp + +# Configure wlan0, fix ip +auto wlan0 +iface wlan0 inet static +address 192.168.1.2 +netmask 255.255.255.0 + +# Configure eth0 +#auto eth0 +#iface eth0 inet static + #address 192.168.0.2 + #netmask 255.255.255.0 + #gateway 192.168.0.1 + + + diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/passwd b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/passwd new file mode 100755 index 000000000..bcaab647a --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/passwd @@ -0,0 +1 @@ +root::0:0:root:/root:/bin/sh diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/profile b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/profile new file mode 100755 index 000000000..365a33844 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/profile @@ -0,0 +1,82 @@ +# /etc/profile: system-wide .profile file for the Bourne shell (sh(1)) +# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...). + +# source profile_prjcfg on /etc/init.d/rcS (init script cycle) and /etc/profile (after startup cycle) +source /etc/profile_prjcfg +export PATH="/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/bin:/sbin" +export LD_LIBRARY_PATH="/lib:/usr/local/lib:/usr/lib" +export TERMINFO=/usr/share/terminfo +#export LD_PRELOAD="libnvtlibc.so" + +if [ -f /etc/hostname ]; then + /bin/hostname -F /etc/hostname +fi + +# coredump setting +echo 1 > /proc/sys/kernel/core_uses_pid +ulimit -c unlimited +echo "/var/log/core-%e-%p-%t" > /proc/sys/kernel/core_pattern + +export HOSTNAME=`/bin/hostname` + +export PS1='\u@\h:\w$ ' + +echo "$HOSTNAME Linux shell..." + +alias camname='cardv sys camname' +alias cammode='cardv sys cammode' +alias imgsize='cardv sys imgsize' +alias videosize='cardv sys videosize' +alias videolen='cardv sys videolen' +alias flashled='cardv sys flashled' +alias nightmode='cardv sys nightmode' +alias multishot='cardv sys multishot' +alias pirsw='cardv sys pirsw' +alias pirsen='cardv sys pirsen' +alias pirdelay='cardv sys pirdelay' +alias timelapse='cardv sys timelapse' +alias worktime='cardv sys worktime' +alias dateauto='cardv sys dateauto' +alias datestyle='cardv sys datestyle' +alias campwd='cardv sys campwd' +alias battype='cardv sys battype' +alias sdloop='cardv sys sdloop' +alias rtcset='cardv sys rtcset' +alias gprsmode='cardv sys gprsmode' +alias sendmaxnum='cardv sys sendmaxnum' +alias sendpicsize='cardv sys sendpicsize' +alias sendphoto='cardv sys sendphoto' +alias sendvideo='cardv sys sendvideo' +alias piccount='cardv sys piccount' +alias dailyreport='cardv sys dailyreport' +alias dailyreporttest='cardv sys dailyreporttest' +alias simautomatch='cardv sys simautomatch' +alias simpinflag='cardv sys simpinflag' +alias simpinset='cardv sys simpinset' +alias sim4gapn='cardv sys sim4gapn' +alias sim4gusername='cardv sys sim4gusername' +alias sim4gpsw='cardv sys sim4gpsw' +alias imei='cardv sys imei' +alias modulever='cardv sys modulever' +alias modulesubver='cardv sys modulesubver' +alias gpssw='cardv sys gpssw' +alias latitude='cardv sys latitude' +alias longitude='cardv sys longitude' +alias webip='cardv sys webip' +alias acmip='cardv sys acmip' +alias debugmode='cardv sys debugmode' +alias autooffsw='cardv sys autooffsw' +alias autoofftime='cardv sys autoofftime' +alias qlogsw='cardv sys qlogsw' +alias rawsw='cardv sys rawsw' +alias batterysw='cardv sys batterysw' +alias state='cardv sys state' +alias reset='cardv sys reset' +alias mcupara='cardv sys mcupara' +alias setusbmuxs='cardv sys setusbmuxs' +alias 4gusbboot='cardv sys 4gusbboot' +alias ftpsw='cardv sys ftpsw' +alias ftpset='cardv sys ftpset' +alias ftpsset='cardv sys ftpsset' +alias stampsw='cardv sys stampsw' +alias gprssw='cardv sys gprssw' \ No newline at end of file diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/resolv.conf b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/resolv.conf new file mode 100755 index 000000000..20227dbbc --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/resolv.conf @@ -0,0 +1,2 @@ +nameserver 192.168.0.1 + diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/services b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/services new file mode 100755 index 000000000..9fef63c91 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/services @@ -0,0 +1,14 @@ +# Network services, Internet style +# +# Note that it is presently the policy of IANA to assign a single well-known +# port number for both TCP and UDP; hence, officially ports have two entries +# even if the protocol doesn't support UDP operations. +# +# Updated from http://www.iana.org/assignments/port-numbers and other +# sources like http://www.freebsd.org/cgi/cvsweb.cgi/src/etc/services . +# New ports will be added on request if they have been officially assigned +# by IANA and used in the real-world or are needed by a debian package. +# If you need a huge list of used numbers please install the nmap package. + +ntp 123/tcp +ntp 123/udp # Network Time Protocol diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/sysctl.conf b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/sysctl.conf new file mode 100755 index 000000000..1ce3a65f4 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/sysctl.conf @@ -0,0 +1,68 @@ +# +# /etc/sysctl.conf - Configuration file for setting system variables +# + +#kernel.domainname = example.com + +# Uncomment the following to stop low-level messages on console +#kernel.printk = 3 4 1 3 + +##############################################################3 +# Functions previously found in netbase +# + +# Uncomment the next two lines to enable Spoof protection (reverse-path filter) +# Turn on Source Address Verification in all interfaces to +# prevent some spoofing attacks +#net.ipv4.conf.default.rp_filter=1 +#net.ipv4.conf.all.rp_filter=1 + +# Uncomment the next line to enable TCP/IP SYN cookies +# See http://lwn.net/Articles/277146/ +# Note: This may impact IPv6 TCP sessions too +#net.ipv4.tcp_syncookies=1 + +# Uncomment the next line to enable packet forwarding for IPv4 +#net.ipv4.ip_forward=1 + +# Uncomment the next line to enable packet forwarding for IPv6 +# Enabling this option disables Stateless Address Autoconfiguration +# based on Router Advertisements for this host +#net.ipv6.conf.all.forwarding=1 + + +################################################################### +# Additional settings - these settings can improve the network +# security of the host and prevent against some network attacks +# including spoofing attacks and man in the middle attacks through +# redirection. Some network environments, however, require that these +# settings are disabled so review and enable them as needed. +# +# Do not accept ICMP redirects (prevent MITM attacks) +#net.ipv4.conf.all.accept_redirects = 0 +#net.ipv6.conf.all.accept_redirects = 0 +# _or_ +# Accept ICMP redirects only for gateways listed in our default +# gateway list (enabled by default) +# net.ipv4.conf.all.secure_redirects = 1 +# +# Do not send ICMP redirects (we are not a router) +#net.ipv4.conf.all.send_redirects = 0 +# +# Do not accept IP source route packets (we are not a router) +#net.ipv4.conf.all.accept_source_route = 0 +#net.ipv6.conf.all.accept_source_route = 0 +# +# Log Martian Packets +#net.ipv4.conf.all.log_martians = 1 +# + +kernel.panic=10 +kernel.panic_on_oops=0 + +vm.min_free_kbytes=1500 +vm.vfs_cache_pressure=300 +vm.dirty_writeback_centisecs=100 +vm.dirty_bytes=5000000 +vm.dirty_background_bytes=5000000 +vm.dirty_expire_centisecs=300 diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/timezone/localtime b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/timezone/localtime new file mode 100755 index 000000000..06db2eff7 Binary files /dev/null and b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/timezone/localtime differ diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/timezone/localtime.base b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/timezone/localtime.base new file mode 100755 index 000000000..55b2a1d5b Binary files /dev/null and b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/timezone/localtime.base differ diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/timezone/tzdata b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/timezone/tzdata new file mode 100755 index 000000000..3a74e9233 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/timezone/tzdata @@ -0,0 +1,6 @@ +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule NVT 1970 only - Mar lastSun 1:00u 1:00 D +Rule NVT 1970 only - Oct lastSun 1:00u 0 S + +# Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone CST 0:00 NVT C%sT diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/udhcpd.conf b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/udhcpd.conf new file mode 100755 index 000000000..ebb21868a --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/udhcpd.conf @@ -0,0 +1,118 @@ +# Sample udhcpd configuration file (/etc/udhcpd.conf) +# Values shown are defaults + +# The start and end of the IP lease block +start 192.168.1.20 +end 192.168.1.254 + +# The interface that udhcpd will use +interface eth0 + +# The maximum number of leases (includes addresses reserved +# by OFFER's, DECLINE's, and ARP conflicts). Will be corrected +# if it's bigger than IP lease block, but it ok to make it +# smaller than lease block. +#max_leases 254 + +# The amount of time that an IP will be reserved (leased to nobody) +# if a DHCP decline message is received (seconds) +#decline_time 3600 + +# The amount of time that an IP will be reserved +# if an ARP conflict occurs (seconds) +#conflict_time 3600 + +# How long an offered address is reserved (seconds) +#offer_time 60 + +# If client asks for lease below this value, it will be rounded up +# to this value (seconds) +#min_lease 60 + +# The location of the pid file +#pidfile /var/run/udhcpd.pid + +# The location of the leases file +#lease_file /var/lib/misc/udhcpd.leases + +# The time period at which udhcpd will write out leases file. +# If this is 0, udhcpd will never automatically write leases file. +# Specified in seconds. +#auto_time 7200 + +# Every time udhcpd writes a leases file, the below script will be called +#notify_file # default: no script +#notify_file dumpleases # useful for debugging + +# The following are bootp specific options +# next server to use in bootstrap +#siaddr 192.168.0.22 # default: 0.0.0.0 (none) +# tftp server name +#sname zorak # default: none +# tftp file to download (e.g. kernel image) +#boot_file /var/nfs_root # default: none + +# Static leases map +#static_lease 00:60:08:11:CE:4E 192.168.0.54 +#static_lease 00:60:08:11:CE:3E 192.168.0.44 + +# The remainder of options are DHCP options and can be specified with the +# keyword 'opt' or 'option'. If an option can take multiple items, such +# as the dns option, they can be listed on the same line, or multiple +# lines. +# Examples: +#opt dns 192.168.10.2 192.168.10.10 +opt dns 0.0.0.0 +option subnet 255.255.255.0 +#opt router 192.168.10.2 +opt router 192.168.0.2 +#opt wins 192.168.10.10 +opt wins 0.0.0.0 +option dns 129.219.13.81 # appended to above DNS servers for a total of 3 +option domain local +option lease 864000 # default: 10 days +option msstaticroutes 10.0.0.0/8 10.127.0.1 # single static route +option staticroutes 10.0.0.0/8 10.127.0.1, 10.11.12.0/24 10.11.12.1 +# Arbitrary option in hex form: +option 0x08 01020304 # option 8: "cookie server IP addr: 1.2.3.4" + +# Currently supported options (for more info, see options.c): +#opt lease NUM +#opt subnet IP +#opt broadcast IP +#opt router IP_LIST +#opt ipttl NUM +#opt mtu NUM +#opt hostname STRING # client's hostname +#opt domain STRING # client's domain suffix +#opt search STRING_LIST # search domains +#opt nisdomain STRING +#opt timezone NUM # (localtime - UTC_time) in seconds. signed +#opt tftp STRING # tftp server name +#opt bootfile STRING # tftp file to download (e.g. kernel image) +#opt bootsize NUM # size of that file +#opt rootpath STRING # (NFS) path to mount as root fs +#opt wpad STRING +#opt serverid IP # default: server's IP +#opt message STRING # error message (udhcpd sends it on success too) +#opt vlanid NUM # 802.1P VLAN ID +#opt vlanpriority NUM # 802.1Q VLAN priority +# Options specifying server(s) +#opt dns IP_LIST +#opt wins IP_LIST +#opt nissrv IP_LIST +#opt ntpsrv IP_LIST +#opt lprsrv IP_LIST +#opt swapsrv IP +# Options specifying routes +#opt routes IP_PAIR_LIST +#opt staticroutes STATIC_ROUTES # RFC 3442 classless static route option +#opt msstaticroutes STATIC_ROUTES # same, using MS option number +# Obsolete options, no longer supported +#opt logsrv IP_LIST # 704/UDP log server (not syslog!) +#opt namesrv IP_LIST # IEN 116 name server, obsolete (August 1979!!!) +#opt cookiesrv IP_LIST # RFC 865 "quote of the day" server, rarely (never?) used +#opt timesrv IP_LIST # RFC 868 time server, rarely (never?) used +# TODO: in development +#opt userclass STRING # RFC 3004. set of LASCII strings. "I am a printer" etc +#opt sipserv STRING LIST # RFC 3361. flag byte, then: 0: domain names, 1: IP addrs diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/udhcpdw.conf b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/udhcpdw.conf new file mode 100755 index 000000000..234d3bc04 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/udhcpdw.conf @@ -0,0 +1,90 @@ +# Sample udhcpd configuration file (/etc/udhcpd.conf) +# Values shown are defaults + +# The start and end of the IP lease block +start 192.168.1.20 +end 192.168.1.254 + +# The interface that udhcpd will use +interface wlan0 +#interface ap0 +# The maximim number of leases (includes addresses reserved +# by OFFER's, DECLINE's, and ARP conficts). Will be corrected +# if it's bigger than IP lease block, but it ok to make it +# smaller than lease block. +#max_leases 254 + +# The time period at which udhcpd will write out a dhcpd.leases +# file. If this is 0, udhcpd will never automatically write a +# lease file. Specified in seconds. +#auto_time 7200 + +# The amount of time that an IP will be reserved (leased to nobody) +# if a DHCP decline message is received (seconds). +#decline_time 3600 + +# The amount of time that an IP will be reserved +# if an ARP conflct occurs (seconds). +#conflict_time 3600 + +# How long an offered address is reserved (seconds). +#offer_time 60 + +# If client asks for lease below this value, it will be rounded up +# to this value (seconds). +#min_lease 60 + +# The location of the leases file +#lease_file /var/lib/misc/udhcpd.leases + +# The location of the pid file +#pidfile /var/run/udhcpd.pid + +# Everytime udhcpd writes a leases file, the below script will be called. +#notify_file # default: no script +#notify_file dumpleases # useful for debugging + +# The following are bootp specific options, settable by udhcpd. +#siaddr 192.168.0.22 #default: 0.0.0.0 +#sname zorak #default: none +#boot_file /var/nfs_root #default: none + +# The remainer of options are DHCP options and can be specifed with the +# keyword 'opt' or 'option'. If an option can take multiple items, such +# as the dns option, they can be listed on the same line, or multiple +# lines. The only option with a default is 'lease'. +# Examples: +opt dns 192.168.1.1 +option subnet 255.255.255.0 +#opt router 192.168.1.1 +#opt wins 192.168.10.10 +#option dns 129.219.13.81 # appened to above DNS servers for a total of 3 +option domain local +option lease 864000 # 10 days of seconds + +# Currently supported options (for more info, see options.c): +#opt subnet +#opt timezone +#opt router +#opt timesrv +#opt namesrv +#opt dns +#opt logsrv +#opt cookiesrv +#opt lprsrv +#opt bootsize +#opt domain +#opt swapsrv +#opt rootpath +#opt ipttl +#opt mtu +#opt broadcast +#opt wins +#opt lease +#opt ntpsrv +#opt tftp +#opt bootfile + +# Static leases map +#static_lease 00:60:08:11:CE:4E 192.168.0.54 +#static_lease 00:60:08:11:CE:3E 192.168.0.44 diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/wifiap_wpa2.conf b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/wifiap_wpa2.conf new file mode 100755 index 000000000..b10755c85 --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/wifiap_wpa2.conf @@ -0,0 +1,17 @@ +interface=wlan0 +ssid=680apwpa2 +channel=6 +wpa=0 +wpa_passphrase=1234567890 + +driver=nl80211 +beacon_int=100 +hw_mode=g +ieee80211n=1 +wme_enabled=1 +wpa_key_mgmt=WPA-PSK +wpa_pairwise=CCMP +rsn_pairwise=CCMP +max_num_sta=1 +wpa_group_rekey=86400 + diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/wpa_supplicant.conf b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/wpa_supplicant.conf new file mode 100755 index 000000000..24907b4fd --- /dev/null +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/wpa_supplicant.conf @@ -0,0 +1,8 @@ +network={ + ssid="MYSSID" + proto=RSN + key_mgmt=WPA-PSK + pairwise=CCMP TKIP + group=CCMP TKIP + psk="myssidpwd" +} diff --git a/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S530/DxInput_Key.c b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S530/DxInput_Key.c index 5b810b8ab..d98a3e066 100755 --- a/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S530/DxInput_Key.c +++ b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S530/DxInput_Key.c @@ -262,7 +262,12 @@ UINT32 DrvKey_DetNormalKey(void) cmdflag = 1; //sf_set_card_statu(CMD_FORMAT_SD_STA); //BKG_PostEvent(NVTEVT_BKW_FORMAT_CARD); - }else if((!cmdflag) && (time >= 10000) && (FALSE == sf_check_net_work_flag()) && (!sf_get_pir_statu_flag())){ + }else if((!cmdflag) && (time >= 3000) && (retset_time >= 3000) && (!sf_get_pir_statu_flag())){ + printf("[%s:%d] SendKeyCnt:%d KeyTestPressCnt:%d time: %dms retset_time:%dms\n", __FUNCTION__, __LINE__, SendKeyCnt, KeyTestPressCnt, time, retset_time); + cmdflag = 1; + sf_set_debug_mode(); + } + else if((!cmdflag) && (time >= 10000) && (FALSE == sf_check_net_work_flag()) && (!sf_get_pir_statu_flag())){ printf("[%s:%d] SendKeyCnt:%d KeyTestPressCnt:%d time: %dms\n", __FUNCTION__, __LINE__, SendKeyCnt, KeyTestPressCnt, time); cmdflag = 1; sf_set_module_update(1); diff --git a/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCfg.c b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCfg.c new file mode 100755 index 000000000..aac2db22e --- /dev/null +++ b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCfg.c @@ -0,0 +1,199 @@ +#include "kwrap/type.h" +#include "DrvExt.h" +#include "Dx.h" +#include "DxCommon.h" +#include "DxCfg.h" +#if defined(_MCU_ENABLE_) +#include "MCUCtrl.h" +#include "MCU2Ctrl.h" +#endif + +/////////////////////////////////////////////////////////////////////////////// +#define __MODULE__ DxDrv +#define __DBGLVL__ 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER +#define __DBGFLT__ "*" //*=All, [mark]=CustomClass +#include +/////////////////////////////////////////////////////////////////////////////// + +//IO +/* +[PinmuxCfg.c] +pinmux + +[GpioMapping.c] +cgpio x32 (Storage) +pgpio x64 (Peripheral) +sgpio x30 (SENSOR) +lgpio x28 (LCD) +dgpio x9 (Dedicated) +pwm x20 +pwm_ccnt x3 + +[VoltageDet.c] +adc x8 + +[SerialComm.c] +i2c x2 x2 +sif x1 x6 +csi x2 x4 +lvds x1 x10 +spi x3 +uart x2 +*/ + + +extern DX_OBJECT gDevLCD; +extern DX_OBJECT gDevPowerBATT; +extern DX_OBJECT gDevPowerDC; +extern DX_OBJECT gDevEmbMem0; +extern DX_OBJECT gDevEmbMem1; +extern DX_OBJECT gDevEmbMem2; +extern DX_OBJECT gDevEmbMem3; +extern DX_OBJECT gDevEmbMem4; +extern DX_OBJECT gDevEmbMem5; +extern DX_OBJECT gDevEmbMem6; +extern DX_OBJECT gDevEmbMem7; +extern DX_OBJECT gDevEmbMem8; +extern DX_OBJECT gDevCARD1; +extern DX_OBJECT gDevCARD3; +extern DX_OBJECT gDevUSB; +#if _TODO +extern DX_OBJECT gDevTV; +extern DX_OBJECT gDevLCD2; +extern DX_OBJECT gDevHDMI; +extern DX_OBJECT gDevSnd; +extern DX_OBJECT gDevLED; +#endif + + +DX_HANDLE Dx_GetObject(UINT32 DxClassType) // Query device object +{ + UINT32 hDevice = 0; + + switch (DxClassType & DX_CLASS_MASK) { + + //external device + case DX_CLASS_DISPLAY_EXT: + #if !defined(_Disp_VIRTUAL_LCD1_OFF_) + if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_LCD) { + hDevice = (UINT32)(&gDevLCD); + } + #endif + break; + case DX_CLASS_POWER_EXT: + #if defined(_POWER_BATT_) + hDevice = (UINT32)(&gDevPowerBATT); + #elif defined(_POWER_DC_) + hDevice = (UINT32)(&gDevPowerDC); + #else + hDevice = 0; + DBG_ERR("Require a POWER EXT device!\r\n"); + #endif + break; + case DX_CLASS_STORAGE_EXT: + #if (!defined(_EMBMEM_NONE_)) && (!defined(_EMBMEM_UITRON_OFF_)) + if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_EMBMEM0) { + hDevice = (UINT32)(&gDevEmbMem0); + } else if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_EMBMEM1) { + hDevice = (UINT32)(&gDevEmbMem1); + } else if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_EMBMEM2) { + hDevice = (UINT32)(&gDevEmbMem2); + } else if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_EMBMEM3) { + hDevice = (UINT32)(&gDevEmbMem3); + } else if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_EMBMEM4) { + hDevice = (UINT32)(&gDevEmbMem4); + } else if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_EMBMEM5) { + hDevice = (UINT32)(&gDevEmbMem5); + } else if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_EMBMEM6) { + hDevice = (UINT32)(&gDevEmbMem6); + } else if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_EMBMEM7) { + hDevice = (UINT32)(&gDevEmbMem7); + } else if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_EMBMEM8) { + hDevice = (UINT32)(&gDevEmbMem8); + } + #endif + #if !defined(_CARD1_NONE_) + if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_CARD1) { + hDevice = (UINT32)(&gDevCARD1); + } + #endif + #if !defined(_CARD3_NONE_) + if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_CARD3) { + hDevice = (UINT32)(&gDevCARD3); + } + #endif + break; + case DX_CLASS_USB_EXT: + hDevice = (UINT32)(&gDevUSB); + break; +#if _TODO + case DX_CLASS_AUDIO_EXT: + #if (defined(_AUDIO_ON_)) + hDevice = (UINT32)(&gDevSnd); + #endif + break; + case DX_CLASS_SENSOR_EXT: + break; + case DX_CLASS_INPUT_EXT: + break; + case DX_CLASS_STATUS_EXT: + if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_OUTLED) { +#if (defined(_MODEL_IPCAM1_EVB_) || defined(_MODEL_IPCAM2_EVB_)) +#elif (defined(_MODEL_DVCAM1_EVB_) || defined(_MODEL_DVCAM2_EVB_)) + hDevice = (UINT32)(&gDevLED); +#endif + } + break; +#endif + } + + if (hDevice == 0) { + DBG_ERR("[Dx] GetObject %08x failed\r\n", DxClassType); + } + return (DX_HANDLE)hDevice; +} + +UINT8 *Dx_GetModelExtCfg(MODELEXT_TYPE type, MODELEXT_HEADER **header) +{ +#if _TODO + UINT8 *p_modelext = NULL; +#if defined(_MODELEXT_BUILT_IN_ON_) +#define LABEL_NAME(_name_) _name_ + extern char LABEL_NAME(_section_modelext_info_addr)[]; + extern char LABEL_NAME(_section_modelext_info_size)[]; + static BOOL bInit = FALSE; + if (!bInit) { + MODELEXT_HEADER *header; + MODELEXT_INFO *pData; + pData = (MODELEXT_INFO *)modelext_get_cfg((unsigned char *)_section_modelext_info_addr, MODELEXT_TYPE_INFO, &header); + if (pData == NULL) { + DBG_FATAL("MODELEXT_INFO is null, call by = 0x%08X\r\n", __CALL__ - 8); + return NULL; + } + pData->ext_bin_length = (UINT32)_section_modelext_info_size; + bInit = TRUE; + } + UINT8 *p_modelext = (UINT8 *)modelext_get_cfg((unsigned char *)_section_modelext_info_addr, type, header); //_TODO: VOS need nvt_mem converting address +#else + UINT8 *p_modelext = (UINT8 *)modelext_get_cfg((unsigned char *)_BOARD_IPC_ADDR_, type, header); //_TODO: VOS need nvt_mem converting address +#endif + + if (p_modelext == NULL || *header == NULL) { + DBG_FATAL("MODELEXT_TYPE = %d is null\r\n", type); + return NULL; + } + + return p_modelext; +#else + return 0; +#endif +} + +void Install_DrvExt(void) +{ + #if defined(_MCU_ENABLE_) + MCUCtrl_InstallID(); + MCU2Ctrl_InstallID(); + #endif +} + diff --git a/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCfg.h b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCfg.h new file mode 100755 index 000000000..dd8b3c563 --- /dev/null +++ b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCfg.h @@ -0,0 +1,18 @@ +#ifndef _DXCFG_H +#define _DXCFG_H + +//#define _Disp_VIRTUAL_LCD1_OFF_ +//#define _AUDIO_ON_ +//#define _EMBMEM_NONE_ +//#define _EMBMEM_UITRON_OFF_ +//#define _CARD1_NONE_ +//#define _CARD3_NONE_ +#define _POWER_DC_ +//#define _POWER_BATT_ +//#define _MCU_ENABLE_ + +#define USB_CHARGE_FUNCTION DISABLE +#define TV_SWITCH_FUNCTION DISABLE +#define GPIO_DUMMYLOAD_FUNCTION DISABLE + +#endif diff --git a/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxDisplay_LCD.c b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxDisplay_LCD.c new file mode 100755 index 000000000..8429d53bf --- /dev/null +++ b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxDisplay_LCD.c @@ -0,0 +1,667 @@ +#include "kwrap/type.h" +#include "Dx.h" +#include "DxCommon.h" +#include "DxDisplay.h" +#include "IOCfg.h" +#include "hdal.h" +#include "vendor_videoout.h" +#include "GxVideo.h" +#include "Utility/SwTimer.h" +/////////////////////////////////////////////////////////////////////////////// +#define __MODULE__ DxDisp +#define __DBGLVL__ 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER +#define __DBGFLT__ "*" //*=All, [mark]=CustomClass +#include +/////////////////////////////////////////////////////////////////////////////// + +//EVB default is _Disp_IF8B_LCD1_PW35P00_HX8238D_ +#define LCD_MAX_W ALIGN_CEIL_16(240) //device w of DISP_LCDMODE_xxx, to support rotate, it must align to 16 +#define LCD_MAX_H ALIGN_CEIL_16(320) //device h of DISP_LCDMODE_xxx, to support rotate, it must align to 16 + +#define LCD_ASPECT_W 3 +#define LCD_ASPECT_H 4 + +#define DISP_DUAL DISABLE + +#if !defined(_Disp_VIRTUAL_LCD1_OFF_) + +#define LCDMODE 0 + +//Configure +#define CFG_IDE_DMA_HIGH DISABLE //Enable will cause IPE bandwith not enough + +// Local Variables +static UINT32 g_LCDDout = 0; //current dout +static UINT32 g_LCDMode = 0; //current mode +static UINT32 g_LCDLastMode = 0; //current mode +static UINT32 g_LCDEnable = FALSE; //not yet enable +static UINT32 g_LCDSleep = FALSE; +#define DRVLCD_BRT_LEVEL_MAX 10 +#define DRVLCD_BRT_LEVEL_INIT 5 +static BOOL g_LCDBacklightEn = FALSE; +static INT32 g_LCDBacklightLvl = DRVLCD_BRT_LEVEL_INIT; + +static UINT32 g_LCDDual = FALSE; + +// LCD control object +static BOOL g_bLCDWaitTurnOnFinish = FALSE; + +static UINT32 g_localMode = 0; //new mode +static USIZE *pCurrentSize = 0; //return size + +//public func +static UINT32 DrvLCDGetcaps(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +static UINT32 DrvLCDSetcfgs(UINT32 CfgID, UINT32 Param1); // Set Config Setting +static UINT32 DrvLCDInit(void *pInitParam); // Set Init Parameters +static UINT32 DrvLCDOpen(void); // Common Constructor +static UINT32 DrvLCDClose(void); // Common Destructor +static UINT32 DrvLCDState(UINT32 StateID, UINT32 Value); // General Properties +static UINT32 DrvLCDControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2); // General Methods +static UINT32 DrvLCDCommand(CHAR *pcCmdStr); //General Command Console + +//internal func +static void DrvLCD_TurnOn(void); +static void DrvLCD_TurnOn_WaitFinish(void); +static void DrvLCD_TurnOff(void); +static void DrvLCD_Dump(void); +static void DrvLCD_SleepEnter(void); +static void DrvLCD_SleepLeave(void); + +static void GPIOMap_TurnOnLCDBacklight(void); +static void GPIOMap_TurnOffLCDBacklight(void); +static void GPIOMap_SetLCDBacklightBrightLevel(INT32 uiLevel); +static void GPIOMap_AdjustLCDBacklight(UINT32 uiAdjValue); +static BOOL GPIOMap_IsLCDBacklightOn(void); +static void GPIOMap_DumpBacklight(void); + +static void GPIOMap_TurnOnLCDPower(void); +static void GPIOMap_TurnOffLCDPower(void); +static void GPIOMap_LCDReset(void); +//static BOOL GPIOMap_IsLCDPowerOn(void); + +//dx object +DX_OBJECT gDevLCD = { + DXFLAG_SIGN, + DX_CLASS_DISPLAY_EXT | DX_TYPE_LCD, + DISPLAY_VER, + "Display_LCD", + 0, 0, 0, 0, + DrvLCDGetcaps, + DrvLCDSetcfgs, + DrvLCDInit, + DrvLCDOpen, + DrvLCDClose, + DrvLCDState, + DrvLCDControl, + DrvLCDCommand, + 0, +}; + +static UINT32 DrvLCDGetcaps(UINT32 CapID, UINT32 Param1) // Get Capability Flag (Base on interface version) +{ + UINT32 v = 0; + switch (CapID & 0x0000ffff) { + case DISPLAY_CAPS_BASE: + v = DISPLAY_BF_BACKLIGHT; + break; + case DISPLAY_CAPS_DEFMODE: + v = LCDMODE; + break; +#if 0 + case DISPLAY_CAPS_MODEINFO: { +// int mode = (CapID & 0xffff0000) >> 16; + ISIZE *pModeInfo = (ISIZE *)Param1; + #if 0 + _DrvLCDHookDout(g_LCDDout); + pDev->SEL.SET_LCDMODE.Mode = mode; + pObj->devCtrl(DISPDEV_SET_LCDMODE, pDev); + pDev->SEL.GET_PREDISPSIZE.DevID = DISPDEV_ID_PANEL; + pObj->devCtrl(DISPDEV_GET_PREDISPSIZE, pDev); + if (pModeInfo) { + pModeInfo->w = pDev->SEL.GET_PREDISPSIZE.uiBufWidth; + pModeInfo->h = pDev->SEL.GET_PREDISPSIZE.uiBufHeight; + } + #else + pModeInfo->w = 960; + pModeInfo->w = 240; + DBG_ERR("need porting\r\n"); + #endif + } + break; +#endif + case DISPLAY_CAPS_MAXSIZE: { + ISIZE *pSizeInfo = (ISIZE *)Param1; + if (pSizeInfo) { + pSizeInfo->w = LCD_MAX_W; + pSizeInfo->h = LCD_MAX_H; + } + } + break; + case DISPLAY_CAPS_ASPECT: { + ISIZE *pAspectInfo = (ISIZE *)Param1; + if (pAspectInfo) { + pAspectInfo->w = LCD_ASPECT_W; + pAspectInfo->h = LCD_ASPECT_H; + } + } + break; + default: + break; + } + return v; +} + +static UINT32 DrvLCDSetcfgs(UINT32 CfgID, UINT32 Param1) // Set Config Setting +{ + switch (CfgID) { + case DISPLAY_CFG_MODE: + DBG_IND("set mode %08x\r\n", Param1); + g_LCDLastMode = Param1; + break; + case DISPLAY_CFG_DOUT: + g_LCDDout = Param1; + break; + case DISPLAY_CFG_DUAL: + g_LCDDual = Param1; + break; + case DISPLAY_CFG_INFOBUF: + pCurrentSize = (USIZE *)Param1; + break; + default: + break; + } + return DX_OK; +} + +static UINT32 DrvLCDInit(void *pInitParam) // Set Init Parameters +{ + DBG_FUNC_BEGIN("\r\n"); + + g_LCDLastMode = DrvLCDGetcaps(DISPLAY_CAPS_DEFMODE, 0); + + return DX_OK; +} + +static UINT32 DrvLCDOpen(void) // Common Constructor +{ + DBG_FUNC_BEGIN("\r\n"); + + + DBG_IND("LCD dout by IDE%d\r\n", g_LCDDout + 1); + + GPIOMap_TurnOnLCDPower(); + GPIOMap_LCDReset(); + + g_localMode = g_LCDLastMode; + DBG_IND("open mode %08x\r\n", g_localMode); + DrvLCD_TurnOn(); + + g_LCDEnable = TRUE; + + return DX_OK; +} + +static UINT32 DrvLCDClose(void) // Common Destructor +{ + DBG_FUNC_BEGIN("\r\n"); + + DrvLCD_TurnOff(); + + // Panel enter sleep mode + GPIOMap_TurnOffLCDPower(); + + g_LCDLastMode = g_LCDMode; + g_LCDMode = 0; + g_LCDEnable = FALSE; + + return DX_OK; +} + +static void DrvLCD_TurnOn(void) +{ + DBG_FUNC_BEGIN("\r\n"); + + g_LCDMode = g_localMode; +} + +static void DrvLCD_TurnOn_WaitFinish(void) +{ + DBG_FUNC_BEGIN("\r\n"); + + g_LCDEnable = TRUE; +} + + +static void DrvLCD_TurnOff(void) +{ + DBG_FUNC_BEGIN("\r\n"); + + //NOTE: VERY VERY VERY VERY VERY IMPORTANT!!!!! + //上層è¦ç¢ºä¿SleepEnter()è·ŸTurnOff()䏿œƒé‡è¤‡ç™¼ç”Ÿ!!! + //if DrvLCD_SleepEnter() is called ClosePanel, then here DrvLCD_TurnOff() also call ClosePanel again, + //=> it will cause sif_close() is call twice by LCD driver internal, + //=> then ALL sif_send() command of other devices will become abnormally!!! + //=> å¯èƒ½ç¾è±¡1: 造æˆCCD無法wakeup (TG會用到sif) + //=> å¯èƒ½ç¾è±¡2: 造æˆCCDæ‹å‡ºå£žç…§ç‰‡ (TG會用到sif) +#if 0 + //LCD panel close + pObj->devCtrl(DISPDEV_CLOSE_DEVICE, NULL); +#endif + // Turn off LCD power + g_LCDEnable = FALSE; +} + +static void DrvLCD_SleepEnter(void) +{ + HD_RESULT ret =0 ; + HD_PATH_ID video_out_path = GxVideo_GetDeviceCtrl(DOUT1,DISPLAY_DEVCTRL_PATH); + + // LCD backlight + GPIOMap_TurnOffLCDBacklight(); + hd_videoout_stop(video_out_path); + ret = vendor_videoout_set(VENDOR_VIDEOOUT_ID0,VENDOR_VIDEOOUT_ITEM_ENTER_SLEEP,NULL); + if(ret!=HD_OK){ + DBG_ERR("ret %d\r\n", ret); + } + GPIOMap_LCDReset(); + + g_LCDSleep = TRUE; +} + +static void DrvLCD_SleepLeave(void) +{ + HD_RESULT ret =0 ; + HD_PATH_ID video_out_path = GxVideo_GetDeviceCtrl(DOUT1,DISPLAY_DEVCTRL_PATH); + HD_PATH_ID video_out_ctrl = GxVideo_GetDeviceCtrl(DOUT1,DISPLAY_DEVCTRL_CTRLPATH); + HD_FB_ENABLE video_out_enable={0}; + ret = vendor_videoout_set(VENDOR_VIDEOOUT_ID0,VENDOR_VIDEOOUT_ITEM_EXIT_SLEEP,NULL); + if(ret!=HD_OK){ + DBG_ERR("wake %d\r\n"); + } + hd_videoout_start(video_out_path); + video_out_enable.fb_id = HD_FB0; + video_out_enable.enable = 1; + ret = hd_videoout_set(video_out_ctrl, HD_VIDEOOUT_PARAM_FB_ENABLE, &video_out_enable); + if(ret!=HD_OK){ + DBG_ERR("fb enable %d\r\n", ret); + } + // LCD backlight + GPIOMap_TurnOnLCDBacklight(); + + g_LCDSleep = FALSE; +} + + +static UINT32 DrvLCDState(UINT32 StateID, UINT32 Value) // General Properties +{ + DBG_FUNC_BEGIN("\r\n"); + + if (StateID & DXGET) { + UINT32 rvalue = 0; + StateID &= ~DXGET; + DBG_IND("get %08x\r\n", StateID); + switch (StateID) { + case DRVDISP_STATE_ENBALE: + //lost device? ---> cannot determine enable or not + //under flow like: enable/disable + rvalue = g_LCDEnable; + break; + case DRVDISP_STATE_MODE: + //lost device? ---> cannot determine mode + //under flow like: change mode + rvalue = g_LCDMode; + break; + case DRVDISP_STATE_LASTMODE: + rvalue = g_LCDLastMode; + break; + case DRVDISP_STATE_SLEEP: + rvalue = g_LCDSleep; + break; + case DRVDISP_STATE_BACKLIGHT: + rvalue = GPIOMap_IsLCDBacklightOn() ? DRVDISP_BACKLIGHT_ON : DRVDISP_BACKLIGHT_OFF; + break; + case DRVDISP_STATE_BRIGHTLVL: + rvalue = g_LCDBacklightLvl; + break; + default: + DBG_WRN("get state=0x%02X not support!\r\n", StateID); + break; + } + return rvalue; + } else if (StateID & DXSET) { + StateID &= ~DXSET; + DBG_IND("set %08x\r\n", StateID); + switch (StateID) { + case DRVDISP_STATE_BACKLIGHT: + if (Value == DRVDISP_BACKLIGHT_OFF) { + DBG_IND("DRVDISP_BACKLIGHT_OFF\r\n"); + GPIOMap_TurnOffLCDBacklight(); + } else { //if(value == DRVDISP_BACKLIGHT_ON) + DBG_IND("DRVDISP_BACKLIGHT_ON\r\n"); + GPIOMap_TurnOnLCDBacklight(); + } + break; + case DRVDISP_STATE_BRIGHTLVL: { + DBG_IND("DRVDISP_BRIGHTLVL=%d\r\n", Value); + GPIOMap_SetLCDBacklightBrightLevel((INT32)Value); + } + break; + case DRVDISP_STATE_DIRECT: + #if 0 //set direct by LCD driver! + if(pObj) { + ////////////////////////////////////////////////////////////////////// + // special operation for this project! + // + //if (Value == (0x01 | 0x02)) { + // pDev->SEL.SET_ROTATE.Rot = DISPDEV_LCD_ROTATE_180; + //} else { + // pDev->SEL.SET_ROTATE.Rot = DISPDEV_LCD_ROTATE_NONE; + //} + //pObj->devCtrl(DISPDEV_SET_ROTATE,pDev); + ////////////////////////////////////////////////////////////////////// + } + #endif + #if 0 //set direct by IDE! + //NOTE: project must set GxDisplay OSD1 layer's uiWinAttr = MIRROR_KEEP; + //NOTE: project must set VdoOut VDO1 layer's desc.degree = VDODISP_ROTATE_NO_HANDLE; + if(pObj) { + DISPLAYER_PARAM LyrParam; + memset(&LyrParam, 0, sizeof(DISPLAYER_PARAM)); + if (Value == (0x01 | 0x02)) { + LyrParam.SEL.SET_OUTDIR.BufOutDir = DISPOUTDIR_ROT_180; + } else { + LyrParam.SEL.SET_OUTDIR.BufOutDir = DISPOUTDIR_NORMAL; + } + pObj->dispLyrCtrl(DISPLAYER_OSD1, DISPLAYER_OP_SET_OUTDIR, &LyrParam); //it will call disp_translateBufAddress + pObj->dispLyrCtrl(DISPLAYER_OSD2, DISPLAYER_OP_SET_OUTDIR, &LyrParam); //it will call disp_translateBufAddress + pObj->dispLyrCtrl(DISPLAYER_VDO1, DISPLAYER_OP_SET_OUTDIR, &LyrParam); //it will call disp_translateBufAddress + pObj->dispLyrCtrl(DISPLAYER_VDO2, DISPLAYER_OP_SET_OUTDIR, &LyrParam); //it will call disp_translateBufAddress + pObj->load(TRUE); + } + #endif + break; + + default: + DBG_WRN("set state=0x%02X not support!\r\n", StateID); + break; + } + } + return DX_OK; +} + +static UINT32 DrvLCDControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2) // General Methods +{ + DBG_FUNC_BEGIN("\r\n"); + DBG_IND("ctrl %08x\r\n", CtrlID); + + switch (CtrlID) { + case DRVDISP_CTRL_MODE: { + //DrvLCD_TurnOff(); + g_localMode = Param1; + //DrvLCD_TurnOn(); + //g_bLCDWaitTurnOnFinish = TRUE; + } + break; + case DRVDISP_CTRL_SLEEP: + if (Param1 == TRUE) { + DBG_IND("DRVDISP_CTRL_SLEEP 1\r\n"); + DrvLCD_SleepEnter(); + } else if (Param1 == FALSE) { + DBG_IND("DRVDISP_CTRL_SLEEP 0\r\n"); + DrvLCD_SleepLeave(); + } + break; + case DRVDISP_CTRL_WAITFINISH: + if (g_bLCDWaitTurnOnFinish == TRUE) { + DrvLCD_TurnOn_WaitFinish(); + g_bLCDWaitTurnOnFinish = FALSE; + } + break; + + default: + DBG_WRN("ctrl id=0x%02X not support!\r\n", CtrlID); + break; + } + return DX_OK; +} + +static UINT32 DrvLCDCommand(CHAR *pcCmdStr) //General Command Console +{ + switch (*pcCmdStr) { + case 'd': + if (!strncmp(pcCmdStr, "disp lcd dump", 13)) { + DrvLCD_Dump(); + return TRUE; + } + break; + } + return FALSE; +} + +static void DrvLCD_Dump(void) +{ + GPIOMap_DumpBacklight(); +} + + +//////////////////////////////////////////////////////////////////////////////// +// GPIO related +static void GPIOMap_LCDReset(void) +{ + FILE *fp = NULL; + UINT32 u32LogoEnable = 0; + UINT32 u32Size = 0; + char *pStrSrc = NULL; + + fp = fopen("/sys/firmware/devicetree/base/logo/enable", "r"); + if(fp != NULL){ + fseek(fp, 0, SEEK_END); + u32Size = ftell(fp); + fseek(fp, 0, SEEK_SET); + pStrSrc = (char *) malloc(u32Size * sizeof(char)); + + if(pStrSrc){ + fread(pStrSrc, 1, u32Size, fp); + u32LogoEnable = ((UINT32) pStrSrc[0] << 24) + ((UINT32) pStrSrc[1] << 16) + ((UINT32) pStrSrc[2] << 8) + ((UINT32) pStrSrc[3]); + free(pStrSrc); + DBG_IND("u32LogoEnable = 0x%X\n", u32LogoEnable); + } + + fclose(fp); + pStrSrc = NULL; + u32Size = 0; + } + + if(u32LogoEnable == 1){ + return; + } + + // Reset LCD + gpio_setDir(GPIO_LCD_RESET, GPIO_DIR_OUTPUT); + gpio_setPin(GPIO_LCD_RESET); + SwTimer_DelayMs(10); + gpio_clearPin(GPIO_LCD_RESET); + SwTimer_DelayMs(10); + gpio_setPin(GPIO_LCD_RESET); +} + +/** + Turn on LCD power + + Turn on LCD power. + + @param void + @return void +*/ +static void GPIOMap_TurnOnLCDPower(void) +{ +} + +/** + Turn off LCD power + + Turn off LCD power. + + @param void + @return void +*/ +static void GPIOMap_TurnOffLCDPower(void) +{ + +} + +/** + Check whether LCD power is on or not + + Check whether LCD power is on or not. + Return TRUE if LCD power is on, return FALSE if LCD power is off. + + @param void + @return BOOL +*/ +//static BOOL GPIOMap_IsLCDPowerOn(void) +//{ +// return TRUE; +//} + +//////////////////////////////////////////////////////////////////////// + +//#NT#2009/12/15#Lincy Lin -begin +#if (LCD_BACKLIGHT_CTRL == LCD_BACKLIGHT_BY_PWM) +static PWM_CFG g_LCDBacklightPWMInfo = {1, 60, 0, 60, 0, 0}; +static UINT32 g_LCDBacklightLvlPWMDuty[DRVLCD_BRT_LEVEL_MAX] = { + 59,//48,// level 0 + 44,// level 1 + 35,// level 2 + 28,// level 3 + 25,// level 4 + 22,// level 5 + 20,// level 6 + 18,// level 7 + 17,// level 8 + 5, //10 // level 9 +}; +#endif + + +/** + Turn on LCD backlight + + Turn on LCD backlight. + + @param void + @return void +*/ +static void GPIOMap_TurnOnLCDBacklight(void) +{ + DBG_IND("GPIOMap_TurnOnLCDBacklight: Adjust value %d\r\n", g_LCDBacklightLvl); + + if (g_LCDBacklightEn == FALSE) { +#if (LCD_BACKLIGHT_CTRL == LCD_BACKLIGHT_BY_PWM) + g_LCDBacklightPWMInfo.uiRise = g_LCDBacklightLvlPWMDuty[g_LCDBacklightLvl]; + DBG_IND("PWM: rise=%d\r\n", g_LCDBacklightPWMInfo.uiRise); + pwm_open(PWMID_LCD_BLG_PCTL); + pwm_pwmConfig(PWMID_LCD_BLG_PCTL, &g_LCDBacklightPWMInfo); + pwm_pwmEnable(PWMID_LCD_BLG_PCTL); +#elif (LCD_BACKLIGHT_CTRL == LCD_BACKLIGHT_BY_GPIO) + gpio_setPin(GPIO_LCD_BLG_PCTL); +#else + DrvLCD_TurnOn(); + DrvLCD_TurnOn_WaitFinish(); +#endif + g_LCDBacklightEn = TRUE; + } +} + +static void GPIOMap_SetLCDBacklightBrightLevel(INT32 uiLevel) +{ + g_LCDBacklightLvl = uiLevel; + if (g_LCDBacklightLvl < 0) { + DBG_WRN("DrvLCDSetCtrl Warning! brightlvl=0x%02X out of range\r\n", g_LCDBacklightLvl); + g_LCDBacklightLvl = 0; + } + if (g_LCDBacklightLvl >= DRVLCD_BRT_LEVEL_MAX) { + DBG_WRN("DrvLCDSetCtrl Warning! brightlvl=0x%02X out of range\r\n", g_LCDBacklightLvl); + g_LCDBacklightLvl = DRVLCD_BRT_LEVEL_MAX - 1; + } + + if (!g_LCDBacklightEn) { + return; + } + + GPIOMap_AdjustLCDBacklight(g_LCDBacklightLvl); +} + +/** + Turn off LCD backlight + + Turn off LCD backlight. + + @param void + @return void +*/ +static void GPIOMap_TurnOffLCDBacklight(void) +{ + DBG_IND("GPIOMap_TurnOffLCDBacklight: Adjust value %d\r\n", g_LCDBacklightLvl); + + if (g_LCDBacklightEn == TRUE) { +#if (LCD_BACKLIGHT_CTRL == LCD_BACKLIGHT_BY_PWM) + pwm_pwmDisable(PWMID_LCD_BLG_PCTL); + pwm_close(PWMID_BLG_PCTL, TRUE); +#elif (LCD_BACKLIGHT_CTRL == LCD_BACKLIGHT_BY_GPIO) + gpio_clearPin(GPIO_LCD_BLG_PCTL); +#else + DrvLCD_TurnOff(); +#endif + g_LCDBacklightEn = FALSE; + } +} + +/** + Adjust LCD backlight level + + Adjust LCD backlight level. + + @param UINT32 uiAdjValue + @return void +*/ +static void GPIOMap_AdjustLCDBacklight(UINT32 uiAdjValue) +{ + DBG_IND("GPIOMap_AdjustLCDBacklight: Adjust value %d\r\n", uiAdjValue); + + /* Re-start PWM */ + if (g_LCDBacklightEn) { +#if (LCD_BACKLIGHT_CTRL == LCD_BACKLIGHT_BY_PWM) + g_LCDBacklightPWMInfo.uiRise = g_LCDBacklightLvlPWMDuty[g_LCDBacklightLvl]; + DBG_IND("PWM: rise=%d\r\n", g_LCDBacklightPWMInfo.uiRise); + pwm_pwmDisable(PWMID_LCD_BLG_PCTL); + pwm_pwmConfig(PWMID_LCD_BLG_PCTL, &g_LCDBacklightPWMInfo); + pwm_pwmEnable(PWMID_LCD_BLG_PCTL); +#endif + } +} + +/** + Check whether LCD backlight is on or not + + Check whether LCD backlight is on or not. + Return TRUE if LCD backlight is on, return FALSE if LCD backlight is off. + + @param void + @return BOOL +*/ +static BOOL GPIOMap_IsLCDBacklightOn(void) +{ + return g_LCDBacklightEn; +} + +static void GPIOMap_DumpBacklight(void) +{ +#if (LCD_BACKLIGHT_CTRL == LCD_BACKLIGHT_BY_PWM) + DBG_DUMP("BACKLIGHT clk :\t\t%d MHz\r\n", 48 / (g_LCDBacklightPWMInfo.uiDiv + 1)); + DBG_DUMP("BACKLIGHT Duty :\t%d %\r\n", (g_LCDBacklightPWMInfo.uiFall - g_LCDBacklightPWMInfo.uiRise) * 100 / g_LCDBacklightPWMInfo.uiPrd); +#endif +} + +#endif + diff --git a/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxInput_Key.c b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxInput_Key.c new file mode 100755 index 000000000..79f8645fe --- /dev/null +++ b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxInput_Key.c @@ -0,0 +1,261 @@ +/** + Copyright Novatek Microelectronics Corp. 2009. All rights reserved. + + @file DetKey.c + @ingroup mIPRJAPKeyIO + + @brief Scan key, modedial + Scan key, modedial + + @note Nothing. + + @date 2017/05/02 +*/ + +/** \addtogroup mIPRJAPKeyIO */ +//@{ + +#include "DxCfg.h" +#include "IOCfg.h" +#include "DxInput.h" +#include "KeyDef.h" +#include "comm/hwclock.h" +#include "comm/hwpower.h" +#if 0 +#include "rtc.h" +#include "Delay.h" +#endif +/////////////////////////////////////////////////////////////////////////////// +#define __MODULE__ DxKey +#define __DBGLVL__ 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER +#define __DBGFLT__ "*" //*=All, [mark]=CustomClass +#include +/////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +// ADC related +//////////////////////////////////////////////////////////////////////////////// +#if (ADC_KEY == ENABLE) +#define VOLDET_KEY_ADC_LVL1 (251) +#define VOLDET_KEY_ADC_LVL2 (155) +#define VOLDET_KEY_ADC_LVL3 (51) +#define VOLDET_KEY_ADC_TH (460) +#define VOLDET_KEY_ADC_LVL4 (358) + +#define VOLDET_KEY_LVL_UNKNOWN 0xFFFFFFFF +#define VOLDET_KEY_LVL_0 0 +#define VOLDET_KEY_LVL_1 1 +#define VOLDET_KEY_LVL_2 2 +#define VOLDET_KEY_LVL_3 3 +#define VOLDET_KEY_LVL_4 4 +#define VOLDET_KEY_LVL_5 5 +#endif +#if (ADC_KEY == ENABLE) +static UINT32 VolDet_GetKey1ADC(void) +{ +#if (VOLDET_ADC_CONT_MODE == DISABLE) + UINT32 uiADCValue; + + uiADCValue = adc_readData(ADC_CH_VOLDET_KEY1); + // One-Shot Mode, trigger one-shot + adc_triggerOneShot(ADC_CH_VOLDET_KEY1); + + return uiADCValue; +#else + return adc_readData(ADC_CH_VOLDET_KEY1); +#endif +} +/** + Get ADC key voltage level + + Get ADC key 2 voltage level. + + @param void + @return UINT32 key level, refer to VoltageDet.h -> VOLDET_MS_LVL_XXXX +*/ +static UINT32 VolDet_GetKey1Level(void) +{ + static UINT32 uiRetKey1Lvl; + UINT32 uiKey1ADC, uiCurKey2Lvl; + + uiKey1ADC = VolDet_GetKey1ADC(); + DBG_IND("uiKey1ADC %d \r\n", uiKey1ADC); + if (uiKey1ADC < VOLDET_KEY_ADC_TH) { + if (uiKey1ADC < VOLDET_KEY_ADC_LVL3) { + uiCurKey2Lvl = VOLDET_KEY_LVL_4; + } else if (uiKey1ADC < VOLDET_KEY_ADC_LVL2) { + uiCurKey2Lvl = VOLDET_KEY_LVL_3; + } else if (uiKey1ADC < VOLDET_KEY_ADC_LVL1) { + uiCurKey2Lvl = VOLDET_KEY_LVL_2; + } else if (uiKey1ADC < VOLDET_KEY_ADC_LVL4) { + uiCurKey2Lvl = VOLDET_KEY_LVL_1; + } else { + uiCurKey2Lvl = VOLDET_KEY_LVL_0; + } + } else { + uiCurKey2Lvl = VOLDET_KEY_LVL_UNKNOWN; + } + + uiRetKey1Lvl = uiCurKey2Lvl; + + return uiRetKey1Lvl; +} + +/** + Detect Mode Switch state. + + Detect Mode Switch state. + + @param void + @return UINT32 Mode Switch state (DSC Mode) +*/ +#endif + +//////////////////////////////////////////////////////////////////////////////// +// GPIO related + +//static BOOL g_bIsShutter2Pressed = FALSE; + +/** + Delay between toggle GPIO pin of input/output + + Delay between toggle GPIO pin of input/output + + @param void + @return void +*/ +static void DrvKey_DetKeyDelay(void) +{ + gpio_readData(0); + gpio_readData(0); + gpio_readData(0); + gpio_readData(0); +} + +void DrvKey_Init(void) +{ +} +/** + Detect normal key is pressed or not. + + Detect normal key is pressed or not. + Return key pressed status (refer to KeyDef.h) + + @param void + @return UINT32 +*/ +UINT32 DrvKey_DetNormalKey(void) +{ + UINT32 uiKeyCode = 0; + +#if (ADC_KEY == ENABLE) + UINT32 uiKey1Lvl = VolDet_GetKey1Level(); + switch (uiKey1Lvl) { + case VOLDET_KEY_LVL_UNKNOWN: + default: + break; + case VOLDET_KEY_LVL_0: + uiKeyCode |= FLGKEY_RIGHT; + break; + case VOLDET_KEY_LVL_1: + uiKeyCode |= FLGKEY_DOWN; + break; + case VOLDET_KEY_LVL_2: + uiKeyCode |= FLGKEY_SHUTTER2; + break; + case VOLDET_KEY_LVL_3: + uiKeyCode |= FLGKEY_UP; + break; + case VOLDET_KEY_LVL_4: + uiKeyCode |= FLGKEY_ENTER; + break; + } +#endif + + +#if (GPIO_KEY == ENABLE) + if (!gpio_getPin(GPIO_KEY_SHUTTER2)) { + uiKeyCode |= FLGKEY_SHUTTER2; + } + if (!gpio_getPin(GPIO_KEY_UP)) { + uiKeyCode |= FLGKEY_UP; + } + if (!gpio_getPin(GPIO_KEY_DOWN)) { + uiKeyCode |= FLGKEY_DOWN; + } + if (!gpio_getPin(GPIO_KEY_MENU)) { + uiKeyCode |= FLGKEY_MENU; + } +// if (!gpio_getPin(GPIO_KEY_PLAYBACK)) { +// uiKeyCode |= FLGKEY_MENU; +// } + if (!gpio_getPin(GPIO_KEY_RIGHT)) { + uiKeyCode |= FLGKEY_RIGHT; + } + if (!gpio_getPin(GPIO_KEY_LEFT)) { + uiKeyCode |= FLGKEY_LEFT; + } + if (gpio_getPin(GPIO_KEY_DATAREADY)) { + uiKeyCode |= FLGKEY_DATAREADY; + } +#endif + /* + //detect if power-on by press playback key + if (!hwpower_get_power_key(POWER_ID_PSW2)) + { + uiKeyCode |= FLGKEY_PLAYBACK; + } + */ + DBG_IND("KEY= %08x\r\n", uiKeyCode); +// DBG_DUMP("KEY= %d\r\n", gpio_getPin(GPIO_KEY_LEFT)); + + DrvKey_DetKeyDelay(); + return uiKeyCode; +} +/** + Detect power key is pressed or not. + + Detect power key is pressed or not. + Return key pressed status (refer to KeyDef.h) + + @param void + @return UINT32 +*/ +UINT32 DrvKey_DetPowerKey(void) +{ + UINT32 uiKeyCode = 0; + return uiKeyCode; + if (hwpower_get_power_key(POWER_ID_PSW1)) { + uiKeyCode = FLGKEY_KEY_POWER; + // Reset shutdown timer + hwpower_set_power_key(POWER_ID_PSW1, 0xf0); + + } + + return uiKeyCode; +} +UINT32 DrvKey_DetStatusKey(DX_STATUS_KEY_GROUP KeyGroup) +{ + UINT32 uiReturn = STATUS_KEY_LVL_UNKNOWN; + switch (KeyGroup) { + case DX_STATUS_KEY_GROUP1: + break; + + case DX_STATUS_KEY_GROUP2: + break; + + case DX_STATUS_KEY_GROUP3: + break; + + case DX_STATUS_KEY_GROUP4: + break; + + case DX_STATUS_KEY_GROUP5: + break; + + default: + DBG_ERR("[StatusKey]no this attribute"); + break; + } + return uiReturn; +} diff --git a/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxPower_Battery.c b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxPower_Battery.c new file mode 100755 index 000000000..17559700d --- /dev/null +++ b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxPower_Battery.c @@ -0,0 +1,725 @@ +#include "DxCfg.h" +#include "IOCfg.h" +#include "DxPower.h" +//#include "DxFlash.h" +#include "DxCommon.h" +//#include "DxApi.h" +#include "Dx.h" +#include +#include +#include +#include +#if defined(_MCU_ENABLE_) +#include "MCUCtrl.h" +#endif + +#define THIS_DBGLVL 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER +/////////////////////////////////////////////////////////////////////////////// +#define __MODULE__ DxPwr +#define __DBGLVL__ THIS_DBGLVL +#define __DBGFLT__ "*" //*=All, [mark]=CustomClass +#include + +#if defined(_POWER_BATT_) + +#define TEMPDET_FUNCTION DISABLE +#define TEMPDET_TEST DISABLE +#define ADC_TEST ENABLE +#define DUMMY_LOAD 0 +#define BATT_SLIDE_WINDOW_COUNT 8 + +#define VOLDET_BATTERY_420V 782 +#define VOLDET_BATTERY_415V 772 +#define VOLDET_BATTERY_410V 763 +#define VOLDET_BATTERY_405V 754 +#define VOLDET_BATTERY_400V 744 +#define VOLDET_BATTERY_390V 726 +#define VOLDET_BATTERY_380V 707 +#define VOLDET_BATTERY_378V 703 +#define VOLDET_BATTERY_377V 701 +#define VOLDET_BATTERY_376V 699 +#define VOLDET_BATTERY_375V 698 +#define VOLDET_BATTERY_374V 696 +#define VOLDET_BATTERY_373V 694 +#define VOLDET_BATTERY_372V 692 +#define VOLDET_BATTERY_371V 690 +#define VOLDET_BATTERY_370V 688 +#define VOLDET_BATTERY_369V 687 +#define VOLDET_BATTERY_367V 683 +#define VOLDET_BATTERY_366V 681 +#define VOLDET_BATTERY_360V 670 +#define VOLDET_BATTERY_355V 660 +#define VOLDET_BATTERY_350V 651 +#define VOLDET_BATTERY_340V 633 +#define VOLDET_BATTERY_004V 7 +#define CHARGE_ADC_OFFSET 25 +#define LENS_ADC_OFFSET 23 +#define LENS_ADC_OFFSET2 12 + + + +DummyLoadType dummyLoadData[11]; + +//*********************************************** +//* +//* Battery Rule depend on Model +//* +//*********************************************** + +//#define VOLDET_BATTERY_ADC_TH 0 + +#if TEMPDET_TEST +INT32 temperature_value = 0; +#endif + + +static INT32 gTempValue = 25; +#if ADC_TEST +UINT32 gAdcValue = 3000; +#endif +#if defined(_MCU_ENABLE_) +UINT32 gMCUValue = 99; +#endif + +//------------------ Battery Status Level -------------------// +#define BATT_LEVEL_COUNT 4 + +static UINT32 LiBattAdcLevelValue[BATT_LEVEL_COUNT] = { + VOLDET_BATTERY_355V, + VOLDET_BATTERY_371V, + VOLDET_BATTERY_376V, + VOLDET_BATTERY_380V, +}; + + + +#define DUMMY_LOAD_OFFSETV VOLDET_BATTERY_004V +#define LENS_MOVE_MAX_COUNT 10 + +static UINT32 *pBattAdcLevelValue = &LiBattAdcLevelValue[0];; +static UINT32 uiBattADCSlideWin[BATT_SLIDE_WINDOW_COUNT] = {0}; +static UINT8 uiBattSlideIdx = 0; +static UINT8 uiCurSlideWinCnt = 0; +static INT32 iBattAdcCalOffset = 0; +#if USB_CHARGE_FUNCTION +static UINT32 u32BattChargeCurrent = BATTERY_CHARGE_CURRENT_LOW; +#endif +#if DUMMY_LOAD +static void DrvPower_dummy_process(UINT32 *V1, UINT32 *V2, BOOL bIris); +#endif +static INT32 DrvPower_GetTempCompentation(INT32 tempValue); + +static UINT32 bDummyLoadPwrOff = FALSE; + +//static DX_CALLBACK_PTR g_fpDxPowerCB = NULL; +/** + Get battery voltage ADC value + + Get battery voltage ADC value + + @param void + @return UINT32 ADC value +*/ + + +static UINT32 DrvPowerGetcaps(UINT32 CapID, UINT32 Param1); +static UINT32 DrvPowercfgs(UINT32 CfgID, UINT32 Param1); +static UINT32 DrvPowerInit(void *pInitParam); +static UINT32 DrvPowerOpen(void); +static UINT32 DrvPowerClose(void); +static UINT32 DrvPowerState(UINT32 StateID, UINT32 Value); +static UINT32 DrvPowerControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2); +static UINT32 DrvPowerCommand(CHAR *pcCmdStr); +static UINT32 DrvPower_GetControl(DRVPWR_CTRL DrvPwrCtrl); +static void DrvPower_SetControl(DRVPWR_CTRL DrvPwrCtrl, UINT32 value); +#if USB_CHARGE_FUNCTION +static INT32 DrvPower_BattTempGet(void); +#endif +static void DrvPower_PowerOnInit(void); +DX_OBJECT gDevPowerBATT = { + DXFLAG_SIGN, + DX_CLASS_POWER_EXT, + POWER_VER, + "Power", + 0, 0, 0, 0, + DrvPowerGetcaps, + DrvPowercfgs, + DrvPowerInit, + DrvPowerOpen, + DrvPowerClose, + DrvPowerState, + DrvPowerControl, + DrvPowerCommand, + 0, +}; + + + + +static UINT32 DrvPower_GetBatteryADC(void) +{ + + UINT32 uiADCValue; + INT32 TempCompentationADC; + +#if ADC_TEST + uiADCValue = gAdcValue; +#else + #if defined(_MCU_ENABLE_) + MCUCtrl_SendCmd(UART_CMD_VBAT_DETECT,0,0,0); + uiADCValue = gMCUValue; + return uiADCValue; + #else + uiADCValue = (adc_readData(ADC_CH_VOLDET_BATTERY)); + #endif +#endif + { + TempCompentationADC = DrvPower_GetTempCompentation(gTempValue); + DBG_MSG("Temp= %d\r\n", gTempValue); +#if 0 //charlie need wait DrvFlash_IsCharge finish + if (DrvFlash_IsCharge()) { + //DBG_MSG("ADC = %d,",uiADCValue); + uiADCValue += (CHARGE_ADC_OFFSET + TempCompentationADC); + DBG_MSG("Charge ADC+= %d\r\n", CHARGE_ADC_OFFSET + TempCompentationADC); + } else { + if (gDevPower.pfCallback) { + + gDevPower.pfCallback(DRVPWR_CB_IS_LENS_MOVING, 0, 0); + DBG_MSG("ADC = %d,", uiADCValue); + uiADCValue += (LENS_ADC_OFFSET + TempCompentationADC); + DBG_MSG("lens2 ADC+= %d\r\n", LENS_ADC_OFFSET + TempCompentationADC); + + + + } + } +#else + if (gDevPowerBATT.pfCallback) { + + gDevPowerBATT.pfCallback(DRVPWR_CB_IS_LENS_MOVING, 0, 0); + DBG_MSG("ADC = %d,", uiADCValue); + uiADCValue += (LENS_ADC_OFFSET + TempCompentationADC); + DBG_MSG("lens2 ADC+= %d\r\n", LENS_ADC_OFFSET + TempCompentationADC); + + + + } +#endif + uiADCValue += (iBattAdcCalOffset / 2); + return 782;//uiADCValue; + } + +} +//#NT#2009/09/02#Lincy Lin -begin +//#Add function for check battery overheat +/** + Get battery + + Get battery Temperature ADC value + + @param void + @return UINT32 ADC value +*/ +static BOOL DrvPower_IsBattOverHeat(void) +{ + return FALSE; +} +//#NT#2009/09/02#Lincy Lin -end + + + + +/** + Get battery voltage level + + Get battery voltage level. + If battery voltage level is DRVPWR_BATTERY_LVL_EMPTY, it means + that you have to power off the system. + + @param void + @return UINT32 Battery Level, refer to VoltageDet.h -> VOLDET_BATTERY_LVL_XXXX +*/ + +static UINT32 DrvPower_GetBatteryLevel(void) +{ + static UINT32 uiPreBatteryLvl = DRVPWR_BATTERY_LVL_UNKNOWN; + //static UINT32 uiPreBatteryADC = 0; + static UINT32 uiRetBatteryLvl; + static UINT32 uiEmptycount = 0; + static UINT32 uiCount = 0; + UINT32 uiCurBatteryADC, uiCurBatteryLvl, i; + BOOL isMatch = FALSE; + + uiCurBatteryLvl = 0; + if (uiPreBatteryLvl == DRVPWR_BATTERY_LVL_UNKNOWN) { + uiCurBatteryADC = DrvPower_GetBatteryADC(); + //uiPreBatteryADC = DrvPower_GetBatteryADC() - 1; + for (i = 0; i < BATT_SLIDE_WINDOW_COUNT; i++) { + uiBattADCSlideWin[i] = uiCurBatteryADC; + DBG_MSG("AVG=%d\r\n", uiCurBatteryADC); + } + } else { + + uiCurSlideWinCnt = BATT_SLIDE_WINDOW_COUNT; + uiBattADCSlideWin[uiBattSlideIdx++] = DrvPower_GetBatteryADC(); + if (uiBattSlideIdx >= uiCurSlideWinCnt) { + uiBattSlideIdx = 0; + } + uiCurBatteryADC = 0; + for (i = 0; i < uiCurSlideWinCnt; i++) { + uiCurBatteryADC += uiBattADCSlideWin[i]; + DBG_MSG("A[%d]=%d,", i, uiBattADCSlideWin[i]); + } + uiCurBatteryADC /= uiCurSlideWinCnt; + DBG_MSG("AVG=%d", uiCurBatteryADC); + DBG_MSG(", V=%d", uiCurBatteryADC * 42 / 9100); + DBG_MSG(".%02d\r\n", (uiCurBatteryADC * 42 / 91) % 100); + } + + //DBG_IND("%d,%d,%d\r\n",VOLDET_BATTERY_ADC_LVL0,VOLDET_BATTERY_ADC_LVL1,VOLDET_BATTERY_ADC_LVL2); + for (i = BATT_LEVEL_COUNT; i > 0; i--) { + if (uiCurBatteryADC > pBattAdcLevelValue[i - 1]) { + uiCurBatteryLvl = i; + isMatch = TRUE; + break; + } + } + if (isMatch != TRUE) { + uiCurBatteryLvl = 0; + } + + // Debounce + if ((uiCurBatteryLvl == uiPreBatteryLvl) || + (uiPreBatteryLvl == DRVPWR_BATTERY_LVL_UNKNOWN)) { + uiRetBatteryLvl = uiCurBatteryLvl; + } + uiPreBatteryLvl = uiCurBatteryLvl; + //uiPreBatteryADC = uiCurBatteryADC; + + if (uiCount % 2 == 0) { + uiRetBatteryLvl = uiPreBatteryLvl; + } + uiCount++; + // + if (uiEmptycount || uiRetBatteryLvl == DRVPWR_BATTERY_LVL_0) { + uiEmptycount++; + if (uiEmptycount == 4) { + return DRVPWR_BATTERY_LVL_EMPTY; + } + } + + return DRVPWR_BATTERY_LVL_4;//uiRetBatteryLvl; +} + + +static void DrvPower_PowerOnInit(void) +{ + pBattAdcLevelValue = &LiBattAdcLevelValue[0]; +#if USB_CHARGE_FUNCTION + gTempValue = DrvPower_BattTempGet(); +#endif +} + +UINT32 DrvPower_DummyLoad(void) +{ +#if DUMMY_LOAD + UINT32 Ave_V, deltaV, V1, V2; + + DrvPower_dummy_process(&V1, &V2, FALSE); + deltaV = V2 - V1; + Ave_V = V1; + dummyLoadData[0].deltaV = deltaV; + dummyLoadData[0].Ave_V = Ave_V; + + + if (dummyLoadData[0].Ave_V < (LiBattAdcLevelValue[0] + DUMMY_LOAD_OFFSETV)) { + bDummyLoadPwrOff = TRUE; + + } else { + bDummyLoadPwrOff = FALSE; + } + DBG_IND("Ave_V=%d ; deltaV=%d , bDummyLoadPwrOff=%d\r\n", Ave_V, deltaV, bDummyLoadPwrOff); + return (!bDummyLoadPwrOff); +#else + return TRUE; +#endif +} +#if DUMMY_LOAD +static void DrvPower_dummy_process(UINT32 *V1, UINT32 *V2, BOOL bIris) +{ + UINT32 i, Va; + UINT32 Vtotal, DetectLoop = 25; + float Vtmp1, Vtmp2, Vtmp3; + + if (gDevPower.pfCallback) { + gpio_clearPin(GPIO_LENS_MD_RST); // Enable motor driver.GPIO_LENS_MD_RST + Delay_DelayMs(5); + gpio_setPin(GPIO_LENS_MD_RST); // Enable motor driver.GPIO_LENS_MD_RST + gDevPower.pfCallback(DRVPWR_CB_DUMMY_LOAD_START, 0, 0); + } + Delay_DelayMs(40); + + Vtotal = 0; + for (i = 0; i < DetectLoop ; i++) { //sample 25 times. + Va = DrvPower_GetBatteryADC(); //sample average value.(In loading) + Delay_DelayUs(200); + Vtotal += Va; + } + *V1 = Vtotal / DetectLoop; + if (gDevPower.pfCallback) { + gDevPower.pfCallback(DRVPWR_CB_DUMMY_LOAD_END, 0, 0); + } + Delay_DelayMs(5); + Vtotal = 0; + for (i = 0; i < DetectLoop ; i++) { //sample 25 times. + Va = DrvPower_GetBatteryADC(); //sample average value.(after loading) + Delay_DelayUs(200); + Vtotal += Va; + } + + *V2 = Vtotal / DetectLoop; + + + Vtmp1 = (float)(*V1) * 3.3 * 1.39 / 4096; + Vtmp2 = (float)(*V2) * 3.3 * 1.39 / 4096; + + + Vtmp3 = Vtmp2 - Vtmp1; + + DBG_IND("delta=(%1.3f, %d) Ave_V:%1.3f V2:%1.3f, %d, %d, Cal = %d \r\n", Vtmp3, (*V2) - (*V1), Vtmp1, Vtmp2, *V1, *V2, iBattAdcCalOffset); + +} +#endif + +static void DrvPower_BattADC_Calibration(BOOL enable) +{ +} + +#if USB_CHARGE_FUNCTION +static void DrvPower_EnableChargeIC(BOOL bCharge) +{ + +} + +static void DrvPower_ChargeBattEn(BOOL bCharge) +{ + +} + + +static void DrvPower_ChargeCurrentSet(UINT32 Current) +{ + u32BattChargeCurrent = Current; +} + +static UINT32 DrvPower_ChargeCurrentGet(void) +{ + return u32BattChargeCurrent; +} + +static void DrvPower_ChargeISet(BOOL isHigh) +{ + +} + +static BOOL DrvPower_ChargeIGet(void) +{ + return 0; +} + +static void DrvPower_ChargeVSet(BOOL isHigh) +{ + +} + +static BOOL DrvPower_ChargeVGet(void) +{ + return 0; +} + + +static BOOL DrvPower_IsUnderCharge(void) +{ + return 0; +} + +static BOOL DrvPower_IsUSBChargeOK(void) +{ + return 0; +} + +static BOOL DrvPower_IsBattIn(void) +{ + return TRUE; + +} + +static BOOL DrvPower_IsDeadBatt(void) +{ + return FALSE; +} + +static BOOL DrvPower_IsNeedRecharge(void) +{ + return FALSE; +} + +static INT32 DrvPower_BattTempGet(void) +{ + return 25; +} +#endif + +static INT32 DrvPower_GetTempCompentation(INT32 tempValue) +{ + return 0; +} + +static void DrvPower_SetControl(DRVPWR_CTRL DrvPwrCtrl, UINT32 value) +{ + DBG_IND("DrvPwrCtrl(%d), value(%d)\r\n", DrvPwrCtrl, value); + switch (DrvPwrCtrl) { + case DRVPWR_CTRL_BATTERY_CALIBRATION_EN: + DrvPower_BattADC_Calibration((BOOL)value); + break; + + case DRVPWR_CTRL_BATTERY_ADC_CAL_OFFSET: + iBattAdcCalOffset = (INT32)value; + break; + +#if USB_CHARGE_FUNCTION + case DRVPWR_CTRL_BATTERY_CHARGE_EN: + DrvPower_ChargeBattEn((BOOL)value); + break; + case DRVPWR_CTRL_BATTERY_CHARGE_CURRENT: + DrvPower_ChargeCurrentSet(value); + break; + + case DRVPWR_CTRL_BATTERY_CHARGE_ISET: + DrvPower_ChargeISet((BOOL)value); + break; + + case DRVPWR_CTRL_BATTERY_CHARGE_VSET: + DrvPower_ChargeVSet((BOOL)value); + break; + + case DRVPWR_CTRL_ENABLE_CHARGEIC: + DrvPower_EnableChargeIC((BOOL)value); + break; + +#endif +#if defined(_MCU_ENABLE_) + case DRVPWR_CTRL_PIR_EN: + if(value!=0) { + gpio_setPin(PIR_POWER_ON); + Delay_DelayMs(100); + gpio_clearPin(PIR_POWER_ON); + MCUCtrl_SendCmd(UART_CMD_PIR_SWITCH,UART_PAR_ON,0,0); + } else { + gpio_setPin(PIR_POWER_OFF); + Delay_DelayMs(100); + gpio_clearPin(PIR_POWER_OFF); + MCUCtrl_SendCmd(UART_CMD_PIR_SWITCH,UART_PAR_OFF,0,0); + } + break; +#endif + case DRVPWR_CTRL_PSW1: + hwpower_set_power_key(POWER_ID_PSW1, value); + break; + case DRVPWR_CTRL_HWRT: + hwpower_set_power_key(POWER_ID_HWRT, value); + break; + case DRVPWR_CTRL_SWRT: + hwpower_set_power_key(POWER_ID_SWRT, value); + break; + default: + DBG_ERR("DrvPwrCtrl(%d)\r\n", DrvPwrCtrl); + break; + } +} + +static UINT32 DrvPower_GetControl(DRVPWR_CTRL DrvPwrCtrl) +{ + UINT32 rvalue = 0; + switch (DrvPwrCtrl) { + case DRVPWR_CTRL_BATTERY_LEVEL: + rvalue = DrvPower_GetBatteryLevel(); + break; + case DRVPWR_CTRL_BATTERY_ADC_VALUE: + rvalue = DrvPower_GetBatteryADC(); + break; + case DRVPWR_CTRL_BATTERY_ADC_CAL_OFFSET: + rvalue = iBattAdcCalOffset; + break; + case DRVPWR_CTRL_IS_DUMMUYLOAD_POWEROFF: + rvalue = bDummyLoadPwrOff; + break; + case DRVPWR_CTRL_IS_BATT_OVERHEAT: + rvalue = (UINT32)DrvPower_IsBattOverHeat(); + break; +#if USB_CHARGE_FUNCTION + case DRVPWR_CTRL_IS_BATT_INSERT: + rvalue = (UINT32)DrvPower_IsBattIn(); + break; + case DRVPWR_CTRL_IS_DEAD_BATT: + rvalue = (UINT32)DrvPower_IsDeadBatt(); + break; + case DRVPWR_CTRL_IS_NEED_RECHARGE: + rvalue = (UINT32)DrvPower_IsNeedRecharge(); + break; + case DRVPWR_CTRL_BATTERY_CHARGE_EN: + rvalue = (UINT32)DrvPower_IsUnderCharge(); + break; + case DRVPWR_CTRL_BATTERY_CHARGE_OK: + rvalue = (UINT32)DrvPower_IsUSBChargeOK(); + break; + case DRVPWR_CTRL_BATTERY_CHARGE_CURRENT: + rvalue = DrvPower_ChargeCurrentGet(); + break; + case DRVPWR_CTRL_BATTERY_CHARGE_ISET: + rvalue = (UINT32)DrvPower_ChargeIGet(); + break; + case DRVPWR_CTRL_BATTERY_CHARGE_VSET: + rvalue = (UINT32)DrvPower_ChargeVGet(); + break; + case DRVPWR_CTRL_BATTERY_TEMPERATURE: +#if USB_CHARGE_FUNCTION + rvalue = DrvPower_BattTempGet(); +#endif + break; + +#else + case DRVPWR_CTRL_BATTERY_CHARGE_EN: + rvalue = FALSE; + break; +#endif + case DRVPWR_CTRL_POWERON_SOURCE: + #if defined(_MCU_ENABLE_) + rvalue = MCUCtrl_SendCmd(UART_CMD_POWER_ON_REASON,0,0,0); + #else + rvalue = hwpower_get_poweron_state(POWER_STATE_SRC); + #endif + break; + case DRVPWR_CTRL_POWER_LOST: + #if defined(_MCU_ENABLE_) + rvalue = MCUCtrl_SendCmd(UART_CMD_POWER_ON_REASON,0,0,0); + #else + rvalue = hwpower_get_poweron_state(POWER_STATE_FIRST); + #endif + break; + case DRVPWR_CTRL_PSW1: + rvalue = hwpower_get_power_key(POWER_ID_PSW1); + break; + case DRVPWR_CTRL_HWRT: + rvalue = hwpower_get_power_key(POWER_ID_HWRT); + break; + case DRVPWR_CTRL_SWRT: + rvalue = hwpower_get_power_key(POWER_ID_SWRT); + break; + default: + DBG_ERR("DrvPwrCtrl(%d)\r\n", DrvPwrCtrl); + break; + } + return rvalue; +} +/* +void DrvPower_RegCB(DX_CALLBACK_PTR fpDxPowerCB) +{ + + g_fpDxPowerCB = fpDxPowerCB; +} +*/ +///////////DX object +static UINT32 DrvPowerGetcaps(UINT32 CapID, UINT32 Param1) +{ + + return DX_OK; +} + +static UINT32 DrvPowercfgs(UINT32 CfgID, UINT32 Param1) +{ + + return DX_OK; +} +static UINT32 DrvPowerInit(void *pInitParam) +{ + DBG_IND("Init\r\n"); + DrvPower_PowerOnInit(); + return DX_OK; +} + +static UINT32 DrvPowerOpen(void) +{ + DBG_IND("open\r\n"); + hwclock_open(HWCLOCK_MODE_RTC); + return DX_OK; +} + +static UINT32 DrvPowerClose(void) +{ + DBG_IND("close\r\n"); + hwclock_close(); + return DX_OK; +} + +static UINT32 DrvPowerState(UINT32 StateID, UINT32 Value) +{ + if (StateID & DXGET) { + StateID &= ~DXGET; + return DrvPower_GetControl(StateID); + } else if (StateID & DXSET) { + StateID &= ~DXSET; + DrvPower_SetControl(StateID, Value); + } + return DX_OK; +} +static UINT32 DrvPowerControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2) +{ + switch(CtrlID) { + case DRVPWR_CTRL_CURRENT_TIME: + if (Param1 == 0) + hwclock_set_time(TIME_ID_CURRENT, *(struct tm*)Param2, 0); + if (Param1 == 1) + *((struct tm*)Param2) = hwclock_get_time(TIME_ID_CURRENT); + break; + case DRVPWR_CTRL_HWRT_TIME: + if (Param1 == 0) + hwclock_set_time(TIME_ID_HWRT, *(struct tm*)Param2, 0); + if (Param1 == 1) + *((struct tm*)Param2) = hwclock_get_time(TIME_ID_HWRT); + break; + case DRVPWR_CTRL_SWRT_TIME: + if (Param1 == 0) + hwclock_set_time(TIME_ID_SWRT, *(struct tm*)Param2, 0); + if (Param1 == 1) + *((struct tm*)Param2) = hwclock_get_time(TIME_ID_SWRT); + break; + } + return DX_OK; +} + +static UINT32 DrvPowerCommand(CHAR *pcCmdStr) //General Command Console +{ + + switch (*pcCmdStr) { + case 'd': + /*if (!strncmp(pcCmdStr, "Nand dump", 9)) + { + return TRUE; + }*/ + break; + } + return FALSE; +} +/* +static void DrvPowerCallback(UINT32 EventID, UINT32 Param1, UINT32 Param2){ + + if(g_fpDxPowerCB){ + g_fpDxPowerCB(EventID,Param1,Param2); + } +} +*/ + + +#endif + diff --git a/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxPower_DC.c b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxPower_DC.c new file mode 100755 index 000000000..9fbeecec5 --- /dev/null +++ b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxPower_DC.c @@ -0,0 +1,268 @@ +#include "DxCfg.h" +#include "IOCfg.h" +#include "DxPower.h" +#include "DxCommon.h" +//#include "DxApi.h" +#include "Dx.h" +#include +#include +#include + +#define THIS_DBGLVL 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER +/////////////////////////////////////////////////////////////////////////////// +#define __MODULE__ DxPwr +#define __DBGLVL__ THIS_DBGLVL +#define __DBGFLT__ "*" //*=All, [mark]=CustomClass +#include + +#if defined(_POWER_DC_) + +static UINT32 DrvPowerGetcaps(UINT32 CapID, UINT32 Param1); +static UINT32 DrvPowercfgs(UINT32 CfgID, UINT32 Param1); +static UINT32 DrvPowerInit(void *pInitParam); +static UINT32 DrvPowerOpen(void); +static UINT32 DrvPowerClose(void); +static UINT32 DrvPowerState(UINT32 StateID, UINT32 Value); +static UINT32 DrvPowerControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2); +static UINT32 DrvPowerCommand(CHAR *pcCmdStr); +static UINT32 DrvPower_GetControl(DRVPWR_CTRL DrvPwrCtrl); +static void DrvPower_SetControl(DRVPWR_CTRL DrvPwrCtrl, UINT32 value); + +DX_OBJECT gDevPowerDC = { + DXFLAG_SIGN, + DX_CLASS_POWER_EXT, + POWER_VER, + "PowerDC", + 0, 0, 0, 0, + DrvPowerGetcaps, + DrvPowercfgs, + DrvPowerInit, + DrvPowerOpen, + DrvPowerClose, + DrvPowerState, + DrvPowerControl, + DrvPowerCommand, + 0, +}; + +UINT32 DrvPower_DummyLoad(void) +{ + return TRUE; +} + + +static void DrvPower_SetControl(DRVPWR_CTRL DrvPwrCtrl, UINT32 value) +{ + DBG_IND("DrvPwrCtrl(%d), value(%d)\r\n", DrvPwrCtrl, value); + switch (DrvPwrCtrl) { + case DRVPWR_CTRL_BATTERY_CALIBRATION_EN: + break; + + case DRVPWR_CTRL_BATTERY_ADC_CAL_OFFSET: + break; + +#if USB_CHARGE_FUNCTION + case DRVPWR_CTRL_BATTERY_CHARGE_EN: + break; + case DRVPWR_CTRL_BATTERY_CHARGE_CURRENT: + break; + case DRVPWR_CTRL_BATTERY_CHARGE_ISET: + break; + case DRVPWR_CTRL_BATTERY_CHARGE_VSET: + break; + case DRVPWR_CTRL_ENABLE_CHARGEIC: + break; +#endif + case DRVPWR_CTRL_PSW1: +// hwpower_set_power_key(POWER_ID_PSW1, value); + break; + case DRVPWR_CTRL_HWRT: +// hwpower_set_power_key(POWER_ID_HWRT, value); + break; + case DRVPWR_CTRL_SWRT: +// hwpower_set_power_key(POWER_ID_SWRT, value); + break; + default: + DBG_ERR("DrvPwrCtrl(%d)\r\n", DrvPwrCtrl); + break; + } +} + +static UINT32 DrvPower_GetControl(DRVPWR_CTRL DrvPwrCtrl) +{ + UINT32 rvalue = 0; + switch (DrvPwrCtrl) { + case DRVPWR_CTRL_BATTERY_LEVEL: + break; + case DRVPWR_CTRL_BATTERY_ADC_VALUE: + break; + case DRVPWR_CTRL_BATTERY_ADC_CAL_OFFSET: + break; + case DRVPWR_CTRL_IS_DUMMUYLOAD_POWEROFF: + break; + case DRVPWR_CTRL_IS_BATT_OVERHEAT: + break; +#if USB_CHARGE_FUNCTION + case DRVPWR_CTRL_IS_BATT_INSERT: + break; + case DRVPWR_CTRL_IS_DEAD_BATT: + break; + case DRVPWR_CTRL_IS_NEED_RECHARGE: + break; + case DRVPWR_CTRL_BATTERY_CHARGE_EN: + break; + case DRVPWR_CTRL_BATTERY_CHARGE_OK: + break; + case DRVPWR_CTRL_BATTERY_CHARGE_CURRENT: + break; + case DRVPWR_CTRL_BATTERY_CHARGE_ISET: + break; + case DRVPWR_CTRL_BATTERY_CHARGE_VSET: + break; + case DRVPWR_CTRL_BATTERY_TEMPERATURE: + break; +#else + case DRVPWR_CTRL_BATTERY_CHARGE_EN: + rvalue = FALSE; + break; +#endif + case DRVPWR_CTRL_POWERON_SOURCE: + #if defined(_MCU_ENABLE_) + rvalue = MCUCtrl_SendCmd(UART_CMD_POWER_ON_REASON,0,0,0); + #else +// rvalue = hwpower_get_poweron_state(POWER_STATE_SRC); + #endif + break; + case DRVPWR_CTRL_POWER_LOST: + #if defined(_MCU_ENABLE_) + rvalue = MCUCtrl_SendCmd(UART_CMD_POWER_ON_REASON,0,0,0); + #else +// rvalue = hwpower_get_poweron_state(POWER_STATE_FIRST); + #endif + break; + case DRVPWR_CTRL_PSW1: +// rvalue = hwpower_get_power_key(POWER_ID_PSW1); + break; + case DRVPWR_CTRL_HWRT: +// rvalue = hwpower_get_power_key(POWER_ID_HWRT); + break; + case DRVPWR_CTRL_SWRT: +// rvalue = hwpower_get_power_key(POWER_ID_SWRT); + break; + default: + DBG_ERR("DrvPwrCtrl(%d)\r\n", DrvPwrCtrl); + break; + } + return rvalue; +} +/* +void DrvPower_RegCB(DX_CALLBACK_PTR fpDxPowerCB) +{ + + g_fpDxPowerCB = fpDxPowerCB; +} +*/ +///////////DX object +static UINT32 DrvPowerGetcaps(UINT32 CapID, UINT32 Param1) +{ + UINT32 v = 0; + switch (CapID & 0x0000ffff) { + case POWER_CAPS_BASE: + v = POWER_BF_DRTC; + break; + default: + break; + } + return v; +} + +static UINT32 DrvPowercfgs(UINT32 CfgID, UINT32 Param1) +{ + + return DX_OK; +} +static UINT32 DrvPowerInit(void *pInitParam) +{ + DBG_IND("Init\r\n"); + return DX_OK; +} + +static UINT32 DrvPowerOpen(void) +{ + DBG_IND("open\r\n"); + hwclock_open(HWCLOCK_MODE_RTC); + return DX_OK; +} + +static UINT32 DrvPowerClose(void) +{ + DBG_IND("close\r\n"); + hwclock_close(); + return DX_OK; +} + +static UINT32 DrvPowerState(UINT32 StateID, UINT32 Value) +{ + if (StateID & DXGET) { + StateID &= ~DXGET; + return DrvPower_GetControl(StateID); + } else if (StateID & DXSET) { + StateID &= ~DXSET; + DrvPower_SetControl(StateID, Value); + } + return DX_OK; +} +static UINT32 DrvPowerControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2) +{ + switch(CtrlID) { + case DRVPWR_CTRL_CURRENT_TIME: + if (Param1 == 0) { + hwclock_set_time(TIME_ID_CURRENT, *(struct tm*)Param2, 0); + } + if (Param1 == 1) { + *((struct tm*)Param2) = hwclock_get_time(TIME_ID_CURRENT); + } + break; + case DRVPWR_CTRL_HWRT_TIME: + if (Param1 == 0) { + hwclock_set_time(TIME_ID_HWRT, *(struct tm*)Param2, 0); + } + if (Param1 == 1) { + *((struct tm*)Param2) = hwclock_get_time(TIME_ID_HWRT); + } + break; + case DRVPWR_CTRL_SWRT_TIME: + if (Param1 == 0) { + hwclock_set_time(TIME_ID_SWRT, *(struct tm*)Param2, 0); + } + if (Param1 == 1) { + *((struct tm*)Param2) = hwclock_get_time(TIME_ID_SWRT); + } + break; + } + return DX_OK; +} + +static UINT32 DrvPowerCommand(CHAR *pcCmdStr) //General Command Console +{ + + switch (*pcCmdStr) { + case 'd': + /*if (!strncmp(pcCmdStr, "Nand dump", 9)) + { + return TRUE; + }*/ + break; + } + return FALSE; +} +/* +static void DrvPowerCallback(UINT32 EventID, UINT32 Param1, UINT32 Param2){ + + if(g_fpDxPowerCB){ + g_fpDxPowerCB(EventID,Param1,Param2); + } +} +*/ + +#endif diff --git a/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxStorage_Card.c b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxStorage_Card.c new file mode 100755 index 000000000..ffc1e75e7 --- /dev/null +++ b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxStorage_Card.c @@ -0,0 +1,442 @@ +/** + Copyright Novatek Microelectronics Corp. 2005. All rights reserved. + + @file KeyScanSD.c + @ingroup mIPRJAPKeyIO + + @brief Detect SD card status + Detect SD card insert/remove, lock/unlock + + @note Nothing. + + @date 2005/12/15 +*/ + +/** \addtogroup mIPRJAPKeyIO */ +//@{ + +#include "kwrap/type.h" +#include "DxCfg.h" +#include "IOCfg.h" + +#include "DxStorage.h" +#include "DxCommon.h" +#include "DxApi.h" + +#include "sdio.h" +#if 0 +#include "SdmmcDesc.h" +#include "StrgDef.h" +#include "Debug.h" +#endif +#include "Utility/SwTimer.h" +//#include "pll.h" + +/////////////////////////////////////////////////////////////////////////////// +#define __MODULE__ DxDrv +#define __DBGLVL__ 1 // 0=OFF, 1=ERROR, 2=TRACE +#define __DBGFLT__ "*" //*=All, [mark]=CustomClass +#include +/////////////////////////////////////////////////////////////////////////////// + +void DrvCARD_EnableCardPower(BOOL bEn); +BOOL DrvCARD_DetStrgCard(void); +BOOL DrvCARD_DetStrgCard_TRUE(void);//for eMMC +BOOL DrvCARD_DetStrgCardWP(void); +BOOL DrvCARD_DetStrgCardWP_FALSE(void);//for eMMC + +//public func +UINT32 DrvCARDGetcaps(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +UINT32 DrvCARDGetcaps3(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +UINT32 DrvCARDInit(void *pInitParam); // Set Init Parameters +UINT32 DrvCARDInit3(void *pInitParam); // Set Init Parameters +UINT32 DrvCARDOpen(void); // Common Constructor +UINT32 DrvCARDClose(void); // Common Destructor +UINT32 DrvCARDState(UINT32 StateID, UINT32 Value); // General Properties +UINT32 DrvCARDControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2); // General Methods +UINT32 DrvCARDCommand(CHAR *pcCmdStr); //General Command Console + +#if !defined(_CARD1_NONE_) +//dx object +DX_OBJECT gDevCARD1 = { + DXFLAG_SIGN, + DX_CLASS_STORAGE_EXT | DX_TYPE_CARD1, + STORAGE_VER, + "Storage_Card1", + 0, 0, 0, 0, + DrvCARDGetcaps, + 0, + DrvCARDInit, + DrvCARDOpen, + DrvCARDClose, + DrvCARDState, + DrvCARDControl, + DrvCARDCommand, + 0, +}; +#endif + +#if !defined(_CARD3_NONE_) +//for eMMC test on FPGA +DX_OBJECT gDevCARD3 = { + DXFLAG_SIGN, + DX_CLASS_STORAGE_EXT | DX_TYPE_CARD3, + STORAGE_VER, + "Storage_Card3", + 0, 0, 0, 0, + DrvCARDGetcaps3, + 0, + DrvCARDInit3, + DrvCARDOpen, + DrvCARDClose, + DrvCARDState, + DrvCARDControl, + DrvCARDCommand, + 0, +}; +#endif + + +#if !defined(_CARD1_NONE_) +UINT32 DrvCARDGetcaps(UINT32 CapID, UINT32 Param1) // Get Capability Flag (Base on interface version) +{ + UINT32 v = 0; + switch (CapID) { + case STORAGE_CAPS_BASE: + DBG_IND("get card plug caps\r\n"); + v = STORAGE_BF_DETPLUG | STORAGE_BF_DETWP; + break; + case STORAGE_CAPS_HANDLE: + v = (UINT32)sdio_getStorageObject(STRG_OBJ_FAT1); + break; + default: + break; + } + return v; +} +#endif + +#if !defined(_CARD3_NONE_) +UINT32 DrvCARDGetcaps3(UINT32 CapID, UINT32 Param1) // Get Capability Flag (Base on interface version) +{ + UINT32 v = 0; + switch (CapID) { + case STORAGE_CAPS_BASE: + DBG_IND("get card plug caps\r\n"); + v = STORAGE_BF_DETPLUG | STORAGE_BF_DETWP; + break; + case STORAGE_CAPS_HANDLE: + CHKPNT; +#if defined(__FREERTOS) + v = (UINT32)sdio3_getStorageObject(STRG_OBJ_FAT1); +#endif + break; + default: + break; + } + return v; +} +#endif + +#if !defined(_CARD1_NONE_) +UINT32 DrvCARDInit(void *pInitParam) // Set Init Parameters +{ +#if defined(__FREERTOS) + PSTORAGE_OBJ pStrg; + DXSTRG_INIT *g_pInit = (DXSTRG_INIT *)pInitParam; //fat and pstore not complete + + DBG_FUNC_BEGIN("\r\n"); + + pStrg = sdio_getStorageObject(STRG_OBJ_FAT1); + sdio_setCallBack(SDIO_CALLBACK_CARD_DETECT, (SDIO_CALLBACK_HDL)DrvCARD_DetStrgCard); + sdio_setCallBack(SDIO_CALLBACK_WRITE_PROTECT, (SDIO_CALLBACK_HDL)DrvCARD_DetStrgCardWP); + + /* + // Enable High Speed mode + //sdio_setConfig(SDIO_CONFIG_ID_BUS_SPEED_MODE, (UINT32)(SDIO_BUS_SPEED_MODE_DS | SDIO_BUS_SPEED_MODE_HS|SDIO_BUS_SPEED_MODE_SDR12|SDIO_BUS_SPEED_MODE_SDR25|SDIO_BUS_SPEED_MODE_SDR50)); + sdio_setConfig(SDIO_CONFIG_ID_BUS_SPEED_MODE, (UINT32)(SDIO_BUS_SPEED_MODE_DS | SDIO_BUS_SPEED_MODE_HS|SDIO_BUS_SPEED_MODE_SDR12|SDIO_BUS_SPEED_MODE_SDR25|SDIO_BUS_SPEED_MODE_DDR50)); + */ + + //#NT#2017/10/24#Nestor Yang -begin + //#NT# Adjust SDIO driving, requested by SA1 + /* + // Enable setting driving sink of clock pin + sdio_setConfig(SDIO_CONFIG_ID_DRIVING_SINK_EN, (UINT32)TRUE); + + // Default speed driving -> 5.0 mA (Shirley, 2017/09/22) + sdio_setConfig(SDIO_CONFIG_ID_DS_DRIVING, 150); + //sdio_setConfig(SDIO_CONFIG_ID_DS_MAX_CLK, 48000000); //default for DS + + // High speed driving -> 10.0 mA (Shirley, 2017/09/22) + sdio_setConfig(SDIO_CONFIG_ID_HS_DRIVING, 150); + */ + sdio_setConfig(SDIO_CONFIG_ID_DRIVING_SINK_EN, TRUE); // for clock. + sdio_setConfig(SDIO_CONFIG_ID_DRIVING_SINK_CMDDATA_EN, TRUE); // for cmd and data. + + // Default speed driving + sdio_setConfig(SDIO_CONFIG_ID_DS_DRIVING, 200); + sdio_setConfig(SDIO_CONFIG_ID_DS_CMD_DRIVING, 150); + sdio_setConfig(SDIO_CONFIG_ID_DS_DATA_DRIVING, 150); + + // High speed driving + sdio_setConfig(SDIO_CONFIG_ID_HS_DRIVING, 200); + sdio_setConfig(SDIO_CONFIG_ID_HS_CMD_DRIVING, 150); + sdio_setConfig(SDIO_CONFIG_ID_HS_DATA_DRIVING, 150); + //#NT#2017/10/24#Nestor Yang -end + + //sdio_setConfig(SDIO_CONFIG_ID_HS_MAX_CLK, 48000000); //default for HS + /* + // Set clock source + sdio_setConfig(SDIO_CONFIG_ID_SRCLK, PLL_CLKSEL_SDIO_48); + // Set maximum bus width to 8 bits + sdio_setConfig(SDIO_CONFIG_ID_BUS_WIDTH, SD_HOST_BUS_8_BITS); + */ + //sdio_setCallBack(SDIO_CALLBACK_POWER_CONTROL, (SDIO_CALLBACK_HDL)DrvCARD_EnableCardPower); //(to improve card capability) + + //if(STRG_OBJ_FAT1) + { + pStrg->SetParam(STRG_SET_MEMORY_REGION, g_pInit->buf.addr, g_pInit->buf.size); + } +#endif + return DX_OK; +} +#endif + +#if !defined(_CARD3_NONE_) +UINT32 DrvCARDInit3(void *pInitParam) // Set Init Parameters +{ +#if defined(__FREERTOS) + PSTORAGE_OBJ pStrg; + DXSTRG_INIT *g_pInit = (DXSTRG_INIT *)pInitParam; //fat and pstore not complete + + DBG_FUNC_BEGIN("\r\n"); + CHKPNT; + pStrg = sdio3_getStorageObject(STRG_OBJ_FAT1); + if (pStrg == NULL) { + DBG_ERR("Get SDIO3 storage object failed\r\n"); + return DX_NULL_POINTER; + } + + pStrg->SetParam(STRG_SET_MEMORY_REGION, g_pInit->buf.addr, g_pInit->buf.size); + + sdio3_setCallBack(SDIO_CALLBACK_CARD_DETECT, (SDIO_CALLBACK_HDL)DrvCARD_DetStrgCard_TRUE); + sdio3_setCallBack(SDIO_CALLBACK_WRITE_PROTECT, (SDIO_CALLBACK_HDL)DrvCARD_DetStrgCardWP_FALSE); + + // Support default speed + high speed + sdio3_setConfig(SDIO_CONFIG_ID_BUS_SPEED_MODE, SDIO_BUS_SPEED_MODE_DS | SDIO_BUS_SPEED_MODE_HS); + + // Default speed driving -> 5.0 mA + sdio3_setConfig(SDIO_CONFIG_ID_DS_DRIVING, 50); + // High speed driving -> 10.0 mA + sdio3_setConfig(SDIO_CONFIG_ID_HS_DRIVING, 100); + + // Adjust driving/sink according to operating mode + sdio3_setConfig(SDIO_CONFIG_ID_DRIVING_SINK_EN, TRUE); + + sdio3_setConfig(SDIO_CONFIG_ID_BUS_WIDTH, SD_HOST_BUS_4_BITS); + + sdio3_setConfig(SDIO_CONFIG_ID_FORMAD_OEMID, (UINT32)"NOVATEK"); + sdio3_setConfig(SDIO_CONFIG_ID_FORMAD_VOL_LABLE, (UINT32)"SD_VOL"); + sdio3_setConfig(SDIO_CONFIG_ID_FORMAD_RAND_VOL_ID_EN, TRUE); +#endif + return DX_OK; +} +#endif + +#if !(defined(_CARD1_NONE_) && defined(_CARD3_NONE_)) +UINT32 DrvCARDOpen(void) // Common Constructor +{ + DrvCARD_EnableCardPower(TRUE); + + return DX_OK; +} + +UINT32 DrvCARDClose(void) // Common Destructor +{ + DrvCARD_EnableCardPower(FALSE); + + return DX_OK; +} + +UINT32 DrvCARDState(UINT32 StateID, UINT32 Value) // General Properties +{ + DBG_FUNC_BEGIN("\r\n"); + + if (StateID & DXGET) { + UINT32 rvalue = 0; + StateID &= ~DXGET; + DBG_IND("get %08x\r\n", StateID); + switch (StateID) { + case STORAGE_STATE_INSERT: + rvalue = DrvCARD_DetStrgCard(); + break; + case STORAGE_STATE_LOCK: { + BOOL bLock = FALSE; + if (DrvCARD_DetStrgCard()) { + bLock = DrvCARD_DetStrgCardWP(); + } + rvalue = bLock; + } + break; + break; + default: + DBG_ERR("state=0x%02X not support!\r\n", StateID); + break; + } + return rvalue; + } else if (StateID & DXSET) { + StateID &= ~DXSET; + DBG_IND("set %08x\r\n", StateID); + switch (StateID) { + default: + DBG_ERR("state=0x%02X not support!\r\n", StateID); + break; + } + } + return DX_OK; +} + +UINT32 DrvCARDControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2) // General Methods +{ + DBG_FUNC_BEGIN("\r\n"); + DBG_IND("ctrl %08x\r\n", CtrlID); + + switch (CtrlID) { + case STORAGE_CTRL_POWER: + DrvCARD_EnableCardPower(Param1); + break; + default: + DBG_ERR("ctrlid=0x%02X not support!\r\n", CtrlID); + break; + } + return DX_OK; +} + +UINT32 DrvCARDCommand(CHAR *pcCmdStr) //General Command Console +{ + return FALSE; +} + +//////////////////////////////////////////////////////////////////////////////// +// GPIO related + +#define KEYSCAN_CD_GPIO_INT GPIO_INT_00 +#define KEYSCAN_CARDDET_INT DISABLE +#define KEYSCAN_SDWRPTDET_GPIO DISABLE + +void DrvCARD_EnableCardPower(BOOL bEn) +{ + gpio_setDir(GPIO_CARD_POWER, GPIO_DIR_OUTPUT); + if (bEn) { + DBG_IND("[SD] - card power enable\r\n"); + gpio_clearPin(GPIO_CARD_POWER); + SwTimer_DelayMs(20); + } else { + + DBG_IND("[SD] - card power disable\r\n"); + gpio_setPin(GPIO_CARD_POWER); + SwTimer_DelayMs(350); + } +} + +#if (KEYSCAN_CARDDET_INT == ENABLE) +static volatile UINT32 uiStrgCardIntCnt = 0; + +/** + ISR of SD card detection + + ISR of SD card detection + + @param void + @return void +*/ +static void KeyScan_DetStrgCardIsr(UINT32 uiEvent) +{ + uiStrgCardIntCnt++; + + // Debounce + if (uiStrgCardIntCnt > 1) { + uiStrgCardIntCnt = 0; + } +} +#endif + +void DrvCARD_SetInsert(UINT32 status) +{ +#if (KEYSCAN_CARDDET_INT == ENABLE) + if (status) { + gpio_setIntTypePol(KEYSCAN_CD_GPIO_INT, GPIO_INTTYPE_LEVEL, GPIO_INTPOL_POSHIGH); + } else { + gpio_setIntTypePol(KEYSCAN_CD_GPIO_INT, GPIO_INTTYPE_LEVEL, GPIO_INTPOL_NEGLOW); + } +#endif +} + +void DrvCARD_DetRestart(void) +{ +#if (KEYSCAN_CARDDET_INT == ENABLE) + gpio_setIntIsr(KEYSCAN_CD_GPIO_INT, KeyScan_DetStrgCardIsr); + gpio_enableInt(KEYSCAN_CD_GPIO_INT); +#endif +} + +/** + Detect Storage card is inserted or not + + Detect Storage card is inserted or not. + Return TRUE if storage card is inserted, FALSE if storage card is removed. + + @param void + @return BOOL: TRUE -> Storage card inserted, FALSE -> Storage card removed +*/ +BOOL DrvCARD_DetStrgCard(void) +{ +#if 1 + return (gpio_getPin(GPIO_CARD_DETECT) == 0 ? TRUE : FALSE); +#else + return TRUE; +#endif +} + +/** + Detect Storage card is write protected or not + + Detect Storage card is write protected or not. + Return TRUE if storage card is write protected, FALSE if storage card is not write protected. + + @param void + @return BOOL: TRUE -> Storage card is write protected, FALSE -> Storage card is not write protected +*/ +BOOL DrvCARD_DetStrgCardWP(void) +{ +#if 0 + return (gpio_getPin(GPIO_CARD_WP) == 1 ? TRUE : FALSE); +#else + return FALSE; +#endif +} + +/** + Always return card inserted (TRUE) for eMMC + + @param void + @return BOOL: TRUE -> Storage card inserted, FALSE -> Storage card removed +*/ +BOOL DrvCARD_DetStrgCard_TRUE(void) +{ + return TRUE; +} + +/** + Always return no write protected (FALSE) for eMMC + + @param void + @return BOOL: TRUE -> Storage card is write protected, FALSE -> Storage card is not write protected +*/ +BOOL DrvCARD_DetStrgCardWP_FALSE(void) +{ + return FALSE; +} + +#endif +//@} diff --git a/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxStorage_EmbMem.c b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxStorage_EmbMem.c new file mode 100755 index 000000000..2b7db0400 --- /dev/null +++ b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxStorage_EmbMem.c @@ -0,0 +1,574 @@ +#include "kwrap/type.h" +#include "DxCfg.h" +#include "IOCfg.h" + +#include "DxStorage.h" +#include "DxCommon.h" +#include "DxApi.h" +#include "DrvExt.h" + +#if 0 +#include "Debug.h" +#endif +#include "sdio.h" +//#include "pad.h" +#if 0 +#include "StrgDef.h" +#endif +#include +#include "emb_partition_info.h" + +#if (!defined(_EMBMEM_NONE_)) && (!defined(_EMBMEM_UITRON_OFF_)) + +#if defined(_EMBMEM_NONE_) +#define EMB_GETSTRGOBJ(x) 0 //Always NULL +#elif defined(_EMBMEM_NAND_) || defined(_EMBMEM_SPI_NAND_) +#include "nand.h" +#define EMB_GETSTRGOBJ(x) nand_getStorageObject(x) +#elif defined(_EMBMEM_SPI_NOR_) +#include "nand.h" +//#include "RamDisk/RamDisk.h" +#define EMB_GETSTRGOBJ(x) 0//spiflash_getStorageObject(x) +#elif defined(_EMBMEM_EMMC_) +#include "sdio.h" +#define EMB_GETSTRGOBJ(x) sdio3_getStorageObject(x) +static BOOL xSdioDet(void) +{ + return TRUE; +} +static BOOL xSdioWp(void) +{ + return FALSE; +}; +#endif + +/////////////////////////////////////////////////////////////////////////////// +#define __MODULE__ DxDrv +#define __DBGLVL__ 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER +#define __DBGFLT__ "*" //*=All, [mark]=CustomClass +#include +/////////////////////////////////////////////////////////////////////////////// + +//public func +UINT32 DrvEmbMemGetcaps0(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +UINT32 DrvEmbMemGetcaps1(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +UINT32 DrvEmbMemGetcaps2(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +UINT32 DrvEmbMemGetcaps3(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +UINT32 DrvEmbMemGetcaps4(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +UINT32 DrvEmbMemGetcaps5(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +UINT32 DrvEmbMemGetcaps6(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +UINT32 DrvEmbMemGetcaps7(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +UINT32 DrvEmbMemGetcaps8(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +UINT32 DrvEmbMemInit(void *pInitParam); // Set Init Parameters +UINT32 DrvEmbMemOpen(void); // Common Constructor +UINT32 DrvEmbMemClose(void); // Common Destructor +UINT32 DrvEmbMemState(UINT32 StateID, UINT32 Value); // General Properties +UINT32 DrvEmbMemControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2); // General Methods +UINT32 DrvEmbMemCommand(CHAR *pcCmdStr); //General Command Console + +//User define SPI-NOR table sample code +#if 0 +static SPI_FLASH_INFO user_define_spi_flash_support_tbl[] = { + // XTX PN25F32B (4MB) + { + //1st ID : id[0] 2nd ID : id[1] 3rd ID : id[2] + //manufacture ID memory type memory capacity + 0x0B, 0x40, 0x16, + //total size (unit: byte) sector size (unit: byte) block size (unit: byte) + 0x400000, 0x10000, 0x10000, + + //sectr count (unit: sector) support EWSR command support AAI command support SECTOR_ERASE command (0x20) + 0x800000 / 0x10000, FALSE, FALSE, TRUE, + + //CHIP erase time (unit: ms) Block erase time (unit: ms) Sector erase time (unit: ms) page program time (unit: ms) + 200000, 4000, 1600, 5, + + //Wide bus (dual/quad) supported by this flash + SPI_FLASH_BUSWIDTH_DUAL | SPI_FLASH_BUSWIDTH_QUAD_TYPE5 + }, + + // XTX PN25F64B (8MB) + { + //1st ID : id[0] 2nd ID : id[1] 3rd ID : id[2] + //manufacture ID memory type memory capacity + 0x0B, 0x40, 0x17, + //total size (unit: byte) sector size (unit: byte) block size (unit: byte) + 0x800000, 0x10000, 0x10000, + + //sectr count (unit: sector) support EWSR command support AAI command support SECTOR_ERASE command (0x20) + 0x800000 / 0x10000, FALSE, FALSE, TRUE, + + //CHIP erase time (unit: ms) Block erase time (unit: ms) Sector erase time (unit: ms) page program time (unit: ms) + 200000, 4000, 1600, 5, + SPI_FLASH_BUSWIDTH_DUAL | SPI_FLASH_BUSWIDTH_QUAD_TYPE5 + }, + + +}; + +static BOOL pmc_identifySpi(UINT32 uiMfgID, UINT32 uiTypeID, UINT32 uiCapacity, PSPIFLASH_IDENTIFY pIdentify) +{ + UINT32 uiNorTblID; + BOOL user_table_found = FALSE; + + for (uiNorTblID = 0; uiNorTblID < (sizeof(user_define_spi_flash_support_tbl) / sizeof(SPI_FLASH_INFO)); uiNorTblID++) { + if (uiMfgID == user_define_spi_flash_support_tbl[uiNorTblID].uiMfgID && \ + uiTypeID == user_define_spi_flash_support_tbl[uiNorTblID].uiMemType && \ + uiCapacity == user_define_spi_flash_support_tbl[uiNorTblID].uiMemCapacity) { + DBG_DUMP("emu user define spi-nor tbl Maker ID found @[%02d][0x%02x] DeviceID[0x%02x] cap[0x%02x]\r\n", uiNorTblID, user_define_spi_flash_support_tbl[uiNorTblID].uiMfgID, user_define_spi_flash_support_tbl[uiNorTblID].uiMemType, user_define_spi_flash_support_tbl[uiNorTblID].uiMemCapacity); + // For SPI Nor flash only + pIdentify->uiTotalSize = user_define_spi_flash_support_tbl[uiNorTblID].uiTotalSize; + pIdentify->uiBlockSize = user_define_spi_flash_support_tbl[uiNorTblID].uiBlockSize; + pIdentify->uiSectorSize = user_define_spi_flash_support_tbl[uiNorTblID].uiSectorSize; + + pIdentify->uiSectorCnt = user_define_spi_flash_support_tbl[uiNorTblID].uiSectorCnt; + pIdentify->bSupportEWSR = user_define_spi_flash_support_tbl[uiNorTblID].bSupportEWSR; + pIdentify->bSupportAAI = user_define_spi_flash_support_tbl[uiNorTblID].bSupportAAI; + pIdentify->bSupportSecErase = user_define_spi_flash_support_tbl[uiNorTblID].bSupportSecErase; + pIdentify->uiChipEraseTime = user_define_spi_flash_support_tbl[uiNorTblID].uiChipEraseTime; + pIdentify->uiBlockEraseTime = user_define_spi_flash_support_tbl[uiNorTblID].uiBlockEraseTime; + pIdentify->uiSectorEraseTime= user_define_spi_flash_support_tbl[uiNorTblID].uiSectorEraseTime; + pIdentify->uiPageProgramTime= user_define_spi_flash_support_tbl[uiNorTblID].uiPageProgramTime; + + pIdentify->flashWidth = user_define_spi_flash_support_tbl[uiNorTblID].flashWidth; + user_table_found = TRUE; + break; + } + } + return user_table_found; +} +#endif + +//dx object +DX_OBJECT gDevEmbMem0 = { + DXFLAG_SIGN, + DX_CLASS_STORAGE_EXT | DX_TYPE_EMBMEM0, + STORAGE_VER, + "LOADER", + 0, 0, 0, 0, + DrvEmbMemGetcaps0, + 0, + DrvEmbMemInit, + DrvEmbMemOpen, + DrvEmbMemClose, + DrvEmbMemState, + DrvEmbMemControl, + DrvEmbMemCommand, + 0, +}; + +DX_OBJECT gDevEmbMem1 = { + DXFLAG_SIGN, + DX_CLASS_STORAGE_EXT | DX_TYPE_EMBMEM1, + STORAGE_VER, + "MODELEXT", + 0, 0, 0, 0, + DrvEmbMemGetcaps1, + 0, + DrvEmbMemInit, + DrvEmbMemOpen, + DrvEmbMemClose, + DrvEmbMemState, + DrvEmbMemControl, + DrvEmbMemCommand, + 0, +}; + +DX_OBJECT gDevEmbMem2 = { + DXFLAG_SIGN, + DX_CLASS_STORAGE_EXT | DX_TYPE_EMBMEM2, + STORAGE_VER, + "UITRON", + 0, 0, 0, 0, + DrvEmbMemGetcaps2, + 0, + DrvEmbMemInit, + DrvEmbMemOpen, + DrvEmbMemClose, + DrvEmbMemState, + DrvEmbMemControl, + DrvEmbMemCommand, + 0, +}; + +DX_OBJECT gDevEmbMem3 = { + DXFLAG_SIGN, + DX_CLASS_STORAGE_EXT | DX_TYPE_EMBMEM3, + STORAGE_VER, + "UBOOT", + 0, 0, 0, 0, + DrvEmbMemGetcaps3, + 0, + DrvEmbMemInit, + DrvEmbMemOpen, + DrvEmbMemClose, + DrvEmbMemState, + DrvEmbMemControl, + DrvEmbMemCommand, + 0, +}; + +DX_OBJECT gDevEmbMem4 = { + DXFLAG_SIGN, + DX_CLASS_STORAGE_EXT | DX_TYPE_EMBMEM4, + STORAGE_VER, + "LINUX", + 0, 0, 0, 0, + DrvEmbMemGetcaps4, + 0, + DrvEmbMemInit, + DrvEmbMemOpen, + DrvEmbMemClose, + DrvEmbMemState, + DrvEmbMemControl, + DrvEmbMemCommand, + 0, +}; + +DX_OBJECT gDevEmbMem5 = { + DXFLAG_SIGN, + DX_CLASS_STORAGE_EXT | DX_TYPE_EMBMEM5, + STORAGE_VER, + "DSP1", + 0, 0, 0, 0, + DrvEmbMemGetcaps5, + 0, + DrvEmbMemInit, + DrvEmbMemOpen, + DrvEmbMemClose, + DrvEmbMemState, + DrvEmbMemControl, + DrvEmbMemCommand, + 0, +}; + +DX_OBJECT gDevEmbMem6 = { + DXFLAG_SIGN, + DX_CLASS_STORAGE_EXT | DX_TYPE_EMBMEM6, + STORAGE_VER, + "DSP2", + 0, 0, 0, 0, + DrvEmbMemGetcaps6, + 0, + DrvEmbMemInit, + DrvEmbMemOpen, + DrvEmbMemClose, + DrvEmbMemState, + DrvEmbMemControl, + DrvEmbMemCommand, + 0, +}; + +DX_OBJECT gDevEmbMem7 = { + DXFLAG_SIGN, + DX_CLASS_STORAGE_EXT | DX_TYPE_EMBMEM7, + STORAGE_VER, + "PSTORE", + 0, 0, 0, 0, + DrvEmbMemGetcaps7, + 0, + DrvEmbMemInit, + DrvEmbMemOpen, + DrvEmbMemClose, + DrvEmbMemState, + DrvEmbMemControl, + DrvEmbMemCommand, + 0, +}; + +DX_OBJECT gDevEmbMem8 = { + DXFLAG_SIGN, + DX_CLASS_STORAGE_EXT | DX_TYPE_EMBMEM8, + STORAGE_VER, + "FAT", + 0, 0, 0, 0, + DrvEmbMemGetcaps8, + 0, + DrvEmbMemInit, + DrvEmbMemOpen, + DrvEmbMemClose, + DrvEmbMemState, + DrvEmbMemControl, + DrvEmbMemCommand, + 0, +}; +#if defined(__FREERTOS) +#if !defined(_EMBMEM_EMMC_) +static UINT32 xDrvEmbMemGetUsedSize(EMB_PARTITION *pPat, UINT32 nPat) +{ + UINT32 i; + UINT32 uiOffset = 0; + for (i = 0; i < nPat; i++) { + if (pPat->EmbType != EMBTYPE_UNKNOWN) { + if ((pPat->PartitionOffset != 0) && (pPat->PartitionOffset < uiOffset)) { + DBG_ERR("Partition[%d] overlaps previous one.\r\n", i); + return 0; + } + + if ((i==0) || (i!=0 && pPat->PartitionOffset!=0)) + uiOffset = pPat->PartitionOffset + pPat->PartitionSize; + } + + pPat++; + } + return uiOffset; +} +#endif +#endif +static UINT32 xDrvEmbMemGetcaps(UINT32 DxType, UINT32 CapID, UINT32 Param1) +{ + UINT32 v = 0; + if (CapID == STORAGE_CAPS_HANDLE) { + const UINT32 Map[] = { + STRG_OBJ_FW_RSV1, + STRG_OBJ_FW_RSV2, + STRG_OBJ_FW_RSV3, + STRG_OBJ_FW_RSV4, + STRG_OBJ_FW_RSV5, + STRG_OBJ_FW_RSV6, + STRG_OBJ_FW_RSV7, + STRG_OBJ_PSTORE1, + STRG_OBJ_FAT1 + }; + if (DxType >= sizeof(Map) / sizeof(Map[0])) { + DBG_ERR("out of id: %d\r\n", DxType); + return 0; + } + +// v = (UINT32)EMB_GETSTRGOBJ(Map[DxType]); + //speical case handle +#if defined(__FREERTOS) +#if defined(_EMBMEM_SPI_NOR_) + if (DxType == DX_TYPE_EMBMEM8) { //FAT change to ramdisk + v = (UINT32)ramdsk_getStorageObject(); + } +#endif +#endif + } + return v; +} + +UINT32 DrvEmbMemGetcaps0(UINT32 CapID, UINT32 Param1) +{ + return xDrvEmbMemGetcaps(DX_TYPE_EMBMEM0, CapID, Param1); +} +UINT32 DrvEmbMemGetcaps1(UINT32 CapID, UINT32 Param1) +{ + return xDrvEmbMemGetcaps(DX_TYPE_EMBMEM1, CapID, Param1); +} +UINT32 DrvEmbMemGetcaps2(UINT32 CapID, UINT32 Param1) +{ + return xDrvEmbMemGetcaps(DX_TYPE_EMBMEM2, CapID, Param1); +} +UINT32 DrvEmbMemGetcaps3(UINT32 CapID, UINT32 Param1) +{ + return xDrvEmbMemGetcaps(DX_TYPE_EMBMEM3, CapID, Param1); +} +UINT32 DrvEmbMemGetcaps4(UINT32 CapID, UINT32 Param1) +{ + return xDrvEmbMemGetcaps(DX_TYPE_EMBMEM4, CapID, Param1); +} +UINT32 DrvEmbMemGetcaps5(UINT32 CapID, UINT32 Param1) +{ + return xDrvEmbMemGetcaps(DX_TYPE_EMBMEM5, CapID, Param1); +} +UINT32 DrvEmbMemGetcaps6(UINT32 CapID, UINT32 Param1) +{ + return xDrvEmbMemGetcaps(DX_TYPE_EMBMEM6, CapID, Param1); +} +UINT32 DrvEmbMemGetcaps7(UINT32 CapID, UINT32 Param1) +{ + return xDrvEmbMemGetcaps(DX_TYPE_EMBMEM7, CapID, Param1); +} +UINT32 DrvEmbMemGetcaps8(UINT32 CapID, UINT32 Param1) +{ + return xDrvEmbMemGetcaps(DX_TYPE_EMBMEM8, CapID, Param1); +} + +UINT32 DrvEmbMemInit(void *pInitParam) // Set Init Parameters +{ + DXSTRG_INIT *g_pInit = (DXSTRG_INIT *)pInitParam; //fat and pstore not complete + + if (!g_pInit) { + return DX_PARAM_ERROR; + } + + DBG_FUNC_BEGIN("\r\n"); +#if defined(__FREERTOS) +#if defined(_EMBMEM_EMMC_) + static BOOL bEmmcInitOnce = FALSE; + if (!bEmmcInitOnce) { + sdio3_setCallBack(SDIO_CALLBACK_CARD_DETECT, (SDIO_CALLBACK_HDL)xSdioDet); + sdio3_setCallBack(SDIO_CALLBACK_WRITE_PROTECT, (SDIO_CALLBACK_HDL)xSdioWp); + + // Support default speed + high speed + sdio3_setConfig(SDIO_CONFIG_ID_BUS_SPEED_MODE, SDIO_BUS_SPEED_MODE_DS | SDIO_BUS_SPEED_MODE_HS); + // Default speed driving -> 5.0 mA + sdio3_setConfig(SDIO_CONFIG_ID_DS_DRIVING, 50); + // High speed driving -> 10.0 mA + sdio3_setConfig(SDIO_CONFIG_ID_HS_DRIVING, 100); + // Adjust driving/sink according to operating mode + sdio3_setConfig(SDIO_CONFIG_ID_DRIVING_SINK_EN, TRUE); + + sdio3_setConfig(SDIO_CONFIG_ID_BUS_WIDTH, SD_HOST_BUS_4_BITS); + sdio3_setConfig(SDIO_CONFIG_ID_FORMAD_OEMID, (UINT32)"NOVATEK"); + sdio3_setConfig(SDIO_CONFIG_ID_FORMAD_VOL_LABLE, (UINT32)"SD_VOL"); + sdio3_setConfig(SDIO_CONFIG_ID_FORMAD_RAND_VOL_ID_EN, TRUE); + bEmmcInitOnce = TRUE; + } +#elif defined(_EMBMEM_SPI_NAND_) + static BOOL bSpiNandInitOnce = FALSE; + if (!bSpiNandInitOnce) { + nand_setConfig(NAND_CONFIG_ID_FREQ, 96000000); + nand_setConfig(NAND_CONFIG_ID_NAND_TYPE, NANDCTRL_SPI_NAND_TYPE); + bSpiNandInitOnce = TRUE; + } +#elif defined(_EMBMEM_SPI_NOR_) + static BOOL bSpiNandInitOnce = FALSE; + if (!bSpiNandInitOnce) { + nand_setConfig(NAND_CONFIG_ID_NAND_TYPE, NANDCTRL_SPI_NOR_TYPE); + bSpiNandInitOnce = TRUE; + } +#endif +#endif + + { + DXSTRG_PARTITION *p = &(g_pInit->prt); + DX_HANDLE DxNandDev = Dx_GetObject(p->uiDxClassType); + STORAGE_OBJ *pStrg = (STORAGE_OBJ *)Dx_Getcaps(DxNandDev, STORAGE_CAPS_HANDLE, 0); + UINT32 blksize = 0; + if (!pStrg) { + DBG_ERR("DrvEmbMemInit: STORAGE_OBJ is null. uiDxClassType=%x\n", p->uiDxClassType); + return E_SYS; + } + pStrg->Lock(); + + + + if (p->uiDxClassType == (DX_CLASS_STORAGE_EXT | DX_TYPE_EMBMEM0)) { + //User define SPI-NOR table sample code + #if 0 + if(pStrg->ExtIOCtrl(STRG_EXT_CMD_SPI_IDENTIFY_CB, (UINT32)pmc_identifySpi, 0) == E_OK) { + DBG_IND("^GSet user define SPI-NOR table success\r\n"); + } else { + DBG_ERR("^RSet user define SPI-NOR table fail\r\n"); + } + #endif + pStrg->SetParam(STRG_SET_MEMORY_REGION, g_pInit->buf.addr, g_pInit->buf.size); + pStrg->SetParam(STRG_SET_PARTITION_SECTORS, p->uiPhyAddr, p->uiPhySize); + pStrg->GetParam(STRG_GET_BEST_ACCESS_SIZE, (UINT32)&blksize, 0); //get block size + if (p->uiPhyAddr != 0) { + DBG_ERR("loader area have to be at phyical address 0.\r\n"); + return E_PAR; + } + if (blksize != _EMBMEM_BLK_SIZE_) { + DBG_FATAL("EMBMEM_BLK_SIZE in ModelConfig set wrong, must be 0x%0X vs 0x%0X. Set it right and rebuild ModelExt and Project\r\n", blksize, _EMBMEM_BLK_SIZE_); + return E_PAR; + } + + MODELEXT_HEADER *header; + EMB_PARTITION *pEmbPat = (EMB_PARTITION *)Dx_GetModelExtCfg(MODELEXT_TYPE_EMB_PARTITION, &header); + + if (!pEmbPat || !header) { + DBG_ERR("MODELEXT_TYPE_EMB_PARTITION is null\n"); + return E_SYS; + } +#if defined(__FREERTOS) +#if !defined(_EMBMEM_EMMC_) //EMMC not support STRG_GET_DEVICE_PHY_SIZE + UINT32 PhySize; + UINT32 UsedSize = xDrvEmbMemGetUsedSize(pEmbPat, header->number); + pStrg->GetParam(STRG_GET_DEVICE_PHY_SIZE, (UINT32)&PhySize, 0); + + if (UsedSize == 0) { + return E_PAR; + } + + if (UsedSize > PhySize) { + DBG_ERR("UsedSize (%08X) > PhySize (%08X)\r\n", UsedSize, PhySize); + return E_PAR; + } +#endif +#endif + } else { + pStrg->SetParam(STRG_SET_MEMORY_REGION, g_pInit->buf.addr, g_pInit->buf.size); + pStrg->SetParam(STRG_SET_PARTITION_RSV_SECTORS, p->uiResvSize, 0); + pStrg->SetParam(STRG_SET_PARTITION_SECTORS, p->uiPhyAddr, p->uiPhySize); + } + + pStrg->Unlock(); + } + + return DX_OK; +} + +UINT32 DrvEmbMemOpen(void) // Common Constructor +{ + DBG_FUNC_BEGIN("\r\n"); + return DX_OK; +} + +UINT32 DrvEmbMemClose(void) // Common Destructor +{ + DBG_FUNC_BEGIN("\r\n"); + return DX_OK; +} + +UINT32 DrvEmbMemState(UINT32 StateID, UINT32 Value) // General Properties +{ + DBG_FUNC_BEGIN("\r\n"); + + if (StateID & DXGET) { + UINT32 rvalue = 0; + StateID &= ~DXGET; + DBG_IND("get %08x\r\n", StateID); + switch (StateID) { + case STORAGE_STATE_INSERT: + rvalue = TRUE; + break; + case STORAGE_STATE_LOCK: + rvalue = FALSE; + break; + default: + DBG_ERR("state=0x%02X not support!\r\n", StateID); + break; + } + return rvalue; + } else if (StateID & DXSET) { + StateID &= ~DXSET; + DBG_IND("set %08x\r\n", StateID); + switch (StateID) { + default: + DBG_ERR("state=0x%02X not support!\r\n", StateID); + break; + } + } + return DX_OK; +} + +UINT32 DrvEmbMemControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2) // General Methods +{ + DBG_FUNC_BEGIN("\r\n"); + DBG_IND("ctrl %08x\r\n", CtrlID); + + switch (CtrlID) { + default: + DBG_ERR("ctrlid=0x%02X not support!\r\n", CtrlID); + break; + } + return DX_OK; +} + +UINT32 DrvEmbMemCommand(CHAR *pcCmdStr) //General Command Console +{ + switch (*pcCmdStr) { + case 'd': + /*if (!strncmp(pcCmdStr, "Nand dump", 9)) + { + return TRUE; + }*/ + break; + } + return FALSE; +} + +#endif diff --git a/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxUsb.c b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxUsb.c new file mode 100755 index 000000000..ddb168a21 --- /dev/null +++ b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxUsb.c @@ -0,0 +1,205 @@ +/** + Copyright Novatek Microelectronics Corp. 2013. All rights reserved. + + @file DxUSB.c + @ingroup mIDxUSB + + @brief Detect USB connection status. + + @date 2013/04/30 +*/ + +#include "UsbDevDef.h" +#include "usb2dev.h" +#include "DxUSB.h" +#include "DxCommon.h" +#include "DxApi.h" +#include "io/gpio.h" + +/////////////////////////////////////////////////////////////////////////////// +#define __MODULE__ DxUSB +#define __DBGLVL__ 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER +#define __DBGFLT__ "*" //*=All, [mark]=CustomClass +#include +/////////////////////////////////////////////////////////////////////////////// +//public func +UINT32 DetUSBGetcaps(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +UINT32 DetUSBSetcfgs(UINT32 CfgID, UINT32 Param1); // Set Config Setting +UINT32 DetUSBInit(void *pInitParam); // Set Init Parameters +UINT32 DetUSBOpen(void); // Common Constructor +UINT32 DetUSBClose(void); // Common Destructor +UINT32 DetUSBState(UINT32 StateID, UINT32 Value); // General Properties +UINT32 DetUSBControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2); // General Methods +UINT32 DetUSBCommand(CHAR *pcCmdStr); //General Command Console + +#define GPIO_VBUS D_GPIO_7 + +//dx object +DX_OBJECT gDevUSB = { + DXFLAG_SIGN, + DX_CLASS_USB_EXT, + DETUSB_VER, + "DETECT_USB", + 0, 0, 0, 0, + DetUSBGetcaps, + DetUSBSetcfgs, + DetUSBInit, + DetUSBOpen, + DetUSBClose, + DetUSBState, + DetUSBControl, + DetUSBCommand, + 0, +}; + +static BOOL _DxUSB_get_vbus(void) +{ + gpio_setDir(GPIO_VBUS, GPIO_DIR_INPUT); + return (BOOL)gpio_getPin(GPIO_VBUS); +} + + + +static BOOL DxUSB_GetIsUSBPlug(void) +{ +#if 0 + return (usb2dev_state_change()); +#else + return _DxUSB_get_vbus(); +#endif +} + +static UINT32 DxUSB_UpdateConnectType(void) +{ + USB_CHARGER_STS RetUSB; + UINT32 uiUSBCurrType; + if (!DxUSB_GetIsUSBPlug()) { + uiUSBCurrType = USB_CONNECT_NONE; + } else { + RetUSB = usb2dev_check_charger(0); + switch (RetUSB) { + case USB_CHARGER_STS_NONE: + DBG_DUMP("CONNECT to PC\r\n"); + uiUSBCurrType = USB_CONNECT_PC; + break; + case USB_CHARGER_STS_CHARGING_DOWNSTREAM_PORT: + DBG_DUMP("CONNECT to Charging PC\r\n"); + uiUSBCurrType = USB_CONNECT_CHARGING_PC; + break; + case USB_CHARGER_STS_CHARGER: + DBG_DUMP("CONNECT to CHARGER\r\n"); + uiUSBCurrType = USB_CONNECT_CHARGER; + break; + default: + DBG_ERR("CONNECTION UNKNOWN!\r\n"); + uiUSBCurrType = USB_CONNECT_UNKNOWN; + break; + } + } + return uiUSBCurrType; +} + + + +UINT32 DetUSBGetcaps(UINT32 CapID, UINT32 Param1) // Get Capability Flag (Base on interface version) +{ + UINT32 v = 0; + switch (CapID) { + case DETUSB_CAPS_BASE: + DBG_IND("get USB caps\r\n"); + v = DETUSB_BF_DETPLUG | DETUSB_BF_CONNTYPE; + break; + case DETUSB_CAPS_PLUG: + DBG_IND("get USB plug\r\n"); + v = DxUSB_GetIsUSBPlug(); + break; + case DETUSB_CAPS_CONN_TYPE: + DBG_IND("get USB connection type\r\n"); + v = DxUSB_UpdateConnectType(); + break; + default: + break; + } + return v; +} +UINT32 DetUSBSetcfgs(UINT32 CfgID, UINT32 Param1) // Set Config Setting +{ + switch (CfgID) { + case DETUSB_CFG_STANDARD_CHARGER: + DBG_IND("set standard charger %08x\r\n", Param1); + usb2dev_set_config(USB_CONFIG_ID_STANDARD_CHARGER, Param1); + break; + + default: + break; + } + return DX_OK; +} +UINT32 DetUSBInit(void *pInitParam) // Set Init Parameters +{ + DBG_FUNC_BEGIN("\r\n"); + return DX_OK; +} + +UINT32 DetUSBOpen(void) // Common Constructor +{ + DBG_FUNC_BEGIN("\r\n"); + return DX_OK; +} + +UINT32 DetUSBClose(void) // Common Destructor +{ + DBG_FUNC_BEGIN("\r\n"); + return DX_OK; +} + +UINT32 DetUSBState(UINT32 StateID, UINT32 Value) // General Properties +{ + DBG_FUNC_BEGIN("\r\n"); + + if (StateID & DXGET) { + UINT32 rvalue = 0; + StateID &= ~DXGET; + DBG_IND("get %08x\r\n", StateID); + switch (StateID) { + default: + DBG_ERR("state=0x%02X not support!\r\n", StateID); + break; + } + return rvalue; + } else if (StateID & DXSET) { + StateID &= ~DXSET; + DBG_IND("set %08x\r\n", StateID); + switch (StateID) { + default: + DBG_ERR("state=0x%02X not support!\r\n", StateID); + break; + } + } + return DX_OK; +} + +UINT32 DetUSBControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2) // General Methods +{ + DBG_FUNC_BEGIN("\r\n"); + DBG_IND("ctrl %08x\r\n", CtrlID); + + switch (CtrlID) { + default: + DBG_ERR("ctrlid=0x%02X not support!\r\n", CtrlID); + break; + } + return DX_OK; +} + +UINT32 DetUSBCommand(CHAR *pcCmdStr) //General Command Console +{ + return FALSE; +} + + + + +//============================================ + + diff --git a/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/IOCfg.c b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/IOCfg.c new file mode 100755 index 000000000..4563d88cf --- /dev/null +++ b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/IOCfg.c @@ -0,0 +1,550 @@ +/** + Copyright Novatek Microelectronics Corp. 2005. All rights reserved. + + @file IOCfg.c + @ingroup mIPRJAPCommonIO + + @brief IO config module + This file is the IO config module + + @note Nothing. + + @date 2005/12/24 +*/ + +/** \addtogroup mIPRJAPCommonIO */ +//@{ + +#include "kwrap/type.h" +#include "DrvExt.h" +#include "IOCfg.h" +#include "IOInit.h" +#include "PrjInc.h" +#if HUNTING_CAMERA_MCU == ENABLE +#include + +#define IRLED_CTRL_BY_PWM ENABLE//DISABLE// +#define IRLED_PWMID PWMID_3 /* P_GPIO3 */ +#endif + +/////////////////////////////////////////////////////////////////////////////// +#define __MODULE__ DxDrv +#define __DBGLVL__ 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER +#define __DBGFLT__ "*" //*=All, [mark]=CustomClass +#include +/////////////////////////////////////////////////////////////////////////////// + +static VK_TASK_HANDLE g_handle_ir_cut = 0; + +#if (USE_VIO == ENABLE) +UINT32 Virtual_IO[VIO_MAX_ID] = {0}; +UINT32 vio_getpin(UINT32 id) +{ + if (id >= VIO_MAX_ID) { + return 0; + } + return Virtual_IO[id]; +} +void vio_setpin(UINT32 id, UINT32 v) +{ + if (id >= VIO_MAX_ID) { + return; + } + Virtual_IO[id] = v; +} +#endif + +#define GPIO_SET_NONE 0xffffff +#define GPIO_SET_OUTPUT_LOW 0x0 +#define GPIO_SET_OUTPUT_HI 0x1 + +/** + Do GPIO initialization + + Initialize input/output pins, and pin status + + @param void + @return void +*/ +void IO_InitGPIO(void) +{ +#if 0 + UINT32 iSValue; + + MODELEXT_HEADER *header; + GPIO_INIT_OBJ *uiGPIOMapInitTab; + + uiGPIOMapInitTab = (GPIO_INIT_OBJ *)Dx_GetModelExtCfg(MODELEXT_TYPE_GPIO_INFO, &header); + if (!uiGPIOMapInitTab || !header) { + DBG_FATAL("Modelext: iocfg is null\n"); + return; + } + + UINT32 totalGpioInitCount = header->number; + + DBG_IND("GPIO START\r\n"); + //-------------------------------------------------------------------- + // Open GPIO driver + //-------------------------------------------------------------------- + gpio_open(); + for (iSValue = 0 ; iSValue < totalGpioInitCount ; iSValue++) { + if (uiGPIOMapInitTab[iSValue].GpioDir == GPIO_DIR_INPUT) { + gpio_setDir(uiGPIOMapInitTab[iSValue].GpioPin, GPIO_DIR_INPUT); + pad_set_pull_updown(uiGPIOMapInitTab[iSValue].PadPin, uiGPIOMapInitTab[iSValue].PadDir); + } else { + gpio_setDir(uiGPIOMapInitTab[iSValue].GpioPin, GPIO_DIR_OUTPUT); + if (uiGPIOMapInitTab[iSValue].PadDir == GPIO_SET_OUTPUT_HI) { + gpio_setPin(uiGPIOMapInitTab[iSValue].GpioPin); + } else { + gpio_clearPin(uiGPIOMapInitTab[iSValue].GpioPin); + } + } + } + + //-------------------------------------------------------------------- + // Use Non-Used PWM to be Delay Timer + //-------------------------------------------------------------------- +#if defined(PWMID_TIMER) + Delay_setPwmChannels(PWMID_TIMER); +#endif + + DBG_IND("GPIO END\r\n"); +#endif +} + +/** + Initialize voltage detection + + Initialize voltage detection for battery and flash + + @param void + @return void +*/ + +void IO_InitADC(void) +{ +#if 1 + if (adc_open(ADC_CH_VOLDET_BATTERY) != E_OK) { + DBG_ERR("Can't open ADC channel for battery voltage detection\r\n"); + return; + } + + //650 Range is 250K Hz ~ 2M Hz + adc_setConfig(ADC_CONFIG_ID_OCLK_FREQ, 250000); //250K Hz + + //battery voltage detection + adc_setChConfig(ADC_CH_VOLDET_BATTERY, ADC_CH_CONFIG_ID_SAMPLE_FREQ, 10000); //10K Hz, sample once about 100 us for CONTINUOUS mode + adc_setChConfig(ADC_CH_VOLDET_BATTERY, ADC_CH_CONFIG_ID_SAMPLE_MODE, (VOLDET_ADC_MODE) ? ADC_CH_SAMPLEMODE_CONTINUOUS : ADC_CH_SAMPLEMODE_ONESHOT); + adc_setChConfig(ADC_CH_VOLDET_BATTERY, ADC_CH_CONFIG_ID_INTEN, FALSE); +#endif +#if (ADC_KEY == ENABLE) + if (adc_open(ADC_CH_VOLDET_KEY1) != E_OK) { + DBG_ERR("Can't open ADC channel for battery voltage detection\r\n"); + return; + } + adc_setChConfig(ADC_CH_VOLDET_KEY1, ADC_CH_CONFIG_ID_SAMPLE_FREQ, 10000); //10K Hz, sample once about 100 us for CONTINUOUS mode + adc_setChConfig(ADC_CH_VOLDET_KEY1, ADC_CH_CONFIG_ID_SAMPLE_MODE, (VOLDET_ADC_MODE) ? ADC_CH_SAMPLEMODE_CONTINUOUS : ADC_CH_SAMPLEMODE_ONESHOT); + adc_setChConfig(ADC_CH_VOLDET_KEY1, ADC_CH_CONFIG_ID_INTEN, FALSE); +#endif + + // Enable adc control logic + adc_setEnable(TRUE); + //??? + //this delay is from 650, but it is not necessary for current IC + //Delay_DelayMs(15); //wait ADC stable //for pwr on speed up +} + +void Dx_InitIO(void) // Config IO for external device +{ + + //IO_InitIntDir(); //initial interrupt destination + + //IO_InitPinmux(); //initial PINMUX config + //IO_InitGPIO(); //initial GPIO pin status + IO_InitADC(); //initial ADC pin status +#if 0//defined(_MCU_ENABLE_) + //Open for DxPower operating + Dx_Open(Dx_GetObject(DX_CLASS_POWER_EXT)); + MCUCtrl_Open(); +#endif +gpio_setDir(GPIO_IR_LED_PWR, GPIO_DIR_OUTPUT); +gpio_clearPin(GPIO_IR_LED_PWR); + +gpio_setDir(GPIO_IRCUT_MEN1, GPIO_DIR_OUTPUT); +gpio_clearPin(GPIO_IRCUT_MEN1); + +gpio_setDir(GPIO_IRCUT_MEN2, GPIO_DIR_OUTPUT); +gpio_clearPin(GPIO_IRCUT_MEN2); + +} + +void Dx_UninitIO(void) // Config IO for external device +{ +} + + + +INT32 GPIO_GetBitVal(UINT32 bitNum, UINT32 *bitVal) +{ + *bitVal = gpio_getPin(bitNum); + + return 0; +} +INT32 GPIO_SetBitVal(UINT32 bitNum, UINT32 bitVal) +{ + gpio_setDir(bitNum, GPIO_DIR_OUTPUT); + + if (bitVal) { + gpio_setPin(bitNum); + } else { + gpio_clearPin(bitNum); + } + return 0; +} + +INT32 GPIO_SwitchAdc(UINT32 channel) +{ + //0: ntc, 1:vol + if (channel == 0) { + GPIO_SetBitVal(GPIO_CHARGEIC_ADC_SWITCH, 0); + } else { + GPIO_SetBitVal(GPIO_CHARGEIC_ADC_SWITCH, 1); + } + return 0; +} + +INT32 ADC_GetVal(UINT32 channel, UINT32 *value) +{ + UINT32 adc_value = 0; + + GPIO_SwitchAdc(channel); + + adc_value = adc_readData(ADC_CHANNEL_0); + + *value = adc_value; + + return 0; +} + +INT32 GPIO_SetChargeICEnable(UINT32 en) +{ + GPIO_SetBitVal(GPIO_CHARGEIC_EN, en); + return 0; +} + +INT32 GPIO_GetChargeICEnable(void) +{ + return gpio_getPin(GPIO_CHARGEIC_EN); +} + +INT32 GPIO_GetChargeICState(void) +{ + return gpio_getPin(GPIO_CHARGEIC_STATE); +} + + +INT32 GPIO_GetAccStatus(void) +{ + return !gpio_getPin(GPIO_ACC); +} + +INT32 GPIO_GetParkingStatus(void) +{ + return !gpio_getPin(GPIO_PARKING); +} + + + +INT32 GPIO_SetPAStatus(BOOL en) +{ + gpio_setDir(GPIO_PA, GPIO_DIR_OUTPUT); + if(en) + { + gpio_setPin(GPIO_PA); + } + else + { + gpio_clearPin(GPIO_PA); + } + return gpio_getPin(GPIO_PA); +} + +void GPIO_SetLedStatus(UINT32 led,BOOL en) +{ + + switch(led) + { + case 0: + { + gpio_setDir(GPIO_RED_LED, GPIO_DIR_OUTPUT); + if(en) + { + gpio_setPin(GPIO_RED_LED); + } + else + { + gpio_clearPin(GPIO_RED_LED); + } + } + break; + case 1: + { + gpio_setDir(GPIO_GREEN_LED, GPIO_DIR_OUTPUT); + if(en) + { + gpio_setPin(GPIO_GREEN_LED); + } + else + { + gpio_clearPin(GPIO_GREEN_LED); + } + } + break; + default: + break; + } +} + +INT32 GPIO_SetBacklightStatus(BOOL en) +{ + gpio_setDir(GPIO_LCD_BLG_PCTL, GPIO_DIR_OUTPUT); + if(en) + { + gpio_setPin(GPIO_LCD_BLG_PCTL); + } + else + { + gpio_clearPin(GPIO_LCD_BLG_PCTL); + } + return gpio_getPin(GPIO_LCD_BLG_PCTL); +} + + void GOIO_Turn_Onoff_IRCUT(UINT8 onoff) + { + static UINT32 ir_flag = 1; + //printf("[%s:%d]s onoff:%d\n",__FUNCTION__,__LINE__,onoff); + DBG_IND(" s onoff:%d\n",onoff); + + if(ir_flag) + { + gpio_setDir(GPIO_IRCUT_MEN1, GPIO_DIR_OUTPUT); + gpio_setDir(GPIO_IRCUT_MEN2, GPIO_DIR_OUTPUT); + ir_flag = 0; + } + + if(onoff ==1) + { + gpio_setPin(GPIO_IRCUT_MEN1); + gpio_clearPin(GPIO_IRCUT_MEN2); + sf_ir_cut_ctrl_PowerOff(); + + } + else if(onoff == 0) + { + gpio_setPin(GPIO_IRCUT_MEN2); + gpio_clearPin(GPIO_IRCUT_MEN1); + sf_ir_cut_ctrl_PowerOff(); + } + else + { + gpio_clearPin(GPIO_IRCUT_MEN1); + gpio_clearPin(GPIO_IRCUT_MEN2); + } + //DBG_DUMP("\r\n DrvGPIO_SetIRCut value:%d \r\n",onoff); + //Delay_DelayMs(20); + //gpio_clearPin(GPIO_IRCUT_MEN1); + //gpio_clearPin(GPIO_IRCUT_MEN2); + //printf("[%s:%d]e\n",__FUNCTION__,__LINE__); + DBG_IND(" e\n"); + } + + +void GPIO_IRLed_Turn_Onoff(BOOL onoff) +{ + gpio_setDir(GPIO_IR_LED_PWR, GPIO_DIR_OUTPUT); + if (onoff ==1) + gpio_setPin(GPIO_IR_LED_PWR); + else + gpio_clearPin(GPIO_IR_LED_PWR); + DBG_ERR("\r\n DrvGPIO_SetIR LED value:%d \r\n",onoff); +} + +/************************************************* + Function: IrCutCtrlThreadTask + Description: receive event and set ir cut power off + Input: N/A + Output: N/A + Return: N/A + Others: N/A +*************************************************/ + +THREAD_RETTYPE IrCutCtrlThread(void *arg) +{ + THREAD_ENTRY(); + + Delay_DelayMs(80); + GOIO_Turn_Onoff_IRCUT(2); //IR CUT power off + //DBG_DUMP("\r\n [%s:%d] s3 \r\n",__FUNCTION__,__LINE__); + + g_handle_ir_cut = 0; + THREAD_RETURN(0); +} + +/************************************************* + Function: IrCutCtrlThreadInit + Description: init thread + Input: N/A + Output: N/A + Return: N/A + Others: N/A +*************************************************/ +static void IrCutCtrlThreadInit(void) +{ + //DBG_DUMP("\r\n [%s:%d] s \r\n",__FUNCTION__,__LINE__); + + g_handle_ir_cut = vos_task_create(IrCutCtrlThread, NULL, "IrCutCtrlThread", 18, 2048); + if(!g_handle_ir_cut){ + DBG_ERR("[ERROR] IR CUT thread creat failed!\r\n"); + Delay_DelayMs(80); + GOIO_Turn_Onoff_IRCUT(2); + return ; + } + else + vos_task_resume(g_handle_ir_cut); + //DBG_DUMP("\r\n [%s:%d] e g_handle_ir_cut:%d\r\n",__FUNCTION__,__LINE__,g_handle_ir_cut); +} + +/************************************************* + Function: sf_ir_cut_ctrl_PowerOff + Description: init and set event flag + Input: N/A + Output: N/A + Return: N/A + Others: N/A +*************************************************/ +void sf_ir_cut_ctrl_PowerOff(void) +{ + //DBG_DUMP("\r\n [%s:%d] s \r\n",__FUNCTION__,__LINE__); + if(g_handle_ir_cut == 0) + { + IrCutCtrlThreadInit(); + } + //DBG_DUMP("\r\n [%s:%d] e \r\n",__FUNCTION__,__LINE__); +} + + +#if HUNTING_CAMERA_MCU == ENABLE + +extern int nvt_system(const char* pCommand); + +/************************************************* + Function: sf_ir_led_set + Description: IR LED luminance control + Input: mode: 1:on 0:off ; + Output: N/A + Return: N/A + Others: N/A +*************************************************/ +void sf_ir_led_set(UINT8 mode, UINT8 flashLed, UINT8 stillExp, UINT8 isSnapVideo) +{ + //printf("[%s:%d]s mode:%d,flashLed:%d,isSnapVideo:%d\n",__FUNCTION__,__LINE__,mode,flashLed, isSnapVideo); + DBG_IND(" s mode:%d,flashLed:%d,isSnapVideo:%d\n",mode,flashLed, isSnapVideo); + UINT32 ui_rise = 0; ///< Rising at which clock + int ret = 0; + char argv[70] = {0}; +//530£¬940µÆ ´ý»úµçÁ÷120 ¿ªµÆpic1.0£¨10£© video810£¨25£© + if(mode) + { + #if HUNTING_IR_LED_940 == ENABLE + if(isSnapVideo) + { + if(flashLed == 0) + { + ui_rise = 30;//70% + } + else + { + ui_rise = 60;//40% + } + } + else + { + if(flashLed == 0) + { + ui_rise = 15;//85% + } + else + { + ui_rise = 55;//45% + } + } + #else + + //530£¬850µÆ ´ý»úµçÁ÷120 ¿ªµÆpic800£¨25£© video680£¨35£© + if(isSnapVideo) + { + if(flashLed == 0) + { + ui_rise = 35;//65% + } + else + { + ui_rise = 65;//35% + } + } + else + { + if(flashLed == 0) + { + ui_rise = 25;//75% + } + else + { + ui_rise = 60;//40% + } + } + #endif + + sprintf(argv, "echo \"w openpwm 3 100 %d 100 14 0 0 0\" > /proc/pwm/cmd", ui_rise); + ret = nvt_system(argv); + + //printf("%s:%d argv:%s\n", __FUNCTION__, __LINE__,argv); + DBG_IND(" argv:%s\n", argv); + if(0 != ret) + { + printf("%s:%d sf pwm open failed, errno\n", __FUNCTION__, __LINE__); + DBG_ERR("sf pwm open failed, errno(%d)\n", errno); + return; + } + else + { + DBG_IND("sf pwm open success\n"); + //printf("%s:%d sf pwm open success\n", __FUNCTION__, __LINE__); + //DBG_DUMP("sf pwm open success\n"); + } + + sf_set_night_led_flag(1); + } + else + { + sprintf(argv, "echo \"w closepwm 3\" > /proc/pwm/cmd"); + ret = nvt_system(argv); + DBG_IND("argv:%s\n",argv); + //printf("%s:%d argv:%s\n", __FUNCTION__, __LINE__,argv); + if(0 != ret) + { + DBG_ERR("sf pwm failed, errno(%d)\n", errno); + printf("%s:%d sf pwm failed, errno\n", __FUNCTION__, __LINE__); + return; + } + else + { + DBG_IND("sf pwm close success\n"); + //printf("%s:%d sf pwm close success\n", __FUNCTION__, __LINE__); + //DBG_DUMP("sf pwm close success\n"); + } + sf_set_night_led_flag(0); + } +} + +#endif diff --git a/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/IOCfg.h b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/IOCfg.h new file mode 100755 index 000000000..faf42ff79 --- /dev/null +++ b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/IOCfg.h @@ -0,0 +1,475 @@ +/** + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. + + @file IOCfg.h + @ingroup mIPRJAPCommonIO + + @brief Header file of IO config + This file is the header file of IO config + + @note Nothing. + @date 2012/09/04 +*/ + +/** \addtogroup mIPRJAPCommonIO */ +//@{ + +#ifndef _IOCFG_H +#define _IOCFG_H + +#include "kwrap/type.h" +#include "IOInit.h" +#if 0 +#include "pad.h" +#include "top.h" +#include "gpio.h" +#include "adc.h" + +#include "pwm.h" + +#include "gpio_info.h" +#endif +#include "io/adc.h" +#include "io/gpio.h" + +#define USE_VIO DISABLE + +#if (USE_VIO == ENABLE) +#define VIO_TV_DET 1 +#define VIO_HDMI_DET 2 +#define VIO_LCD2_DET 3 +#define VIO_SENSOR2_DET 4 +#define VIO_SENSOR1_DET 5 +#define VIO_AIN_DET 6 +#define VIO_MAX_ID 16 +extern UINT32 vio_getpin(UINT32 id); +extern void vio_setpin(UINT32 id, UINT32 v); +#endif + +//-------------------------------------------------------------------- +// ADC common +//-------------------------------------------------------------------- + +#define GPIO_KEY ENABLE +#define ADC_KEY DISABLE + +#define VOLDET_ADC_CONT_MODE ENABLE //!< ENABLE for continuous, DISABLE for one-shot + +#if (VOLDET_ADC_CONT_MODE == ENABLE) +#define VOLDET_ADC_MODE TRUE +#else +#define VOLDET_ADC_MODE FALSE +#endif + +//-------------------------------------------------------------------- +// PWM common +//-------------------------------------------------------------------- + + + +//-------------------------------------------------------------------- +// Display device +//-------------------------------------------------------------------- +// LCD communicate +#define LCD_COMM_DUMMY 0 +#define LCD_COMM_BY_GPIO 1 +#define LCD_COMM_BY_SIF 2 +#define LCD_COMM_CTRL LCD_COMM_BY_GPIO + +#if (LCD_COMM_CTRL == LCD_COMM_BY_GPIO) +#define GPIO_LCD_SIF_SEN P_GPIO_7//S_GPIO_4 //FPGA +#define GPIO_LCD_SIF_SCK P_GPIO_8//S_GPIO_5 //FPGA +#define GPIO_LCD_SIF_SDA P_GPIO_9//S_GPIO_6 //FPGA +#endif +#if (LCD_COMM_CTRL == LCD_COMM_BY_SIF) +#define SIF_LCD_CH SIF_CH2 +#define PAD_LCD_SIF_SEN PAD_PIN_PGPIO7 +#define PAD_LCD_SIF_SCK PAD_PIN_PGPIO8 +#define PAD_LCD_SIF_SDA PAD_PIN_PGPIO9 +#define DIR_LCD_SIF_SEN PAD_PULLUP +#define DIR_LCD_SIF_SCK PAD_PULLUP +#define DIR_LCD_SIF_SDA PAD_PULLUP +#endif +//#define GPIO_LCD_SLEEP 87 //FPGA not support +#define GPIO_LCD_RESET L_GPIO_1 + +// LCD backlight +#define LCD_BACKLIGHT_DUMMY 0 +#define LCD_BACKLIGHT_BY_GPIO 1 +#define LCD_BACKLIGHT_BY_PWM 2 +#define LCD_BACKLIGHT_BY_PWRIC 3 +#define LCD_BACKLIGHT_CTRL LCD_BACKLIGHT_BY_GPIO //FPGA +#if (LCD_BACKLIGHT_CTRL == LCD_BACKLIGHT_BY_PWM) +#define GPIO_PWM_LCD_BLG_PCTL x +#define PWMID_LCD_BLG_PCTL PWMID_x +#elif (LCD_BACKLIGHT_CTRL == LCD_BACKLIGHT_BY_GPIO) +#define GPIO_LCD_BLG_PCTL S_GPIO_3 +#define PAD_LCD_BLG_PCTL PAD_PIN_SGPIO3 +#endif + +// LCD2 communicate +#define LCD2_COMM_CTRL LCD_COMM_BY_GPIO //FPGA +#if (LCD2_COMM_CTRL == LCD_COMM_BY_GPIO) +#define GPIO_LCD2_SIF_SEN P_GPIO_23 //FPGA --- NOTE! it will conflict with PIN_SIF_CFG_CH2 +#define GPIO_LCD2_SIF_SCK P_GPIO_25 //FPGA --- NOTE! it will conflict with PIN_SIF_CFG_CH2 +#define GPIO_LCD2_SIF_SDA P_GPIO_26 //FPGA --- NOTE! it will conflict with PIN_SIF_CFG_CH2 +#endif +#if (LCD2_COMM_CTRL == LCD_COMM_BY_SIF) +#define SIF_LCD2_CH SIF_CHx +#define PAD_LCD2_SIF_SEN PAD_PIN_PGPIO23 +#define PAD_LCD2_SIF_SCK PAD_PIN_PGPIO25 +#define PAD_LCD2_SIF_SDA PAD_PIN_PGPIO26 +#endif +//#define GPIO_LCD2_SLEEP 87 //FPGA not support +//#define GPIO_LCD2_RESET 88 //FPGA not support + +// LCD2 backlight +#define LCD2_BACKLIGHT_CTRL LCD_BACKLIGHT_DUMMY //FPGA +#if (LCD2_BACKLIGHT_CTRL == LCD_BACKLIGHT_BY_PWM) +#define GPIO_PWM_LCD2_BLG_PCTL x +#define PWMID_LCD2_BLG_PCTL PWMID_x +#elif (LCD2_BACKLIGHT_CTRL == LCD_BACKLIGHT_BY_GPIO) +#define GPIO_LCD2_BLG_PCTL x_GPIO_x +#define PAD_LCD2_BLG_PCTL PAD_PIN_xGPIOx +#endif + +// TV +#define TV_DET_DUMMY 0 +#define TV_DET_BY_VIO 1 +#define TV_DET_BY_GPIO 2 +#define TV_DET_BY_ADC 3 +#define TV_DET_CTRL TV_DET_BY_VIO //FPGA +#if (TV_DET_CTRL == TV_DET_BY_GPIO) +#define GPIO_TV_PLUG C_GPIO_x +#define PAD_TV_PLUG PAD_PIN_CGPIOx +#endif +#if (TV_DET_CTRL == TV_DET_BY_ADC) +#define ADC_CH_TV_PLUG ADC_CHANNEL_x +#endif + +// HDMI +#define HDMI_DET_DUMMY 0 +#define HDMI_DET_BY_VIO 1 +#define HDMI_DET_BY_GPIO 2 +#define HDMI_DET_BY_ADC 3 +#define HDMI_DET_BY_HOTPLUG 4 +#define HDMI_DET_CTRL HDMI_DET_BY_VIO //EVB + +// LCD2 +#define LCD2_DET_DUMMY 0 +#define LCD2_DET_BY_VIO 1 +#define LCD2_DET_BY_GPIO 2 +#define LCD2_DET_BY_ADC 3 +#define LCD2_DET_CTRL LCD2_DET_BY_VIO //EVB + +// AIN +#define AIN_DET_DUMMY 0 +#define AIN_DET_BY_VIO 1 +#define AIN_DET_BY_GPIO 2 +#define AIN_DET_CTRL AIN_DET_BY_VIO //EVB +#if (AIN_DET_CTRL == AIN_DET_BY_GPIO) +#define GPIO_AIN_PLUG C_GPIO_x +#define PAD_AIN_PLUG PAD_PIN_CGPIOx +#endif + +//-------------------------------------------------------------------- +// Storage device +//-------------------------------------------------------------------- +// CARD +// card power +#define GPIO_CARD_POWER P_GPIO_7 +#define PAD_CARD_POWER PAD_PIN_PGPIO7 +// SD card detect +#define GPIO_CARD_DETECT C_GPIO_9 +#define PAD_CARD_DETECT PAD_PIN_CGPIO9 +// SD card write protect +#define GPIO_CARD_WP 0//P_GPIO_11 +#define PAD_CARD_WP 0//PAD_PIN_PGPIO11 + +extern BOOL SDIOCardUser_CheckCardInserted(void); +extern BOOL SDIOCardUser_CheckCardWP(void); +#if defined(_EMBMEM_EMMC_) +extern BOOL SDIO2CardUser_CheckCardInserted(void); +extern BOOL SDIO2CardUser_CheckCardWP(void); +#endif + +//-------------------------------------------------------------------- +// Audio device +//-------------------------------------------------------------------- +//Audio +extern BOOL GPIOMap_DetAudio(void); + + +//-------------------------------------------------------------------- +// Input device +//-------------------------------------------------------------------- +// Key defined (650 FPGA KEYPAD) +// +// +//--------------------------// //--------------------------// +// SW3 SW1 SW4 SW2 // // kzi kzo ks1 ks2 // +// // // // +// SW7 // // ku // +// // // // +// SW5 SW6 SW8 // // kl ke kr // +// // // // +// SW10 // // kd // +// // // // +// SW12 SW11 SW9 // // km kmd kmp // +// // // // +//--------------------------// //--------------------------// +// +// SW1~SW12 = MC22~MC31,DCPIO4,5 = C_GPIO_22~31,DCPIO4,5 (Roy) +// Low (Roy) +// +#define GPIO_KEY_ZOOMOUT P_GPIO_20 // Key Zoom Out (kzo) +#define PAD_KEY_ZOOMOUT PAD_PIN_CGPIO20 +#define GPIO_KEY_SHUTTER2 C_GPIO_19 // Key Shutter2 (ks2) +#define PAD_KEY_SHUTTER2 PAD_PIN_CGPIO19 +#define GPIO_KEY_ZOOMIN P_GPIO_22 // Key Zoom In (kzi) +#define PAD_KEY_ZOOMIN PAD_PIN_CGPIO22 +#define GPIO_KEY_SHUTTER1 P_GPIO_23 // Key Shutter1 (ks1) +#define PAD_KEY_SHUTTER1 PAD_PIN_PGPIO23 +#define GPIO_KEY_LEFT C_GPIO_18 // Key Left (kl) +#define PAD_KEY_LEFT PAD_PIN_CGPIO18 +#define GPIO_KEY_ENTER P_GPIO_4 // Key OK (ke) +#define PAD_KEY_ENTER PAD_PIN_PGPIO4 +#define GPIO_KEY_UP C_GPIO_22 // Key Up (ku) +#define PAD_KEY_UP PAD_PIN_CGPIO22 +#define GPIO_KEY_RIGHT C_GPIO_4 // Key Right (kr) +#define PAD_KEY_RIGHT PAD_PIN_CGPIO4 +#define GPIO_KEY_PLAYBACK C_GPIO_17 // Key Playback (kmp) +#define PAD_KEY_PLAYBACK PAD_PIN_CGPIO17 +#define GPIO_KEY_DOWN C_GPIO_20 // Key Down (kd) +#define PAD_KEY_DOWN PAD_PIN_CGPIO20 +#define GPIO_KEY_MODE D_GPIO_4 // Key Mode (kmd) +#define PAD_KEY_MODE PAD_PIN_DGPIO4 +#define GPIO_KEY_MENU C_GPIO_21 // Key Menu (km) +#define PAD_KEY_MENU PAD_PIN_CGPIO21 +/*MCU DATAREADY msg*/ +#define GPIO_KEY_DATAREADY P_GPIO_6 +#define PAD_KEY_DATAREADY PAD_PIN_PGPIO6 + +#define GPIO_KEY_TEST S_GPIO_6 +#define PAD_KEY_TEST PAD_PIN_SGPIO6 + +//#define ADC_CH_VOLDET_MS1 ADC_CHANNEL_1 +//#define ADC_CH_VOLDET_MS2 ADC_CHANNEL_0 +#define ADC_CH_VOLDET_KEY1 ADC_CHANNEL_2 + + +//Touch panel controller + +//#define GPIO_TP_BUSY (2 | GPIO_IS_DGPIO) //HW TS_INT =DGPIO-02 +#define GPIO_TP_PENIRQ (7 | GPIO_IS_DGPIO) //HW TS_PENIRQ =DGPIO-12 +#define GPIO_TP_DOUT 0 //P_GPIO_58 //HW TP_DI =SBDAT0/AGPIO-26 (FW output = HW input) +#define GPIO_TP_DIN (1 | GPIO_IS_DGPIO) //HW TS_DO =DGPIO-01 (FW input = HW output) +#define GPIO_TP_DCLK 0//P_GPIO_57 //HW TS_CLK =SBCK0/AGPIO-25 +//#define GPIO_TP_CS 28 //HW TS_CS =SBCS1/AGPIO-28 //SIF channel 1 +#define GPIO_TP_CS 0//P_GPIO_56 //HW TS_CS =SBCS0/AGPIO-27 //SIF channel 0 +//#define PAD_TP_BUSY PAD_PIN_DGPIO2 +#define PAD_TP_PENIRQ PAD_PIN_DGPIO7 +#define PAD_TP_DOUT PAD_PIN_PGPIO58 +#define PAD_TP_DIN PAD_PIN_DGPIO1 +#define PAD_TP_DCLK PAD_PIN_PGPIO57 +//#define PAD_TP_CS PAD_PIN_SBCS1 //SIF channel 1 +#define PAD_TP_CS PAD_PIN_PGPIO56 //SIF channel 0 + + +//G-Sensor +/* +#define GPIO_GS_INT1 (3 | GPIO_IS_DGPIO) +#define GPIO_GS_INT2 (4 | GPIO_IS_DGPIO) +#define PAD_GS_INT1 PAD_PIN_DGPIO3 +#define PAD_GS_INT2 PAD_PIN_DGPIO4 +*/ +extern UINT32 GPIOMap_DetKey(void); +extern UINT32 GPIOMap_DetModeDial(void); +extern BOOL GPIOMap_DetShutter1(void); +extern BOOL GPIOMap_DetMacro(void); +extern BOOL GPIOMap_DetPoweroff(void); + +//-------------------------------------------------------------------- +// Output device +//-------------------------------------------------------------------- +// LED +#define LED_RED_DUMMY 0 +#define LED_RED_BY_GPIO 1 +#define LED_RED_BY_MCU 3 +#define LED_RED_CTRL LED_RED_DUMMY +#define GPIO_RED_LED P_GPIO_9 //FPGA +#define PAD_RED_LED PAD_PIN_PGPIO9 + +#define LED_GREEN_DUMMY 0 +#define LED_GREEN_BY_GPIO 1 +#define LED_GREEN_BY_MCU 3 +#define LED_GREEN_CTRL LED_RED_DUMMY +#define GPIO_GREEN_LED P_GPIO_10 //FPGA +#define PAD_GREEN_LED PAD_PIN_PGPIO10 + +#define GPIO_LED_STATUS_R DSI_GPIO_8 // +#define PAD_LED_STATUS_R PAD_PIN_DSIGPIO8 +#define GPIO_LED_STATUS_G DSI_GPIO_9// +#define PAD_LED_STATUS_G PAD_PIN_DSIGPIO9 +#define GPIO_LED_SD_G DSI_GPIO_7// +#define PAD_LED_SD_G PAD_PIN_DSIGPIO7 +#define GPIO_LED_SD_R DSI_GPIO_4// +#define PAD_LED_SD_R PAD_PIN_DSIGPIO4 +#define GPIO_LED_WIFI_B DSI_GPIO_6// +#define PAD_LED_WIFI_B PAD_PIN_DSIGPIO6 +#define GPIO_LED_BAT_1 DSI_GPIO_5// +#define PAD_LED_BAT_1 PAD_PIN_DSIGPIO5 +#define GPIO_LED_BAT_2 DSI_GPIO_2// +#define PAD_LED_BAT_2 PAD_PIN_DSIGPIO2 +#define GPIO_LED_BAT_3 DSI_GPIO_3// +#define PAD_LED_BAT_3 PAD_PIN_DSIGPIO3 +#define GPIO_LED_BAT_4 DSI_GPIO_0// +#define PAD_LED_BAT_4 PAD_PIN_DSIGPIO0 +#define GPIO_LED_SIG_1_R DSI_GPIO_10// +#define PAD_LED_SIG_1_R PAD_PIN_DSIGPIO10 +#define GPIO_LED_SIG_1_G DSI_GPIO_1// +#define PAD_LED_SIG_1_G PAD_PIN_DSIGPIO1 +#define GPIO_LED_SIG_2 L_GPIO_1// +#define PAD_LED_SIG_2 PAD_PIN_LGPIO1 +#define GPIO_LED_SIG_3 L_GPIO_0// +#define PAD_LED_SIG_3 PAD_PIN_LGPIO0 +#define GPIO_LED_SIG_4 P_GPIO_8// +#define PAD_LED_SIG_4 PAD_PIN_PGPIO8 + + +#define LED_FOCUS_DUMMY 0 +#define LED_FOCUS_BY_GPIO 1 +#define LED_FOCUS_BY_PWM 2 //use PWM to control LED brightness +#define LED_FOCUS_BY_MCU 3 + +#define LED_FOCUS_CTRL LED_RED_DUMMY +#define GPIO_FOCUS_LED x_GPIO_x //FPGA +#define PAD_FOCUS_LED PAD_PIN_xGPIOx +#define PWMID_FOCUS_LED PWMID_x //FPGA + +#if defined(_MCU_ENABLE_) +#undef LED_RED_CTRL +#define LED_RED_CTRL LED_RED_BY_MCU + +#undef LED_GREEN_CTRL +#define LED_GREEN_CTRL LED_GREEN_BY_MCU + +#undef LED_FOCUS_CTRL +#define LED_FOCUS_CTRL LED_FOCUS_BY_MCU +#endif + +#define GPIO_IR_LED_PWR P_GPIO_3 //ir led pwr +#define PAD_IR_LED_PWR PAD_PIN_PGPIO3 + +#define GPIO_IRCUT_MEN1 D_GPIO_6 // M_EN1 IRCUT 1 +#define PAD_IRCUT_MEN1 PAD_PIN_DGPIO6 +#define GPIO_IRCUT_MEN2 D_GPIO_5 // M_EN2 IRCUT 2 +#define PAD_IRCUT_MEN2 PAD_PIN_DGPIO5 + +#define GPIO_USB_MUX_S P_GPIO_2 //USB_MUX_S +#define PAD_USB_MUX_S PAD_PIN_PGPIO2 + +#define GPIO_4G_USB_BOOT S_GPIO_5 //4G_USB_BOOT +#define PAD_4G_USB_BOOT PAD_PIN_SGPIO5 +//----------charge ic ---------------- +#define GPIO_CHARGEIC_EN C_GPIO_4 +#define GPIO_PIR_STATE C_GPIO_7 +#define GPIO_CHARGEIC_STATE P_GPIO_12 +#define GPIO_CHARGEIC_ADC_SWITCH L_GPIO_0 + +#define GPIO_ACC P_GPIO_5 +#define GPIO_PA P_GPIO_0 +#define GPIO_PARKING P_GPIO_6 + + +//-------------------------------------------------------------------- +// Power device +//-------------------------------------------------------------------- +//Battery +#define ADC_CH_VOLDET_BATTERY ADC_CHANNEL_0 +extern char *VolDet_GetStatusString(void); + + + +//-------------------------------------------------------------------- +// Sensor device +//-------------------------------------------------------------------- +// CCD +/* +typedef enum +{ + CCD_PWR_STATUS_OFF = 0, + CCD_PWR_STATUS_ON, + CCD_PWR_STATUS_SLEEP, + CCD_PWR_STATUS_MAXIDX +}CCD_PWR_STATUS; +*/ +/* +#define GPIO_CCDTG_VH L_GPIO_20 +#define GPIO_CCDTG_VL L_GPIO_19 +//#define GPIO_CCDTG_VH_2 50 +#define GPIO_CCDTG_RST C_GPIO_22 +//#define GPIO_CCDTG_HDRV_EN 88 +#define SIF_SENSOR_TG SIF_CH2 +#define SIF_SENSOR_AFE SIF_CH3 +*/ +extern void GPIOMap_TurnOnCCDPower(void); +extern void GPIOMap_TurnOffCCDPower(void); +extern UINT8 GPIOMap_IsCCDPowerOn(void); +extern void GPIOMap_SleepCCDPower(void); +extern void GPIOMap_WakeUpCCDPower(void); + +//-------------------------------------------------------------------- +// Storbe device +//-------------------------------------------------------------------- +// STROBE +/* +#define GPIO_FLASH_CHARGE C_GPIO_21 +#define PAD_FL_CHARGE PAD_PIN_CGPIO21 +#define GPIO_FLASH_RDY P_GPIO_12 +#define PAD_FL_RDY PAD_PIN_PGPIO12 +#define GPIO_FLASH_TRIGGER D_GPIO_7 +#define PAD_FL_TRIGGER PAD_PIN_DGPIO7 +*/ + +//-------------------------------------------------------------------- +// Lens device +//-------------------------------------------------------------------- +// BCS 2.7 ~ 12 mm lens + SANYO LV8044 motor IC +#define GPIO_LENS_RESET 0 // output + +#define GPIO_LENS_ZOOM_INTR 0 // input +#define PAD_LENS_ZOOM_INTR 0 + +#define GPIO_LENS_FOCUS_INTR 0 // input +#define PAD_LENS_FOCUS_INTR 0 + +#define GPIO_LENS_IR_CTRL0 P_GPIO_6 // output +#define GPIO_LENS_IR_CTRL1 P_GPIO_6 // output +#define PAD_LENS_IR_CTRL0 PAD_PIN_PGPIO6 +#define PAD_LENS_IR_CTRL1 PAD_PIN_PGPIO7 + + +extern INT32 GPIO_GetBitVal(UINT32 bitNum, UINT32 *bitVal); +extern INT32 GPIO_SetBitVal(UINT32 bitNum, UINT32 bitVal); +extern INT32 GPIO_SwitchAdc(UINT32 channel); +extern INT32 ADC_GetVal(UINT32 channel, UINT32 *value); +extern INT32 GPIO_SetChargeICEnable(UINT32 en); +extern INT32 GPIO_GetChargeICEnable(void); +extern INT32 GPIO_GetChargeICState(void); + +extern INT32 GPIO_GetAccStatus(void); +extern INT32 GPIO_SetPAStatus(BOOL en); + +extern void GPIO_SetLedStatus(UINT32 led,BOOL en); +extern INT32 GPIO_SetBacklightStatus(BOOL en); +extern void GOIO_Turn_Onoff_IRCUT(UINT8 onoff); +extern void GPIO_IRLed_Turn_Onoff(BOOL onoff); + + +void sf_ir_led_set(UINT8 mode, UINT8 flashLed, UINT8 stillExp, UINT8 isSnapVideo); +void sf_ir_cut_ctrl_PowerOff(void); + +#endif + +//@} diff --git a/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/Source.mk b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/Source.mk new file mode 100755 index 000000000..2d1ff1d28 --- /dev/null +++ b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/Source.mk @@ -0,0 +1,26 @@ +DTS_SENSOR = ./SrcCode/Dx/$(MODEL)/sensor.dts +DTS_APP = ./SrcCode/Dx/$(MODEL)/application.dts +DX_SRC = \ + ./SrcCode/Dx/$(MODEL)/DxInput_Key.c \ + ./SrcCode/Dx/$(MODEL)/IOCfg.c \ + ./SrcCode/Dx/$(MODEL)/DxUsb.c \ + ./SrcCode/Dx/$(MODEL)/DxCfg.c \ + ./SrcCode/Dx/$(MODEL)/DxDisplay_LCD.c \ + ./SrcCode/Dx/$(MODEL)/DxPower_Battery.c \ + ./SrcCode/Dx/$(MODEL)/DxPower_DC.c \ + ./SrcCode/Dx/$(MODEL)/DxStorage_Card.c \ + ./SrcCode/Dx/$(MODEL)/DxStorage_EmbMem.c + +# ./SrcCode/Dx/$(MODEL)/DxCamera_Sensor.c \ +# ./SrcCode/Dx/$(MODEL)/DxCfg.c +# ./SrcCode/Dx/$(MODEL)/DxCmd.c +# ./SrcCode/Dx/$(MODEL)/DxDisplay_LCD.c +# ./SrcCode/Dx/$(MODEL)/DxOutput_LED.c +# ./SrcCode/Dx/$(MODEL)/DxPower_Battery.c +# ./SrcCode/Dx/$(MODEL)/DxSound_Audio.c +# ./SrcCode/Dx/$(MODEL)/DxStorage_Card.c +# ./SrcCode/Dx/$(MODEL)/DxStorage_EmbMem.c +# ./SrcCode/Dx/$(MODEL)/DxWiFi.c +# ./SrcCode/Dx/$(MODEL)/DxCmd.c + + diff --git a/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/application.dts b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/application.dts new file mode 100755 index 000000000..01c808c03 --- /dev/null +++ b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/application.dts @@ -0,0 +1,10 @@ +/* + * Novatek Ltd. NA51055 BSP part of dts + * + * Cortex-A9 + * + */ + +/dts-v1/; +#include "isp.dtsi" /* sensor */ + diff --git a/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/isp.dtsi b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/isp.dtsi new file mode 100755 index 000000000..95ae4659e --- /dev/null +++ b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/isp.dtsi @@ -0,0 +1,30 @@ +/ { + isp { + sensor@0 { + ae_path = "/isp/ae/os05b10_ae_0"; + awb_path = "/isp/awb/os05b10_awb_0"; + iq_path = "/isp/iq/os05b10_iq_0"; + #iq_cap_path = "/isp/iq/gc5603_iq_0_cap"; + #iq_shading_path = "/isp/iq/gc5603_iq_shading_0"; + }; + sensor@1 { + ae_path = "/isp/ae/os05a10_ae_0"; + awb_path = "/isp/awb/os05a10_awb_0"; + iq_path = "/isp/iq/os05a10_iq_0"; + #iq_cap_path = "/isp/iq/os05a10_iq_0_cap"; + }; + /* label for ae, awb, iq table */ + ae: ae { + }; + awb: awb { + }; + iq: iq { + }; + }; +}; + +/* Note: put include files in the tail since label should be declared first. */ +#include "os05b10_ae_0.dtsi" +#include "os05b10_awb_0.dtsi" +#include "os05b10_iq_0.dtsi" + diff --git a/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/sensor.dts b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/sensor.dts new file mode 100755 index 000000000..03be25e4a --- /dev/null +++ b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/sensor.dts @@ -0,0 +1,48 @@ +/* + * Novatek Ltd. NA51055 BSP part of dts + * + * Cortex-A9 + * + */ + +/dts-v1/; + +/ { + sensor_ssenif { + ssenif@0 { + if_type = <0x05>; /* HD_COMMON_VIDEO_IN_MIPI_CSI */ + sensor_pinmux = <0x220>; + serial_if_pinmux = <0xf01>; /*PIN_MIPI_LVDS_CFG_CLK2 | PIN_MIPI_LVDS_CFG_DAT0 | PIN_MIPI_LVDS_CFG_DAT1 | PIN_MIPI_LVDS_CFG_DAT2 | PIN_MIPI_LVDS_CFG_DAT3*/ + cmd_if_pinmux = <0x01>; /*PIN_I2C_CFG_CH1*/ + clk_lane_sel = <0x00>; /* HD_VIDEOCAP_SEN_CLANE_SEL_CSI0_USE_C0 */ + sen_2_serial_pin_map = <0x00000000 0x00000001 0x00000002 0x00000003 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF>; + senout_pxlfmt = <0x420a0000>; /* HD_VIDEO_PXLFMT_RAW10_SHDR2 */ + capout_pxlfmt = <0x420c0000>; /* HD_VIDEO_PXLFMT_RAW10_SHDR2 */ + data_lane = <0x04>; + shdr_map = <0x00 0x00>; + }; + ssenif@1 { + if_type = <0x05>; /* HD_COMMON_VIDEO_IN_MIPI_CSI */ + sensor_pinmux = <0x20>; + serial_if_pinmux = <0xC02>; + cmd_if_pinmux = <0x01>; + clk_lane_sel = <0x14>; /* HD_VIDEOCAP_SEN_CLANE_SEL_CSI1_USE_C1 */ + sen_2_serial_pin_map = <0xFFFFFFFF 0xFFFFFFFF 0x00000000 0x00000001 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF>; + senout_pxlfmt = <0x410c0000>; /* HD_VIDEO_PXLFMT_RAW12 */ + capout_pxlfmt = <0x410c0000>; /* HD_VIDEO_PXLFMT_RAW12 */ + data_lane = <0x02>; + }; + }; + sensor { + /* label for sensor_cfg */ + sen_cfg: sen_cfg { + }; + }; +}; + +#if defined(__FREERTOS) +/* Note: put include files in the tail since label should be declared first. */ +#include +#include "os05a10_cfg_565.dtsi" +#endif + diff --git a/code/application/source/cardv/SrcCode/PrjCfg.h b/code/application/source/cardv/SrcCode/PrjCfg.h index 33a28f89f..df3036661 100755 --- a/code/application/source/cardv/SrcCode/PrjCfg.h +++ b/code/application/source/cardv/SrcCode/PrjCfg.h @@ -60,6 +60,8 @@ #include "PrjCfg_HUNTING_S530.h" #elif defined(_MODEL_565_HUNTING_EVB_LINUX_4G_68CS_) #include "PrjCfg_HUNTING_68CS.h" +#elif defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S550_) +#include "PrjCfg_HUNTING_S550.h" #else //Unknown MODEL #warning Unknown MODEL? #warning Please assign your "PrjCfg_MODEL.h" in "PrjCfg.h" diff --git a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h new file mode 100755 index 000000000..58ade2b5d --- /dev/null +++ b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h @@ -0,0 +1,1060 @@ +#ifndef _PRJCFG_DVCAM_H_ +#define _PRJCFG_DVCAM_H_ +#include "kwrap/type.h" + +//============================================================================== +// MODE and Major Feature (Maintain these in \Kernel, \System, \Mode folder) +//============================================================================== +#define PLAY_MODE ENABLE +#define PHOTO_MODE ENABLE +#define MOVIE_MODE ENABLE +#define USB_MODE ENABLE +#define SLEEP_MODE DISABLE +#define ENG_MODE DISABLE +#define MAIN_MODE ENABLE +#define IPCAM_MODE DISABLE +#define UPDFW_MODE ENABLE +#define VOICE_MODE DISABLE + +#define IPCAM_FUNC DISABLE +#define STAMP_FUNC DISABLE +#define UI_FUNC ENABLE +#if !defined(_NVT_SDIO_WIFI_NONE_) || !defined(_NVT_USB_WIFI_NONE_) +#define WIFI_FUNC ENABLE +#else +#define WIFI_FUNC ENABLE +#endif +//============================================================================== +// GENERAL CONFIG +//============================================================================== +//.............................................................................. +#if defined(_FW_PARTIAL_LOAD_ON_) +#else +#endif + +//.............................................................................. +// FW version and name +#define FW_UPDATE_NAME "A:\\FW98565A.bin" +#define FW_VERSION_RELEASE DISABLE //DISABLE +#define FW_VERSION_NUM "REGULAR_0402_001" + +//.............................................................................. +/** + The definition of EmbMem is the storage without any card detection, + which means the end-user cannot take that storage out. The EmbMem can also + be a combination of partition such as partition 0 is spi-uITRON, + partition 1 is ram-FAT these depend on what you designed on DxStorage_Mem.c + Normally, in SPI case, we design the ram-disk as internal FAT + +*/ +// share info memory on fdt +#define SHMEM_PATH "/nvt_memory_cfg/shmem" + +// Internal Storage Mapping to Storage Object +#define STRG_OBJ_FW_FDT STRG_OBJ_FW_RSV1 +#define STRG_OBJ_FW_APP STRG_OBJ_FW_RSV2 +#define STRG_OBJ_FW_UBOOT STRG_OBJ_FW_RSV3 +#define STRG_OBJ_FW_RTOS STRG_OBJ_FW_RSV4 +#define STRG_OBJ_FW_PST STRG_OBJ_PSTORE1 +// Internal Storage Mapping to DxStorage +#define USER_DX_TYPE_EMBMEM_LOADER DX_TYPE_EMBMEM0 //STRG_OBJ_FW_RSV1 +#define USER_DX_TYPE_EMBMEM_MODELEXT DX_TYPE_EMBMEM1 //STRG_OBJ_FW_RSV2 +#define USER_DX_TYPE_EMBMEM_UITRON DX_TYPE_EMBMEM2 //STRG_OBJ_FW_RSV3 +#define USER_DX_TYPE_EMBMEM_UBOOT DX_TYPE_EMBMEM3 //STRG_OBJ_FW_RSV4 +#define USER_DX_TYPE_EMBMEM_LINUX DX_TYPE_EMBMEM4 //STRG_OBJ_FW_RSV5 +#define USER_DX_TYPE_EMBMEM_ECOS DX_TYPE_EMBMEM4 //STRG_OBJ_FW_RSV5 +#define USER_DX_TYPE_EMBMEM_DSP DX_TYPE_EMBMEM5 //STRG_OBJ_FW_RSV6 +#define USER_DX_TYPE_EMBMEM_DSP2 DX_TYPE_EMBMEM6 //STRG_OBJ_FW_RSV7 +#define USER_DX_TYPE_EMBMEM_PSTORE DX_TYPE_EMBMEM7 //STRG_OBJ_PSTORE +#define USER_DX_TYPE_EMBMEM_FAT DX_TYPE_EMBMEM8 //STRG_OBJ_FAT1 + +//============================================================================== +// SYSTEM FUNCTIONS +//============================================================================== +//.............................................................................. +// Boot +#define POWERON_PERF DISABLE //enable performance benchmark +#define POWERON_TRACE DISABLE //stop and wait for user enter cmd: "dsc boot" +#define POWERON_FAST_BOOT DISABLE +#define POWERON_FAST_BOOT_MSG DISABLE // disable boot msg for fast boot, but hard to debug +#define POWERON_FAST_CPU2_BOOT DISABLE +#define POWERON_FAST_RECORD DISABLE +#define POWERON_FAST_WIFI DISABLE //NOTE: need to enable POWERON_FAST_CPU2_BOOT too +#define POWERON_WAIT_FS_READY DISABLE +#define WAITPHOTO_FUNCTION DISABLE +#define POWERONLOGO_FUNCTION ENABLE +#define POWEROFFLOGO_FUNCTION ENABLE +#if ((POWERON_FAST_BOOT == DISABLE) || (POWERON_FAST_RECORD == DISABLE)) +#define POWERONSOUND_FUNCTION ENABLE +#else +#define POWERONSOUND_FUNCTION DISABLE +#endif +#define POWEROFFSOUND_FUNCTION DISABLE +#define _LOGO_ _LOGO_NOVATEK_ +#if (defined(_LCDTYPE_ILI9341_IF8B_) || \ + defined(_LCDTYPE_TG078UW006A0_DSI_)|| \ + defined(_LCDTYPE_UT35067A0_ILI9488_DSI_)) +#define LOGO_DISP_LAYER LAYER_VDO1 // VDO2 logo has no rotation +#else +#define LOGO_DISP_LAYER LAYER_VDO2 +#endif +#define LENSERROFF_FUNCTION DISABLE + +#if (POWERON_PERF == ENABLE) +#define TM_BOOT_ARRAY(n) static TIMEMARK tmbuf[(n)] = {0} +#define TM_BOOT_INIT(n) TM_Init(tmbuf, n) +#define TM_BOOT_BEGIN(a,b) TM_Begin(a,b) +#define TM_BOOT_END(a,b) TM_End(a,b) +#else +#define TM_BOOT_ARRAY(n) +#define TM_BOOT_INIT(n) +#define TM_BOOT_BEGIN(a,b) +#define TM_BOOT_END(a,b) +#endif + +//#NT#2016/07/12#Niven Cho -begin +//#NT#LINUX_LOAD_BY_UBOOT +//#NT#2016/07/12#Niven Cho -end + +//.............................................................................. +// External Card Config (for SDIO device) +#if !defined(_CARD1_NONE_) +#define CARD1_FUNC DISABLE +#else +#define CARD1_FUNC DISABLE +#endif + +#if !defined(_CARD3_NONE_) +#define CARD3_FUNC DISABLE +#else +#define CARD3_FUNC DISABLE +#endif + +//.............................................................................. +// Storage Config +#define FWS_FUNC DISABLE //enable it, if require load fw for start DSP or update fw for eCos + +#define PST_FUNC DISABLE //enable it, if require write pstore + +#define FS_FUNC ENABLE //enable it, if require write file + +//#NT#2016/12/14#Niven Cho -begin +//#NT#EMMC_AS_PSTORE +// only for (_CPU2_TYPE_==_CPU2_LINUX_ && _INTERSTORAGE_ == _INTERSTORAGE_EMMC_) +#define PST_DEV_ID 4 //used for gxstrg to mount linux emmc-pstore partition +#define PST_FS_DRIVE "E:\\" +//#NT#2016/12/14#Niven Cho -end + + +#if defined(_DSP1_FREERTOS_) +#if (FWS_FUNC != DISABLE) + #warning Not enable FWS_FUNC for DSP? + #warning Please enable your "FWS_FUNC" config in header "PrjCfg_XXXX.h" + #error (see above) +#endif +#endif + +//.............................................................................. +// Input Config +#define INPUT_FUNC ENABLE +//key +#define POWERKEY_FUNCTION ENABLE //Auto Detect +#define NORMALKEY_FUNCTION ENABLE //Auto Detect +#define STATUSKEY_FUNCTION DISABLE //Auto Detect +#define MODEKEY_FUNCTION DISABLE //Auto Detect + +//.............................................................................. +// Output Config +#define OUTPUT_FUNC DISABLE +//LED +#define LED_FUNCTION DISABLE //Auto Detect + +//.............................................................................. +// Power-Saving Config +#define PWR_FUNC ENABLE +//battery level +#define PWRLEVEL_FUNCTION DISABLE //Auto Detect +//auto power-off when battery level = empty +#define EMPTYPWROFF_FUNCTION DISABLE +//auto sleep +#define AUTOSLEEP_FUNCTION ENABLE //Auto Detect +//auto power-off +#define AUTOPWROFF_FUNCTION ENABLE //Auto Detect + +//.............................................................................. +// Date-Time Config +#define DEF_YEAR 2021 +#define DEF_MONTH 1 +#define DEF_DAY 1 +#define MIN_YEAR 2000 +#define MAX_YEAR 2050 + + +//.............................................................................. +// Sensor Config (for 1,2,4 devices) + + +//#define SENSOR_CAPS_COUNT 2 +//#define SENSOR_CAPS_MASK (SENSOR_1 | SENSOR_2) +#define SENSOR_CAPS_COUNT 1 +#define SENSOR_CAPS_MASK (SENSOR_1) + + +#define SENSOR_MAP_1 SENSOR_ID_1 +#define SENSOR_MAP_2 SENSOR_ID_2 + + +#define SENSOR_GP_FUNC DISABLE + +// Sensor group +#define SENSOR_GP_1 SENSOR_MULTI_ID_NONE /*ex: SENSOR_MULTI_ID_1|SENSOR_MULTI_ID_2*/ +#define SENSOR_GP_2 SENSOR_MULTI_ID_NONE /*ex: SENSOR_MULTI_ID_3|SENSOR_MULTI_ID_4*/ +// Sensor sub group + +#define SENSOR_SUBGP_1 SENSOR_MULTI_ID_NONE +#define SENSOR_SUBGP_2 SENSOR_MULTI_ID_NONE + + + +// Sensor Insert Mask +//#define SENSOR_INSERT_MASK (SENSOR_1) // support insert sensor +//#define SENSOR_INSERT_MASK (SENSOR_2) // support insert sensor +#define SENSOR_INSERT_MASK (0) // if NOT support insert sensor, please choose this + +#define SENSOR_DEFAULT_ATTACH_MASK (SENSOR_CAPS_MASK & ~(SENSOR_INSERT_MASK)) // hw default attach sensors + +#define SENSOR_INSERT_FUNCTION ((SENSOR_CAPS_MASK == SENSOR_DEFAULT_ATTACH_MASK)?(DISABLE):(DISABLE)) //Auto Detect (Dynamic attach) + +#define SENSOR_DEFAULT_DISPLAY_MASK (SENSOR_1) + +#define SENSOR_SIEPATGEN DISABLE + +//.............................................................................. +// Flashlight Config + +#define FLASHLIGHT_FUNCTION DISABLE //DISABLE + + +//.............................................................................. +// Lens Config +#define LENS_FUNCTION DISABLE +#define LENS_FOCAL_LENGTH 2880 // unit:um + + +//.............................................................................. +// Display Config (for LCD, LCD2, TV and HDMI device) + +#define LCD2_FUNC_USERSTATUS DISABLE //use LCD2 as status display. (not for video display) + +//NOTE: LCD1 output from DOUT1 only +#if defined(_Disp_VIRTUAL_LCD1_OFF_) +#define LCD1_FUNC DISABLE +#define LCD1_MASK 0x00 +#else +#define LCD1_FUNC ENABLE +#define LCD1_MASK 0x01 +#endif +//NOTE: TV output from DOUT1 or DOUT2 +#if defined(_TV_OFF_) +#define TV_FUNC DISABLE +#define TV_MASK 0x00 +#else +#define TV_FUNC DISABLE +#define TV_MASK 0x02 +#endif +//NOTE: HDMI output from DOUT1 or DOUT2 +#if defined(_HDMI_OFF_) +#define HDMI_FUNC DISABLE +#define HDMI_MASK 0x00 +#else +#define HDMI_FUNC DISABLE +#define HDMI_MASK 0x04 +#endif + +#if((LCD1_FUNC == DISABLE) || (TV_FUNC == DISABLE) || (HDMI_FUNC == DISABLE)) +#define DISPLAY_FUNC ENABLE +#define DISPLAY2_FUNC DISABLE +#define DISPLAY_CAPS_COUNT 1 //1: only single display, 2: allow single display or dual display +#define DISPLAY_CAPS_MASK (LCD1_MASK|TV_MASK)//|HDMI_MASK|LCD2_MASK +#define DUALDISP_FUNC ((DISPLAY_CAPS_COUNT == 2)?DISABLE:DISABLE) + +#define DISPLAY_DEFAULT_ATTACH_MASK DISPLAY_1 // hw default attach display + +#if defined(_Disp_VIRTUAL_LCD1_OFF_) +#define DISPLAY_DEFAULT_ATTACH_DEVICE TV_MASK //LCD1_MASK or HDMI_MASK or TV_MASK +#else +#define DISPLAY_DEFAULT_ATTACH_DEVICE LCD1_MASK //LCD1_MASK or HDMI_MASK or TV_MASK +#endif +#define DISPLAY2_DEFAULT_ATTACH_DEVICE 0 //LCD2_MASK or TV_MASK or HDMI_MASK + +//LCD related +#define LCD_AUTORESET_FUNCTION DISABLE //Auto Reset - LCD register +#define LCD_AUTOBACKLIGHT_FUNCTION DISABLE //Auto Adjust Backlight - with AE LV +#define LCD_ROTATE_FUNCTION DISABLE //Auto Detect - LCD rotate (enable to support LCD body mirror or flip) +//TV related +#define TV_INSERT_FUNCTION TV_FUNC //Auto Detect - TV cable insert +//HDMI related +#define HDMI_INSERT_FUNCTION HDMI_FUNC //Auto Detect - HDMI cable insert +//LCD2 related +#define LCD2_INSERT_FUNCTION LCD2_FUNC //Auto Detect - LCD2 cable insert +#else +#define DISPLAY_FUNC DISABLE +#define DISPLAY2_FUNC DISABLE +#define DISPLAY_CAPS_COUNT 0 +#define DISPLAY_CAPS_MASK 0 +#define DUALDISP_FUNC 0 + +#define DISPLAY_DEFAULT_ATTACH_MASK 0 // hw default attach display + +#define DISPLAY2_DEFAULT_ATTACH_DEVICE 0 //LCD2_MASK or TV_MASK or HDMI_MASK + +//LCD related +#define LCD_AUTORESET_FUNCTION DISABLE //Auto Reset - LCD register +#define LCD_AUTOBACKLIGHT_FUNCTION DISABLE //Auto Adjust Backlight - with AE LV +#define LCD_ROTATE_FUNCTION DISABLE //Auto Detect - LCD rotate (enable to support LCD body mirror or flip) +//TV related +#define TV_INSERT_FUNCTION TV_FUNC //Auto Detect - TV cable insert +//HDMI related +#define HDMI_INSERT_FUNCTION HDMI_FUNC //Auto Detect - HDMI cable insert +//LCD2 related +#define LCD2_INSERT_FUNCTION LCD2_FUNC //Auto Detect - LCD2 cable insert +#endif + + +#define DRAM_SIZE_64MB_DISP_OFF DISABLE + +#if (DRAM_SIZE_64MB_DISP_OFF==ENABLE) +#undef POWERONLOGO_FUNCTION +#define POWERONLOGO_FUNCTION DISABLE +#undef POWEROFFLOGO_FUNCTION +#define POWEROFFLOGO_FUNCTION DISABLE +#endif + +// Display Config (for UI window, FD window) + +// OSD size and format +#if (DRAM_SIZE_64MB_DISP_OFF==ENABLE) +#define DISPLAY_OSD_W 80//320//640 +#define DISPLAY_OSD_H 60//240 +#else +#define DISPLAY_OSD_W 320//640 +#define DISPLAY_OSD_H 240 +#endif +#define DISPLAY_OSD_FMT PXLFMT_INDEX8 // 256 colors +//#define DISPLAY_OSD_FMT PXLFMT_RGBA5658_PK // 16bpp-colors + +//UI tool layout size setting +#if (DRAM_SIZE_64MB_DISP_OFF==ENABLE) +#define TOOL_LAYOUT_W 80//320//640 +#define TOOL_LAYOUT_H 60//240//480 +#else +#define TOOL_LAYOUT_W 320//640 +#define TOOL_LAYOUT_H 240//480 +#endif +#define OSD_USE_DOUBLE_BUFFER DISABLE //use double buffer +#if (defined(_Disp_IF8B_LCD1_ILI9341_)) +#define OSD_USE_ROTATE_BUFFER ENABLE //use rotate buffer (enable to support LCD with stripe-type subpixel) +#elif defined(_disp_ifdsi_lcd1_ut35067a0_ili9488_) +#define OSD_USE_ROTATE_BUFFER ENABLE //use rotate buffer (enable to support LCD with stripe-type subpixel) +#else +#define OSD_USE_ROTATE_BUFFER ENABLE //use rotate buffer (enable to support LCD with stripe-type subpixel) +#endif + +#define OSD2_FUNC DISABLE +#define OSD2_USE_DOUBLE_BUFFER DISABLE //use double buffer +#define VDO_BM_FUNC DISABLE + + +// Display Config (for UI background, App quickview, photo frame, ...) + +// VDO size and format +#if (DRAM_SIZE_64MB_DISP_OFF==ENABLE) +#define DISPLAY_VDO_W 80//640 +#define DISPLAY_VDO_H 60//480 +#else +#define DISPLAY_VDO_W 640 +#define DISPLAY_VDO_H 480 +#endif +#define DISPLAY_VDO_FMT DISP_PXLFMT_YUV422_PK + +#define VDO_USE_DOUBLE_BUFFER DISABLE //use double buffer +#define VDO2_USE_DOUBLE_BUFFER DISABLE +#define VDO_USE_PHOTO_SOURCE DISABLE //display photo video streaming +#if (defined(_Disp_IF8B_LCD1_ILI9341_)) +#define VDO_ROTATE_DIR HD_VIDEO_DIR_ROTATE_90 +#define VDO_USE_ROTATE_BUFFER ENABLE //use rotate buffer (enable to support LCD with stripe-type subpixel) +#elif defined(_disp_ifdsi_lcd1_ut35067a0_ili9488_) +#define VDO_ROTATE_DIR HD_VIDEO_DIR_ROTATE_270 +#define VDO_USE_ROTATE_BUFFER ENABLE //use rotate buffer (enable to support LCD with stripe-type subpixel) +#else +#define VDO_ROTATE_DIR HD_VIDEO_DIR_ROTATE_90 +#define VDO_USE_ROTATE_BUFFER ENABLE //use rotate buffer (enable to support LCD with stripe-type subpixel) +#endif + +#define VDO_USE_COPY_BUFFER DISABLE //use copy buffer to avoid black between UI mode + +#define VDO2_USE_ROTATE_BUFFER DISABLE //use rotate buffer (enable to support LCD with stripe-type subpixel) + +#if (DISPLAY2_FUNC == DISABLE) +//#define VDOOUT_MASK (DISPLAY_1) // app's video will output to which display +//#define VDOOUT_MASK (DISPLAY_2) // app's video will output to which display +#define VDOOUT_MASK (DISPLAY_1|DISPLAY_2) // app's video will output to which display +#else +#define VDOOUT_MASK (DISPLAY_1) // app's video will output to which display +#endif + +#define LCD_PREVIEW_VDO_FMT GX_IMAGE_PIXEL_FMT_YUV420_PACKED +#define LCD2_PREVIEW_VDO_FMT GX_IMAGE_PIXEL_FMT_YUV420_PACKED +#define TV_PREVIEW_VDO_FMT GX_IMAGE_PIXEL_FMT_YUV420_PACKED +#define HDMI_PREVIEW_VDO_FMT GX_IMAGE_PIXEL_FMT_YUV420_PACKED + +// Display Config (for DispSrv; Photo App, Movie App and Play App) +// VDO1 size and format (for LCD device) +//LCD1: +#if defined(_Disp_VIRTUAL_LCD1_OFF_) +#define LCDMODE DISABLE +#elif defined(_Disp_IF8B_LCD1_AUCN01_) +#define LCDMODE DISP_LCDMODE_RGBD320 //DISP_LCDMODE_YUV640 +#elif defined(_Disp_IF8B_LCD1_PW35P00_HX8238D_) || \ + defined(_Disp_IF8B_LCD1_ILI9341_) +#define LCDMODE 0//DISP_LCDMODE_RGB_SERIAL +#else +#error "Unknown _LCD_" +#endif + +#define LCD2MODE DISABLE + +// VDO1 size and format (for TV device) +//TV: DISP_TVMODE_PAL mode +#define TVMODE DISP_TVMODE_NTSC + +// VDO1 size and format (for HDMI device) +//HDMI: DISP_HDMIMODE_1920X1080I60 mode +//#define HDMIMODE DISP_HDMIMODE_1920X1080I60 +#define HDMIMODE DISP_HDMIMODE_MAX + + +#define DUALCAM_PIP_BEHIND_FLIP DISABLE //Flip 2nd cam image in PIP view. Need extra 1/2 VDO buffer + + + +//.............................................................................. +// Audio Config +#define AUDIO_FUNC ENABLE +//.............................................................................. +// External Audio Config (for LineOut device) + +//LINE related + +//.............................................................................. +// External Storage Config +#define SDINSERT_FUNCTION ENABLE //Auto Detect +#define SDHOTPLUG_FUNCTION ENABLE +//.............................................................................. +// FILEDB Config +#define USE_FILEDB DISABLE //DISABLE +#define FILEDB_CARDV_ROOT "Novatek" // the max length should not exceeds 16 +// DCF Config +#define USE_DCF ENABLE +#define DCF_SUPPORT_FORMAT (DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_AVI|DCF_FILE_TYPE_MOV|DCF_FILE_TYPE_MP4) +//.............................................................................. +// EXIF Config +#define USE_EXIF DISABLE +// End string must be '\0', total char must be 31 +#define EXIF_MAKER_NAME "SY" +// End string must be '\0', total char must be 31 +#define EXIF_MODEL_NAME "S550-R" +// End string must be '\0', total char must be 31 +#define EXIF_IMAGE_DESCROPTOIN "S550 CAMERA" + +#define EXIF_SOFTWARE_VERSION FW_VERSION_NUM // <= 20 char (TagSoftVerLen) + +//.............................................................................. +// Movie Maker/Model name Config +// End string must be '\0', total char must plus 1 +#define MOVAPP_COMP_MANU_STRING "NOVATEK" +// End string must be '\0', total char must plus 1 +#define MOVAPP_COMP_NAME_STRING "DEMO1" +//.............................................................................. +// Usb Config + +#define USBINSERT_FUNCTION ENABLE //Auto Detect + +#define USB_VID 0x0603 +#define USB_PID_PCCAM 0x8612 // not support pc cam +#define USB_PID_WRITE 0x8614 +#define USB_PID_PRINT 0x8613 +#define USB_PID_MSDC 0x8611 + +#define USB_PRODUCT_REVISION '1', '.', '0', '0' +#define USB_VENDER_DESC_STRING 'N', 0x00,'O', 0x00,'V', 0x00,'A', 0x00,'T', 0x00,'E', 0x00,'K', 0x00, 0x20, 0x00,0x00, 0x00 // NULL +#define USB_VENDER_DESC_STRING_LEN 0x09 +#define USB_PRODUCT_DESC_STRING 'D', 0x00,'E', 0x00,'M', 0x00,'O', 0x00,'1', 0x00, 0x20, 0x00, 0x00, 0x00 // NULL +#define USB_PRODUCT_DESC_STRING_LEN 0x07 +#define USB_PRODUCT_STRING 'N','v','t','-','D','S','C' +#define USB_SIDC_DESC_STRING 'D', 0x00,'E', 0x00,'M', 0x00,'O', 0x00,'1', 0x00, 0x20, 0x00, 0x00, 0x00 // NULL +#define USB_SIDC_DESC_STRING_LEN 0x07 +#define USB_MTP_FRIENDNAME_STRING 'D','E','M','O','1',0x00 //maximum length is 253 bytes +#define USB_MTP_FRIENDNAME_STRING_LEN 0x06 //maximum length is 253 bytes +#define USB_VENDER_STRING 'N','O','V','A','T','E','K' +#define USB_VENDER_SIDC_DESC_STRING 'N', 0x00,'O', 0x00,'V', 0x00,'A', 0x00,'T', 0x00,'E', 0x00,'K', 0x00, 0x20, 0x00,0x00, 0x00 // NULL +#define USB_VENDER_SIDC_DESC_STRING_LEN 0x09 +#define USB_SERIAL_NUM_STRING '5', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0' + +//.............................................................................. +// Other Config + +#define GSENSOR_FUNCTION DISABLE //G-sensor +#define GPS_FUNCTION DISABLE + +#define SHOW_ADC_ON_SCREEN DISABLE +#define CALIBRATION_FUNC DISABLE // Enable/Disable Calibration +#define WATERLOGO_FUNCTION ENABLE // Enable/Disable waterlogo function +#define MOVIE_MULTISTAMP_FUNC DISABLE +#define MOVIE_MULTIWATERLOGO_FUNC DISABLE + +// Important Notice: +// If enable MULTILINGUAL_FUNCTION, remember to update font table and make sure the font height is not exceed the buffer size!! +#define MULTILINGUAL_FUNCTION DISABLE // Enable/Disable Multi-Lingual movie stamp function + +#define TIMELAPSE_LPR_FUNCTION DISABLE // Enable/Disable Timelapse Low Power Record function + +//--------------------------------------------------------------------------- +// For Video Debug Info +//--------------------------------------------------------------------------- +#define _MOVIE_IQLOG_ DISABLE // Enable/Disable Video IQLOG, Spark Chou + +//============================================================================== +// PLAYBACK FUNCTIONS +//============================================================================== +#define SLIDESHOW_MUSIC_OPTION DISABLE //longer no maintain +// copy card to card function +#define COPYCARD2CARD_FUNCTION DISABLE + +//============================================================================== +// PHOTO FUNCTIONS +//============================================================================== + +#define ASSIST_BEAM_FUNC DISABLE +#define GDC_FUNC DISABLE +#define AF_BEAM_EV_THRESHOLD 540 +#define _FD_FUNC_ DISABLE +#define _TSR_FUNC_ DISABLE +#define MAX_FDNUM 10 +#define PIP_VIEW_FUNC DISABLE // PipView (DISABLE: display 2 sensor by PipView, DISABLE: display user selected sensor) +#define PIP_VIEW_FASTSWITCH DISABLE // display single sensor method (DISABLE: always display by Pipview, DISABLE: display by direct path) +#define PIP_VIEW_LR DISABLE //(DISABLE: display 2 sensor by PipView in left, right view, side by side, DISABLE: normal pipview) + +#define SBS_VIEW_FUNC DISABLE // SbsView (DISABLE: display 2 sensor by SbsView, DISABLE: display user selected sensor) +#define SHDR_FUNC DISABLE // DISABLE +#define WDR_FUNC ENABLE +#define DEFOG_FUNC DISABLE // DISABLE + +#if !defined(_Gyro_None_) +#define RSC_FUNC DISABLE +#else +#define RSC_FUNC DISABLE +#endif +//.............................................................................. +#define _SCREENNAIL_SIZE_ _SCREENNAIL_SIZE_VGA_ +#define _QUICKVIEW_SIZE_ _QUICKVIEW_SIZE_SUIT_FOR_DISP + +//.............................................................................. +// Photo Frame Pstore Version Config +#define PF_PSTORE_VER 0x00000105 + +//============================================================================== +// MOVIE FUNCTIONS +//============================================================================== +#if !defined(_Gyro_None_) +#define MOVIE_RSC DISABLE +#else +#define MOVIE_RSC DISABLE +#endif +#define MOVIE_PIM_CAPTURE DISABLE // picture in movie method 1 (capture full resolution image) +#define MOVIE_GDC_FUNC DISABLE +#define MOVIE_SMEAR_R_FUNC DISABLE +#define MOVIE_ENSURE_SD_CLASS4 DISABLE +#define MOVIE_ENSURE_SD_32KCLUSTER DISABLE +#define MOVIE_MULTI_RECORD_FUNC DISABLE +#define MOVIE_REC_YUVMERGE DISABLE // slowly timelapse record mode, frame period >= 1S +#define MOVIE_AUTOREC_ACPLUG DISABLE +#define MOVIE_NET_USE_STREAM_1 DISABLE +#define MOVIE_UVAC_FUNC DISABLE +#define MOVIE_DSP_FUNC DISABLE + +#define MOVIE_MAPPING_MULTIREC DISABLE +#define MOVIE_DIRECT_FUNC DISABLE // direct mode function +#define MOVIE_YUV_COMPRESS DISABLE + +#define MOVIE_DIS DISABLE +#define MOVIE_FD_FUNC_ DISABLE +#define MOVIE_FD_DRAW_VIDEO DISABLE +#define MOVIE_BC_FUNC DISABLE +#define MOVIE_TD_FUNC DISABLE // Depend on MOVIE_BC_FUNC +#define MOVIE_TD_DRAW_VIDEO DISABLE +#define MOVIE_TWD_FUNC DISABLE // Depend on MOVIE_BC_FUNC +#define MOVIE_TWD_DRAW_VIDEO DISABLE +#define MOVIE_TZD_FUNC DISABLE // Depend on MOVIE_BC_FUNC +#define MOVIE_TZD_DRAW_VIDEO DISABLE +#define MOVIE_ODT_FUNC DISABLE +#define MOVIE_ODT_DRAW_VIDEO DISABLE + +#define UCTRL_APP_MOVIE_FEATURE_SETGET DISABLE +#define MEDIA_VASTREAM DISABLE +#define IR_CUT_FUNC DISABLE +#define LOGFILE_FUNC DISABLE +#define _ADAS_FUNC_ DISABLE +//.............................................................................. +// ADAS subsetting (The following sub-functions are available only if _ADAS_FUNC_ = DISABLE +#define _AUTOVP_FUNC_ DISABLE +#define _SNG_FUNC_ DISABLE +#define _DRAW_LDFCINFO_ON_OSD_ DISABLE +#define _DRAW_SNG_ROI_ DISABLE +#define _DRAW_LDWSINFO_ON_VIDEO_ DISABLE // This function is only valid if data path is D2D!! + +#define MOVIE_TSR_FUNC_ DISABLE +#define MOVIE_TSR_DRAW_VIDEO DISABLE +#define TSR_MODEL_IN_PSTORE DISABLE + +#define CROP_SOURCE_W 3840 +#define CROP_SOURCE_H 2160 + + +//============================================================================== +// MOVIE PLAY FUNCTIONS +//============================================================================== +#define MOVIE_PLAY_VIEW_FUNC DISABLE // MoviePlayView + + +//============================================================================== +// USBCAM FUNCTIONS +//============================================================================== +#define UVAC_MODE_2_PATH DISABLE +#if (UVAC_MODE_2_PATH==DISABLE) +#undef MOVIE_MULTI_RECORD_FUNC +#define MOVIE_MULTI_RECORD_FUNC DISABLE +#endif +//============================================================================== +// USBCHARGE FUNCTIONS +//============================================================================== +#define USB_CHARGE_FUNCTION DISABLE +#define USB_CHARGE_VERIFY DISABLE + +//============================================================================== +// USBDISK FUNCTIONS +//============================================================================== + +//============================================================================== +// MSDCVENDOR_NVT, is required for PC tools to transmit commands and data via USB / NET +//============================================================================== +#define MSDCVENDOR_NVT ENABLE //via USB, depend on USBINSERT_FUNCTION and _USB3_INT_CORE1_ +#define MSDCVENDOR_UPDFW DISABLE //enable it will cause disalbing MSDC and MTP/PTP/UAVC Mode, MSDCVENDOR_NVT must enable +#define MSDCVENDOR_IDENTITY_FILE "A:\\MSDCNVT" +#if (defined(_MODEL_DVCAM1_EVB_) || defined(_MODEL_DVCAM2_EVB_)) +#define MSDCVENDOR_NVT_EXAM DISABLE //only for novatek internal use +#else +#define MSDCVENDOR_NVT_EXAM DISABLE //for customer, disable it to reduce memory +#endif +//============================================================================== +// USBPRINT FUNCTIONS +//============================================================================== + +//============================================================================== +// USBPRINT FUNCTIONS +//============================================================================== + +//============================================================================== +// UI FUNCTIONS +//============================================================================== +//.............................................................................. +// UI Resource Storage Config +#define _LANG_STORE_ _INSIDECODE_ +#define _JPG_STORE_ _INSIDECODE_ +#define SPECIAL_KEY_RESET_FUNC DISABLE +#define EXTRA_MENU DISABLE + +//============================================================================== +// IPCam FUNCTION +//============================================================================== +//.............................................................................. + +///////FD param +#define IPCAM_FD_FUNC DISABLE +#define MAX_FDNUM 10 //set face detection max face number +//////MD param +#define IPCAM_MD_FUNC DISABLE +//////VQA param +#define IPCAM_VQA_FUNC DISABLE + +/////AUDIO param +#define IPCAM_AUDIO_IN_FUNC DISABLE +#define IPCAM_AUDIO_OUT_FUNC DISABLE +#define IPCAM_AEC_FUNC DISABLE +#define AUDIO_FUNC_AAC DISABLE + + +//============================================================================== +// NET FUNCTIONS +//============================================================================== +#if (!defined(_NVT_SDIO_WIFI_NONE_) || !defined(_NVT_USB_WIFI_NONE_)) +#define _NETWORK_DEVICE_ +#define _NETWORK_ON_WIFI_ +#endif +#if !defined(_NVT_USB_4G_NONE_) +#define _NETWORK_DEVICE_ +#define _NETWORK_ON_4G_ +#endif +#if !defined(_NVT_ETHERNET_NONE_) +#define _NETWORK_DEVICE_ +#define _NETWORK_ON_ETH_ +#endif + +#define MAC_APPEN_SSID DISABLE//ENABLE +#define ACL_TIME 15000 //minmum 15 sec +#define WIFI_APP_MANUFACTURER "NVT" +#define WIFI_APP_MODLE "CarDV_WiFi" +#define ONVIF_PROFILE_S DISABLE //Enable it to cause NO CARD DETECTED. +#define ECOS_POWER_OFF_FLOW DISABLE + +//#NT#2016/10/21#YongChang Qui -begin +//#NT#wifi modules on EVB can't be powered off by default +#define WIFI_POWER_OFF_FLOW DISABLE //Enabled only if ECOS_POWER_OFF_FLOW == DISABLE and DrvWiFi_PowerOff() actually powers off wifi module +//#NT#2016/10/21#YongChang Qui -end + +#define HFS_FUNC ENABLE + +#define HTTP_LIVEVIEW_FUNC DISABLE +#if (WIFI_FUNC==DISABLE) +#define WIFI_AP_FUNC DISABLE +#else +#define WIFI_AP_FUNC ENABLE +#endif +#define WIFI_FTP_FUNC DISABLE + +#define HTTP_MJPG_W_4 640 +#define HTTP_MJPG_H_3 480 + +#define HTTP_MJPG_W_16 640 +#define HTTP_MJPG_H_9 360 + +#define AUTO_WIFI DISABLE + +#define HTTP_LIVEVIEW 1 +#define RTSP_LIVEVIEW 2 +#define MOVIE_LIVEVIEW RTSP_LIVEVIEW + +#if(WIFI_AP_FUNC==DISABLE) +#undef HTTP_LIVEVIEW_FUNC +#define HTTP_LIVEVIEW_FUNC DISABLE +#define MOVIE_MULTI_RECORD_FUNC DISABLE + + +#undef HTTP_MJPG_W_4 +#undef HTTP_MJPG_H_3 +#undef HTTP_MJPG_W_16 +#undef HTTP_MJPG_H_9 +#define HTTP_MJPG_W_4 640 +#define HTTP_MJPG_H_3 480 +#define HTTP_MJPG_W_16 640 +#define HTTP_MJPG_H_9 360 + +#undef HFS_FUNC +#define HFS_FUNC DISABLE +#endif + +#define WIFI_APP_MANUFACTURER "NVT" +#define WIFI_APP_MODLE "CarDV_WiFi" +#define WIFI_APP_DOWNLOAD_URL "http://115.29.201.46:8020/download/filedesc.xml" + + +#if defined(_CPU2_LINUX_) +#define UCTRL_FUNC DISABLE +#else +#define UCTRL_FUNC DISABLE +#endif +#define ONVIF_FUNC DISABLE //CarDV-Linux is no using of ONVIF + + +#define WIFI_FINALCAM_APP_STYLE DISABLE +#define WIFI_BG_COLOR 14 + +#define WIFI_STA_RECONNECT_MAX_COUNT 5 +#define WIFI_STA_RECONNECT_INTERVAL 300 + +#define YOUKU_SDK DISABLE +#define IOT_P2P_FUNC DISABLE +#define NETWORK_4G_MODULE DISABLE + +#if (YOUKU_SDK == DISABLE) +#define WIFI_MOVIE_FOLDER "MOVIE_WIFI" +#define CUT_MOVIE_FOLDER "MOVIE_CUT" +//the following two functions should be exclusive +#define SAVE_DUAL_STREAM_FUNC DISABLE +#define CUT_MOVIE_FUNC DISABLE +#endif + +#define MOVIE_OT_FUNC DISABLE +#define MOVIE_OT_DRAW_VIDEO DISABLE + + + +#define CURL_FUNC DISABLE + +#define _DDD_FUNC_ DISABLE +#define MOVIE_DDD_FUNC DISABLE +#define MOVIE_DDD_FD_FUNC DISABLE +#define MOVIE_DDD_DRAW_VIDEO DISABLE +#define MOVIE_DDD_SAVE_LOG DISABLE +#define DDD_MODEL_IN_PSTORE DISABLE + +#define MOVIE_FTG_FUNC DISABLE +#define MOVIE_FTG_DRAW_VIDEO DISABLE + +//#NT#2017/04/28#KCHong -begin +//#NT# CNN Object detection +#define _OD_FUNC_ DISABLE +//#NT#2017/04/28#KCHong -end + +#define USERLOG_FUNC DISABLE + + +// fileSize align function +#define FILESIZE_ALIGN_FUNC DISABLE +#define PHOTO_FILESIZE_ALIGN_VALUE 2*1024*1024 // 2MB +#define FS_ALIGN_RESERVED_SIZE (2 * MOVIE_FILESIZE_ALIGN_VALUE) + +#define FS_SWITCH_STRG_FUNC DISABLE + +// mount sd-2 as "B:\\" +// To mount sd-2 as "B:\\" please do the following steps +// 1. set .int_id_dst[CC_CORE_MIPS1].Bit.bInt_ID_SDIO2 to TRUE +// 2. enable FS_DX_TYPE_DRIVE_B as DX_TYPE_CARD2 +// 3. enable FS_MULTI_STRG_FUNC +// 4. NETWORK = NETWORK_NONE (Both uITRON and eCos) +#define FS_MULTI_STRG_FUNC DISABLE +//MULTI_DRIVE +#if defined(_EMBMEM_EMMC_) && (FS_MULTI_STRG_FUNC==DISABLE) +#define FS_DX_TYPE_DRIVE_A USER_DX_TYPE_EMBMEM_FAT +#else +#define FS_DX_TYPE_DRIVE_A DX_TYPE_CARD1 +#endif +#define FS_DX_TYPE_DRIVE_B USER_DX_TYPE_EMBMEM_FAT //FS_MULTI_STRG_FUNC must enable for FS_DX_TYPE_DRIVE_B + +#define _3DNROUT_FUNC DISABLE + +#define RTC_FUNC DISABLE + +#define DISPLAY_FAST_SWITCH DISABLE //fast swicth display device +#define DISPLAY_OSD2_FMT DISP_PXLFMT_INDEX8 // 256 colors +#define SPK_MASK 0x01 +#define LOUT_MASK 0x02 +#define LINE_INSERT_FUNCTION DISABLE //Auto Detect - LINE cable insert (audio out) +#define USE_DPOF DISABLE +#define BT_FUNC DISABLE +#define ECOS_DBG_MSG_FORCE_UART1_DIRECT DISABLE +#define USOCKET_CLIENT DISABLE +#define MOVIE_DISDSP_FUNC DISABLE +#define WIFI_UI_VER_1_0 0 +#define WIFI_UI_VER_2_0 1 +#define WIFI_UI_FLOW_VER WIFI_UI_VER_1_0 +#define LOG_DBGINFO_IN_GPS_SECTION DISABLE +#define MOVIE_TD_SAVE_LOG DISABLE +#define MOVIE_SCD_FUNC DISABLE +#define UVC_MULTIMEDIA_FUNC DISABLE +#if (UVC_MULTIMEDIA_FUNC == ENABLE) +#undef MOVIE_UVAC_FUNC +#define MOVIE_UVAC_FUNC ENABLE // it needs to enable MOVIE_UVAC_FUNC if UVC_MULTIMEDIA_FUNC was enabled +#endif +#define FORCE_UNPLUG_RTSP DISABLE +#define IQTOOL_FUNC DISABLE +#define GXGFX_ADVANCED_STRING_FUNC DISABLE +#define SMALL_CLONE_MOVIE DISABLE +#define CUSTOM_NAMING_RULE DISABLE +#define LINUX_CVHOST_FUNC DISABLE +#define AUDIO_PLAY_TEST DISABLE +#define FTG_SNAPSHOT_FUN DISABLE +#define FTG_MAX_SNAPSHOT_NUM 5 +#define FTG_OVERRALL_MAX_BUF_SIZE 250*1024 +#define FTG_FACE_MAX_BUF_SIZE 100*1024 +#define FTG_MAX_SNAPSHOT_SIZE 1024*1024*25 +#define FTG_MAX_FACE_PIC_NUM 3 +#define RTSP_AUDIO_ENABLE DISABLE +#define AUDIO_CMD_UCTRL_ENABLE DISABLE +#define FACE_GRADE_TEST DISABLE +#define IPCAM_UVC_FUNC DISABLE +#define BOOT_RESET_MENU_INFO ENABLE +#define VIDEOSPRITEIPC DISABLE +#define IPCAM_FD_FUNC DISABLE +//#define IPCAM_DIS_FUNC DISABLE +#define IPCAM_DIS_MV_FUNC DISABLE //Digital Image Stabilzier: calculate motion vector +#define IPCAM_DIS_COMP_FUNC DISABLE //DIS compensation: if set IPCAM_DIS_COMP_FUNC = enable, it should set IPCAM_DIS_MV_FUNC = TRUE, too +#define HOT_PLUG_REMAIN_SIZE 0 +#define _CVHOST_EX_ DISABLE +#define _CVHOST_EX_ENDSP_ DISABLE +#define _NVTCV_EX_ DISABLE +#define _NVTCV_EX_ENDSP_ DISABLE +#define MOVIE_MAX_CHANNEL 16 +#define LINUX_MSDC DISABLE //DISABLE +#define STEREO_FUNC DISABLE +#define THUMB_STAMP_FUNC DISABLE +#define STAMP_PRIVATE_POOL ENABLE +#define VIDEOSPRITE_STAMP_FUNC ENABLE +#define VDOENC_MULTI_TEMPORARY_LAYER DISABLE //Multi Temporary Layer +#define YUV_TV_RANGE DISABLE //YUV color space in tv range +#define VIDEO_FUNC_MJPG DISABLE +#define VIDEO_FUNC_H264 DISABLE +#define VIDEO_FUNC_H265 DISABLE +#define STOP_REC_BK DISABLE +#define NMEDIAPLAY_FUNC DISABLE // switch SMediaPlay and NMediaPlay flow, use NMediaPlay when DISABLE to be set. +#define MOVIE_AI_DEMO DISABLE + +#define HUNTING_CAMERA_SYS_PARTITION_NAME sys + +///////////////sf st////////////////////// +#define HUNTING_CAMERA_MCU ENABLE +#define HUNTING_CAMERA_4G ENABLE//DISABLE +#define PHOTO_PREVIEW_SLICE_ENC_FUNC ENABLE +#define PHOTO_PREVIEW_SLICE_ENC_VER2_FUNC ENABLE +#define DZOOM_FUNC ENABLE +#define HUNTING_MCU_I2C DISABLE +#define HUNTING_MCU_UART ENABLE +#define HUNTING_IR_LED_940 ENABLE +#define SF_EXIF_MN_BUF_SIZE 256 +#define SF_BASE_VERSION "7MD4RCwD901" +#define HW_S530 DISABLE +#define DCF_DIR_NAME "MEDIA" /* 100MEDIA */ +#define DCF_FILE_NAME "SYFW" /* SYFW0001.JPG */ +#define PHOTO_THUMB_PATH "A:\\THUMB\\" +#define MOVIE_THUMB_PATH "A:\\THUMB\\" +#define SF_SD_ROOT "/mnt/sd/" +#define SF_SEND_LIST_DIR "/mnt/sd/THUMB/" +#define SF_THUMB_SEND_LIST SF_SEND_LIST_DIR"send.list" +#define SF_THUMB_SEND_AUTO SF_SEND_LIST_DIR"auto.list" +#define SF_HD_DIR_LIST SF_SEND_LIST_DIR"HD/send.list" +#define SF_HD_DIR SF_SEND_LIST_DIR"HD" +#define SF_HD_DIR_CARDV "A:\\THUMB\\HD\\" + +#define SF_FW_CFG_FILE_NAME "SPHOST_REVEAL.CFG" +#define SF_FW_FILE_NAME "SPHOST_REVEAL.BRN" +#define SF_FW_CFG_FILE_PATH "A:\\SPHOST_REVEAL.CFG" +#define SF_FW_FILE_PATH "A:\\SPHOST_REVEAL.BRN" +#define SF_CAMERA_INFO_FILENAME SF_SD_ROOT"/CAM_INFO.TXT" +#define SF_IQ_TEST DISABLE +#define SF_IS_RELEASE DISABLE + +#define PHOTO_ISP_STAMP DISABLE +#define SF_BASE_VERSION_FEA "R2.3" +#define SF_GPS_SUPPORT 0 +#define SF_SEND_LIST_ITEM_LENGTH 15 +#define SF_4G_REGISTER_NETWORK_COUNT 230 +#define SUBSCRIBE_MAX_NUM 10 +#define SUBSCRIBE_SEND_MAX_NUM 50 +#define SUBSCRIBE_VIDEO_MAX_NUM 10 +#define SUBSCRIBE_VIDEO_SEND_MAX_NUM 50 + +#define SF_4G_USB_NET_DOWNLOAD 1 + +#define SF_TEST_GPRS 0 +#define CUSTOM_TEST_FTPS 0 + +#define SF_TEST_OTA_FTP 0 +#define CUSTOM_TEST_OTA_FTP 0 +#define SF_BATTERY_TEST DISABLE +#define SF_BATTERY_TEST_FILE "A:\\BATTERY.TXT" +#define SF_HW_TEST DISABLE +#define SF_MODULE_UP_FILE "EG915QNA.tar.bz2" +#define SF_MODULE_UP_FILE_PATH "/mnt/sd/EG915QNA.tar.bz2" +#define SF_CAM_UP_FILE "S530.tar.bz2" +#define SF_CAM_UP_FILE_PATH "/mnt/sd/S530.tar.bz2" +#define SF_CAMERA_GPS_INFO_FILENAME SF_SD_ROOT"/gps.txt" +//////////////////////sf end/////////////////////////////// + +/******************************************************************************************* + * LVGL UI Style config + ******************************************************************************************/ +#if defined(_UI_STYLE_LVGL_) + +#ifdef DISPLAY_OSD_W +#undef DISPLAY_OSD_W +#endif + +#ifdef DISPLAY_OSD_H +#undef DISPLAY_OSD_H +#endif + +#ifdef DISPLAY_OSD_FMT +#undef DISPLAY_OSD_FMT +#endif + +#include "lv_conf.h" + +/******************************************************************************************* + * OSD res is determined by lvgl library (LV_HOR_RES_MAX / LV_VER_RES_MAX in the lv_conf.h) + ******************************************************************************************/ +#define DISPLAY_OSD_W LV_HOR_RES_MAX +#define DISPLAY_OSD_H LV_VER_RES_MAX + + +/******************************************************************************************* + * OSD format is determined by lvgl library (LV_COLOR_DEPTH in the lv_conf.h) + ******************************************************************************************/ +#if LV_COLOR_DEPTH == 8 + #define DISPLAY_OSD_FMT PXLFMT_INDEX8 + #define DISPLAY_HDAL_OSD_FMT HD_VIDEO_PXLFMT_I8 +#elif LV_COLOR_DEPTH == 24 + #define DISPLAY_OSD_FMT PXLFMT_RGBA5658_PK + #define DISPLAY_HDAL_OSD_FMT HD_VIDEO_PXLFMT_ARGB8565 +#elif LV_COLOR_DEPTH == 32 + #define DISPLAY_OSD_FMT PXLFMT_RGBA8888_PK + #define DISPLAY_HDAL_OSD_FMT HD_VIDEO_PXLFMT_ARGB8888 +#else + #error "LV_COLOR_DEPTH in the lv_conf.h is currently not supported" +#endif + +#define OSD_SCREEN_SIZE (DISPLAY_OSD_W*DISPLAY_OSD_H*HD_VIDEO_PXLFMT_BPP(DISPLAY_HDAL_OSD_FMT)/8) + +/******************************************************************************************* + * Movie stamp user config + ******************************************************************************************/ +#define LV_USER_CFG_STAMP_FONT_ID_24M LV_PLUGIN_FONT_ID_ARIALUNI_106_1BPP +#define LV_USER_CFG_STAMP_FONT_ID_16M LV_PLUGIN_FONT_ID_ARIALUNI_86_1BPP +#define LV_USER_CFG_STAMP_FONT_ID_12M LV_PLUGIN_FONT_ID_ARIALUNI_74_1BPP +#define LV_USER_CFG_STAMP_FONT_ID_8M LV_PLUGIN_FONT_ID_ARIALUNI_60_1BPP +#define LV_USER_CFG_STAMP_FONT_ID_LARGE LV_PLUGIN_FONT_ID_ARIALUNI_48_1BPP +#define LV_USER_CFG_STAMP_FONT_ID_MEDIUM LV_PLUGIN_FONT_ID_ARIALUNI_32_1BPP +#define LV_USER_CFG_STAMP_FONT_ID_SMALL_PIC LV_PLUGIN_FONT_ID_ARIALUNI_18_1BPP +#define LV_USER_CFG_STAMP_FONT_ID_SMALL LV_PLUGIN_FONT_ID_ARIALUNI_16_1BPP +#define LV_USER_CFG_STAMP_FONT_ID_XS LV_PLUGIN_FONT_ID_NOTOSANS_BLACK_8_1BPP + +#define LV_USER_CFG_STAMP_LETTER_SPACE 0 +#define LV_USER_CFG_STAMP_TEXT_ALIGN LV_ALIGN_CENTER +#define LV_USER_CFG_STAMP_RADIUS 0 +#define LV_USER_CFG_STAMP_BORDER_WIDTH 10 +#define LV_USER_CFG_STAMP_EXT_WIDTH 0 +#define LV_USER_CFG_STAMP_EXT_HEIGHT 0 + +/* please always fill ARGB8888, alpha channel will be discarded if output format is yuv (Photo UIDateImprint) */ +#define LV_USER_CFG_STAMP_COLOR_TEXT 0xFFFFFFFF /* text color */ +#define LV_USER_CFG_STAMP_COLOR_BACKGROUND 0XFF000000 /* background color: black */ +#define LV_USER_CFG_MOVIE_DATESTAMP_COLOR_BACKGROUND 0X00000000 /* background color: none */ +#define LV_USER_CFG_STAMP_COLOR_FRAME 0x00000000 /* frame color */ + +/******************************************************************************************* + * Enable LVGL rotate depend on VDO_USE_ROTATE_BUFFER (LV_USE_GPU_NVT_DMA2D in the lv_conf.h should be enabled) + ******************************************************************************************/ +#if VDO_USE_ROTATE_BUFFER == ENABLE + #if LV_USE_GPU_NVT_DMA2D + #define LV_USER_CFG_USE_ROTATE_BUFFER 1 + #else + #error "LV_USE_GPU_NVT_DMA2D in the lv_conf.h must be enabled when VDO_USE_ROTATE_BUFFER = ENABLE" + #endif +#else + #define LV_USER_CFG_USE_ROTATE_BUFFER 0 +#endif + +#define LV_USER_CFG_USE_TWO_BUFFER 0 + +#endif + +#endif //_PRJCFG_DVCAM_H_ diff --git a/code/application/source/cardv/SrcCode/UIApp/Network/UIAppNetwork.c b/code/application/source/cardv/SrcCode/UIApp/Network/UIAppNetwork.c index 0a0f6724f..6ec83c52e 100644 --- a/code/application/source/cardv/SrcCode/UIApp/Network/UIAppNetwork.c +++ b/code/application/source/cardv/SrcCode/UIApp/Network/UIAppNetwork.c @@ -1622,10 +1622,10 @@ INT32 sf_net_wifi_init(UINT32 mode, UINT32 security) nvt_wifi_settings *pwifi = &wifiConfig; DBG_IND("set wifi %d %d \r\n", mode, security); - system("modprobe 8189fs"); + //system("modprobe 8189fs"); //usleep(2); - system("ifconfig lo 127.0.0.1"); - DBG_IND("ifconfig\r\n"); + //system("ifconfig lo 127.0.0.1"); + //DBG_IND("ifconfig\r\n"); memset(pwifi, 0, sizeof(nvt_wifi_settings)); diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c index b8b92dd8c..4f7795366 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c @@ -1834,7 +1834,7 @@ void SysResetFlag(void) sf_base64_decode(OTA_FTP_PASSWORD, (char *)tmpStr); snprintf((char *)puiPara->OtaFtpPassWord, sizeof(puiPara->OtaFtpPassWord), (char *)tmpStr); - #if defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) + #if defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) || defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S550_) puiPara->GpsNumber = DEFAULT_GPS_NUMBER; puiPara->TimeSend1Switch = DEFAULT_TIMESEND1_SWITCH; puiPara->TimeSend2Switch = DEFAULT_TIMESEND2_SWITCH; diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.h b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.h index 95dd0cfec..d8572625a 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.h +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.h @@ -405,7 +405,7 @@ typedef struct _UIMenuUIMenuStoreInfo { SF_PARA_TIME_S PirDelayTime; SF_PARA_TIME_S DailyReportTime; SF_PARA_TIME_S DailyReportTime2; - #if defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) + #if (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) || defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S550_)) SF_PARA_TIME_S TimeSend1; SF_PARA_TIME_S TimeSend2; SF_PARA_TIME_S TimeSend3; @@ -475,7 +475,7 @@ typedef struct _UIMenuUIMenuStoreInfo { CHAR GpsAntiTheftSwitch; CHAR BatteryLogSwitch; - #if defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) + #if (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) || defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S550_)) ////////////S530//////// CHAR GpsNumber; CHAR TimeSend1Switch;/*OFF/ON*/ @@ -1892,7 +1892,7 @@ typedef enum SF_PIR_SENSITIVITY_LOW, SF_PIR_SENSITIVITY_MAX, } SF_PIR_SENSITIVITY; -#elif defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) +#elif (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) || defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S550_)) typedef enum { diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIPhotoMapping.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIPhotoMapping.c index d4bd3636a..ca0d76a20 100644 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIPhotoMapping.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIPhotoMapping.c @@ -39,7 +39,7 @@ static PHOTO_SIZE_PARAM g_PhotoCapSizeTable[PHOTO_SIZE_ID_MAX + 2] = { {3264, 2448, IMAGERATIO_4_3, "8M"}, // 8M #if defined(_MODEL_565_HUNTING_EVB_LINUX_4G_68CS_) {2960, 1666, IMAGERATIO_16_9, "5M"}, // 5M - #elif defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) + #elif (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) || defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S550_)) {2592, 1944, IMAGERATIO_4_3, "5M"}, // 5M #endif {2048, 1536, IMAGERATIO_4_3, "3M"}, // 3M @@ -55,7 +55,7 @@ static PHOTO_SIZE_PARAM g_PhotoCapSizeTable[PHOTO_SIZE_ID_MAX + 2] = { static PHOTO_SIZE_PARAM g_ScreenNailSizeTable[SCREEN_PHOTO_SIZE_ID_MAX + 2] = { #if defined(_MODEL_565_HUNTING_EVB_LINUX_4G_68CS_) {1024, 768, IMAGERATIO_4_3, "0.78M"}, // 0.78M - #elif defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) + #elif (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) || defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S550_)) {640, 480, IMAGERATIO_4_3, "VGA"}, // VGA {1024, 768, IMAGERATIO_4_3, "XGA"}, // 0.78M {1920, 1440, IMAGERATIO_4_3, "2.76M"}, // 2.76M diff --git a/code/application/source/sf_app/code/source/4gMng/sf_4g_lpa.c b/code/application/source/sf_app/code/source/4gMng/sf_4g_lpa.c index 9f99652a9..fec90dc9c 100755 --- a/code/application/source/sf_app/code/source/4gMng/sf_4g_lpa.c +++ b/code/application/source/sf_app/code/source/4gMng/sf_4g_lpa.c @@ -3423,20 +3423,26 @@ void sf_network_switch_thread() { sf_sys_status_led_set(SF_SIM_SWITCH_VERIZON_PROFILE); sleep(3); + #if (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_)) sf_led_set(SF_LED_SIG3, SF_LED_STATE_OFF); + #endif } else if(profileId == 1) { sf_sys_status_led_set(SF_SIM_SWITCH_ATT_PROFILE); sleep(3); + #if (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_)) sf_led_set(SF_LED_SIG2, SF_LED_STATE_OFF); + #endif } else { sf_sys_status_led_set(SF_SIM_SWITCH_OTHER_PROFILE); sleep(3); + #if (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_)) sf_led_set(SF_LED_SIG4, SF_LED_STATE_OFF); + #endif } //LOG_DM_RS("Reboot Camera...!\n"); diff --git a/code/application/source/sf_app/code/source/battery/sf_battery.c b/code/application/source/sf_app/code/source/battery/sf_battery.c index 0302e2229..937f2aa15 100755 --- a/code/application/source/sf_app/code/source/battery/sf_battery.c +++ b/code/application/source/sf_app/code/source/battery/sf_battery.c @@ -397,7 +397,7 @@ UINT32 sf_battery_adc_value_get_once(void) } #endif -#if HW_S530 +#if (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) || defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S550_)) /************************************************* Function: sf_battery_level_update diff --git a/code/application/source/sf_app/code/source/devMng/sf_ledmng.c b/code/application/source/sf_app/code/source/devMng/sf_ledmng.c index 0d59e9f13..e6780f679 100755 --- a/code/application/source/sf_app/code/source/devMng/sf_ledmng.c +++ b/code/application/source/sf_app/code/source/devMng/sf_ledmng.c @@ -401,6 +401,7 @@ void* sf_led_thread(void *arg) { if(isUsbIn) { + #if (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_)) if((SF_LED_BUSY == i) || (SF_LED_STATUS_G == i)) { sf_led_on(LedInfo[i].ledId); @@ -409,7 +410,9 @@ void* sf_led_thread(void *arg) { sf_led_off(LedInfo[i].ledId); } + #endif } + #if (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_)) else if(FormatSdFlag) { if (FormatSdFlag == 1) @@ -455,6 +458,7 @@ void* sf_led_thread(void *arg) } } } + #endif else if(isGoToPir) { if(i < SF_LED_BUSY) @@ -894,6 +898,7 @@ void sf_sys_status_led_set(LedSysState_t ledSysStateId) case SF_LED_SYS_STATE_PIR_NOT_DETECT: sf_led_set(SF_LED_BUSY, SF_LED_STATE_ON); break; + #if (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_)) case SF_LED_SYS_STATE_BAT_0_SLOW: sf_led_set(SF_LED_BAT1, SF_LED_STATE_SLOW_FLASHING); sf_led_set(SF_LED_BAT2, SF_LED_STATE_OFF); @@ -921,7 +926,7 @@ void sf_sys_status_led_set(LedSysState_t ledSysStateId) //sf_set_4g_status(SF_4G_FAIL); sf_led_set(SF_LED_SIG4, SF_LED_STATE_SLOW_FLASHING); break; - + #endif default: break; } diff --git a/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c b/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c index ec9222f20..a5e2136d9 100755 --- a/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c +++ b/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c @@ -2021,12 +2021,13 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen) if(puiPara->DebugMode) { //sf_led_flash_start(SF_LED_FAST_FLAH, Sf_LED_SD_G); + sf_sys_status_led_set(SF_LED_SYS_STATE_DEBUG_ON); } else { //sf_led_flash_stop(Sf_LED_SD_G); //sf_set_sd_led_status(); - + sf_sys_status_led_set(SF_LED_SYS_STATE_DEBUG_OFF); } paramSaveFlag = 1; respFlag = 2; diff --git a/code/driver/source/mcu/sf_mcu_dev.h b/code/driver/source/mcu/sf_mcu_dev.h index 937e81cfd..bd795c3d2 100755 --- a/code/driver/source/mcu/sf_mcu_dev.h +++ b/code/driver/source/mcu/sf_mcu_dev.h @@ -31,7 +31,7 @@ //#endif //#ifndef SF_I2C_ADDR -#if defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) +#if (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) || defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S550_)) #define MCU_I2C_SLAVE_ADDR (0x20>>1) #elif defined(_MODEL_565_HUNTING_EVB_LINUX_4G_68CS_) #define MCU_I2C_SLAVE_ADDR (0xA0>>1) diff --git a/code/lib/source/sifar/code/include/sf_common.h b/code/lib/source/sifar/code/include/sf_common.h index a0a74c4be..7eefe1c91 100755 --- a/code/lib/source/sifar/code/include/sf_common.h +++ b/code/lib/source/sifar/code/include/sf_common.h @@ -122,12 +122,12 @@ UINT32 sf_cardv_cap_start(void); UINT32 sf_cardv_hd_cap_start(void); void sf_cardv_set_wait_shared_condition(int in); int sf_cardv_para_signaling_start(void); -void sf_cardv_wifi_send(void); +UINT32 sf_cardv_wifi_send(void); void sf_set_ui_para_flag(UINT8 flag); UINT8 sf_get_ui_para_flag(void); BOOL sf_cmd_ftp_ota(unsigned char argc, char **argv); BOOL sf_cmd_switch_esim(unsigned char argc, char **argv); - +void sf_set_debug_mode(void); #endif diff --git a/code/lib/source/sifar/code/source/common/sf_common.c b/code/lib/source/sifar/code/source/common/sf_common.c index 61f559fb4..e2e4fc759 100755 --- a/code/lib/source/sifar/code/source/common/sf_common.c +++ b/code/lib/source/sifar/code/source/common/sf_common.c @@ -59,6 +59,7 @@ #include #include #include "UIAppNetwork.h" +#include "sf_common.h" #include "sf_mcu.h" #include "sf_4g_lpa.h" #include @@ -278,7 +279,7 @@ void sf_mode_detect(void) { #if defined(_MODEL_565_HUNTING_EVB_LINUX_4G_68CS_) Ux_PostEvent(NVTEVT_SYSTEM_SHUTDOWN, 1, APP_POWER_OFF_NORMAL); //shutdown start - #elif defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) + #elif defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) || defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S550_) Ux_PostEvent(NVTEVT_SYSTEM_SHUTDOWN, 1, APP_POWER_OFF_APO); //shutdown start #endif } @@ -1701,45 +1702,6 @@ static SINT32 sf_cardv_proccess_cmd_gprs(SF_MESSAGE_BUF_S *pMessageBuf) return SF_SUCCESS; } -void sf_cardv_wifi_send() -{ - SINT32 fd = 0; - SINT32 sendBuffLen = 0; - SINT8 sendBuff[1024] = { 0 }; - SINT32 i = 0; - struct stat statBuf; - - if(SF_SUCCESS == sf_share_mem_hd_update()) - { - //SF_REPORT_WIFI_ATTR_S* wifiCfg = sf_wifi_cfg_get(); - fd = sf_get_wifi_socket(); - - SF_CHAR filePath[64] = { 0 }; - SINT32 fdWifi = -1; - sprintf(filePath, "/tmp/wifiData.txt"); - printf("filePath:%s\n", filePath); - - fdWifi = open(filePath, O_RDWR, 0777); - if(fdWifi >= 0) - { - fstat(fdWifi, &statBuf); - sendBuffLen = statBuf.st_size; - printf("fSize=%d\n", sendBuffLen); - read(fdWifi, sendBuff, sendBuffLen); - close(fdWifi); - - for(i = 0; i < sendBuffLen; i++) - { - printf("[%x]-", sendBuff[i]); - } - printf("\n[cardv-sendBuff-1] e\n"); - - send(fd, sendBuff, sendBuffLen, 0); - remove("/tmp/wifiData.txt"); - } - } -} - static SINT32 sf_cardv_proccess_cmd_wifi(SF_MESSAGE_BUF_S *pMessageBuf) { MLOGI("ID = %#x\n",pMessageBuf->arg1); @@ -2684,6 +2646,46 @@ UINT32 sf_cardv_hd_cap_start(void) return SF_SUCCESS; } +UINT32 sf_cardv_wifi_send(void) +{ + SINT32 fd = 0; + SINT32 sendBuffLen = 0; + SINT8 sendBuff[1024] = { 0 }; + SINT32 i = 0; + struct stat statBuf; + + if(SF_SUCCESS == sf_share_mem_hd_update()) + { + //SF_REPORT_WIFI_ATTR_S* wifiCfg = sf_wifi_cfg_get(); + fd = sf_get_wifi_socket(); + + SF_CHAR filePath[64] = { 0 }; + SINT32 fdWifi = -1; + sprintf(filePath, "/tmp/wifiData.txt"); + printf("filePath:%s\n", filePath); + + fdWifi = open(filePath, O_RDWR, 0777); + if(fdWifi >= 0) + { + fstat(fdWifi, &statBuf); + sendBuffLen = statBuf.st_size; + printf("fSize=%d\n", sendBuffLen); + read(fdWifi, sendBuff, sendBuffLen); + close(fdWifi); + + for(i = 0; i < sendBuffLen; i++) + { + printf("[%x]-", sendBuff[i]); + } + printf("\n[cardv-sendBuff-1] e\n"); + + send(fd, sendBuff, sendBuffLen, 0); + remove("/tmp/wifiData.txt"); + } + } + return 0; +} + UINT8 sf_get_ui_para_flag(void) { return UiparaFlag; @@ -2693,3 +2695,19 @@ void sf_set_ui_para_flag(UINT8 flag) { UiparaFlag = flag; } + +void sf_set_debug_mode(void) +{ + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + + if(1 == puiPara->DebugMode) + { + puiPara->DebugMode = 0; + sf_sys_status_led_set(SF_LED_SYS_STATE_DEBUG_OFF); + } + else + { + puiPara->DebugMode = 1; + sf_sys_status_led_set(SF_LED_SYS_STATE_DEBUG_ON); + } +} \ No newline at end of file diff --git a/code/lib/source/sifar/code/source/mcu/sf_mcu_client.c b/code/lib/source/sifar/code/source/mcu/sf_mcu_client.c index d97e7ef9f..537fd7482 100644 --- a/code/lib/source/sifar/code/source/mcu/sf_mcu_client.c +++ b/code/lib/source/sifar/code/source/mcu/sf_mcu_client.c @@ -67,7 +67,7 @@ static UINT8 McuProductInfo = 0; #if defined(_MODEL_565_HUNTING_EVB_LINUX_4G_68CS_) static UINT8 drNoResetTimeSync = FALSE; //0:reset; 1:no reset; -#elif defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) +#elif (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) || defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S550_)) //static UINT8 isSignalReady = 0; //static UINT32 GPRS_ERRNO = 0; @@ -458,7 +458,7 @@ UINT8 sf_mcu_power_on_para_get(MCUParam_t attrId) dataTemp2 = mcuData[i++]; IRSHTTER = (dataTemp2 << 8) | dataTemp1; - #if defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) + #if (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) || defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S550_)) if(startMode == PWR_ON_TIME_SYNC) { startMode = PWR_ON_DAILY_REPORT; @@ -1371,7 +1371,7 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) return SUCCESS; } -#elif defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) +#elif (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) || defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S550_)) //#if 0 /************************************************* Function: sf_mcu_analog_pir_sen_convert diff --git a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/make_post.sh b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/make_post.sh new file mode 100755 index 000000000..5ef61d24f --- /dev/null +++ b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/make_post.sh @@ -0,0 +1,132 @@ +#!/bin/bash +# global settings +KEEP_SENSOR_LIST=(sen_imx290 sen_sc401ai sen_os02k10 sen_os05a10 sen_os05b10 sen_gc4653 sen_gc5603) +KEEP_ISP_CFG=(isp_imx290_0.cfg isp_gc4653_0.cfg isp_os05a10_0.cfg isp_os05b10_0.cfg isp_sc401ai_0.cfg isp_gc5603_0.cfg ) +KEEP_ISP_BIN=(lut2d_table.bin dpc_table.bin ecs_table.bin ecs_table_ir.bin) +KEEP_LCD_LIST=(disp_if8b_lcd1_psd200_st7789v) + +# install appfs: 1. copy isp_xxx.cfg 2.copy isp bin +pushd ${NVT_HDAL_DIR}/vendor/isp/configs/ +ISP_CFG_DIR=${ROOTFS_DIR}/rootfs/etc/app/isp + +mkdir -p ${ISP_CFG_DIR} +for n in "${KEEP_ISP_CFG[@]}" +do + cp cfg/${n} ${ISP_CFG_DIR} +done +for n in "${KEEP_ISP_BIN[@]}" +do + cp bin/${n} ${ISP_CFG_DIR} +done + +popd + +# remove sensor ko and install sensor cfg to /etc/app/sensor +KEEP_SENSOR_DIR=${ROOTFS_DIR}/rootfs/lib/modules/${NVT_LINUX_VER}/hdal/keep_sensores +SENSOR_CFG_DIR=${ROOTFS_DIR}/rootfs/etc/app/sensor +mkdir -p ${SENSOR_CFG_DIR} +mkdir ${KEEP_SENSOR_DIR} +for n in "${KEEP_SENSOR_LIST[@]}" +do + cp ${NVT_HDAL_DIR}/ext_devices/sensor/configs/cfg/${n}_565.cfg ${SENSOR_CFG_DIR} + mv ${ROOTFS_DIR}/rootfs/lib/modules/${NVT_LINUX_VER}/hdal/${n} ${KEEP_SENSOR_DIR} +done +rm -rf ${ROOTFS_DIR}/rootfs/lib/modules/${NVT_LINUX_VER}/hdal/sen_* +mv ${KEEP_SENSOR_DIR}/* ${ROOTFS_DIR}/rootfs/lib/modules/${NVT_LINUX_VER}/hdal +rmdir ${KEEP_SENSOR_DIR} + + +echo ${NVT_LINUX_VER} +KERVER=${NVT_LINUX_VER} +#SENSOR1=sen_os05b10 +SENSOR1=`cat configs/cfg_gen/ModelConfig.mk | grep "SENSOR1 =" | sed 's/SENSOR1 = //g'` +#LCD1=disp_if8b_lcd1_psd200_st7789v +LCD1=`cat configs/cfg_gen/ModelConfig.mk | grep "LCD1 =" | sed 's/LCD1 = //g'` +# move ko to ramdisk to speed up boot time. + +echo sen1=${SENSOR1} + +MV_KO_LIST=(\ +/lib/modules/$KERVER/extra/mcu/drv_sf_i2c_mcu.ko \ +/lib/modules/$KERVER/extra/crypto/cryptodev-linux/cryptodev.ko \ +/lib/modules/$KERVER/vos/kwrap/kwrap.ko \ +/lib/modules/$KERVER/hdal/comm/nvtmem/nvtmem.ko \ +/lib/modules/$KERVER/hdal/comm/kdrv_comm.ko \ +/lib/modules/$KERVER/hdal/kdrv_gfx2d/kdrv_gfx2d.ko \ +/lib/modules/$KERVER/hdal/kdrv_videocapture/kdrv_videocapture.ko \ +/lib/modules/$KERVER/hdal/kdrv_videoprocess/kdrv_videoprocess.ko \ +/lib/modules/$KERVER/hdal/kflow_common/kflow_common.ko \ +/lib/modules/$KERVER/hdal/kflow_gfx/videosprite/nvt_videosprite.ko \ +/lib/modules/$KERVER/hdal/kflow_videocapture/kflow_videocapture.ko \ +/lib/modules/$KERVER/hdal/kflow_videoprocess/kflow_videoprocess.ko \ +/lib/modules/$KERVER/hdal/kdrv_gfx2d/kdrv_affine/affine_neon/kdrv_afn_neon.ko \ +/lib/modules/$KERVER/hdal/kdrv_gfx2d/kdrv_affine/kdrv_afn.ko \ +/lib/modules/$KERVER/hdal/kflow_gfx/nvt_gfx.ko \ +/lib/modules/$KERVER/hdal/kdrv_videoout/ide/nvt_ide.ko \ +/lib/modules/$KERVER/hdal/kdrv_videoout/dsi/nvt_dsi.ko \ +/lib/modules/$KERVER/hdal/kdrv_videoout/display_obj/kdrv_videoout.ko \ +/lib/modules/$KERVER/hdal/kflow_videoout/unit/kflow_videoout.ko \ +/lib/modules/$KERVER/hdal/display_panel/nvt_dispdev_panel.ko \ +/lib/modules/$KERVER/hdal/display_panel/${LCD1}/${LCD1}.ko \ +/lib/modules/$KERVER/hdal/kdrv_videocodec/kdrv_h26x.ko \ +/lib/modules/$KERVER/hdal/nvt_vencrc/nvt_vencrc.ko \ +/lib/modules/$KERVER/hdal/kflow_videoenc/unit/kflow_videoenc.ko \ +/lib/modules/$KERVER/hdal/kflow_videodec/unit/kflow_videodec.ko \ +/lib/modules/$KERVER/hdal/kdrv_audioio/audio_common/nvt_audio.ko \ +/lib/modules/$KERVER/hdal/kdrv_audioio/kdrv_audio/nvt_kdrv_audio.ko \ +/lib/modules/$KERVER/hdal/kflow_audiocapture/unit/kflow_audiocap.ko \ +/lib/modules/$KERVER/hdal/kflow_audioout/unit/kflow_audioout.ko \ +/lib/modules/$KERVER/hdal/kdrv_audioio/audlib_aac/nvt_audlib_aac.ko \ +/lib/modules/$KERVER/hdal/kflow_audioenc/unit/kflow_audioenc.ko \ +/lib/modules/$KERVER/hdal/kflow_audiodec/unit/kflow_audiodec.ko \ +/lib/modules/$KERVER/hdal/isp/nvt_isp.ko \ +/lib/modules/$KERVER/hdal/ae/nvt_ae.ko \ +/lib/modules/$KERVER/hdal/awb/nvt_awb.ko \ +/lib/modules/$KERVER/hdal/iq/nvt_iq.ko \ +/lib/modules/$KERVER/hdal/${SENSOR1}/nvt_${SENSOR1}.ko \ +/lib/modules/$KERVER/hdal/kdrv_md/kdrv_md.ko \ +/lib/modules/$KERVER/kernel/drivers/video/fbdev/core/cfbcopyarea.ko \ +/lib/modules/$KERVER/kernel/drivers/video/fbdev/core/cfbfillrect.ko \ +/lib/modules/$KERVER/kernel/drivers/video/fbdev/core/cfbimgblt.ko \ +/lib/modules/$KERVER/hdal/kdrv_videoout/fbdev/nvt_fb.ko \ +/lib/modules/$KERVER/kernel/drivers/usb/common/usb-common.ko \ +/lib/modules/$KERVER/kernel/drivers/usb/core/usbcore.ko \ +/lib/modules/$KERVER/kernel/drivers/usb/host/ehci-hcd.ko \ +/lib/modules/$KERVER/kernel/drivers/net/mii.ko \ +/lib/modules/$KERVER/kernel/drivers/net/usb/usbnet.ko \ +/lib/modules/$KERVER/extra/net/GobiNet/drv_gobi_net.ko \ +/lib/modules/$KERVER/kernel/drivers/net/usb/cdc_ether.ko \ +/lib/modules/$KERVER/kernel/drivers/net/usb/rndis_host.ko \ +/lib/modules/$KERVER/kernel/drivers/usb/serial/usbserial.ko \ +/lib/modules/$KERVER/kernel/drivers/usb/serial/usb_wwan.ko \ +/lib/modules/$KERVER/kernel/drivers/usb/serial/option.ko \ +/lib/modules/$KERVER/kernel/drivers/usb/class/cdc-wdm.ko \ +/lib/modules/$KERVER/kernel/drivers/net/usb/qmi_wwan.ko \ +) + + +#/lib/modules/$KERVER/hdal/comm/uvcp/nvt_uvcp.ko \ +#/lib/modules/$KERVER/hdal/comm/usb2dev/nvt_usb2dev.ko \ + + + +if [ -d ${ROOTFS_DIR}/rootfs/etc/lib ]; then + echo "remove old rootfs etc/lib" + rm -r ${ROOTFS_DIR}/rootfs/etc/lib +fi + + +for n in "${MV_KO_LIST[@]}" +do + if [ -f ${ROOTFS_DIR}/rootfs/${n} ]; then + path=$(dirname "${ROOTFS_DIR}/rootfs/etc/${n}") + if [ ! -d ${path} ]; then + mkdir -p ${path} + fi + echo "mv ${ROOTFS_DIR}/rootfs/${n} to ${path}/" + mv ${ROOTFS_DIR}/rootfs/${n} ${path}/ + ${STRIP} -g --strip-unneeded ${ROOTFS_DIR}/rootfs/etc/${n} + fi +done + + diff --git a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/mtd_cfg.txt b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/mtd_cfg.txt new file mode 100755 index 000000000..628956a92 --- /dev/null +++ b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/mtd_cfg.txt @@ -0,0 +1,25 @@ +ROOTFS_UBI_SUB_PAGE_SIZE=2048 # Same as page size +ROOTFS_UBI_PAGE_SIZE=2048 # Nand page size +ROOTFS_UBI_ERASE_BLK_SIZE=126976 # (64-2) * Page size=126976 +ROOTFS_UBI_MAX_LEB_COUNT=544 # Size = UBI_MAX_LEB_COUNT * UBI_BLK_SIZE; It's calculated by "python ubi_max_leb.py Bytes" +ROOTFS_UBI_RW_MAX_LEB_COUNT=416 # Size = UBI_MAX_LEB_COUNT * UBI_BLK_SIZE; It's calculated by "python ubi_max_leb.py Bytes" +ROOTFS_UBI_BLK_SIZE="128KiB" # UBIFS Nand flash block size (KiB) +ROOTFS_UBI_COMPRESS_MODE="lzo" # UBIFS compression type: "lzo", "favor_lzo", "zlib" "none" + +ROOTFS_SQ_COMPRESS_MODE="xz" # Squashfs compression type: "gzip", "lzo" and "xz" +ROOTFS_SQ_BLK_SIZE="64K" # Squashfs Nand flash block size (KiB): e.g. spinand: 128K, spinor: 64K + +ROOTFS_JFFS2_COMPRESS_MODE="lzo" # jffs2 compression type: "lzo" "zlib" "rtime" +ROOTFS_JFFS2_SIZE=0x3200000 # jffs2 partition size: get from /proc/mtd +ROOTFS_JFFS2_RW_SIZE=0x2500000 # jffs2 partition size: get from /proc/mtd +ROOTFS_JFFS2_BLK_SIZE="64KiB" # jffs2 block size (KiB): spinand: 128KiB, spinor: 64KiB +ROOTFS_JFFS2_PAGE_SIZE="2048" # jffs2 page size (Bytes): only used by nand, nor flash can be ignored. + +ROOTFS_EXT4_SIZE=$(shell printf "%d\n" 0x0A000000) +ROOTFS_FAT_CACHE_SIZE=$(shell printf "%d\n" 0x0A000000) + +#APPFS, set EN=OFF to disable building vendor_cfg +ROOTFS_JFFS2_APP_SIZE=0x01E0000 +ROOTFS_JFFS2_APP_NOR_SIZE=0x0E20000 +ROOTFS_UBI_APP_MAX_LEB_COUNT=233 +ROOTFS_EXT4_APP_SIZE=$(shell printf "%d\n" 0x0C000000) diff --git a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-audio.dtsi b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-audio.dtsi new file mode 100755 index 000000000..69bcc382d --- /dev/null +++ b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-audio.dtsi @@ -0,0 +1,12 @@ +/* + * Novatek Ltd. NA51089 BSP part of dts + * + * Cortex-A9 + * + */ + +/ { + audio@1 { type = "none"; i2s_ctrl = <0>; sif_channel = <0>; gpio_cold_reset = <0>; gpio_data = <0>; gpio_clk = <0>; gpio_cs = <0>; adc_zero = <0>; }; + audio@2 { type = "embedded"; i2s_ctrl = <4>; sif_channel = <0>; gpio_cold_reset = <0>; gpio_data = <0>; gpio_clk = <0>; gpio_cs = <0>; adc_zero = <0>; }; +}; + diff --git a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-basic.dtsi b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-basic.dtsi new file mode 100755 index 000000000..5eae716e4 --- /dev/null +++ b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-basic.dtsi @@ -0,0 +1,86 @@ +/* + * Novatek Ltd. NA51089 BSP part of dts + * + * Cortex-A9 + * + */ + +#include +#include + +/ { + model = "Novatek NA51089"; + compatible = "novatek,na51089", "nvt,ca9"; + interrupt-parent = <&gic>; + #address-cells = <1>; + #size-cells = <1>; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu0: cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a9"; + reg = <0x0>; + next-level-cache = <&L2>; + clock-frequency = <960000000>; + }; + }; + + cg@f0020000 { + compatible = "nvt,core_clk"; + reg = <0xf0020000 0x1000>; + }; + + /* binding to clk framework driver */ + periph_clk: periph_clk { + compatible = "nvt,periph_clk"; + #clock-cells = <0>; + clock-output-names = "periph_clk"; + }; + + global_timer@ffd00200 { + compatible = "arm,cortex-a9-global-timer"; + reg = <0xffd00200 0x20>; + interrupts = ; + clocks = <&periph_clk>; + }; + + private_timer@ffd00600 { + compatible = "arm,cortex-a9-twd-timer"; + reg = <0xffd00600 0x20>; + interrupts = ; + clocks = <&periph_clk>; + }; + + pmu { + compatible = "arm,cortex-a9-pmu"; + interrupts = ; + interrupt-affinity = <&cpu0>; + }; + + L2: cache-controller@ffe00000 { + compatible = "arm,pl310-cache"; + reg = <0xffe00000 0x1000>; + interrupts = ; + cache-unified; + arm,shared-override; + cache-level = <2>; + arm,data-latency = <2 2 2>; + arm,tag-latency = <2 2 2>; + }; + + gic: interrupt-controller@0xffd00000 { + compatible = "arm,cortex-a9-gic"; + #interrupt-cells = <3>; + interrupt-controller; + reg = <0xffd01000 0x1000>, /* GIC Dist */ + <0xffd00100 0x1000>; /* GIC CPU */ + }; + + scu: snoop-control-unit@0xffd00000 { + compatible = "arm,cortex-a9-scu"; + reg = <0xffd00000 0x100>; + }; +}; diff --git a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-display.dtsi b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-display.dtsi new file mode 100755 index 000000000..0802a7603 --- /dev/null +++ b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-display.dtsi @@ -0,0 +1,29 @@ +/* + * Novatek Ltd. NA51089 BSP part of dts + * + * Cortex-A9 + * + */ +#include +#include + + /* PWM on uboot (nvt_fr_pwm.c) */ + /* "Note:\n" + * "Defalut freq is 250KHz,\n" + * "therefore each unit of [period_ns] and [duty_ns] should be 4000 ns,\n" + * "for channel 0 to 7 the maximum unit is 65535, so legal range of [period_ns] is 8000 to 262140000 ns,\n" + * "for other channels the maximum unit is 255, so legal range of [period_ns] is 8000 to 1020000 ns.\n" + */ +/* lcd_bl_gpio = ; ==> if the controlled method is GPIO of lcd backlight */ +/* lcd_bl2_gpio = ; ==> optional for the circuit design */ +/* lcd_bl_pwm = ; ==> if the controlled method is PWM of lcd backlight*/ +/* lcd_rotate = <0>; ==> 0:rotate 90; 1:rotate 90; 270:rotate 270*/ +/* lcd_enable = ; ==> optional for the circuit design*/ +/* lcd_power = ; ==> optional for the circuit design*/ +/* lcd_standby = ; ==> optional for the circuit design*/ + +/ { + display { type = "lcd"; lcd_ctrl = <1>; sif_channel = <4>; gpio_cs = ; gpio_clk = ; gpio_data = ; }; + logo { enable = <1>; lcd_type = ; lcd_rotate = <270>; lcd_reset = ; lcd_bl_gpio = ; lcd_power = ;}; +}; + diff --git a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-evb.dtb b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-evb.dtb new file mode 100644 index 000000000..cb42afa51 Binary files /dev/null and b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-evb.dtb differ diff --git a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-evb.dts b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-evb.dts new file mode 100755 index 000000000..dfdd8c5fa --- /dev/null +++ b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-evb.dts @@ -0,0 +1,21 @@ +/* + * Novatek Ltd. NA51089 BSP part of dts + * + * Cortex-A9 + * + */ + +/dts-v1/; +#include +#include "nvt-peri.dtsi" /* engine register definition */ +#include "nvt-top.dtsi" /* pinmux, made from tool */ +#include "nvt-i2c.dtsi" /* i2c */ +#include "nvt-gpio.dtsi" /* gpio, made from tool */ +#include "nvt-peri-dev.dtsi"/* peripheral device dts config */ +#include "nvt-audio.dtsi" /* peripheral: audio */ +#include "nvt-display.dtsi" /* peripheral: display */ +#include "nvt-media.dtsi" /* ko files relation */ +#include "nvt-mem-tbl.dtsi" /* memory partition */ +#include "nvt-storage-partition.dtsi" /* flash partition */ +#include "nvt-info.dtsi" /* used for turnkey information */ +#include "nvt-nvtpack.dtsi" /* used for turnkey to make all-in-one bin */ diff --git a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-evb.tmp.dts b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-evb.tmp.dts new file mode 100644 index 000000000..7191afdf4 --- /dev/null +++ b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-evb.tmp.dts @@ -0,0 +1,1183 @@ +# 1 "nvt-evb.dts" +# 1 "" +# 1 "" +# 1 "nvt-evb.dts" + + + + + + + +/dts-v1/; +# 1 "/home/payton/S530/BSP/linux-kernel/include/dt-bindings/gpio/nvt-gpio.h" 1 +# 13 "/home/payton/S530/BSP/linux-kernel/include/dt-bindings/gpio/nvt-gpio.h" +# 1 "/home/payton/S530/BSP/linux-kernel/include/dt-bindings/gpio/gpio.h" 1 +# 14 "/home/payton/S530/BSP/linux-kernel/include/dt-bindings/gpio/nvt-gpio.h" 2 +# 10 "nvt-evb.dts" 2 +# 1 "nvt-peri.dtsi" 1 +# 10 "nvt-peri.dtsi" +# 1 "nvt-basic.dtsi" 1 +# 9 "nvt-basic.dtsi" +# 1 "/home/payton/S530/BSP/linux-kernel/include/dt-bindings/interrupt-controller/arm-gic.h" 1 +# 9 "/home/payton/S530/BSP/linux-kernel/include/dt-bindings/interrupt-controller/arm-gic.h" +# 1 "/home/payton/S530/BSP/linux-kernel/include/dt-bindings/interrupt-controller/irq.h" 1 +# 10 "/home/payton/S530/BSP/linux-kernel/include/dt-bindings/interrupt-controller/arm-gic.h" 2 +# 10 "nvt-basic.dtsi" 2 + +/ { + model = "Novatek NA51089"; + compatible = "novatek,na51089", "nvt,ca9"; + interrupt-parent = <&gic>; + #address-cells = <1>; + #size-cells = <1>; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu0: cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a9"; + reg = <0x0>; + next-level-cache = <&L2>; + clock-frequency = <960000000>; + }; + }; + + cg@f0020000 { + compatible = "nvt,core_clk"; + reg = <0xf0020000 0x1000>; + }; + + + periph_clk: periph_clk { + compatible = "nvt,periph_clk"; + #clock-cells = <0>; + clock-output-names = "periph_clk"; + }; + + global_timer@ffd00200 { + compatible = "arm,cortex-a9-global-timer"; + reg = <0xffd00200 0x20>; + interrupts = <1 11 0xf01>; + clocks = <&periph_clk>; + }; + + private_timer@ffd00600 { + compatible = "arm,cortex-a9-twd-timer"; + reg = <0xffd00600 0x20>; + interrupts = <1 13 0xf01>; + clocks = <&periph_clk>; + }; + + pmu { + compatible = "arm,cortex-a9-pmu"; + interrupts = <0 112 4>; + interrupt-affinity = <&cpu0>; + }; + + L2: cache-controller@ffe00000 { + compatible = "arm,pl310-cache"; + reg = <0xffe00000 0x1000>; + interrupts = <0 96 4>; + cache-unified; + arm,shared-override; + cache-level = <2>; + arm,data-latency = <2 2 2>; + arm,tag-latency = <2 2 2>; + }; + + gic: interrupt-controller@0xffd00000 { + compatible = "arm,cortex-a9-gic"; + #interrupt-cells = <3>; + interrupt-controller; + reg = <0xffd01000 0x1000>, + <0xffd00100 0x1000>; + }; + + scu: snoop-control-unit@0xffd00000 { + compatible = "arm,cortex-a9-scu"; + reg = <0xffd00000 0x100>; + }; +}; +# 11 "nvt-peri.dtsi" 2 + +/ { + chosen { + bootargs = " "; + }; + + aliases { + mmc0 = &mmc0; + mmc1 = &mmc1; + }; + + uart@f0290000 { + compatible = "ns16550a"; + reg = <0xf0290000 0x1000>; + interrupts = <0 43 4>; + baud = <115200>; + reg-shift = <2>; + reg-io-width = <4>; + no-loopback-test = <1>; + clock-frequency = <24000000>; + fifo-size = <64>; + uart_id = <0>; + }; + + uart@f0300000 { + compatible = "ns16550a"; + reg = <0xf0300000 0x1000>; + interrupts = <0 44 4>; + baud = <115200>; + reg-shift = <2>; + reg-io-width = <4>; + no-loopback-test = <1>; + clock-frequency = <48000000>; + fifo-size = <64>; + hw_flowctrl = <0>; + rx_trig_level = <3>; + uart_id = <1>; + }; + + uart@f0310000 { + compatible = "ns16550a"; + reg = <0xf0310000 0x1000>; + interrupts = <0 45 4>; + baud = <115200>; + reg-shift = <2>; + reg-io-width = <4>; + no-loopback-test = <1>; + clock-frequency = <48000000>; + fifo-size = <64>; + hw_flowctrl = <0>; + rx_trig_level = <3>; + uart_id = <2>; + }; + + kdrv_rpc: cc@f0090000 { + compatible = "kdrv_rpc"; + reg = <0xf0090000 0x300>; + interrupts = <0 59 4>; + }; + + mmc0: mmc@f0420000 { + compatible = "nvt,nvt_mmc"; + reg = <0xf0420000 0x1000>; + interrupts = <0 30 4>; + max-frequency = <48000000>; + voltage-switch = <0>; + max-voltage = <3300>; + bus-width = <4>; + neg-sample-edge = <0>; + driving = <15 15 15 20 15 15 25 25 25 25 25 25>; + cd_gpio = <(9) 0x0 0x0>; + card_power_gpio = <(7 + 0x20) 0x0>; + + + }; + + mmc1: mmc@f0500000 { + compatible = "nvt,nvt_mmc2"; + reg = <0xf0500000 0x1000>; + interrupts = <0 31 4>; + max-frequency = <48000000>; + voltage-switch = <0>; + max-voltage = <3300>; + bus-width = <4>; + neg-sample-edge = <0>; + driving = <15 8 8 20 8 8 20 8 8 20 8 8>; + cd_gpio = <0 0x0 0x1>; + + + + }; + + nand: nand@f0400000 { + #address-cells = <2>; + #size-cells = <2>; + compatible = "nvt,nvt_spinand"; + reg = <0xf0400000 0x1000>; + interrupts = <0 29 4>; + clock-frequency = <96000000>; + nvt-devname = "spi_nand.0"; + }; + + nor: nor@f0400000 { + #address-cells = <2>; + #size-cells = <2>; + compatible = "nvt,nvt_spinor"; + reg = <0xf0400000 0x1000>; + interrupts = <0 29 4>; + clock-frequency = <120000000>; + nvt-devname = "spi_nor.0"; + trace-stdtable = <0>; + }; + + gpio: gpio@f0070000 { + compatible = "nvt,nvt_gpio"; + reg = <0xf0070000 0x10000>; + interrupts = <0 24 4>; + #gpio-cells = <2>; + }; + + eth@f02b0000 { + compatible = "nvt,synopsys_eth"; + reg = <0xf02b0000 0x3800>; + interrupts = <0 34 4>; + sp-clk = <0>; + ref-clk-out = <0>; + }; + + phy@f02b3800 { + compatible = "nvt,eth_phy"; + reg = <0xf02b3800 0x400>; + }; + + wdt@f0050000 { + compatible = "nvt,nvt_wdt"; + reg = <0xf0050000 0x10000>; + interrupts = <0 57 4>; + }; + + pwm: pwm@f0210000 { + compatible = "nvt,nvt_kdrv_pwm"; + reg = <0xf0210000 0x2000>; + interrupts = <0 26 4>; + }; + + adc@f0260000 { + compatible = "nvt,nvt_adc"; + reg = <0xf0260000 0x1000>; + interrupts = <0 47 4>; + #io-channel-cells = <1>; + }; + + rtc@f0060000 { + compatible = "nvt,nvt_rtc"; + reg = <0xf0060000 0x100>; + interrupts = <0 56 4>; + }; + + drtc@f00b0000 { + compatible = "nvt,nvt_drtc"; + reg = <0xf00b0000 0x100>; + }; + + crypto: crypto@f0620000 { + compatible = "nvt,nvt_crypto"; + reg = <0xf0620000 0x100>; + interrupts = <0 38 4>; + mclk = <1>; + }; + + hash: hash@f0670000 { + compatible = "nvt,nvt_hash"; + reg = <0xf0670000 0x100>; + interrupts = <0 28 4>; + mclk = <1>; + }; + + rsa: rsa@f06a0000 { + compatible = "nvt,nvt_rsa"; + reg = <0xf06a0000 0x100>; + interrupts = <0 20 4>; + mclk = <1>; + }; + + top: top@f0010000 { + compatible = "nvt,nvt_top"; + reg = <0xf0010000 0x2000 + 0xf0030000 0x2000 + 0xf0070000 0x10000>; + }; + + sie@f0c00000 { + compatible = "nvt,drv_sie"; + reg = <0xf0c00000 0x900 + 0xf0d20000 0x900 + 0xF0D30000 0x900>; + interrupts = <0 1 4 + 0 2 4 + 0 3 4>; + + }; + + tge@f0cc0000 { + compatible = "nvt,kdrv_tge"; + reg = <0xf0cc0000 0x150>; + interrupts = <0 22 4>; + }; + + rhe@f0ce0000 { + compatible = "nvt,kdrv_rhe"; + reg = <0xf0ce0000 0x900>; + interrupts = <0 13 4>; + }; + + ime@f0c40000 { + compatible = "nvt,kdrv_ime"; + reg = <0xf0c40000 0x1000>; + interrupts = <0 6 4>; + }; + + ife2@f0d00000 { + compatible = "nvt,kdrv_ife2"; + reg = <0xf0d00000 0x100>; + interrupts = <0 9 4>; + }; + + ise@f0c90000 { + compatible = "nvt,kdrv_ise"; + reg = <0xf0c90000 0x100>; + interrupts = <0 21 4 + 0 85 4>; + }; + + ipe@f0c30000 { + compatible = "nvt,kdrv_ipe"; + reg = <0xf0c30000 0x900>; + interrupts = <0 5 4>; + }; + + ife@f0c70000 { + compatible = "nvt,kdrv_ife"; + reg = <0xf0c70000 0x800>; + interrupts = <0 8 4>; + }; + + vpe@f0cd0000 { + compatible = "nvt,kdrv_vpe"; + reg = <0xf0cd0000 0x1040>; + interrupts = <0 62 4>; + }; + + ai@f0c60000 { + compatible = "nvt,kdrv_ai"; + reg = <0xf0c60000 0x23c + 0xf0d50000 0x114 + 0xf0cb0000 0x22c>; + interrupts = <0 14 4 + 0 13 4 + 0 11 4>; + clock-frequency = <600000000 480000000 600000000>; + }; + + md@f0c10000 { + compatible = "nvt,kdrv_md"; + reg = <0xf0c10000 0x150>; + interrupts = <0 46 4>; + clock-frequency = <240000000>; + }; + dis@f0c50000 { + compatible = "nvt,kdrv_dis"; + reg = <0xf0c50000 0x114>; + interrupts = <0 10 4>; + }; + + coe@f0a11000 { + compatible = "nvt,nvt_coe"; + reg = <0xf0a11000 0x2c0>; + }; + + dce@f0c20000 { + compatible = "nvt,kdrv_dce"; + reg = <0xf0c20000 0x650>; + interrupts = <0 7 4>; + }; + + ive@f0d70000 { + compatible = "nvt,kdrv_ive"; + reg = <0xf0d70000 0x6c>; + interrupts = <0 53 4>; + }; + + sde@f0d90000 { + compatible = "nvt,kdrv_sde"; + reg = <0xf0d90000 0x90>; + interrupts = <0 74 4>; + }; + + ide@f0800000 { + compatible = "nvt,nvt_ide"; + reg = <0xf0800000 0x1000>; + interrupts = <0 48 4>; + }; + + dsi@f0840000 { + compatible = "nvt,nvt_dsi"; + reg = <0xf0840000 0x1000>; + interrupts = <0 50 4>; + }; + + csi@f0280000 { + compatible = "nvt,nvt_csi"; + reg = <0xf0280000 0x100 + 0xf0330000 0x100>; + interrupts = <0 54 4 + 0 55 4>; + }; + + lvds@f0270000 { + compatible = "nvt,nvt_lvds"; + reg = <0xF0270000 0x200 + 0xF0370000 0x200>; + interrupts = <0 54 4 + 0 55 4>; + }; + + senphy@f06b0000 { + compatible = "nvt,nvt_senphy"; + reg = <0xF06B0000 0x100>; + }; + + ssenif@f0xx0000 { + compatible = "nvt,nvt_ssenif"; + reg = <0xF02C0000 0x2000>; + interrupts = <0 61 4>; + }; + + sif@f0240000 { + compatible = "nvt,nvt_sif"; + reg = <0xf0240000 0x200>; + interrupts = <0 40 4>; + clock-frequency = <1000000>; + }; + + graphic@f0c80000 { + compatible = "nvt,nvt_graphic"; + reg = <0xF0C80000 0x300 + 0xF0D10000 0x100>; + interrupts = <0 18 4 + 0 19 4>; + }; + + affine@f0ca0000 { + compatible = "nvt,nvt_affine"; + reg = <0xF0CA0000 0x100>; + interrupts = <0 52 4>; + }; + + h26x@f0a10000 { + compatible = "nvt,nvt_h26x"; + reg = <0xf0a10000 0xa00>; + interrupts = <0 16 4>; + power_saving = <0>; + }; + + timer@f0040000 { + compatible = "nvt,nvt_timer"; + reg = <0xf0040000 0x300>; + interrupts = <0 0 4>; + }; + + eac@f0640000 { + compatible = "nvt,nvt_eac"; + reg = <0xF0640000 0x200>; + }; + + jpg@f0a00000 { + compatible = "nvt,nvt_jpg"; + reg = <0xf0a00000 0x100>; + interrupts = <0 17 4>; + }; + + nvt_usb2host@f0600000 { + compatible = "nvt,ehci-nvtivot"; + reg = <0xf0600000 0x10000>; + interrupts = <0 27 4>; + }; + + nvt_usb2dev@f0600000 { + compatible = "nvt,fotg200_udc"; + reg = <0xf0600000 0x10000>; + interrupts = <0 27 4>; + }; + + nvt_usb_chrg@f0600000 { + compatible = "nvt,nvt_usb_chrgdet"; + reg = <0xf0600000 0x10000>; + }; + + dai@f0630000 { + compatible = "nvt,nvt_dai"; + reg = <0xF0630000 0xbc>; + interrupts = <0 15 4>; + }; + + rotate@f0cf0000 { + compatible = "nvt,nvt_rotation"; + reg = <0xF0CF0000 0x100>; + interrupts = <0 81 4>; + }; + + drvdump@0 { + compatible = "nvt,nvt_drvdump"; + }; + + dsp@f1430000 { + compatible = "nvt,nvt_dsp"; + reg = <0xF1430000 0x200 + 0xF2000000 0x1000000 + 0xF1440000 0x200 + 0xF3000000 0x1000000>; + interrupts = <0 76 4 + 0 77 4>; + }; + + spi0: spi@f0230000 { + compatible = "nvt,nvt_spi"; + reg = <0xf0230000 0x10000>; + interrupts = <0 35 4>; + dma-support = <0>; + nvt-devname = <0>; + }; + + spi1: spi@f0320000 { + compatible = "nvt,nvt_spi"; + reg = <0xf0320000 0x10000>; + interrupts = <0 36 4>; + dma-support = <0>; + nvt-devname = <1>; + }; + + spi2: spi@f0340000 { + compatible = "nvt,nvt_spi"; + reg = <0xf0340000 0x10000>; + interrupts = <0 37 4>; + dma-support = <0>; + nvt-devname = <2>; + }; + + sdp@f0390000 { + compatible = "nvt,nvt_sdp"; + reg = <0xf0390000 0x28>; + interrupts = <0 12 4>; + }; + + tse@f0650000 { + compatible = "nvt,nvt_tse"; + reg = <0xF0650000 0x90>; + interrupts = <0 23 4>; + }; + + remote@f0250000 { + compatible = "nvt,nvt_remote"; + reg = <0xf0250000 0x28>; + interrupts = <0 25 4>; + }; + + rng: rng@f0680000 { + compatible = "nvt,nvt_rng"; + reg = <0xf0680000 0x100>; + }; + + nvt_arb@f0000000 { + compatible = "nvt,nvt_arb"; + reg = <0xF0000000 0xA000 + 0xF0FE0000 0x300>; + interrupts = <0 33 4>; + }; + + nvt_otp@f0660000 { + compatible = "nvt,nvt_otp"; + reg = <0xF0660000 0x70>; + }; + + kdrv_ipp { + clock-frequency = <240000000>; + }; + + uvcp: uvcp@f0690000 { + compatible = "nvt,nvt_uvcp"; + reg = <0xf0690000 0x200>; + interrupts = <0 59 4>; + }; + pll_preset@0 { + pll3{pll_config = <3 0 0>;}; + pll4{pll_config = <4 0 0>;}; + pll5{pll_config = <5 297000000 1>;}; + pll6{pll_config = <6 0 0>;}; + pll7{pll_config = <7 0 0>;}; + pll8{pll_config = <8 0 0>;}; + pll9{pll_config = <9 0 0>;}; + pll11{pll_config = <11 0 0>;}; + pll12{pll_config = <12 0 1>;}; + }; +}; +# 11 "nvt-evb.dts" 2 +# 1 "nvt-top.dtsi" 1 +&top { + sdio{pinmux = <0x5>;}; + sdio2{pinmux = <0x5>;}; + sdio3{pinmux = <0x0>;}; + nand{pinmux = <0x5>;}; + sensor{pinmux = <0x0>;}; + sensor2{pinmux = <0x0>;}; + mipi_lvds{pinmux = <0x0>;}; + i2c{pinmux = <0x40>;}; + sif{pinmux = <0x0>;}; + uart{pinmux = <0x1825>;}; + spi{pinmux = <0x0>;}; + sdp{pinmux = <0x0>;}; + remote{pinmux = <0x0>;}; + pwm{pinmux = <0x8000>;}; + + pwm2{pinmux = <0x0000000>;}; + ccnt{pinmux = <0x0>;}; + audio{pinmux = <0x0>;}; + lcd{pinmux = <0x10000000>;}; + tv{pinmux = <0x0>;}; + eth{pinmux = <0x0>;}; + misc{pinmux = <0x0>;}; +}; +# 12 "nvt-evb.dts" 2 +# 1 "nvt-i2c.dtsi" 1 + + + + + + + +/ { + i2c0: i2c@f0220000 { compatible = "nvt,nvt_i2c"; reg = <0xf0220000 0x100>; interrupts = <0 41 4>; clock-frequency = <400000>; id = <0>; }; + i2c1: i2c2@f0350000 { compatible = "nvt,nvt_i2c"; reg = <0xf0350000 0x100>; interrupts = <0 42 4>; clock-frequency = <400000>; id = <1>; }; + i2c2: i2c3@f03a0000 { compatible = "nvt,nvt_i2c"; reg = <0xf03a0000 0x100>; interrupts = <0 60 4>; clock-frequency = <50000>; id = <2>; }; +}; +# 13 "nvt-evb.dts" 2 +# 1 "nvt-gpio.dtsi" 1 +&top { +# 201 "nvt-gpio.dtsi" + pgpio10{gpio_config = <(10 + 0x20) 0>;}; + sgpio3{gpio_config = <(3 + 0x40) 1>;}; + + +}; +# 14 "nvt-evb.dts" 2 +# 1 "nvt-peri-dev.dtsi" 1 +# 11 "nvt-peri-dev.dtsi" +&i2c0 { + #address-cells = <1>; + #size-cells = <0>; + + + + + + +}; + +&i2c1 { + #address-cells = <1>; + #size-cells = <0>; +}; + +&i2c2 { + #address-cells = <1>; + #size-cells = <0>; +}; + +&spi0 { + status = "okay"; + #address-cells = <1>; + #size-cells = <0>; +# 44 "nvt-peri-dev.dtsi" +}; + +&spi1 { + status = "okay"; +}; + +&spi2 { + status = "okay"; +}; +# 15 "nvt-evb.dts" 2 +# 1 "nvt-audio.dtsi" 1 + + + + + + + +/ { + audio@1 { type = "none"; i2s_ctrl = <0>; sif_channel = <0>; gpio_cold_reset = <0>; gpio_data = <0>; gpio_clk = <0>; gpio_cs = <0>; adc_zero = <0>; }; + audio@2 { type = "embedded"; i2s_ctrl = <4>; sif_channel = <0>; gpio_cold_reset = <0>; gpio_data = <0>; gpio_clk = <0>; gpio_cs = <0>; adc_zero = <0>; }; +}; +# 16 "nvt-evb.dts" 2 +# 1 "nvt-display.dtsi" 1 + + + + + + + +# 1 "/home/payton/S530/BSP/linux-kernel/include/dt-bindings/pinctrl/nvt_lcd.h" 1 +# 9 "nvt-display.dtsi" 2 +# 25 "nvt-display.dtsi" +/ { + display { type = "lcd"; lcd_ctrl = <1>; sif_channel = <4>; gpio_cs = <(7 + 0x20)>; gpio_clk = <(8 + 0x20)>; gpio_data = <(9 + 0x20)>; }; + logo { enable = <1>; lcd_type = <5>; lcd_rotate = <270>; lcd_reset = <(1 + 0x60)>; lcd_bl_gpio = <(3 + 0x40) 1>; lcd_power = <(8 + 0x20) 1>;}; +}; +# 17 "nvt-evb.dts" 2 +# 1 "nvt-media.dtsi" 1 +# 10 "nvt-media.dtsi" +# 1 "nvt-basic.dtsi" 1 +# 11 "nvt-basic.dtsi" +/ { + model = "Novatek NA51089"; + compatible = "novatek,na51089", "nvt,ca9"; + interrupt-parent = <&gic>; + #address-cells = <1>; + #size-cells = <1>; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu0: cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a9"; + reg = <0x0>; + next-level-cache = <&L2>; + clock-frequency = <960000000>; + }; + }; + + cg@f0020000 { + compatible = "nvt,core_clk"; + reg = <0xf0020000 0x1000>; + }; + + + periph_clk: periph_clk { + compatible = "nvt,periph_clk"; + #clock-cells = <0>; + clock-output-names = "periph_clk"; + }; + + global_timer@ffd00200 { + compatible = "arm,cortex-a9-global-timer"; + reg = <0xffd00200 0x20>; + interrupts = <1 11 0xf01>; + clocks = <&periph_clk>; + }; + + private_timer@ffd00600 { + compatible = "arm,cortex-a9-twd-timer"; + reg = <0xffd00600 0x20>; + interrupts = <1 13 0xf01>; + clocks = <&periph_clk>; + }; + + pmu { + compatible = "arm,cortex-a9-pmu"; + interrupts = <0 112 4>; + interrupt-affinity = <&cpu0>; + }; + + L2: cache-controller@ffe00000 { + compatible = "arm,pl310-cache"; + reg = <0xffe00000 0x1000>; + interrupts = <0 96 4>; + cache-unified; + arm,shared-override; + cache-level = <2>; + arm,data-latency = <2 2 2>; + arm,tag-latency = <2 2 2>; + }; + + gic: interrupt-controller@0xffd00000 { + compatible = "arm,cortex-a9-gic"; + #interrupt-cells = <3>; + interrupt-controller; + reg = <0xffd01000 0x1000>, + <0xffd00100 0x1000>; + }; + + scu: snoop-control-unit@0xffd00000 { + compatible = "arm,cortex-a9-scu"; + reg = <0xffd00000 0x100>; + }; +}; +# 11 "nvt-media.dtsi" 2 + +/ { + nvtmpp { + compatible = "nvt,nvtmpp"; + }; + + isf_stream { + compatible = "nvt,isf_stream"; + }; + + isf_flow { + compatible = "nvt,isf_flow"; + }; + + isf_vdocap { + compatible = "nvt,isf_vdocap"; + }; + + isf_vdoprc { + compatible = "nvt,isf_vdoprc"; + }; + + isf_dummy { + compatible = "nvt,isf_dummy"; + }; + + isf_vdoenc { + compatible = "nvt,isf_vdoenc"; + }; + + isf_vdodec { + compatible = "nvt,isf_vdodec"; + }; + + isf_vdoout { + compatible = "nvt,isf_vdoout"; + }; + + dispobj { + compatible = "nvt,nvt_dispobj"; + }; + + dispdev { + compatible = "nvt,nvt_dispdev"; + }; + + audio { + compatible = "nvt,nvt_audio"; + }; + + msdcnvt { + compatible = "nvt,msdcnvt"; + }; + + msdcnvt_adj { + compatible = "nvt,msdcnvt_adj"; + }; + + msdcnvt_custom_si { + compatible = "nvt,msdcnvt_custom_si"; + }; + + wavstudio { + compatible = "nvt,wavstudio"; + }; + + isf_audenc { + compatible = "nvt,isf_audenc"; + }; + + isf_auddec { + compatible = "nvt,isf_auddec"; + }; + + isf_audcap { + compatible = "nvt,isf_audcap"; + }; + + isf_audout { + compatible = "nvt,isf_audout"; + }; + + nvt_ipc { + compatible = "nvt,nvt_ipc"; + }; +}; +# 18 "nvt-evb.dts" 2 +# 1 "nvt-mem-tbl.dtsi" 1 + + + + + + +/ { + + nvt_memory_cfg { + #address-cells = <1>; + #size-cells = <1>; + dram { reg = <0x00000000 0x08000000>; }; + shmem{ reg = <0x00007E00 0x00000200>; }; + loader { reg = <0x01000000 0x00080000>; }; + fdt { reg = <0x01800000 0x00040000>; }; + rtos { reg = <0x01840000 0x00FC0000>; }; + linuxtmp{ reg = <0x02800000 0x04000000>; }; + uboot{ reg = <0x06800000 0x01640000>; }; + logo-fb{ reg = <0x07E40000 0x001C0000>; }; + }; + + + memory { device_type = "memory"; reg = <0x00000000 0x01800000 0x02000000 0x01600000>; }; + + + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + ranges; + }; + + + + + + + libc-heap { size = <0x00200000>; }; + + hdal-memory { + #address-cells = <1>; + #size-cells = <1>; + media { reg = <0x03700000 0x04900000>; }; + }; + + hdal-maxpath-cfg { + + vdocap_active_list = <1 0 0 0 0 0 0 0>; + vdoprc_maxdevice = <2>; + vdoenc_maxpath = <4>; + vdodec_maxpath = <3>; + vdoout_maxdevice = <1>; + adocap_maxdevice = <1>; + adoout_maxdevice = <2>; + adoenc_maxpath = <1>; + adodec_maxpath = <1>; + + gfx_maxjob = <2>; + + stamp_maximg = <9>; + + vdoprc_maxstamp = <4 4>; + + vdoprc_maxmask = <4 4>; + vdoenc_maxstamp = <9 9>; + vdoenc_maxmask = <0 64>; + vdoout_maxstamp = <0 16>; + vdoout_maxmask = <0 64>; + }; +}; +# 19 "nvt-evb.dts" 2 +# 1 "nvt-storage-partition.dtsi" 1 + + + + + + + +&nor { + partition_loader { label = "loader"; reg = <0x0 0x0000000 0x0 0x10000>; }; + partition_fdt { label = "fdt"; reg = <0x0 0x10000 0x0 0x10000>; }; + partition_fdt.restore { label = "fdt.restore"; reg = <0x0 0x20000 0x0 0x10000>; }; + partition_fdt.app { label = "fdt.app"; reg = <0x0 0x30000 0x0 0x20000>; }; + partition_uboot { label = "uboot"; reg = <0x0 0x50000 0x0 0xA0000>; }; + partition_uenv { label = "uenv"; reg = <0x0 0xF0000 0x0 0x10000>; }; + partition_kernel { label = "kernel"; reg = <0x0 0x100000 0x0 0x290000>; }; + partition_rootfs { label = "rootfs"; reg = <0x0 0x390000 0x0 0x3E0000>; }; + partition_rootfs1 { label = "rootfs1"; reg = <0x0 0x770000 0x0 0xB00000>; }; + partition_rtos { label = "rtos"; reg = <0x0 0x1270000 0x0 0x930000>; }; + partition_app { label = "app"; reg = <0x0 0x1BA0000 0x0 0x50000>; }; + partition_sys { label = "sys"; reg = <0x0 0x1D10000 0x0 0x10000>; }; + partition_all { label = "all"; reg = <0x0 0x0000000 0x0 0x2000000>; }; +}; +# 20 "nvt-evb.dts" 2 +# 1 "nvt-info.dtsi" 1 + + + + + + + +/ { + nvt_info { + BIN_NAME = "FW98565A"; + BIN_NAME_T = "FW98565T"; + RTOS_APP_MAIN = "cardv"; + + EMBMEM_BLK_SIZE = "0x10000"; +# 24 "nvt-info.dtsi" + EMBMEM = "EMBMEM_SPI_NOR"; +# 34 "nvt-info.dtsi" + FW_TYPE = "FW_TYPE_PARTIAL"; + + + + + + UI_STYLE = "UI_STYLE_LVGL"; + + + + + + NVT_CFG_APP_EXTERNAL = "hostapd wireless_tool iperf-3 wpa_supplicant dhd_priv"; + + NVT_CFG_APP = "mem cardv memcpy isp_demon sf_app"; + + NVT_ROOTFS_ETC = ""; + + NVT_BINARY_FILE_STRIP = "yes"; + + NVT_CFG_KERNEL_CFG = "na51089_evb_cardv_defconfig_release"; + + NVT_MAKE_POST = "make_post.sh"; + + NVT_SAMPLES_INSTALL = "DISABLE"; + + NVT_CFG_UBOOT_CFG = ""; + + + + + + + + NVT_LINUX_SMP = "NVT_LINUX_SMP_OFF"; + + + + + + + + NVT_CHIP_ID = "CHIP_NA51089"; + + + + + + + + NVT_LINUX_COMPRESS = "NVT_LINUX_COMPRESS_GZ"; + + + + + + + + NVT_DEFAULT_NETWORK_BOOT_PROTOCOL = "NVT_DEFAULT_NETWORK_BOOT_PROTOCOL_STATIC_IP"; +# 103 "nvt-info.dtsi" + NVT_ROOTFS_TYPE = "NVT_ROOTFS_TYPE_RAMDISK"; +# 113 "nvt-info.dtsi" + LCD1 = "disp_if8b_lcd1_psd200_st7789v"; +# 126 "nvt-info.dtsi" + SENSOR1 = "sen_os05b10"; + SENSOR1_CFG = "sen_os05b10_565"; + SENSOR2 = "sen_off"; + SENSOR2_CFG = "sen_off"; + + + + + + NVT_ROOTFS_RW_PART_EN = "NVT_ROOTFS_RW_PART_EN_ON"; + + + + + + + NVT_ETHERNET = "NVT_ETHERNET_NONE"; +# 151 "nvt-info.dtsi" + NVT_SDIO_WIFI = "NVT_SDIO_WIFI_RTK"; + + + + + + NVT_USB_WIFI = "NVT_USB_WIFI_NONE"; + + + + + + NVT_USB_4G = "NVT_USB_4G_NONE"; + + + + + + + WIFI_RTK_MDL = "WIFI_RTK_MDL_8189"; + + + + + + + + WIFI_BRCM_MDL = "WIFI_BRCM_MDL_43456c5_ampk6256c5"; + + + + + + + WIFI_NVT_MDL = "WIFI_NVT_MDL_18211"; + + + + + + + NVT_CURL_SSL = "NVT_CURL_SSL_OPENSSL"; +# 201 "nvt-info.dtsi" + NVT_UBOOT_ENV_IN_STORG_SUPPORT = "NVT_UBOOT_ENV_IN_STORG_SUPPORT_OFF"; + + + + + + + TOUCH = "TOUCH_OFF"; + + + + + + + UBOOT_ONLY_LOAD_LINUX = "UBOOT_ONLY_LOAD_LINUX_ON"; + + }; +}; +# 21 "nvt-evb.dts" 2 +# 1 "nvt-nvtpack.dtsi" 1 + + + + + + + +&nor { + + + + + nvtpack { + ver = "NVTPACK_FW_INI_16072017"; + method = <1>; + index { + id0 { partition_name = "loader"; source_file = ""; }; + id1 { partition_name = "fdt"; source_file = "nvt-evb.bin"; }; + id2 { partition_name = "fdt.restore"; source_file = ""; }; + id3 { partition_name = "fdt.app"; source_file = "../rtos/output/application.bin"; }; + id4 { partition_name = "uboot"; source_file = "u-boot.bin"; }; + id5 { partition_name = "uenv"; source_file = ""; }; + id6 { partition_name = "kernel"; source_file = "uImage.bin"; }; + id7 { partition_name = "rootfs"; source_file = "rootfs.ramdisk.bin"; }; + id8 { partition_name = "rootfs1"; source_file = "rootfs_1.squash.bin"; }; + id9 { partition_name = "rtos"; source_file = "../rtos/output/rtos-main.bin"; }; + id10 { partition_name = "app"; source_file = "appfs.cardv.jffs2.nor.bin"; }; + id11 { partition_name = "sys"; source_file = ""; }; + }; + }; +}; +# 21 "nvt-evb.dts" 2 diff --git a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-gpio.dtsi b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-gpio.dtsi new file mode 100755 index 000000000..b937bb500 --- /dev/null +++ b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-gpio.dtsi @@ -0,0 +1,205 @@ +&top { +/* + cgpio0{pad_config = <0x0 0x1 0x0 0x2>;}; + cgpio1{pad_config = <0x2 0x1 0x2 0x2>;}; + cgpio2{pad_config = <0x4 0x1 0x4 0x2>;}; + cgpio3{pad_config = <0x6 0x1 0x6 0x2>;}; + cgpio4{pad_config = <0x8 0x1 0x8 0x2>;}; + cgpio5{pad_config = <0xA 0x1 0xA 0x2>;}; + cgpio6{pad_config = <0xC 0x1 0xC 0x2>;}; + cgpio7{pad_config = <0xE 0x1 0xE 0x2>;}; + cgpio8{pad_config = <0x10000010 0x10 0x10 0x1>;}; + cgpio9{pad_config = <0x12 0x1 0x12 0x2>;}; + cgpio10{pad_config = <0x14 0x1 0x14 0x2>;}; + cgpio11{pad_config = <0x80000000 0x202 0x16 0x1>;}; + cgpio12{pad_config = <0x80000004 0x100 0x18 0x2>;}; + cgpio13{pad_config = <0x80000008 0x100 0x1A 0x2>;}; + cgpio14{pad_config = <0x8000000C 0x100 0x1C 0x2>;}; + cgpio15{pad_config = <0x80000010 0x100 0x1E 0x2>;}; + cgpio16{pad_config = <0x80000014 0x100 0x20 0x2>;}; + cgpio17{pad_config = <0x80000018 0x202 0x22 0x1>;}; + cgpio18{pad_config = <0x10000024 0x10 0x24 0x2>;}; + cgpio19{pad_config = <0x10000026 0x10 0x26 0x2>;}; + cgpio20{pad_config = <0x10000028 0x10 0x28 0x2>;}; + cgpio21{pad_config = <0x1000002A 0x10 0x2A 0x2>;}; + cgpio22{pad_config = <0x1000002C 0x10 0x2C 0x2>;}; + sgpio0{pad_config = <0x10000060 0x10 0x60 0x1>;}; + sgpio1{pad_config = <0x10000062 0x10 0x62 0x1>;}; + sgpio2{pad_config = <0x64 0x1 0x64 0x1>;}; + sgpio3{pad_config = <0x66 0x1 0x66 0x1>;}; + sgpio4{pad_config = <0x68 0x1 0x68 0x1>;}; + sgpio5{pad_config = <0x1000006A 0x10 0x6A 0x1>;}; + sgpio6{pad_config = <0x6C 0x1 0x6C 0x2>;}; + sgpio7{pad_config = <0x6E 0x1 0x6E 0x2>;}; + sgpio8{pad_config = <0x70 0x1 0x70 0x2>;}; + sgpio9{pad_config = <0x72 0x1 0x72 0x2>;}; + sgpio10{pad_config = <0x74 0x1 0x74 0x2>;}; + sgpio11{pad_config = <0x76 0x1 0x76 0x2>;}; + sgpio12{pad_config = <0x78 0x1 0x78 0x1>;}; + pgpio0{pad_config = <0x80 0x1 0x80 0x0>;}; + pgpio1{pad_config = <0x82 0x1 0x82 0x1>;}; + pgpio2{pad_config = <0x84 0x1 0x84 0x1>;}; + pgpio3{pad_config = <0x86 0x1 0x86 0x1>;}; + pgpio4{pad_config = <0x88 0x1 0x88 0x1>;}; + pgpio5{pad_config = <0x8A 0x1 0x8A 0x1>;}; + pgpio6{pad_config = <0x8C 0x1 0x8C 0x1>;}; + pgpio7{pad_config = <0x8E 0x1 0x8E 0x1>;}; + pgpio8{pad_config = <0x10000090 0x10 0x90 0x1>;}; + pgpio9{pad_config = <0x92 0x1 0x92 0x1>;}; + pgpio10{pad_config = <0x94 0x1 0x94 0x1>;}; + pgpio11{pad_config = <0x96 0x1 0x96 0x1>;}; + pgpio12{pad_config = <0x98 0x1 0x98 0x2>;}; + pgpio13{pad_config = <0x9A 0x1 0x9A 0x2>;}; + pgpio14{pad_config = <0x9C 0x1 0x9C 0x2>;}; + pgpio15{pad_config = <0x9E 0x1 0x9E 0x2>;}; + pgpio16{pad_config = <0xA0 0x1 0xA0 0x2>;}; + pgpio17{pad_config = <0xA2 0x1 0xA2 0x2>;}; + pgpio18{pad_config = <0xA4 0x1 0xA4 0x2>;}; + pgpio19{pad_config = <0xA6 0x1 0xA6 0x2>;}; + pgpio20{pad_config = <0xA8 0x1 0xA8 0x1>;}; + pgpio21{pad_config = <0xAA 0x1 0xAA 0x2>;}; + pgpio22{pad_config = <0xAC 0x1 0xAC 0x2>;}; + pgpio23{pad_config = <0xAE 0x1 0xAE 0x2>;}; + pgpio24{pad_config = <0xB0 0x1 0xB0 0x2>;}; + pgpio25{pad_config = <0xB2 0x202 0xB2 0x2>;}; + lgpio0{pad_config = <0xE0 0x1 0xE0 0x1>;}; + lgpio1{pad_config = <0xE2 0x1 0xE2 0x1>;}; + lgpio2{pad_config = <0xE4 0x1 0xE4 0x1>;}; + lgpio3{pad_config = <0xE6 0x1 0xE6 0x1>;}; + lgpio4{pad_config = <0xE8 0x1 0xE8 0x1>;}; + lgpio5{pad_config = <0xEA 0x1 0xEA 0x1>;}; + lgpio6{pad_config = <0xEC 0x1 0xEC 0x1>;}; + lgpio7{pad_config = <0xEE 0x1 0xEE 0x1>;}; + lgpio8{pad_config = <0x100000F0 0x10 0xF0 0x1>;}; + lgpio9{pad_config = <0xF2 0x1 0xF2 0x1>;}; + lgpio10{pad_config = <0xF4 0x1 0xF4 0x1>;}; + lgpio11{pad_config = <0xF6 0x1 0xF6 0x1>;}; + lgpio12{pad_config = <0xF8 0x1 0xF8 0x1>;}; + lgpio13{pad_config = <0xFA 0x1 0xFA 0x1>;}; + lgpio14{pad_config = <0xFC 0x1 0xFC 0x1>;}; + lgpio15{pad_config = <0xFE 0x1 0xFE 0x1>;}; + lgpio16{pad_config = <0x100 0x1 0x100 0x1>;}; + lgpio17{pad_config = <0x102 0x1 0x102 0x1>;}; + lgpio18{pad_config = <0x104 0x1 0x104 0x1>;}; + lgpio19{pad_config = <0x106 0x1 0x106 0x1>;}; + lgpio20{pad_config = <0x108 0x1 0x108 0x1>;}; + lgpio21{pad_config = <0x10A 0x1 0x10A 0x1>;}; + lgpio22{pad_config = <0x10C 0x1 0x10C 0x2>;}; + lgpio23{pad_config = <0x10E 0x1 0x10E 0x1>;}; + lgpio24{pad_config = <0x110 0x1 0x110 0x1>;}; + dgpio0{pad_config = <0x10000120 0x10 0x120 0x2>;}; + dgpio1{pad_config = <0x10000122 0x10 0x122 0x2>;}; + dgpio2{pad_config = <0x10000124 0x10 0x124 0x2>;}; + dgpio3{pad_config = <0x10000126 0x10 0x126 0x1>;}; + dgpio4{pad_config = <0x10000128 0x10 0x128 0x1>;}; + dgpio5{pad_config = <0x1000012A 0x10 0x12A 0x1>;}; + dgpio6{pad_config = <0x1000012C 0x10 0x12C 0x1>;}; + dgpio7{pad_config = <0x12E 0x1 0x12E 0x1>;}; + dgpio8{pad_config = <0x10000130 0x10 0x130 0x1>;}; + dgpio9{pad_config = <0x10000132 0x10 0x132 0x1>;}; + dgpio10{pad_config = <0x10000134 0x10 0x134 0x1>;}; + cgpio0{gpio_config = ;}; + cgpio1{gpio_config = ;}; + cgpio2{gpio_config = ;}; + cgpio3{gpio_config = ;}; + cgpio4{gpio_config = ;}; + cgpio5{gpio_config = ;}; + cgpio6{gpio_config = ;}; + cgpio7{gpio_config = ;}; + cgpio8{gpio_config = ;}; + cgpio9{gpio_config = ;}; + cgpio10{gpio_config = ;}; + cgpio11{gpio_config = ;}; + cgpio12{gpio_config = ;}; + cgpio13{gpio_config = ;}; + cgpio14{gpio_config = ;}; + cgpio15{gpio_config = ;}; + cgpio16{gpio_config = ;}; + cgpio17{gpio_config = ;}; + cgpio18{gpio_config = ;}; + cgpio19{gpio_config = ;}; + cgpio20{gpio_config = ;}; + cgpio21{gpio_config = ;}; + cgpio22{gpio_config = ;}; + sgpio0{gpio_config = ;}; + sgpio1{gpio_config = ;}; + sgpio2{gpio_config = ;}; + sgpio3{gpio_config = ;}; + sgpio4{gpio_config = ;}; + sgpio5{gpio_config = ;}; + sgpio6{gpio_config = ;}; + sgpio7{gpio_config = ;}; + sgpio8{gpio_config = ;}; + sgpio9{gpio_config = ;}; + sgpio10{gpio_config = ;}; + sgpio11{gpio_config = ;}; + sgpio12{gpio_config = ;}; + pgpio0{gpio_config = ;}; + pgpio1{gpio_config = ;}; + pgpio2{gpio_config = ;}; + pgpio3{gpio_config = ;}; + pgpio4{gpio_config = ;}; + pgpio5{gpio_config = ;}; + pgpio6{gpio_config = ;}; + pgpio7{gpio_config = ;}; + pgpio8{gpio_config = ;}; + pgpio9{gpio_config = ;}; + pgpio10{gpio_config = ;}; + pgpio11{gpio_config = ;}; + pgpio12{gpio_config = ;}; + pgpio13{gpio_config = ;}; + pgpio14{gpio_config = ;}; + pgpio15{gpio_config = ;}; + pgpio16{gpio_config = ;}; + pgpio17{gpio_config = ;}; + pgpio18{gpio_config = ;}; + pgpio19{gpio_config = ;}; + pgpio20{gpio_config = ;}; + pgpio21{gpio_config = ;}; + pgpio22{gpio_config = ;}; + pgpio23{gpio_config = ;}; + pgpio24{gpio_config = ;}; + pgpio25{gpio_config = ;}; + lgpio0{gpio_config = ;}; + lgpio1{gpio_config = ;}; + lgpio2{gpio_config = ;}; + lgpio3{gpio_config = ;}; + lgpio4{gpio_config = ;}; + lgpio5{gpio_config = ;}; + lgpio6{gpio_config = ;}; + lgpio7{gpio_config = ;}; + lgpio8{gpio_config = ;}; + lgpio9{gpio_config = ;}; + lgpio10{gpio_config = ;}; + lgpio11{gpio_config = ;}; + lgpio12{gpio_config = ;}; + lgpio13{gpio_config = ;}; + lgpio14{gpio_config = ;}; + lgpio15{gpio_config = ;}; + lgpio16{gpio_config = ;}; + lgpio17{gpio_config = ;}; + lgpio18{gpio_config = ;}; + lgpio19{gpio_config = ;}; + lgpio20{gpio_config = ;}; + lgpio21{gpio_config = ;}; + lgpio22{gpio_config = ;}; + lgpio23{gpio_config = ;}; + lgpio24{gpio_config = ;}; + dgpio0{gpio_config = ;}; + dgpio1{gpio_config = ;}; + dgpio2{gpio_config = ;}; + dgpio3{gpio_config = ;}; + dgpio4{gpio_config = ;}; + dgpio5{gpio_config = ;}; + dgpio6{gpio_config = ;}; + dgpio7{gpio_config = ;}; + dgpio8{gpio_config = ;}; + dgpio9{gpio_config = ;}; + dgpio10{gpio_config = ;}; +*/ + + pgpio10{gpio_config = ;}; /* busy led */ + sgpio3{gpio_config = ;}; /* backlight */ + + +}; diff --git a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-i2c.dtsi b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-i2c.dtsi new file mode 100644 index 000000000..d8309d842 --- /dev/null +++ b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-i2c.dtsi @@ -0,0 +1,12 @@ +/* + * Novatek Ltd. NA51089 BSP part of dts + * + * Cortex-A9 + * + */ + +/ { + i2c0: i2c@f0220000 { compatible = "nvt,nvt_i2c"; reg = <0xf0220000 0x100>; interrupts = ; clock-frequency = <400000>; id = <0>; /*gsr = <2>;*/ /* tsr = <1>; */}; + i2c1: i2c2@f0350000 { compatible = "nvt,nvt_i2c"; reg = <0xf0350000 0x100>; interrupts = ; clock-frequency = <400000>; id = <1>; /*gsr = <2>;*/ /* tsr = <1>; */}; + i2c2: i2c3@f03a0000 { compatible = "nvt,nvt_i2c"; reg = <0xf03a0000 0x100>; interrupts = ; clock-frequency = <50000>; id = <2>; /*gsr = <2>;*/ /* tsr = <1>; */}; +}; diff --git a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-info.dtsi b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-info.dtsi new file mode 100755 index 000000000..04d9cf59e --- /dev/null +++ b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-info.dtsi @@ -0,0 +1,218 @@ +/* + * Novatek Ltd. NA51089 BSP part of dts + * + * Cortex-A9 + * + */ + +/ { + nvt_info { /* Get from ModelConfig.txt */ + BIN_NAME = "FW98565A"; + BIN_NAME_T = "FW98565T"; + RTOS_APP_MAIN = "cardv"; /* Optional, if OS type is Linux, dont care it. */ + /* EMBMEM_BLK_SIZE, Normally, 2KPageNand=0x20000, 512PageNand=0x4000, SPI=0x10000 */ + EMBMEM_BLK_SIZE = "0x10000"; + + /** + * [EMBMEM] + * EMBMEM_NONE + * EMBMEM_NAND + * EMBMEM_SPI_NOR + * EMBMEM_SPI_NAND + * EMBMEM_EMMC + */ + EMBMEM = "EMBMEM_SPI_NOR"; + + /** + * [FW_TYPE] + * FW_TYPE_NORMAL + * FW_TYPE_COMPRESS + * FW_TYPE_PARTIAL + * FW_TYPE_PARTIAL_COMPRESS + * FW_TYPE_LZMA + */ + FW_TYPE = "FW_TYPE_PARTIAL"; + + /** + * [UI_STYLE] + * UI_STYLE_SPORTCAM + */ + UI_STYLE = "UI_STYLE_LVGL"; + + /** + * ======= Linux common ========= + * application/external + */ + NVT_CFG_APP_EXTERNAL = "hostapd wireless_tool iperf-3 wpa_supplicant dhd_priv"; + /* application include list */ + NVT_CFG_APP = "mem cardv memcpy isp_demon sf_app"; + /* rootfs etc folder */ + NVT_ROOTFS_ETC = ""; + /* strip executable binary and library files: yes/no */ + NVT_BINARY_FILE_STRIP = "yes"; + /* Using customized kernel config */ + NVT_CFG_KERNEL_CFG = "na51089_evb_cardv_defconfig_release"; + /* run script befor making rootfs for 'make post' */ + NVT_MAKE_POST = "make_post.sh"; + /* disable make install on sample, hdal/samples, hdal/test_cases */ + NVT_SAMPLES_INSTALL = "DISABLE"; + /* Using customized uboot config */ + NVT_CFG_UBOOT_CFG = ""; + + /** + * ======= Linux for different code setting ========= + * [NVT_LINUX_SMP] + * NVT_LINUX_SMP_ON + * NVT_LINUX_SMP_OFF + */ + NVT_LINUX_SMP = "NVT_LINUX_SMP_OFF"; + + /** + * [NVT_CHIP_ID] + * CHIP_NA51055 + * CHIP_NA51084 + * CHIP_NA51089 + */ + NVT_CHIP_ID = "CHIP_NA51089"; + + /** + * [NVT_LINUX_COMPRESS] + * NVT_LINUX_COMPRESS_AUTO , by linux config + * NVT_LINUX_COMPRESS_GZ + * NVT_LINUX_COMPRESS_NONE + */ + NVT_LINUX_COMPRESS = "NVT_LINUX_COMPRESS_GZ"; + + /** + * [NVT_DEFAULT_NETWORK_BOOT_PROTOCOL] + * NVT_DEFAULT_NETWORK_BOOT_PROTOCOL_DHCP_SERVER + * NVT_DEFAULT_NETWORK_BOOT_PROTOCOL_DHCP_CLIENT + * NVT_DEFAULT_NETWORK_BOOT_PROTOCOL_STATIC_IP + */ + NVT_DEFAULT_NETWORK_BOOT_PROTOCOL = "NVT_DEFAULT_NETWORK_BOOT_PROTOCOL_STATIC_IP"; + + /** + * [NVT_ROOTFS_TYPE] + * NVT_ROOTFS_TYPE_NAND_UBI + * NVT_ROOTFS_TYPE_SQUASH + * NVT_ROOTFS_TYPE_NAND_JFFS2 + * NVT_ROOTFS_TYPE_NOR_JFFS2 + * NVT_ROOTFS_TYPE_RAMDISK + * NVT_ROOTFS_TYPE_EXT4 + */ + NVT_ROOTFS_TYPE = "NVT_ROOTFS_TYPE_RAMDISK"; + /** + * [LCD1] + * disp_if8b_lcd1_wm08001_sn75lvds83b + * disp_if8b_lcd1_aucn01 + * disp_if8b_lcd1_psd200_st7789v + * disp_if8b_lcd1_pw35p00 + * disp_if8b_lcd1_psd300_ili8961 + * disp_ifdsi_lcd1_gc9503v_st7701s + */ + LCD1 = "disp_if8b_lcd1_psd200_st7789v"; + + /** + * [SENSOR] + * sen_off + * sen_ar0237ir + * sen_os02k10 + * sen_ov2715 + * sen_ar0237 + * sen_imx290 + * sen_os05a10 + * sen_gc5603 + */ + SENSOR1 = "sen_os05b10"; + SENSOR1_CFG = "sen_os05b10_565"; + SENSOR2 = "sen_off"; + SENSOR2_CFG = "sen_off"; + /** + * [NVT_ROOTFS_RW_PART_EN] + * NVT_ROOTFS_RW_PART_EN_OFF + * NVT_ROOTFS_RW_PART_EN_ON + */ + NVT_ROOTFS_RW_PART_EN = "NVT_ROOTFS_RW_PART_EN_ON"; + + /** + * [NVT_ETHERNET] + * NVT_ETHERNET_NONE + * NVT_ETHERNET_EQOS + */ + NVT_ETHERNET = "NVT_ETHERNET_NONE"; + + /** + * [NVT_SDIO_WIFI]: Remember to update root-fs/rootfs/etc/init.d/S05_Net + * NVT_SDIO_WIFI_NONE + * NVT_SDIO_WIFI_RTK + * NVT_SDIO_WIFI_BRCM + * NVT_SDIO_WIFI_NVT + */ + NVT_SDIO_WIFI = "NVT_SDIO_WIFI_RTK"; + + /** + * [NVT_USB_WIFI] + * NVT_USB_WIFI_NONE + */ + NVT_USB_WIFI = "NVT_USB_WIFI_NONE"; + + /** + * [NVT_USB_4G] + * NVT_USB_4G_NONE + */ + NVT_USB_4G = "NVT_USB_4G_NONE"; + + /** + * [WIFI_RTK_MDL] : sub item for NVT_SDIO_WIFI_RTK + * WIFI_RTK_MDL_NONE + * WIFI_RTK_MDL_8189 + */ + WIFI_RTK_MDL = "WIFI_RTK_MDL_8189"; + + /** + * [WIFI_BRCM_MDL] : sub item for NVT_SDIO_WIFI_BRCM + * WIFI_BRCM_MDL_43438a1_ampk6212axtal26 + * WIFI_BRCM_MDL_43455c0_ampk6255c0 + * WIFI_BRCM_MDL_43456c5_ampk6256c5 + */ + WIFI_BRCM_MDL = "WIFI_BRCM_MDL_43456c5_ampk6256c5"; + + /** + * [WIFI_NVT_MDL] : sub item for NVT_SDIO_WIFI_NVT + * WIFI_NVT_MDL_18202 + * WIFI_NVT_MDL_18211 + */ + WIFI_NVT_MDL = "WIFI_NVT_MDL_18211"; + + /** + * [NVT_CURL_SSL] + * NVT_CURL_SSL_OPENSSL + * NVT_CURL_SSL_WOLFSSL + */ + NVT_CURL_SSL = "NVT_CURL_SSL_OPENSSL"; + + /** + * [NVT_UBOOT_ENV_IN_STORG_SUPPORT] + * NVT_UBOOT_ENV_IN_STORG_SUPPORT_NAND + * NVT_UBOOT_ENV_IN_STORG_SUPPORT_NOR + * NVT_UBOOT_ENV_IN_STORG_SUPPORT_MMC + * NVT_UBOOT_ENV_IN_STORG_SUPPORT_OFF + */ + NVT_UBOOT_ENV_IN_STORG_SUPPORT = "NVT_UBOOT_ENV_IN_STORG_SUPPORT_OFF"; + + /** + * [TOUCH] + * TOUCH_OFF + * TOUCH_ON + */ + TOUCH = "TOUCH_OFF"; + + /** + * [UBOOT_ONLY_LOAD_LINUX] + * UBOOT_ONLY_LOAD_LINUX_OFF + * UBOOT_ONLY_LOAD_LINUX_ON + */ + UBOOT_ONLY_LOAD_LINUX = "UBOOT_ONLY_LOAD_LINUX_ON"; + + }; +}; diff --git a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-media.dtsi b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-media.dtsi new file mode 100755 index 000000000..0ab2333b9 --- /dev/null +++ b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-media.dtsi @@ -0,0 +1,96 @@ +/* + * Novatek Ltd. NA51089 BSP part of dts + * + * Cortex-A9 + * + */ + + +#include +#include "nvt-basic.dtsi" + +/ { + nvtmpp { + compatible = "nvt,nvtmpp"; + }; + + isf_stream { + compatible = "nvt,isf_stream"; + }; + + isf_flow { + compatible = "nvt,isf_flow"; + }; + + isf_vdocap { + compatible = "nvt,isf_vdocap"; + }; + + isf_vdoprc { + compatible = "nvt,isf_vdoprc"; + }; + + isf_dummy { + compatible = "nvt,isf_dummy"; + }; + + isf_vdoenc { + compatible = "nvt,isf_vdoenc"; + }; + + isf_vdodec { + compatible = "nvt,isf_vdodec"; + }; + + isf_vdoout { + compatible = "nvt,isf_vdoout"; + }; + + dispobj { + compatible = "nvt,nvt_dispobj"; + }; + + dispdev { + compatible = "nvt,nvt_dispdev"; + }; + + audio { + compatible = "nvt,nvt_audio"; + }; + + msdcnvt { + compatible = "nvt,msdcnvt"; + }; + + msdcnvt_adj { + compatible = "nvt,msdcnvt_adj"; + }; + + msdcnvt_custom_si { + compatible = "nvt,msdcnvt_custom_si"; + }; + + wavstudio { + compatible = "nvt,wavstudio"; + }; + + isf_audenc { + compatible = "nvt,isf_audenc"; + }; + + isf_auddec { + compatible = "nvt,isf_auddec"; + }; + + isf_audcap { + compatible = "nvt,isf_audcap"; + }; + + isf_audout { + compatible = "nvt,isf_audout"; + }; + + nvt_ipc { + compatible = "nvt,nvt_ipc"; + }; +}; \ No newline at end of file diff --git a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-mem-tbl.dtsi b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-mem-tbl.dtsi new file mode 100755 index 000000000..de90ea350 --- /dev/null +++ b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-mem-tbl.dtsi @@ -0,0 +1,69 @@ +/* + * Novatek Ltd. NA51089 BSP part of dts + * + * Cortex-A9 + * + */ +/ { + /* Uboot/loader memory layout */ + nvt_memory_cfg { + #address-cells = <1>; + #size-cells = <1>; + dram { reg = <0x00000000 0x08000000>; }; + shmem{ reg = <0x00007E00 0x00000200>; }; /* always exists */ + loader { reg = <0x01000000 0x00080000>; }; /* recycled after uboot started */ + fdt { reg = <0x01800000 0x00040000>; }; /* recycled after linux started */ + rtos { reg = <0x01840000 0x00FC0000>; }; /* recycled after linux started */ + linuxtmp{ reg = <0x02800000 0x04000000>; }; /* recycled after rtos started */ + uboot{ reg = <0x06800000 0x01640000>; }; /* recycled after rtos started */ + logo-fb{ reg = <0x07E40000 0x001C0000>; }; /* recycled after rtos started */ + }; + + /* Linux system memory region*/ + memory { device_type = "memory"; reg = <0x00000000 0x01800000 0x02000000 0x01600000>; }; + + /* Linux setup reserved memory */ + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + ranges; + }; + + /* + * rtos libc heap expected minimum size + * becasue remain of rtos memory will be the libc heap automatically, + * if it too small against your expectation, there will be a assert on boot. + */ + libc-heap { size = <0x00200000>; }; + + hdal-memory { + #address-cells = <1>; + #size-cells = <1>; + media { reg = <0x03700000 0x04900000>; }; + }; + + hdal-maxpath-cfg { + /* First is for VCAP0, second for VCAP1 and so on.*/ + vdocap_active_list = <1 0 0 0 0 0 0 0>; + vdoprc_maxdevice = <2>; + vdoenc_maxpath = <4>; + vdodec_maxpath = <3>; + vdoout_maxdevice = <1>; + adocap_maxdevice = <1>; + adoout_maxdevice = <2>; + adoenc_maxpath = <1>; + adodec_maxpath = <1>; + /* gfx jog list */ + gfx_maxjob = <2>; + /* stamp max img buffer number */ + stamp_maximg = <9>; + /* First is internal stamp number, second is external stamp number */ + vdoprc_maxstamp = <4 4>; + /* First is internal mask number, second is external mask number */ + vdoprc_maxmask = <4 4>; + vdoenc_maxstamp = <9 9>; + vdoenc_maxmask = <0 64>; + vdoout_maxstamp = <0 16>; + vdoout_maxmask = <0 64>; + }; +}; diff --git a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-nvtpack.dtsi b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-nvtpack.dtsi new file mode 100755 index 000000000..2897a2a39 --- /dev/null +++ b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-nvtpack.dtsi @@ -0,0 +1,31 @@ +/* + * Novatek Ltd. NA51089 BSP part of dts + * + * Cortex-A9 + * + */ + +&nor { + /** + * partition_name is $1 as in partition_$1 is referred + * to nvt-na51089-storage-partition. dtsi + */ + nvtpack { + ver = "NVTPACK_FW_INI_16072017"; /* Fixed */ + method = <1>; /* Fixed */ + index { + id0 { partition_name = "loader"; source_file = ""; }; /* Fixed */ + id1 { partition_name = "fdt"; source_file = "nvt-evb.bin"; }; /* Fixed */ + id2 { partition_name = "fdt.restore"; source_file = ""; }; /* Fixed */ + id3 { partition_name = "fdt.app"; source_file = "../rtos/output/application.bin"; }; + id4 { partition_name = "uboot"; source_file = "u-boot.bin"; }; + id5 { partition_name = "uenv"; source_file = ""; }; + id6 { partition_name = "kernel"; source_file = "uImage.bin"; }; + id7 { partition_name = "rootfs"; source_file = "rootfs.ramdisk.bin"; }; + id8 { partition_name = "rootfs1"; source_file = "rootfs_1.squash.bin"; }; + id9 { partition_name = "rtos"; source_file = "../rtos/output/rtos-main.bin"; }; + id10 { partition_name = "app"; source_file = "appfs.cardv.jffs2.nor.bin"; }; + id11 { partition_name = "sys"; source_file = ""; }; + }; + }; +}; diff --git a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-peri-dev.dtsi b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-peri-dev.dtsi new file mode 100755 index 000000000..15e9beede --- /dev/null +++ b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-peri-dev.dtsi @@ -0,0 +1,52 @@ +/* + * Novatek Ltd. NA51089 BSP part of dts + * + * Cortex-A9 + * + */ + + +#include + +&i2c0 { + #address-cells = <1>; + #size-cells = <0>; + +/* dummy_i2c_dev: dummy_i2c@1a { + compatible = "nvt,dummy_i2c_dev"; + reg = <0x1a>; + }; +*/ +}; + +&i2c1 { + #address-cells = <1>; + #size-cells = <0>; +}; + +&i2c2 { + #address-cells = <1>; + #size-cells = <0>; +}; + +&spi0 { + status = "okay"; + #address-cells = <1>; + #size-cells = <0>; + +/* dummy_spi_dev: dummy_spi_dev@0 { + compatible = "dummy_spi_dev.0"; + reg = <0>; // Chip select 0 + spi-max-frequency = <1000000>; + spi-cpol; + }; +*/ +}; + +&spi1 { + status = "okay"; +}; + +&spi2 { + status = "okay"; +}; diff --git a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-peri.dtsi b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-peri.dtsi new file mode 100755 index 000000000..7f0143b1d --- /dev/null +++ b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-peri.dtsi @@ -0,0 +1,514 @@ +/* + * Novatek Ltd. NA51089 BSP part of dts + * + * Cortex-A9 + * + */ + + +#include +#include "nvt-basic.dtsi" + +/ { + chosen { + bootargs = " "; + }; + + aliases { + mmc0 = &mmc0; /* Fixed to mmcblk0 for sdio1 */ + mmc1 = &mmc1; /* Fixed to mmcblk1 for sdio2 */ + }; + + uart@f0290000 { + compatible = "ns16550a"; + reg = <0xf0290000 0x1000>; + interrupts = ; + baud = <115200>; + reg-shift = <2>; + reg-io-width = <4>; + no-loopback-test = <1>; + clock-frequency = <24000000>; + fifo-size = <64>; + uart_id = <0>; + }; + + uart@f0300000 { + compatible = "ns16550a"; + reg = <0xf0300000 0x1000>; + interrupts = ; + baud = <115200>; + reg-shift = <2>; + reg-io-width = <4>; + no-loopback-test = <1>; + clock-frequency = <48000000>; + fifo-size = <64>; + hw_flowctrl = <0>; + rx_trig_level = <3>; + uart_id = <1>; + }; + + uart@f0310000 { + compatible = "ns16550a"; + reg = <0xf0310000 0x1000>; + interrupts = ; + baud = <115200>; + reg-shift = <2>; + reg-io-width = <4>; + no-loopback-test = <1>; + clock-frequency = <48000000>; + fifo-size = <64>; + hw_flowctrl = <0>; + rx_trig_level = <3>; + uart_id = <2>; + }; + + kdrv_rpc: cc@f0090000 { + compatible = "kdrv_rpc"; + reg = <0xf0090000 0x300>; + interrupts = ; + }; + + mmc0: mmc@f0420000 { + compatible = "nvt,nvt_mmc"; + reg = <0xf0420000 0x1000>; + interrupts = ; + max-frequency = <48000000>; + voltage-switch = <0>; + max-voltage = <3300>; + bus-width = <4>; + neg-sample-edge = <0>; + driving = <15 15 15 20 15 15 25 25 25 25 25 25>; + cd_gpio = ; + card_power_gpio = ; + /*ro_gpio = ;*/ + /*power_en = ;*/ + }; + + mmc1: mmc@f0500000 { + compatible = "nvt,nvt_mmc2"; + reg = <0xf0500000 0x1000>; + interrupts = ; + max-frequency = <48000000>; + voltage-switch = <0>; + max-voltage = <3300>; + bus-width = <4>; + neg-sample-edge = <0>; + driving = <15 8 8 20 8 8 20 8 8 20 8 8>; + cd_gpio = <0 GPIO_FALLING_EDGE GPIO_INTERRUPT>; + /*ro_gpio = ;*/ + /*power_en = ;*/ + /*status = "disabled";*/ + }; + + nand: nand@f0400000 { + #address-cells = <2>; + #size-cells = <2>; + compatible = "nvt,nvt_spinand"; + reg = <0xf0400000 0x1000>; + interrupts = ; + clock-frequency = <96000000>; + nvt-devname = "spi_nand.0"; + }; + + nor: nor@f0400000 { + #address-cells = <2>; + #size-cells = <2>; + compatible = "nvt,nvt_spinor"; + reg = <0xf0400000 0x1000>; + interrupts = ; + clock-frequency = <120000000>; + nvt-devname = "spi_nor.0"; + trace-stdtable = <0>; + }; + + gpio: gpio@f0070000 { + compatible = "nvt,nvt_gpio"; + reg = <0xf0070000 0x10000>; + interrupts = ; + #gpio-cells = <2>; + }; + + eth@f02b0000 { + compatible = "nvt,synopsys_eth"; + reg = <0xf02b0000 0x3800>; + interrupts = ; + sp-clk = <0>; + ref-clk-out = <0>; + }; + + phy@f02b3800 { + compatible = "nvt,eth_phy"; + reg = <0xf02b3800 0x400>; + }; + + wdt@f0050000 { + compatible = "nvt,nvt_wdt"; + reg = <0xf0050000 0x10000>; + interrupts = ; + }; + + pwm: pwm@f0210000 { + compatible = "nvt,nvt_kdrv_pwm"; + reg = <0xf0210000 0x2000>; + interrupts = ; + }; + + adc@f0260000 { + compatible = "nvt,nvt_adc"; + reg = <0xf0260000 0x1000>; + interrupts = ; + #io-channel-cells = <1>; + }; + + rtc@f0060000 { + compatible = "nvt,nvt_rtc"; + reg = <0xf0060000 0x100>; + interrupts = ; + }; + + drtc@f00b0000 { + compatible = "nvt,nvt_drtc"; + reg = <0xf00b0000 0x100>; + }; + + crypto: crypto@f0620000 { + compatible = "nvt,nvt_crypto"; + reg = <0xf0620000 0x100>; + interrupts = <0 38 IRQ_TYPE_LEVEL_HIGH>; + mclk = <1>; + }; + + hash: hash@f0670000 { + compatible = "nvt,nvt_hash"; + reg = <0xf0670000 0x100>; + interrupts = <0 28 IRQ_TYPE_LEVEL_HIGH>; + mclk = <1>; + }; + + rsa: rsa@f06a0000 { + compatible = "nvt,nvt_rsa"; + reg = <0xf06a0000 0x100>; + interrupts = <0 20 IRQ_TYPE_LEVEL_HIGH>; + mclk = <1>; + }; + + top: top@f0010000 { + compatible = "nvt,nvt_top"; + reg = <0xf0010000 0x2000 + 0xf0030000 0x2000 + 0xf0070000 0x10000>; + }; + + sie@f0c00000 { + compatible = "nvt,drv_sie"; + reg = <0xf0c00000 0x900 + 0xf0d20000 0x900 + 0xF0D30000 0x900>; + interrupts = ; + /*sensor_freq = <37125000>;*/ + }; + + tge@f0cc0000 { + compatible = "nvt,kdrv_tge"; + reg = <0xf0cc0000 0x150>; + interrupts = ; + }; + + rhe@f0ce0000 { + compatible = "nvt,kdrv_rhe"; + reg = <0xf0ce0000 0x900>; + interrupts = ; + }; + + ime@f0c40000 { + compatible = "nvt,kdrv_ime"; + reg = <0xf0c40000 0x1000>; + interrupts = ; + }; + + ife2@f0d00000 { + compatible = "nvt,kdrv_ife2"; + reg = <0xf0d00000 0x100>; + interrupts = ; + }; + + ise@f0c90000 { + compatible = "nvt,kdrv_ise"; + reg = <0xf0c90000 0x100>; + interrupts = ; + }; + + ipe@f0c30000 { + compatible = "nvt,kdrv_ipe"; + reg = <0xf0c30000 0x900>; + interrupts = ; + }; + + ife@f0c70000 { + compatible = "nvt,kdrv_ife"; + reg = <0xf0c70000 0x800>; + interrupts = ; + }; + + vpe@f0cd0000 { + compatible = "nvt,kdrv_vpe"; + reg = <0xf0cd0000 0x1040>; + interrupts = ; + }; + + ai@f0c60000 { + compatible = "nvt,kdrv_ai"; + reg = <0xf0c60000 0x23c + 0xf0d50000 0x114 + 0xf0cb0000 0x22c>; + interrupts = ; + clock-frequency = <600000000 480000000 600000000>; + }; + + md@f0c10000 { + compatible = "nvt,kdrv_md"; + reg = <0xf0c10000 0x150>; + interrupts = ; + clock-frequency = <240000000>; + }; + dis@f0c50000 { + compatible = "nvt,kdrv_dis"; + reg = <0xf0c50000 0x114>; + interrupts = ; + }; + + coe@f0a11000 { + compatible = "nvt,nvt_coe"; + reg = <0xf0a11000 0x2c0>; + }; + + dce@f0c20000 { + compatible = "nvt,kdrv_dce"; + reg = <0xf0c20000 0x650>; + interrupts = ; + }; + + ive@f0d70000 { + compatible = "nvt,kdrv_ive"; + reg = <0xf0d70000 0x6c>; + interrupts = ; + }; + + sde@f0d90000 { + compatible = "nvt,kdrv_sde"; + reg = <0xf0d90000 0x90>; + interrupts = ; + }; + + ide@f0800000 { + compatible = "nvt,nvt_ide"; + reg = <0xf0800000 0x1000>; + interrupts = ; + }; + + dsi@f0840000 { + compatible = "nvt,nvt_dsi"; + reg = <0xf0840000 0x1000>; + interrupts = ; + }; + + csi@f0280000 { + compatible = "nvt,nvt_csi"; + reg = <0xf0280000 0x100 + 0xf0330000 0x100>; + interrupts = ; + }; + + lvds@f0270000 { + compatible = "nvt,nvt_lvds"; + reg = <0xF0270000 0x200 + 0xF0370000 0x200>; + interrupts = ; + }; + + senphy@f06b0000 { + compatible = "nvt,nvt_senphy"; + reg = <0xF06B0000 0x100>; + }; + + ssenif@f0xx0000 { + compatible = "nvt,nvt_ssenif"; + reg = <0xF02C0000 0x2000>; + interrupts = ; + }; + + sif@f0240000 { + compatible = "nvt,nvt_sif"; + reg = <0xf0240000 0x200>; + interrupts = ; + clock-frequency = <1000000>; + }; + + graphic@f0c80000 { + compatible = "nvt,nvt_graphic"; + reg = <0xF0C80000 0x300 + 0xF0D10000 0x100>; + interrupts = ; + }; + + affine@f0ca0000 { + compatible = "nvt,nvt_affine"; + reg = <0xF0CA0000 0x100>; + interrupts = ; + }; + + h26x@f0a10000 { + compatible = "nvt,nvt_h26x"; + reg = <0xf0a10000 0xa00>; + interrupts = ; + power_saving = <0>; /* 0:using pllf320, 1:using fix96m */ + }; + + timer@f0040000 { + compatible = "nvt,nvt_timer"; + reg = <0xf0040000 0x300>; + interrupts = ; + }; + + eac@f0640000 { + compatible = "nvt,nvt_eac"; + reg = <0xF0640000 0x200>; + }; + + jpg@f0a00000 { + compatible = "nvt,nvt_jpg"; + reg = <0xf0a00000 0x100>; + interrupts = ; + }; + + nvt_usb2host@f0600000 { + compatible = "nvt,ehci-nvtivot"; + reg = <0xf0600000 0x10000>; + interrupts = ; + }; + + nvt_usb2dev@f0600000 { + compatible = "nvt,fotg200_udc"; + reg = <0xf0600000 0x10000>; + interrupts = ; + }; + + nvt_usb_chrg@f0600000 { + compatible = "nvt,nvt_usb_chrgdet"; + reg = <0xf0600000 0x10000>; + }; + + dai@f0630000 { + compatible = "nvt,nvt_dai"; + reg = <0xF0630000 0xbc>; + interrupts = ; + }; + + rotate@f0cf0000 { + compatible = "nvt,nvt_rotation"; + reg = <0xF0CF0000 0x100>; + interrupts = ; + }; + + drvdump@0 { + compatible = "nvt,nvt_drvdump"; + }; + + dsp@f1430000 { + compatible = "nvt,nvt_dsp"; + reg = <0xF1430000 0x200 + 0xF2000000 0x1000000 + 0xF1440000 0x200 + 0xF3000000 0x1000000>; + interrupts = ; + }; + + spi0: spi@f0230000 { + compatible = "nvt,nvt_spi"; + reg = <0xf0230000 0x10000>; + interrupts = ; + dma-support = <0>; + nvt-devname = <0>; + }; + + spi1: spi@f0320000 { + compatible = "nvt,nvt_spi"; + reg = <0xf0320000 0x10000>; + interrupts = ; + dma-support = <0>; + nvt-devname = <1>; + }; + + spi2: spi@f0340000 { + compatible = "nvt,nvt_spi"; + reg = <0xf0340000 0x10000>; + interrupts = ; + dma-support = <0>; + nvt-devname = <2>; + }; + + sdp@f0390000 { + compatible = "nvt,nvt_sdp"; + reg = <0xf0390000 0x28>; + interrupts = ; + }; + + tse@f0650000 { + compatible = "nvt,nvt_tse"; + reg = <0xF0650000 0x90>; + interrupts = ; + }; + + remote@f0250000 { + compatible = "nvt,nvt_remote"; + reg = <0xf0250000 0x28>; + interrupts = ; + }; + + rng: rng@f0680000 { + compatible = "nvt,nvt_rng"; + reg = <0xf0680000 0x100>; + }; + + nvt_arb@f0000000 { + compatible = "nvt,nvt_arb"; + reg = <0xF0000000 0xA000 + 0xF0FE0000 0x300>; + interrupts = ; + }; + + nvt_otp@f0660000 { + compatible = "nvt,nvt_otp"; + reg = <0xF0660000 0x70>; + }; + + kdrv_ipp { + clock-frequency = <240000000>; + }; + + uvcp: uvcp@f0690000 { + compatible = "nvt,nvt_uvcp"; + reg = <0xf0690000 0x200>; + interrupts = ; + }; + pll_preset@0 { + pll3{pll_config = <3 0 0>;}; + pll4{pll_config = <4 0 0>;}; + pll5{pll_config = <5 297000000 1>;}; + pll6{pll_config = <6 0 0>;}; + pll7{pll_config = <7 0 0>;}; + pll8{pll_config = <8 0 0>;}; + pll9{pll_config = <9 0 0>;}; + pll11{pll_config = <11 0 0>;}; + pll12{pll_config = <12 0 1>;}; + }; +}; diff --git a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-storage-partition.dtsi b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-storage-partition.dtsi new file mode 100755 index 000000000..ada64aaf1 --- /dev/null +++ b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-storage-partition.dtsi @@ -0,0 +1,22 @@ +/* + * Novatek Ltd. NA51089 BSP part of dts + * + * Cortex-A9 + * + */ + +&nor { + partition_loader { label = "loader"; reg = <0x0 0x0000000 0x0 0x10000>; }; /* Fixed */ + partition_fdt { label = "fdt"; reg = <0x0 0x10000 0x0 0x10000>; }; /* Fixed */ + partition_fdt.restore { label = "fdt.restore"; reg = <0x0 0x20000 0x0 0x10000>; }; /* Fixed */ + partition_fdt.app { label = "fdt.app"; reg = <0x0 0x30000 0x0 0x20000>; }; /* Fixed */ + partition_uboot { label = "uboot"; reg = <0x0 0x50000 0x0 0xA0000>; }; + partition_uenv { label = "uenv"; reg = <0x0 0xF0000 0x0 0x10000>; }; + partition_kernel { label = "kernel"; reg = <0x0 0x100000 0x0 0x290000>; }; + partition_rootfs { label = "rootfs"; reg = <0x0 0x390000 0x0 0x3E0000>; }; + partition_rootfs1 { label = "rootfs1"; reg = <0x0 0x770000 0x0 0xB00000>; }; + partition_rtos { label = "rtos"; reg = <0x0 0x1270000 0x0 0x930000>; }; + partition_app { label = "app"; reg = <0x0 0x1BA0000 0x0 0x50000>; }; /* app size depneds on hdal/samples/vendor_cfg/Makeile: ROOTFS_UBI_MAX_LEB_COUNT */ + partition_sys { label = "sys"; reg = <0x0 0x1D10000 0x0 0x10000>; }; + partition_all { label = "all"; reg = <0x0 0x0000000 0x0 0x2000000>; }; +}; diff --git a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-top.dtsi b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-top.dtsi new file mode 100755 index 000000000..4ebb5396e --- /dev/null +++ b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-top.dtsi @@ -0,0 +1,24 @@ +&top { + sdio{pinmux = <0x5>;}; + sdio2{pinmux = <0x5>;}; + sdio3{pinmux = <0x0>;}; + nand{pinmux = <0x5>;}; + sensor{pinmux = <0x0>;}; + sensor2{pinmux = <0x0>;}; + mipi_lvds{pinmux = <0x0>;}; + i2c{pinmux = <0x40>;}; + sif{pinmux = <0x0>;}; + uart{pinmux = <0x1825>;}; + spi{pinmux = <0x0>;}; + sdp{pinmux = <0x0>;}; + remote{pinmux = <0x0>;}; + pwm{pinmux = <0x8000>;}; /* pwm3: 0x8000 p_gp3 IRLED */ + /* pwm2{pinmux = <0x2000000>;}; pwm11: 0x2000000 p_gp11 backlight */ + pwm2{pinmux = <0x0000000>;}; + ccnt{pinmux = <0x0>;}; + audio{pinmux = <0x0>;}; + lcd{pinmux = <0x10000000>;}; + tv{pinmux = <0x0>;}; + eth{pinmux = <0x0>;}; + misc{pinmux = <0x0>;}; +}; diff --git a/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-audio.dtsi b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-audio.dtsi new file mode 100755 index 000000000..69bcc382d --- /dev/null +++ b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-audio.dtsi @@ -0,0 +1,12 @@ +/* + * Novatek Ltd. NA51089 BSP part of dts + * + * Cortex-A9 + * + */ + +/ { + audio@1 { type = "none"; i2s_ctrl = <0>; sif_channel = <0>; gpio_cold_reset = <0>; gpio_data = <0>; gpio_clk = <0>; gpio_cs = <0>; adc_zero = <0>; }; + audio@2 { type = "embedded"; i2s_ctrl = <4>; sif_channel = <0>; gpio_cold_reset = <0>; gpio_data = <0>; gpio_clk = <0>; gpio_cs = <0>; adc_zero = <0>; }; +}; + diff --git a/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-basic.dtsi b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-basic.dtsi new file mode 100755 index 000000000..4e6d21c6d --- /dev/null +++ b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-basic.dtsi @@ -0,0 +1,86 @@ +/* + * Novatek Ltd. NA51089 BSP part of dts + * + * Cortex-A9 + * + */ + +#include +#include + +/ { + model = "Novatek NA51089"; + compatible = "novatek,na51089", "nvt,ca9"; + interrupt-parent = <&gic>; + #address-cells = <1>; + #size-cells = <1>; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu0: cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a9"; + reg = <0x0>; + next-level-cache = <&L2>; + clock-frequency = <960000000>; + }; + }; + + cg@f0020000 { + compatible = "nvt,core_clk"; + reg = <0xf0020000 0x1000>; + }; + + /* binding to clk framework driver */ + periph_clk: periph_clk { + compatible = "nvt,periph_clk"; + #clock-cells = <0>; + clock-output-names = "periph_clk"; + }; + + global_timer@ffd00200 { + compatible = "arm,cortex-a9-global-timer"; + reg = <0xffd00200 0x20>; + interrupts = ; + clocks = <&periph_clk>; + }; + + private_timer@ffd00600 { + compatible = "arm,cortex-a9-twd-timer"; + reg = <0xffd00600 0x20>; + interrupts = ; + clocks = <&periph_clk>; + }; + + pmu { + compatible = "arm,cortex-a9-pmu"; + interrupts = ; + interrupt-affinity = <&cpu0>; + }; + + L2: cache-controller@ffe00000 { + compatible = "arm,pl310-cache"; + reg = <0xffe00000 0x1000>; + interrupts = ; + cache-unified; + arm,shared-override; + cache-level = <2>; + arm,data-latency = <2 2 2>; + arm,tag-latency = <2 2 2>; + }; + + gic: interrupt-controller@0xffd00000 { + compatible = "arm,cortex-a9-gic"; + #interrupt-cells = <3>; + interrupt-controller; + reg = <0xffd01000 0x1000>, /* GIC Dist */ + <0xffd00100 0x1000>; /* GIC CPU */ + }; + + scu: snoop-control-unit@0xffd00000 { + compatible = "arm,cortex-a9-scu"; + reg = <0xffd00000 0x100>; + }; +}; diff --git a/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-display.dtsi b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-display.dtsi new file mode 100755 index 000000000..e4515fd12 --- /dev/null +++ b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-display.dtsi @@ -0,0 +1,29 @@ +/* + * Novatek Ltd. NA51089 BSP part of dts + * + * Cortex-A9 + * + */ +#include +#include + + /* PWM on uboot (nvt_fr_pwm.c) */ + /* "Note:\n" + * "Defalut freq is 250KHz,\n" + * "therefore each unit of [period_ns] and [duty_ns] should be 4000 ns,\n" + * "for channel 0 to 7 the maximum unit is 65535, so legal range of [period_ns] is 8000 to 262140000 ns,\n" + * "for other channels the maximum unit is 255, so legal range of [period_ns] is 8000 to 1020000 ns.\n" + */ +/* lcd_bl_gpio = ; ==> if the controlled method is GPIO of lcd backlight */ +/* lcd_bl2_gpio = ; ==> optional for the circuit design */ +/* lcd_bl_pwm = ; ==> if the controlled method is PWM of lcd backlight*/ +/* lcd_rotate = <0>; ==> 0:rotate 90; 1:rotate 90; 270:rotate 270*/ +/* lcd_enable = ; ==> optional for the circuit design*/ +/* lcd_power = ; ==> optional for the circuit design*/ +/* lcd_standby = ; ==> optional for the circuit design*/ + +/ { + display { type = "lcd"; lcd_ctrl = <1>; sif_channel = <4>; gpio_cs = ; gpio_clk = ; gpio_data = ; }; + logo { enable = <0>; lcd_type = ; lcd_rotate = <270>; lcd_reset = ; lcd_bl_gpio = ; lcd_power = ;}; +}; + diff --git a/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-evb.dts b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-evb.dts new file mode 100755 index 000000000..dfdd8c5fa --- /dev/null +++ b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-evb.dts @@ -0,0 +1,21 @@ +/* + * Novatek Ltd. NA51089 BSP part of dts + * + * Cortex-A9 + * + */ + +/dts-v1/; +#include +#include "nvt-peri.dtsi" /* engine register definition */ +#include "nvt-top.dtsi" /* pinmux, made from tool */ +#include "nvt-i2c.dtsi" /* i2c */ +#include "nvt-gpio.dtsi" /* gpio, made from tool */ +#include "nvt-peri-dev.dtsi"/* peripheral device dts config */ +#include "nvt-audio.dtsi" /* peripheral: audio */ +#include "nvt-display.dtsi" /* peripheral: display */ +#include "nvt-media.dtsi" /* ko files relation */ +#include "nvt-mem-tbl.dtsi" /* memory partition */ +#include "nvt-storage-partition.dtsi" /* flash partition */ +#include "nvt-info.dtsi" /* used for turnkey information */ +#include "nvt-nvtpack.dtsi" /* used for turnkey to make all-in-one bin */ diff --git a/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-gpio.dtsi b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-gpio.dtsi new file mode 100755 index 000000000..72bae530e --- /dev/null +++ b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-gpio.dtsi @@ -0,0 +1,205 @@ +&top { +/* + cgpio0{pad_config = <0x0 0x1 0x0 0x2>;}; + cgpio1{pad_config = <0x2 0x1 0x2 0x2>;}; + cgpio2{pad_config = <0x4 0x1 0x4 0x2>;}; + cgpio3{pad_config = <0x6 0x1 0x6 0x2>;}; + cgpio4{pad_config = <0x8 0x1 0x8 0x2>;}; + cgpio5{pad_config = <0xA 0x1 0xA 0x2>;}; + cgpio6{pad_config = <0xC 0x1 0xC 0x2>;}; + cgpio7{pad_config = <0xE 0x1 0xE 0x2>;}; + cgpio8{pad_config = <0x10000010 0x10 0x10 0x1>;}; + cgpio9{pad_config = <0x12 0x1 0x12 0x2>;}; + cgpio10{pad_config = <0x14 0x1 0x14 0x2>;}; + cgpio11{pad_config = <0x80000000 0x202 0x16 0x1>;}; + cgpio12{pad_config = <0x80000004 0x100 0x18 0x2>;}; + cgpio13{pad_config = <0x80000008 0x100 0x1A 0x2>;}; + cgpio14{pad_config = <0x8000000C 0x100 0x1C 0x2>;}; + cgpio15{pad_config = <0x80000010 0x100 0x1E 0x2>;}; + cgpio16{pad_config = <0x80000014 0x100 0x20 0x2>;}; + cgpio17{pad_config = <0x80000018 0x202 0x22 0x1>;}; + cgpio18{pad_config = <0x10000024 0x10 0x24 0x2>;}; + cgpio19{pad_config = <0x10000026 0x10 0x26 0x2>;}; + cgpio20{pad_config = <0x10000028 0x10 0x28 0x2>;}; + cgpio21{pad_config = <0x1000002A 0x10 0x2A 0x2>;}; + cgpio22{pad_config = <0x1000002C 0x10 0x2C 0x2>;}; + sgpio0{pad_config = <0x10000060 0x10 0x60 0x1>;}; + sgpio1{pad_config = <0x10000062 0x10 0x62 0x1>;}; + sgpio2{pad_config = <0x64 0x1 0x64 0x1>;}; + sgpio3{pad_config = <0x66 0x1 0x66 0x1>;}; + sgpio4{pad_config = <0x68 0x1 0x68 0x1>;}; + sgpio5{pad_config = <0x1000006A 0x10 0x6A 0x1>;}; + sgpio6{pad_config = <0x6C 0x1 0x6C 0x2>;}; + sgpio7{pad_config = <0x6E 0x1 0x6E 0x2>;}; + sgpio8{pad_config = <0x70 0x1 0x70 0x2>;}; + sgpio9{pad_config = <0x72 0x1 0x72 0x2>;}; + sgpio10{pad_config = <0x74 0x1 0x74 0x2>;}; + sgpio11{pad_config = <0x76 0x1 0x76 0x2>;}; + sgpio12{pad_config = <0x78 0x1 0x78 0x1>;}; + pgpio0{pad_config = <0x80 0x1 0x80 0x0>;}; + pgpio1{pad_config = <0x82 0x1 0x82 0x1>;}; + pgpio2{pad_config = <0x84 0x1 0x84 0x1>;}; + pgpio3{pad_config = <0x86 0x1 0x86 0x1>;}; + pgpio4{pad_config = <0x88 0x1 0x88 0x1>;}; + pgpio5{pad_config = <0x8A 0x1 0x8A 0x1>;}; + pgpio6{pad_config = <0x8C 0x1 0x8C 0x1>;}; + pgpio7{pad_config = <0x8E 0x1 0x8E 0x1>;}; + pgpio8{pad_config = <0x10000090 0x10 0x90 0x1>;}; + pgpio9{pad_config = <0x92 0x1 0x92 0x1>;}; + pgpio10{pad_config = <0x94 0x1 0x94 0x1>;}; + pgpio11{pad_config = <0x96 0x1 0x96 0x1>;}; + pgpio12{pad_config = <0x98 0x1 0x98 0x2>;}; + pgpio13{pad_config = <0x9A 0x1 0x9A 0x2>;}; + pgpio14{pad_config = <0x9C 0x1 0x9C 0x2>;}; + pgpio15{pad_config = <0x9E 0x1 0x9E 0x2>;}; + pgpio16{pad_config = <0xA0 0x1 0xA0 0x2>;}; + pgpio17{pad_config = <0xA2 0x1 0xA2 0x2>;}; + pgpio18{pad_config = <0xA4 0x1 0xA4 0x2>;}; + pgpio19{pad_config = <0xA6 0x1 0xA6 0x2>;}; + pgpio20{pad_config = <0xA8 0x1 0xA8 0x1>;}; + pgpio21{pad_config = <0xAA 0x1 0xAA 0x2>;}; + pgpio22{pad_config = <0xAC 0x1 0xAC 0x2>;}; + pgpio23{pad_config = <0xAE 0x1 0xAE 0x2>;}; + pgpio24{pad_config = <0xB0 0x1 0xB0 0x2>;}; + pgpio25{pad_config = <0xB2 0x202 0xB2 0x2>;}; + lgpio0{pad_config = <0xE0 0x1 0xE0 0x1>;}; + lgpio1{pad_config = <0xE2 0x1 0xE2 0x1>;}; + lgpio2{pad_config = <0xE4 0x1 0xE4 0x1>;}; + lgpio3{pad_config = <0xE6 0x1 0xE6 0x1>;}; + lgpio4{pad_config = <0xE8 0x1 0xE8 0x1>;}; + lgpio5{pad_config = <0xEA 0x1 0xEA 0x1>;}; + lgpio6{pad_config = <0xEC 0x1 0xEC 0x1>;}; + lgpio7{pad_config = <0xEE 0x1 0xEE 0x1>;}; + lgpio8{pad_config = <0x100000F0 0x10 0xF0 0x1>;}; + lgpio9{pad_config = <0xF2 0x1 0xF2 0x1>;}; + lgpio10{pad_config = <0xF4 0x1 0xF4 0x1>;}; + lgpio11{pad_config = <0xF6 0x1 0xF6 0x1>;}; + lgpio12{pad_config = <0xF8 0x1 0xF8 0x1>;}; + lgpio13{pad_config = <0xFA 0x1 0xFA 0x1>;}; + lgpio14{pad_config = <0xFC 0x1 0xFC 0x1>;}; + lgpio15{pad_config = <0xFE 0x1 0xFE 0x1>;}; + lgpio16{pad_config = <0x100 0x1 0x100 0x1>;}; + lgpio17{pad_config = <0x102 0x1 0x102 0x1>;}; + lgpio18{pad_config = <0x104 0x1 0x104 0x1>;}; + lgpio19{pad_config = <0x106 0x1 0x106 0x1>;}; + lgpio20{pad_config = <0x108 0x1 0x108 0x1>;}; + lgpio21{pad_config = <0x10A 0x1 0x10A 0x1>;}; + lgpio22{pad_config = <0x10C 0x1 0x10C 0x2>;}; + lgpio23{pad_config = <0x10E 0x1 0x10E 0x1>;}; + lgpio24{pad_config = <0x110 0x1 0x110 0x1>;}; + dgpio0{pad_config = <0x10000120 0x10 0x120 0x2>;}; + dgpio1{pad_config = <0x10000122 0x10 0x122 0x2>;}; + dgpio2{pad_config = <0x10000124 0x10 0x124 0x2>;}; + dgpio3{pad_config = <0x10000126 0x10 0x126 0x1>;}; + dgpio4{pad_config = <0x10000128 0x10 0x128 0x1>;}; + dgpio5{pad_config = <0x1000012A 0x10 0x12A 0x1>;}; + dgpio6{pad_config = <0x1000012C 0x10 0x12C 0x1>;}; + dgpio7{pad_config = <0x12E 0x1 0x12E 0x1>;}; + dgpio8{pad_config = <0x10000130 0x10 0x130 0x1>;}; + dgpio9{pad_config = <0x10000132 0x10 0x132 0x1>;}; + dgpio10{pad_config = <0x10000134 0x10 0x134 0x1>;}; + cgpio0{gpio_config = ;}; + cgpio1{gpio_config = ;}; + cgpio2{gpio_config = ;}; + cgpio3{gpio_config = ;}; + cgpio4{gpio_config = ;}; + cgpio5{gpio_config = ;}; + cgpio6{gpio_config = ;}; + cgpio7{gpio_config = ;}; + cgpio8{gpio_config = ;}; + cgpio9{gpio_config = ;}; + cgpio10{gpio_config = ;}; + cgpio11{gpio_config = ;}; + cgpio12{gpio_config = ;}; + cgpio13{gpio_config = ;}; + cgpio14{gpio_config = ;}; + cgpio15{gpio_config = ;}; + cgpio16{gpio_config = ;}; + cgpio17{gpio_config = ;}; + cgpio18{gpio_config = ;}; + cgpio19{gpio_config = ;}; + cgpio20{gpio_config = ;}; + cgpio21{gpio_config = ;}; + cgpio22{gpio_config = ;}; + sgpio0{gpio_config = ;}; + sgpio1{gpio_config = ;}; + sgpio2{gpio_config = ;}; + sgpio3{gpio_config = ;}; + sgpio4{gpio_config = ;}; + sgpio5{gpio_config = ;}; + sgpio6{gpio_config = ;}; + sgpio7{gpio_config = ;}; + sgpio8{gpio_config = ;}; + sgpio9{gpio_config = ;}; + sgpio10{gpio_config = ;}; + sgpio11{gpio_config = ;}; + sgpio12{gpio_config = ;}; + pgpio0{gpio_config = ;}; + pgpio1{gpio_config = ;}; + pgpio2{gpio_config = ;}; + pgpio3{gpio_config = ;}; + pgpio4{gpio_config = ;}; + pgpio5{gpio_config = ;}; + pgpio6{gpio_config = ;}; + pgpio7{gpio_config = ;}; + pgpio8{gpio_config = ;}; + pgpio9{gpio_config = ;}; + pgpio10{gpio_config = ;}; + pgpio11{gpio_config = ;}; + pgpio12{gpio_config = ;}; + pgpio13{gpio_config = ;}; + pgpio14{gpio_config = ;}; + pgpio15{gpio_config = ;}; + pgpio16{gpio_config = ;}; + pgpio17{gpio_config = ;}; + pgpio18{gpio_config = ;}; + pgpio19{gpio_config = ;}; + pgpio20{gpio_config = ;}; + pgpio21{gpio_config = ;}; + pgpio22{gpio_config = ;}; + pgpio23{gpio_config = ;}; + pgpio24{gpio_config = ;}; + pgpio25{gpio_config = ;}; + lgpio0{gpio_config = ;}; + lgpio1{gpio_config = ;}; + lgpio2{gpio_config = ;}; + lgpio3{gpio_config = ;}; + lgpio4{gpio_config = ;}; + lgpio5{gpio_config = ;}; + lgpio6{gpio_config = ;}; + lgpio7{gpio_config = ;}; + lgpio8{gpio_config = ;}; + lgpio9{gpio_config = ;}; + lgpio10{gpio_config = ;}; + lgpio11{gpio_config = ;}; + lgpio12{gpio_config = ;}; + lgpio13{gpio_config = ;}; + lgpio14{gpio_config = ;}; + lgpio15{gpio_config = ;}; + lgpio16{gpio_config = ;}; + lgpio17{gpio_config = ;}; + lgpio18{gpio_config = ;}; + lgpio19{gpio_config = ;}; + lgpio20{gpio_config = ;}; + lgpio21{gpio_config = ;}; + lgpio22{gpio_config = ;}; + lgpio23{gpio_config = ;}; + lgpio24{gpio_config = ;}; + dgpio0{gpio_config = ;}; + dgpio1{gpio_config = ;}; + dgpio2{gpio_config = ;}; + dgpio3{gpio_config = ;}; + dgpio4{gpio_config = ;}; + dgpio5{gpio_config = ;}; + dgpio6{gpio_config = ;}; + dgpio7{gpio_config = ;}; + dgpio8{gpio_config = ;}; + dgpio9{gpio_config = ;}; + dgpio10{gpio_config = ;}; +*/ + + pgpio10{gpio_config = ;}; /* busy led */ + sgpio3{gpio_config = ;}; /* backlight */ + + +}; diff --git a/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-i2c.dtsi b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-i2c.dtsi new file mode 100755 index 000000000..48655ecb2 --- /dev/null +++ b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-i2c.dtsi @@ -0,0 +1,12 @@ +/* + * Novatek Ltd. NA51089 BSP part of dts + * + * Cortex-A9 + * + */ + +/ { + i2c0: i2c@f0220000 { compatible = "nvt,nvt_i2c"; reg = <0xf0220000 0x100>; interrupts = ; clock-frequency = <400000>; id = <0>; /*gsr = <2>;*/ /* tsr = <1>; */}; + i2c1: i2c2@f0350000 { compatible = "nvt,nvt_i2c"; reg = <0xf0350000 0x100>; interrupts = ; clock-frequency = <400000>; id = <1>; /*gsr = <2>;*/ /* tsr = <1>; */}; + i2c2: i2c3@f03a0000 { compatible = "nvt,nvt_i2c"; reg = <0xf03a0000 0x100>; interrupts = ; clock-frequency = <400000>; id = <2>; /*gsr = <2>;*/ /* tsr = <1>; */}; +}; diff --git a/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-info.dtsi b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-info.dtsi new file mode 100755 index 000000000..093691825 --- /dev/null +++ b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-info.dtsi @@ -0,0 +1,217 @@ +/* + * Novatek Ltd. NA51089 BSP part of dts + * + * Cortex-A9 + * + */ + +/ { + nvt_info { /* Get from ModelConfig.txt */ + BIN_NAME = "FW98565A"; + BIN_NAME_T = "FW98565T"; + RTOS_APP_MAIN = "cardv"; /* Optional, if OS type is Linux, dont care it. */ + /* EMBMEM_BLK_SIZE, Normally, 2KPageNand=0x20000, 512PageNand=0x4000, SPI=0x10000 */ + EMBMEM_BLK_SIZE = "0x10000"; + + /** + * [EMBMEM] + * EMBMEM_NONE + * EMBMEM_NAND + * EMBMEM_SPI_NOR + * EMBMEM_SPI_NAND + * EMBMEM_EMMC + */ + EMBMEM = "EMBMEM_SPI_NOR"; + + /** + * [FW_TYPE] + * FW_TYPE_NORMAL + * FW_TYPE_COMPRESS + * FW_TYPE_PARTIAL + * FW_TYPE_PARTIAL_COMPRESS + * FW_TYPE_LZMA + */ + FW_TYPE = "FW_TYPE_PARTIAL"; + + + /** + * [UI_STYLE] + * UI_STYLE_SPORTCAM + */ + UI_STYLE = "UI_STYLE_LVGL"; + + /** + * ======= Linux common ========= + * application/external + */ + NVT_CFG_APP_EXTERNAL = ""; + /* application include list */ + NVT_CFG_APP = "hfs lviewd nvtrtspd nvtipcd nvteventd uctrl fslinux ugxstrg nvtsystem camctrlcgi nvtweb nvtrecordManagerd msdcnvt arm_neon_perf mem ucmd isp_demon memcpy"; + /* rootfs etc folder */ + NVT_ROOTFS_ETC = ""; + /* strip executable binary and library files: yes/no */ + NVT_BINARY_FILE_STRIP = "no"; + /* Using customized kernel config */ + NVT_CFG_KERNEL_CFG = ""; + NVT_CFG_UBOOT_CFG = ""; + + /** + * ======= Linux for different code setting ========= + * [NVT_LINUX_SMP] + * NVT_LINUX_SMP_ON + * NVT_LINUX_SMP_OFF + */ + NVT_LINUX_SMP = "NVT_LINUX_SMP_OFF"; + + /** + * [NVT_CHIP_ID] + * CHIP_NA51055 + * CHIP_NA51084 + * CHIP_NA51089 + */ + NVT_CHIP_ID = "CHIP_NA51089"; + + /** + * [NVT_LINUX_COMPRESS] + * NVT_LINUX_COMPRESS_AUTO , by linux config + * NVT_LINUX_COMPRESS_GZ + * NVT_LINUX_COMPRESS_NONE + */ + NVT_LINUX_COMPRESS = "NVT_LINUX_COMPRESS_GZ"; + + /** + * [NVT_DEFAULT_NETWORK_BOOT_PROTOCOL] + * NVT_DEFAULT_NETWORK_BOOT_PROTOCOL_DHCP_SERVER + * NVT_DEFAULT_NETWORK_BOOT_PROTOCOL_DHCP_CLIENT + * NVT_DEFAULT_NETWORK_BOOT_PROTOCOL_STATIC_IP + */ + NVT_DEFAULT_NETWORK_BOOT_PROTOCOL = "NVT_DEFAULT_NETWORK_BOOT_PROTOCOL_STATIC_IP"; + + /** + * [NVT_ROOTFS_TYPE] + * NVT_ROOTFS_TYPE_NAND_UBI + * NVT_ROOTFS_TYPE_SQUASH + * NVT_ROOTFS_TYPE_NAND_JFFS2 + * NVT_ROOTFS_TYPE_NOR_JFFS2 + * NVT_ROOTFS_TYPE_RAMDISK + * NVT_ROOTFS_TYPE_EMMC + */ + NVT_ROOTFS_TYPE = "NVT_ROOTFS_TYPE_RAMDISK"; + + /** + * [LCD1] + * disp_if8b_lcd1_wm08001_sn75lvds83b + * disp_if8b_lcd1_aucn01 + * disp_ifdsi_lcd1_nt35510 + * disp_if8b_lcd1_pw35p00 + * disp_if8b_lcd1_psd300_ili8961 + */ + LCD1 = "disp_if8b_lcd1_psd200_st7789v"; + + /** + * [SENSOR] + * sen_off + * sen_ar0237ir + * sen_os02k10 + * sen_ov2715 + * sen_ar0237 + * sen_imx290 + * sen_os05a10 + * sen_gc5603 + */ + SENSOR1 = "sen_os05b10"; + SENSOR1_CFG = "sen_os05b10_565"; + SENSOR2 = "sen_off"; + SENSOR2_CFG = "sen_off"; + /** + * [SENSORCFG_SUFFIX] + */ + SENSOR_CFG_SUFFIX = "_565"; + + /** + * [NVT_ETHERNET] + * NVT_ETHERNET_NONE + * NVT_ETHERNET_RTOS + */ + NVT_ETHERNET = "NVT_ETHERNET_NONE"; + + /** + * [NVT_SDIO_WIFI]: Remember to update root-fs/rootfs/etc/init.d/S05_Net + * NVT_SDIO_WIFI_NONE + * NVT_SDIO_WIFI_RTK + * NVT_SDIO_WIFI_BRCM + * NVT_SDIO_WIFI_NVT + * NVT_SDIO_WIFI_BOUFFALO + */ + NVT_SDIO_WIFI = "NVT_SDIO_WIFI_NONE"; + + /** + * [NVT_USB_WIFI] + * NVT_USB_WIFI_NONE + */ + NVT_USB_WIFI = "NVT_USB_WIFI_NONE"; + + /** + * [NVT_USB_4G] + * NVT_USB_4G_NONE + */ + NVT_USB_4G = "NVT_USB_4G_NONE"; + + /** + * [WIFI_RTK_MDL] : sub item for NVT_SDIO_WIFI_RTK + * WIFI_RTK_MDL_NONE + * WIFI_RTK_MDL_8189 + */ + WIFI_RTK_MDL = "WIFI_RTK_MDL_8189"; + + /** + * [WIFI_BRCM_MDL] : sub item for NVT_SDIO_WIFI_BRCM + * WIFI_BRCM_MDL_43438a1_ampk6212axtal26 + * WIFI_BRCM_MDL_43455c0_ampk6255c0 + * WIFI_BRCM_MDL_43456c5_ampk6256c5 + */ + WIFI_BRCM_MDL = "WIFI_BRCM_MDL_43456c5_ampk6256c5"; + + /** + * [WIFI_NVT_MDL] : sub item for NVT_SDIO_WIFI_NVT + * WIFI_NVT_MDL_18202 + * WIFI_NVT_MDL_18211 + */ + WIFI_NVT_MDL = "WIFI_NVT_MDL_18211"; + + /** + * [NVT_CURL_SSL] + * NVT_CURL_SSL_OPENSSL + * NVT_CURL_SSL_WOLFSSL + */ + NVT_CURL_SSL = "NVT_CURL_SSL_OPENSSL"; + + /** + * [NVT_UBOOT_ENV_IN_STORG_SUPPORT] + * NVT_UBOOT_ENV_IN_STORG_SUPPORT_NAND + * NVT_UBOOT_ENV_IN_STORG_SUPPORT_NOR + * NVT_UBOOT_ENV_IN_STORG_SUPPORT_MMC + * NVT_UBOOT_ENV_IN_STORG_SUPPORT_OFF + */ + NVT_UBOOT_ENV_IN_STORG_SUPPORT = "NVT_UBOOT_ENV_IN_STORG_SUPPORT_OFF"; + + /** + * [TOUCH] + * TOUCH_OFF + * TOUCH_ON + */ + TOUCH = "TOUCH_OFF"; + + /** + * [DX model] + */ + DX_MODEL = "565_HUNTING_EVB_LINUX_4G_S550"; + + /** + * [LINK SCRIPT] + * + * if UI_STYLE = "UI_STYLE_LVGL" , please set LDS_SCRIPT = "HUNTING_LVGL_LDS" + */ + LDS_SCRIPT = "HUNTING_LVGL_LDS"; + }; +}; diff --git a/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-media.dtsi b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-media.dtsi new file mode 100755 index 000000000..0ab2333b9 --- /dev/null +++ b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-media.dtsi @@ -0,0 +1,96 @@ +/* + * Novatek Ltd. NA51089 BSP part of dts + * + * Cortex-A9 + * + */ + + +#include +#include "nvt-basic.dtsi" + +/ { + nvtmpp { + compatible = "nvt,nvtmpp"; + }; + + isf_stream { + compatible = "nvt,isf_stream"; + }; + + isf_flow { + compatible = "nvt,isf_flow"; + }; + + isf_vdocap { + compatible = "nvt,isf_vdocap"; + }; + + isf_vdoprc { + compatible = "nvt,isf_vdoprc"; + }; + + isf_dummy { + compatible = "nvt,isf_dummy"; + }; + + isf_vdoenc { + compatible = "nvt,isf_vdoenc"; + }; + + isf_vdodec { + compatible = "nvt,isf_vdodec"; + }; + + isf_vdoout { + compatible = "nvt,isf_vdoout"; + }; + + dispobj { + compatible = "nvt,nvt_dispobj"; + }; + + dispdev { + compatible = "nvt,nvt_dispdev"; + }; + + audio { + compatible = "nvt,nvt_audio"; + }; + + msdcnvt { + compatible = "nvt,msdcnvt"; + }; + + msdcnvt_adj { + compatible = "nvt,msdcnvt_adj"; + }; + + msdcnvt_custom_si { + compatible = "nvt,msdcnvt_custom_si"; + }; + + wavstudio { + compatible = "nvt,wavstudio"; + }; + + isf_audenc { + compatible = "nvt,isf_audenc"; + }; + + isf_auddec { + compatible = "nvt,isf_auddec"; + }; + + isf_audcap { + compatible = "nvt,isf_audcap"; + }; + + isf_audout { + compatible = "nvt,isf_audout"; + }; + + nvt_ipc { + compatible = "nvt,nvt_ipc"; + }; +}; \ No newline at end of file diff --git a/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-mem-tbl.dtsi b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-mem-tbl.dtsi new file mode 100755 index 000000000..5ef334fa9 --- /dev/null +++ b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-mem-tbl.dtsi @@ -0,0 +1,69 @@ +/* + * Novatek Ltd. NA51089 BSP part of dts + * + * Cortex-A9 + * + */ +/ { + /* Uboot/loader memory layout */ + nvt_memory_cfg { + #address-cells = <1>; + #size-cells = <1>; + dram { reg = <0x00000000 0x08000000>; }; + shmem{ reg = <0x00007E00 0x00000200>; }; /* always exists */ + loader { reg = <0x01000000 0x00080000>; }; /* recycled after uboot started */ + fdt { reg = <0x01800000 0x00040000>; }; /* recycled after linux started */ + rtos { reg = <0x01840000 0x00FC0000>; }; /* recycled after linux started */ + linuxtmp{ reg = <0x02800000 0x04000000>; }; /* recycled after rtos started */ + uboot{ reg = <0x06800000 0x01640000>; }; /* recycled after rtos started */ + logo-fb{ reg = <0x07E40000 0x001C0000>; }; /* recycled after rtos started */ + }; + + /* Linux system memory region*/ + memory { device_type = "memory"; reg = <0x00000000 0x01800000 0x02000000 0x01500000>; }; + + /* Linux setup reserved memory */ + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + ranges; + }; + + /* + * rtos libc heap expected minimum size + * becasue remain of rtos memory will be the libc heap automatically, + * if it too small against your expectation, there will be a assert on boot. + */ + libc-heap { size = <0x00200000>; }; + + hdal-memory { + #address-cells = <1>; + #size-cells = <1>; + media { reg = <0x03500000 0x04B00000>; }; + }; + + hdal-maxpath-cfg { + /* First is for VCAP0, second for VCAP1 and so on.*/ + vdocap_active_list = <1 0 0 0 0 0 0 0>; + vdoprc_maxdevice = <2>; + vdoenc_maxpath = <4>; + vdodec_maxpath = <3>; + vdoout_maxdevice = <1>; + adocap_maxdevice = <1>; + adoout_maxdevice = <2>; + adoenc_maxpath = <1>; + adodec_maxpath = <1>; + /* gfx jog list */ + gfx_maxjob = <2>; + /* stamp max img buffer number */ + stamp_maximg = <9>; + /* First is internal stamp number, second is external stamp number */ + vdoprc_maxstamp = <4 4>; + /* First is internal mask number, second is external mask number */ + vdoprc_maxmask = <4 4>; + vdoenc_maxstamp = <9 9>; + vdoenc_maxmask = <0 64>; + vdoout_maxstamp = <0 16>; + vdoout_maxmask = <0 64>; + }; +}; diff --git a/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-nvtpack.dtsi b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-nvtpack.dtsi new file mode 100755 index 000000000..568f94fda --- /dev/null +++ b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-nvtpack.dtsi @@ -0,0 +1,31 @@ +/* + * Novatek Ltd. NA51089 BSP part of dts + * + * Cortex-A9 + * + */ + +&nor { + /** + * partition_name is $1 as in partition_$1 is referred + * to nvt-na51089-storage-partition. dtsi + */ + nvtpack { + ver = "NVTPACK_FW_INI_16072017"; /* Fixed */ + method = <1>; /* Fixed */ + index { + id0 { partition_name = "loader"; source_file = ""; }; /* Fixed */ + id1 { partition_name = "fdt"; source_file = ""; }; /* Fixed */ + id2 { partition_name = "fdt.restore"; source_file = ""; }; /* Fixed */ + id3 { partition_name = "fdt.app"; source_file = "application.bin"; }; + id4 { partition_name = "uboot"; source_file = ""; }; + id5 { partition_name = "uenv"; source_file = ""; }; + id6 { partition_name = "kernel"; source_file = ""; }; + id7 { partition_name = "rootfs"; source_file = ""; }; + id8 { partition_name = "rootfs1"; source_file = ""; }; + id9 { partition_name = "rtos"; source_file = "rtos-main.bin"; }; + id10 { partition_name = "app"; source_file = ""; }; + id11 { partition_name = "sys"; source_file = ""; }; + }; + }; +}; diff --git a/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-peri-dev.dtsi b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-peri-dev.dtsi new file mode 100755 index 000000000..15e9beede --- /dev/null +++ b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-peri-dev.dtsi @@ -0,0 +1,52 @@ +/* + * Novatek Ltd. NA51089 BSP part of dts + * + * Cortex-A9 + * + */ + + +#include + +&i2c0 { + #address-cells = <1>; + #size-cells = <0>; + +/* dummy_i2c_dev: dummy_i2c@1a { + compatible = "nvt,dummy_i2c_dev"; + reg = <0x1a>; + }; +*/ +}; + +&i2c1 { + #address-cells = <1>; + #size-cells = <0>; +}; + +&i2c2 { + #address-cells = <1>; + #size-cells = <0>; +}; + +&spi0 { + status = "okay"; + #address-cells = <1>; + #size-cells = <0>; + +/* dummy_spi_dev: dummy_spi_dev@0 { + compatible = "dummy_spi_dev.0"; + reg = <0>; // Chip select 0 + spi-max-frequency = <1000000>; + spi-cpol; + }; +*/ +}; + +&spi1 { + status = "okay"; +}; + +&spi2 { + status = "okay"; +}; diff --git a/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-peri.dtsi b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-peri.dtsi new file mode 100755 index 000000000..7f0143b1d --- /dev/null +++ b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-peri.dtsi @@ -0,0 +1,514 @@ +/* + * Novatek Ltd. NA51089 BSP part of dts + * + * Cortex-A9 + * + */ + + +#include +#include "nvt-basic.dtsi" + +/ { + chosen { + bootargs = " "; + }; + + aliases { + mmc0 = &mmc0; /* Fixed to mmcblk0 for sdio1 */ + mmc1 = &mmc1; /* Fixed to mmcblk1 for sdio2 */ + }; + + uart@f0290000 { + compatible = "ns16550a"; + reg = <0xf0290000 0x1000>; + interrupts = ; + baud = <115200>; + reg-shift = <2>; + reg-io-width = <4>; + no-loopback-test = <1>; + clock-frequency = <24000000>; + fifo-size = <64>; + uart_id = <0>; + }; + + uart@f0300000 { + compatible = "ns16550a"; + reg = <0xf0300000 0x1000>; + interrupts = ; + baud = <115200>; + reg-shift = <2>; + reg-io-width = <4>; + no-loopback-test = <1>; + clock-frequency = <48000000>; + fifo-size = <64>; + hw_flowctrl = <0>; + rx_trig_level = <3>; + uart_id = <1>; + }; + + uart@f0310000 { + compatible = "ns16550a"; + reg = <0xf0310000 0x1000>; + interrupts = ; + baud = <115200>; + reg-shift = <2>; + reg-io-width = <4>; + no-loopback-test = <1>; + clock-frequency = <48000000>; + fifo-size = <64>; + hw_flowctrl = <0>; + rx_trig_level = <3>; + uart_id = <2>; + }; + + kdrv_rpc: cc@f0090000 { + compatible = "kdrv_rpc"; + reg = <0xf0090000 0x300>; + interrupts = ; + }; + + mmc0: mmc@f0420000 { + compatible = "nvt,nvt_mmc"; + reg = <0xf0420000 0x1000>; + interrupts = ; + max-frequency = <48000000>; + voltage-switch = <0>; + max-voltage = <3300>; + bus-width = <4>; + neg-sample-edge = <0>; + driving = <15 15 15 20 15 15 25 25 25 25 25 25>; + cd_gpio = ; + card_power_gpio = ; + /*ro_gpio = ;*/ + /*power_en = ;*/ + }; + + mmc1: mmc@f0500000 { + compatible = "nvt,nvt_mmc2"; + reg = <0xf0500000 0x1000>; + interrupts = ; + max-frequency = <48000000>; + voltage-switch = <0>; + max-voltage = <3300>; + bus-width = <4>; + neg-sample-edge = <0>; + driving = <15 8 8 20 8 8 20 8 8 20 8 8>; + cd_gpio = <0 GPIO_FALLING_EDGE GPIO_INTERRUPT>; + /*ro_gpio = ;*/ + /*power_en = ;*/ + /*status = "disabled";*/ + }; + + nand: nand@f0400000 { + #address-cells = <2>; + #size-cells = <2>; + compatible = "nvt,nvt_spinand"; + reg = <0xf0400000 0x1000>; + interrupts = ; + clock-frequency = <96000000>; + nvt-devname = "spi_nand.0"; + }; + + nor: nor@f0400000 { + #address-cells = <2>; + #size-cells = <2>; + compatible = "nvt,nvt_spinor"; + reg = <0xf0400000 0x1000>; + interrupts = ; + clock-frequency = <120000000>; + nvt-devname = "spi_nor.0"; + trace-stdtable = <0>; + }; + + gpio: gpio@f0070000 { + compatible = "nvt,nvt_gpio"; + reg = <0xf0070000 0x10000>; + interrupts = ; + #gpio-cells = <2>; + }; + + eth@f02b0000 { + compatible = "nvt,synopsys_eth"; + reg = <0xf02b0000 0x3800>; + interrupts = ; + sp-clk = <0>; + ref-clk-out = <0>; + }; + + phy@f02b3800 { + compatible = "nvt,eth_phy"; + reg = <0xf02b3800 0x400>; + }; + + wdt@f0050000 { + compatible = "nvt,nvt_wdt"; + reg = <0xf0050000 0x10000>; + interrupts = ; + }; + + pwm: pwm@f0210000 { + compatible = "nvt,nvt_kdrv_pwm"; + reg = <0xf0210000 0x2000>; + interrupts = ; + }; + + adc@f0260000 { + compatible = "nvt,nvt_adc"; + reg = <0xf0260000 0x1000>; + interrupts = ; + #io-channel-cells = <1>; + }; + + rtc@f0060000 { + compatible = "nvt,nvt_rtc"; + reg = <0xf0060000 0x100>; + interrupts = ; + }; + + drtc@f00b0000 { + compatible = "nvt,nvt_drtc"; + reg = <0xf00b0000 0x100>; + }; + + crypto: crypto@f0620000 { + compatible = "nvt,nvt_crypto"; + reg = <0xf0620000 0x100>; + interrupts = <0 38 IRQ_TYPE_LEVEL_HIGH>; + mclk = <1>; + }; + + hash: hash@f0670000 { + compatible = "nvt,nvt_hash"; + reg = <0xf0670000 0x100>; + interrupts = <0 28 IRQ_TYPE_LEVEL_HIGH>; + mclk = <1>; + }; + + rsa: rsa@f06a0000 { + compatible = "nvt,nvt_rsa"; + reg = <0xf06a0000 0x100>; + interrupts = <0 20 IRQ_TYPE_LEVEL_HIGH>; + mclk = <1>; + }; + + top: top@f0010000 { + compatible = "nvt,nvt_top"; + reg = <0xf0010000 0x2000 + 0xf0030000 0x2000 + 0xf0070000 0x10000>; + }; + + sie@f0c00000 { + compatible = "nvt,drv_sie"; + reg = <0xf0c00000 0x900 + 0xf0d20000 0x900 + 0xF0D30000 0x900>; + interrupts = ; + /*sensor_freq = <37125000>;*/ + }; + + tge@f0cc0000 { + compatible = "nvt,kdrv_tge"; + reg = <0xf0cc0000 0x150>; + interrupts = ; + }; + + rhe@f0ce0000 { + compatible = "nvt,kdrv_rhe"; + reg = <0xf0ce0000 0x900>; + interrupts = ; + }; + + ime@f0c40000 { + compatible = "nvt,kdrv_ime"; + reg = <0xf0c40000 0x1000>; + interrupts = ; + }; + + ife2@f0d00000 { + compatible = "nvt,kdrv_ife2"; + reg = <0xf0d00000 0x100>; + interrupts = ; + }; + + ise@f0c90000 { + compatible = "nvt,kdrv_ise"; + reg = <0xf0c90000 0x100>; + interrupts = ; + }; + + ipe@f0c30000 { + compatible = "nvt,kdrv_ipe"; + reg = <0xf0c30000 0x900>; + interrupts = ; + }; + + ife@f0c70000 { + compatible = "nvt,kdrv_ife"; + reg = <0xf0c70000 0x800>; + interrupts = ; + }; + + vpe@f0cd0000 { + compatible = "nvt,kdrv_vpe"; + reg = <0xf0cd0000 0x1040>; + interrupts = ; + }; + + ai@f0c60000 { + compatible = "nvt,kdrv_ai"; + reg = <0xf0c60000 0x23c + 0xf0d50000 0x114 + 0xf0cb0000 0x22c>; + interrupts = ; + clock-frequency = <600000000 480000000 600000000>; + }; + + md@f0c10000 { + compatible = "nvt,kdrv_md"; + reg = <0xf0c10000 0x150>; + interrupts = ; + clock-frequency = <240000000>; + }; + dis@f0c50000 { + compatible = "nvt,kdrv_dis"; + reg = <0xf0c50000 0x114>; + interrupts = ; + }; + + coe@f0a11000 { + compatible = "nvt,nvt_coe"; + reg = <0xf0a11000 0x2c0>; + }; + + dce@f0c20000 { + compatible = "nvt,kdrv_dce"; + reg = <0xf0c20000 0x650>; + interrupts = ; + }; + + ive@f0d70000 { + compatible = "nvt,kdrv_ive"; + reg = <0xf0d70000 0x6c>; + interrupts = ; + }; + + sde@f0d90000 { + compatible = "nvt,kdrv_sde"; + reg = <0xf0d90000 0x90>; + interrupts = ; + }; + + ide@f0800000 { + compatible = "nvt,nvt_ide"; + reg = <0xf0800000 0x1000>; + interrupts = ; + }; + + dsi@f0840000 { + compatible = "nvt,nvt_dsi"; + reg = <0xf0840000 0x1000>; + interrupts = ; + }; + + csi@f0280000 { + compatible = "nvt,nvt_csi"; + reg = <0xf0280000 0x100 + 0xf0330000 0x100>; + interrupts = ; + }; + + lvds@f0270000 { + compatible = "nvt,nvt_lvds"; + reg = <0xF0270000 0x200 + 0xF0370000 0x200>; + interrupts = ; + }; + + senphy@f06b0000 { + compatible = "nvt,nvt_senphy"; + reg = <0xF06B0000 0x100>; + }; + + ssenif@f0xx0000 { + compatible = "nvt,nvt_ssenif"; + reg = <0xF02C0000 0x2000>; + interrupts = ; + }; + + sif@f0240000 { + compatible = "nvt,nvt_sif"; + reg = <0xf0240000 0x200>; + interrupts = ; + clock-frequency = <1000000>; + }; + + graphic@f0c80000 { + compatible = "nvt,nvt_graphic"; + reg = <0xF0C80000 0x300 + 0xF0D10000 0x100>; + interrupts = ; + }; + + affine@f0ca0000 { + compatible = "nvt,nvt_affine"; + reg = <0xF0CA0000 0x100>; + interrupts = ; + }; + + h26x@f0a10000 { + compatible = "nvt,nvt_h26x"; + reg = <0xf0a10000 0xa00>; + interrupts = ; + power_saving = <0>; /* 0:using pllf320, 1:using fix96m */ + }; + + timer@f0040000 { + compatible = "nvt,nvt_timer"; + reg = <0xf0040000 0x300>; + interrupts = ; + }; + + eac@f0640000 { + compatible = "nvt,nvt_eac"; + reg = <0xF0640000 0x200>; + }; + + jpg@f0a00000 { + compatible = "nvt,nvt_jpg"; + reg = <0xf0a00000 0x100>; + interrupts = ; + }; + + nvt_usb2host@f0600000 { + compatible = "nvt,ehci-nvtivot"; + reg = <0xf0600000 0x10000>; + interrupts = ; + }; + + nvt_usb2dev@f0600000 { + compatible = "nvt,fotg200_udc"; + reg = <0xf0600000 0x10000>; + interrupts = ; + }; + + nvt_usb_chrg@f0600000 { + compatible = "nvt,nvt_usb_chrgdet"; + reg = <0xf0600000 0x10000>; + }; + + dai@f0630000 { + compatible = "nvt,nvt_dai"; + reg = <0xF0630000 0xbc>; + interrupts = ; + }; + + rotate@f0cf0000 { + compatible = "nvt,nvt_rotation"; + reg = <0xF0CF0000 0x100>; + interrupts = ; + }; + + drvdump@0 { + compatible = "nvt,nvt_drvdump"; + }; + + dsp@f1430000 { + compatible = "nvt,nvt_dsp"; + reg = <0xF1430000 0x200 + 0xF2000000 0x1000000 + 0xF1440000 0x200 + 0xF3000000 0x1000000>; + interrupts = ; + }; + + spi0: spi@f0230000 { + compatible = "nvt,nvt_spi"; + reg = <0xf0230000 0x10000>; + interrupts = ; + dma-support = <0>; + nvt-devname = <0>; + }; + + spi1: spi@f0320000 { + compatible = "nvt,nvt_spi"; + reg = <0xf0320000 0x10000>; + interrupts = ; + dma-support = <0>; + nvt-devname = <1>; + }; + + spi2: spi@f0340000 { + compatible = "nvt,nvt_spi"; + reg = <0xf0340000 0x10000>; + interrupts = ; + dma-support = <0>; + nvt-devname = <2>; + }; + + sdp@f0390000 { + compatible = "nvt,nvt_sdp"; + reg = <0xf0390000 0x28>; + interrupts = ; + }; + + tse@f0650000 { + compatible = "nvt,nvt_tse"; + reg = <0xF0650000 0x90>; + interrupts = ; + }; + + remote@f0250000 { + compatible = "nvt,nvt_remote"; + reg = <0xf0250000 0x28>; + interrupts = ; + }; + + rng: rng@f0680000 { + compatible = "nvt,nvt_rng"; + reg = <0xf0680000 0x100>; + }; + + nvt_arb@f0000000 { + compatible = "nvt,nvt_arb"; + reg = <0xF0000000 0xA000 + 0xF0FE0000 0x300>; + interrupts = ; + }; + + nvt_otp@f0660000 { + compatible = "nvt,nvt_otp"; + reg = <0xF0660000 0x70>; + }; + + kdrv_ipp { + clock-frequency = <240000000>; + }; + + uvcp: uvcp@f0690000 { + compatible = "nvt,nvt_uvcp"; + reg = <0xf0690000 0x200>; + interrupts = ; + }; + pll_preset@0 { + pll3{pll_config = <3 0 0>;}; + pll4{pll_config = <4 0 0>;}; + pll5{pll_config = <5 297000000 1>;}; + pll6{pll_config = <6 0 0>;}; + pll7{pll_config = <7 0 0>;}; + pll8{pll_config = <8 0 0>;}; + pll9{pll_config = <9 0 0>;}; + pll11{pll_config = <11 0 0>;}; + pll12{pll_config = <12 0 1>;}; + }; +}; diff --git a/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-storage-partition.dtsi b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-storage-partition.dtsi new file mode 100755 index 000000000..4942292be --- /dev/null +++ b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-storage-partition.dtsi @@ -0,0 +1,22 @@ +/* + * Novatek Ltd. NA51089 BSP part of dts + * + * Cortex-A9 + * + */ + +&nor { + partition_loader { label = "loader"; reg = <0x0 0x0000000 0x0 0x10000>; }; /* Fixed */ + partition_fdt { label = "fdt"; reg = <0x0 0x10000 0x0 0x10000>; }; /* Fixed */ + partition_fdt.restore { label = "fdt.restore"; reg = <0x0 0x20000 0x0 0x10000>; }; /* Fixed */ + partition_fdt.app { label = "fdt.app"; reg = <0x0 0x30000 0x0 0x20000>; }; /* Fixed */ + partition_uboot { label = "uboot"; reg = <0x0 0x50000 0x0 0xA0000>; }; + partition_uenv { label = "uenv"; reg = <0x0 0xF0000 0x0 0x10000>; }; + partition_kernel { label = "kernel"; reg = <0x0 0x100000 0x0 0x260000>; }; + partition_rootfs { label = "rootfs"; reg = <0x0 0x360000 0x0 0x3E0000>; }; + partition_rootfs1 { label = "rootfs1"; reg = <0x0 0x740000 0x0 0x810000>; }; + partition_rtos { label = "rtos"; reg = <0x0 0xF50000 0x0 0x900000>; }; + partition_app { label = "app"; reg = <0x0 0x1850000 0x0 0x50000>; }; /* app size depneds on hdal/samples/vendor_cfg/Makeile: ROOTFS_UBI_MAX_LEB_COUNT */ + partition_sys { label = "sys"; reg = <0x0 0x18A0000 0x0 0x10000>; }; + partition_all { label = "all"; reg = <0x0 0x0000000 0x0 0x2000000>; }; +}; diff --git a/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-top.dtsi b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-top.dtsi new file mode 100755 index 000000000..332e9bc2f --- /dev/null +++ b/configs/rtos/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-top.dtsi @@ -0,0 +1,24 @@ +&top { + sdio{pinmux = <0x5>;}; + sdio2{pinmux = <0x5>;}; + sdio3{pinmux = <0x0>;}; + nand{pinmux = <0x5>;}; + sensor{pinmux = <0x0>;}; + sensor2{pinmux = <0x0>;}; + mipi_lvds{pinmux = <0x0>;}; + i2c{pinmux = <0x40>;}; + sif{pinmux = <0x0>;}; + uart{pinmux = <0x1021>;}; + spi{pinmux = <0x0>;}; + sdp{pinmux = <0x0>;}; + remote{pinmux = <0x0>;}; + pwm{pinmux = <0x8000>;}; /* pwm3: 0x8000 p_gp3 IRLED */ + /* pwm2{pinmux = <0x2000000>;}; pwm11: 0x2000000 p_gp11 backlight */ + pwm2{pinmux = <0x0000000>;}; + ccnt{pinmux = <0x0>;}; + audio{pinmux = <0x0>;}; + lcd{pinmux = <0x10000000>;}; + tv{pinmux = <0x0>;}; + eth{pinmux = <0x0>;}; + misc{pinmux = <0x0>;}; +}; diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S530/DxHunting.c b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S530/DxHunting.c index ca9827b0c..dee40df9c 100755 --- a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S530/DxHunting.c +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S530/DxHunting.c @@ -31,6 +31,7 @@ #define IRLED_CTRL_BY_PWM ENABLE//DISABLE// #define IRLED_PWMID PWMID_3 /* P_GPIO3 */ #include "pwm.h" +#include "flow_preview.h" /////////////////////////////////////////////////////////////////////////////// #define __MODULE__ DxHunting #define __DBGLVL__ 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER @@ -164,7 +165,12 @@ UINT32 DrvGPIO_GetPhotoMovieModeFromMonitor(void) switch(value) { case PWR_OFF: - sf_mcu_reg_set(SF_MCU_POWEROFF,0); + printf("%s:%d\n", __FUNCTION__, __LINE__); + sf_set_power_off_flag(APP_POWER_OFF_BATT_EMPTY); + flow_preview_set_stop_flag(TRUE); + //sf_mcu_reg_set(SF_MCU_POWEROFF,0); + g_uiBootMode = DX_HUNTING_MODE_OTHER; + printf("%s:%d\n", __FUNCTION__, __LINE__); break; case PWR_ON_SETUP: #if SF_IQ_TEST == DISABLE diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCamera_Sensor.c b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCamera_Sensor.c new file mode 100755 index 000000000..e4d4e01f8 --- /dev/null +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCamera_Sensor.c @@ -0,0 +1,3946 @@ +/** + DxSensor + + Sensor common interface + + @file DxSensor.c + @ingroup mISYSAlg + @note Nothing (or anything need to be mentioned). + + Copyright Novatek Microelectronics Corp. 2011. All rights reserved. +*/ + +#include "Delay.h" +// sensor +#include "DxSensor.h" +#include "sensor_if.h" +#include "sensor_drv.h" +#include "IOCfg.h" +// Driver_Sys +#include "lvds.h" +#include "sif.h" + +#define __MODULE__ DxDrv +#define __DBGLVL__ 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER +#define __DBGFLT__ "*" // *=All, [mark]=CustomClass +#include + +typedef enum { + POW_CTRL_TURN_ON = 0, + POW_CTRL_TURN_OFF, + POW_CTRL_SAVE_ON, + POW_CTRL_SAVE_OFF, +} POW_CTRL_FLAG; + +typedef SENSOR_DRV_TAB *(*SEN_GET_DRV)(void); +typedef SENSOR_INIT_OBJ(*SEN_GET_INI_OBJ)(SENSOR_ID id); +typedef BOOL (*SEN_PLUG_IN)(SENSOR_ID id); +typedef SEN_PLUG_INFO (*SEN_PLUG_INFO_FP)(SENSOR_ID id); +typedef void (*SEN_POWER_CTRL)(SENSOR_ID id, POW_CTRL_FLAG flag); + +typedef struct { + CHAR *name; + SEN_GET_DRV drv_tab; + SEN_GET_INI_OBJ drv_obj; + SEN_POWER_CTRL pow_ctrl; + SEN_PLUG_IN det_plug_in; + SEN_PLUG_IN plug_in_cb; + SEN_PLUG_INFO_FP det_plug_info; +} SEN_MAP_INFO; + +static CHAR sensor_name[SENSOR_ID_MAX_NUM][30] = { + _SENSOR1_, + _SENSOR2_, +}; + +#if (defined(_CMOS_AR0237L_)) +static SENSOR_INIT_OBJ sensor_get_obj_ar0237l(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + + // set mclk change enable to notify sensor driver + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = 2; + init_obj.sen_2_serial_pin_map[3] = 3; + return init_obj; +} +static void sen_power_ctrl_ar0237l(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + switch (flag) { + case POW_CTRL_TURN_ON: + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + // set power on sequence + // reset pin + UINT32 reset_pin = S_GPIO_4; + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(2); //Min. 1ms + gpio_setPin(reset_pin); + Delay_DelayMs(8); //150000 MCLK + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_IMX291M_)) +#if 0 +static void csi_hw_rst_imx291cqc(SENSOR_ID sensor_id) +{ + debug_msg("~G csi_hw_rst_imx291cqc \r\n"); + gpio_setDir(S_GPIO_4, GPIO_DIR_OUTPUT); + gpio_clearPin(S_GPIO_4); + Delay_DelayMs(1); + gpio_setPin(S_GPIO_4); + Delay_DelayUs(10); +} +#endif + +static SENSOR_INIT_OBJ sensor_get_obj_imx291m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + //init_obj.interface_info.csi.fp_hw_rst = csi_hw_rst_imx291cqc; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + sensor_ssenif_timeout_manual(id,TRUE); + // set mclk change enable to notify sensor driver + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = 2; + init_obj.sen_2_serial_pin_map[3] = 3; + + return init_obj; +} +static void sen_power_ctrl_imx291m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + + // set power off sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_IMX290M_)) +#if 0 +static void csi_hw_rst_imx290(SENSOR_ID sensor_id) +{ + debug_msg("~G csi_hw_rst_imx290 \r\n"); + gpio_setDir(S_GPIO_4, GPIO_DIR_OUTPUT); + gpio_clearPin(S_GPIO_4); + Delay_DelayMs(1); + gpio_setPin(S_GPIO_4); + Delay_DelayUs(10); +} +#endif + +static SENSOR_INIT_OBJ sensor_get_obj_imx290m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + //init_obj.interface_info.csi.fp_hw_rst = csi_hw_rst_imx290; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + + // set mclk change enable to notify sensor driver + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = 2; + init_obj.sen_2_serial_pin_map[3] = 3; + return init_obj; +} +static void sen_power_ctrl_imx290m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + + // set power off sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_IMX307M_)) +#if 0 +static void csi_hw_rst_imx307cqc(SENSOR_ID sensor_id) +{ + debug_msg("~G csi_hw_rst_imx307cqc \r\n"); + gpio_setDir(S_GPIO_4, GPIO_DIR_OUTPUT); + gpio_clearPin(S_GPIO_4); + Delay_DelayMs(1); + gpio_setPin(S_GPIO_4); + Delay_DelayUs(10); +} +#endif + +static SENSOR_INIT_OBJ sensor_get_obj_imx307m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + //init_obj.interface_info.csi.fp_hw_rst = csi_hw_rst_imx307cqc; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + + // set mclk change enable to notify sensor driver + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = 2; + init_obj.sen_2_serial_pin_map[3] = 3; + return init_obj; +} +static void sen_power_ctrl_imx307m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + + // set power off sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_IMX307L_)) +#if 0 +static void csi_hw_rst_imx307l(SENSOR_ID sensor_id) +{ + debug_msg("~G csi_hw_rst_imx307l \r\n"); + gpio_setDir(S_GPIO_4, GPIO_DIR_OUTPUT); + gpio_clearPin(S_GPIO_4); + Delay_DelayMs(1); + gpio_setPin(S_GPIO_4); + Delay_DelayUs(10); +} +#endif + +static SENSOR_INIT_OBJ sensor_get_obj_imx307l(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + //init_obj.interface_info.csi.fp_hw_rst = csi_hw_rst_imx307l; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option = SENSOR_OPTION_NONE; + // set mclk change enable to notify sensor driver + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 1; + init_obj.sen_2_serial_pin_map[1] = 2; + init_obj.sen_2_serial_pin_map[2] = 0; + init_obj.sen_2_serial_pin_map[3] = 3; + return init_obj; +} +static void sen_power_ctrl_imx307l(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + + // set power off sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_IMX317M_)) +#if 0 +static void csi_hw_rst_imx317m(SENSOR_ID sensor_id) +{ + + gpio_setDir(S_GPIO_4, GPIO_DIR_OUTPUT); + gpio_clearPin(S_GPIO_4); + Delay_DelayMs(1); + gpio_setPin(S_GPIO_4); + Delay_DelayUs(10); + +} +#endif +static SENSOR_INIT_OBJ sensor_get_obj_imx317m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + //init_obj.interface_info.csi.fp_hw_rst = csi_hw_rst_imx317m; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + // set sensor interface pin map (LVDS/CSI/SLVS-EC/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = 2; + init_obj.sen_2_serial_pin_map[3] = 3; + + return init_obj; +} + +static void sen_power_ctrl_imx317m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + + // set power off sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_IMX323P_)) +#if 0 +static void csi_hw_rst_imx323p(SENSOR_ID sensor_id) +{ + + gpio_setDir(S_GPIO_4, GPIO_DIR_OUTPUT); + gpio_clearPin(S_GPIO_4); + Delay_DelayMs(1); + gpio_setPin(S_GPIO_4); + Delay_DelayUs(10); + +} +#endif +static SENSOR_INIT_OBJ sensor_get_obj_imx323p(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + // set sensor interface pin map (LVDS/CSI/SLVS-EC/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = 2; + init_obj.sen_2_serial_pin_map[3] = 3; + + return init_obj; +} + +static void sen_power_ctrl_imx323p(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + + // set power off sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_IMX335M_)) +static void csi_hw_rst_imx335m(SENSOR_ID sensor_id) +{ + UINT32 reset_pin = S_GPIO_4; + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + gpio_setPin(reset_pin); + Delay_DelayUs(1); +} +static SENSOR_INIT_OBJ sensor_get_obj_imx335m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.interface_info.csi.fp_hw_rst = csi_hw_rst_imx335m; + init_obj.option= SENSOR_OPTION_NONE; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = 2; + init_obj.sen_2_serial_pin_map[3] = 3; + return init_obj; +} +static void sen_power_ctrl_imx335m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + break; + + case POW_CTRL_TURN_OFF: + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_IMX377M_)) +#if 0 +static void csi_hw_rst_imx377cqc(SENSOR_ID sensor_id) +{ + debug_msg("~G csi_hw_rst_imx377cqc \r\n"); + gpio_setDir(S_GPIO_4, GPIO_DIR_OUTPUT); + gpio_clearPin(S_GPIO_4); + Delay_DelayMs(1); + gpio_setPin(S_GPIO_4); + Delay_DelayUs(10); +} +#endif + +static SENSOR_INIT_OBJ sensor_get_obj_imx377m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + //init_obj.interface_info.csi.fp_hw_rst = csi_hw_rst_imx377cqc; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + + // set mclk change enable to notify sensor driver + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = 2; + init_obj.sen_2_serial_pin_map[3] = 3; + return init_obj; +} +static void sen_power_ctrl_imx377m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + + // set power off sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_OV2715M_)) +static SENSOR_INIT_OBJ sensor_get_obj_ov2715m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + + //init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + switch (id) { + case SENSOR_ID_1: + default: + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + break; + + case SENSOR_ID_2: + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C1_1ST; + break; + } + + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_FLIP; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + //init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[0] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[1] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[2] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[3] = SEN_IGNORE; + + switch (id) { + case SENSOR_ID_1: + default: + init_obj.sen_2_serial_pin_map[0] = 0; + break; + + case SENSOR_ID_2: + init_obj.sen_2_serial_pin_map[2] = 0; + break; + } + return init_obj; +} +static void sen_power_ctrl_ov2715m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + + switch (flag) { + case POW_CTRL_TURN_ON: + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id,SEN_CLK_SIEMCLK, ENABLE); + + switch (id) { + case SENSOR_ID_1: + default: + reset_pin = S_GPIO_4; + break; + + case SENSOR_ID_2: + reset_pin = S_GPIO_4; + break; + } + + //Power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id,SEN_CLK_SIEMCLK, DISABLE); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_OV2732M_)) +static SENSOR_INIT_OBJ sensor_get_obj_ov2732m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_FLIP; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[3] = SEN_IGNORE; + return init_obj; +} +static void sen_power_ctrl_ov2732m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + switch (flag) { + case POW_CTRL_TURN_ON: + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id,SEN_CLK_SIEMCLK, ENABLE); + + // set power on sequence + UINT32 reset_pin = S_GPIO_4; + switch (id) { + case SENSOR_ID_1: + default: + reset_pin = S_GPIO_4; + break; + + case SENSOR_ID_2: + reset_pin = S_GPIO_4; + break; + } + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id,SEN_CLK_SIEMCLK, DISABLE); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + + +#if (defined(_CMOS_OV2735M_)) +static SENSOR_INIT_OBJ sensor_get_obj_ov2735m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + + //init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + switch (id) { + case SENSOR_ID_1: + default: + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + break; + + case SENSOR_ID_2: + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C1_1ST; + break; + } + + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_FLIP | SENSOR_OPTION_MIRROR; + + // set mclk change enable to notify sensor driver + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[1] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[2] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[3] = SEN_IGNORE; + + switch (id) { + case SENSOR_ID_1: + default: + init_obj.sen_2_serial_pin_map[0] = 0; + break; + case SENSOR_ID_2: + init_obj.sen_2_serial_pin_map[2] = 0; + break; + } + return init_obj; +} +static void sen_power_ctrl_ov2735m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + switch (flag) { + case POW_CTRL_TURN_ON: + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id,SEN_CLK_SIEMCLK, ENABLE); + + // set power on sequence + UINT32 reset_pin = S_GPIO_4; + switch (id) { + case SENSOR_ID_1: + default: + reset_pin = S_GPIO_4; + break; + + case SENSOR_ID_2: + reset_pin = S_GPIO_4; + break; + } + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + Delay_DelayMs(5); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + gpio_setPin(reset_pin); + Delay_DelayMs(5); + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id,SEN_CLK_SIEMCLK, DISABLE); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_OS02K10M_)) +static SENSOR_INIT_OBJ sensor_get_obj_os02k10m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_NONE; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[3] = SEN_IGNORE; + return init_obj; +} +static void sen_power_ctrl_os02k10m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_OS04B10M_)) +static SENSOR_INIT_OBJ sensor_get_obj_os04b10m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_NONE; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[3] = SEN_IGNORE; + return init_obj; +} +static void sen_power_ctrl_os04b10m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_OS05A10M_)) +static SENSOR_INIT_OBJ sensor_get_obj_os05a10m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_FLIP; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = 2; + init_obj.sen_2_serial_pin_map[3] = 3; + return init_obj; +} +static void sen_power_ctrl_os05a10m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_OS08A10M_)) +static SENSOR_INIT_OBJ sensor_get_obj_os08a10m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_MIRROR; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = 2; + init_obj.sen_2_serial_pin_map[3] = 3; + return init_obj; +} +static void sen_power_ctrl_os08a10m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + //DBG_ERR("MCLK Enable id=%d, flag=%d\r\n", id, flag); + + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_OV4689M_)) +static SENSOR_INIT_OBJ sensor_get_obj_ov4689m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_FLIP; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = 2; + init_obj.sen_2_serial_pin_map[3] = 3; + return init_obj; +} +static void sen_power_ctrl_ov4689m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + switch (flag) { + case POW_CTRL_TURN_ON: + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + // set power on sequence + UINT32 reset_pin = S_GPIO_4; + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_OV4689M_R2A_)) +static SENSOR_INIT_OBJ sensor_get_obj_ov4689m_r2a(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_FLIP; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = 2; + init_obj.sen_2_serial_pin_map[3] = 3; + return init_obj; +} +static void sen_power_ctrl_ov4689m_r2a(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + switch (flag) { + case POW_CTRL_TURN_ON: + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + // set power on sequence + UINT32 reset_pin = S_GPIO_4; + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_OV5658M_)) +static SENSOR_INIT_OBJ sensor_get_obj_ov5658m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_FLIP; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = 2; + init_obj.sen_2_serial_pin_map[3] = 3; + return init_obj; +} +static void sen_power_ctrl_ov5658m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + switch (flag) { + case POW_CTRL_TURN_ON: + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + // set power on sequence + UINT32 reset_pin = S_GPIO_4; + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_AR0237P_)) +static SENSOR_INIT_OBJ sensor_get_obj_ar0237p(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_NONE; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + return init_obj; +} +static void sen_power_ctrl_ar0237p(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + Delay_DelayMs(1); + gpio_clearPin(reset_pin); + Delay_DelayMs(2); + gpio_setPin(reset_pin); + Delay_DelayMs(10); + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_AR0237IRP_)) +static SENSOR_INIT_OBJ sensor_get_obj_ar0237irp(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_NONE; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + return init_obj; +} +static void sen_power_ctrl_ar0237irp(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + + switch (flag) { + case POW_CTRL_TURN_ON: + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + Delay_DelayMs(1); + gpio_clearPin(reset_pin); + Delay_DelayMs(2); + gpio_setPin(reset_pin); + Delay_DelayMs(10); + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_AR0521M_)) +static SENSOR_INIT_OBJ sensor_get_obj_ar0521m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_MIRROR | SENSOR_OPTION_FLIP; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = 2; + init_obj.sen_2_serial_pin_map[3] = 3; + return init_obj; +} +static void sen_power_ctrl_ar0521m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(2); + gpio_setPin(reset_pin); + Delay_DelayMs(2); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + Delay_DelayMs(1); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_AR0330P_)) // for TP-LINK +static SENSOR_INIT_OBJ sensor_get_obj_ar0330p(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C1_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_MIRROR | SENSOR_OPTION_FLIP;; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + return init_obj; +} +static void sen_power_ctrl_ar0330p(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + Delay_DelayMs(1); + gpio_clearPin(reset_pin); + Delay_DelayMs(2); + gpio_setPin(reset_pin); + Delay_DelayMs(10); + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_AR0330M_)) +static SENSOR_INIT_OBJ sensor_get_obj_ar0330m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_MIRROR | SENSOR_OPTION_FLIP; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = 2; + init_obj.sen_2_serial_pin_map[3] = 3; + return init_obj; +} + +static void sen_power_ctrl_ar0330m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_clearPin(reset_pin); + Delay_DelayMs(2); + gpio_setPin(reset_pin); + Delay_DelayMs(10); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + Delay_DelayMs(1); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_HM2140M_)) +static SENSOR_INIT_OBJ sensor_get_obj_hm2140m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_MIRROR | SENSOR_OPTION_FLIP; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[3] = SEN_IGNORE; + return init_obj; +} + +static void sen_power_ctrl_hm2140m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + Delay_DelayMs(1); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_PS5250M_)) +static SENSOR_INIT_OBJ sensor_get_obj_ps5250m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_MIRROR | SENSOR_OPTION_FLIP; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[3] = SEN_IGNORE; + return init_obj; +} + +static void sen_power_ctrl_ps5250m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + + + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + gpio_clearPin(reset_pin); + Delay_DelayMs(1); + gpio_setPin(reset_pin); + Delay_DelayMs(1); + + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + Delay_DelayMs(1); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_F23M_)) +static SENSOR_INIT_OBJ sensor_get_obj_f23m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option = SENSOR_OPTION_NONE; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[3] = SEN_IGNORE; + return init_obj; +} + +static void sen_power_ctrl_f23m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + UINT32 pwdn_pin = S_GPIO_9; + switch (flag) { + case POW_CTRL_TURN_ON: + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_clearPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + //set pwdn to low + gpio_setDir(pwdn_pin, GPIO_DIR_OUTPUT); + gpio_setPin(pwdn_pin); + Delay_DelayMs(2); //>=1ms + gpio_clearPin(pwdn_pin); + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + Delay_DelayMs(2); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_JXK02M_)) +static SENSOR_INIT_OBJ sensor_get_obj_jxk02m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option = SENSOR_OPTION_NONE; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = 2; + init_obj.sen_2_serial_pin_map[3] = 3; + return init_obj; +} + +static void sen_power_ctrl_jxk02m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + UINT32 pwdn_pin = S_GPIO_9; + switch (flag) { + case POW_CTRL_TURN_ON: + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_clearPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + //set pwdn to low + gpio_setDir(pwdn_pin, GPIO_DIR_OUTPUT); + gpio_setPin(pwdn_pin); + Delay_DelayMs(2); //>=1ms + gpio_clearPin(pwdn_pin); + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + Delay_DelayMs(2); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_JXK03M_)) +static SENSOR_INIT_OBJ sensor_get_obj_jxk03m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option = SENSOR_OPTION_NONE; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = 2; + init_obj.sen_2_serial_pin_map[3] = 3; + return init_obj; +} + +static void sen_power_ctrl_jxk03m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + UINT32 pwdn_pin = S_GPIO_9; + switch (flag) { + case POW_CTRL_TURN_ON: + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_clearPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + //set pwdn to low + gpio_setDir(pwdn_pin, GPIO_DIR_OUTPUT); + gpio_setPin(pwdn_pin); + Delay_DelayMs(2); //>=1ms + gpio_clearPin(pwdn_pin); + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + Delay_DelayMs(2); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_SC2232M_)) +static SENSOR_INIT_OBJ sensor_get_obj_sc2232m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + switch (id) { + case SENSOR_ID_1: + default: + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_MCLK; + break; + + case SENSOR_ID_2: + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C1_1ST; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_MCLK2; + break; + } + + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_NONE; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[1] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[2] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[3] = SEN_IGNORE; + + switch (id) { + case SENSOR_ID_1: + default: + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + break; + + case SENSOR_ID_2: + init_obj.sen_2_serial_pin_map[2] = 0; + init_obj.sen_2_serial_pin_map[3] = 1; + break; + } + return init_obj; +} + +static void sen_power_ctrl_sc2232m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + switch (id) { + case SENSOR_ID_1: + default: + reset_pin = S_GPIO_4; + break; + + case SENSOR_ID_2: + reset_pin = S_GPIO_5; + break; + } + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_clearPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + + // set clock information + switch (id) { + case SENSOR_ID_1: + default: + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + break; + case SENSOR_ID_2: + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK2, ENABLE); + break; + } + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + switch (id) { + case SENSOR_ID_1: + default: + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + reset_pin = S_GPIO_4; + break; + + case SENSOR_ID_2: + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK2, ENABLE); + reset_pin = S_GPIO_5; + break; + } + Delay_DelayMs(2); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_SC2315M_)) +static SENSOR_INIT_OBJ sensor_get_obj_sc2315m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_NONE; + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + return init_obj; +} +static void sen_power_ctrl_sc2315m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin);//high + Delay_DelayMs(2); + gpio_clearPin(reset_pin);//Low + Delay_DelayMs(2); + gpio_setPin(reset_pin);//high + Delay_DelayMs(2); + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + Delay_DelayMs(2); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_SC2232P_)) +static SENSOR_INIT_OBJ sensor_get_obj_sc2232p(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST;//SENSOR_I2C1_1ST for TP + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_NONE; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + return init_obj; +} + +static void sen_power_ctrl_sc2232p(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_clearPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + Delay_DelayMs(2); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + + +#if (defined(_CMOS_SC2235P_)) +static SENSOR_INIT_OBJ sensor_get_obj_sc2235p(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST;//for TP ; EVB SENSOR_I2C2_1ST + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_MIRROR | SENSOR_OPTION_FLIP;//SENSOR_OPTION_NONE; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = 2; + init_obj.sen_2_serial_pin_map[3] = 3; + return init_obj; +} +static void sen_power_ctrl_sc2235p(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + switch (flag) { + case POW_CTRL_TURN_ON: + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + //DBG_ERR("MCLK Enable id=%d, flag=%d\r\n", id, flag); + + // set power on sequence + UINT32 reset_pin = S_GPIO_4; + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + //gpio_clearPin(reset_pin);//Low + //Delay_DelayMs(1); + gpio_setPin(reset_pin);//high + Delay_DelayMs(1); + gpio_clearPin(reset_pin);//Low + Delay_DelayMs(1); + gpio_setPin(reset_pin);//high + Delay_DelayMs(1); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_SC2310M_)) +static SENSOR_INIT_OBJ sensor_get_obj_sc2310m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST;//SENSOR_I2C1_1ST for TP + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_MIRROR | SENSOR_OPTION_FLIP; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[3] = SEN_IGNORE; + return init_obj; +} +static void sen_power_ctrl_sc2310m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_clearPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + Delay_DelayMs(2); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_SC2315P_)) +static SENSOR_INIT_OBJ sensor_get_obj_sc2315p(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST;//SENSOR_I2C1_1ST for TP + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_NONE; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + return init_obj; +} +static void sen_power_ctrl_sc2315p(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin);//high + Delay_DelayMs(2); + gpio_clearPin(reset_pin);//Low + Delay_DelayMs(2); + gpio_setPin(reset_pin);//high + Delay_DelayMs(2); + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + Delay_DelayMs(2); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_SC3235M_)) +static SENSOR_INIT_OBJ sensor_get_obj_sc3235m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_NONE; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[3] = SEN_IGNORE; + return init_obj; +} + +static void sen_power_ctrl_sc3235m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_clearPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + Delay_DelayMs(2); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_SC4210M_)) +static SENSOR_INIT_OBJ sensor_get_obj_sc4210m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_NONE; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = 2; + init_obj.sen_2_serial_pin_map[3] = 3; + return init_obj; +} + +static void sen_power_ctrl_sc4210m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_clearPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + Delay_DelayMs(2); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_SC4236M_)) +static SENSOR_INIT_OBJ sensor_get_obj_sc4236m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_MIRROR | SENSOR_OPTION_FLIP; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[3] = SEN_IGNORE; + return init_obj; +} + +static void sen_power_ctrl_sc4236m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_clearPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + Delay_DelayMs(2); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_SC4236M_24M_)) +static SENSOR_INIT_OBJ sensor_get_obj_sc4236m_24m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_MIRROR | SENSOR_OPTION_FLIP; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[3] = SEN_IGNORE; + return init_obj; +} + +static void sen_power_ctrl_sc4236m_24m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_clearPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + Delay_DelayMs(2); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_SC4236P_)) +static SENSOR_INIT_OBJ sensor_get_obj_sc4236p(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_NONE; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + return init_obj; +} + +static void sen_power_ctrl_sc4236p(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set power on sequence + gpio_setDir(reset_pin,GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_clearPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + Delay_DelayMs(2); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_SC4238M_)) +static SENSOR_INIT_OBJ sensor_get_obj_sc4238m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_NONE; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[3] = SEN_IGNORE; + return init_obj; +} + +static void sen_power_ctrl_sc4238m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_clearPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + Delay_DelayMs(2); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_SC4335M_)) +static SENSOR_INIT_OBJ sensor_get_obj_sc4335m(SENSOR_ID id) +{ + SENSOR_INIT_OBJ init_obj = {0}; + + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_NONE; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[3] = SEN_IGNORE; + + return init_obj; +} + +static void sen_power_ctrl_sc4335m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + + switch (flag) { + case POW_CTRL_TURN_ON: + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_clearPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_setPin(reset_pin); + Delay_DelayMs(3); //>=2ms + + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + Delay_DelayMs(2); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_SC5035M_)) +static SENSOR_INIT_OBJ sensor_get_obj_sc5035m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_NONE;//SENSOR_OPTION_MIRROR | SENSOR_OPTION_FLIP; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[3] = SEN_IGNORE; + return init_obj; +} + +static void sen_power_ctrl_sc5035m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_clearPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + Delay_DelayMs(2); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_SC5235M_)) +static SENSOR_INIT_OBJ sensor_get_obj_sc5235m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option = SENSOR_OPTION_MIRROR | SENSOR_OPTION_FLIP; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[3] = SEN_IGNORE; + return init_obj; +} + +static void sen_power_ctrl_sc5235m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_clearPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + Delay_DelayMs(2); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_SC5236M_)) +static SENSOR_INIT_OBJ sensor_get_obj_sc5236m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option = SENSOR_OPTION_NONE;//SENSOR_OPTION_MIRROR | SENSOR_OPTION_FLIP; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[3] = SEN_IGNORE; + return init_obj; +} + +static void sen_power_ctrl_sc5236m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_clearPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + Delay_DelayMs(2); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_SC5238M_)) +static SENSOR_INIT_OBJ sensor_get_obj_sc5238m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option = SENSOR_OPTION_MIRROR | SENSOR_OPTION_FLIP; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[3] = SEN_IGNORE; + return init_obj; +} + +static void sen_power_ctrl_sc5238m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_clearPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + Delay_DelayMs(2); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_SC5335M_)) +static SENSOR_INIT_OBJ sensor_get_obj_sc5335m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option = SENSOR_OPTION_MIRROR | SENSOR_OPTION_FLIP; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[3] = SEN_IGNORE; + return init_obj; +} + +static void sen_power_ctrl_sc5335m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_clearPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + Delay_DelayMs(2); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_GC4623M_)) +static SENSOR_INIT_OBJ sensor_get_obj_gc4623m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option = SENSOR_OPTION_MIRROR | SENSOR_OPTION_FLIP; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[3] = SEN_IGNORE; + return init_obj; +} + +static void sen_power_ctrl_gc4623m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_clearPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + Delay_DelayMs(2); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_GC2053M_)) +static SENSOR_INIT_OBJ sensor_get_obj_gc2053m(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option = SENSOR_OPTION_MIRROR | SENSOR_OPTION_FLIP; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + // set sensor interface pin map (LVDS/CSI/...) + init_obj.sen_2_serial_pin_map[0] = 0; + init_obj.sen_2_serial_pin_map[1] = 1; + init_obj.sen_2_serial_pin_map[2] = SEN_IGNORE; + init_obj.sen_2_serial_pin_map[3] = SEN_IGNORE; + return init_obj; +} + +static void sen_power_ctrl_gc2053m(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + UINT32 reset_pin = S_GPIO_4; + switch (flag) { + case POW_CTRL_TURN_ON: + // set power on sequence + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_clearPin(reset_pin); + Delay_DelayMs(2); //>=1ms + gpio_setPin(reset_pin); + Delay_DelayMs(2); //>=1ms + + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + Delay_DelayMs(2); + gpio_clearPin(reset_pin); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_GC2053P_)) +static SENSOR_INIT_OBJ sensor_get_obj_gc2053p(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C2_1ST;//for TP ; EVB SENSOR_I2C2_1ST + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option= SENSOR_OPTION_MIRROR | SENSOR_OPTION_FLIP; + + // set mclk change enable to notify sensor driver + // init_obj.chg_mclk_en = ENABLE; + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_DFT; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + return init_obj; +} +static void sen_power_ctrl_gc2053p(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + switch (flag) { + case POW_CTRL_TURN_ON: + // set clock information + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + //DBG_ERR("MCLK Enable id=%d, flag=%d\r\n", id, flag); + + // set power on sequence + UINT32 reset_pin = S_GPIO_4; + gpio_setDir(reset_pin, GPIO_DIR_OUTPUT); + //gpio_clearPin(reset_pin);//Low + //Delay_DelayMs(1); + gpio_setPin(reset_pin);//high + Delay_DelayMs(1); + gpio_clearPin(reset_pin);//Low + Delay_DelayMs(1); + gpio_setPin(reset_pin);//high + Delay_DelayMs(1); + + break; + + case POW_CTRL_TURN_OFF: + // set power off sequence + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} + +#endif + + +#if (defined(_CMOS_TP2827P_)) +static SENSOR_INIT_OBJ sensor_get_obj_tp2827p(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + + return init_obj; +} + +static void sen_power_ctrl_tp2827p(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + switch (flag) { + case POW_CTRL_TURN_ON: + break; + + case POW_CTRL_TURN_OFF: + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +#if (defined(_CMOS_NVP6124B_)) +static SENSOR_INIT_OBJ sensor_get_obj_nvp6124b(SENSOR_ID id) +{ + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + + init_obj.cmd_info.cmd_type = SENSOR_CMD_I2C; + init_obj.cmd_info.info.i2c.i2c = SENSOR_I2C3_1ST; + init_obj.cmd_info.info.i2c.w_addr_sel = SEN_I2C_W_ADDR_DFT; + init_obj.sen_map_if = SENSOR_MAP_IF_DEFAULT; + init_obj.option = SENSOR_OPTION_USER; + return init_obj; +} + +static void sen_power_ctrl_nvp6124b(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + switch (flag) { + case POW_CTRL_TURN_ON: + // reset pin + gpio_setDir(P_GPIO_15, GPIO_DIR_OUTPUT); + gpio_clearPin(P_GPIO_15); + Delay_DelayMs(20); + gpio_setPin(P_GPIO_15); + Delay_DelayMs(20); + break; + + case POW_CTRL_TURN_OFF: + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +static BOOL sen_det_plug_in_nvp6124b(SENSOR_ID id) +{ + BOOL rt = E_OK; + SENSOR_HANDLE sen_handle = {0}; + + if (!sensor_is_open(id)) { + DBG_IND("sensor is not open\r\n"); + drv_sensor_power_turn_on(id); + if (drv_sensor_init(id, &sen_handle) == TRUE) { + if (sen_handle.drv_tab == NULL) { + DBG_ERR("Error drv_tab NULL\r\n"); + return E_SYS; + } else { + rt = sensor_open(id, &sen_handle); + } + } else { + DBG_ERR("Error sensor_init fail\r\n"); + return E_SYS; + } + } + + + if (sensor_get_info(id, SEN_GET_DET_PLUG, &rt) != E_OK) { + DBG_ERR("get sensor plugin fail\r\n"); + return FALSE; + } + + return rt; +} + +#endif + +#if (defined(_CMOS_SIEPATGEN_)) +static SENSOR_INIT_OBJ sensor_get_obj_siepatgen(SENSOR_ID id) +{ + + // set sensor command interface info (Vx1/SIF/I2C/IO/...) + SENSOR_INIT_OBJ init_obj = {0}; + + init_obj.sie_mclk_info.mclk_src = SEN_SIEMCLK_SRC_MCLK; + init_obj.sie_mclk_info.chg_mclk_en = ENABLE; + + return init_obj; +} + +static void sen_power_ctrl_siepatgen(SENSOR_ID id, POW_CTRL_FLAG flag) +{ + switch (flag) { + case POW_CTRL_TURN_ON: + + if (id == SENSOR_ID_1) { + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, ENABLE); + } else { + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK2, ENABLE); + } + + break; + + case POW_CTRL_TURN_OFF: + if (id == SENSOR_ID_1) { + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK, DISABLE); + } else { + sensor_if_get_pll_ctrl_obj()->set_clk_en(id, SEN_CLK_SIEMCLK2, DISABLE); + } + break; + + case POW_CTRL_SAVE_ON: + break; + + case POW_CTRL_SAVE_OFF: + break; + + default: + DBG_ERR("SenPowerCtrl fail (%d)\r\n", flag); + break; + } +} +#endif + +static SEN_MAP_INFO sensor_map_tab[SENSOR_ID_MAX_NUM + 1] = { +#if (defined(_CMOS_AR0237L_)) + {"CMOS_AR0237L", sensor_get_drv_tab_ar0237l, sensor_get_obj_ar0237l, sen_power_ctrl_ar0237l, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_IMX291M_)) + {"CMOS_IMX291M", sensor_get_drv_tab_imx291m, sensor_get_obj_imx291m, sen_power_ctrl_imx291m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_IMX290M_)) + {"CMOS_IMX290M", sensor_get_drv_tab_imx290m, sensor_get_obj_imx290m, sen_power_ctrl_imx290m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_IMX307M_)) + {"CMOS_IMX307M", sensor_get_drv_tab_imx307m, sensor_get_obj_imx307m, sen_power_ctrl_imx307m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_IMX307L_)) + {"CMOS_IMX307L", sensor_get_drv_tab_imx307l, sensor_get_obj_imx307l, sen_power_ctrl_imx307l, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_IMX317M_)) + {"CMOS_IMX317M", sensor_get_drv_tab_imx317m, sensor_get_obj_imx317m, sen_power_ctrl_imx317m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_IMX323P_)) + {"CMOS_IMX323P", sensor_get_drv_tab_imx323p, sensor_get_obj_imx323p, sen_power_ctrl_imx323p, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_IMX335M_)) + {"CMOS_IMX335M", sensor_get_drv_tab_imx335m, sensor_get_obj_imx335m, sen_power_ctrl_imx335m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_IMX377M_)) + {"CMOS_IMX377M", sensor_get_drv_tab_imx377m, sensor_get_obj_imx377m, sen_power_ctrl_imx377m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_OV2715M_)) + {"CMOS_OV2715M", sensor_get_drv_tab_ov2715m, sensor_get_obj_ov2715m, sen_power_ctrl_ov2715m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_OV2732M_)) + {"CMOS_OV2732M", sensor_get_drv_tab_ov2732m, sensor_get_obj_ov2732m, sen_power_ctrl_ov2732m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_OV2735M_)) + {"CMOS_OV2735M", sensor_get_drv_tab_ov2735m, sensor_get_obj_ov2735m, sen_power_ctrl_ov2735m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_OS02K10M_)) + {"CMOS_OS02K10M", sensor_get_drv_tab_os02k10m, sensor_get_obj_os02k10m, sen_power_ctrl_os02k10m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_OS04B10M_)) + {"CMOS_OS04B10M", sensor_get_drv_tab_os04b10m, sensor_get_obj_os04b10m, sen_power_ctrl_os04b10m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_OS05A10M_)) + {"CMOS_OS05A10M", sensor_get_drv_tab_os05a10m, sensor_get_obj_os05a10m, sen_power_ctrl_os05a10m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_OS08A10M_)) + {"CMOS_OS08A10M", sensor_get_drv_tab_os08a10m, sensor_get_obj_os08a10m, sen_power_ctrl_os08a10m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_OV4689M_)) + {"CMOS_OV4689M", sensor_get_drv_tab_ov4689m, sensor_get_obj_ov4689m, sen_power_ctrl_ov4689m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_OV4689M_R2A_)) + {"CMOS_OV4689M_R2A", sensor_get_drv_tab_ov4689m_r2a, sensor_get_obj_ov4689m_r2a, sen_power_ctrl_ov4689m_r2a, NULL, NULL}, +#endif +#if (defined(_CMOS_OV5658M_)) + {"CMOS_OV5658M", sensor_get_drv_tab_ov5658m, sensor_get_obj_ov5658m, sen_power_ctrl_ov5658m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_AR0237P_)) + {"CMOS_AR0237P", sensor_get_drv_tab_ar0237p, sensor_get_obj_ar0237p, sen_power_ctrl_ar0237p, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_AR0237IRP_)) + {"CMOS_AR0237IRP", sensor_get_drv_tab_ar0237irp, sensor_get_obj_ar0237irp, sen_power_ctrl_ar0237irp, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_AR0330M_)) + {"CMOS_AR0330M", sensor_get_drv_tab_ar0330m, sensor_get_obj_ar0330m, sen_power_ctrl_ar0330m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_AR0330P_)) + {"CMOS_AR0330P", sensor_get_drv_tab_ar0330p, sensor_get_obj_ar0330p, sen_power_ctrl_ar0330p, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_AR0521M_)) + {"CMOS_AR0521M", sensor_get_drv_tab_ar0521m, sensor_get_obj_ar0521m, sen_power_ctrl_ar0521m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_HM2140M_)) + {"CMOS_HM2140M", sensor_get_drv_tab_hm2140m, sensor_get_obj_hm2140m, sen_power_ctrl_hm2140m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_PS5250M_)) + {"CMOS_PS5250M", sensor_get_drv_tab_ps5250m, sensor_get_obj_ps5250m, sen_power_ctrl_ps5250m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_F23M_)) + {"CMOS_F23M", sensor_get_drv_tab_f23m, sensor_get_obj_f23m, sen_power_ctrl_f23m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_JXK02M_)) + {"CMOS_JXK02M", sensor_get_drv_tab_jxk02m, sensor_get_obj_jxk02m, sen_power_ctrl_jxk02m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_JXK03M_)) + {"CMOS_JXK03M", sensor_get_drv_tab_jxk03m, sensor_get_obj_jxk03m, sen_power_ctrl_jxk03m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_SC2232M_)) + {"CMOS_SC2232M", sensor_get_drv_tab_sc2232m, sensor_get_obj_sc2232m, sen_power_ctrl_sc2232m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_SC2232P_)) + {"CMOS_SC2232P", sensor_get_drv_tab_sc2232p, sensor_get_obj_sc2232p, sen_power_ctrl_sc2232p, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_SC2235P_)) + {"CMOS_SC2235P", sensor_get_drv_tab_sc2235p, sensor_get_obj_sc2235p, sen_power_ctrl_sc2235p, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_SC2310M_)) + {"CMOS_SC2310M", sensor_get_drv_tab_sc2310m, sensor_get_obj_sc2310m, sen_power_ctrl_sc2310m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_SC2315M_)) + {"CMOS_SC2315M", sensor_get_drv_tab_sc2315m, sensor_get_obj_sc2315m, sen_power_ctrl_sc2315m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_SC2315P_)) + {"CMOS_SC2315P", sensor_get_drv_tab_sc2315p, sensor_get_obj_sc2315p, sen_power_ctrl_sc2315p, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_SC3235M_)) + {"CMOS_SC3235M", sensor_get_drv_tab_sc3235m, sensor_get_obj_sc3235m, sen_power_ctrl_sc3235m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_SC4210M_)) + {"CMOS_SC4210M", sensor_get_drv_tab_sc4210m, sensor_get_obj_sc4210m, sen_power_ctrl_sc4210m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_SC4236M_)) + {"CMOS_SC4236M", sensor_get_drv_tab_sc4236m, sensor_get_obj_sc4236m, sen_power_ctrl_sc4236m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_SC4236M_24M_)) + {"CMOS_SC4236M_24M", sensor_get_drv_tab_sc4236m_24m, sensor_get_obj_sc4236m_24m, sen_power_ctrl_sc4236m_24m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_SC4236P_)) + {"CMOS_SC4236P", sensor_get_drv_tab_sc4236p, sensor_get_obj_sc4236p, sen_power_ctrl_sc4236p, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_SC4238M_)) + {"CMOS_SC4238M", sensor_get_drv_tab_sc4238m, sensor_get_obj_sc4238m, sen_power_ctrl_sc4238m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_SC4335M_)) + {"CMOS_SC4335M", sensor_get_drv_tab_sc4335m, sensor_get_obj_sc4335m, sen_power_ctrl_sc4335m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_SC5035M_)) + {"CMOS_SC5035M", sensor_get_drv_tab_sc5035m, sensor_get_obj_sc5035m, sen_power_ctrl_sc5035m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_SC5235M_)) + {"CMOS_SC5235M", sensor_get_drv_tab_sc5235m, sensor_get_obj_sc5235m, sen_power_ctrl_sc5235m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_SC5236M_)) + {"CMOS_SC5236M", sensor_get_drv_tab_sc5236m, sensor_get_obj_sc5236m, sen_power_ctrl_sc5236m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_SC5238M_)) + {"CMOS_SC5238M", sensor_get_drv_tab_sc5238m, sensor_get_obj_sc5238m, sen_power_ctrl_sc5238m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_SC5335M_)) + {"CMOS_SC5335M", sensor_get_drv_tab_sc5335m, sensor_get_obj_sc5335m, sen_power_ctrl_sc5335m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_GC4623M_)) + {"CMOS_GC4623M", sensor_get_drv_tab_gc4623m, sensor_get_obj_gc4623m, sen_power_ctrl_gc4623m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_GC2053M_)) + {"CMOS_GC2053M", sensor_get_drv_tab_gc2053m, sensor_get_obj_gc2053m, sen_power_ctrl_gc2053m, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_GC2053P_)) + {"CMOS_GC2053P", sensor_get_drv_tab_gc2053p, sensor_get_obj_gc2053p, sen_power_ctrl_gc2053p, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_SIEPATGEN_)) + {"CMOS_SIEPATGEN", sensor_get_drv_tab_siepatgen, sensor_get_obj_siepatgen, sen_power_ctrl_siepatgen, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_TP2827P_)) + {"CMOS_TP2827P", sensor_get_drv_tab_tp2827p, sensor_get_obj_tp2827p, sen_power_ctrl_tp2827p, NULL, NULL, NULL}, +#endif +#if (defined(_CMOS_NVP6124B_)) + {"CMOS_NVP6124B", sensor_get_drv_tab_nvp6124b, sensor_get_obj_nvp6124b, sen_power_ctrl_nvp6124b, sen_det_plug_in_nvp6124b, NULL, NULL}, +#endif + {"END", NULL, NULL, NULL, NULL, NULL, NULL}, +}; + + +#if 0 +#endif +/************************************************************************/ +/* common function */ +/************************************************************************/ +static SEN_MAP_INFO *drv_sensor_search(CHAR *search_name) +{ + UINT32 i; + SEN_MAP_INFO *info; + + DBG_IND("search drv name = %s\r\n", search_name); + info = sensor_map_tab; + + for (i = 0; (strcmp(info[i].name, "END") != 0); i ++) { + if (strcmp(info[i].name, search_name) == 0) { + return &info[i]; + } + } + return NULL; +} + +BOOL drv_sensor_repalce_drv(SENSOR_ID id, CHAR *repalce_name) +{ + if (id >= SENSOR_ID_MAX_NUM) { + DBG_ERR("id(%d) overflow\r\n"); + return FALSE; + } + DBG_IND("id = %d, repalce drv name = %s\r\n", id, repalce_name); + + if (drv_sensor_search(repalce_name) == NULL) { + DBG_ERR("search sensor driver fail (%s)\r\n", repalce_name); + return FALSE; + } + + strncpy(&sensor_name[id][0], repalce_name, sizeof(sensor_name[id])); + + return TRUE; +} + + +SENSOR_MULTI_ID sensor_gp_map[SENSOR_ID_MAX_NUM] = {0}, sensor_subgp_map[SENSOR_ID_MAX_NUM] = {0}; +ER drv_sensor_group_cfg(SENSOR_MULTI_ID* sensor_gp, SENSOR_MULTI_ID* sensor_subgp) +{ + UINT32 cnt, chk_cnt; + + for (cnt = 0; cnt < SENSOR_ID_MAX_NUM; cnt++) { + if (sensor_gp == SENSOR_MULTI_ID_NONE) { + continue; + } + for (chk_cnt = 0; chk_cnt < SENSOR_ID_MAX_NUM; chk_cnt++) { + if (sensor_chk_multiid(chk_cnt, sensor_gp[cnt])) { + sensor_gp_map[chk_cnt] |= sensor_gp[cnt]; + } + } + } + for (cnt = 0; cnt < SENSOR_ID_MAX_NUM; cnt++) { + if (sensor_subgp == SENSOR_MULTI_ID_NONE) { + continue; + } + for (chk_cnt = 0; chk_cnt < SENSOR_ID_MAX_NUM; chk_cnt++) { + if (sensor_chk_multiid(chk_cnt, sensor_subgp[cnt])) { + sensor_subgp_map[chk_cnt] |= sensor_subgp[cnt]; + } + } + } + + return E_OK; +} + +BOOL drv_sensor_first_cfg(void) +{ + UINT32 cnt_id; + SEN_MAP_INFO *sen_map_info; + ER rt = E_OK; + + for (cnt_id = 0; cnt_id < SENSOR_ID_MAX_NUM; cnt_id++) { + if (sensor_debug_item[cnt_id] & SENSOR_DEBUG_MODELEXT) { + debug_msg("^C%s\r\n", __func__); + } + } + + // Check that no sensor is open + for (cnt_id = 0; cnt_id < SENSOR_ID_MAX_NUM; cnt_id++) { + if (sensor_is_open(cnt_id)) { + DBG_ERR("sensor id %d is open\r\n", cnt_id); + return FALSE; + } + } + + // set group info. + sensor_set_group_info(sensor_gp_map, sensor_subgp_map); + + // set mclk info for SIE MCLK + for (cnt_id = 0; cnt_id < SENSOR_ID_MAX_NUM; cnt_id++) { + sen_map_info = drv_sensor_search(sensor_name[cnt_id]); + + if ((strcmp(sensor_name[cnt_id], "CMOS_OFF") != 0) && (sen_map_info != NULL)) { + rt = sensor_cfg_sie_mclk(cnt_id, sen_map_info->drv_obj(cnt_id), sen_map_info->drv_tab()); + if (rt != E_OK) { + DBG_ERR("id %d sensor_cfg_sie_mclk error %d\r\n", cnt_id, rt); + } + rt = sensor_cfg_sie_max_clk(cnt_id, sen_map_info->drv_obj(cnt_id), sen_map_info->drv_tab()); + if (rt != E_OK) { + DBG_ERR("id %d sensor_cfg_sie_clk error %d\r\n", cnt_id, rt); + } + } + } + + // set pll clk + rt = sensor_cfg_pll_clk(); + if (rt != E_OK) { + DBG_ERR("sensor_cfg_pll_clk %d\r\n", rt); + } + + return FALSE; +} + +BOOL drv_sensor_init(SENSOR_ID id, SENSOR_HANDLE *handle) +{ + SEN_MAP_INFO *sensor_info = drv_sensor_search(sensor_name[id]); + + if (sensor_debug_item[id] & SENSOR_DEBUG_MODELEXT) { + debug_msg("^C%s id %d\r\n", __func__, id); + } + + if (sensor_info == NULL) { + DBG_ERR("driver get fail\r\n"); + return FALSE; + } + + if ((sensor_info->drv_tab == NULL) || (sensor_info->drv_obj == NULL)) { + DBG_ERR("fp NULL fail\r\n"); + return FALSE; + } + + if (handle != NULL) { + handle->drv_tab = sensor_info->drv_tab(); + handle->ini_obj = sensor_info->drv_obj(id); + if (handle->drv_tab == NULL) { + DBG_ERR("input parame error 0x%.8x\r\n", handle->drv_tab); + } else { + return TRUE; + } + } else { + DBG_ERR("input parame error 0x%.8x\r\n", handle); + } + + return FALSE; +} + +void drv_sensor_power_turn_on(SENSOR_ID id) +{ + SEN_MAP_INFO *sensor_info = drv_sensor_search(sensor_name[id]); + + if (sensor_debug_item[id] & SENSOR_DEBUG_MODELEXT) { + debug_msg("^C%s id %d\r\n", __func__, id); + } + + if (sensor_info == NULL) { + DBG_ERR("driver get fail\r\n"); + return; + } + + if (sensor_info->pow_ctrl == NULL) { + DBG_IND("driver NULL\r\n"); + return; + } + + if (sensor_chk_power_on(id)) { + sensor_info->pow_ctrl(id, POW_CTRL_TURN_ON); + } +} + +void drv_sensor_power_turn_off(SENSOR_ID id) +{ + SEN_MAP_INFO *sensor_info = drv_sensor_search(sensor_name[id]); + + if (sensor_debug_item[id] & SENSOR_DEBUG_MODELEXT) { + debug_msg("^C%s id %d\r\n", __func__, id); + } + + if (sensor_info == NULL) { + DBG_ERR("driver get fail\r\n"); + return; + } + + if (sensor_info->pow_ctrl == NULL) { + DBG_IND("driver NULL\r\n"); + return; + } + + if (sensor_chk_power_off(id)) { + sensor_info->pow_ctrl(id, POW_CTRL_TURN_OFF); + } +} + +void drv_sensor_power_save_on(SENSOR_ID id) +{ + SEN_MAP_INFO *sensor_info = drv_sensor_search(sensor_name[id]); + + if (sensor_debug_item[id] & SENSOR_DEBUG_MODELEXT) { + debug_msg("^C%s id %d\r\n", __func__, id); + } + + if (sensor_info == NULL) { + DBG_ERR("driver get fail\r\n"); + return; + } + + if (sensor_info->pow_ctrl == NULL) { + DBG_IND("driver NULL\r\n"); + return; + } + + if (sensor_chk_power_save_on(id)) { + sensor_info->pow_ctrl(id, POW_CTRL_SAVE_ON); + } +} + +void drv_sensor_power_save_off(SENSOR_ID id) +{ + SEN_MAP_INFO *sensor_info = drv_sensor_search(sensor_name[id]); + + if (sensor_debug_item[id] & SENSOR_DEBUG_MODELEXT) { + debug_msg("^C%s id %d\r\n", __func__, id); + } + + if (sensor_info == NULL) { + DBG_ERR("driver get fail\r\n"); + return; + } + + if (sensor_info->pow_ctrl == NULL) { + DBG_IND("driver NULL\r\n"); + return; + } + + if (sensor_chk_power_save_off(id)) { + sensor_info->pow_ctrl(id, POW_CTRL_SAVE_OFF); + } +} + +BOOL drv_sensor_det_plug_in(SENSOR_ID id) +{ + SEN_MAP_INFO *sensor_info = drv_sensor_search(sensor_name[id]); + + if (sensor_debug_item[id] & SENSOR_DEBUG_MODELEXT) { + debug_msg("^C%s id %d\r\n", __func__, id); + } + + if (sensor_info == NULL) { + DBG_ERR("driver get fail\r\n"); + return FALSE; + } + + if (sensor_info->det_plug_in == NULL) { + DBG_IND("driver NULL\r\n"); + return FALSE; + } + + return sensor_info->det_plug_in(id); +} + +BOOL drv_sensor_plug_in_cb(SENSOR_ID id) +{ + SEN_MAP_INFO *sensor_info = drv_sensor_search(sensor_name[id]); + + if (sensor_debug_item[id] & SENSOR_DEBUG_MODELEXT) { + debug_msg("^C%s id %d\r\n", __func__, id); + } + + if (sensor_info == NULL) { + DBG_ERR("driver get fail\r\n"); + return FALSE; + } + + if (sensor_info->plug_in_cb == NULL) { + DBG_IND("driver NULL\r\n"); + return FALSE; + } + + return sensor_info->plug_in_cb(id); +} + +SEN_PLUG_INFO drv_sensor_det_plug_info(SENSOR_ID id) +{ + SEN_MAP_INFO *sen_map_info = drv_sensor_search(sensor_name[id]); + SEN_PLUG_INFO plug_info; + + plug_info.resolution.w = 1920; + plug_info.resolution.h = 1080; + plug_info.fps = 30; + + if (sensor_debug_item[id] & SENSOR_DEBUG_MODELEXT) { + debug_msg("^C%s id %d\r\n", __func__, id); + } + + if (sen_map_info == NULL) { + DBG_ERR("driver get fail\r\n"); + return plug_info; + } + + if (sen_map_info->det_plug_info == NULL) { + DBG_IND("driver NULL\r\n"); + return plug_info; + } + + return sen_map_info->det_plug_info(id); +} + diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCfg.c b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCfg.c new file mode 100755 index 000000000..ad21fa240 --- /dev/null +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCfg.c @@ -0,0 +1,197 @@ +#include "kwrap/type.h" +#include "DrvExt.h" +#include "Dx.h" +#include "DxCommon.h" +#include "DxCfg.h" +#if defined(_MCU_ENABLE_) +#include "MCUCtrl.h" +#include "MCU2Ctrl.h" +#endif + +/////////////////////////////////////////////////////////////////////////////// +#define __MODULE__ DxDrv +#define __DBGLVL__ 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER +#define __DBGFLT__ "*" //*=All, [mark]=CustomClass +#include +/////////////////////////////////////////////////////////////////////////////// + +//IO +/* +[PinmuxCfg.c] +pinmux + +[GpioMapping.c] +cgpio x32 (Storage) +pgpio x64 (Peripheral) +sgpio x30 (SENSOR) +lgpio x28 (LCD) +dgpio x9 (Dedicated) +pwm x20 +pwm_ccnt x3 + +[VoltageDet.c] +adc x8 + +[SerialComm.c] +i2c x2 x2 +sif x1 x6 +csi x2 x4 +lvds x1 x10 +spi x3 +uart x2 +*/ + + +extern DX_OBJECT gDevLCD; +extern DX_OBJECT gDevTV; +#if _TODO +extern DX_OBJECT gDevLCD2; +extern DX_OBJECT gDevHDMI; +#endif +extern DX_OBJECT gDevEmbMem0; +extern DX_OBJECT gDevEmbMem1; +extern DX_OBJECT gDevEmbMem2; +extern DX_OBJECT gDevEmbMem3; +extern DX_OBJECT gDevEmbMem4; +extern DX_OBJECT gDevEmbMem5; +extern DX_OBJECT gDevEmbMem6; +extern DX_OBJECT gDevEmbMem7; +extern DX_OBJECT gDevEmbMem8; +extern DX_OBJECT gDevCARD1; +extern DX_OBJECT gDevCARD3; +extern DX_OBJECT gDevUSB; +extern DX_OBJECT gDevSnd; +extern DX_OBJECT gDevPowerBATT; +extern DX_OBJECT gDevPowerDC; +extern DX_OBJECT gDevLED; + + +DX_HANDLE Dx_GetObject(UINT32 DxClassType) // Query device object +{ + UINT32 hDevice = 0; + + switch (DxClassType & DX_CLASS_MASK) { + + //external device + case DX_CLASS_DISPLAY_EXT: + #if !defined(_Disp_VIRTUAL_LCD1_OFF_) + if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_LCD) { + hDevice = (UINT32)(&gDevLCD); + } + #endif + break; + case DX_CLASS_AUDIO_EXT: + #if (defined(_AUDIO_ON_)) + hDevice = (UINT32)(&gDevSnd); + #endif + break; + case DX_CLASS_SENSOR_EXT: + break; + case DX_CLASS_STORAGE_EXT: + #if (!defined(_EMBMEM_NONE_)) && (!defined(_EMBMEM_UITRON_OFF_)) + if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_EMBMEM0) { + hDevice = (UINT32)(&gDevEmbMem0); + } else if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_EMBMEM1) { + hDevice = (UINT32)(&gDevEmbMem1); + } else if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_EMBMEM2) { + hDevice = (UINT32)(&gDevEmbMem2); + } else if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_EMBMEM3) { + hDevice = (UINT32)(&gDevEmbMem3); + } else if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_EMBMEM4) { + hDevice = (UINT32)(&gDevEmbMem4); + } else if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_EMBMEM5) { + hDevice = (UINT32)(&gDevEmbMem5); + } else if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_EMBMEM6) { + hDevice = (UINT32)(&gDevEmbMem6); + } else if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_EMBMEM7) { + hDevice = (UINT32)(&gDevEmbMem7); + } else if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_EMBMEM8) { + hDevice = (UINT32)(&gDevEmbMem8); + } + #endif + #if !defined(_CARD1_NONE_) + if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_CARD1) { + hDevice = (UINT32)(&gDevCARD1); + } + #endif + #if !defined(_CARD3_NONE_) + if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_CARD3) { + hDevice = (UINT32)(&gDevCARD3); + } + #endif + break; + case DX_CLASS_USB_EXT: + hDevice = (UINT32)(&gDevUSB); + break; + case DX_CLASS_POWER_EXT: + #if defined(_POWER_BATT_) + hDevice = (UINT32)(&gDevPowerBATT); + #elif defined(_POWER_DC_) + hDevice = (UINT32)(&gDevPowerDC); + #else + hDevice = 0; + DBG_ERR("Require a POWER EXT device!\r\n"); + #endif + break; + case DX_CLASS_INPUT_EXT: + break; + case DX_CLASS_STATUS_EXT: + if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_OUTLED) { +#if (defined(_MODEL_IPCAM1_EVB_) || defined(_MODEL_IPCAM2_EVB_)) +#elif (defined(_MODEL_DVCAM1_EVB_) || defined(_MODEL_DVCAM2_EVB_)) + hDevice = (UINT32)(&gDevLED); +#endif + } + break; + } + + if (hDevice == 0) { + DBG_ERR("[Dx] GetObject %08x failed\r\n", DxClassType); + } + return (DX_HANDLE)hDevice; +} + +UINT8 *Dx_GetModelExtCfg(MODELEXT_TYPE type, MODELEXT_HEADER **header) +{ +#if _TODO + UINT8 *p_modelext = NULL; +#if defined(_MODELEXT_BUILT_IN_ON_) +#define LABEL_NAME(_name_) _name_ + extern char LABEL_NAME(_section_modelext_info_addr)[]; + extern char LABEL_NAME(_section_modelext_info_size)[]; + static BOOL bInit = FALSE; + if (!bInit) { + MODELEXT_HEADER *header; + MODELEXT_INFO *pData; + pData = (MODELEXT_INFO *)modelext_get_cfg((unsigned char *)_section_modelext_info_addr, MODELEXT_TYPE_INFO, &header); + if (pData == NULL) { + DBG_FATAL("MODELEXT_INFO is null, call by = 0x%08X\r\n", __CALL__ - 8); + return NULL; + } + pData->ext_bin_length = (UINT32)_section_modelext_info_size; + bInit = TRUE; + } + UINT8 *p_modelext = (UINT8 *)modelext_get_cfg((unsigned char *)_section_modelext_info_addr, type, header); //_TODO: VOS need nvt_mem converting address +#else + UINT8 *p_modelext = (UINT8 *)modelext_get_cfg((unsigned char *)_BOARD_IPC_ADDR_, type, header); //_TODO: VOS need nvt_mem converting address +#endif + + if (p_modelext == NULL || *header == NULL) { + DBG_FATAL("MODELEXT_TYPE = %d is null\r\n", type); + return NULL; + } + + return p_modelext; +#else + return 0; +#endif +} + +void Install_DrvExt(void) +{ + #if defined(_MCU_ENABLE_) + MCUCtrl_InstallID(); + MCU2Ctrl_InstallID(); + #endif +} + diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCfg.h b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCfg.h new file mode 100755 index 000000000..dd8b3c563 --- /dev/null +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCfg.h @@ -0,0 +1,18 @@ +#ifndef _DXCFG_H +#define _DXCFG_H + +//#define _Disp_VIRTUAL_LCD1_OFF_ +//#define _AUDIO_ON_ +//#define _EMBMEM_NONE_ +//#define _EMBMEM_UITRON_OFF_ +//#define _CARD1_NONE_ +//#define _CARD3_NONE_ +#define _POWER_DC_ +//#define _POWER_BATT_ +//#define _MCU_ENABLE_ + +#define USB_CHARGE_FUNCTION DISABLE +#define TV_SWITCH_FUNCTION DISABLE +#define GPIO_DUMMYLOAD_FUNCTION DISABLE + +#endif diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCmd.c b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCmd.c new file mode 100755 index 000000000..3581ed48a --- /dev/null +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCmd.c @@ -0,0 +1,201 @@ +#include +#include +#include +#include "Utility.h" + +#include "DrvExt.h" + +#include "adc.h" //for adc_readData() +#include "top.h" //for pinmux_select_ick(), pinmux_select_goice(), PINMUX_ICK, PINMUX_GOICE +#include "DxApi.h" +#include "Driver.h" //for drv_getVerInfo(), drv_getBuildDate() +#include "IOCfg.h" //for USE_VIO +#include "SwTimer.h" + + +/////////////////////////////////////////////////////////////////////////////// +#define __MODULE__ DxDrv +#define __DBGLVL__ 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER +#define __DBGFLT__ "*" //*=All, [mark]=CustomClass +#include +/////////////////////////////////////////////////////////////////////////////// + +#include "SxCmd.h" + +static BOOL Cmd_dx_lcd(CHAR *strCmd) +{ + DX_HANDLE devLCDObj = Dx_GetObject(DX_CLASS_DISPLAY_EXT | DX_TYPE_LCD); + return Dx_Command(devLCDObj, strCmd); +} + +static BOOL Cmd_dx_tv(CHAR *strCmd) +{ + DX_HANDLE devTVObj = Dx_GetObject(DX_CLASS_DISPLAY_EXT | DX_TYPE_TVOUT); + return Dx_Command(devTVObj, strCmd); +} +#if _TODO +static BOOL Cmd_dx_hdmi(CHAR *strCmd) +{ + DX_HANDLE devHDMIObj = Dx_GetObject(DX_CLASS_DISPLAY_EXT | DX_TYPE_HDMIOUT); + return Dx_Command(devHDMIObj, strCmd); +} +static BOOL Cmd_dx_lcd2(CHAR *strCmd) +{ + DX_HANDLE devLCD2Obj = Dx_GetObject(DX_CLASS_DISPLAY_EXT | DX_TYPE_LCD2); + return Dx_Command(devLCD2Obj, strCmd); +} +static BOOL Cmd_dx_snr1(CHAR *strCmd) +{ + switch (*strCmd) { +#if (USE_VIO == ENABLE) + case 'v': + if (!strncmp(strCmd, "vdet", 4)) { + char ts[10]; + UINT32 v1; + sscanf_s(strCmd, "%s %d", ts, &v1); //fix for CID 44011 + DBG_IND("v1 = %d\r\n", v1); + vio_setpin(VIO_SENSOR1_DET, v1); + return TRUE; + } + break; +#endif + } + return FALSE; +} +static BOOL Cmd_dx_snr2(CHAR *strCmd) +{ + switch (*strCmd) { +#if (USE_VIO == ENABLE) + case 'v': + if (!strncmp(strCmd, "vdet", 4)) { + char ts[10]; + UINT32 v1; + sscanf_s(strCmd, "%s %d", ts, &v1); //fix for CID 44012 + DBG_IND("v1 = %d\r\n", v1); + vio_setpin(VIO_SENSOR2_DET, v1); + return TRUE; + } + break; +#endif + } + return FALSE; +} +#endif +static BOOL Cmd_dx_aout(CHAR *strCmd) +{ + DX_HANDLE devAudObj = Dx_GetObject(DX_CLASS_AUDIO_EXT); + return Dx_Command(devAudObj, strCmd); +} + + +SXCMD_BEGIN(dx, "driver extern debug using") +SXCMD_ITEM("lcd %", Cmd_dx_lcd, "lcd relay command") +SXCMD_ITEM("tv %", Cmd_dx_tv, "tv relay command") +#if _TODO +SXCMD_ITEM("hdmi %", Cmd_dx_hdmi, "hdmi relay command") +SXCMD_ITEM("lcd2 %", Cmd_dx_lcd2, "lcd2 relay command") +SXCMD_ITEM("snr1 %", Cmd_dx_snr1, "sensor1 relay command") +SXCMD_ITEM("snr2 %", Cmd_dx_snr2, "sensor2 relay command") +#endif +SXCMD_ITEM("aout %", Cmd_dx_aout, "audio out relay command") +SXCMD_END() + + +static BOOL Cmd_drv_all(CHAR *Name) +{ + DBG_DUMP("@ITEM_BEGIN [%s]\r\n", Name); + + drv_begin_dump(); + + // CPU + drv_dumpCPUInfo(); + + // DRAM + drv_dumpDRAMInfo(); + +#if (!defined(_Disp_VIRTUAL_LCD1_OFF_) || !defined(_TV_OFF_)) + // IDE + drv_dumpIDEInfo(); +#endif + + // DSI + //drv_dumpDSIInfo(); + +#if (!defined(_CARD1_NONE_) || !defined(_CARD3_NONE_)) + // SDIO + drv_dumpSDIOInfo(); +#endif + +#if (!defined(_EMBMEM_NONE_)) && (!defined(_EMBMEM_UITRON_OFF_)) + // NAND + drv_dumpNANDInfo(); +#endif + +#if !defined(_USB1_OFF_) + // USB + drv_dumpUSBInfo(); +#endif + + // PWM + drv_dumpPWMInfo(); + +#if !defined(_AUDIO_OFF_) + // EAC + drv_dumpEACInfo(); +#endif + + // SIF + drv_dumpSIFInfo(); + + // SIE + drv_dumpSIEInfo(); + + // Sensor + drv_dumpSensorInfo(); + +#if !defined(_TV_OFF_) + // TV + drv_dumpTVInfo(); +#endif + + // PWBC + drv_dumpPWBCInfo(); + + // HDMI + //drv_dumpHDMIInfo(); + + // PLL + drv_dumpPllInfo(); + + // Misc + drv_dumpMISCInfo(); + + drv_end_dump(); + + DBG_DUMP("@ITEM_END\r\n"); + return TRUE; +} + + +static BOOL Cmd_drv_ide(CHAR *strCmd) +{ +#if (!defined(_Disp_VIRTUAL_LCD1_OFF_) || !defined(_TV_OFF_)) + idec_dumpInfo(0); +#endif + return TRUE; +} + +static BOOL Cmd_drv_pwm(CHAR *strCmd) +{ + pwm_dumpInfo(); + return TRUE; +} + + +SXCMD_BEGIN(drvdump, "Dump driver information") +SXCMD_ITEM("ide", Cmd_drv_ide, "Dump IDE") +SXCMD_ITEM("pwm", Cmd_drv_pwm, "Dump PWM") +SXCMD_ITEM("all", Cmd_drv_all, "Dump current status in any status") +SXCMD_END() + + diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxDisplay_LCD.c b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxDisplay_LCD.c new file mode 100755 index 000000000..f52ed80ec --- /dev/null +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxDisplay_LCD.c @@ -0,0 +1,739 @@ +#include "kwrap/type.h" +#include "Dx.h" +#include "DxCommon.h" +#include "DxDisplay.h" +#include "IOCfg.h" +#include "hdal.h" +#include "vendor_videoout.h" +#include "GxVideo.h" +#include "Utility/SwTimer.h" +/////////////////////////////////////////////////////////////////////////////// +#define __MODULE__ DxDisp +#define __DBGLVL__ 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER +#define __DBGFLT__ "*" //*=All, [mark]=CustomClass +#include +/////////////////////////////////////////////////////////////////////////////// + +//EVB default is _Disp_IF8B_LCD1_PW35P00_HX8238D_ +#define LCD_MAX_W ALIGN_CEIL_16(320) //device w of DISP_LCDMODE_xxx, to support rotate, it must align to 16 +#define LCD_MAX_H ALIGN_CEIL_16(720) //device h of DISP_LCDMODE_xxx, to support rotate, it must align to 16 +#define LCD_ASPECT_W 3 +#define LCD_ASPECT_H 4 + +#define DISP_DUAL DISABLE + +#if !defined(_Disp_VIRTUAL_LCD1_OFF_) + +#define LCDMODE 0 + +//Configure +#define CFG_IDE_DMA_HIGH DISABLE //Enable will cause IPE bandwith not enough + +// Local Variables +static UINT32 g_LCDDout = 0; //current dout +static UINT32 g_LCDMode = 0; //current mode +static UINT32 g_LCDLastMode = 0; //current mode +static UINT32 g_LCDEnable = FALSE; //not yet enable +static UINT32 g_LCDSleep = FALSE; +#define DRVLCD_BRT_LEVEL_MAX 10 +#define DRVLCD_BRT_LEVEL_INIT 5 +static BOOL g_LCDBacklightEn = FALSE; +static INT32 g_LCDBacklightLvl = DRVLCD_BRT_LEVEL_INIT; + +static UINT32 g_LCDDual = FALSE; + +// LCD control object +static BOOL g_bLCDWaitTurnOnFinish = FALSE; + +static UINT32 g_localMode = 0; //new mode +static USIZE *pCurrentSize = 0; //return size + +//public func +static UINT32 DrvLCDGetcaps(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +static UINT32 DrvLCDSetcfgs(UINT32 CfgID, UINT32 Param1); // Set Config Setting +static UINT32 DrvLCDInit(void *pInitParam); // Set Init Parameters +static UINT32 DrvLCDOpen(void); // Common Constructor +static UINT32 DrvLCDClose(void); // Common Destructor +static UINT32 DrvLCDState(UINT32 StateID, UINT32 Value); // General Properties +static UINT32 DrvLCDControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2); // General Methods +static UINT32 DrvLCDCommand(CHAR *pcCmdStr); //General Command Console + +//internal func +static void DrvLCD_TurnOn(void); +static void DrvLCD_TurnOn_WaitFinish(void); +static void DrvLCD_TurnOff(void); +static void DrvLCD_Dump(void); +static void DrvLCD_SleepEnter(void); +static void DrvLCD_SleepLeave(void); + +static void GPIOMap_TurnOnLCDBacklight(void); +static void GPIOMap_TurnOffLCDBacklight(void); +static void GPIOMap_SetLCDBacklightBrightLevel(INT32 uiLevel); +static void GPIOMap_AdjustLCDBacklight(UINT32 uiAdjValue); +static BOOL GPIOMap_IsLCDBacklightOn(void); +static void GPIOMap_DumpBacklight(void); + +static void GPIOMap_TurnOnLCDPower(void); +static void GPIOMap_TurnOffLCDPower(void); +static void GPIOMap_LCDReset(void); +//static BOOL GPIOMap_IsLCDPowerOn(void); + +//dx object +DX_OBJECT gDevLCD = { + DXFLAG_SIGN, + DX_CLASS_DISPLAY_EXT | DX_TYPE_LCD, + DISPLAY_VER, + "Display_LCD", + 0, 0, 0, 0, + DrvLCDGetcaps, + DrvLCDSetcfgs, + DrvLCDInit, + DrvLCDOpen, + DrvLCDClose, + DrvLCDState, + DrvLCDControl, + DrvLCDCommand, + 0, +}; + +static UINT32 DrvLCDGetcaps(UINT32 CapID, UINT32 Param1) // Get Capability Flag (Base on interface version) +{ + UINT32 v = 0; + switch (CapID & 0x0000ffff) { + case DISPLAY_CAPS_BASE: + v = DISPLAY_BF_BACKLIGHT; + break; + case DISPLAY_CAPS_DEFMODE: + v = LCDMODE; + break; +#if 0 + case DISPLAY_CAPS_MODEINFO: { +// int mode = (CapID & 0xffff0000) >> 16; + ISIZE *pModeInfo = (ISIZE *)Param1; + #if 0 + _DrvLCDHookDout(g_LCDDout); + pDev->SEL.SET_LCDMODE.Mode = mode; + pObj->devCtrl(DISPDEV_SET_LCDMODE, pDev); + pDev->SEL.GET_PREDISPSIZE.DevID = DISPDEV_ID_PANEL; + pObj->devCtrl(DISPDEV_GET_PREDISPSIZE, pDev); + if (pModeInfo) { + pModeInfo->w = pDev->SEL.GET_PREDISPSIZE.uiBufWidth; + pModeInfo->h = pDev->SEL.GET_PREDISPSIZE.uiBufHeight; + } + #else + pModeInfo->w = 960; + pModeInfo->w = 240; + DBG_ERR("need porting\r\n"); + #endif + } + break; +#endif + case DISPLAY_CAPS_MAXSIZE: { + ISIZE *pSizeInfo = (ISIZE *)Param1; + if (pSizeInfo) { + pSizeInfo->w = LCD_MAX_W; + pSizeInfo->h = LCD_MAX_H; + } + } + break; + case DISPLAY_CAPS_ASPECT: { + ISIZE *pAspectInfo = (ISIZE *)Param1; + if (pAspectInfo) { + pAspectInfo->w = LCD_ASPECT_W; + pAspectInfo->h = LCD_ASPECT_H; + } + } + break; + default: + break; + } + return v; +} + +static UINT32 DrvLCDSetcfgs(UINT32 CfgID, UINT32 Param1) // Set Config Setting +{ + switch (CfgID) { + case DISPLAY_CFG_MODE: + DBG_IND("set mode %08x\r\n", Param1); + g_LCDLastMode = Param1; + break; + case DISPLAY_CFG_DOUT: + g_LCDDout = Param1; + break; + case DISPLAY_CFG_DUAL: + g_LCDDual = Param1; + break; + case DISPLAY_CFG_INFOBUF: + pCurrentSize = (USIZE *)Param1; + break; + default: + break; + } + return DX_OK; +} + +static UINT32 DrvLCDInit(void *pInitParam) // Set Init Parameters +{ + DBG_FUNC_BEGIN("\r\n"); + + g_LCDLastMode = DrvLCDGetcaps(DISPLAY_CAPS_DEFMODE, 0); + + return DX_OK; +} + +static UINT32 DrvLCDOpen(void) // Common Constructor +{ + DBG_FUNC_BEGIN("\r\n"); + +#if 0 + if (!_DrvLCDHookDout(g_LCDDout)) { + return DX_NOT_SUPPORT; + } +#endif + DBG_IND("LCD dout by IDE%d\r\n", g_LCDDout + 1); +#if 0 + //////////////////////////////////////////////////// + // LCD default use PLL2 for precisely CLK, but if enable dual, it can use PLL1. +#if (_FPGA_EMULATION_ == ENABLE) + pCtrl->SEL.SET_SRCCLK.SrcClk = DISPCTRL_SRCCLK_PLL6; + pObj->dispCtrl(DISPCTRL_SET_SRCCLK, pCtrl); +#else + if (g_LCDDual == FALSE) { + DBG_IND("^YLCD Dual=0\r\n"); + // NOTE: Our LCD device driver will always try to change PLL clock setting for its "target frame rate" + // Solution: select PLL1(fixed at 480Mhz) or PLL2(used by TV/HDMI) or PLL4(support SpreadSpectrum) + if (g_LCDDout == 0) { + pCtrl->SEL.SET_SRCCLK.SrcClk = DISPCTRL_SRCCLK_PLL6; + pObj->dispCtrl(DISPCTRL_SET_SRCCLK, pCtrl); + } + } else { + DBG_IND("^YLCD Dual=1\r\n"); + // NOTE: Under "Dual Display" condition, PLL2 clock must be fixed and reserved for TV/HDMI device! + // Solution: Do NOT select PLL2(used by TV/HDMI)! Just use PLL1(fixed at 480Mhz) or PLL4(support SpreadSpectrum) + if (g_LCDDout == 0) { + pCtrl->SEL.SET_SRCCLK.SrcClk = DISPCTRL_SRCCLK_PLL1; + pObj->dispCtrl(DISPCTRL_SET_SRCCLK, pCtrl); + } + } +#endif + //////////////////////////////////////////////////// + //Panel have 3 types: NORMAL(8BIT or PARAL),DSI(MIPI), MI(MEMORY-INTERFACE) + if (g_LCDDout == 0) { +#if (LCD_COMM_CTRL == LCD_COMM_BY_GPIO) + pDev->SEL.SET_REG_IF.LcdCtrl = DISPDEV_LCDCTRL_GPIO; + pDev->SEL.SET_REG_IF.uiSifCh = 0; + pDev->SEL.SET_REG_IF.uiGpioSen = GPIO_LCD_SIF_SEN; + pDev->SEL.SET_REG_IF.uiGpioClk = GPIO_LCD_SIF_SCK; + pDev->SEL.SET_REG_IF.uiGpioData = GPIO_LCD_SIF_SDA; + pObj->devCtrl(DISPDEV_SET_REG_IF, pDev); +#endif +#if (LCD_COMM_CTRL == LCD_COMM_BY_SIF) + pDev->SEL.SET_REG_IF.LcdCtrl = DISPDEV_LCDCTRL_SIF; + pDev->SEL.SET_REG_IF.uiSifCh = SIF_LCD_CH; + pDev->SEL.SET_REG_IF.uiGpioSen = 0; + pDev->SEL.SET_REG_IF.uiGpioClk = 0; + pDev->SEL.SET_REG_IF.uiGpioData = 0; + pObj->devCtrl(DISPDEV_SET_REG_IF, pDev); + //Configure SIF pins to default state + pad_setPullUpDown(PAD_LCD_SIF_SEN, DIR_LCD_SIF_SEN); + pad_setPullUpDown(PAD_LCD_SIF_SCK, DIR_LCD_SIF_SCK); + pad_setPullUpDown(PAD_LCD_SIF_SDA, DIR_LCD_SIF_SDA); +#endif + //pad_setDrivingSink(PAD_DS_LCD8, PAD_DRIVINGSINK_6MA); + } + + //////////////////////////////////////////////////// +#endif + + GPIOMap_TurnOnLCDPower(); + GPIOMap_LCDReset(); + + g_localMode = g_LCDLastMode; + DBG_IND("open mode %08x\r\n", g_localMode); + DrvLCD_TurnOn(); + + g_LCDEnable = TRUE; + + return DX_OK; +} + +static UINT32 DrvLCDClose(void) // Common Destructor +{ + DBG_FUNC_BEGIN("\r\n"); + + DrvLCD_TurnOff(); + + // Panel enter sleep mode + GPIOMap_TurnOffLCDPower(); + + g_LCDLastMode = g_LCDMode; + g_LCDMode = 0; + g_LCDEnable = FALSE; + + return DX_OK; +} + +static void DrvLCD_TurnOn(void) +{ + DBG_FUNC_BEGIN("\r\n"); + +#if 0 + // Turn on LCD power + if (g_localMode < DISPDEV_LCDMODE_NO_CHANGE) { //must be LCD + pDev->SEL.SET_LCDMODE.Mode = g_localMode; + pObj->devCtrl(DISPDEV_SET_LCDMODE, pDev); + /* + pDev->SEL.GET_PREDISPSIZE.DevID = DISPDEV_ID_PANEL; + pObj->devCtrl(DISPDEV_GET_PREDISPSIZE,pDev); + g_localSize.w = pDev->SEL.GET_PREDISPSIZE.uiBufWidth; + g_localSize.h = pDev->SEL.GET_PREDISPSIZE.uiBufHeight; + */ + } else { + DBG_ERR("mode=%d not support!\r\n", g_localMode); + return; + } + //IMPORTANT! for FAST BOOT, Photo App will ask disp size very early~ + //Update size of first mode (before open) + //DxDisplay_UpdateModeInfo(g_LCDDout<<4, g_localMode, &g_localSize); + + //LCD panel open + pDev->SEL.OPEN_DEVICE.DevID = DISPDEV_ID_PANEL; + pObj->devCtrl(DISPDEV_OPEN_DEVICE, pDev); + + ////////////////////////////////////////////////////////////////////// + // special operation for this project! + // + //pDev->SEL.SET_ROTATE.Rot = DISPDEV_LCD_ROTATE_180; + //pObj->devCtrl(DISPDEV_SET_ROTATE,pDev); + ////////////////////////////////////////////////////////////////////// + + pObj->devCtrl(DISPDEV_GET_DISPSIZE, pDev); + g_localSize.w = pDev->SEL.GET_DISPSIZE.uiBufWidth; + g_localSize.h = pDev->SEL.GET_DISPSIZE.uiBufHeight; + if (pCurrentSize) { + pCurrentSize[0] = g_localSize; + } +#endif + + g_LCDMode = g_localMode; +} + +static void DrvLCD_TurnOn_WaitFinish(void) +{ + DBG_FUNC_BEGIN("\r\n"); + + g_LCDEnable = TRUE; +} + + +static void DrvLCD_TurnOff(void) +{ + DBG_FUNC_BEGIN("\r\n"); + + //NOTE: VERY VERY VERY VERY VERY IMPORTANT!!!!! + //�W�h�n�T�OSleepEnter()��TurnOff()���|���Ƶo��!!! + //if DrvLCD_SleepEnter() is called ClosePanel, then here DrvLCD_TurnOff() also call ClosePanel again, + //=> it will cause sif_close() is call twice by LCD driver internal, + //=> then ALL sif_send() command of other devices will become abnormally!!! + //=> �i��{�H1: �y��CCD�L�kwakeup (TG�|�Ψ�sif) + //=> �i��{�H2: �y��CCD��X�a�Ӥ� (TG�|�Ψ�sif) +#if 0 + //LCD panel close + pObj->devCtrl(DISPDEV_CLOSE_DEVICE, NULL); +#endif + // Turn off LCD power + g_LCDEnable = FALSE; +} + +static void DrvLCD_SleepEnter(void) +{ + HD_RESULT ret =0 ; + HD_PATH_ID video_out_path = GxVideo_GetDeviceCtrl(DOUT1,DISPLAY_DEVCTRL_PATH); + + // LCD backlight + GPIOMap_TurnOffLCDBacklight(); + hd_videoout_stop(video_out_path); + ret = vendor_videoout_set(VENDOR_VIDEOOUT_ID0,VENDOR_VIDEOOUT_ITEM_ENTER_SLEEP,NULL); + if(ret!=HD_OK){ + DBG_ERR("ret %d\r\n", ret); + } + GPIOMap_LCDReset(); + + g_LCDSleep = TRUE; +} + +static void DrvLCD_SleepLeave(void) +{ + HD_RESULT ret =0 ; + HD_PATH_ID video_out_path = GxVideo_GetDeviceCtrl(DOUT1,DISPLAY_DEVCTRL_PATH); + HD_PATH_ID video_out_ctrl = GxVideo_GetDeviceCtrl(DOUT1,DISPLAY_DEVCTRL_CTRLPATH); + HD_FB_ENABLE video_out_enable={0}; + ret = vendor_videoout_set(VENDOR_VIDEOOUT_ID0,VENDOR_VIDEOOUT_ITEM_EXIT_SLEEP,NULL); + if(ret!=HD_OK){ + DBG_ERR("wake %d\r\n"); + } + hd_videoout_start(video_out_path); + video_out_enable.fb_id = HD_FB0; + video_out_enable.enable = 1; + ret = hd_videoout_set(video_out_ctrl, HD_VIDEOOUT_PARAM_FB_ENABLE, &video_out_enable); + if(ret!=HD_OK){ + DBG_ERR("fb enable %d\r\n", ret); + } + // LCD backlight + GPIOMap_TurnOnLCDBacklight(); + + g_LCDSleep = FALSE; +} + + +static UINT32 DrvLCDState(UINT32 StateID, UINT32 Value) // General Properties +{ + DBG_FUNC_BEGIN("\r\n"); + + if (StateID & DXGET) { + UINT32 rvalue = 0; + StateID &= ~DXGET; + DBG_IND("get %08x\r\n", StateID); + switch (StateID) { + case DRVDISP_STATE_ENBALE: + //lost device? ---> cannot determine enable or not + //under flow like: enable/disable + rvalue = g_LCDEnable; + break; + case DRVDISP_STATE_MODE: + //lost device? ---> cannot determine mode + //under flow like: change mode + rvalue = g_LCDMode; + break; + case DRVDISP_STATE_LASTMODE: + rvalue = g_LCDLastMode; + break; + case DRVDISP_STATE_SLEEP: + rvalue = g_LCDSleep; + break; + case DRVDISP_STATE_BACKLIGHT: + rvalue = GPIOMap_IsLCDBacklightOn() ? DRVDISP_BACKLIGHT_ON : DRVDISP_BACKLIGHT_OFF; + break; + case DRVDISP_STATE_BRIGHTLVL: + rvalue = g_LCDBacklightLvl; + break; + default: + DBG_WRN("get state=0x%02X not support!\r\n", StateID); + break; + } + return rvalue; + } else if (StateID & DXSET) { + StateID &= ~DXSET; + DBG_IND("set %08x\r\n", StateID); + switch (StateID) { + case DRVDISP_STATE_BACKLIGHT: + if (Value == DRVDISP_BACKLIGHT_OFF) { + DBG_IND("DRVDISP_BACKLIGHT_OFF\r\n"); + GPIOMap_TurnOffLCDBacklight(); + } else { //if(value == DRVDISP_BACKLIGHT_ON) + DBG_IND("DRVDISP_BACKLIGHT_ON\r\n"); + GPIOMap_TurnOnLCDBacklight(); + } + break; + case DRVDISP_STATE_BRIGHTLVL: { + DBG_IND("DRVDISP_BRIGHTLVL=%d\r\n", Value); + GPIOMap_SetLCDBacklightBrightLevel((INT32)Value); + } + break; + case DRVDISP_STATE_DIRECT: + #if 0 //set direct by LCD driver! + if(pObj) { + ////////////////////////////////////////////////////////////////////// + // special operation for this project! + // + //if (Value == (0x01 | 0x02)) { + // pDev->SEL.SET_ROTATE.Rot = DISPDEV_LCD_ROTATE_180; + //} else { + // pDev->SEL.SET_ROTATE.Rot = DISPDEV_LCD_ROTATE_NONE; + //} + //pObj->devCtrl(DISPDEV_SET_ROTATE,pDev); + ////////////////////////////////////////////////////////////////////// + } + #endif + #if 0 //set direct by IDE! + //NOTE: project must set GxDisplay OSD1 layer's uiWinAttr = MIRROR_KEEP; + //NOTE: project must set VdoOut VDO1 layer's desc.degree = VDODISP_ROTATE_NO_HANDLE; + if(pObj) { + DISPLAYER_PARAM LyrParam; + memset(&LyrParam, 0, sizeof(DISPLAYER_PARAM)); + if (Value == (0x01 | 0x02)) { + LyrParam.SEL.SET_OUTDIR.BufOutDir = DISPOUTDIR_ROT_180; + } else { + LyrParam.SEL.SET_OUTDIR.BufOutDir = DISPOUTDIR_NORMAL; + } + pObj->dispLyrCtrl(DISPLAYER_OSD1, DISPLAYER_OP_SET_OUTDIR, &LyrParam); //it will call disp_translateBufAddress + pObj->dispLyrCtrl(DISPLAYER_OSD2, DISPLAYER_OP_SET_OUTDIR, &LyrParam); //it will call disp_translateBufAddress + pObj->dispLyrCtrl(DISPLAYER_VDO1, DISPLAYER_OP_SET_OUTDIR, &LyrParam); //it will call disp_translateBufAddress + pObj->dispLyrCtrl(DISPLAYER_VDO2, DISPLAYER_OP_SET_OUTDIR, &LyrParam); //it will call disp_translateBufAddress + pObj->load(TRUE); + } + #endif + break; + + default: + DBG_WRN("set state=0x%02X not support!\r\n", StateID); + break; + } + } + return DX_OK; +} + +static UINT32 DrvLCDControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2) // General Methods +{ + DBG_FUNC_BEGIN("\r\n"); + DBG_IND("ctrl %08x\r\n", CtrlID); + + switch (CtrlID) { + case DRVDISP_CTRL_MODE: { + //DrvLCD_TurnOff(); + g_localMode = Param1; + //DrvLCD_TurnOn(); + //g_bLCDWaitTurnOnFinish = TRUE; + } + break; + case DRVDISP_CTRL_SLEEP: + if (Param1 == TRUE) { + DBG_IND("DRVDISP_CTRL_SLEEP 1\r\n"); + DrvLCD_SleepEnter(); + } else if (Param1 == FALSE) { + DBG_IND("DRVDISP_CTRL_SLEEP 0\r\n"); + DrvLCD_SleepLeave(); + } + break; + case DRVDISP_CTRL_WAITFINISH: + if (g_bLCDWaitTurnOnFinish == TRUE) { + DrvLCD_TurnOn_WaitFinish(); + g_bLCDWaitTurnOnFinish = FALSE; + } + break; + + default: + DBG_WRN("ctrl id=0x%02X not support!\r\n", CtrlID); + break; + } + return DX_OK; +} + +static UINT32 DrvLCDCommand(CHAR *pcCmdStr) //General Command Console +{ + switch (*pcCmdStr) { + case 'd': + if (!strncmp(pcCmdStr, "disp lcd dump", 13)) { + DrvLCD_Dump(); + return TRUE; + } + break; + } + return FALSE; +} + +static void DrvLCD_Dump(void) +{ + GPIOMap_DumpBacklight(); +} + + +//////////////////////////////////////////////////////////////////////////////// +// GPIO related +static void GPIOMap_LCDReset(void) +{ + // Reset LCD +#if 1 + gpio_setDir(GPIO_LCD_RESET, GPIO_DIR_OUTPUT); + gpio_setPin(GPIO_LCD_RESET); + SwTimer_DelayMs(10); + gpio_clearPin(GPIO_LCD_RESET); + SwTimer_DelayMs(10); + gpio_setPin(GPIO_LCD_RESET); +#elif defined(_Disp_IFDSI_LCD1_BPB5017BFW_ILI9806E_) + gpio_clearPin(GPIO_LCD_RESET); + SwTimer_DelayMs(10); + gpio_setPin(GPIO_LCD_RESET); +#endif +} + +/** + Turn on LCD power + + Turn on LCD power. + + @param void + @return void +*/ +static void GPIOMap_TurnOnLCDPower(void) +{ +} + +/** + Turn off LCD power + + Turn off LCD power. + + @param void + @return void +*/ +static void GPIOMap_TurnOffLCDPower(void) +{ + +} + +/** + Check whether LCD power is on or not + + Check whether LCD power is on or not. + Return TRUE if LCD power is on, return FALSE if LCD power is off. + + @param void + @return BOOL +*/ +//static BOOL GPIOMap_IsLCDPowerOn(void) +//{ +// return TRUE; +//} + +//////////////////////////////////////////////////////////////////////// + +//#NT#2009/12/15#Lincy Lin -begin +#if (LCD_BACKLIGHT_CTRL == LCD_BACKLIGHT_BY_PWM) +static PWM_CFG g_LCDBacklightPWMInfo = {1, 60, 0, 60, 0, 0}; +static UINT32 g_LCDBacklightLvlPWMDuty[DRVLCD_BRT_LEVEL_MAX] = { + 59,//48,// level 0 + 44,// level 1 + 35,// level 2 + 28,// level 3 + 25,// level 4 + 22,// level 5 + 20,// level 6 + 18,// level 7 + 17,// level 8 + 5, //10 // level 9 +}; +#endif + + +/** + Turn on LCD backlight + + Turn on LCD backlight. + + @param void + @return void +*/ +static void GPIOMap_TurnOnLCDBacklight(void) +{ + DBG_IND("GPIOMap_TurnOnLCDBacklight: Adjust value %d\r\n", g_LCDBacklightLvl); + + if (g_LCDBacklightEn == FALSE) { +#if (LCD_BACKLIGHT_CTRL == LCD_BACKLIGHT_BY_PWM) + g_LCDBacklightPWMInfo.uiRise = g_LCDBacklightLvlPWMDuty[g_LCDBacklightLvl]; + DBG_IND("PWM: rise=%d\r\n", g_LCDBacklightPWMInfo.uiRise); + pwm_open(PWMID_LCD_BLG_PCTL); + pwm_pwmConfig(PWMID_LCD_BLG_PCTL, &g_LCDBacklightPWMInfo); + pwm_pwmEnable(PWMID_LCD_BLG_PCTL); +#elif (LCD_BACKLIGHT_CTRL == LCD_BACKLIGHT_BY_GPIO) + gpio_setPin(GPIO_LCD_BLG_PCTL); +#else + DrvLCD_TurnOn(); + DrvLCD_TurnOn_WaitFinish(); +#endif + g_LCDBacklightEn = TRUE; + } +} + +static void GPIOMap_SetLCDBacklightBrightLevel(INT32 uiLevel) +{ + g_LCDBacklightLvl = uiLevel; + if (g_LCDBacklightLvl < 0) { + DBG_WRN("DrvLCDSetCtrl Warning! brightlvl=0x%02X out of range\r\n", g_LCDBacklightLvl); + g_LCDBacklightLvl = 0; + } + if (g_LCDBacklightLvl >= DRVLCD_BRT_LEVEL_MAX) { + DBG_WRN("DrvLCDSetCtrl Warning! brightlvl=0x%02X out of range\r\n", g_LCDBacklightLvl); + g_LCDBacklightLvl = DRVLCD_BRT_LEVEL_MAX - 1; + } + + if (!g_LCDBacklightEn) { + return; + } + + GPIOMap_AdjustLCDBacklight(g_LCDBacklightLvl); +} + +/** + Turn off LCD backlight + + Turn off LCD backlight. + + @param void + @return void +*/ +static void GPIOMap_TurnOffLCDBacklight(void) +{ + DBG_IND("GPIOMap_TurnOffLCDBacklight: Adjust value %d\r\n", g_LCDBacklightLvl); + + if (g_LCDBacklightEn == TRUE) { +#if (LCD_BACKLIGHT_CTRL == LCD_BACKLIGHT_BY_PWM) + pwm_pwmDisable(PWMID_LCD_BLG_PCTL); + pwm_close(PWMID_BLG_PCTL, TRUE); +#elif (LCD_BACKLIGHT_CTRL == LCD_BACKLIGHT_BY_GPIO) + gpio_clearPin(GPIO_LCD_BLG_PCTL); +#else + DrvLCD_TurnOff(); +#endif + g_LCDBacklightEn = FALSE; + } +} + +/** + Adjust LCD backlight level + + Adjust LCD backlight level. + + @param UINT32 uiAdjValue + @return void +*/ +static void GPIOMap_AdjustLCDBacklight(UINT32 uiAdjValue) +{ + DBG_IND("GPIOMap_AdjustLCDBacklight: Adjust value %d\r\n", uiAdjValue); + + /* Re-start PWM */ + if (g_LCDBacklightEn) { +#if (LCD_BACKLIGHT_CTRL == LCD_BACKLIGHT_BY_PWM) + g_LCDBacklightPWMInfo.uiRise = g_LCDBacklightLvlPWMDuty[g_LCDBacklightLvl]; + DBG_IND("PWM: rise=%d\r\n", g_LCDBacklightPWMInfo.uiRise); + pwm_pwmDisable(PWMID_LCD_BLG_PCTL); + pwm_pwmConfig(PWMID_LCD_BLG_PCTL, &g_LCDBacklightPWMInfo); + pwm_pwmEnable(PWMID_LCD_BLG_PCTL); +#endif + } +} + +/** + Check whether LCD backlight is on or not + + Check whether LCD backlight is on or not. + Return TRUE if LCD backlight is on, return FALSE if LCD backlight is off. + + @param void + @return BOOL +*/ +static BOOL GPIOMap_IsLCDBacklightOn(void) +{ + return g_LCDBacklightEn; +} + +static void GPIOMap_DumpBacklight(void) +{ +#if (LCD_BACKLIGHT_CTRL == LCD_BACKLIGHT_BY_PWM) + DBG_DUMP("BACKLIGHT clk :\t\t%d MHz\r\n", 48 / (g_LCDBacklightPWMInfo.uiDiv + 1)); + DBG_DUMP("BACKLIGHT Duty :\t%d %\r\n", (g_LCDBacklightPWMInfo.uiFall - g_LCDBacklightPWMInfo.uiRise) * 100 / g_LCDBacklightPWMInfo.uiPrd); +#endif +} + +#endif + diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxHunting.c b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxHunting.c new file mode 100755 index 000000000..dee40df9c --- /dev/null +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxHunting.c @@ -0,0 +1,516 @@ +/** + Copyright Novatek Microelectronics Corp. 2019. All rights reserved. + + @file DxHunting.c + @ingroup mIPRJAPKeyIO + + @brief Scan key, modedial + Scan key, modedial + + @note Nothing. + + @date 2019/06/11 +*/ + +/** \addtogroup mIPRJAPKeyIO */ +//@{ + +#include "DxCfg.h" +#include "IOCfg.h" +#include "DxHunting.h" +#include "kwrap/type.h" +#include +#include "modelext_info.h" +#include "DrvExt.h" +#include "PrjInc.h" +#if HUNTING_CAMERA_MCU == ENABLE +#include +#include "sys_fastboot.h" +#endif + +#define IRLED_CTRL_BY_PWM ENABLE//DISABLE// +#define IRLED_PWMID PWMID_3 /* P_GPIO3 */ +#include "pwm.h" +#include "flow_preview.h" +/////////////////////////////////////////////////////////////////////////////// +#define __MODULE__ DxHunting +#define __DBGLVL__ 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER +#define __DBGFLT__ "*" //*=All, [mark]=CustomClass +#include +/////////////////////////////////////////////////////////////////////////////// +static UINT8 IsNightLedOn = 0; + +static UINT32 g_uiWorkMode = 0; +static UINT32 g_uiBootMode = DX_HUNTING_MODE_PHOTO_MOVIE; +static VK_TASK_HANDLE g_handle_ir_cut = 0; +#define FLG_IR_CUT_IN FLGPTN_BIT(0) // +#define FLG_IR_CUT_ON FLGPTN_BIT(1) // +#define FLG_IR_CUT_OFF FLGPTN_BIT(2) // + +void DrvGPIO_MicroController_PwrOff(void) +{ + #if 0 + gpio_setPin(GPIO_MCU_CORT); + gpio_clearPin(GPIO_MCU_SCL); + gpio_clearPin(GPIO_MCU_SDA); + Delay_DelayMs(10); + #endif +} + +/** + get the hardware work mode + + + @param void + @return BOOL: +*/ +/*------------------------*/ +// SET(P_GPIO_49) OFF(P_GPIO_48) +// 0 0 ==> OFF +// 0 1 ==> undefine +// 1 0 ==> on (monitor mode) +// 1 1 ==> setup (normal mode) +/** + Get hunting working mode + + @param void + @return UINT32: level3 +*/ +UINT32 DrvGPIO_GetHuntingWorkMode(void) +{ +#if 1 + UINT32 level1 = 0; + UINT32 level2 = 0; + UINT32 uiWorkMode = 0; + + //level1 = (gpio_getPin(GPIO_SET_DET) == 0) ? FALSE : TRUE; + //level2 = (gpio_getPin(GPIO_OFF_DET) == 0) ? FALSE : TRUE; + + uiWorkMode = (level1<<1)|level2; + switch (uiWorkMode) + { + case 0: + g_uiWorkMode = HUNTING_OFF_MODE; + break; + case 1: + break; + case 2: + g_uiWorkMode = HUNTING_MONITOR_MODE; + break; + case 3: + g_uiWorkMode = HUNTING_NORMAL_MODE; + break; + default: + g_uiWorkMode = HUNTING_NORMAL_MODE; + break; + } + +#else + g_uiWorkMode = HUNTING_NORMAL_MODE; + + BOOL bIsFastBoot; + MODELEXT_HEADER *head = NULL; + BININFO *pBinInfo = (BININFO *)Dx_GetModelExtCfg(MODELEXT_TYPE_BIN_INFO, &head); + + if (pBinInfo == NULL) { + DBG_ERR("pBinInfo is NULL\r\n"); + return FALSE; + } + + bIsFastBoot = (pBinInfo->ld.LdCtrl2 & LDCF_FASTBOOT) ? TRUE : FALSE; + + if (bIsFastBoot) { + g_uiWorkMode = HUNTING_MONITOR_MODE; + } +#endif + + //return g_uiWorkMode; + return HUNTING_MONITOR_MODE; +} + +void DrvGPIO_SetPhotoMovieModeFromMonitor(UINT32 u32PhotoMovieMode) +{ + g_uiBootMode = u32PhotoMovieMode; +} + +UINT32 DrvGPIO_GetPhotoMovieModeFromMonitor(void) +{ + static BOOL first_entry = TRUE; + + if(first_entry == TRUE){ + + VOS_TICK t1, t2; + + first_entry = FALSE; + +#if HUNTING_CAMERA_MCU == ENABLE + + //int ret = 1; + UINT8 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + + if(gpio_getIntStatus(GPIO_INT_USBPLUGIN) || FALSE == (gpio_getPin(GPIO_CARD_DETECT) == 0 ? TRUE : FALSE)) + { + g_uiBootMode = DX_HUNTING_MODE_OTHER; + Save_MenuInfo(); + return g_uiBootMode; + } + vos_perf_mark(&t1); + // ret = sf_mod_init(); + // printf("%s:%d ret:%d\n", __FUNCTION__, __LINE__,ret); + value = sf_get_power_on_mode(); + //sf_mcu_power_on_para_get(SF_MCU_POWERON); + //sf_mcu_wdg_set(5); + //sf_mcu_reg_set(SF_MCU_CTRL_MODULE_PIR, 1); + switch(value) + { + case PWR_OFF: + printf("%s:%d\n", __FUNCTION__, __LINE__); + sf_set_power_off_flag(APP_POWER_OFF_BATT_EMPTY); + flow_preview_set_stop_flag(TRUE); + //sf_mcu_reg_set(SF_MCU_POWEROFF,0); + g_uiBootMode = DX_HUNTING_MODE_OTHER; + printf("%s:%d\n", __FUNCTION__, __LINE__); + break; + case PWR_ON_SETUP: + #if SF_IQ_TEST == DISABLE + case PWR_ON_AUTO: + //fastboot_msg_en(ENABLE); + //Delay_DelayMs(300); + case PWR_ON_SMS: + case PWR_ON_DAILY_REPORT: + case PWR_ON_GPRS_INIT://A + case PWR_ON_TIME_SYNC://B + case PWR_ON_TIME_SEND: + #endif + Save_MenuInfo(); + g_uiBootMode = DX_HUNTING_MODE_OTHER; + break; + + /*case 3: + g_uiBootMode = DX_HUNTING_MODE_PHOTO; + break; + + case 5: + g_uiBootMode = DX_HUNTING_MODE_MOVIE; + break; + + case 1: + g_uiBootMode = DX_HUNTING_MODE_OTHER; + break*/; + + default: + + if(SF_CAM_MODE_PHOTO == puiPara->CamMode) + { + g_uiBootMode = DX_HUNTING_MODE_PHOTO; + } + else if(SF_CAM_MODE_VIDEO == puiPara->CamMode) + { + g_uiBootMode = DX_HUNTING_MODE_MOVIE; + } + else + { + g_uiBootMode = DX_HUNTING_MODE_PHOTO_MOVIE; + } + break; + } + printf("%s:%d CamMode:%lu DebugMode:%lu\n", __FUNCTION__, __LINE__,puiPara->CamMode,puiPara->DebugMode); + +#else +// UINT8 bit0 = 0; +// UINT8 bit1 = 0; +// +// bit0 = (gpio_getPin(GPIO_KEY_UP) == 0) ? 1 : 0; +// bit1 = (((gpio_getPin(GPIO_KEY_DOWN) == 0) ? 1 : 0) << 1); +// +// value = (bit1 | bit0); +// +// switch(value) +// { +// case 0: +// g_uiBootMode = DX_HUNTING_MODE_PHOTO_MOVIE; +// break; +// +// case 1: +// g_uiBootMode = DX_HUNTING_MODE_PHOTO; +// break; +// +// case 2: +// g_uiBootMode = DX_HUNTING_MODE_MOVIE; +// break; +// +// case 3: +// g_uiBootMode = DX_HUNTING_MODE_OTHER; +// break; +// +// } + + g_uiBootMode = DX_HUNTING_MODE_PHOTO_MOVIE; +#endif + + vos_perf_mark(&t2); + + DBG_DUMP("********** first_entry = %lu\n", vos_perf_duration(t1, t2)); + } + + return g_uiBootMode; +} + + +void DrvGOIO_Turn_Onoff_IRCUT(UINT8 onoff) +{ + static UINT32 ir_flag = 1; + static UINT32 ir_flag_on = 1; + static UINT32 ir_flag_off = 1; + printf("[%s:%d]s onoff:%d\n",__FUNCTION__,__LINE__,onoff); + + if(ir_flag) + { + gpio_setDir(GPIO_IRCUT_MEN1, GPIO_DIR_OUTPUT); + gpio_setDir(GPIO_IRCUT_MEN2, GPIO_DIR_OUTPUT); + ir_flag = 0; + } + + if((onoff == 1) && (ir_flag_on == 1)){//Just open it once. night + gpio_setPin(GPIO_IRCUT_MEN1); + gpio_clearPin(GPIO_IRCUT_MEN2); + sf_ir_cut_ctrl_PowerOff(); + ir_flag_off = 1; + ir_flag_on = 0; + }else if((onoff == 0) && (ir_flag_off == 1)){//Just open it once. + gpio_setPin(GPIO_IRCUT_MEN2); + gpio_clearPin(GPIO_IRCUT_MEN1); + sf_ir_cut_ctrl_PowerOff(); + ir_flag_off = 0; + ir_flag_on = 1; + }else if(onoff == 2){ + gpio_clearPin(GPIO_IRCUT_MEN1); + gpio_clearPin(GPIO_IRCUT_MEN2); + }else{ + printf("[%s:%d] on off\n",__FUNCTION__,__LINE__); + } + //DBG_DUMP("\r\n DrvGPIO_SetIRCut value:%d \r\n",onoff); + //Delay_DelayMs(20); + //gpio_clearPin(GPIO_IRCUT_MEN1); + //gpio_clearPin(GPIO_IRCUT_MEN2); + printf("[%s:%d]e\n",__FUNCTION__,__LINE__); +} + + +void DrvGPIO_IRLed_Turn_Onoff(BOOL onoff) +{ + #if IRLED_CTRL_BY_PWM == ENABLE + printf("[%s:%d]s onoff:%d\n",__FUNCTION__,__LINE__,onoff); + + PWM_CFG pwm_cfg = { + .ui_prd = 100, + .ui_rise = 0, + .ui_fall = 100, + .ui_on_cycle = 0, + .ui_inv = 0 + }; + static UINT32 ir_flag = 1; + + if(ir_flag) + { + //CHKPNT; + pwm_open(IRLED_PWMID); + + ir_flag = 0; + } + if (onoff ==1) + { + //CHKPNT; + pwm_pwm_config(IRLED_PWMID, &pwm_cfg); + //CHKPNT; + pwm_pwm_enable(IRLED_PWMID); + CHKPNT; + //printf("%s:%d e\n", __FUNCTION__, __LINE__); + } + else + { + //CHKPNT; + pwm_pwm_disable(IRLED_PWMID); + //CHKPNT; + //pwm_close(IRLED_PWMID, TRUE); + CHKPNT; + //printf("%s:%d e\n", __FUNCTION__, __LINE__); + } + #else + gpio_setDir(GPIO_IR_LED_PWR, GPIO_DIR_OUTPUT); + if (onoff ==1) + { + gpio_setPin(GPIO_IR_LED_PWR); + } + else + { + gpio_clearPin(GPIO_IR_LED_PWR); + } + #endif +} + +/************************************************* + Function: IrCutCtrlThreadTask + Description: receive event and set ir cut power off + Input: N/A + Output: N/A + Return: N/A + Others: N/A +*************************************************/ + +THREAD_RETTYPE IrCutCtrlThread(void *arg) +{ + THREAD_ENTRY(); + + Delay_DelayMs(80); + DrvGOIO_Turn_Onoff_IRCUT(2); //IR CUT power off + //DBG_DUMP("\r\n [%s:%d] s3 \r\n",__FUNCTION__,__LINE__); + + g_handle_ir_cut = 0; + THREAD_RETURN(0); +} + +/************************************************* + Function: IrCutCtrlThreadInit + Description: init thread + Input: N/A + Output: N/A + Return: N/A + Others: N/A +*************************************************/ +static void IrCutCtrlThreadInit(void) +{ + //DBG_DUMP("\r\n [%s:%d] s \r\n",__FUNCTION__,__LINE__); + + g_handle_ir_cut = vos_task_create(IrCutCtrlThread, NULL, "IrCutCtrlThread", 18, 2048); + if(!g_handle_ir_cut){ + DBG_ERR("[ERROR] IR CUT thread creat failed!\r\n"); + Delay_DelayMs(80); + DrvGOIO_Turn_Onoff_IRCUT(2); + return ; + } + else + vos_task_resume(g_handle_ir_cut); + //DBG_DUMP("\r\n [%s:%d] e g_handle_ir_cut:%d\r\n",__FUNCTION__,__LINE__,g_handle_ir_cut); +} + +/************************************************* + Function: sf_ir_cut_ctrl_PowerOff + Description: init and set event flag + Input: N/A + Output: N/A + Return: N/A + Others: N/A +*************************************************/ +void sf_ir_cut_ctrl_PowerOff(void) +{ + //DBG_DUMP("\r\n [%s:%d] s \r\n",__FUNCTION__,__LINE__); + if(g_handle_ir_cut == 0) + { + IrCutCtrlThreadInit(); + } + //DBG_DUMP("\r\n [%s:%d] e \r\n",__FUNCTION__,__LINE__); +} + + + +/************************************************* + Function: sf_ir_led_set + Description: IR LED luminance control + Input: mode: 1:on 0:off ; + Output: N/A + Return: N/A + Others: N/A +*************************************************/ +void sf_ir_led_set(UINT8 mode, UINT8 flashLed, UINT8 stillExp, UINT8 isSnapVideo) +{ + printf("[%s:%d]s mode:%d,flashLed:%d,isSnapVideo:%d\n",__FUNCTION__,__LINE__,mode,flashLed, isSnapVideo); + +#if SF_HW_TEST == ENABLE + return ; +#endif + PWM_CFG pwm_cfg = { + .ui_prd = 100, + .ui_rise = 0, + .ui_fall = 100, + .ui_on_cycle = 0, + .ui_inv = 0 + }; + static UINT32 ir_flag = 1; + UINT32 ui_rise = 0; ///< Rising at which clock + if(ir_flag) + { + //CHKPNT; + pwm_open(IRLED_PWMID); + ir_flag = 0; + } + + if(mode) + { + #if HUNTING_IR_LED_940 == ENABLE + if(isSnapVideo) + { + if(flashLed == 0) + { + ui_rise = 30;//70% + } + else + { + ui_rise = 60;//40% + } + } + else + { + if(flashLed == 0) + { + ui_rise = 15;//85% + } + else + { + ui_rise = 55;//45% + } + } + #else + + //530,850ç¯ å¾…æœºç”µæµ120 å¼€ç¯pic800(25) video680(35) + if(isSnapVideo) + { + if(flashLed == 0) + { + ui_rise = 35;//65% + } + else + { + ui_rise = 65;//35% + } + } + else + { + if(flashLed == 0) + { + ui_rise = 25;//75% + } + else + { + ui_rise = 60;//40% + } + } + #endif + + + pwm_cfg.ui_rise = ui_rise; + pwm_pwm_config_clock_div(PWM0_3_CLKDIV, 14);//pwm clk = 120M/clk div+1/period + pwm_pwm_config(IRLED_PWMID, &pwm_cfg); + pwm_pwm_enable(IRLED_PWMID); + + IsNightLedOn = 1; + } + else + { + //sf_pwm_set(IR_LED_1, 0, 100, 100, 0); + pwm_pwm_disable(IRLED_PWMID); + IsNightLedOn = 0; + } +} + diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxInput_Key.c b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxInput_Key.c new file mode 100755 index 000000000..8f5b82909 --- /dev/null +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxInput_Key.c @@ -0,0 +1,248 @@ +/** + Copyright Novatek Microelectronics Corp. 2009. All rights reserved. + + @file DetKey.c + @ingroup mIPRJAPKeyIO + + @brief Scan key, modedial + Scan key, modedial + + @note Nothing. + + @date 2017/05/02 +*/ + +/** \addtogroup mIPRJAPKeyIO */ +//@{ + +#include "DxCfg.h" +#include "IOCfg.h" +#include "DxInput.h" +#include "KeyDef.h" +#include "comm/hwclock.h" +#include "comm/hwpower.h" +#if 0 +#include "rtc.h" +#include "Delay.h" +#endif +/////////////////////////////////////////////////////////////////////////////// +#define __MODULE__ DxKey +#define __DBGLVL__ 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER +#define __DBGFLT__ "*" //*=All, [mark]=CustomClass +#include +/////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +// ADC related +//////////////////////////////////////////////////////////////////////////////// +#if (ADC_KEY == ENABLE) +#define VOLDET_KEY_ADC_LVL1 (251) +#define VOLDET_KEY_ADC_LVL2 (155) +#define VOLDET_KEY_ADC_LVL3 (51) +#define VOLDET_KEY_ADC_TH (460) +#define VOLDET_KEY_ADC_LVL4 (358) + +#define VOLDET_KEY_LVL_UNKNOWN 0xFFFFFFFF +#define VOLDET_KEY_LVL_0 0 +#define VOLDET_KEY_LVL_1 1 +#define VOLDET_KEY_LVL_2 2 +#define VOLDET_KEY_LVL_3 3 +#define VOLDET_KEY_LVL_4 4 +#define VOLDET_KEY_LVL_5 5 +#endif +#if (ADC_KEY == ENABLE) +static UINT32 VolDet_GetKey1ADC(void) +{ +#if (VOLDET_ADC_CONT_MODE == DISABLE) + UINT32 uiADCValue; + + uiADCValue = adc_readData(ADC_CH_VOLDET_KEY1); + // One-Shot Mode, trigger one-shot + adc_triggerOneShot(ADC_CH_VOLDET_KEY1); + + return uiADCValue; +#else + return adc_readData(ADC_CH_VOLDET_KEY1); +#endif +} +/** + Get ADC key voltage level + + Get ADC key 2 voltage level. + + @param void + @return UINT32 key level, refer to VoltageDet.h -> VOLDET_MS_LVL_XXXX +*/ +static UINT32 VolDet_GetKey1Level(void) +{ + static UINT32 uiRetKey1Lvl; + UINT32 uiKey1ADC, uiCurKey2Lvl; + + uiKey1ADC = VolDet_GetKey1ADC(); + DBG_IND("uiKey1ADC %d \r\n", uiKey1ADC); + if (uiKey1ADC < VOLDET_KEY_ADC_TH) { + if (uiKey1ADC < VOLDET_KEY_ADC_LVL3) { + uiCurKey2Lvl = VOLDET_KEY_LVL_4; + } else if (uiKey1ADC < VOLDET_KEY_ADC_LVL2) { + uiCurKey2Lvl = VOLDET_KEY_LVL_3; + } else if (uiKey1ADC < VOLDET_KEY_ADC_LVL1) { + uiCurKey2Lvl = VOLDET_KEY_LVL_2; + } else if (uiKey1ADC < VOLDET_KEY_ADC_LVL4) { + uiCurKey2Lvl = VOLDET_KEY_LVL_1; + } else { + uiCurKey2Lvl = VOLDET_KEY_LVL_0; + } + } else { + uiCurKey2Lvl = VOLDET_KEY_LVL_UNKNOWN; + } + + uiRetKey1Lvl = uiCurKey2Lvl; + + return uiRetKey1Lvl; +} + +/** + Detect Mode Switch state. + + Detect Mode Switch state. + + @param void + @return UINT32 Mode Switch state (DSC Mode) +*/ +#endif + +//////////////////////////////////////////////////////////////////////////////// +// GPIO related + +//static BOOL g_bIsShutter2Pressed = FALSE; + +/** + Delay between toggle GPIO pin of input/output + + Delay between toggle GPIO pin of input/output + + @param void + @return void +*/ +static void DrvKey_DetKeyDelay(void) +{ + gpio_readData(0); + gpio_readData(0); + gpio_readData(0); + gpio_readData(0); +} + +void DrvKey_Init(void) +{ +} +/** + Detect normal key is pressed or not. + + Detect normal key is pressed or not. + Return key pressed status (refer to KeyDef.h) + + @param void + @return UINT32 +*/ +UINT32 DrvKey_DetNormalKey(void) +{ + UINT32 uiKeyCode = 0; + +#if (ADC_KEY == ENABLE) + UINT32 uiKey1Lvl = VolDet_GetKey1Level(); + switch (uiKey1Lvl) { + case VOLDET_KEY_LVL_UNKNOWN: + default: + break; + case VOLDET_KEY_LVL_0: + uiKeyCode |= FLGKEY_RIGHT; + break; + case VOLDET_KEY_LVL_1: + uiKeyCode |= FLGKEY_DOWN; + break; + case VOLDET_KEY_LVL_2: + uiKeyCode |= FLGKEY_SHUTTER2; + break; + case VOLDET_KEY_LVL_3: + uiKeyCode |= FLGKEY_UP; + break; + case VOLDET_KEY_LVL_4: + uiKeyCode |= FLGKEY_ENTER; + break; + } +#endif + + +#if (GPIO_KEY == ENABLE) + if (!gpio_getPin(GPIO_KEY_LEFT)) { + uiKeyCode |= FLGKEY_SHUTTER2; + } + if (!gpio_getPin(GPIO_KEY_UP)) { + uiKeyCode |= FLGKEY_UP; + } + if (!gpio_getPin(GPIO_KEY_DOWN)) { + uiKeyCode |= FLGKEY_DOWN; + } + if (!gpio_getPin(GPIO_KEY_ENTER)) { + uiKeyCode |= FLGKEY_RIGHT; + } +#endif + /* + //detect if power-on by press playback key + if (!hwpower_get_power_key(POWER_ID_PSW2)) + { + uiKeyCode |= FLGKEY_PLAYBACK; + } + */ + DBG_IND("KEY=%08x\r\n", uiKeyCode); + + DrvKey_DetKeyDelay(); + return uiKeyCode; +} +/** + Detect power key is pressed or not. + + Detect power key is pressed or not. + Return key pressed status (refer to KeyDef.h) + + @param void + @return UINT32 +*/ +UINT32 DrvKey_DetPowerKey(void) +{ + UINT32 uiKeyCode = 0; + +// if (hwpower_get_power_key(POWER_ID_PSW1)) { +// uiKeyCode = FLGKEY_KEY_POWER; +// // Reset shutdown timer +// hwpower_set_power_key(POWER_ID_PSW1, 0xf0); +// +// } + + return uiKeyCode; +} +UINT32 DrvKey_DetStatusKey(DX_STATUS_KEY_GROUP KeyGroup) +{ + UINT32 uiReturn = STATUS_KEY_LVL_UNKNOWN; + switch (KeyGroup) { + case DX_STATUS_KEY_GROUP1: + break; + + case DX_STATUS_KEY_GROUP2: + break; + + case DX_STATUS_KEY_GROUP3: + break; + + case DX_STATUS_KEY_GROUP4: + break; + + case DX_STATUS_KEY_GROUP5: + break; + + default: + DBG_ERR("[StatusKey]no this attribute"); + break; + } + return uiReturn; +} diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxOutput_LED.c b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxOutput_LED.c new file mode 100755 index 000000000..01d05659b --- /dev/null +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxOutput_LED.c @@ -0,0 +1,529 @@ +/** + Copyright Novatek Microelectronics Corp. 2005. All rights reserved. + + @file DetLED.c + @ingroup mIPRJAPKeyIO + + @brief Control LED on/off + Control LED on/off/toggle + + @note Nothing. + + @date 2005/12/15 +*/ + +/** \addtogroup mIPRJAPKeyIO */ +//@{ + +#include "DxCfg.h" +#include "IOCfg.h" + +#include "DxOutput.h" +#include "DxCommon.h" +#include "DxApi.h" + +#if defined(_MCU_ENABLE_) +#if ((LED_FOCUS_CTRL == LED_RED_BY_MCU)||(LED_FOCUS_CTRL == LED_GREEN_BY_MCU)) +#include "MCUCtrl.h" +#endif +#endif + +/////////////////////////////////////////////////////////////////////////////// +#define __MODULE__ DxDrv +#define __DBGLVL__ 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER +#define __DBGFLT__ "*" //*=All, [mark]=CustomClass +#include +/////////////////////////////////////////////////////////////////////////////// + +//#NT#set FCS LED brightness level +UINT32 FcsLedLvl = LCSBRT_LVL_03; +UINT32 FcsLedPrdVal[LCSBRT_LVL_SETTING_MAX] = { + 14, + 15, + 16, + 17, + 18, + 19, + 20 +}; + +//////////////////////////////////////////////////////////////////////////////// +// GPIO related + +/** + Turn on LED + + Turn on LED. + + @param UINT32 uiLED: Which LED, could be the following + GPIOMAP_LED_GREEN + GPIOMAP_LED_RED + GPIOMAP_LED_FCS //FOCUS + @return void +*/ +void LED_TurnOnLED(UINT32 uiLED) +{ + + DBG_IND("LED_TurnOnLED %d\r\n", uiLED); + switch (uiLED) { + case GPIOMAP_LED_GREEN: +#if (LED_GREEN_CTRL == LED_GREEN_BY_GPIO) + gpio_setPin(GPIO_GREEN_LED); +#endif + break; + + case GPIOMAP_LED_RED: +#if (LED_RED_CTRL == LED_RED_BY_GPIO) + gpio_setPin(GPIO_RED_LED); +#endif + break; + + case GPIOMAP_LED_FCS: +#if (LED_FOCUS_CTRL == LED_FOCUS_BY_GPIO) + gpio_setPin(GPIO_FOCUS_LED); +#endif +#if (LED_FOCUS_CTRL == LED_FOCUS_BY_PWM) + { + //set FOCUS LED brightness level + PWM_CFG PWMInfo; + if (pwm_open(PWMID_FOCUS_LED) != E_OK) { + pwm_stop(PWMID_FOCUS_LED); + pwm_close(PWMID_FOCUS_LED, TRUE); + pwm_open(PWMID_FOCUS_LED); + } + PWMInfo.uiDiv = 220; + PWMInfo.uiPrd = 22; + PWMInfo.uiFall = FcsLedPrdVal[FcsLedLvl]; + PWMInfo.uiOnCycle = 0; + PWMInfo.uiInv = 0; + PWMInfo.uiRise = 0; + pwm_set(PWMID_FOCUS_LED, &PWMInfo); + pwm_reload(PWMID_FOCUS_LED); + } +#endif + + default: + break; + } +} + +/** + Turn off LED + + Turn off LED. + + @param UINT32 uiLED: Which LED, could be the following + GPIOMAP_LED_GREEN + GPIOMAP_LED_RED + GPIOMAP_LED_FCS + @return void +*/ +void LED_TurnOffLED(UINT32 uiLED) +{ + DBG_IND("LED_TurnOffLED %d\r\n", uiLED); + switch (uiLED) { + case GPIOMAP_LED_GREEN: +#if (LED_GREEN_CTRL == LED_GREEN_BY_GPIO) + gpio_clearPin(GPIO_GREEN_LED); +#endif + break; + + case GPIOMAP_LED_RED: +#if (LED_RED_CTRL == LED_RED_BY_GPIO) + gpio_clearPin(GPIO_RED_LED); +#endif + break; + + case GPIOMAP_LED_FCS: +#if (LED_FOCUS_CTRL == LED_FOCUS_BY_GPIO) + gpio_clearPin(GPIO_FOCUS_LED); +#endif +#if (LED_FOCUS_CTRL == LED_FOCUS_BY_PWM) + { + //set FOCUS LED brightness level + PWM_CFG PWMInfo; + PWMInfo.uiDiv = 220; + PWMInfo.uiPrd = 0; + PWMInfo.uiFall = 0; + PWMInfo.uiOnCycle = 0; + PWMInfo.uiInv = 0; + PWMInfo.uiRise = 0; + pwm_set(PWMID_FOCUS_LED, &PWMInfo); + pwm_reload(PWMID_FOCUS_LED); + } +#endif + default: + break; + } +} + +/** + Check whether LED is on or not + + Check whether LED is on or not. + Return TRUE if LED is on, return FALSE if LED is off. + + @param UINT32 uiLED: Which LED, could be the following + GPIOMAP_LED_GREEN + GPIOMAP_LED_RED + GPIOMAP_LED_FCS + @return BOOL +*/ +BOOL LED_IsLEDOn(UINT32 uiLED) +{ + BOOL bvalue = FALSE; + DBG_IND("LED_IsLEDOn %d\r\n", uiLED); + switch (uiLED) { + case GPIOMAP_LED_GREEN: +#if (LED_GREEN_CTRL == LED_GREEN_BY_GPIO) + bvalue = gpio_getPin(GPIO_GREEN_LED); +#endif + break; + case GPIOMAP_LED_RED: +#if (LED_RED_CTRL == LED_RED_BY_GPIO) + bvalue = gpio_getPin(GPIO_RED_LED); +#endif + break; + case GPIOMAP_LED_FCS: +#if (LED_FOCUS_CTRL == LED_FOCUS_BY_GPIO) + bvalue = gpio_getPin(GPIO_FOCUS_LED); +#endif + break; + default: + bvalue = FALSE; + break; + } + return bvalue; +} + +//set FCS LED brightness level +void LED_SetFcsLevel(UINT32 uiLevel) +{ +#if (LED_FOCUS_CTRL == LED_FOCUS_BY_PWM) + FcsLedLvl = uiLevel; +#endif +} + +/////////////////////////////////////////////////////////////////////////////// + +//public func +UINT32 DrvOutGetcaps(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +UINT32 DrvOutSetcfgs(UINT32 CfgID, UINT32 Param1); // Set Config Setting +UINT32 DrvOutInit(void *pInitParam); // Set Init Parameters +UINT32 DrvOutOpen(void); // Common Constructor +UINT32 DrvOutClose(void); // Common Destructor +UINT32 DrvOutState(UINT32 StateID, UINT32 Value); // General Properties +UINT32 DrvOutControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2); // General Methods +UINT32 DrvOutCommand(CHAR *pcCmdStr); //General Command Console + +//dx object +DX_OBJECT gDevLED = { + DXFLAG_SIGN, + DX_CLASS_STATUS_EXT, + OUTPUT_VER, + "Output_LED", + 0, 0, 0, 0, + DrvOutGetcaps, + DrvOutSetcfgs, + DrvOutInit, + DrvOutOpen, + DrvOutClose, + DrvOutState, + DrvOutControl, + DrvOutCommand, + 0, +}; + +UINT32 hDevOut = (UINT32) &gDevLED; + +#define LED_BLINK_FAST (25) ///< if toggle timer interval set 20ms for 1 Count ,25*20ms = 500ms +#define LED_BLINK_SLOW (50) ///< if toggle timer interval set 20ms for 1 Count ,50*20ms = 1000ms + +#if (LED_GREEN_CTRL == LED_GREEN_BY_GPIO) +UINT32 uState_LED_GREEN = 0; +UINT32 uState_LED_GREEN_on = 0; +UINT32 uState_LED_GREEN_count = 0; +#endif +#if (LED_RED_CTRL == LED_RED_BY_GPIO) +UINT32 uState_LED_RED = 0; +UINT32 uState_LED_RED_on = 0; +UINT32 uState_LED_RED_count = 0; +#endif +#if (LED_FOCUS_CTRL == LED_FOCUS_BY_GPIO) +UINT32 uState_LED_FCS = 0; +UINT32 uState_LED_FCS_on = 0; +UINT32 uState_LED_FCS_count = 0; +#endif + +UINT32 DrvOutGetcaps(UINT32 CapID, UINT32 Param1) // Get Capability Flag (Base on interface version) +{ + UINT32 v = 0; + switch (CapID & 0x0000ffff) { + case OUTPUT_CAPS_BASE: + v = 0; + break; + case OUTPUT_CAPS_TIMER: + //for GPIOMAP_LED_GREEN: +#if (LED_GREEN_CTRL == LED_GREEN_BY_GPIO) + if (uState_LED_GREEN & 0x80000000) { //if dirty + uState_LED_GREEN &= ~0x80000000; //clear dirty + uState_LED_GREEN_count = 0; //reset count + } + uState_LED_GREEN_count++; //increase count + if (((uState_LED_GREEN == 2) && (uState_LED_GREEN_count == LED_BLINK_SLOW)) //SLOW + || ((uState_LED_GREEN == 3) && (uState_LED_GREEN_count == LED_BLINK_FAST))) { //FAST + uState_LED_GREEN_count = 0; //reset count + if (uState_LED_GREEN_on == TRUE) { //do blink + gpio_clearPin(GPIO_GREEN_LED); + uState_LED_GREEN_on = FALSE; + } else { + gpio_setPin(GPIO_GREEN_LED); + uState_LED_GREEN_on = TRUE; + } + } +#endif + //for GPIOMAP_LED_RED: +#if (LED_RED_CTRL == LED_RED_BY_GPIO) + if (uState_LED_RED & 0x80000000) { //if dirty + uState_LED_RED &= ~0x80000000; //clear dirty + uState_LED_RED_count = 0; //reset count + } + uState_LED_RED_count++; //increase count + if (((uState_LED_RED == 2) && (uState_LED_RED_count == LED_BLINK_SLOW)) //SLOW + || ((uState_LED_RED == 3) && (uState_LED_RED_count == LED_BLINK_FAST))) { //FAST + uState_LED_RED_count = 0; //reset count + if (uState_LED_RED_on == TRUE) { //do blink + gpio_clearPin(GPIO_RED_LED); + uState_LED_RED_on = FALSE; + } else { + gpio_setPin(GPIO_RED_LED); + uState_LED_RED_on = TRUE; + } + } +#endif + //for GPIOMAP_LED_FCS: +#if (LED_FOCUS_CTRL == LED_FOCUS_BY_GPIO) + if (uState_LED_FCS & 0x80000000) { //if dirty + uState_LED_FCS &= ~0x80000000; //clear dirty + uState_LED_FCS_count = 0; //reset count + } + uState_LED_FCS_count++; //increase count + if (((uState_LED_FCS == 2) && (uState_LED_FCS_count == LED_BLINK_SLOW)) //SLOW + || ((uState_LED_FCS == 3) && (uState_LED_FCS_count == LED_BLINK_FAST))) { //FAST + uState_LED_FCS_count = 0; //reset count + if (uState_LED_FCS_on == TRUE) { //do blink + gpio_clearPin(GPIO_FOCUS_LED); + uState_LED_FCS_on = FALSE; + } else { + gpio_setPin(GPIO_FOCUS_LED); + uState_LED_FCS_on = TRUE; + } + } +#endif + break; + default: + break; + } + return v; +} + +UINT32 DrvOutSetcfgs(UINT32 CfgID, UINT32 Param1) // Set Config Setting +{ + switch (CfgID) { + case OUTPUT_CFG_MODE: + break; + default: + break; + } + return DX_OK; +} + +UINT32 DrvOutInit(void *pInitParam) // Set Init Parameters +{ + DBG_FUNC_BEGIN("\r\n"); + return DX_OK; +} + +UINT32 DrvOutOpen(void) // Common Constructor +{ + DBG_FUNC_BEGIN("\r\n"); + return DX_OK; +} + +UINT32 DrvOutClose(void) // Common Destructor +{ + DBG_FUNC_BEGIN("\r\n"); + + return DX_OK; +} + +UINT32 DrvOutState(UINT32 StateID, UINT32 Value) // General Properties +{ + DBG_FUNC_BEGIN("\r\n"); + + if (StateID & DXGET) { + UINT32 rvalue = 0; + StateID &= ~DXGET; + switch (StateID) { + case GPIOMAP_LED_GREEN: +#if (LED_GREEN_CTRL == LED_GREEN_BY_GPIO) + rvalue = (uState_LED_GREEN & ~0x80000000); +#endif + break; + case GPIOMAP_LED_RED: +#if (LED_RED_CTRL == LED_RED_BY_GPIO) + rvalue = (uState_LED_RED & ~0x80000000); +#endif + break; + case GPIOMAP_LED_FCS: +#if (LED_FOCUS_CTRL == LED_FOCUS_BY_GPIO) + rvalue = (uState_LED_FCS & ~0x80000000); +#endif + break; + default: + break; + } + return rvalue; + } else if (StateID & DXSET) { + StateID &= ~DXSET; + DBG_IND("StateID %d %d\r\n", StateID, Value); + switch (StateID) { + case GPIOMAP_LED_GREEN: +#if (LED_GREEN_CTRL == LED_GREEN_BY_GPIO) + uState_LED_GREEN = 0x80000000 | Value; //set dirty + if (Value == 0) { + gpio_clearPin(GPIO_GREEN_LED); + uState_LED_GREEN_on = FALSE; + } else { + gpio_setPin(GPIO_GREEN_LED); + uState_LED_GREEN_on = FALSE; + } +#endif +#if (LED_GREEN_CTRL == LED_FOCUS_BY_MCU) + if (Value == 0) { + MCUCtrl_SendCmd(UART_CMD_LED, UART_LED_GREEN, UART_PAR_OFF, 0); + } else if (Value == 1) { + MCUCtrl_SendCmd(UART_CMD_LED, UART_LED_GREEN, UART_PAR_ON, 0); + } else if (Value == 2) { + MCUCtrl_SendCmd(UART_CMD_LED, UART_LED_GREEN, UART_PAR_BLK_F, 0); + } else if (Value == 3) { + MCUCtrl_SendCmd(UART_CMD_LED, UART_LED_GREEN, UART_PAR_BLK_S, 0); + } +#endif + break; + + case GPIOMAP_LED_RED: +#if (LED_RED_CTRL == LED_RED_BY_GPIO) + uState_LED_RED = 0x80000000 | Value; //set dirty + if (Value == 0) { + gpio_clearPin(GPIO_RED_LED); + uState_LED_RED_on = FALSE; + } else { + gpio_setPin(GPIO_RED_LED); + uState_LED_RED_on = FALSE; + } +#endif +#if (LED_RED_CTRL == LED_RED_BY_MCU) + if (Value == 0) { + MCUCtrl_SendCmd(UART_CMD_LED, UART_LED_RED, UART_PAR_OFF, 0); + } else if (Value == 1) { + MCUCtrl_SendCmd(UART_CMD_LED, UART_LED_RED, UART_PAR_ON, 0); + } else if (Value == 2) { + MCUCtrl_SendCmd(UART_CMD_LED, UART_LED_RED, UART_PAR_BLK_F, 0); + } else if (Value == 3) { + MCUCtrl_SendCmd(UART_CMD_LED, UART_LED_RED, UART_PAR_BLK_S, 0); + } else if (Value == 4) { + MCUCtrl_SendCmd(UART_CMD_LED, UART_LED_RED, UART_PAR_BLK_B, 0); + } +#endif + break; + + case GPIOMAP_LED_FCS: +#if (LED_FOCUS_CTRL == LED_FOCUS_BY_GPIO) + uState_LED_FCS = 0x80000000 | Value; //set dirty + if (Value == 0) { + gpio_clearPin(GPIO_FOCUS_LED); + uState_LED_FCS_on = FALSE; + } else { + gpio_setPin(GPIO_FOCUS_LED); + uState_LED_FCS_on = TRUE; + } +#endif +#if (LED_FOCUS_CTRL == LED_FOCUS_BY_PWM) + if (Value == 0) { + //set FOCUS LED brightness level + PWM_CFG PWMInfo; + PWMInfo.uiDiv = 220; + PWMInfo.uiPrd = 0; + PWMInfo.uiFall = 0; + PWMInfo.uiOnCycle = 0; + PWMInfo.uiInv = 0; + PWMInfo.uiRise = 0; + pwm_set(PWMID_FOCUS_LED, &PWMInfo); + pwm_reload(PWMID_FOCUS_LED); + } else { + //set FOCUS LED brightness level + PWM_CFG PWMInfo; + if (pwm_open(PWMID_FOCUS_LED) != E_OK) { + pwm_stop(PWMID_FOCUS_LED); + pwm_close(PWMID_FOCUS_LED, TRUE); + pwm_open(PWMID_FOCUS_LED); + } + PWMInfo.uiDiv = 220; + PWMInfo.uiPrd = 22; + PWMInfo.uiFall = FcsLedPrdVal[Value]; + PWMInfo.uiOnCycle = 0; + PWMInfo.uiInv = 0; + PWMInfo.uiRise = 0; + pwm_set(PWMID_FOCUS_LED, &PWMInfo); + pwm_reload(PWMID_FOCUS_LED); + } +#endif +#if (LED_FOCUS_CTRL == LED_FOCUS_BY_MCU) + if (Value == 0) { + MCUCtrl_SendCmd(UART_CMD_LED, UART_LED_BLUE, UART_PAR_OFF, 0); + } else if (Value == 1) { + MCUCtrl_SendCmd(UART_CMD_LED, UART_LED_BLUE, UART_PAR_ON, 0); + } else if (Value == 2) { + MCUCtrl_SendCmd(UART_CMD_LED, UART_LED_BLUE, UART_PAR_BLK_F, 0); + } else if (Value == 3) { + MCUCtrl_SendCmd(UART_CMD_LED, UART_LED_BLUE, UART_PAR_BLK_S, 0); + } +#endif + break; + default: + break; + } + } + return DX_OK; +} + +UINT32 DrvOutControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2) // General Methods +{ + DBG_FUNC_BEGIN("\r\n"); + + switch (CtrlID) { + case OUTPUT_CTRL_MODE: + break; + + default: + break; + } + return DX_OK; +} + +UINT32 DrvOutCommand(CHAR *pcCmdStr) //General Command Console +{ + switch (*pcCmdStr) { + case 'v': + if (!strncmp(pcCmdStr, "ver", 3)) { + DBG_DUMP("0x%X\r\n", OUTPUT_VER); + return TRUE; + } + break; + } + return FALSE; +} + + +//@} diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxPower_Battery.c b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxPower_Battery.c new file mode 100755 index 000000000..b8a8b12a5 --- /dev/null +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxPower_Battery.c @@ -0,0 +1,727 @@ +#include "DxCfg.h" +#include "IOCfg.h" +#include "DxPower.h" +#include "DxFlash.h" +#include "DxCommon.h" +#include "DxApi.h" +#include "Dx.h" +#include +#include +#include +#if defined(_MCU_ENABLE_) +#include "MCUCtrl.h" +#endif + +#define THIS_DBGLVL 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER +/////////////////////////////////////////////////////////////////////////////// +#define __MODULE__ DxPwr +#define __DBGLVL__ THIS_DBGLVL +#define __DBGFLT__ "*" //*=All, [mark]=CustomClass +#include + +#if defined(_POWER_BATT_) + +#define TEMPDET_FUNCTION DISABLE +#define TEMPDET_TEST DISABLE +#define ADC_TEST ENABLE +#define DUMMY_LOAD 0 +#define BATT_SLIDE_WINDOW_COUNT 8 + +#define VOLDET_BATTERY_420V 782 +#define VOLDET_BATTERY_415V 772 +#define VOLDET_BATTERY_410V 763 +#define VOLDET_BATTERY_405V 754 +#define VOLDET_BATTERY_400V 744 +#define VOLDET_BATTERY_390V 726 +#define VOLDET_BATTERY_380V 707 +#define VOLDET_BATTERY_378V 703 +#define VOLDET_BATTERY_377V 701 +#define VOLDET_BATTERY_376V 699 +#define VOLDET_BATTERY_375V 698 +#define VOLDET_BATTERY_374V 696 +#define VOLDET_BATTERY_373V 694 +#define VOLDET_BATTERY_372V 692 +#define VOLDET_BATTERY_371V 690 +#define VOLDET_BATTERY_370V 688 +#define VOLDET_BATTERY_369V 687 +#define VOLDET_BATTERY_367V 683 +#define VOLDET_BATTERY_366V 681 +#define VOLDET_BATTERY_360V 670 +#define VOLDET_BATTERY_355V 660 +#define VOLDET_BATTERY_350V 651 +#define VOLDET_BATTERY_340V 633 +#define VOLDET_BATTERY_004V 7 +#define CHARGE_ADC_OFFSET 25 +#define LENS_ADC_OFFSET 23 +#define LENS_ADC_OFFSET2 12 + + + +DummyLoadType dummyLoadData[11]; + +//*********************************************** +//* +//* Battery Rule depend on Model +//* +//*********************************************** + +//#define VOLDET_BATTERY_ADC_TH 0 + +#if TEMPDET_TEST +INT32 temperature_value = 0; +#endif + + +static INT32 gTempValue = 25; +#if ADC_TEST +UINT32 gAdcValue = 3000; +#endif +#if defined(_MCU_ENABLE_) +UINT32 gMCUValue = 99; +#endif + +//------------------ Battery Status Level -------------------// +#define BATT_LEVEL_COUNT 4 + +static UINT32 LiBattAdcLevelValue[BATT_LEVEL_COUNT] = { + VOLDET_BATTERY_355V, + VOLDET_BATTERY_371V, + VOLDET_BATTERY_376V, + VOLDET_BATTERY_380V, +}; + + + +#define DUMMY_LOAD_OFFSETV VOLDET_BATTERY_004V +#define LENS_MOVE_MAX_COUNT 10 + +static UINT32 *pBattAdcLevelValue = &LiBattAdcLevelValue[0];; +static UINT32 uiBattADCSlideWin[BATT_SLIDE_WINDOW_COUNT] = {0}; +static UINT8 uiBattSlideIdx = 0; +static UINT8 uiCurSlideWinCnt = 0; +static INT32 iBattAdcCalOffset = 0; +#if USB_CHARGE_FUNCTION +static UINT32 u32BattChargeCurrent = BATTERY_CHARGE_CURRENT_LOW; +#endif +#if DUMMY_LOAD +static void DrvPower_dummy_process(UINT32 *V1, UINT32 *V2, BOOL bIris); +#endif +static INT32 DrvPower_GetTempCompentation(INT32 tempValue); + +static UINT32 bDummyLoadPwrOff = FALSE; + +//static DX_CALLBACK_PTR g_fpDxPowerCB = NULL; +/** + Get battery voltage ADC value + + Get battery voltage ADC value + + @param void + @return UINT32 ADC value +*/ + + +static UINT32 DrvPowerGetcaps(UINT32 CapID, UINT32 Param1); +static UINT32 DrvPowercfgs(UINT32 CfgID, UINT32 Param1); +static UINT32 DrvPowerInit(void *pInitParam); +static UINT32 DrvPowerOpen(void); +static UINT32 DrvPowerClose(void); +static UINT32 DrvPowerState(UINT32 StateID, UINT32 Value); +static UINT32 DrvPowerControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2); +static UINT32 DrvPowerCommand(CHAR *pcCmdStr); +static UINT32 DrvPower_GetControl(DRVPWR_CTRL DrvPwrCtrl); +static void DrvPower_SetControl(DRVPWR_CTRL DrvPwrCtrl, UINT32 value); +#if USB_CHARGE_FUNCTION +static INT32 DrvPower_BattTempGet(void); +#endif +static void DrvPower_PowerOnInit(void); +DX_OBJECT gDevPowerBATT = { + DXFLAG_SIGN, + DX_CLASS_POWER_EXT, + POWER_VER, + "Power", + 0, 0, 0, 0, + DrvPowerGetcaps, + DrvPowercfgs, + DrvPowerInit, + DrvPowerOpen, + DrvPowerClose, + DrvPowerState, + DrvPowerControl, + DrvPowerCommand, + 0, +}; + + + + +static UINT32 DrvPower_GetBatteryADC(void) +{ + + UINT32 uiADCValue; + INT32 TempCompentationADC; + +#if ADC_TEST + uiADCValue = gAdcValue; +#else + #if defined(_MCU_ENABLE_) + MCUCtrl_SendCmd(UART_CMD_VBAT_DETECT,0,0,0); + uiADCValue = gMCUValue; + return uiADCValue; + #else + uiADCValue = (adc_readData(ADC_CH_VOLDET_BATTERY)); + #endif +#endif + { + TempCompentationADC = DrvPower_GetTempCompentation(gTempValue); + DBG_MSG("Temp= %d\r\n", gTempValue); +#if 0 //charlie need wait DrvFlash_IsCharge finish + if (DrvFlash_IsCharge()) { + //DBG_MSG("ADC = %d,",uiADCValue); + uiADCValue += (CHARGE_ADC_OFFSET + TempCompentationADC); + DBG_MSG("Charge ADC+= %d\r\n", CHARGE_ADC_OFFSET + TempCompentationADC); + } else { + if (gDevPower.pfCallback) { + + gDevPower.pfCallback(DRVPWR_CB_IS_LENS_MOVING, 0, 0); + DBG_MSG("ADC = %d,", uiADCValue); + uiADCValue += (LENS_ADC_OFFSET + TempCompentationADC); + DBG_MSG("lens2 ADC+= %d\r\n", LENS_ADC_OFFSET + TempCompentationADC); + + + + } + } +#else + if (gDevPowerBATT.pfCallback) { + + gDevPowerBATT.pfCallback(DRVPWR_CB_IS_LENS_MOVING, 0, 0); + DBG_MSG("ADC = %d,", uiADCValue); + uiADCValue += (LENS_ADC_OFFSET + TempCompentationADC); + DBG_MSG("lens2 ADC+= %d\r\n", LENS_ADC_OFFSET + TempCompentationADC); + + + + } +#endif + uiADCValue += (iBattAdcCalOffset / 2); + return 782;//uiADCValue; + } + +} +//#NT#2009/09/02#Lincy Lin -begin +//#Add function for check battery overheat +/** + Get battery + + Get battery Temperature ADC value + + @param void + @return UINT32 ADC value +*/ +static BOOL DrvPower_IsBattOverHeat(void) +{ + return FALSE; +} +//#NT#2009/09/02#Lincy Lin -end + + + + +/** + Get battery voltage level + + Get battery voltage level. + If battery voltage level is DRVPWR_BATTERY_LVL_EMPTY, it means + that you have to power off the system. + + @param void + @return UINT32 Battery Level, refer to VoltageDet.h -> VOLDET_BATTERY_LVL_XXXX +*/ + +static UINT32 DrvPower_GetBatteryLevel(void) +{ + static UINT32 uiPreBatteryLvl = DRVPWR_BATTERY_LVL_UNKNOWN; + //static UINT32 uiPreBatteryADC = 0; + static UINT32 uiRetBatteryLvl; + static UINT32 uiEmptycount = 0; + static UINT32 uiCount = 0; + UINT32 uiCurBatteryADC, uiCurBatteryLvl, i; + BOOL isMatch = FALSE; + + uiCurBatteryLvl = 0; + if (uiPreBatteryLvl == DRVPWR_BATTERY_LVL_UNKNOWN) { + uiCurBatteryADC = DrvPower_GetBatteryADC(); + //uiPreBatteryADC = DrvPower_GetBatteryADC() - 1; + for (i = 0; i < BATT_SLIDE_WINDOW_COUNT; i++) { + uiBattADCSlideWin[i] = uiCurBatteryADC; + DBG_MSG("AVG=%d\r\n", uiCurBatteryADC); + } + } else { + + uiCurSlideWinCnt = BATT_SLIDE_WINDOW_COUNT; + uiBattADCSlideWin[uiBattSlideIdx++] = DrvPower_GetBatteryADC(); + if (uiBattSlideIdx >= uiCurSlideWinCnt) { + uiBattSlideIdx = 0; + } + uiCurBatteryADC = 0; + for (i = 0; i < uiCurSlideWinCnt; i++) { + uiCurBatteryADC += uiBattADCSlideWin[i]; + DBG_MSG("A[%d]=%d,", i, uiBattADCSlideWin[i]); + } + uiCurBatteryADC /= uiCurSlideWinCnt; + DBG_MSG("AVG=%d", uiCurBatteryADC); + DBG_MSG(", V=%d", uiCurBatteryADC * 42 / 9100); + DBG_MSG(".%02d\r\n", (uiCurBatteryADC * 42 / 91) % 100); + } + + //DBG_IND("%d,%d,%d\r\n",VOLDET_BATTERY_ADC_LVL0,VOLDET_BATTERY_ADC_LVL1,VOLDET_BATTERY_ADC_LVL2); + for (i = BATT_LEVEL_COUNT; i > 0; i--) { + if (uiCurBatteryADC > pBattAdcLevelValue[i - 1]) { + uiCurBatteryLvl = i; + isMatch = TRUE; + break; + } + } + if (isMatch != TRUE) { + uiCurBatteryLvl = 0; + } + + // Debounce + if ((uiCurBatteryLvl == uiPreBatteryLvl) || + (uiPreBatteryLvl == DRVPWR_BATTERY_LVL_UNKNOWN)) { + uiRetBatteryLvl = uiCurBatteryLvl; + } + uiPreBatteryLvl = uiCurBatteryLvl; + //uiPreBatteryADC = uiCurBatteryADC; + + if (uiCount % 2 == 0) { + uiRetBatteryLvl = uiPreBatteryLvl; + } + uiCount++; + // + if (uiEmptycount || uiRetBatteryLvl == DRVPWR_BATTERY_LVL_0) { + uiEmptycount++; + if (uiEmptycount == 4) { + return DRVPWR_BATTERY_LVL_EMPTY; + } + } + + return DRVPWR_BATTERY_LVL_4;//uiRetBatteryLvl; +} + + +static void DrvPower_PowerOnInit(void) +{ + pBattAdcLevelValue = &LiBattAdcLevelValue[0]; +#if USB_CHARGE_FUNCTION + gTempValue = DrvPower_BattTempGet(); +#endif +} + +UINT32 DrvPower_DummyLoad(void) +{ +#if DUMMY_LOAD + UINT32 Ave_V, deltaV, V1, V2; + + DrvPower_dummy_process(&V1, &V2, FALSE); + deltaV = V2 - V1; + Ave_V = V1; + dummyLoadData[0].deltaV = deltaV; + dummyLoadData[0].Ave_V = Ave_V; + + + if (dummyLoadData[0].Ave_V < (LiBattAdcLevelValue[0] + DUMMY_LOAD_OFFSETV)) { + bDummyLoadPwrOff = TRUE; + + } else { + bDummyLoadPwrOff = FALSE; + } + DBG_IND("Ave_V=%d ; deltaV=%d , bDummyLoadPwrOff=%d\r\n", Ave_V, deltaV, bDummyLoadPwrOff); + return (!bDummyLoadPwrOff); +#else + return TRUE; +#endif +} +#if DUMMY_LOAD +static void DrvPower_dummy_process(UINT32 *V1, UINT32 *V2, BOOL bIris) +{ + UINT32 i, Va; + UINT32 Vtotal, DetectLoop = 25; + float Vtmp1, Vtmp2, Vtmp3; + + if (gDevPower.pfCallback) { + gpio_clearPin(GPIO_LENS_MD_RST); // Enable motor driver.GPIO_LENS_MD_RST + Delay_DelayMs(5); + gpio_setPin(GPIO_LENS_MD_RST); // Enable motor driver.GPIO_LENS_MD_RST + gDevPower.pfCallback(DRVPWR_CB_DUMMY_LOAD_START, 0, 0); + } + Delay_DelayMs(40); + + Vtotal = 0; + for (i = 0; i < DetectLoop ; i++) { //sample 25 times. + Va = DrvPower_GetBatteryADC(); //sample average value.(In loading) + Delay_DelayUs(200); + Vtotal += Va; + } + *V1 = Vtotal / DetectLoop; + if (gDevPower.pfCallback) { + gDevPower.pfCallback(DRVPWR_CB_DUMMY_LOAD_END, 0, 0); + } + Delay_DelayMs(5); + Vtotal = 0; + for (i = 0; i < DetectLoop ; i++) { //sample 25 times. + Va = DrvPower_GetBatteryADC(); //sample average value.(after loading) + Delay_DelayUs(200); + Vtotal += Va; + } + + *V2 = Vtotal / DetectLoop; + + + Vtmp1 = (float)(*V1) * 3.3 * 1.39 / 4096; + Vtmp2 = (float)(*V2) * 3.3 * 1.39 / 4096; + + + Vtmp3 = Vtmp2 - Vtmp1; + + DBG_IND("delta=(%1.3f, %d) Ave_V:%1.3f V2:%1.3f, %d, %d, Cal = %d \r\n", Vtmp3, (*V2) - (*V1), Vtmp1, Vtmp2, *V1, *V2, iBattAdcCalOffset); + +} +#endif + +static void DrvPower_BattADC_Calibration(BOOL enable) +{ +} + +#if USB_CHARGE_FUNCTION +static void DrvPower_EnableChargeIC(BOOL bCharge) +{ + +} + +static void DrvPower_ChargeBattEn(BOOL bCharge) +{ + +} + + +static void DrvPower_ChargeCurrentSet(UINT32 Current) +{ + u32BattChargeCurrent = Current; +} + +static UINT32 DrvPower_ChargeCurrentGet(void) +{ + return u32BattChargeCurrent; +} + +static void DrvPower_ChargeISet(BOOL isHigh) +{ + +} + +static BOOL DrvPower_ChargeIGet(void) +{ + return 0; +} + +static void DrvPower_ChargeVSet(BOOL isHigh) +{ + +} + +static BOOL DrvPower_ChargeVGet(void) +{ + return 0; +} + + +static BOOL DrvPower_IsUnderCharge(void) +{ + return 0; +} + +static BOOL DrvPower_IsUSBChargeOK(void) +{ + return 0; +} + +static BOOL DrvPower_IsBattIn(void) +{ + return TRUE; + +} + +static BOOL DrvPower_IsDeadBatt(void) +{ + return FALSE; +} + +static BOOL DrvPower_IsNeedRecharge(void) +{ + return FALSE; +} + +static INT32 DrvPower_BattTempGet(void) +{ + return 25; +} +#endif + +static INT32 DrvPower_GetTempCompentation(INT32 tempValue) +{ + return 0; +} + +static void DrvPower_SetControl(DRVPWR_CTRL DrvPwrCtrl, UINT32 value) +{ + DBG_IND("DrvPwrCtrl(%d), value(%d)\r\n", DrvPwrCtrl, value); + switch (DrvPwrCtrl) { + case DRVPWR_CTRL_BATTERY_CALIBRATION_EN: + DrvPower_BattADC_Calibration((BOOL)value); + break; + + case DRVPWR_CTRL_BATTERY_ADC_CAL_OFFSET: + iBattAdcCalOffset = (INT32)value; + break; + +#if USB_CHARGE_FUNCTION + case DRVPWR_CTRL_BATTERY_CHARGE_EN: + DrvPower_ChargeBattEn((BOOL)value); + break; + case DRVPWR_CTRL_BATTERY_CHARGE_CURRENT: + DrvPower_ChargeCurrentSet(value); + break; + + case DRVPWR_CTRL_BATTERY_CHARGE_ISET: + DrvPower_ChargeISet((BOOL)value); + break; + + case DRVPWR_CTRL_BATTERY_CHARGE_VSET: + DrvPower_ChargeVSet((BOOL)value); + break; + + case DRVPWR_CTRL_ENABLE_CHARGEIC: + DrvPower_EnableChargeIC((BOOL)value); + break; + +#endif +#if defined(_MCU_ENABLE_) + case DRVPWR_CTRL_PIR_EN: + if(value!=0) { + gpio_setPin(PIR_POWER_ON); + Delay_DelayMs(100); + gpio_clearPin(PIR_POWER_ON); + MCUCtrl_SendCmd(UART_CMD_PIR_SWITCH,UART_PAR_ON,0,0); + } else { + gpio_setPin(PIR_POWER_OFF); + Delay_DelayMs(100); + gpio_clearPin(PIR_POWER_OFF); + MCUCtrl_SendCmd(UART_CMD_PIR_SWITCH,UART_PAR_OFF,0,0); + } + break; +#endif + case DRVPWR_CTRL_PSW1: + hwpower_set_power_key(POWER_ID_PSW1, value); + break; + case DRVPWR_CTRL_HWRT: + hwpower_set_power_key(POWER_ID_HWRT, value); + break; + case DRVPWR_CTRL_SWRT: + hwpower_set_power_key(POWER_ID_SWRT, value); + break; + default: + DBG_ERR("DrvPwrCtrl(%d)\r\n", DrvPwrCtrl); + break; + } +} + +static UINT32 DrvPower_GetControl(DRVPWR_CTRL DrvPwrCtrl) +{ + UINT32 rvalue = 0; + switch (DrvPwrCtrl) { + case DRVPWR_CTRL_BATTERY_LEVEL: + rvalue = DrvPower_GetBatteryLevel(); + break; + case DRVPWR_CTRL_BATTERY_ADC_VALUE: + rvalue = DrvPower_GetBatteryADC(); + break; + case DRVPWR_CTRL_BATTERY_ADC_CAL_OFFSET: + rvalue = iBattAdcCalOffset; + break; + case DRVPWR_CTRL_IS_DUMMUYLOAD_POWEROFF: + rvalue = bDummyLoadPwrOff; + break; + case DRVPWR_CTRL_IS_BATT_OVERHEAT: + rvalue = (UINT32)DrvPower_IsBattOverHeat(); + break; +#if USB_CHARGE_FUNCTION + case DRVPWR_CTRL_IS_BATT_INSERT: + rvalue = (UINT32)DrvPower_IsBattIn(); + break; + case DRVPWR_CTRL_IS_DEAD_BATT: + rvalue = (UINT32)DrvPower_IsDeadBatt(); + break; + case DRVPWR_CTRL_IS_NEED_RECHARGE: + rvalue = (UINT32)DrvPower_IsNeedRecharge(); + break; + case DRVPWR_CTRL_BATTERY_CHARGE_EN: + rvalue = (UINT32)DrvPower_IsUnderCharge(); + break; + case DRVPWR_CTRL_BATTERY_CHARGE_OK: + rvalue = (UINT32)DrvPower_IsUSBChargeOK(); + break; + case DRVPWR_CTRL_BATTERY_CHARGE_CURRENT: + rvalue = DrvPower_ChargeCurrentGet(); + break; + case DRVPWR_CTRL_BATTERY_CHARGE_ISET: + rvalue = (UINT32)DrvPower_ChargeIGet(); + break; + case DRVPWR_CTRL_BATTERY_CHARGE_VSET: + rvalue = (UINT32)DrvPower_ChargeVGet(); + break; + case DRVPWR_CTRL_BATTERY_TEMPERATURE: +#if USB_CHARGE_FUNCTION + rvalue = DrvPower_BattTempGet(); +#endif + break; + +#else + case DRVPWR_CTRL_BATTERY_CHARGE_EN: + rvalue = FALSE; + break; +#endif + case DRVPWR_CTRL_POWERON_SOURCE: + #if defined(_MCU_ENABLE_) + rvalue = MCUCtrl_SendCmd(UART_CMD_POWER_ON_REASON,0,0,0); + #else + rvalue = hwpower_get_poweron_state(POWER_STATE_SRC); + #endif + break; + case DRVPWR_CTRL_POWER_LOST: + #if defined(_MCU_ENABLE_) + rvalue = MCUCtrl_SendCmd(UART_CMD_POWER_ON_REASON,0,0,0); + #else + rvalue = hwpower_get_poweron_state(POWER_STATE_FIRST); + #endif + break; + case DRVPWR_CTRL_PSW1: + rvalue = hwpower_get_power_key(POWER_ID_PSW1); + break; + case DRVPWR_CTRL_HWRT: + rvalue = hwpower_get_power_key(POWER_ID_HWRT); + break; + case DRVPWR_CTRL_SWRT: + rvalue = hwpower_get_power_key(POWER_ID_SWRT); + break; + default: + DBG_ERR("DrvPwrCtrl(%d)\r\n", DrvPwrCtrl); + break; + } + return rvalue; +} +/* +void DrvPower_RegCB(DX_CALLBACK_PTR fpDxPowerCB) +{ + + g_fpDxPowerCB = fpDxPowerCB; +} +*/ +///////////DX object +static UINT32 DrvPowerGetcaps(UINT32 CapID, UINT32 Param1) +{ + + return DX_OK; +} + +static UINT32 DrvPowercfgs(UINT32 CfgID, UINT32 Param1) +{ + + return DX_OK; +} +static UINT32 DrvPowerInit(void *pInitParam) +{ + DBG_IND("Init\r\n"); + DrvPower_PowerOnInit(); + return DX_OK; +} + +static UINT32 DrvPowerOpen(void) +{ + DBG_IND("open\r\n"); + hwclock_open(HWCLOCK_MODE_RTC); + return DX_OK; +} + +static UINT32 DrvPowerClose(void) +{ + DBG_IND("close\r\n"); + hwclock_close(); + return DX_OK; +} + +static UINT32 DrvPowerState(UINT32 StateID, UINT32 Value) +{ + if (StateID & DXGET) { + StateID &= ~DXGET; + return DrvPower_GetControl(StateID); + } else if (StateID & DXSET) { + StateID &= ~DXSET; + DrvPower_SetControl(StateID, Value); + } + return DX_OK; +} +static UINT32 DrvPowerControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2) +{ + switch(CtrlID) { + case DRVPWR_CTRL_CURRENT_TIME: + printf("[%s:%d] s DRVPWR_CTRL_CURRENT_TIME\n",__FUNCTION__,__LINE__); + if (Param1 == 0) + hwclock_set_time(TIME_ID_CURRENT, *(struct tm*)Param2, 0); + if (Param1 == 1) + *((struct tm*)Param2) = hwclock_get_time(TIME_ID_CURRENT); + break; + case DRVPWR_CTRL_HWRT_TIME: + printf("[%s:%d] s DRVPWR_CTRL_HWRT_TIME\n",__FUNCTION__,__LINE__); + if (Param1 == 0) + hwclock_set_time(TIME_ID_HWRT, *(struct tm*)Param2, 0); + if (Param1 == 1) + *((struct tm*)Param2) = hwclock_get_time(TIME_ID_HWRT); + break; + case DRVPWR_CTRL_SWRT_TIME: + printf("[%s:%d] s DRVPWR_CTRL_SWRT_TIME\n",__FUNCTION__,__LINE__); + if (Param1 == 0) + hwclock_set_time(TIME_ID_SWRT, *(struct tm*)Param2, 0); + if (Param1 == 1) + *((struct tm*)Param2) = hwclock_get_time(TIME_ID_SWRT); + break; + } + return DX_OK; +} + +static UINT32 DrvPowerCommand(CHAR *pcCmdStr) //General Command Console +{ + + switch (*pcCmdStr) { + case 'd': + /*if (!strncmp(pcCmdStr, "Nand dump", 9)) + { + return TRUE; + }*/ + break; + } + return FALSE; +} +/* +static void DrvPowerCallback(UINT32 EventID, UINT32 Param1, UINT32 Param2){ + + if(g_fpDxPowerCB){ + g_fpDxPowerCB(EventID,Param1,Param2); + } +} +*/ + + +#endif + diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxPower_DC.c b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxPower_DC.c new file mode 100755 index 000000000..527622a58 --- /dev/null +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxPower_DC.c @@ -0,0 +1,272 @@ +#include "DxCfg.h" +#include "IOCfg.h" +#include "DxPower.h" +#include "DxCommon.h" +#include "DxApi.h" +#include "Dx.h" +#include +#include +#include + +#define THIS_DBGLVL 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER +/////////////////////////////////////////////////////////////////////////////// +#define __MODULE__ DxPwr +#define __DBGLVL__ THIS_DBGLVL +#define __DBGFLT__ "*" //*=All, [mark]=CustomClass +#include + +#if defined(_POWER_DC_) + +static UINT32 DrvPowerGetcaps(UINT32 CapID, UINT32 Param1); +static UINT32 DrvPowercfgs(UINT32 CfgID, UINT32 Param1); +static UINT32 DrvPowerInit(void *pInitParam); +static UINT32 DrvPowerOpen(void); +static UINT32 DrvPowerClose(void); +static UINT32 DrvPowerState(UINT32 StateID, UINT32 Value); +static UINT32 DrvPowerControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2); +static UINT32 DrvPowerCommand(CHAR *pcCmdStr); +static UINT32 DrvPower_GetControl(DRVPWR_CTRL DrvPwrCtrl); +static void DrvPower_SetControl(DRVPWR_CTRL DrvPwrCtrl, UINT32 value); + +DX_OBJECT gDevPowerDC = { + DXFLAG_SIGN, + DX_CLASS_POWER_EXT, + POWER_VER, + "PowerDC", + 0, 0, 0, 0, + DrvPowerGetcaps, + DrvPowercfgs, + DrvPowerInit, + DrvPowerOpen, + DrvPowerClose, + DrvPowerState, + DrvPowerControl, + DrvPowerCommand, + 0, +}; + +UINT32 DrvPower_DummyLoad(void) +{ + return TRUE; +} + + +static void DrvPower_SetControl(DRVPWR_CTRL DrvPwrCtrl, UINT32 value) +{ + DBG_IND("DrvPwrCtrl(%d), value(%d)\r\n", DrvPwrCtrl, value); + switch (DrvPwrCtrl) { + case DRVPWR_CTRL_BATTERY_CALIBRATION_EN: + break; + + case DRVPWR_CTRL_BATTERY_ADC_CAL_OFFSET: + break; + +#if USB_CHARGE_FUNCTION + case DRVPWR_CTRL_BATTERY_CHARGE_EN: + break; + case DRVPWR_CTRL_BATTERY_CHARGE_CURRENT: + break; + case DRVPWR_CTRL_BATTERY_CHARGE_ISET: + break; + case DRVPWR_CTRL_BATTERY_CHARGE_VSET: + break; + case DRVPWR_CTRL_ENABLE_CHARGEIC: + break; +#endif + case DRVPWR_CTRL_PSW1: +// hwpower_set_power_key(POWER_ID_PSW1, value); + break; + case DRVPWR_CTRL_HWRT: +// hwpower_set_power_key(POWER_ID_HWRT, value); + break; + case DRVPWR_CTRL_SWRT: +// hwpower_set_power_key(POWER_ID_SWRT, value); + break; + default: + DBG_ERR("DrvPwrCtrl(%d)\r\n", DrvPwrCtrl); + break; + } +} + +static UINT32 DrvPower_GetControl(DRVPWR_CTRL DrvPwrCtrl) +{ + UINT32 rvalue = 0; + switch (DrvPwrCtrl) { + case DRVPWR_CTRL_BATTERY_LEVEL: + break; + case DRVPWR_CTRL_BATTERY_ADC_VALUE: + break; + case DRVPWR_CTRL_BATTERY_ADC_CAL_OFFSET: + break; + case DRVPWR_CTRL_IS_DUMMUYLOAD_POWEROFF: + break; + case DRVPWR_CTRL_IS_BATT_OVERHEAT: + break; +#if USB_CHARGE_FUNCTION + case DRVPWR_CTRL_IS_BATT_INSERT: + break; + case DRVPWR_CTRL_IS_DEAD_BATT: + break; + case DRVPWR_CTRL_IS_NEED_RECHARGE: + break; + case DRVPWR_CTRL_BATTERY_CHARGE_EN: + break; + case DRVPWR_CTRL_BATTERY_CHARGE_OK: + break; + case DRVPWR_CTRL_BATTERY_CHARGE_CURRENT: + break; + case DRVPWR_CTRL_BATTERY_CHARGE_ISET: + break; + case DRVPWR_CTRL_BATTERY_CHARGE_VSET: + break; + case DRVPWR_CTRL_BATTERY_TEMPERATURE: + break; +#else + case DRVPWR_CTRL_BATTERY_CHARGE_EN: + rvalue = FALSE; + break; +#endif + case DRVPWR_CTRL_POWERON_SOURCE: + #if defined(_MCU_ENABLE_) + rvalue = MCUCtrl_SendCmd(UART_CMD_POWER_ON_REASON,0,0,0); + #else +// rvalue = hwpower_get_poweron_state(POWER_STATE_SRC); + #endif + break; + case DRVPWR_CTRL_POWER_LOST: + #if defined(_MCU_ENABLE_) + rvalue = MCUCtrl_SendCmd(UART_CMD_POWER_ON_REASON,0,0,0); + #else +// rvalue = hwpower_get_poweron_state(POWER_STATE_FIRST); + #endif + break; + case DRVPWR_CTRL_PSW1: +// rvalue = hwpower_get_power_key(POWER_ID_PSW1); + break; + case DRVPWR_CTRL_HWRT: +// rvalue = hwpower_get_power_key(POWER_ID_HWRT); + break; + case DRVPWR_CTRL_SWRT: +// rvalue = hwpower_get_power_key(POWER_ID_SWRT); + break; + default: + DBG_ERR("DrvPwrCtrl(%d)\r\n", DrvPwrCtrl); + break; + } + return rvalue; +} +/* +void DrvPower_RegCB(DX_CALLBACK_PTR fpDxPowerCB) +{ + + g_fpDxPowerCB = fpDxPowerCB; +} +*/ +///////////DX object +static UINT32 DrvPowerGetcaps(UINT32 CapID, UINT32 Param1) +{ + UINT32 v = 0; + switch (CapID & 0x0000ffff) { + case POWER_CAPS_BASE: + v = POWER_BF_DRTC; + break; + default: + break; + } + return v; +} + +static UINT32 DrvPowercfgs(UINT32 CfgID, UINT32 Param1) +{ + + return DX_OK; +} +static UINT32 DrvPowerInit(void *pInitParam) +{ + DBG_IND("Init\r\n"); + return DX_OK; +} + +static UINT32 DrvPowerOpen(void) +{ + DBG_IND("open\r\n"); + //DBG_WRN("[%s:%d] s HWCLOCK_MODE_RTC\n",__FUNCTION__,__LINE__); + hwclock_open(HWCLOCK_MODE_RTC); + return DX_OK; +} + +static UINT32 DrvPowerClose(void) +{ + DBG_IND("close\r\n"); + hwclock_close(); + return DX_OK; +} + +static UINT32 DrvPowerState(UINT32 StateID, UINT32 Value) +{ + if (StateID & DXGET) { + StateID &= ~DXGET; + return DrvPower_GetControl(StateID); + } else if (StateID & DXSET) { + StateID &= ~DXSET; + DrvPower_SetControl(StateID, Value); + } + return DX_OK; +} +static UINT32 DrvPowerControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2) +{ + switch(CtrlID) { + case DRVPWR_CTRL_CURRENT_TIME: + //DBG_WRN("[%s:%d] s DRVPWR_CTRL_CURRENT_TIME\n",__FUNCTION__,__LINE__); + if (Param1 == 0) { + hwclock_set_time(TIME_ID_CURRENT, *(struct tm*)Param2, 0); + } + if (Param1 == 1) { + *((struct tm*)Param2) = hwclock_get_time(TIME_ID_CURRENT); + } + break; + case DRVPWR_CTRL_HWRT_TIME: + //DBG_WRN("[%s:%d] s DRVPWR_CTRL_HWRT_TIME\n",__FUNCTION__,__LINE__); + if (Param1 == 0) { + hwclock_set_time(TIME_ID_HWRT, *(struct tm*)Param2, 0); + } + if (Param1 == 1) { + *((struct tm*)Param2) = hwclock_get_time(TIME_ID_HWRT); + } + break; + case DRVPWR_CTRL_SWRT_TIME: + //DBG_WRN("[%s:%d] s DRVPWR_CTRL_SWRT_TIME\n",__FUNCTION__,__LINE__); + if (Param1 == 0) { + hwclock_set_time(TIME_ID_SWRT, *(struct tm*)Param2, 0); + } + if (Param1 == 1) { + *((struct tm*)Param2) = hwclock_get_time(TIME_ID_SWRT); + } + break; + } + return DX_OK; +} + +static UINT32 DrvPowerCommand(CHAR *pcCmdStr) //General Command Console +{ + + switch (*pcCmdStr) { + case 'd': + /*if (!strncmp(pcCmdStr, "Nand dump", 9)) + { + return TRUE; + }*/ + break; + } + return FALSE; +} +/* +static void DrvPowerCallback(UINT32 EventID, UINT32 Param1, UINT32 Param2){ + + if(g_fpDxPowerCB){ + g_fpDxPowerCB(EventID,Param1,Param2); + } +} +*/ + +#endif diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxSound_Audio.c b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxSound_Audio.c new file mode 100755 index 000000000..28f172cda --- /dev/null +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxSound_Audio.c @@ -0,0 +1,1122 @@ +#include "DxCfg.h" +#include "IOCfg.h" + +#include "Debug.h" +#include "Audio.h" +#include "eac.h" + +#include "DxSound.h" +#include "mIType.h" +#include "ErrorNo.h" +#include "Audio.h" +#include "hdmitx.h" + +#include "DxCommon.h" +#include "DxApi.h" + +#include "kwrap/type.h" +#include "DxType.h" +#include "Dx.h" +#include "stdio.h" //for sscanf +#include "AudioCodec.h" + +/////////////////////////////////////////////////////////////////////////////// +#define __MODULE__ DxDrv +#define __DBGLVL__ 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER +#define __DBGFLT__ "*" //*=All, [mark]=CustomClass +#include +/////////////////////////////////////////////////////////////////////////////// + +#define DRVSOUND_OUTDEV_CONFIG_CNT 5 +#define DRVSOUND_MAX_VOL_LVL 100 +#define DRVSOUND_DEFAULT_SET AUDIO_DEFSET_20DB + +typedef struct { + DRVSOUND_VOUT vidOutType; + AUDIO_CH audChannel; + BOOL monoExpand; +} DRVSOUND_OUTDEV_CONFIG; + +typedef enum { + DRVSOUND_SR_8000 = 8000, ///< 8 KHz + DRVSOUND_SR_11025 = 11025, ///< 11.025 KHz + DRVSOUND_SR_12000 = 12000, ///< 12 KHz + DRVSOUND_SR_16000 = 16000, ///< 16 KHz + DRVSOUND_SR_22050 = 22050, ///< 22.05 KHz + DRVSOUND_SR_24000 = 24000, ///< 24 KHz + DRVSOUND_SR_32000 = 32000, ///< 32 KHz + DRVSOUND_SR_44100 = 44100, ///< 44.1 KHz + DRVSOUND_SR_48000 = 48000, ///< 48 KHz + ENUM_DUMMY4WORD(DRVSOUND_SR) +} DRVSOUND_SR; + +#if 1 +DRVSOUND_OUTDEV_CONFIG gDxSndAudOutDevConfigTbl[DRVSOUND_OUTDEV_CONFIG_CNT] = { + {DRVSOUND_VOUT_LCD, AUDIO_CH_LEFT, FALSE}, + {DRVSOUND_VOUT_TV, AUDIO_CH_RIGHT, FALSE}, + {DRVSOUND_VOUT_HDMI, AUDIO_CH_LEFT, FALSE}, + {DRVSOUND_VOUT_LCDTV, AUDIO_CH_STEREO, FALSE}, + {DRVSOUND_VOUT_LCDHDMI, AUDIO_CH_LEFT, TRUE}, +}; +#else +DRVSOUND_OUTDEV_CONFIG gDxSndAudOutDevConfigTbl[DRVSOUND_OUTDEV_CONFIG_CNT] = { + {DRVSOUND_VOUT_LCD, AUDIO_CH_LEFT, TRUE}, + {DRVSOUND_VOUT_TV, AUDIO_CH_LEFT, TRUE}, + {DRVSOUND_VOUT_HDMI, AUDIO_CH_LEFT, FALSE}, + {DRVSOUND_VOUT_LCDTV, AUDIO_CH_LEFT, TRUE}, + {DRVSOUND_VOUT_LCDHDMI, AUDIO_CH_LEFT, TRUE}, +}; +#endif + +DRVSOUND_OUTDEV_CONFIG *gpCurDrvAudOutDev = &gDxSndAudOutDevConfigTbl[0]; +UINT32 gDrvSndTotalVolLvl = 0xFFFFFFFF; +PAUDIO_CODEC_FUNC gDrvSndCodecFunc = 0; +AUDIO_CODECSEL gDrvSndCodecSel = AUDIO_CODECSEL_DEFAULT; +AUDIO_VOL_LEVEL gDrvSndTotalAudVolLvl = AUDIO_VOL_LEVEL64;////AUDIO_VOL_LEVEL8 +UINT32 gCurDrvSndVol = 50; +AUDIO_GAIN gCurDrvSndGain = AUDIO_GAIN_4; +UINT32 gDrvSndTotalGainLvl = AUDIO_RECG_LEVEL8; +BOOL gDrvSndConfigALC = TRUE; +#ifdef _AudCodecExt_None_ +BOOL gDrvSndCodecExt = FALSE; +#else +BOOL gDrvSndCodecExt = TRUE; +#endif + +#ifndef _AudCodecExt_None_ +AUDIO_SETTING embedded_setting = +{ + .Clock.bClkExt = FALSE, // Must be + .Clock.Clk = AUDIO_CLK_12288, // Clock = Sampling rate * 256 + .I2S.bMaster = TRUE, // Must be + .I2S.I2SFmt = AUDIO_I2SFMT_STANDARD, // Must be + .I2S.ClkRatio = AUDIO_I2SCLKR_256FS_32BIT, // Must be + .Fmt = AUDIO_FMT_I2S, // Must be + .SamplingRate = AUDIO_SR_48000, // Sampling rate = Clock / 256 + .Channel = AUDIO_CH_STEREO, //AUDIO_CH_RIGHT; // Audio channel + .RecSrc = AUDIO_RECSRC_MIC, // Must be + .Output = AUDIO_OUTPUT_SPK, + .bEmbedded = TRUE, +}; + +AUDIO_SETTING external_setting = +{ + .Clock.bClkExt = FALSE, // Must be + .Clock.Clk = AUDIO_CLK_12288, // Clock = Sampling rate * 256 + .I2S.bMaster = TRUE, // Must be + .I2S.I2SFmt = AUDIO_I2SFMT_STANDARD, // Must be + .I2S.ClkRatio = AUDIO_I2SCLKR_256FS_32BIT, // Must be + .Fmt = AUDIO_FMT_I2S, // Must be + .SamplingRate = AUDIO_SR_48000, // Sampling rate = Clock / 256 + .Channel = AUDIO_CH_RIGHT, //AUDIO_CH_RIGHT; // Audio channel + .RecSrc = AUDIO_RECSRC_MIC, // Must be + .Output = AUDIO_OUTPUT_SPK, + .bEmbedded = TRUE, +}; +#endif + + +//========== Debug Messsage ======= +#ifdef NDEBUG //release version +#define _DRVSOUND_DBG_ 0 +#else +#define _DRVSOUND_DBG_ 3 +#endif + +#if (_DRVSOUND_DBG_ > 2) +#define DbgMsg_DrvSoundIO(msg) DBG_IND msg +#define DbgMsg_DrvSound(msg) DBG_IND msg +#define DbgCode_DrvSound(x) x + +_INLINE void DrvSound_DmpOutDevConfig(void) +{ + DBG_IND("\r\n"); + DBG_IND("audCodec= %d \r\n", gpCurDrvAudOutDev->vidOutType); + DBG_IND("audChannel= %d \r\n", gpCurDrvAudOutDev->audChannel); + DBG_IND("monoExpand= %d \r\n", gpCurDrvAudOutDev->monoExpand); +} + +#else + +#define DbgMsg_DrvSoundIO(msg) +#define DbgMsg_DrvSound(msg) +#define DbgCode_DrvSound(x) + +_INLINE void DrvSound_DmpOutDevConfig(void) {} + +#endif +ER DrvSound_SetCodec(PAUDIO_CODEC_FUNC codecFunc, AUDIO_CODECSEL audCodecSel); +ER DrvSound_SetTotalVolLvl(AUDIO_VOL_LEVEL volLvl); +ER DrvSound_SetTotalGainLvl(AUDIO_RECG_LEVEL gainLvl); +ER DrvSound_SwitchExtCodec(BOOL isExt); +ER DrvSound_GetExtCodecFP(PAUDIO_CODEC_FUNC pAudCodecFunc); + + +ER DrvSound_SetOutDevConfig(UINT32 outDevIdx, PAUDTS_OBJ pAudPlayObj) +{ + ER retV = E_OK; + DBG_IND(":idx=%d\r\n", outDevIdx); + + if (0 == pAudPlayObj) { + DBG_ERR("No AudObj\r\n"); + return E_PAR; + } + if (outDevIdx >= DRVSOUND_OUTDEV_CONFIG_CNT) { + DBG_ERR(":idx=%d\r\n", outDevIdx); + return E_PAR; + } + gpCurDrvAudOutDev = &gDxSndAudOutDevConfigTbl[outDevIdx]; + DrvSound_DmpOutDevConfig(); + if (FALSE == pAudPlayObj->isOpened()) { + DBG_ERR("idx=%d,pAudPlayObj Not opened,Open now!\r\n", __func__, outDevIdx); + pAudPlayObj->open(); + } + + //[Config audio Codec & Output] + //Speaker is connected to IC Speaker Output + //TV Audio is connected to IC HP_R Output + if (gpCurDrvAudOutDev->vidOutType == DRVSOUND_VOUT_LCD) { + DBG_IND("video: device=LCD\r\n"); + aud_switchCodec(AUDIO_CODECSEL_DEFAULT); + DBG_IND("audio: codec=DEFAULT device=LCD\r\n"); + aud_setOutput(AUDIO_OUTPUT_SPK); //or AUDIO_OUTPUT_MONO//AUDIO_OUTPUT_SPK + aud_setFeature(AUDIO_FEATURE_SPK_PWR_ALWAYSON, TRUE); + aud_setFeature(AUDIO_FEATURE_INTERFACE_ALWAYS_ACTIVE, FALSE); + aud_setFeature(AUDIO_FEATURE_DISCONNECT_HDMI, TRUE); + aud_setFeature(AUDIO_FEATURE_PLAY2ALLCODEC, FALSE); + } else if (gpCurDrvAudOutDev->vidOutType == DRVSOUND_VOUT_TV) { + DBG_IND("video: device=TV\r\n"); + DBG_IND("audio: codec=DEFAULT device=LINE\r\n"); + aud_switchCodec(AUDIO_CODECSEL_DEFAULT); + aud_setOutput(AUDIO_OUTPUT_LINE); //or AUDIO_OUTPUT_HP + aud_setFeature(AUDIO_FEATURE_LINE_PWR_ALWAYSON, TRUE); + aud_setFeature(AUDIO_FEATURE_INTERFACE_ALWAYS_ACTIVE, FALSE); + aud_setFeature(AUDIO_FEATURE_DISCONNECT_HDMI, TRUE); + aud_setFeature(AUDIO_FEATURE_PLAY2ALLCODEC, FALSE); + } else if (gpCurDrvAudOutDev->vidOutType == DRVSOUND_VOUT_HDMI) { + DBG_IND("video: device=HDMI\r\n"); + DBG_IND("audio => codec=HDMI device=NONE\r\n"); + aud_switchCodec(AUDIO_CODECSEL_HDMI); + aud_setOutput(AUDIO_OUTPUT_NONE); + aud_setFeature(AUDIO_FEATURE_LINE_PWR_ALWAYSON, FALSE); + aud_setFeature(AUDIO_FEATURE_INTERFACE_ALWAYS_ACTIVE, TRUE); + aud_setFeature(AUDIO_FEATURE_DISCONNECT_HDMI, FALSE); + aud_setFeature(AUDIO_FEATURE_PLAY2ALLCODEC, FALSE); + // «áÄò aud_setSamplingRate() ³]©wªº sampling rate ¶·µ¥¦P HDMI display object ºÝ³]©wªº sampling rate + // ¤£µM»Ý­n¥Î aud_setResampleInfo() ±Ò°Ê audio resample + } else if (gpCurDrvAudOutDev->vidOutType == DRVSOUND_VOUT_LCDTV) { + DBG_IND("video: device=LCD & TV\r\n"); + DBG_IND("audio: codec=DEFAULT device=SPK\r\n"); + aud_switchCodec(AUDIO_CODECSEL_DEFAULT); + aud_setOutput(AUDIO_OUTPUT_LINE); + aud_setFeature(AUDIO_FEATURE_LINE_PWR_ALWAYSON, TRUE); + aud_setFeature(AUDIO_FEATURE_INTERFACE_ALWAYS_ACTIVE, FALSE); + aud_setFeature(AUDIO_FEATURE_DISCONNECT_HDMI, TRUE); + aud_setFeature(AUDIO_FEATURE_PLAY2ALLCODEC, FALSE); + } else if (gpCurDrvAudOutDev->vidOutType == DRVSOUND_VOUT_LCDHDMI) { + DBG_IND("video: device=LCD & HDMI\r\n"); + DBG_IND("audio: codec=DEFAULT device=SPK\r\n"); + aud_switchCodec(AUDIO_CODECSEL_DEFAULT); + aud_setOutput(AUDIO_OUTPUT_LINE); + aud_setFeature(AUDIO_FEATURE_LINE_PWR_ALWAYSON, FALSE); + aud_setFeature(AUDIO_FEATURE_INTERFACE_ALWAYS_ACTIVE, TRUE); + aud_setFeature(AUDIO_FEATURE_DISCONNECT_HDMI, FALSE); + aud_setFeature(AUDIO_FEATURE_PLAY2ALLCODEC, TRUE); + // «áÄò aud_setSamplingRate() ³]©wªº sampling rate ¶·µ¥¦P HDMI display object ºÝ³]©wªº sampling rate + // ¤£µM»Ý­n¥Î aud_setResampleInfo() ±Ò°Ê audio resample + } + + //[Config audio Channel] + //TODO ==> GxSound: + // project can assign witch channel is for MONO sound play + // project can assign if expend MONO sound play as STEREO + if (AUDIO_CH_STEREO == gpCurDrvAudOutDev->audChannel) { + pAudPlayObj->setChannel(AUDIO_CH_STEREO); + if (AUDTS_CH_RX == pAudPlayObj->AudTSCH) { + pAudPlayObj->setFeature(AUDTS_FEATURE_RECORD_PCM_EXPAND, FALSE); + } else { + pAudPlayObj->setFeature(AUDTS_FEATURE_PLAYBACK_PCM_EXPAND, FALSE); + } + } else { + pAudPlayObj->setChannel(gpCurDrvAudOutDev->audChannel); + if (AUDTS_CH_RX == pAudPlayObj->AudTSCH) { + pAudPlayObj->setFeature(AUDTS_FEATURE_RECORD_PCM_EXPAND, gpCurDrvAudOutDev->monoExpand); + } else { + pAudPlayObj->setFeature(AUDTS_FEATURE_PLAYBACK_PCM_EXPAND, gpCurDrvAudOutDev->monoExpand); + } + } + + DBG_IND(":idx=%d\r\n", outDevIdx); + return retV; +} +UINT32 DrvSound_GetVol(void) +{ + return gCurDrvSndVol; +} +ER DrvSound_SetCodec(PAUDIO_CODEC_FUNC codecFunc, AUDIO_CODECSEL audCodecSel) +{ + ER retV = E_OK; + + //if (0 == aud_getLockStatus()) + { + retV = aud_open(); + if (E_OK != retV) { + DBG_ERR("aud_open fail =%d\r\n", retV); + return retV; + } + } + aud_setExtCodec(codecFunc); + aud_switchCodec(audCodecSel); + gDrvSndCodecFunc = codecFunc; + gDrvSndCodecSel = audCodecSel; + aud_close(); + DBG_IND("CodecFunc=0x%x,codecSel=%d\r\n", gDrvSndCodecFunc, gDrvSndCodecSel); + return retV; +} +ER DrvSound_SetTotalVolLvl(AUDIO_VOL_LEVEL volLvl) +{ + ER retV = E_OK; + + //if (0 == aud_getLockStatus()) + { + retV = aud_open(); + if (E_OK != retV) { + DBG_ERR("aud_open fail =%d\r\n", retV); + return retV; + } + } + gDrvSndTotalVolLvl = volLvl; + aud_setTotalVolLevel(volLvl); + aud_close(); + DBG_IND("Cur=%d,total=%d\r\n", gCurDrvSndVol, gDrvSndTotalVolLvl); + return retV; +} +// vol: 0 ~ 100 +ER DrvSound_SetVol(UINT32 vol) +{ + ER retV = E_OK; + AUDIO_VOL_LEVEL maxVolLvl = 0; + UINT32 tmpVol = 0; + UINT32 openAud = 0; + + DbgMsg_DrvSoundIO(("+%s:vol=%d\r\n", __func__, vol)); + + //if (0 == aud_getLockStatus()) + { + retV = aud_open(); + if (E_OK == retV) { + openAud = TRUE; + } else { + return retV; + } + } + gCurDrvSndVol = vol; + if (vol == 0) { + aud_setVolume(AUDIO_VOL_MUTE); + } else { + maxVolLvl = aud_getTotalVolLevel(); + tmpVol = (vol * maxVolLvl) / 100; + tmpVol = (tmpVol < maxVolLvl) ? (tmpVol + 1) : tmpVol; + DbgMsg_DrvSoundIO(("%s:Cal=%d,max=%d,set=%d\r\n", __func__, gCurDrvSndVol, maxVolLvl, tmpVol)); + if (maxVolLvl == AUDIO_VOL_LEVEL8) { + if (tmpVol >= AUDIO_VOL_LEVEL8) { + tmpVol = AUDIO_VOL_7; + } + } else { + if (tmpVol >= AUDIO_VOL_LEVEL64) { + tmpVol = AUDIO_VOL_63; + } + } + aud_setVolume(tmpVol); + } + if (openAud == TRUE) { + aud_close(); + } + DbgMsg_DrvSoundIO(("-%s:finalVol=%d,max=%d,set=%d,opened=%d\r\n", __func__, gCurDrvSndVol, maxVolLvl, tmpVol, openAud)); + return retV; +} + +ER DrvSound_SetSR(UINT32 audSR, PAUDTS_OBJ pAudPlayObj) +{ + ER retV = E_OK; + DbgMsg_DrvSoundIO(("+%s:sr=%d, audObj=0x%x\r\n", __func__, audSR, pAudPlayObj)); + + if (0 == pAudPlayObj) { + DBG_ERR("No AudObj\r\n"); + return E_PAR; + } + if (DRVSOUND_SR_8000 >= audSR) { + pAudPlayObj->setSamplingRate(AUDIO_SR_8000); + } else if (DRVSOUND_SR_11025 >= audSR) { + pAudPlayObj->setSamplingRate(AUDIO_SR_11025); + } else if (DRVSOUND_SR_12000 >= audSR) { + pAudPlayObj->setSamplingRate(AUDIO_SR_12000); + } else if (DRVSOUND_SR_16000 >= audSR) { + pAudPlayObj->setSamplingRate(AUDIO_SR_16000); + } else if (DRVSOUND_SR_22050 >= audSR) { + pAudPlayObj->setSamplingRate(AUDIO_SR_22050); + } else if (DRVSOUND_SR_24000 >= audSR) { + pAudPlayObj->setSamplingRate(AUDIO_SR_24000); + } else if (DRVSOUND_SR_32000 >= audSR) { + pAudPlayObj->setSamplingRate(AUDIO_SR_32000); + } else if (DRVSOUND_SR_44100 >= audSR) { + pAudPlayObj->setSamplingRate(AUDIO_SR_44100); + } else { + pAudPlayObj->setSamplingRate(AUDIO_SR_48000); + } + DbgMsg_DrvSoundIO(("-%s:sr=%d\r\n", __func__, audSR)); + return retV; +} +ER DrvSound_SetCh(PDXSOUND_AUD_CH pDxSndAudCh, PAUDTS_OBJ pAudObj) +{ + AUDIO_CH audCh = pDxSndAudCh->audch; + UINT32 monoExpand = pDxSndAudCh->monoExpand; + ER retV = E_OK; + DbgMsg_DrvSoundIO(("+%s:ch=%d,isMono=%d\r\n", __func__, audCh, monoExpand)); + + if (0 == pAudObj) { + DBG_ERR("pAudPlayObj NULL\r\n"); + return E_PAR; + } else if (FALSE == pAudObj->isOpened()) { + DBG_ERR("pAudPlayObj NOT Opened\r\n"); + return E_OACV; + } + //aud_setChannel(audCh); + pAudObj->setChannel(audCh); + if (AUDIO_CH_STEREO == audCh) { + if (AUDTS_CH_RX == pAudObj->AudTSCH) { + pAudObj->setFeature(AUDTS_FEATURE_RECORD_PCM_EXPAND, FALSE); + } else { + pAudObj->setFeature(AUDTS_FEATURE_PLAYBACK_PCM_EXPAND, FALSE); + } + + } else { + if (AUDTS_CH_RX == pAudObj->AudTSCH) { + pAudObj->setFeature(AUDTS_FEATURE_RECORD_PCM_EXPAND, monoExpand); + } else { + pAudObj->setFeature(AUDTS_FEATURE_PLAYBACK_PCM_EXPAND, monoExpand); + } + + } + DbgMsg_DrvSoundIO(("-%s:ch=%d,isMono=%d\r\n", __func__, audCh, monoExpand)); + return retV; +} + +//#NT#2013/03/06#Lily Kao -end + +/** + Detect Audio is plugging in or unplugged + + Detect Audio is plugging in or unplugged. + Return TRUE if Audio is plugging in, FALSE if Audio is unplugged. + + @param void + @return BOOL: TRUE -> Audio is plugging in, FALSE -> Audio is unplugged +*/ +/* +BOOL GPIOMap_DetAudio(void) +{ + return FALSE; +} +*/ + +/** + Detect which kind of Audio Output Device is plugging in or unplugged + No Sample code for detecting now + @param void + @return AUDIO_OUTPUT + AUDIO_OUTPUT_SPK, ///< Speaker + AUDIO_OUTPUT_HP, ///< Headphone + AUDIO_OUTPUT_LINE, ///< Line Out + AUDIO_OUTPUT_MONO ///< Mono Out +*/ +AUDIO_OUTPUT GPIOMap_DetAudioOutDevice(void) +{ + return AUDIO_OUTPUT_LINE; + /* + #if (AIN_DET_CTRL == AIN_DET_DUMMY) + return AUDIO_OUTPUT_SPK; + #endif + #if ((AIN_DET_CTRL == AIN_DET_BY_VIO) && (USE_VIO == ENABLE)) + return (vio_getpin(VIO_AIN_DET) != 0) ? AUDIO_OUTPUT_LINE : AUDIO_OUTPUT_SPK; + #endif + #if (AIN_DET_CTRL == AIN_DET_BY_GPIO) + return (gpio_getPin(GPIO_AIN_PLUG) == 0) ? AUDIO_OUTPUT_SPK : AUDIO_OUTPUT_LINE; + #endif + */ +} +//XXXXXXXXXXXXXXX 2009/06/12 Lily Kao -begin +/* +void GPIOMap_DetSetAudioOutDevice(void) +{ + AUDIO_OUTPUT audiOut = GPIOMap_DetAudioOutDevice(); + + GxSoud_SetAudioOutDevice(audiOut); + return; +} +*/ +//XXXXXXXXXXXXXXX 2009/06/12 Lily Kao -end + +/** + Turn on External Amplifier + + If bEn == TRUE, Turn on External Amplifier + If bEn == FALSE, Turn off External Amplifier(mute). + + @param BOOL bEn: TRUE -> turn on, FALSE -> turn off + @return void +*/ +#if 0 +void GPIOMap_TurnOnExtrAmp(BOOL bEn) +{ + DBG_IND("++GPIOMap_TurnOnExtrAmp:%x\r\n", bEn); + if (bEn == TRUE) { + //gpio_setPin(xxx); + } else { + //gpio_clearPin(xxx); + } + DBG_IND("--GPIOMap_TurnOnExtrAmp:%x\r\n", bEn); +} +#endif + +ER DrvSound_GetExtCodecFP(PAUDIO_CODEC_FUNC pAudCodecFunc) +{ + ER retV = E_OK; + +#if defined(_AudCodecExt_WM8978_) + audExtCodec_getFP(pAudCodecFunc); +#elif defined(_AudCodecExt_EMU_) + audExtCodecEMU_getFP(pAudCodecFunc); +#else + DBG_ERR("Not support exernal codec\r\n"); + retV = E_SYS; +#endif + + return retV; +} + +#if defined( _AudCodecExt_None_)//no external codec, use embeded codec +void DrvSound_SetAudioDevInitData(AUDIO_DEVICE_OBJ *pAudioDevice, AUDIO_SETTING *pAudioSetting) +{ + DBG_IND("++DrvSound_SetAudioDevInitData:Dev=0x%x, Set=0x%x\r\n", pAudioDevice, pAudioSetting); + if (pAudioDevice) { + //pAudioDevice->pEventHandler = NULL; + + pAudioDevice->uiGPIOColdReset = 0; + + //pAudioDevice->uiI2SCtrl = AUDIO_I2SCTRL_NONE; + pAudioDevice->uiI2SCtrl = AUDIO_I2SCTRL_GPIO_I2C; + + pAudioDevice->uiChannel = 0; + + //pAudioDevice->uiGPIOData = 0; + pAudioDevice->uiGPIOData = P_GPIO_0; + + //pAudioDevice->uiGPIOClk = 0; + pAudioDevice->uiGPIOClk = P_GPIO_2; + +#if 1 //FPGA_HDMI + pAudioDevice->uiI2SCtrl = AUDIO_I2SCTRL_NONE; + pAudioDevice->uiChannel = 0; + pAudioDevice->uiGPIOData = 0; + pAudioDevice->uiGPIOClk = 0; +#endif + + pAudioDevice->uiGPIOCS = 0; + pAudioDevice->uiADCZero = 0; + } + if (pAudioSetting) { + pAudioSetting->Clock.bClkExt = FALSE; // Must be + pAudioSetting->Clock.Clk = AUDIO_CLK_12288; // Clock = Sampling rate * 256 + pAudioSetting->I2S.bMaster = TRUE; // Must be + pAudioSetting->I2S.I2SFmt = AUDIO_I2SFMT_STANDARD; // Must be + pAudioSetting->I2S.ClkRatio = AUDIO_I2SCLKR_256FS_32BIT; // Must be + pAudioSetting->Fmt = AUDIO_FMT_I2S; // Must be + pAudioSetting->SamplingRate = AUDIO_SR_48000; // Sampling rate = Clock / 256 + pAudioSetting->Channel = AUDIO_CH_STEREO;;//AUDIO_CH_RIGHT; // Audio channel + pAudioSetting->RecSrc = AUDIO_RECSRC_MIC; // Must be + pAudioSetting->Output = GPIOMap_DetAudioOutDevice(); //AUDIO_OUTPUT_SPK; + pAudioSetting->bEmbedded = TRUE; // Must be, if you want to use the audio I/O pin + } + DBG_IND("--DrvSound_DefaultAUdioSettingData\r\n"); +} +#elif defined(_AudCodecExt_WM8978_)//init for WM8978 +void DrvSound_SetAudioDevInitData(AUDIO_DEVICE_OBJ *pAudioDevice, AUDIO_SETTING *pAudioSetting) +{ + AUDIO_CODEC_FUNC AudCodecFunc; + DBG_IND("++DrvSound_SetAudioDevInitData:Dev=0x%x, Set=0x%x\r\n", pAudioDevice, pAudioSetting); + if (pAudioDevice) { + //pAudioDevice->pEventHandler = NULL; + pAudioDevice->uiGPIOColdReset = 0; + pAudioDevice->uiI2SCtrl = AUDIO_I2SCTRL_GPIO_I2C; + pAudioDevice->uiChannel = 0; + pAudioDevice->uiGPIOData = P_GPIO_17;//P_GPIO_28; + pAudioDevice->uiGPIOClk = P_GPIO_18;//P_GPIO_29; + pAudioDevice->uiGPIOCS = 0; + pAudioDevice->uiADCZero = 0; + } + if (pAudioSetting) { + pAudioSetting->Clock.bClkExt = external_setting.Clock.bClkExt; // Must be + pAudioSetting->I2S.bMaster = external_setting.I2S.bMaster; // Must be + pAudioSetting->I2S.I2SFmt = external_setting.I2S.I2SFmt; // Must be + pAudioSetting->I2S.ClkRatio = external_setting.I2S.ClkRatio; // Must be + pAudioSetting->Fmt = external_setting.Fmt; // Must be + pAudioSetting->Clock.Clk = external_setting.Clock.Clk; // Clock = Sampling rate * 256 + pAudioSetting->SamplingRate = external_setting.SamplingRate; // Sampling rate = Clock / 256 + pAudioSetting->Channel = external_setting.Channel; // Audio channel + pAudioSetting->RecSrc = external_setting.RecSrc; // Must be + pAudioSetting->Output = external_setting.Output; // Output source + pAudioSetting->bEmbedded = external_setting.bEmbedded; // Must be. (Don't care in audio lib) + } + DrvSound_GetExtCodecFP(&AudCodecFunc); + aud_setExtCodec(&AudCodecFunc); + DBG_IND("--DrvSound_DefaultAUdioSettingData\r\n"); +} +#elif defined(_AudCodecExt_EMU_)//init for emu +void DrvSound_SetAudioDevInitData(AUDIO_DEVICE_OBJ *pAudioDevice, AUDIO_SETTING *pAudioSetting) +{ + AUDIO_CODEC_FUNC AudCodecFunc; + DBG_IND("++DrvSound_SetAudioDevInitData:Dev=0x%x, Set=0x%x\r\n", pAudioDevice, pAudioSetting); + if (pAudioDevice) { + //pAudioDevice->pEventHandler = NULL; + pAudioDevice->uiGPIOColdReset = 0; + pAudioDevice->uiI2SCtrl = AUDIO_I2SCTRL_GPIO_I2C; + pAudioDevice->uiChannel = 0; + pAudioDevice->uiGPIOData = P_GPIO_17;//P_GPIO_28; + pAudioDevice->uiGPIOClk = P_GPIO_18;//P_GPIO_29; + pAudioDevice->uiGPIOCS = 0; + pAudioDevice->uiADCZero = 0; + } + if (pAudioSetting) { + pAudioSetting->Clock.bClkExt = external_setting.Clock.bClkExt; // Must be + pAudioSetting->I2S.bMaster = external_setting.I2S.bMaster; // Must be + pAudioSetting->I2S.I2SFmt = external_setting.I2S.I2SFmt; // Must be + pAudioSetting->I2S.ClkRatio = external_setting.I2S.ClkRatio; // Must be + pAudioSetting->Fmt = external_setting.Fmt; // Must be + pAudioSetting->Clock.Clk = external_setting.Clock.Clk; // Clock = Sampling rate * 256 + pAudioSetting->SamplingRate = external_setting.SamplingRate; // Sampling rate = Clock / 256 + pAudioSetting->Channel = external_setting.Channel; // Audio channel + pAudioSetting->RecSrc = external_setting.RecSrc; // Must be + pAudioSetting->Output = external_setting.Output; // Output source + pAudioSetting->bEmbedded = external_setting.bEmbedded; // Must be. (Don't care in audio lib) + } + DrvSound_GetExtCodecFP(&AudCodecFunc); + aud_setExtCodec(&AudCodecFunc); + DBG_IND("--DrvSound_DefaultAUdioSettingData\r\n"); +} +#else +void DrvSound_SetAudioDevInitData(AUDIO_DEVICE_OBJ *pAudioDevice, AUDIO_SETTING *pAudioSetting) +{ + DBG_FATAL("AUDIO SETTING ERROR!\r\n"); +} +#endif + + +void DrvSound_SetAudioFeature(void) +{ + AUDIO_DEFSET default_set = DRVSOUND_DEFAULT_SET; + DBG_IND("++\r\n"); + +#if 1 + aud_setDefaultSettings(default_set); + #if defined(_MODEL_P2PCAM1_EVB_) || defined(_MODEL_P2PCAM2_EVB_) + aud_setFeature(AUDIO_FEATURE_PDVCMBIAS_ALWAYSON, TRUE); + #endif + gDrvSndConfigALC = eac_getAdConfig(EAC_CONFIG_AD_ALC_EN); +#else + // + // Note: These default audio recoding setting is good for reference board. + // For audio recording quaility fine-tuning request, please help to connect Novatek Engineer. + // Enable ALC/Noise Gate function + aud_setFeature(AUDIO_FEATURE_ALC, TRUE);//HDMI test + aud_setFeature(AUDIO_FEATURE_NG_WITH_MICBOOST, FALSE); + aud_setParameter(AUDIO_PARAMETER_NOISETHD_WITH_BOOST, EAC_NG_THRESHOLD_N58P5_DB); + aud_setParameter(AUDIO_PARAMETER_ALC_MAXGAIN, EAC_ALC_MAXGAIN_P21P0_DB); + aud_setFeature(AUDIO_FEATURE_MICBOOST, TRUE); + aud_setParameter(AUDIO_PARAMETER_NOISEGAIN, 0x1); + aud_setParameter(AUDIO_PARAMETER_NOISEGATE_TIME_RESOLUTION, EAC_ALC_TRESO_BASIS_45000US); + aud_setParameter(AUDIO_PARAMETER_ALC_TIME_RESOLUTION, EAC_ALC_TRESO_BASIS_5000US); + aud_setParameter(AUDIO_PARAMETER_ALC_ATTACK_TIME, 0x4); + aud_setParameter(AUDIO_PARAMETER_ALC_DECAY_TIME, 0x5); + aud_setParameter(AUDIO_PARAMETER_ALCNG_ATTACK_TIME, 0x6); + aud_setParameter(AUDIO_PARAMETER_ALCNG_DECAY_TIME, 0x3); +#endif + aud_setTotalVolLevel(gDrvSndTotalAudVolLvl); + aud_setVolume(gCurDrvSndVol); + aud_setGain(gCurDrvSndGain); + + DBG_IND("--\r\n"); +} + +static void DrvSound_SwitchAudioSetting(UINT32 setting) +{ + ER retV = E_OK; + + DBG_IND("++\r\n"); + + retV = aud_open(); + if (E_OK != retV) { + DBG_ERR("aud_open fail =%d\r\n", retV); + return; + } + + switch (setting) { + default: { + aud_setDefaultSettings(DRVSOUND_DEFAULT_SET); + #if defined(_MODEL_P2PCAM1_EVB_) || defined(_MODEL_P2PCAM2_EVB_) + aud_setFeature(AUDIO_FEATURE_PDVCMBIAS_ALWAYSON, TRUE); + #endif + gDrvSndConfigALC = eac_getAdConfig(EAC_CONFIG_AD_ALC_EN); + } + break; + } + + aud_close(); + + DBG_IND("--\r\n"); +} + +//#NT#2013/06/14#Calvin Chang#Get HDMI sample rate -begin +/* +UINT32 DrvSound_GetHDMIAudSR(void) +{ + UINT32 audsr; + HDMI_AUDIOFMT hdmisr; + + hdmisr = hdmitx_getConfig(HDMI_CONFIG_ID_AUDIO); + + switch (hdmisr) { + case HDMI_AUDIO32KHZ: + audsr = 32000; + break; + case HDMI_AUDIO44_1KHZ: + audsr = 44100; + break; + case HDMI_AUDIO48KHZ: + audsr = 48000; + break; + default: + DBG_ERR("hdmi sample is %d\r\n", hdmisr); + audsr = 0; + break; + } + + return audsr; + +} +*/ +//#NT#2013/06/14#Calvin Chang -end + +ER DrvSound_SetTotalGainLvl(AUDIO_RECG_LEVEL gainLvl) +{ + ER retV = E_OK; + + //if (0 == aud_getLockStatus()) + { + retV = aud_open(); + if (E_OK != retV) { + DBG_ERR("aud_open fail =%d\r\n", retV); + return retV; + } + } + gDrvSndTotalGainLvl = gainLvl; + aud_setTotalRecordGainLevel(gainLvl); + aud_close(); + DBG_IND("Cur=%d,total=%d\r\n", gCurDrvSndGain, gDrvSndTotalGainLvl); + return retV; +} +// vol: 0 ~ 100 +ER DrvSound_SetAudGain(UINT32 vol) +{ + //AUDIO_DEVICE_OBJ AudioDevObj; + BOOL bAudioALCEn = TRUE; + UINT32 uAudGain = AUDIO_GAIN_MUTE; + UINT32 uAudMaxGain = (UINT32)aud_getTotalGainLevel(); + UINT32 ustep = 0; + UINT32 upercgain = 0; + + gCurDrvSndGain = vol; + + // Map the percentage of volume to Audio Gain + switch (vol) { + case 0: { //0% (Mute) + bAudioALCEn = FALSE; + uAudGain = AUDIO_GAIN_MUTE; + } + break; + + default: { + ustep = (100 / (UINT32)uAudMaxGain); // AUDIO_GAIN_7 is maximum value + + upercgain = ustep; + + while (upercgain < vol) { + upercgain += ustep; + uAudGain++; + } + } + break; + } + + if (aud_getLockStatus()) { + if (gDrvSndConfigALC) { + aud_setFeature(AUDIO_FEATURE_ALC, bAudioALCEn); + } + aud_setGain(uAudGain); + } else { + if (E_OK == aud_open()) { + if (gDrvSndConfigALC) { + aud_setFeature(AUDIO_FEATURE_ALC, bAudioALCEn); + } + aud_setGain(uAudGain); + aud_close(); + } else { + DBG_ERR("aud_open fail %d\r\n"); + return E_PAR; + } + } + + DbgMsg_DrvSoundIO(("-%s:finalGain=%d,max=%d,set=%d\r\n", __func__, gCurDrvSndGain, uAudMaxGain, uAudGain)); + + return E_OK; + +} + +ER DrvSound_SetSR_Resample(PDXSOUND_AUD_RESAMPLE_INFO pAudResampleInfo, PAUDTS_OBJ pAudObj) +{ + ER retV = E_OK; + AUDIO_RESAMPLE_INFO ResampleInfo = {0}; + BOOL bResampleEnable = FALSE; + AUDIO_SR uiTargetAudRate; + HDMI_AUDIOFMT uiHDMIAudRate; + UINT32 audSR = pAudResampleInfo->audSR; + UINT32 uiWorkBufAddr = pAudResampleInfo->uiWorkBufAddr; + UINT32 uiWorkBufSize = pAudResampleInfo->uiWorkBufSize; + + DbgMsg_DrvSoundIO(("+%s:sr=%d\r\n", __func__, audSR)); + //DbgCode_DrvSound(if (aud_getLockStatus() == NO_TASK_LOCKED) DBG_ERR("%s: AudDrv not open\r\n",__func__);) + + // Set Audio + if (DRVSOUND_SR_8000 >= audSR) { + pAudObj->setSamplingRate(AUDIO_SR_8000); + } else if (DRVSOUND_SR_11025 >= audSR) { + pAudObj->setSamplingRate(AUDIO_SR_11025); + } else if (DRVSOUND_SR_12000 >= audSR) { + pAudObj->setSamplingRate(AUDIO_SR_12000); + } else if (DRVSOUND_SR_16000 >= audSR) { + pAudObj->setSamplingRate(AUDIO_SR_16000); + } else if (DRVSOUND_SR_22050 >= audSR) { + pAudObj->setSamplingRate(AUDIO_SR_22050); + } else if (DRVSOUND_SR_24000 >= audSR) { + pAudObj->setSamplingRate(AUDIO_SR_24000); + } else if (DRVSOUND_SR_32000 >= audSR) { + pAudObj->setSamplingRate(AUDIO_SR_32000); + } else if (DRVSOUND_SR_44100 >= audSR) { + pAudObj->setSamplingRate(AUDIO_SR_44100); + } else { + pAudObj->setSamplingRate(AUDIO_SR_48000); + } + DbgMsg_DrvSoundIO(("-%s:sr=%d\r\n", __func__, audSR)); + + // Set HDMI & Resample + switch (audSR) { + case DRVSOUND_SR_8000: { + bResampleEnable = TRUE; + uiTargetAudRate = AUDIO_SR_32000; + uiHDMIAudRate = HDMI_AUDIO32KHZ; + break; + } + + case DRVSOUND_SR_11025: { + bResampleEnable = TRUE; + uiTargetAudRate = AUDIO_SR_44100; + uiHDMIAudRate = HDMI_AUDIO44_1KHZ; + break; + } + + case DRVSOUND_SR_12000: { + bResampleEnable = TRUE; + uiTargetAudRate = AUDIO_SR_32000; + uiHDMIAudRate = HDMI_AUDIO32KHZ; + break; + } + + case DRVSOUND_SR_16000: { + bResampleEnable = TRUE; + uiTargetAudRate = AUDIO_SR_32000; + uiHDMIAudRate = HDMI_AUDIO32KHZ; + break; + } + + case DRVSOUND_SR_22050: { + bResampleEnable = TRUE; + uiTargetAudRate = AUDIO_SR_44100; + uiHDMIAudRate = HDMI_AUDIO44_1KHZ; + break; + } + + case DRVSOUND_SR_24000: { + bResampleEnable = TRUE; + uiTargetAudRate = AUDIO_SR_48000; + uiHDMIAudRate = HDMI_AUDIO48KHZ; + break; + } + + case DRVSOUND_SR_32000: { + bResampleEnable = FALSE; + uiTargetAudRate = AUDIO_SR_32000; + uiHDMIAudRate = HDMI_AUDIO32KHZ; + break; + } + + case DRVSOUND_SR_44100: { + bResampleEnable = FALSE; + uiTargetAudRate = AUDIO_SR_44100; + uiHDMIAudRate = HDMI_AUDIO44_1KHZ; + break; + } + + default: + case DRVSOUND_SR_48000: { + bResampleEnable = FALSE; + uiTargetAudRate = AUDIO_SR_48000; + uiHDMIAudRate = HDMI_AUDIO48KHZ; + break; + } + } + + if (uiWorkBufSize < (uiTargetAudRate * 4 * 4)) { + DBG_ERR("%s Buffer size is not enough!\r\n", __func__); + return E_SYS; + } + + // Set HDMI audio rate + //if(hdmitx_open()) + { + //hdmitx_setConfig(HDMI_CONFIG_ID_AUDIO, uiHDMIAudRate); + } + + // Set Resample + ResampleInfo.bResample = bResampleEnable; + ResampleInfo.AudioTargetSR = uiTargetAudRate; + ResampleInfo.uiDstBufAddr = uiWorkBufAddr; + ResampleInfo.uiDstBufSize = uiWorkBufSize; + + //aud_setResampleInfo(&ResampleInfo); + if (FALSE == pAudObj->setResampleInfo(&ResampleInfo)) { + DBG_IND("aud resample false\r\n"); + } + + return retV; +} + +ER DrvSound_SwitchExtCodec(BOOL isExt) +{ + ER retV = E_OK; + +#ifndef _AudCodecExt_None_ + AUDIO_CODEC_FUNC codec_func = {0}; + + if (isExt != gDrvSndCodecExt) { + if (isExt) { + //switch to external codec + DrvSound_GetExtCodecFP(&codec_func); + aud_switchCodecDynamic(&codec_func, &external_setting); + DrvSound_SetAudioFeature(); + } else { + //switch to embedded codec + aud_switchCodecDynamic(NULL, &embedded_setting); + DrvSound_SetAudioFeature(); + } + } +#else + if (isExt) { + DBG_ERR("Not support external codec\r\n"); + } +#endif + + gDrvSndCodecExt = isExt; + + DBG_IND("gDrvSndCodecExt = %d\r\n", gDrvSndCodecExt); + + return retV; +} + +//======================================================== +UINT32 DrvSound_Init(void *pInitParam); +UINT32 DrvSound_Open(void); +UINT32 DrvSound_Close(void);; +UINT32 DrvSound_Getcaps(UINT32 CapID, UINT32 Param1); +UINT32 DrvSound_Setcfgs(UINT32 CfgID, UINT32 Param1); +UINT32 DrvSound_Command(CHAR *pcCmdStr); +UINT32 DrvSound_Control(UINT32 CtrlID, UINT32 Param1, UINT32 Param2); +UINT32 DrvSound_State(UINT32 StateID, UINT32 Value); + +DX_OBJECT gDevSnd = { + DXFLAG_SIGN, + DX_CLASS_AUDIO_EXT, + DXSOUND_VER, + "DrvExt Sound", + 0, 0, 0, 0, + DrvSound_Getcaps, + DrvSound_Setcfgs, + DrvSound_Init, + DrvSound_Open, + DrvSound_Close, + DrvSound_State, + DrvSound_Control, + DrvSound_Command, + 0, +}; + +UINT32 DrvSound_Init(void *pInitParam) +{ + ER retV = aud_open(); + DBG_IND("+-:0x%x\r\n", pInitParam); + + DrvSound_SetAudioDevInitData(NULL, (AUDIO_SETTING *)pInitParam); + aud_init((AUDIO_SETTING *)pInitParam); + if (retV != E_OK) { + DBG_ERR("aud_open fail = %d\r\n", retV); + return retV; + } + DrvSound_SetAudioFeature(); + aud_close(); + return DX_OK; +} + +UINT32 DrvSound_Open(void) +{ + DBG_IND("+-\r\n"); + return DX_OK; +} + +UINT32 DrvSound_Close(void) +{ + DBG_IND("+-\r\n"); + return DX_OK; +} +UINT32 DrvSound_Getcaps(UINT32 CapID, UINT32 Param1) +{ + UINT32 retV = 0; + DBG_IND(":CapID=%d,Param1=%d+\r\n", CapID, Param1); + switch (CapID) { + case DXSOUND_CAP_VOLUME: + retV = DrvSound_GetVol(); + break; + /* case DXSOUND_CAP_GET_HDMI_SAMPLERATE: + retV = DrvSound_GetHDMIAudSR(); + break; + */ + case DXSOUND_CAP_GET_AUDOUTDEV: + retV = (UINT32)(GPIOMap_DetAudioOutDevice() == AUDIO_OUTPUT_LINE); + break; + case DXSOUND_CAP_SAMPLERATE: + case DXSOUND_CAP_CHANNEL: + case DXSOUND_CAP_GAIN: + default: + break; + } + DBG_IND(":CapID=%d,Param1=%d,v=%d-\r\n", CapID, Param1, retV); + return retV; +} +UINT32 DrvSound_Setcfgs(UINT32 CfgID, UINT32 Param1) +{ + DBG_IND("+-\r\n"); + return DX_OK; +} +UINT32 DrvSound_Command(CHAR *pcCmdStr) +{ + DBG_IND("+-\r\n"); + switch (*pcCmdStr) { + case 'd': + /*if (!strncmp(pcCmdStr, "disp tv dump", 12)) + { + ... + return TRUE; + }*/ + break; +#if (USE_VIO == ENABLE) + case 'v': + if (!strncmp(pcCmdStr, "vdet", 4)) { + char ts[10]; + UINT32 v1; + sscanf_s(pcCmdStr, "%s %lu", ts, sizeof(ts), &v1); //fix for CID 44013 + DBG_IND("v1 = %d\r\n", v1); + vio_setpin(VIO_AIN_DET, v1); + return TRUE; + } + break; +#endif + } + return FALSE; +} + +UINT32 DrvSound_Control(UINT32 CtrlID, UINT32 Param1, UINT32 Param2) +{ + UINT32 retV = DX_OK; + DBG_IND(":CtrlID=%d,P1=0x%x,P2=0x%x+\r\n", CtrlID, Param1, Param2); + switch (CtrlID) { + case DXSOUND_CAP_SET_DEVINITDATA: + DrvSound_SetAudioDevInitData((AUDIO_DEVICE_OBJ *)Param1, (AUDIO_SETTING *)Param2); + //if (0 == aud_getLockStatus()) + { + retV = aud_open(); + if (E_OK != retV) { + DBG_ERR("aud_open fail =%d\r\n", retV); + return retV; + } + } + //aud_init((AUDIO_SETTING *)Param2); + aud_setDeviceObject((AUDIO_DEVICE_OBJ *)Param1); + aud_close(); + break; + case DXSOUND_CAP_SET_CODEC: + DrvSound_SetCodec((PAUDIO_CODEC_FUNC)Param1, (AUDIO_CODECSEL)Param2); + break; + case DXSOUND_CAP_SET_TOTAL_VOLUME_LEVEL: + DrvSound_SetTotalVolLvl((AUDIO_VOL_LEVEL)Param1); + break; + case DXSOUND_CAP_VOLUME: + retV = (UINT32)DrvSound_SetVol(Param1); + break; + case DXSOUND_CAP_SAMPLERATE: + retV = (UINT32)DrvSound_SetSR(Param1, (PAUDTS_OBJ)Param2); + break; + case DXSOUND_CAP_CHANNEL: + retV = (UINT32)DrvSound_SetCh((PDXSOUND_AUD_CH)Param1, (PAUDTS_OBJ)Param2); + break; + case DXSOUND_CAP_GAIN: + retV = (UINT32)DrvSound_SetAudGain(Param1); + break; + case DXSOUND_CAP_RESAMPLE: + DrvSound_SetSR_Resample((PDXSOUND_AUD_RESAMPLE_INFO)Param1, (PAUDTS_OBJ)Param2); + break; + case DXSOUND_CAP_SET_OUTDEV: + DrvSound_SetOutDevConfig(Param1, (PAUDTS_OBJ)Param2); + break; + case DXSOUND_CAP_SET_TOTAL_GAIN_LEVEL: + DrvSound_SetTotalGainLvl((AUDIO_RECG_LEVEL)Param1); + break; + case DXSOUND_CAP_SWITCH_EXT_CODEC: + DrvSound_SwitchExtCodec((BOOL)Param1); + break; + case DXSOUND_CAP_SWITCH_AUD_SETTING: + DrvSound_SwitchAudioSetting(Param1); + default: + break; + } + DBG_IND(":CtrlID=%d,P1=%d,P2=%d-\r\n", CtrlID, Param1, Param2); + return retV; +} + +UINT32 DrvSound_State(UINT32 StateID, UINT32 Value) // General Properties +{ + DBG_IND("+-\r\n"); + return DX_OK; +} + +//============= + +//XXXXXXXXXXXXXXX 2009/06/16 Lily Kao -end + diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxStorage_Card.c b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxStorage_Card.c new file mode 100755 index 000000000..7e6b839fc --- /dev/null +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxStorage_Card.c @@ -0,0 +1,439 @@ +/** + Copyright Novatek Microelectronics Corp. 2005. All rights reserved. + + @file KeyScanSD.c + @ingroup mIPRJAPKeyIO + + @brief Detect SD card status + Detect SD card insert/remove, lock/unlock + + @note Nothing. + + @date 2005/12/15 +*/ + +/** \addtogroup mIPRJAPKeyIO */ +//@{ + +#include "kwrap/type.h" +#include "DxCfg.h" +#include "IOCfg.h" + +#include "DxStorage.h" +#include "DxCommon.h" +#include "DxApi.h" + +#include "sdio.h" +#if 0 +#include "SdmmcDesc.h" +#include "StrgDef.h" +#include "Debug.h" +#endif +#include "Utility/SwTimer.h" +#include "pll.h" + +/////////////////////////////////////////////////////////////////////////////// +#define __MODULE__ DxDrv +#define __DBGLVL__ 1 // 0=OFF, 1=ERROR, 2=TRACE +#define __DBGFLT__ "*" //*=All, [mark]=CustomClass +#include +/////////////////////////////////////////////////////////////////////////////// + +void DrvCARD_EnableCardPower(BOOL bEn); +BOOL DrvCARD_DetStrgCard(void); +BOOL DrvCARD_DetStrgCard_TRUE(void);//for eMMC +BOOL DrvCARD_DetStrgCardWP(void); +BOOL DrvCARD_DetStrgCardWP_FALSE(void);//for eMMC + +//public func +UINT32 DrvCARDGetcaps(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +UINT32 DrvCARDGetcaps3(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +UINT32 DrvCARDInit(void *pInitParam); // Set Init Parameters +UINT32 DrvCARDInit3(void *pInitParam); // Set Init Parameters +UINT32 DrvCARDOpen(void); // Common Constructor +UINT32 DrvCARDClose(void); // Common Destructor +UINT32 DrvCARDState(UINT32 StateID, UINT32 Value); // General Properties +UINT32 DrvCARDControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2); // General Methods +UINT32 DrvCARDCommand(CHAR *pcCmdStr); //General Command Console + +#if !defined(_CARD1_NONE_) +//dx object +DX_OBJECT gDevCARD1 = { + DXFLAG_SIGN, + DX_CLASS_STORAGE_EXT | DX_TYPE_CARD1, + STORAGE_VER, + "Storage_Card1", + 0, 0, 0, 0, + DrvCARDGetcaps, + 0, + DrvCARDInit, + DrvCARDOpen, + DrvCARDClose, + DrvCARDState, + DrvCARDControl, + DrvCARDCommand, + 0, +}; +#endif + +#if !defined(_CARD3_NONE_) +//for eMMC test on FPGA +DX_OBJECT gDevCARD3 = { + DXFLAG_SIGN, + DX_CLASS_STORAGE_EXT | DX_TYPE_CARD3, + STORAGE_VER, + "Storage_Card3", + 0, 0, 0, 0, + DrvCARDGetcaps3, + 0, + DrvCARDInit3, + DrvCARDOpen, + DrvCARDClose, + DrvCARDState, + DrvCARDControl, + DrvCARDCommand, + 0, +}; +#endif + + +#if !defined(_CARD1_NONE_) +UINT32 DrvCARDGetcaps(UINT32 CapID, UINT32 Param1) // Get Capability Flag (Base on interface version) +{ + UINT32 v = 0; + switch (CapID) { + case STORAGE_CAPS_BASE: + DBG_IND("get card plug caps\r\n"); + v = STORAGE_BF_DETPLUG | STORAGE_BF_DETWP; + break; + case STORAGE_CAPS_HANDLE: + v = (UINT32)sdio_getStorageObject(STRG_OBJ_FAT1); + break; + default: + break; + } + return v; +} +#endif + +#if !defined(_CARD3_NONE_) +UINT32 DrvCARDGetcaps3(UINT32 CapID, UINT32 Param1) // Get Capability Flag (Base on interface version) +{ + UINT32 v = 0; + switch (CapID) { + case STORAGE_CAPS_BASE: + DBG_IND("get card plug caps\r\n"); + v = STORAGE_BF_DETPLUG | STORAGE_BF_DETWP; + break; + case STORAGE_CAPS_HANDLE: + CHKPNT; + v = (UINT32)sdio3_getStorageObject(STRG_OBJ_FAT1); + break; + default: + break; + } + return v; +} +#endif + +#if !defined(_CARD1_NONE_) +UINT32 DrvCARDInit(void *pInitParam) // Set Init Parameters +{ + PSTORAGE_OBJ pStrg; + DXSTRG_INIT *g_pInit = (DXSTRG_INIT *)pInitParam; //fat and pstore not complete + + DBG_FUNC_BEGIN("\r\n"); + + pStrg = sdio_getStorageObject(STRG_OBJ_FAT1); + sdio_setCallBack(SDIO_CALLBACK_CARD_DETECT, (SDIO_CALLBACK_HDL)DrvCARD_DetStrgCard); + sdio_setCallBack(SDIO_CALLBACK_WRITE_PROTECT, (SDIO_CALLBACK_HDL)DrvCARD_DetStrgCardWP); + + + /* + // Enable High Speed mode + //sdio_setConfig(SDIO_CONFIG_ID_BUS_SPEED_MODE, (UINT32)(SDIO_BUS_SPEED_MODE_DS | SDIO_BUS_SPEED_MODE_HS|SDIO_BUS_SPEED_MODE_SDR12|SDIO_BUS_SPEED_MODE_SDR25|SDIO_BUS_SPEED_MODE_SDR50)); + sdio_setConfig(SDIO_CONFIG_ID_BUS_SPEED_MODE, (UINT32)(SDIO_BUS_SPEED_MODE_DS | SDIO_BUS_SPEED_MODE_HS|SDIO_BUS_SPEED_MODE_SDR12|SDIO_BUS_SPEED_MODE_SDR25|SDIO_BUS_SPEED_MODE_DDR50)); + */ + + //#NT#2017/10/24#Nestor Yang -begin + //#NT# Adjust SDIO driving, requested by SA1 + /* + // Enable setting driving sink of clock pin + sdio_setConfig(SDIO_CONFIG_ID_DRIVING_SINK_EN, (UINT32)TRUE); + + // Default speed driving -> 5.0 mA (Shirley, 2017/09/22) + sdio_setConfig(SDIO_CONFIG_ID_DS_DRIVING, 150); + //sdio_setConfig(SDIO_CONFIG_ID_DS_MAX_CLK, 48000000); //default for DS + + // High speed driving -> 10.0 mA (Shirley, 2017/09/22) + sdio_setConfig(SDIO_CONFIG_ID_HS_DRIVING, 150); + */ + sdio_setConfig(SDIO_CONFIG_ID_DRIVING_SINK_EN, TRUE); // for clock. + sdio_setConfig(SDIO_CONFIG_ID_DRIVING_SINK_CMDDATA_EN, TRUE); // for cmd and data. + + // Default speed driving + sdio_setConfig(SDIO_CONFIG_ID_DS_DRIVING, 200); + sdio_setConfig(SDIO_CONFIG_ID_DS_CMD_DRIVING, 150); + sdio_setConfig(SDIO_CONFIG_ID_DS_DATA_DRIVING, 150); + + // High speed driving + sdio_setConfig(SDIO_CONFIG_ID_HS_DRIVING, 200); + sdio_setConfig(SDIO_CONFIG_ID_HS_CMD_DRIVING, 150); + sdio_setConfig(SDIO_CONFIG_ID_HS_DATA_DRIVING, 150); + //#NT#2017/10/24#Nestor Yang -end + + //sdio_setConfig(SDIO_CONFIG_ID_HS_MAX_CLK, 48000000); //default for HS + /* + // Set clock source + sdio_setConfig(SDIO_CONFIG_ID_SRCLK, PLL_CLKSEL_SDIO_48); + // Set maximum bus width to 8 bits + sdio_setConfig(SDIO_CONFIG_ID_BUS_WIDTH, SD_HOST_BUS_8_BITS); + */ + //sdio_setCallBack(SDIO_CALLBACK_POWER_CONTROL, (SDIO_CALLBACK_HDL)DrvCARD_EnableCardPower); //(to improve card capability) + + //if(STRG_OBJ_FAT1) + { + pStrg->SetParam(STRG_SET_MEMORY_REGION, g_pInit->buf.addr, g_pInit->buf.size); + } + + return DX_OK; +} +#endif + +#if !defined(_CARD3_NONE_) +UINT32 DrvCARDInit3(void *pInitParam) // Set Init Parameters +{ + PSTORAGE_OBJ pStrg; + DXSTRG_INIT *g_pInit = (DXSTRG_INIT *)pInitParam; //fat and pstore not complete + + DBG_FUNC_BEGIN("\r\n"); + CHKPNT; + pStrg = sdio3_getStorageObject(STRG_OBJ_FAT1); + if (pStrg == NULL) { + DBG_ERR("Get SDIO3 storage object failed\r\n"); + return DX_NULL_POINTER; + } + + pStrg->SetParam(STRG_SET_MEMORY_REGION, g_pInit->buf.addr, g_pInit->buf.size); + + sdio3_setCallBack(SDIO_CALLBACK_CARD_DETECT, (SDIO_CALLBACK_HDL)DrvCARD_DetStrgCard_TRUE); + sdio3_setCallBack(SDIO_CALLBACK_WRITE_PROTECT, (SDIO_CALLBACK_HDL)DrvCARD_DetStrgCardWP_FALSE); + + // Support default speed + high speed + sdio3_setConfig(SDIO_CONFIG_ID_BUS_SPEED_MODE, SDIO_BUS_SPEED_MODE_DS | SDIO_BUS_SPEED_MODE_HS); + + // Default speed driving -> 5.0 mA + sdio3_setConfig(SDIO_CONFIG_ID_DS_DRIVING, 50); + // High speed driving -> 10.0 mA + sdio3_setConfig(SDIO_CONFIG_ID_HS_DRIVING, 100); + + // Adjust driving/sink according to operating mode + sdio3_setConfig(SDIO_CONFIG_ID_DRIVING_SINK_EN, TRUE); + + sdio3_setConfig(SDIO_CONFIG_ID_BUS_WIDTH, SD_HOST_BUS_4_BITS); + + sdio3_setConfig(SDIO_CONFIG_ID_FORMAD_OEMID, (UINT32)"NOVATEK"); + sdio3_setConfig(SDIO_CONFIG_ID_FORMAD_VOL_LABLE, (UINT32)"SD_VOL"); + sdio3_setConfig(SDIO_CONFIG_ID_FORMAD_RAND_VOL_ID_EN, TRUE); + + return DX_OK; +} +#endif + +#if !(defined(_CARD1_NONE_) && defined(_CARD3_NONE_)) +UINT32 DrvCARDOpen(void) // Common Constructor +{ + DrvCARD_EnableCardPower(TRUE); + + return DX_OK; +} + +UINT32 DrvCARDClose(void) // Common Destructor +{ + DrvCARD_EnableCardPower(FALSE); + + return DX_OK; +} + +UINT32 DrvCARDState(UINT32 StateID, UINT32 Value) // General Properties +{ + DBG_FUNC_BEGIN("\r\n"); + + if (StateID & DXGET) { + UINT32 rvalue = 0; + StateID &= ~DXGET; + DBG_IND("get %08x\r\n", StateID); + switch (StateID) { + case STORAGE_STATE_INSERT: + rvalue = DrvCARD_DetStrgCard(); + break; + case STORAGE_STATE_LOCK: { + BOOL bLock = FALSE; + if (DrvCARD_DetStrgCard()) { + bLock = DrvCARD_DetStrgCardWP(); + } + rvalue = bLock; + } + break; + break; + default: + DBG_ERR("state=0x%02X not support!\r\n", StateID); + break; + } + return rvalue; + } else if (StateID & DXSET) { + StateID &= ~DXSET; + DBG_IND("set %08x\r\n", StateID); + switch (StateID) { + default: + DBG_ERR("state=0x%02X not support!\r\n", StateID); + break; + } + } + return DX_OK; +} + +UINT32 DrvCARDControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2) // General Methods +{ + DBG_FUNC_BEGIN("\r\n"); + DBG_IND("ctrl %08x\r\n", CtrlID); + + switch (CtrlID) { + case STORAGE_CTRL_POWER: + DrvCARD_EnableCardPower(Param1); + break; + default: + DBG_ERR("ctrlid=0x%02X not support!\r\n", CtrlID); + break; + } + return DX_OK; +} + +UINT32 DrvCARDCommand(CHAR *pcCmdStr) //General Command Console +{ + return FALSE; +} + +//////////////////////////////////////////////////////////////////////////////// +// GPIO related + +#define KEYSCAN_CD_GPIO_INT GPIO_INT_00 +#define KEYSCAN_CARDDET_INT DISABLE +#define KEYSCAN_SDWRPTDET_GPIO DISABLE + +void DrvCARD_EnableCardPower(BOOL bEn) +{ + gpio_setDir(GPIO_CARD_POWER, GPIO_DIR_OUTPUT); + if (bEn) { + DBG_IND("[SD] - card power enable\r\n"); + gpio_clearPin(GPIO_CARD_POWER); + SwTimer_DelayMs(20); + } else { + + DBG_IND("[SD] - card power disable\r\n"); + gpio_setPin(GPIO_CARD_POWER); + SwTimer_DelayMs(350); + } +} + +#if (KEYSCAN_CARDDET_INT == ENABLE) +static volatile UINT32 uiStrgCardIntCnt = 0; + +/** + ISR of SD card detection + + ISR of SD card detection + + @param void + @return void +*/ +static void KeyScan_DetStrgCardIsr(UINT32 uiEvent) +{ + uiStrgCardIntCnt++; + + // Debounce + if (uiStrgCardIntCnt > 1) { + uiStrgCardIntCnt = 0; + } +} +#endif + +void DrvCARD_SetInsert(UINT32 status) +{ +#if (KEYSCAN_CARDDET_INT == ENABLE) + if (status) { + gpio_setIntTypePol(KEYSCAN_CD_GPIO_INT, GPIO_INTTYPE_LEVEL, GPIO_INTPOL_POSHIGH); + } else { + gpio_setIntTypePol(KEYSCAN_CD_GPIO_INT, GPIO_INTTYPE_LEVEL, GPIO_INTPOL_NEGLOW); + } +#endif +} + +void DrvCARD_DetRestart(void) +{ +#if (KEYSCAN_CARDDET_INT == ENABLE) + gpio_setIntIsr(KEYSCAN_CD_GPIO_INT, KeyScan_DetStrgCardIsr); + gpio_enableInt(KEYSCAN_CD_GPIO_INT); +#endif +} + +/** + Detect Storage card is inserted or not + + Detect Storage card is inserted or not. + Return TRUE if storage card is inserted, FALSE if storage card is removed. + + @param void + @return BOOL: TRUE -> Storage card inserted, FALSE -> Storage card removed +*/ +BOOL DrvCARD_DetStrgCard(void) +{ +#if 1 + return (gpio_getPin(GPIO_CARD_DETECT) == 0 ? TRUE : FALSE); +#else + return TRUE; +#endif +} + +/** + Detect Storage card is write protected or not + + Detect Storage card is write protected or not. + Return TRUE if storage card is write protected, FALSE if storage card is not write protected. + + @param void + @return BOOL: TRUE -> Storage card is write protected, FALSE -> Storage card is not write protected +*/ +BOOL DrvCARD_DetStrgCardWP(void) +{ +#if 0 + return (gpio_getPin(GPIO_CARD_WP) == 1 ? TRUE : FALSE); +#else + return FALSE; +#endif +} + +/** + Always return card inserted (TRUE) for eMMC + + @param void + @return BOOL: TRUE -> Storage card inserted, FALSE -> Storage card removed +*/ +BOOL DrvCARD_DetStrgCard_TRUE(void) +{ + return TRUE; +} + +/** + Always return no write protected (FALSE) for eMMC + + @param void + @return BOOL: TRUE -> Storage card is write protected, FALSE -> Storage card is not write protected +*/ +BOOL DrvCARD_DetStrgCardWP_FALSE(void) +{ + return FALSE; +} + +#endif +//@} diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxStorage_EmbMem.c b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxStorage_EmbMem.c new file mode 100755 index 000000000..f71e190cd --- /dev/null +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxStorage_EmbMem.c @@ -0,0 +1,569 @@ +#include "kwrap/type.h" +#include "DxCfg.h" +#include "IOCfg.h" + +#include "DxStorage.h" +#include "DxCommon.h" +#include "DxApi.h" +#include "DrvExt.h" + +#if 0 +#include "Debug.h" +#endif +#include "sdio.h" +#include "pad.h" +#if 0 +#include "StrgDef.h" +#endif +#include +#include "emb_partition_info.h" + +#if (!defined(_EMBMEM_NONE_)) && (!defined(_EMBMEM_UITRON_OFF_)) + +#if defined(_EMBMEM_NONE_) +#define EMB_GETSTRGOBJ(x) 0 //Always NULL +#elif defined(_EMBMEM_NAND_) || defined(_EMBMEM_SPI_NAND_) +#include "nand.h" +#define EMB_GETSTRGOBJ(x) nand_getStorageObject(x) +#elif defined(_EMBMEM_SPI_NOR_) +#include "nand.h" +//#include "RamDisk/RamDisk.h" +#define EMB_GETSTRGOBJ(x) 0//spiflash_getStorageObject(x) +#elif defined(_EMBMEM_EMMC_) +#include "sdio.h" +#define EMB_GETSTRGOBJ(x) sdio3_getStorageObject(x) +static BOOL xSdioDet(void) +{ + return TRUE; +} +static BOOL xSdioWp(void) +{ + return FALSE; +}; +#endif + +/////////////////////////////////////////////////////////////////////////////// +#define __MODULE__ DxDrv +#define __DBGLVL__ 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER +#define __DBGFLT__ "*" //*=All, [mark]=CustomClass +#include +/////////////////////////////////////////////////////////////////////////////// + +//public func +UINT32 DrvEmbMemGetcaps0(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +UINT32 DrvEmbMemGetcaps1(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +UINT32 DrvEmbMemGetcaps2(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +UINT32 DrvEmbMemGetcaps3(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +UINT32 DrvEmbMemGetcaps4(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +UINT32 DrvEmbMemGetcaps5(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +UINT32 DrvEmbMemGetcaps6(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +UINT32 DrvEmbMemGetcaps7(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +UINT32 DrvEmbMemGetcaps8(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +UINT32 DrvEmbMemInit(void *pInitParam); // Set Init Parameters +UINT32 DrvEmbMemOpen(void); // Common Constructor +UINT32 DrvEmbMemClose(void); // Common Destructor +UINT32 DrvEmbMemState(UINT32 StateID, UINT32 Value); // General Properties +UINT32 DrvEmbMemControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2); // General Methods +UINT32 DrvEmbMemCommand(CHAR *pcCmdStr); //General Command Console + +//User define SPI-NOR table sample code +#if 0 +static SPI_FLASH_INFO user_define_spi_flash_support_tbl[] = { + // XTX PN25F32B (4MB) + { + //1st ID : id[0] 2nd ID : id[1] 3rd ID : id[2] + //manufacture ID memory type memory capacity + 0x0B, 0x40, 0x16, + //total size (unit: byte) sector size (unit: byte) block size (unit: byte) + 0x400000, 0x10000, 0x10000, + + //sectr count (unit: sector) support EWSR command support AAI command support SECTOR_ERASE command (0x20) + 0x800000 / 0x10000, FALSE, FALSE, TRUE, + + //CHIP erase time (unit: ms) Block erase time (unit: ms) Sector erase time (unit: ms) page program time (unit: ms) + 200000, 4000, 1600, 5, + + //Wide bus (dual/quad) supported by this flash + SPI_FLASH_BUSWIDTH_DUAL | SPI_FLASH_BUSWIDTH_QUAD_TYPE5 + }, + + // XTX PN25F64B (8MB) + { + //1st ID : id[0] 2nd ID : id[1] 3rd ID : id[2] + //manufacture ID memory type memory capacity + 0x0B, 0x40, 0x17, + //total size (unit: byte) sector size (unit: byte) block size (unit: byte) + 0x800000, 0x10000, 0x10000, + + //sectr count (unit: sector) support EWSR command support AAI command support SECTOR_ERASE command (0x20) + 0x800000 / 0x10000, FALSE, FALSE, TRUE, + + //CHIP erase time (unit: ms) Block erase time (unit: ms) Sector erase time (unit: ms) page program time (unit: ms) + 200000, 4000, 1600, 5, + SPI_FLASH_BUSWIDTH_DUAL | SPI_FLASH_BUSWIDTH_QUAD_TYPE5 + }, + + +}; + +static BOOL pmc_identifySpi(UINT32 uiMfgID, UINT32 uiTypeID, UINT32 uiCapacity, PSPIFLASH_IDENTIFY pIdentify) +{ + UINT32 uiNorTblID; + BOOL user_table_found = FALSE; + + for (uiNorTblID = 0; uiNorTblID < (sizeof(user_define_spi_flash_support_tbl) / sizeof(SPI_FLASH_INFO)); uiNorTblID++) { + if (uiMfgID == user_define_spi_flash_support_tbl[uiNorTblID].uiMfgID && \ + uiTypeID == user_define_spi_flash_support_tbl[uiNorTblID].uiMemType && \ + uiCapacity == user_define_spi_flash_support_tbl[uiNorTblID].uiMemCapacity) { + DBG_DUMP("emu user define spi-nor tbl Maker ID found @[%02d][0x%02x] DeviceID[0x%02x] cap[0x%02x]\r\n", uiNorTblID, user_define_spi_flash_support_tbl[uiNorTblID].uiMfgID, user_define_spi_flash_support_tbl[uiNorTblID].uiMemType, user_define_spi_flash_support_tbl[uiNorTblID].uiMemCapacity); + // For SPI Nor flash only + pIdentify->uiTotalSize = user_define_spi_flash_support_tbl[uiNorTblID].uiTotalSize; + pIdentify->uiBlockSize = user_define_spi_flash_support_tbl[uiNorTblID].uiBlockSize; + pIdentify->uiSectorSize = user_define_spi_flash_support_tbl[uiNorTblID].uiSectorSize; + + pIdentify->uiSectorCnt = user_define_spi_flash_support_tbl[uiNorTblID].uiSectorCnt; + pIdentify->bSupportEWSR = user_define_spi_flash_support_tbl[uiNorTblID].bSupportEWSR; + pIdentify->bSupportAAI = user_define_spi_flash_support_tbl[uiNorTblID].bSupportAAI; + pIdentify->bSupportSecErase = user_define_spi_flash_support_tbl[uiNorTblID].bSupportSecErase; + pIdentify->uiChipEraseTime = user_define_spi_flash_support_tbl[uiNorTblID].uiChipEraseTime; + pIdentify->uiBlockEraseTime = user_define_spi_flash_support_tbl[uiNorTblID].uiBlockEraseTime; + pIdentify->uiSectorEraseTime= user_define_spi_flash_support_tbl[uiNorTblID].uiSectorEraseTime; + pIdentify->uiPageProgramTime= user_define_spi_flash_support_tbl[uiNorTblID].uiPageProgramTime; + + pIdentify->flashWidth = user_define_spi_flash_support_tbl[uiNorTblID].flashWidth; + user_table_found = TRUE; + break; + } + } + return user_table_found; +} +#endif + +//dx object +DX_OBJECT gDevEmbMem0 = { + DXFLAG_SIGN, + DX_CLASS_STORAGE_EXT | DX_TYPE_EMBMEM0, + STORAGE_VER, + "LOADER", + 0, 0, 0, 0, + DrvEmbMemGetcaps0, + 0, + DrvEmbMemInit, + DrvEmbMemOpen, + DrvEmbMemClose, + DrvEmbMemState, + DrvEmbMemControl, + DrvEmbMemCommand, + 0, +}; + +DX_OBJECT gDevEmbMem1 = { + DXFLAG_SIGN, + DX_CLASS_STORAGE_EXT | DX_TYPE_EMBMEM1, + STORAGE_VER, + "MODELEXT", + 0, 0, 0, 0, + DrvEmbMemGetcaps1, + 0, + DrvEmbMemInit, + DrvEmbMemOpen, + DrvEmbMemClose, + DrvEmbMemState, + DrvEmbMemControl, + DrvEmbMemCommand, + 0, +}; + +DX_OBJECT gDevEmbMem2 = { + DXFLAG_SIGN, + DX_CLASS_STORAGE_EXT | DX_TYPE_EMBMEM2, + STORAGE_VER, + "UITRON", + 0, 0, 0, 0, + DrvEmbMemGetcaps2, + 0, + DrvEmbMemInit, + DrvEmbMemOpen, + DrvEmbMemClose, + DrvEmbMemState, + DrvEmbMemControl, + DrvEmbMemCommand, + 0, +}; + +DX_OBJECT gDevEmbMem3 = { + DXFLAG_SIGN, + DX_CLASS_STORAGE_EXT | DX_TYPE_EMBMEM3, + STORAGE_VER, + "UBOOT", + 0, 0, 0, 0, + DrvEmbMemGetcaps3, + 0, + DrvEmbMemInit, + DrvEmbMemOpen, + DrvEmbMemClose, + DrvEmbMemState, + DrvEmbMemControl, + DrvEmbMemCommand, + 0, +}; + +DX_OBJECT gDevEmbMem4 = { + DXFLAG_SIGN, + DX_CLASS_STORAGE_EXT | DX_TYPE_EMBMEM4, + STORAGE_VER, + "LINUX", + 0, 0, 0, 0, + DrvEmbMemGetcaps4, + 0, + DrvEmbMemInit, + DrvEmbMemOpen, + DrvEmbMemClose, + DrvEmbMemState, + DrvEmbMemControl, + DrvEmbMemCommand, + 0, +}; + +DX_OBJECT gDevEmbMem5 = { + DXFLAG_SIGN, + DX_CLASS_STORAGE_EXT | DX_TYPE_EMBMEM5, + STORAGE_VER, + "DSP1", + 0, 0, 0, 0, + DrvEmbMemGetcaps5, + 0, + DrvEmbMemInit, + DrvEmbMemOpen, + DrvEmbMemClose, + DrvEmbMemState, + DrvEmbMemControl, + DrvEmbMemCommand, + 0, +}; + +DX_OBJECT gDevEmbMem6 = { + DXFLAG_SIGN, + DX_CLASS_STORAGE_EXT | DX_TYPE_EMBMEM6, + STORAGE_VER, + "DSP2", + 0, 0, 0, 0, + DrvEmbMemGetcaps6, + 0, + DrvEmbMemInit, + DrvEmbMemOpen, + DrvEmbMemClose, + DrvEmbMemState, + DrvEmbMemControl, + DrvEmbMemCommand, + 0, +}; + +DX_OBJECT gDevEmbMem7 = { + DXFLAG_SIGN, + DX_CLASS_STORAGE_EXT | DX_TYPE_EMBMEM7, + STORAGE_VER, + "PSTORE", + 0, 0, 0, 0, + DrvEmbMemGetcaps7, + 0, + DrvEmbMemInit, + DrvEmbMemOpen, + DrvEmbMemClose, + DrvEmbMemState, + DrvEmbMemControl, + DrvEmbMemCommand, + 0, +}; + +DX_OBJECT gDevEmbMem8 = { + DXFLAG_SIGN, + DX_CLASS_STORAGE_EXT | DX_TYPE_EMBMEM8, + STORAGE_VER, + "FAT", + 0, 0, 0, 0, + DrvEmbMemGetcaps8, + 0, + DrvEmbMemInit, + DrvEmbMemOpen, + DrvEmbMemClose, + DrvEmbMemState, + DrvEmbMemControl, + DrvEmbMemCommand, + 0, +}; + +#if !defined(_EMBMEM_EMMC_) +static UINT32 xDrvEmbMemGetUsedSize(EMB_PARTITION *pPat, UINT32 nPat) +{ + UINT32 i; + UINT32 uiOffset = 0; + for (i = 0; i < nPat; i++) { + if (pPat->EmbType != EMBTYPE_UNKNOWN) { + if ((pPat->PartitionOffset != 0) && (pPat->PartitionOffset < uiOffset)) { + DBG_ERR("Partition[%d] overlaps previous one.\r\n", i); + return 0; + } + + if ((i==0) || (i!=0 && pPat->PartitionOffset!=0)) + uiOffset = pPat->PartitionOffset + pPat->PartitionSize; + } + + pPat++; + } + return uiOffset; +} +#endif + +static UINT32 xDrvEmbMemGetcaps(UINT32 DxType, UINT32 CapID, UINT32 Param1) +{ + UINT32 v = 0; + if (CapID == STORAGE_CAPS_HANDLE) { + const UINT32 Map[] = { + STRG_OBJ_FW_RSV1, + STRG_OBJ_FW_RSV2, + STRG_OBJ_FW_RSV3, + STRG_OBJ_FW_RSV4, + STRG_OBJ_FW_RSV5, + STRG_OBJ_FW_RSV6, + STRG_OBJ_FW_RSV7, + STRG_OBJ_PSTORE1, + STRG_OBJ_FAT1 + }; + if (DxType >= sizeof(Map) / sizeof(Map[0])) { + DBG_ERR("out of id: %d\r\n", DxType); + return 0; + } + + v = (UINT32)EMB_GETSTRGOBJ(Map[DxType]); + //speical case handle +#if defined(_EMBMEM_SPI_NOR_) + if (DxType == DX_TYPE_EMBMEM8) { //FAT change to ramdisk + //v = (UINT32)ramdsk_getStorageObject(); + } +#endif + } + return v; +} + +UINT32 DrvEmbMemGetcaps0(UINT32 CapID, UINT32 Param1) +{ + return xDrvEmbMemGetcaps(DX_TYPE_EMBMEM0, CapID, Param1); +} +UINT32 DrvEmbMemGetcaps1(UINT32 CapID, UINT32 Param1) +{ + return xDrvEmbMemGetcaps(DX_TYPE_EMBMEM1, CapID, Param1); +} +UINT32 DrvEmbMemGetcaps2(UINT32 CapID, UINT32 Param1) +{ + return xDrvEmbMemGetcaps(DX_TYPE_EMBMEM2, CapID, Param1); +} +UINT32 DrvEmbMemGetcaps3(UINT32 CapID, UINT32 Param1) +{ + return xDrvEmbMemGetcaps(DX_TYPE_EMBMEM3, CapID, Param1); +} +UINT32 DrvEmbMemGetcaps4(UINT32 CapID, UINT32 Param1) +{ + return xDrvEmbMemGetcaps(DX_TYPE_EMBMEM4, CapID, Param1); +} +UINT32 DrvEmbMemGetcaps5(UINT32 CapID, UINT32 Param1) +{ + return xDrvEmbMemGetcaps(DX_TYPE_EMBMEM5, CapID, Param1); +} +UINT32 DrvEmbMemGetcaps6(UINT32 CapID, UINT32 Param1) +{ + return xDrvEmbMemGetcaps(DX_TYPE_EMBMEM6, CapID, Param1); +} +UINT32 DrvEmbMemGetcaps7(UINT32 CapID, UINT32 Param1) +{ + return xDrvEmbMemGetcaps(DX_TYPE_EMBMEM7, CapID, Param1); +} +UINT32 DrvEmbMemGetcaps8(UINT32 CapID, UINT32 Param1) +{ + return xDrvEmbMemGetcaps(DX_TYPE_EMBMEM8, CapID, Param1); +} + +UINT32 DrvEmbMemInit(void *pInitParam) // Set Init Parameters +{ + DXSTRG_INIT *g_pInit = (DXSTRG_INIT *)pInitParam; //fat and pstore not complete + + if (!g_pInit) { + return DX_PARAM_ERROR; + } + + DBG_FUNC_BEGIN("\r\n"); +#if defined(_EMBMEM_EMMC_) + static BOOL bEmmcInitOnce = FALSE; + if (!bEmmcInitOnce) { + sdio3_setCallBack(SDIO_CALLBACK_CARD_DETECT, (SDIO_CALLBACK_HDL)xSdioDet); + sdio3_setCallBack(SDIO_CALLBACK_WRITE_PROTECT, (SDIO_CALLBACK_HDL)xSdioWp); + + // Support default speed + high speed + sdio3_setConfig(SDIO_CONFIG_ID_BUS_SPEED_MODE, SDIO_BUS_SPEED_MODE_DS | SDIO_BUS_SPEED_MODE_HS); + // Default speed driving -> 5.0 mA + sdio3_setConfig(SDIO_CONFIG_ID_DS_DRIVING, 50); + // High speed driving -> 10.0 mA + sdio3_setConfig(SDIO_CONFIG_ID_HS_DRIVING, 100); + // Adjust driving/sink according to operating mode + sdio3_setConfig(SDIO_CONFIG_ID_DRIVING_SINK_EN, TRUE); + + sdio3_setConfig(SDIO_CONFIG_ID_BUS_WIDTH, SD_HOST_BUS_4_BITS); + sdio3_setConfig(SDIO_CONFIG_ID_FORMAD_OEMID, (UINT32)"NOVATEK"); + sdio3_setConfig(SDIO_CONFIG_ID_FORMAD_VOL_LABLE, (UINT32)"SD_VOL"); + sdio3_setConfig(SDIO_CONFIG_ID_FORMAD_RAND_VOL_ID_EN, TRUE); + bEmmcInitOnce = TRUE; + } +#elif defined(_EMBMEM_SPI_NAND_) + static BOOL bSpiNandInitOnce = FALSE; + if (!bSpiNandInitOnce) { + nand_setConfig(NAND_CONFIG_ID_FREQ, 96000000); + nand_setConfig(NAND_CONFIG_ID_NAND_TYPE, NANDCTRL_SPI_NAND_TYPE); + bSpiNandInitOnce = TRUE; + } +#elif defined(_EMBMEM_SPI_NOR_) + static BOOL bSpiNandInitOnce = FALSE; + if (!bSpiNandInitOnce) { + nand_setConfig(NAND_CONFIG_ID_NAND_TYPE, NANDCTRL_SPI_NOR_TYPE); + bSpiNandInitOnce = TRUE; + } +#endif + + { + DXSTRG_PARTITION *p = &(g_pInit->prt); + DX_HANDLE DxNandDev = Dx_GetObject(p->uiDxClassType); + STORAGE_OBJ *pStrg = (STORAGE_OBJ *)Dx_Getcaps(DxNandDev, STORAGE_CAPS_HANDLE, 0); + UINT32 blksize = 0; + if (!pStrg) { + DBG_ERR("DrvEmbMemInit: STORAGE_OBJ is null. uiDxClassType=%x\n", p->uiDxClassType); + return E_SYS; + } + pStrg->Lock(); + + + + if (p->uiDxClassType == (DX_CLASS_STORAGE_EXT | DX_TYPE_EMBMEM0)) { + //User define SPI-NOR table sample code + #if 0 + if(pStrg->ExtIOCtrl(STRG_EXT_CMD_SPI_IDENTIFY_CB, (UINT32)pmc_identifySpi, 0) == E_OK) { + DBG_IND("^GSet user define SPI-NOR table success\r\n"); + } else { + DBG_ERR("^RSet user define SPI-NOR table fail\r\n"); + } + #endif + pStrg->SetParam(STRG_SET_MEMORY_REGION, g_pInit->buf.addr, g_pInit->buf.size); + pStrg->SetParam(STRG_SET_PARTITION_SECTORS, p->uiPhyAddr, p->uiPhySize); + pStrg->GetParam(STRG_GET_BEST_ACCESS_SIZE, (UINT32)&blksize, 0); //get block size + if (p->uiPhyAddr != 0) { + DBG_ERR("loader area have to be at phyical address 0.\r\n"); + return E_PAR; + } + if (blksize != _EMBMEM_BLK_SIZE_) { + DBG_FATAL("EMBMEM_BLK_SIZE in ModelConfig set wrong, must be 0x%0X vs 0x%0X. Set it right and rebuild ModelExt and Project\r\n", blksize, _EMBMEM_BLK_SIZE_); + return E_PAR; + } + + MODELEXT_HEADER *header; + EMB_PARTITION *pEmbPat = (EMB_PARTITION *)Dx_GetModelExtCfg(MODELEXT_TYPE_EMB_PARTITION, &header); + + if (!pEmbPat || !header) { + DBG_ERR("MODELEXT_TYPE_EMB_PARTITION is null\n"); + return E_SYS; + } + +#if !defined(_EMBMEM_EMMC_) //EMMC not support STRG_GET_DEVICE_PHY_SIZE + UINT32 PhySize; + UINT32 UsedSize = xDrvEmbMemGetUsedSize(pEmbPat, header->number); + pStrg->GetParam(STRG_GET_DEVICE_PHY_SIZE, (UINT32)&PhySize, 0); + + if (UsedSize == 0) { + return E_PAR; + } + + if (UsedSize > PhySize) { + DBG_ERR("UsedSize (%08X) > PhySize (%08X)\r\n", UsedSize, PhySize); + return E_PAR; + } +#endif + } else { + pStrg->SetParam(STRG_SET_MEMORY_REGION, g_pInit->buf.addr, g_pInit->buf.size); + pStrg->SetParam(STRG_SET_PARTITION_RSV_SECTORS, p->uiResvSize, 0); + pStrg->SetParam(STRG_SET_PARTITION_SECTORS, p->uiPhyAddr, p->uiPhySize); + } + + pStrg->Unlock(); + } + + return DX_OK; +} + +UINT32 DrvEmbMemOpen(void) // Common Constructor +{ + DBG_FUNC_BEGIN("\r\n"); + return DX_OK; +} + +UINT32 DrvEmbMemClose(void) // Common Destructor +{ + DBG_FUNC_BEGIN("\r\n"); + return DX_OK; +} + +UINT32 DrvEmbMemState(UINT32 StateID, UINT32 Value) // General Properties +{ + DBG_FUNC_BEGIN("\r\n"); + + if (StateID & DXGET) { + UINT32 rvalue = 0; + StateID &= ~DXGET; + DBG_IND("get %08x\r\n", StateID); + switch (StateID) { + case STORAGE_STATE_INSERT: + rvalue = TRUE; + break; + case STORAGE_STATE_LOCK: + rvalue = FALSE; + break; + default: + DBG_ERR("state=0x%02X not support!\r\n", StateID); + break; + } + return rvalue; + } else if (StateID & DXSET) { + StateID &= ~DXSET; + DBG_IND("set %08x\r\n", StateID); + switch (StateID) { + default: + DBG_ERR("state=0x%02X not support!\r\n", StateID); + break; + } + } + return DX_OK; +} + +UINT32 DrvEmbMemControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2) // General Methods +{ + DBG_FUNC_BEGIN("\r\n"); + DBG_IND("ctrl %08x\r\n", CtrlID); + + switch (CtrlID) { + default: + DBG_ERR("ctrlid=0x%02X not support!\r\n", CtrlID); + break; + } + return DX_OK; +} + +UINT32 DrvEmbMemCommand(CHAR *pcCmdStr) //General Command Console +{ + switch (*pcCmdStr) { + case 'd': + /*if (!strncmp(pcCmdStr, "Nand dump", 9)) + { + return TRUE; + }*/ + break; + } + return FALSE; +} + +#endif diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxUsb.c b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxUsb.c new file mode 100755 index 000000000..096ddd14b --- /dev/null +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxUsb.c @@ -0,0 +1,190 @@ +/** + Copyright Novatek Microelectronics Corp. 2013. All rights reserved. + + @file DxUSB.c + @ingroup mIDxUSB + + @brief Detect USB connection status. + + @date 2013/04/30 +*/ + +#include "UsbDevDef.h" +#include +#include "DxUSB.h" +#include "DxCommon.h" +#include "DxApi.h" + +/////////////////////////////////////////////////////////////////////////////// +#define __MODULE__ DxUSB +#define __DBGLVL__ 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER +#define __DBGFLT__ "*" //*=All, [mark]=CustomClass +#include +/////////////////////////////////////////////////////////////////////////////// +//public func +UINT32 DetUSBGetcaps(UINT32 CapID, UINT32 Param1); // Get Capability Flag (Base on interface version) +UINT32 DetUSBSetcfgs(UINT32 CfgID, UINT32 Param1); // Set Config Setting +UINT32 DetUSBInit(void *pInitParam); // Set Init Parameters +UINT32 DetUSBOpen(void); // Common Constructor +UINT32 DetUSBClose(void); // Common Destructor +UINT32 DetUSBState(UINT32 StateID, UINT32 Value); // General Properties +UINT32 DetUSBControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2); // General Methods +UINT32 DetUSBCommand(CHAR *pcCmdStr); //General Command Console + +//dx object +DX_OBJECT gDevUSB = { + DXFLAG_SIGN, + DX_CLASS_USB_EXT, + DETUSB_VER, + "DETECT_USB", + 0, 0, 0, 0, + DetUSBGetcaps, + DetUSBSetcfgs, + DetUSBInit, + DetUSBOpen, + DetUSBClose, + DetUSBState, + DetUSBControl, + DetUSBCommand, + 0, +}; + +static BOOL DxUSB_GetIsUSBPlug(void) +{ + return (usb2dev_state_change()); +} + +static UINT32 DxUSB_UpdateConnectType(void) +{ + USB_CHARGER_STS RetUSB; + UINT32 uiUSBCurrType; + if (!DxUSB_GetIsUSBPlug()) { + uiUSBCurrType = USB_CONNECT_NONE; + } else { + RetUSB = usb2dev_check_charger(0); + switch (RetUSB) { + case USB_CHARGER_STS_NONE: + DBG_DUMP("CONNECT to PC\r\n"); + uiUSBCurrType = USB_CONNECT_PC; + break; + case USB_CHARGER_STS_CHARGING_DOWNSTREAM_PORT: + DBG_DUMP("CONNECT to Charging PC\r\n"); + uiUSBCurrType = USB_CONNECT_CHARGING_PC; + break; + case USB_CHARGER_STS_CHARGER: + DBG_DUMP("CONNECT to CHARGER\r\n"); + uiUSBCurrType = USB_CONNECT_CHARGER; + break; + default: + DBG_ERR("CONNECTION UNKNOWN!\r\n"); + uiUSBCurrType = USB_CONNECT_UNKNOWN; + break; + } + } + return uiUSBCurrType; +} + + + +UINT32 DetUSBGetcaps(UINT32 CapID, UINT32 Param1) // Get Capability Flag (Base on interface version) +{ + UINT32 v = 0; + switch (CapID) { + case DETUSB_CAPS_BASE: + DBG_IND("get USB caps\r\n"); + v = DETUSB_BF_DETPLUG | DETUSB_BF_CONNTYPE; + break; + case DETUSB_CAPS_PLUG: + DBG_IND("get USB plug\r\n"); + v = DxUSB_GetIsUSBPlug(); + break; + case DETUSB_CAPS_CONN_TYPE: + DBG_IND("get USB connection type\r\n"); + v = DxUSB_UpdateConnectType(); + break; + default: + break; + } + return v; +} +UINT32 DetUSBSetcfgs(UINT32 CfgID, UINT32 Param1) // Set Config Setting +{ + switch (CfgID) { + case DETUSB_CFG_STANDARD_CHARGER: + DBG_IND("set standard charger %08x\r\n", Param1); + usb2dev_set_config(USB_CONFIG_ID_STANDARD_CHARGER, Param1); + break; + + default: + break; + } + return DX_OK; +} +UINT32 DetUSBInit(void *pInitParam) // Set Init Parameters +{ + DBG_FUNC_BEGIN("\r\n"); + return DX_OK; +} + +UINT32 DetUSBOpen(void) // Common Constructor +{ + DBG_FUNC_BEGIN("\r\n"); + return DX_OK; +} + +UINT32 DetUSBClose(void) // Common Destructor +{ + DBG_FUNC_BEGIN("\r\n"); + return DX_OK; +} + +UINT32 DetUSBState(UINT32 StateID, UINT32 Value) // General Properties +{ + DBG_FUNC_BEGIN("\r\n"); + + if (StateID & DXGET) { + UINT32 rvalue = 0; + StateID &= ~DXGET; + DBG_IND("get %08x\r\n", StateID); + switch (StateID) { + default: + DBG_ERR("state=0x%02X not support!\r\n", StateID); + break; + } + return rvalue; + } else if (StateID & DXSET) { + StateID &= ~DXSET; + DBG_IND("set %08x\r\n", StateID); + switch (StateID) { + default: + DBG_ERR("state=0x%02X not support!\r\n", StateID); + break; + } + } + return DX_OK; +} + +UINT32 DetUSBControl(UINT32 CtrlID, UINT32 Param1, UINT32 Param2) // General Methods +{ + DBG_FUNC_BEGIN("\r\n"); + DBG_IND("ctrl %08x\r\n", CtrlID); + + switch (CtrlID) { + default: + DBG_ERR("ctrlid=0x%02X not support!\r\n", CtrlID); + break; + } + return DX_OK; +} + +UINT32 DetUSBCommand(CHAR *pcCmdStr) //General Command Console +{ + return FALSE; +} + + + + +//============================================ + + diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxWiFi.c b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxWiFi.c new file mode 100755 index 000000000..0d2064f88 --- /dev/null +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxWiFi.c @@ -0,0 +1,21 @@ +#include "DxCfg.h" +#include "IOCfg.h" +#include "Debug.h" +#include "DxWiFi.h" + +/////////////////////////////////////////////////////////////////////////////// +#define __MODULE__ DxWiFi +#define __DBGLVL__ 1 // 0=OFF, 1=ERROR, 2=TRACE +#define __DBGFLT__ "*" //*=All, [mark]=CustomClass +#include +/////////////////////////////////////////////////////////////////////////////// +void DrvWiFi_PowerOn(void) +{ + +} + +void DrvWiFi_PowerOff(void) +{ + +} + diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/IOCfg.c b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/IOCfg.c new file mode 100755 index 000000000..80bce0167 --- /dev/null +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/IOCfg.c @@ -0,0 +1,176 @@ +/** + Copyright Novatek Microelectronics Corp. 2005. All rights reserved. + + @file IOCfg.c + @ingroup mIPRJAPCommonIO + + @brief IO config module + This file is the IO config module + + @note Nothing. + + @date 2005/12/24 +*/ + +/** \addtogroup mIPRJAPCommonIO */ +//@{ + +#include "kwrap/type.h" +#include "DrvExt.h" +#include "IOCfg.h" +#include "IOInit.h" +/////////////////////////////////////////////////////////////////////////////// +#define __MODULE__ DxDrv +#define __DBGLVL__ 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER +#define __DBGFLT__ "*" //*=All, [mark]=CustomClass +#include +/////////////////////////////////////////////////////////////////////////////// + +#if (USE_VIO == ENABLE) +UINT32 Virtual_IO[VIO_MAX_ID] = {0}; +UINT32 vio_getpin(UINT32 id) +{ + if (id >= VIO_MAX_ID) { + return 0; + } + return Virtual_IO[id]; +} +void vio_setpin(UINT32 id, UINT32 v) +{ + if (id >= VIO_MAX_ID) { + return; + } + Virtual_IO[id] = v; +} +#endif + +#define GPIO_SET_NONE 0xffffff +#define GPIO_SET_OUTPUT_LOW 0x0 +#define GPIO_SET_OUTPUT_HI 0x1 + +/** + Do GPIO initialization + + Initialize input/output pins, and pin status + + @param void + @return void +*/ +void IO_InitGPIO(void) +{ +#if 0 + UINT32 iSValue; + + MODELEXT_HEADER *header; + GPIO_INIT_OBJ *uiGPIOMapInitTab; + + uiGPIOMapInitTab = (GPIO_INIT_OBJ *)Dx_GetModelExtCfg(MODELEXT_TYPE_GPIO_INFO, &header); + if (!uiGPIOMapInitTab || !header) { + DBG_FATAL("Modelext: iocfg is null\n"); + return; + } + + UINT32 totalGpioInitCount = header->number; + + DBG_IND("GPIO START\r\n"); + //-------------------------------------------------------------------- + // Open GPIO driver + //-------------------------------------------------------------------- + gpio_open(); + for (iSValue = 0 ; iSValue < totalGpioInitCount ; iSValue++) { + if (uiGPIOMapInitTab[iSValue].GpioDir == GPIO_DIR_INPUT) { + gpio_setDir(uiGPIOMapInitTab[iSValue].GpioPin, GPIO_DIR_INPUT); + pad_set_pull_updown(uiGPIOMapInitTab[iSValue].PadPin, uiGPIOMapInitTab[iSValue].PadDir); + } else { + gpio_setDir(uiGPIOMapInitTab[iSValue].GpioPin, GPIO_DIR_OUTPUT); + if (uiGPIOMapInitTab[iSValue].PadDir == GPIO_SET_OUTPUT_HI) { + gpio_setPin(uiGPIOMapInitTab[iSValue].GpioPin); + } else { + gpio_clearPin(uiGPIOMapInitTab[iSValue].GpioPin); + } + } + } + + //-------------------------------------------------------------------- + // Use Non-Used PWM to be Delay Timer + //-------------------------------------------------------------------- +#if defined(PWMID_TIMER) + Delay_setPwmChannels(PWMID_TIMER); +#endif + + DBG_IND("GPIO END\r\n"); +#endif +} + +/** + Initialize voltage detection + + Initialize voltage detection for battery and flash + + @param void + @return void +*/ + +void IO_InitADC(void) +{ +#if 1 + if (adc_open(ADC_CH_VOLDET_BATTERY) != E_OK) { + DBG_ERR("Can't open ADC channel for battery voltage detection\r\n"); + return; + } + + //650 Range is 250K Hz ~ 2M Hz + adc_setConfig(ADC_CONFIG_ID_OCLK_FREQ, 250000); //250K Hz + + //battery voltage detection + adc_setChConfig(ADC_CH_VOLDET_BATTERY, ADC_CH_CONFIG_ID_SAMPLE_FREQ, 10000); //10K Hz, sample once about 100 us for CONTINUOUS mode + adc_setChConfig(ADC_CH_VOLDET_BATTERY, ADC_CH_CONFIG_ID_SAMPLE_MODE, (VOLDET_ADC_MODE) ? ADC_CH_SAMPLEMODE_CONTINUOUS : ADC_CH_SAMPLEMODE_ONESHOT); + adc_setChConfig(ADC_CH_VOLDET_BATTERY, ADC_CH_CONFIG_ID_INTEN, FALSE); +#endif +#if (ADC_KEY == ENABLE) + if (adc_open(ADC_CH_VOLDET_KEY1) != E_OK) { + DBG_ERR("Can't open ADC channel for battery voltage detection\r\n"); + return; + } + adc_setChConfig(ADC_CH_VOLDET_KEY1, ADC_CH_CONFIG_ID_SAMPLE_FREQ, 10000); //10K Hz, sample once about 100 us for CONTINUOUS mode + adc_setChConfig(ADC_CH_VOLDET_KEY1, ADC_CH_CONFIG_ID_SAMPLE_MODE, (VOLDET_ADC_MODE) ? ADC_CH_SAMPLEMODE_CONTINUOUS : ADC_CH_SAMPLEMODE_ONESHOT); + adc_setChConfig(ADC_CH_VOLDET_KEY1, ADC_CH_CONFIG_ID_INTEN, FALSE); +#endif + + // Enable adc control logic + adc_setEnable(TRUE); + //??? + //this delay is from 650, but it is not necessary for current IC + //Delay_DelayMs(15); //wait ADC stable //for pwr on speed up +} + +void Dx_InitIO(void) // Config IO for external device +{ + + //IO_InitIntDir(); //initial interrupt destination + + //IO_InitPinmux(); //initial PINMUX config + //IO_InitGPIO(); //initial GPIO pin status + IO_InitADC(); //initial ADC pin status +#if 0//defined(_MCU_ENABLE_) + //Open for DxPower operating + Dx_Open(Dx_GetObject(DX_CLASS_POWER_EXT)); + MCUCtrl_Open(); +#endif + gpio_setDir(GPIO_IR_LED_PWR, GPIO_DIR_OUTPUT); + gpio_clearPin(GPIO_IR_LED_PWR); + + gpio_setDir(GPIO_IRCUT_MEN1, GPIO_DIR_OUTPUT); + gpio_clearPin(GPIO_IRCUT_MEN1); + + gpio_setDir(GPIO_IRCUT_MEN2, GPIO_DIR_OUTPUT); + gpio_clearPin(GPIO_IRCUT_MEN2); + +} + +void Dx_UninitIO(void) // Config IO for external device +{ +} + + + diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/IOCfg.h b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/IOCfg.h new file mode 100755 index 000000000..9848fd964 --- /dev/null +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/IOCfg.h @@ -0,0 +1,415 @@ +/** + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. + + @file IOCfg.h + @ingroup mIPRJAPCommonIO + + @brief Header file of IO config + This file is the header file of IO config + + @note Nothing. + @date 2012/09/04 +*/ + +/** \addtogroup mIPRJAPCommonIO */ +//@{ + +#ifndef _IOCFG_H +#define _IOCFG_H + +#include "kwrap/type.h" +#include "IOInit.h" +#if 0 +#include "pad.h" +#include "top.h" +#include "gpio.h" +#include "adc.h" + +#include "pwm.h" + +#include "gpio_info.h" +#endif +#include "gpio_info.h" +#include "gpio.h" +#include "adc.h" +#define USE_VIO DISABLE + +#if (USE_VIO == ENABLE) +#define VIO_TV_DET 1 +#define VIO_HDMI_DET 2 +#define VIO_LCD2_DET 3 +#define VIO_SENSOR2_DET 4 +#define VIO_SENSOR1_DET 5 +#define VIO_AIN_DET 6 +#define VIO_MAX_ID 16 +extern UINT32 vio_getpin(UINT32 id); +extern void vio_setpin(UINT32 id, UINT32 v); +#endif + +//-------------------------------------------------------------------- +// ADC common +//-------------------------------------------------------------------- + +#define GPIO_KEY ENABLE +#define ADC_KEY DISABLE + +#define VOLDET_ADC_CONT_MODE ENABLE //!< ENABLE for continuous, DISABLE for one-shot + +#if (VOLDET_ADC_CONT_MODE == ENABLE) +#define VOLDET_ADC_MODE TRUE +#else +#define VOLDET_ADC_MODE FALSE +#endif + +//-------------------------------------------------------------------- +// PWM common +//-------------------------------------------------------------------- + + + +//-------------------------------------------------------------------- +// Display device +//-------------------------------------------------------------------- +// LCD communicate +#define LCD_COMM_DUMMY 0 +#define LCD_COMM_BY_GPIO 1 +#define LCD_COMM_BY_SIF 2 +#define LCD_COMM_CTRL LCD_COMM_BY_GPIO + +#if (LCD_COMM_CTRL == LCD_COMM_BY_GPIO) +#define GPIO_LCD_SIF_SEN P_GPIO_7//S_GPIO_4 //FPGA +#define GPIO_LCD_SIF_SCK P_GPIO_8//S_GPIO_5 //FPGA +#define GPIO_LCD_SIF_SDA P_GPIO_9//S_GPIO_6 //FPGA +#endif +#if (LCD_COMM_CTRL == LCD_COMM_BY_SIF) +#define SIF_LCD_CH SIF_CH2 +#define PAD_LCD_SIF_SEN PAD_PIN_PGPIO7 +#define PAD_LCD_SIF_SCK PAD_PIN_PGPIO8 +#define PAD_LCD_SIF_SDA PAD_PIN_PGPIO9 +#define DIR_LCD_SIF_SEN PAD_PULLUP +#define DIR_LCD_SIF_SCK PAD_PULLUP +#define DIR_LCD_SIF_SDA PAD_PULLUP +#endif +//#define GPIO_LCD_SLEEP 87 //FPGA not support +#define GPIO_LCD_RESET L_GPIO_1 + +// LCD backlight +#define LCD_BACKLIGHT_DUMMY 0 +#define LCD_BACKLIGHT_BY_GPIO 1 +#define LCD_BACKLIGHT_BY_PWM 2 +#define LCD_BACKLIGHT_BY_PWRIC 3 +#define LCD_BACKLIGHT_CTRL LCD_BACKLIGHT_BY_GPIO //FPGA +#if (LCD_BACKLIGHT_CTRL == LCD_BACKLIGHT_BY_PWM) +#define GPIO_PWM_LCD_BLG_PCTL x +#define PWMID_LCD_BLG_PCTL PWMID_x +#elif (LCD_BACKLIGHT_CTRL == LCD_BACKLIGHT_BY_GPIO) +#define GPIO_LCD_BLG_PCTL S_GPIO_3 +#define PAD_LCD_BLG_PCTL PAD_PIN_SGPIO3 +#endif + +// LCD2 communicate +#define LCD2_COMM_CTRL LCD_COMM_BY_GPIO //FPGA +#if (LCD2_COMM_CTRL == LCD_COMM_BY_GPIO) +#define GPIO_LCD2_SIF_SEN P_GPIO_23 //FPGA --- NOTE! it will conflict with PIN_SIF_CFG_CH2 +#define GPIO_LCD2_SIF_SCK P_GPIO_25 //FPGA --- NOTE! it will conflict with PIN_SIF_CFG_CH2 +#define GPIO_LCD2_SIF_SDA P_GPIO_26 //FPGA --- NOTE! it will conflict with PIN_SIF_CFG_CH2 +#endif +#if (LCD2_COMM_CTRL == LCD_COMM_BY_SIF) +#define SIF_LCD2_CH SIF_CHx +#define PAD_LCD2_SIF_SEN PAD_PIN_PGPIO23 +#define PAD_LCD2_SIF_SCK PAD_PIN_PGPIO25 +#define PAD_LCD2_SIF_SDA PAD_PIN_PGPIO26 +#endif +//#define GPIO_LCD2_SLEEP 87 //FPGA not support +//#define GPIO_LCD2_RESET 88 //FPGA not support + +// LCD2 backlight +#define LCD2_BACKLIGHT_CTRL LCD_BACKLIGHT_DUMMY //FPGA +#if (LCD2_BACKLIGHT_CTRL == LCD_BACKLIGHT_BY_PWM) +#define GPIO_PWM_LCD2_BLG_PCTL x +#define PWMID_LCD2_BLG_PCTL PWMID_x +#elif (LCD2_BACKLIGHT_CTRL == LCD_BACKLIGHT_BY_GPIO) +#define GPIO_LCD2_BLG_PCTL x_GPIO_x +#define PAD_LCD2_BLG_PCTL PAD_PIN_xGPIOx +#endif + +// TV +#define TV_DET_DUMMY 0 +#define TV_DET_BY_VIO 1 +#define TV_DET_BY_GPIO 2 +#define TV_DET_BY_ADC 3 +#define TV_DET_CTRL TV_DET_BY_VIO //FPGA +#if (TV_DET_CTRL == TV_DET_BY_GPIO) +#define GPIO_TV_PLUG C_GPIO_x +#define PAD_TV_PLUG PAD_PIN_CGPIOx +#endif +#if (TV_DET_CTRL == TV_DET_BY_ADC) +#define ADC_CH_TV_PLUG ADC_CHANNEL_x +#endif + +// HDMI +#define HDMI_DET_DUMMY 0 +#define HDMI_DET_BY_VIO 1 +#define HDMI_DET_BY_GPIO 2 +#define HDMI_DET_BY_ADC 3 +#define HDMI_DET_BY_HOTPLUG 4 +#define HDMI_DET_CTRL HDMI_DET_BY_VIO //EVB + +// LCD2 +#define LCD2_DET_DUMMY 0 +#define LCD2_DET_BY_VIO 1 +#define LCD2_DET_BY_GPIO 2 +#define LCD2_DET_BY_ADC 3 +#define LCD2_DET_CTRL LCD2_DET_BY_VIO //EVB + +// AIN +#define AIN_DET_DUMMY 0 +#define AIN_DET_BY_VIO 1 +#define AIN_DET_BY_GPIO 2 +#define AIN_DET_CTRL AIN_DET_BY_VIO //EVB +#if (AIN_DET_CTRL == AIN_DET_BY_GPIO) +#define GPIO_AIN_PLUG C_GPIO_x +#define PAD_AIN_PLUG PAD_PIN_CGPIOx +#endif + +//-------------------------------------------------------------------- +// Storage device +//-------------------------------------------------------------------- +// CARD +// card power +#define GPIO_CARD_POWER P_GPIO_7 +#define PAD_CARD_POWER PAD_PIN_PGPIO7 +// SD card detect +#define GPIO_CARD_DETECT C_GPIO_9 +#define PAD_CARD_DETECT PAD_PIN_CGPIO9 +// SD card write protect +#define GPIO_CARD_WP 0//P_GPIO_11 +#define PAD_CARD_WP 0//PAD_PIN_PGPIO11 + +extern BOOL SDIOCardUser_CheckCardInserted(void); +extern BOOL SDIOCardUser_CheckCardWP(void); +#if defined(_EMBMEM_EMMC_) +extern BOOL SDIO2CardUser_CheckCardInserted(void); +extern BOOL SDIO2CardUser_CheckCardWP(void); +#endif + +//-------------------------------------------------------------------- +// Audio device +//-------------------------------------------------------------------- +//Audio +extern BOOL GPIOMap_DetAudio(void); + + +//-------------------------------------------------------------------- +// Input device +//-------------------------------------------------------------------- +// Key defined (650 FPGA KEYPAD) +// +// +//--------------------------// //--------------------------// +// SW3 SW1 SW4 SW2 // // kzi kzo ks1 ks2 // +// // // // +// SW7 // // ku // +// // // // +// SW5 SW6 SW8 // // kl ke kr // +// // // // +// SW10 // // kd // +// // // // +// SW12 SW11 SW9 // // km kmd kmp // +// // // // +//--------------------------// //--------------------------// +// +// SW1~SW12 = MC22~MC31,DCPIO4,5 = C_GPIO_22~31,DCPIO4,5 (Roy) +// Low (Roy) +// +#define GPIO_KEY_ZOOMOUT P_GPIO_20 // Key Zoom Out (kzo) +#define PAD_KEY_ZOOMOUT PAD_PIN_CGPIO20 +#define GPIO_KEY_SHUTTER2 C_GPIO_19 // Key Shutter2 (ks2) +#define PAD_KEY_SHUTTER2 PAD_PIN_CGPIO19 +#define GPIO_KEY_ZOOMIN P_GPIO_22 // Key Zoom In (kzi) +#define PAD_KEY_ZOOMIN PAD_PIN_CGPIO22 +#define GPIO_KEY_SHUTTER1 P_GPIO_23 // Key Shutter1 (ks1) +#define PAD_KEY_SHUTTER1 PAD_PIN_PGPIO23 +#define GPIO_KEY_LEFT C_GPIO_18 // Key Left (kl) +#define PAD_KEY_LEFT PAD_PIN_CGPIO18 +#define GPIO_KEY_ENTER P_GPIO_4 // Key OK (ke) +#define PAD_KEY_ENTER PAD_PIN_PGPIO4 +#define GPIO_KEY_UP C_GPIO_22 // Key Up (ku) +#define PAD_KEY_UP PAD_PIN_CGPIO22 +#define GPIO_KEY_RIGHT C_GPIO_4 // Key Right (kr) +#define PAD_KEY_RIGHT PAD_PIN_CGPIO4 +#define GPIO_KEY_PLAYBACK C_GPIO_17 // Key Playback (kmp) +#define PAD_KEY_PLAYBACK PAD_PIN_CGPIO17 +#define GPIO_KEY_DOWN C_GPIO_20 // Key Down (kd) +#define PAD_KEY_DOWN PAD_PIN_CGPIO20 +#define GPIO_KEY_MODE D_GPIO_4 // Key Mode (kmd) +#define PAD_KEY_MODE PAD_PIN_DGPIO4 +#define GPIO_KEY_MENU C_GPIO_21 // Key Menu (km) +#define PAD_KEY_MENU PAD_PIN_CGPIO21 + +#define GPIO_KEY_TEST S_GPIO_6 +#define PAD_KEY_TEST PAD_PIN_SGPIO6 + +//#define ADC_CH_VOLDET_MS1 ADC_CHANNEL_1 +//#define ADC_CH_VOLDET_MS2 ADC_CHANNEL_0 +#define ADC_CH_VOLDET_KEY1 ADC_CHANNEL_2 + + +//Touch panel controller + +//#define GPIO_TP_BUSY (2 | GPIO_IS_DGPIO) //HW TS_INT =DGPIO-02 +#define GPIO_TP_PENIRQ (7 | GPIO_IS_DGPIO) //HW TS_PENIRQ =DGPIO-12 +#define GPIO_TP_DOUT 0 //P_GPIO_58 //HW TP_DI =SBDAT0/AGPIO-26 (FW output = HW input) +#define GPIO_TP_DIN (1 | GPIO_IS_DGPIO) //HW TS_DO =DGPIO-01 (FW input = HW output) +#define GPIO_TP_DCLK 0//P_GPIO_57 //HW TS_CLK =SBCK0/AGPIO-25 +//#define GPIO_TP_CS 28 //HW TS_CS =SBCS1/AGPIO-28 //SIF channel 1 +#define GPIO_TP_CS 0//P_GPIO_56 //HW TS_CS =SBCS0/AGPIO-27 //SIF channel 0 +//#define PAD_TP_BUSY PAD_PIN_DGPIO2 +#define PAD_TP_PENIRQ PAD_PIN_DGPIO7 +#define PAD_TP_DOUT PAD_PIN_PGPIO58 +#define PAD_TP_DIN PAD_PIN_DGPIO1 +#define PAD_TP_DCLK PAD_PIN_PGPIO57 +//#define PAD_TP_CS PAD_PIN_SBCS1 //SIF channel 1 +#define PAD_TP_CS PAD_PIN_PGPIO56 //SIF channel 0 + + +//G-Sensor +/* +#define GPIO_GS_INT1 (3 | GPIO_IS_DGPIO) +#define GPIO_GS_INT2 (4 | GPIO_IS_DGPIO) +#define PAD_GS_INT1 PAD_PIN_DGPIO3 +#define PAD_GS_INT2 PAD_PIN_DGPIO4 +*/ +extern UINT32 GPIOMap_DetKey(void); +extern UINT32 GPIOMap_DetModeDial(void); +extern BOOL GPIOMap_DetShutter1(void); +extern BOOL GPIOMap_DetMacro(void); +extern BOOL GPIOMap_DetPoweroff(void); + +//-------------------------------------------------------------------- +// Output device +//-------------------------------------------------------------------- +// LED +#define LED_RED_DUMMY 0 +#define LED_RED_BY_GPIO 1 +#define LED_RED_BY_MCU 3 +#define LED_RED_CTRL LED_RED_DUMMY +#define GPIO_RED_LED P_GPIO_9 //FPGA +#define PAD_RED_LED PAD_PIN_PGPIO9 + +#define LED_GREEN_DUMMY 0 +#define LED_GREEN_BY_GPIO 1 +#define LED_GREEN_BY_MCU 3 +#define LED_GREEN_CTRL LED_RED_DUMMY +#define GPIO_GREEN_LED P_GPIO_10 //FPGA +#define PAD_GREEN_LED PAD_PIN_PGPIO10 + +#define LED_FOCUS_DUMMY 0 +#define LED_FOCUS_BY_GPIO 1 +#define LED_FOCUS_BY_PWM 2 //use PWM to control LED brightness +#define LED_FOCUS_BY_MCU 3 + +#define LED_FOCUS_CTRL LED_FOCUS_BY_GPIO +#define GPIO_FOCUS_LED x_GPIO_x //FPGA +#define PAD_FOCUS_LED PAD_PIN_xGPIOx +#define PWMID_FOCUS_LED PWMID_x //FPGA + +#if defined(_MCU_ENABLE_) +#undef LED_RED_CTRL +#define LED_RED_CTRL LED_RED_BY_MCU + +#undef LED_GREEN_CTRL +#define LED_GREEN_CTRL LED_GREEN_BY_MCU + +#undef LED_FOCUS_CTRL +#define LED_FOCUS_CTRL LED_FOCUS_BY_MCU +#endif + +#define GPIO_IR_LED_PWR P_GPIO_3 //ir led pwr +#define PAD_IR_LED_PWR PAD_PIN_PGPIO3 + +#define GPIO_IRCUT_MEN1 D_GPIO_6 // M_EN1 IRCUT 1 +#define PAD_IRCUT_MEN1 PAD_PIN_DGPIO6 +#define GPIO_IRCUT_MEN2 D_GPIO_5 // M_EN2 IRCUT 2 +#define PAD_IRCUT_MEN2 PAD_PIN_DGPIO5 +//----------charge ic ---------------- +#define GPIO_CHARGEIC_EN C_GPIO_4 +#define GPIO_CHARGEIC_INT C_GPIO_7 +#define GPIO_CHARGEIC_STATE P_GPIO_12 +#define GPIO_CHARGEIC_ADC_SWITCH L_GPIO_0 + +#define GPIO_ACC P_GPIO_5 +#define GPIO_PA P_GPIO_0 +#define GPIO_PARKING P_GPIO_6 + + +//-------------------------------------------------------------------- +// Power device +//-------------------------------------------------------------------- +//Battery +#define ADC_CH_VOLDET_BATTERY ADC_CHANNEL_0 +extern char *VolDet_GetStatusString(void); + + + +//-------------------------------------------------------------------- +// Sensor device +//-------------------------------------------------------------------- +// CCD +/* +typedef enum +{ + CCD_PWR_STATUS_OFF = 0, + CCD_PWR_STATUS_ON, + CCD_PWR_STATUS_SLEEP, + CCD_PWR_STATUS_MAXIDX +}CCD_PWR_STATUS; +*/ +/* +#define GPIO_CCDTG_VH L_GPIO_20 +#define GPIO_CCDTG_VL L_GPIO_19 +//#define GPIO_CCDTG_VH_2 50 +#define GPIO_CCDTG_RST C_GPIO_22 +//#define GPIO_CCDTG_HDRV_EN 88 +#define SIF_SENSOR_TG SIF_CH2 +#define SIF_SENSOR_AFE SIF_CH3 +*/ +extern void GPIOMap_TurnOnCCDPower(void); +extern void GPIOMap_TurnOffCCDPower(void); +extern UINT8 GPIOMap_IsCCDPowerOn(void); +extern void GPIOMap_SleepCCDPower(void); +extern void GPIOMap_WakeUpCCDPower(void); + +//-------------------------------------------------------------------- +// Storbe device +//-------------------------------------------------------------------- +// STROBE +/* +#define GPIO_FLASH_CHARGE C_GPIO_21 +#define PAD_FL_CHARGE PAD_PIN_CGPIO21 +#define GPIO_FLASH_RDY P_GPIO_12 +#define PAD_FL_RDY PAD_PIN_PGPIO12 +#define GPIO_FLASH_TRIGGER D_GPIO_7 +#define PAD_FL_TRIGGER PAD_PIN_DGPIO7 +*/ + +//-------------------------------------------------------------------- +// Lens device +//-------------------------------------------------------------------- +// BCS 2.7 ~ 12 mm lens + SANYO LV8044 motor IC +#define GPIO_LENS_RESET 0 // output + +#define GPIO_LENS_ZOOM_INTR 0 // input +#define PAD_LENS_ZOOM_INTR 0 + +#define GPIO_LENS_FOCUS_INTR 0 // input +#define PAD_LENS_FOCUS_INTR 0 + +#define GPIO_LENS_IR_CTRL0 P_GPIO_6 // output +#define GPIO_LENS_IR_CTRL1 P_GPIO_6 // output +#define PAD_LENS_IR_CTRL0 PAD_PIN_PGPIO6 +#define PAD_LENS_IR_CTRL1 PAD_PIN_PGPIO7 + +#endif + +//@} diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/Source.mk b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/Source.mk new file mode 100755 index 000000000..adcc3c34c --- /dev/null +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/Source.mk @@ -0,0 +1,27 @@ +DTS_SENSOR = ./SrcCode/Dx/$(MODEL)/sensor.dts +DTS_APP = ./SrcCode/Dx/$(MODEL)/application.dts +DX_SRC = \ + ./SrcCode/Dx/$(MODEL)/DxCfg.c \ + ./SrcCode/Dx/$(MODEL)/DxStorage_Card.c \ + ./SrcCode/Dx/$(MODEL)/DxStorage_EmbMem.c \ + ./SrcCode/Dx/$(MODEL)/DxDisplay_LCD.c \ + ./SrcCode/Dx/$(MODEL)/DxPower_DC.c \ + ./SrcCode/Dx/$(MODEL)/DxPower_Battery.c \ + ./SrcCode/Dx/$(MODEL)/DxInput_Key.c \ + ./SrcCode/Dx/$(MODEL)/IOCfg.c \ + ./SrcCode/Dx/$(MODEL)/DxUsb.c \ + ./SrcCode/Dx/$(MODEL)/DxHunting.c \ + +# ./SrcCode/Dx/$(MODEL)/DxCamera_Sensor.c \ +# ./SrcCode/Dx/$(MODEL)/DxCfg.c +# ./SrcCode/Dx/$(MODEL)/DxCmd.c +# ./SrcCode/Dx/$(MODEL)/DxDisplay_LCD.c +# ./SrcCode/Dx/$(MODEL)/DxOutput_LED.c +# ./SrcCode/Dx/$(MODEL)/DxPower_Battery.c +# ./SrcCode/Dx/$(MODEL)/DxSound_Audio.c +# ./SrcCode/Dx/$(MODEL)/DxStorage_Card.c +# ./SrcCode/Dx/$(MODEL)/DxStorage_EmbMem.c +# ./SrcCode/Dx/$(MODEL)/DxWiFi.c +# ./SrcCode/Dx/$(MODEL)/DxCmd.c + + diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/application.dts b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/application.dts new file mode 100755 index 000000000..01c808c03 --- /dev/null +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/application.dts @@ -0,0 +1,10 @@ +/* + * Novatek Ltd. NA51055 BSP part of dts + * + * Cortex-A9 + * + */ + +/dts-v1/; +#include "isp.dtsi" /* sensor */ + diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/isp.dtsi b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/isp.dtsi new file mode 100755 index 000000000..48bd38ba9 --- /dev/null +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/isp.dtsi @@ -0,0 +1,32 @@ +/ { + isp { + sensor@0 { + ae_path = "/isp/ae/os05b10_ae_0"; + awb_path = "/isp/awb/os05b10_awb_0"; + iq_path = "/isp/iq/os05b10_iq_0"; + #iq_cap_path = "/isp/iq/os05b10_iq_0_cap"; + #iq_shading_path = "/isp/iq/os05b10_iq_shading_0"; + }; + sensor@1 { + ae_path = "/isp/ae/os05a10_ae_0"; + awb_path = "/isp/awb/os05a10_awb_0"; + iq_path = "/isp/iq/os05a10_iq_0"; + #iq_cap_path = "/isp/iq/os05a10_iq_0_cap"; + }; + /* label for ae, awb, iq table */ + ae: ae { + }; + awb: awb { + }; + iq: iq { + }; + }; +}; + +/* Note: put include files in the tail since label should be declared first. */ +#include "os05b10_ae_0.dtsi" +#include "os05b10_awb_0.dtsi" +#include "os05b10_iq_0.dtsi" +#include "os05b10_iq_0_cap.dtsi" +#include "os05b10_iq_0_vid.dtsi" + diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/sensor.dts b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/sensor.dts new file mode 100755 index 000000000..27d774419 --- /dev/null +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/sensor.dts @@ -0,0 +1,78 @@ +/* + * Novatek Ltd. NA51055 BSP part of dts + * + * Cortex-A9 + * + */ + +/dts-v1/; + +/ { + sensor_ssenif { + ssenif@0 { + if_type = <0x05>; /* HD_COMMON_VIDEO_IN_MIPI_CSI */ + sensor_pinmux = <0x220>; + serial_if_pinmux = <0xf01>; /*PIN_MIPI_LVDS_CFG_CLK2 | PIN_MIPI_LVDS_CFG_DAT0 | PIN_MIPI_LVDS_CFG_DAT1 | PIN_MIPI_LVDS_CFG_DAT2 | PIN_MIPI_LVDS_CFG_DAT3*/ + cmd_if_pinmux = <0x01>; /*PIN_I2C_CFG_CH1*/ + clk_lane_sel = <0x00>; /* HD_VIDEOCAP_SEN_CLANE_SEL_CSI0_USE_C0 */ + sen_2_serial_pin_map = <0x00000000 0x00000001 0x00000002 0x00000003 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF>; + senout_pxlfmt = <0x410c0000>; /* HD_VIDEO_PXLFMT_RAW12 */ + capout_pxlfmt = <0x410c0000>; /* HD_VIDEO_PXLFMT_RAW12 */ + data_lane = <0x04>; + shdr_map = <0x00 0x00>; + }; + ssenif@1 { + if_type = <0x05>; /* HD_COMMON_VIDEO_IN_MIPI_CSI */ + sensor_pinmux = <0x20>; + serial_if_pinmux = <0xC02>; + cmd_if_pinmux = <0x01>; + clk_lane_sel = <0x14>; /* HD_VIDEOCAP_SEN_CLANE_SEL_CSI1_USE_C1 */ + sen_2_serial_pin_map = <0xFFFFFFFF 0xFFFFFFFF 0x00000000 0x00000001 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF>; + senout_pxlfmt = <0x410c0000>; /* HD_VIDEO_PXLFMT_RAW12 */ + capout_pxlfmt = <0x410c0000>; /* HD_VIDEO_PXLFMT_RAW12 */ + data_lane = <0x02>; + shdr_map = <0x00 0x00>; + }; + }; + sensor { + /* label for sensor_cfg */ + sen_cfg: sen_cfg { + }; + }; +}; + +#define STRINGIFY2(X) #X +#define STRINGIFY(X) STRINGIFY2(X) +// Macros for concatenating tokens +#define CAT(X,Y) CAT2(X,Y) +#define CAT2(X,Y) X##Y +#define CAT_2 CAT +#define CAT_3(X,Y,Z) CAT(X,CAT(Y,Z)) +#define INCLUDE_FILE(HEAD,TAIL) STRINGIFY( CAT_3(HEAD,TAIL,.dtsi) ) + +#if defined(__FREERTOS) +/* Note: put include files in the tail since label should be declared first. */ +#include +/** +#if defined(_sen_imx290_) +#include INCLUDE_FILE(imx290_cfg,_SEN_SUFFIX_) +#endif +#if defined(_sen_os02k10_) +#include INCLUDE_FILE(os02k10_cfg,_SEN_SUFFIX_) +#endif +#if defined(_sen_os05a10_) +#include INCLUDE_FILE(os05a10_cfg,_SEN_SUFFIX_) +#endif +#if defined(_sen_os05b10_) +#include INCLUDE_FILE(os05b10_cfg,_SEN_SUFFIX_) +#endif +#if defined(_sen_imx335_) +#include INCLUDE_FILE(imx335_cfg,_SEN_SUFFIX_) +#endif +#if defined(_sen_gc5603_) +#include INCLUDE_FILE(gc5603_cfg,_SEN_SUFFIX_) +#endif +*/ +#include "os05b10_cfg_565.dtsi" +#endif + diff --git a/rtos/code/application/source/cardv/SrcCode/PrjCfg.h b/rtos/code/application/source/cardv/SrcCode/PrjCfg.h index 49fc6891e..912dd85c8 100755 --- a/rtos/code/application/source/cardv/SrcCode/PrjCfg.h +++ b/rtos/code/application/source/cardv/SrcCode/PrjCfg.h @@ -70,6 +70,8 @@ #include "PrjCfg_HUNTING_68CS.h" #elif defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) #include "PrjCfg_HUNTING_S530.h" +#elif defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S550_) +#include "PrjCfg_HUNTING_S550.h" #else #include "PrjCfg_DVCam.h" #endif diff --git a/rtos/code/application/source/cardv/SrcCode/PrjCfg_Default.h b/rtos/code/application/source/cardv/SrcCode/PrjCfg_Default.h index e7b091356..473647725 100755 --- a/rtos/code/application/source/cardv/SrcCode/PrjCfg_Default.h +++ b/rtos/code/application/source/cardv/SrcCode/PrjCfg_Default.h @@ -150,7 +150,7 @@ #endif #ifndef ANR_FUNC -#define ANR_FUNC DISABLE +#define ANR_FUNC ENABLE #endif #ifndef USER_SPI_NOR_TABLE diff --git a/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S530.h b/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S530.h index c22b2b314..8b93bc82c 100755 --- a/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S530.h +++ b/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S530.h @@ -948,7 +948,6 @@ #define HUNTING_IR_LED_940 ENABLE #define SF_EXIF_MN_BUF_SIZE 256 #define SF_BASE_VERSION "7MD4RCwD901" -#define HW_S530 1 #define DCF_DIR_NAME "MEDIA" /* 100MEDIA */ #define DCF_FILE_NAME "SYFW" /* SYFW0001.JPG */ #define PHOTO_THUMB_PATH "A:\\THUMB\\" @@ -984,6 +983,10 @@ #define SF_BATTERY_TEST_FILE "A:\\BATTERY.TXT" #define SF_HW_TEST_FILE "A:\\HW.TXT" #define SF_HW_TEST DISABLE + +#ifndef ANR_FUNC +#define ANR_FUNC ENABLE +#endif ////////////////////sf end//////////////////////////////// diff --git a/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h b/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h new file mode 100755 index 000000000..98627ad56 --- /dev/null +++ b/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h @@ -0,0 +1,1076 @@ +#ifndef _PRJCFG_DVCAM_H_ +#define _PRJCFG_DVCAM_H_ +#include "kwrap/type.h" + +//============================================================================== +// MODE and Major Feature (Maintain these in \Kernel, \System, \Mode folder) +//============================================================================== +#define PLAY_MODE ENABLE +#define PHOTO_MODE ENABLE +#define MOVIE_MODE ENABLE +#define USB_MODE ENABLE +#define SLEEP_MODE DISABLE +#define ENG_MODE DISABLE +#define MAIN_MODE ENABLE +#define IPCAM_MODE DISABLE +#define UPDFW_MODE ENABLE +#define VOICE_MODE DISABLE + +#define IPCAM_FUNC DISABLE +#define STAMP_FUNC DISABLE +#define UI_FUNC ENABLE +#if (!defined(_NVT_SDIO_WIFI_NONE_)|| !defined(_NVT_USB_WIFI_NONE_)) +#define WIFI_FUNC ENABLE +#else +#define WIFI_FUNC ENABLE +#endif +//============================================================================== +// Ethcam related setting +//============================================================================== +#if (defined(_NVT_ETHREARCAM_TX_) || defined(_NVT_ETHREARCAM_RX_)) +#if defined(_NVT_ETHREARCAM_CAPS_COUNT_2_) +#define ETH_REARCAM_CAPS_COUNT 2 +#define ETH_REARCAM_CLONE_FOR_DISPLAY DISABLE +#else +#define ETH_REARCAM_CAPS_COUNT 1 +#define ETH_REARCAM_CLONE_FOR_DISPLAY ENABLE +#endif +#endif + +//============================================================================== +// GENERAL CONFIG +//============================================================================== +//.............................................................................. +#if defined(_FW_PARTIAL_LOAD_ON_) +#else +#endif + +//.............................................................................. +// FW version and name +#define FW_UPDATE_NAME "A:\\FW98565Z.bin" +#define FW_VERSION_RELEASE DISABLE //DISABLE +#define FW_VERSION_NUM "REGULAR_0402_001" + +//.............................................................................. +/** + The definition of EmbMem is the storage without any card detection, + which means the end-user cannot take that storage out. The EmbMem can also + be a combination of partition such as partition 0 is spi-uITRON, + partition 1 is ram-FAT these depend on what you designed on DxStorage_Mem.c + Normally, in SPI case, we design the ram-disk as internal FAT + +*/ +// share info memory on fdt +#define SHMEM_PATH "/nvt_memory_cfg/shmem" + +// Internal Storage Mapping to Storage Object +#define STRG_OBJ_FW_FDT STRG_OBJ_FW_RSV1 +#define STRG_OBJ_FW_APP STRG_OBJ_FW_RSV2 +#define STRG_OBJ_FW_UBOOT STRG_OBJ_FW_RSV3 +#define STRG_OBJ_FW_RTOS STRG_OBJ_FW_RSV4 +#define STRG_OBJ_FW_LINUX STRG_OBJ_FW_RSV5 +#define STRG_OBJ_FW_ROOTFS STRG_OBJ_FW_RSV6 +#define STRG_OBJ_FW_ALL STRG_OBJ_FW_RSV7 +#define STRG_OBJ_FW_SYS STRG_OBJ_FW_RSV7 +#define STRG_OBJ_FW_FAT STRG_OBJ_FAT1 +#define STRG_OBJ_FW_PST STRG_OBJ_PSTORE1 +// Internal Storage Mapping to DxStorage +#define USER_DX_TYPE_EMBMEM_LOADER DX_TYPE_EMBMEM0 //STRG_OBJ_FW_RSV1 +#define USER_DX_TYPE_EMBMEM_MODELEXT DX_TYPE_EMBMEM1 //STRG_OBJ_FW_RSV2 +#define USER_DX_TYPE_EMBMEM_UITRON DX_TYPE_EMBMEM2 //STRG_OBJ_FW_RSV3 +#define USER_DX_TYPE_EMBMEM_UBOOT DX_TYPE_EMBMEM3 //STRG_OBJ_FW_RSV4 +#define USER_DX_TYPE_EMBMEM_LINUX DX_TYPE_EMBMEM4 //STRG_OBJ_FW_RSV5 +#define USER_DX_TYPE_EMBMEM_ECOS DX_TYPE_EMBMEM4 //STRG_OBJ_FW_RSV5 +#define USER_DX_TYPE_EMBMEM_DSP DX_TYPE_EMBMEM5 //STRG_OBJ_FW_RSV6 +#define USER_DX_TYPE_EMBMEM_DSP2 DX_TYPE_EMBMEM6 //STRG_OBJ_FW_RSV7 +#define USER_DX_TYPE_EMBMEM_PSTORE DX_TYPE_EMBMEM7 //STRG_OBJ_PSTORE +#define USER_DX_TYPE_EMBMEM_FAT DX_TYPE_EMBMEM8 //STRG_OBJ_FAT1 + +//============================================================================== +// SYSTEM FUNCTIONS +//============================================================================== +//.............................................................................. +// Boot +#define POWERON_PERF ENABLE //enable performance benchmark +#define POWERON_TRACE DISABLE //stop and wait for user enter cmd: "dsc boot" +#define POWERON_BOOT_REPORT ENABLE +#define POWERON_FAST_BOOT DISABLE +#define POWERON_FAST_BOOT_MSG ENABLE//DISABLE // disable boot msg for fast boot, but hard to debug +#define POWERON_FAST_CPU2_BOOT DISABLE +#define POWERON_FAST_RECORD DISABLE +#define POWERON_FAST_WIFI DISABLE //NOTE: need to enable POWERON_FAST_CPU2_BOOT too +#define POWERON_WAIT_FS_READY DISABLE +#define WAITPHOTO_FUNCTION DISABLE +#define POWERONLOGO_FUNCTION ENABLE +#define POWEROFFLOGO_FUNCTION ENABLE +#if ((POWERON_FAST_BOOT == DISABLE) || (POWERON_FAST_RECORD == DISABLE)) +#define POWERONSOUND_FUNCTION ENABLE +#else +#define POWERONSOUND_FUNCTION DISABLE +#endif +#define POWEROFFSOUND_FUNCTION DISABLE +#define _LOGO_ _LOGO_NOVATEK_ +#if (defined(_LCDTYPE_ILI9341_IF8B_) || \ + defined(_LCDTYPE_TG078UW006A0_DSI_)|| \ + defined(_LCDTYPE_UT35067A0_ILI9488_DSI_)) +#define LOGO_DISP_LAYER LAYER_VDO1 // VDO2 logo has no rotation +#else +#define LOGO_DISP_LAYER LAYER_VDO2 +#endif +#define LENSERROFF_FUNCTION DISABLE + +//#if (POWERON_PERF == ENABLE) +//#define TM_BOOT_ARRAY(n) static TIMEMARK tmbuf[(n)] = {0} +//#define TM_BOOT_INIT(n) TM_Init(tmbuf, n) +//#define TM_BOOT_BEGIN(a,b) TM_Begin(a,b) +//#define TM_BOOT_END(a,b) TM_End(a,b) +//#else +#define TM_BOOT_ARRAY(n) +#define TM_BOOT_INIT(n) +#define TM_BOOT_BEGIN(a,b) +#define TM_BOOT_END(a,b) +//#endif + +//#NT#2016/07/12#Niven Cho -begin +//#NT#LINUX_LOAD_BY_UBOOT +//#NT#2016/07/12#Niven Cho -end + +//.............................................................................. +// External Card Config (for SDIO device) +#if !defined(_CARD1_NONE_) +#define CARD1_FUNC DISABLE +#else +#define CARD1_FUNC DISABLE +#endif + +#if !defined(_CARD3_NONE_) +#define CARD3_FUNC DISABLE +#else +#define CARD3_FUNC DISABLE +#endif + +//.............................................................................. +// Storage Config +#define FWS_FUNC DISABLE //enable it, if require load fw for start DSP or update fw for eCos + +#define PST_FUNC DISABLE //enable it, if require write pstore + +#define FS_FUNC ENABLE //enable it, if require write file + +//#NT#2016/12/14#Niven Cho -begin +//#NT#EMMC_AS_PSTORE +// only for (_CPU2_TYPE_==_CPU2_LINUX_ && _INTERSTORAGE_ == _INTERSTORAGE_EMMC_) +#define PST_DEV_ID 4 //used for gxstrg to mount linux emmc-pstore partition +#define PST_FS_DRIVE "E:\\" +//#NT#2016/12/14#Niven Cho -end + + +#if defined(_DSP1_FREERTOS_) +#if (FWS_FUNC != DISABLE) + #warning Not enable FWS_FUNC for DSP? + #warning Please enable your "FWS_FUNC" config in header "PrjCfg_XXXX.h" + #error (see above) +#endif +#endif + +//.............................................................................. +// Input Config +#define INPUT_FUNC ENABLE +//key +#define POWERKEY_FUNCTION ENABLE //Auto Detect +#define NORMALKEY_FUNCTION ENABLE //Auto Detect +#define STATUSKEY_FUNCTION DISABLE //Auto Detect +#define MODEKEY_FUNCTION DISABLE //Auto Detect + +//.............................................................................. +// Output Config +#define OUTPUT_FUNC DISABLE +//LED +#define LED_FUNCTION DISABLE //Auto Detect + +//.............................................................................. +// Power-Saving Config +#define PWR_FUNC ENABLE +//battery level +#define PWRLEVEL_FUNCTION DISABLE //Auto Detect +//auto power-off when battery level = empty +#define EMPTYPWROFF_FUNCTION DISABLE +//auto sleep +#define AUTOSLEEP_FUNCTION ENABLE //Auto Detect +//auto power-off +#define AUTOPWROFF_FUNCTION ENABLE //Auto Detect + +//.............................................................................. +// Date-Time Config +#define DEF_YEAR 2021 +#define DEF_MONTH 1 +#define DEF_DAY 1 +#define MIN_YEAR 2000 +#define MAX_YEAR 2050 + + +//.............................................................................. +// Sensor Config (for 1,2,4 devices) + + +//#define SENSOR_CAPS_COUNT 2 +//#define SENSOR_CAPS_MASK (SENSOR_1 | SENSOR_2) +#define SENSOR_CAPS_COUNT 1 +#define SENSOR_CAPS_MASK (SENSOR_1) + + +#define SENSOR_MAP_1 SENSOR_ID_1 +#define SENSOR_MAP_2 SENSOR_ID_2 + + +#define SENSOR_GP_FUNC DISABLE + +// Sensor group +#define SENSOR_GP_1 SENSOR_MULTI_ID_NONE /*ex: SENSOR_MULTI_ID_1|SENSOR_MULTI_ID_2*/ +#define SENSOR_GP_2 SENSOR_MULTI_ID_NONE /*ex: SENSOR_MULTI_ID_3|SENSOR_MULTI_ID_4*/ +// Sensor sub group + +#define SENSOR_SUBGP_1 SENSOR_MULTI_ID_NONE +#define SENSOR_SUBGP_2 SENSOR_MULTI_ID_NONE + + + +// Sensor Insert Mask +//#define SENSOR_INSERT_MASK (SENSOR_1) // support insert sensor +//#define SENSOR_INSERT_MASK (SENSOR_2) // support insert sensor +#define SENSOR_INSERT_MASK (0) // if NOT support insert sensor, please choose this + +#define SENSOR_DEFAULT_ATTACH_MASK (SENSOR_CAPS_MASK & ~(SENSOR_INSERT_MASK)) // hw default attach sensors + +#define SENSOR_INSERT_FUNCTION ((SENSOR_CAPS_MASK == SENSOR_DEFAULT_ATTACH_MASK)?(DISABLE):(DISABLE)) //Auto Detect (Dynamic attach) + +#define SENSOR_DEFAULT_DISPLAY_MASK (SENSOR_1) + +#define SENSOR_SIEPATGEN DISABLE + +//.............................................................................. +// Flashlight Config + +#define FLASHLIGHT_FUNCTION DISABLE //DISABLE + + +//.............................................................................. +// Lens Config +#define LENS_FUNCTION DISABLE +#define LENS_FOCAL_LENGTH 2880 // unit:um + + +//.............................................................................. +// Display Config (for LCD, LCD2, TV and HDMI device) + +#define LCD2_FUNC_USERSTATUS DISABLE //use LCD2 as status display. (not for video display) + +//NOTE: LCD1 output from DOUT1 only +#if defined(_Disp_VIRTUAL_LCD1_OFF_) +#define LCD1_FUNC DISABLE +#define LCD1_MASK 0x00 +#else +#define LCD1_FUNC ENABLE +#define LCD1_MASK 0x01 +#endif +//NOTE: TV output from DOUT1 or DOUT2 +#if defined(_TV_OFF_) +#define TV_FUNC DISABLE +#define TV_MASK 0x00 +#else +#define TV_FUNC DISABLE +#define TV_MASK 0x02 +#endif +//NOTE: HDMI output from DOUT1 or DOUT2 +#if defined(_HDMI_OFF_) +#define HDMI_FUNC DISABLE +#define HDMI_MASK 0x00 +#else +#define HDMI_FUNC DISABLE +#define HDMI_MASK 0x04 +#endif + +#if((LCD1_FUNC == DISABLE) || (TV_FUNC == DISABLE) || (HDMI_FUNC == DISABLE)) +#define DISPLAY_FUNC ENABLE +#define DISPLAY2_FUNC DISABLE +#define DISPLAY_CAPS_COUNT 1 //1: only single display, 2: allow single display or dual display +#define DISPLAY_CAPS_MASK (LCD1_MASK|TV_MASK)//|HDMI_MASK|LCD2_MASK +#define DUALDISP_FUNC ((DISPLAY_CAPS_COUNT == 2)?DISABLE:DISABLE) + +#define DISPLAY_DEFAULT_ATTACH_MASK DISPLAY_1 // hw default attach display + +#if defined(_Disp_VIRTUAL_LCD1_OFF_) +#define DISPLAY_DEFAULT_ATTACH_DEVICE TV_MASK //LCD1_MASK or HDMI_MASK or TV_MASK +#else +#define DISPLAY_DEFAULT_ATTACH_DEVICE LCD1_MASK //LCD1_MASK or HDMI_MASK or TV_MASK +#endif +#define DISPLAY2_DEFAULT_ATTACH_DEVICE 0 //LCD2_MASK or TV_MASK or HDMI_MASK + +//LCD related +#define LCD_AUTORESET_FUNCTION DISABLE //Auto Reset - LCD register +#define LCD_AUTOBACKLIGHT_FUNCTION DISABLE //Auto Adjust Backlight - with AE LV +#define LCD_ROTATE_FUNCTION DISABLE //Auto Detect - LCD rotate (enable to support LCD body mirror or flip) +//TV related +#define TV_INSERT_FUNCTION TV_FUNC //Auto Detect - TV cable insert +//HDMI related +#define HDMI_INSERT_FUNCTION HDMI_FUNC //Auto Detect - HDMI cable insert +//LCD2 related +#define LCD2_INSERT_FUNCTION LCD2_FUNC //Auto Detect - LCD2 cable insert +#else +#define DISPLAY_FUNC DISABLE +#define DISPLAY2_FUNC DISABLE +#define DISPLAY_CAPS_COUNT 0 +#define DISPLAY_CAPS_MASK 0 +#define DUALDISP_FUNC 0 + +#define DISPLAY_DEFAULT_ATTACH_MASK 0 // hw default attach display + +#define DISPLAY2_DEFAULT_ATTACH_DEVICE 0 //LCD2_MASK or TV_MASK or HDMI_MASK + +//LCD related +#define LCD_AUTORESET_FUNCTION DISABLE //Auto Reset - LCD register +#define LCD_AUTOBACKLIGHT_FUNCTION DISABLE //Auto Adjust Backlight - with AE LV +#define LCD_ROTATE_FUNCTION DISABLE //Auto Detect - LCD rotate (enable to support LCD body mirror or flip) +//TV related +#define TV_INSERT_FUNCTION TV_FUNC //Auto Detect - TV cable insert +//HDMI related +#define HDMI_INSERT_FUNCTION HDMI_FUNC //Auto Detect - HDMI cable insert +//LCD2 related +#define LCD2_INSERT_FUNCTION LCD2_FUNC //Auto Detect - LCD2 cable insert +#endif + +#define DRAM_SIZE_64MB_DISP_OFF DISABLE + +#if (DRAM_SIZE_64MB_DISP_OFF==ENABLE) +#undef POWERONLOGO_FUNCTION +#define POWERONLOGO_FUNCTION DISABLE +#undef POWEROFFLOGO_FUNCTION +#define POWEROFFLOGO_FUNCTION DISABLE +#endif +// Display Config (for UI window, FD window) + +// OSD size and format +#if (DRAM_SIZE_64MB_DISP_OFF==ENABLE) +#define DISPLAY_OSD_W 80//320//640 +#define DISPLAY_OSD_H 60//240 +#else +#define DISPLAY_OSD_W 320//640 +#define DISPLAY_OSD_H 240 +#endif +#define DISPLAY_OSD_FMT PXLFMT_INDEX8 // 256 colors +//#define DISPLAY_OSD_FMT PXLFMT_RGBA5658_PK // 16bpp-colors + +//UI tool layout size setting +#if (DRAM_SIZE_64MB_DISP_OFF==ENABLE) +#define TOOL_LAYOUT_W 80//320//640 +#define TOOL_LAYOUT_H 60//240//480 +#else +#define TOOL_LAYOUT_W 320//640 +#define TOOL_LAYOUT_H 240//480 +#endif +#define OSD_USE_DOUBLE_BUFFER DISABLE //use double buffer +#if (defined(_Disp_IF8B_LCD1_ILI9341_)) +#define OSD_USE_ROTATE_BUFFER ENABLE //use rotate buffer (enable to support LCD with stripe-type subpixel) +#elif defined(_disp_ifdsi_lcd1_ut35067a0_ili9488_) +#define OSD_USE_ROTATE_BUFFER ENABLE //use rotate buffer (enable to support LCD with stripe-type subpixel) +#else +#define OSD_USE_ROTATE_BUFFER ENABLE //use rotate buffer (enable to support LCD with stripe-type subpixel) +#endif + +#define OSD2_FUNC DISABLE +#define OSD2_USE_DOUBLE_BUFFER DISABLE //use double buffer +#define VDO_BM_FUNC DISABLE + + +// Display Config (for UI background, App quickview, photo frame, ...) + +// VDO size and format +#if (DRAM_SIZE_64MB_DISP_OFF==ENABLE) +#define DISPLAY_VDO_W 80//640 +#define DISPLAY_VDO_H 60//480 +#else +#define DISPLAY_VDO_W 640 +#define DISPLAY_VDO_H 480 +#endif +#define DISPLAY_VDO_FMT DISP_PXLFMT_YUV422_PK + +#define VDO_USE_DOUBLE_BUFFER DISABLE //use double buffer +#define VDO2_USE_DOUBLE_BUFFER DISABLE +#define VDO_USE_PHOTO_SOURCE DISABLE //display photo video streaming +#if (defined(_Disp_IF8B_LCD1_ILI9341_)) +#define VDO_ROTATE_DIR HD_VIDEO_DIR_ROTATE_90 +#define VDO_USE_ROTATE_BUFFER ENABLE //use rotate buffer (enable to support LCD with stripe-type subpixel) +#elif defined(_disp_ifdsi_lcd1_ut35067a0_ili9488_) +#define VDO_ROTATE_DIR HD_VIDEO_DIR_ROTATE_270 +#define VDO_USE_ROTATE_BUFFER ENABLE //use rotate buffer (enable to support LCD with stripe-type subpixel) +#else +#define VDO_ROTATE_DIR HD_VIDEO_DIR_ROTATE_90 +#define VDO_USE_ROTATE_BUFFER ENABLE //use rotate buffer (enable to support LCD with stripe-type subpixel) +#endif + +#define VDO_USE_COPY_BUFFER DISABLE //use copy buffer to avoid black between UI mode + +#define VDO2_USE_ROTATE_BUFFER DISABLE //use rotate buffer (enable to support LCD with stripe-type subpixel) + +#if (DISPLAY2_FUNC == DISABLE) +//#define VDOOUT_MASK (DISPLAY_1) // app's video will output to which display +//#define VDOOUT_MASK (DISPLAY_2) // app's video will output to which display +#define VDOOUT_MASK (DISPLAY_1|DISPLAY_2) // app's video will output to which display +#else +#define VDOOUT_MASK (DISPLAY_1) // app's video will output to which display +#endif + +#define LCD_PREVIEW_VDO_FMT GX_IMAGE_PIXEL_FMT_YUV420_PACKED +#define LCD2_PREVIEW_VDO_FMT GX_IMAGE_PIXEL_FMT_YUV420_PACKED +#define TV_PREVIEW_VDO_FMT GX_IMAGE_PIXEL_FMT_YUV420_PACKED +#define HDMI_PREVIEW_VDO_FMT GX_IMAGE_PIXEL_FMT_YUV420_PACKED + +// Display Config (for DispSrv; Photo App, Movie App and Play App) +// VDO1 size and format (for LCD device) +//LCD1: +#if defined(_Disp_VIRTUAL_LCD1_OFF_) +#define LCDMODE DISABLE +#elif defined(_Disp_IF8B_LCD1_AUCN01_) +#define LCDMODE DISP_LCDMODE_RGBD320 //DISP_LCDMODE_YUV640 +#elif defined(_Disp_IF8B_LCD1_PW35P00_HX8238D_) || \ + defined(_Disp_IF8B_LCD1_ILI9341_) +#define LCDMODE 0//DISP_LCDMODE_RGB_SERIAL +#else +#error "Unknown _LCD_" +#endif + +#define LCD2MODE DISABLE + +// VDO1 size and format (for TV device) +//TV: DISP_TVMODE_PAL mode +#define TVMODE DISP_TVMODE_NTSC + +// VDO1 size and format (for HDMI device) +//HDMI: DISP_HDMIMODE_1920X1080I60 mode +//#define HDMIMODE DISP_HDMIMODE_1920X1080I60 +#define HDMIMODE DISP_HDMIMODE_MAX + + +#define DUALCAM_PIP_BEHIND_FLIP DISABLE //Flip 2nd cam image in PIP view. Need extra 1/2 VDO buffer + + + +//.............................................................................. +// Audio Config +#define AUDIO_FUNC ENABLE +//.............................................................................. +// External Audio Config (for LineOut device) + +//LINE related + +//.............................................................................. +// External Storage Config +#define SDINSERT_FUNCTION ENABLE //Auto Detect +#define SDHOTPLUG_FUNCTION ENABLE +//.............................................................................. +// FILEDB Config +#define USE_FILEDB DISABLE //DISABLE +#define FILEDB_CARDV_ROOT "Novatek" // the max length should not exceeds 16 +// DCF Config +#define USE_DCF ENABLE +#define DCF_SUPPORT_FORMAT (DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_AVI|DCF_FILE_TYPE_MOV|DCF_FILE_TYPE_MP4) +//.............................................................................. +// EXIF Config +#define USE_EXIF DISABLE +// End string must be '\0', total char must be 31 +#define EXIF_MAKER_NAME "SY" +// End string must be '\0', total char must be 31 +#define EXIF_MODEL_NAME "S550-R" +// End string must be '\0', total char must be 31 +#define EXIF_IMAGE_DESCROPTOIN "S550 CAMERA" + +#define EXIF_SOFTWARE_VERSION FW_VERSION_NUM // <= 20 char (TagSoftVerLen) + +//.............................................................................. +// Movie Maker/Model name Config +// End string must be '\0', total char must plus 1 +#define MOVAPP_COMP_MANU_STRING "NOVATEK" +// End string must be '\0', total char must plus 1 +#define MOVAPP_COMP_NAME_STRING "DEMO1" +//.............................................................................. +// Usb Config + +#define USBINSERT_FUNCTION ENABLE //Auto Detect + +#define USB_VID 0x0603 +#define USB_PID_PCCAM 0x8612 // not support pc cam +#define USB_PID_WRITE 0x8614 +#define USB_PID_PRINT 0x8613 +#define USB_PID_MSDC 0x8611 + +#define USB_PRODUCT_REVISION '1', '.', '0', '0' +#define USB_VENDER_DESC_STRING 'N', 0x00,'O', 0x00,'V', 0x00,'A', 0x00,'T', 0x00,'E', 0x00,'K', 0x00, 0x20, 0x00,0x00, 0x00 // NULL +#define USB_VENDER_DESC_STRING_LEN 0x09 +#define USB_PRODUCT_DESC_STRING 'D', 0x00,'E', 0x00,'M', 0x00,'O', 0x00,'1', 0x00, 0x20, 0x00, 0x00, 0x00 // NULL +#define USB_PRODUCT_DESC_STRING_LEN 0x07 +#define USB_PRODUCT_STRING 'N','v','t','-','D','S','C' +#define USB_SIDC_DESC_STRING 'D', 0x00,'E', 0x00,'M', 0x00,'O', 0x00,'1', 0x00, 0x20, 0x00, 0x00, 0x00 // NULL +#define USB_SIDC_DESC_STRING_LEN 0x07 +#define USB_MTP_FRIENDNAME_STRING 'D','E','M','O','1',0x00 //maximum length is 253 bytes +#define USB_MTP_FRIENDNAME_STRING_LEN 0x06 //maximum length is 253 bytes +#define USB_VENDER_STRING 'N','O','V','A','T','E','K' +#define USB_VENDER_SIDC_DESC_STRING 'N', 0x00,'O', 0x00,'V', 0x00,'A', 0x00,'T', 0x00,'E', 0x00,'K', 0x00, 0x20, 0x00,0x00, 0x00 // NULL +#define USB_VENDER_SIDC_DESC_STRING_LEN 0x09 +#define USB_SERIAL_NUM_STRING '5', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0' + +//.............................................................................. +// Other Config + +#define GSENSOR_FUNCTION DISABLE //G-sensor +#define GPS_FUNCTION DISABLE + +#define SHOW_ADC_ON_SCREEN DISABLE +#define CALIBRATION_FUNC DISABLE // Enable/Disable Calibration +#define WATERLOGO_FUNCTION ENABLE // Enable/Disable waterlogo function +#define MOVIE_MULTISTAMP_FUNC DISABLE +#define MOVIE_MULTIWATERLOGO_FUNC DISABLE + +// Important Notice: +// If enable MULTILINGUAL_FUNCTION, remember to update font table and make sure the font height is not exceed the buffer size!! +#define MULTILINGUAL_FUNCTION DISABLE // Enable/Disable Multi-Lingual movie stamp function + +#define TIMELAPSE_LPR_FUNCTION DISABLE // Enable/Disable Timelapse Low Power Record function + +//--------------------------------------------------------------------------- +// For Video Debug Info +//--------------------------------------------------------------------------- +#define _MOVIE_IQLOG_ DISABLE // Enable/Disable Video IQLOG, Spark Chou + +//============================================================================== +// PLAYBACK FUNCTIONS +//============================================================================== +#define SLIDESHOW_MUSIC_OPTION DISABLE //longer no maintain +// copy card to card function +#define COPYCARD2CARD_FUNCTION DISABLE + +//============================================================================== +// PHOTO FUNCTIONS +//============================================================================== + +#define ASSIST_BEAM_FUNC DISABLE +#define GDC_FUNC DISABLE +#define AF_BEAM_EV_THRESHOLD 540 +#define _FD_FUNC_ DISABLE +#define _TSR_FUNC_ DISABLE +#define MAX_FDNUM 10 +#define PIP_VIEW_FUNC DISABLE // PipView (DISABLE: display 2 sensor by PipView, DISABLE: display user selected sensor) +#define PIP_VIEW_FASTSWITCH DISABLE // display single sensor method (DISABLE: always display by Pipview, DISABLE: display by direct path) +#define PIP_VIEW_LR DISABLE //(DISABLE: display 2 sensor by PipView in left, right view, side by side, DISABLE: normal pipview) + +#define SBS_VIEW_FUNC DISABLE // SbsView (DISABLE: display 2 sensor by SbsView, DISABLE: display user selected sensor) +#define SHDR_FUNC DISABLE // DISABLE +#define WDR_FUNC ENABLE +#define DEFOG_FUNC DISABLE // DISABLE + +#if !defined(_Gyro_None_) +#define RSC_FUNC DISABLE +#else +#define RSC_FUNC DISABLE +#endif +//.............................................................................. +#define _SCREENNAIL_SIZE_ _SCREENNAIL_SIZE_VGA_ +#define _QUICKVIEW_SIZE_ _QUICKVIEW_SIZE_SUIT_FOR_DISP + +//.............................................................................. +// Photo Frame Pstore Version Config +#define PF_PSTORE_VER 0x00000105 + +//============================================================================== +// MOVIE FUNCTIONS +//============================================================================== +#if !defined(_Gyro_None_) +#define MOVIE_RSC DISABLE +#else +#define MOVIE_RSC DISABLE +#endif +#define MOVIE_PIM_CAPTURE DISABLE // picture in movie method 1 (capture full resolution image) +#define MOVIE_GDC_FUNC DISABLE +#define MOVIE_SMEAR_R_FUNC DISABLE +#define MOVIE_ENSURE_SD_CLASS4 DISABLE +#define MOVIE_ENSURE_SD_32KCLUSTER DISABLE +#define MOVIE_MULTI_RECORD_FUNC DISABLE +#define MOVIE_REC_YUVMERGE DISABLE // slowly timelapse record mode, frame period >= 1S +#define MOVIE_AUTOREC_ACPLUG DISABLE +#define MOVIE_NET_USE_STREAM_1 DISABLE +#define MOVIE_UVAC_FUNC DISABLE +#define MOVIE_DSP_FUNC DISABLE + +#define MOVIE_MAPPING_MULTIREC DISABLE +#define MOVIE_DIRECT_FUNC DISABLE // direct mode function +#define MOVIE_YUV_COMPRESS DISABLE + +#define MOVIE_DIS DISABLE +#define MOVIE_FD_FUNC_ DISABLE +#define MOVIE_FD_DRAW_VIDEO DISABLE +#define MOVIE_BC_FUNC DISABLE +#define MOVIE_TD_FUNC DISABLE // Depend on MOVIE_BC_FUNC +#define MOVIE_TD_DRAW_VIDEO DISABLE +#define MOVIE_TWD_FUNC DISABLE // Depend on MOVIE_BC_FUNC +#define MOVIE_TWD_DRAW_VIDEO DISABLE +#define MOVIE_TZD_FUNC DISABLE // Depend on MOVIE_BC_FUNC +#define MOVIE_TZD_DRAW_VIDEO DISABLE +#define MOVIE_ODT_FUNC DISABLE +#define MOVIE_ODT_DRAW_VIDEO DISABLE + +#define UCTRL_APP_MOVIE_FEATURE_SETGET DISABLE +#define MEDIA_VASTREAM DISABLE +#define IR_CUT_FUNC DISABLE +#define LOGFILE_FUNC DISABLE +#define _ADAS_FUNC_ DISABLE +//.............................................................................. +// ADAS subsetting (The following sub-functions are available only if _ADAS_FUNC_ = DISABLE +#define _AUTOVP_FUNC_ DISABLE +#define _SNG_FUNC_ DISABLE +#define _DRAW_LDFCINFO_ON_OSD_ DISABLE +#define _DRAW_SNG_ROI_ DISABLE +#define _DRAW_LDWSINFO_ON_VIDEO_ DISABLE // This function is only valid if data path is D2D!! + +#define MOVIE_TSR_FUNC_ DISABLE +#define MOVIE_TSR_DRAW_VIDEO DISABLE +#define TSR_MODEL_IN_PSTORE DISABLE + +#define CROP_SOURCE_W 3840 +#define CROP_SOURCE_H 2160 + + +//============================================================================== +// MOVIE PLAY FUNCTIONS +//============================================================================== +#define MOVIE_PLAY_VIEW_FUNC DISABLE // MoviePlayView + + +//============================================================================== +// USBCAM FUNCTIONS +//============================================================================== +#define UVAC_MODE_2_PATH DISABLE +#if (UVAC_MODE_2_PATH==DISABLE) +#undef MOVIE_MULTI_RECORD_FUNC +#define MOVIE_MULTI_RECORD_FUNC DISABLE +#endif +//============================================================================== +// USBCHARGE FUNCTIONS +//============================================================================== +#define USB_CHARGE_FUNCTION DISABLE +#define USB_CHARGE_VERIFY DISABLE + +//============================================================================== +// USBDISK FUNCTIONS +//============================================================================== + +//============================================================================== +// MSDCVENDOR_NVT, is required for PC tools to transmit commands and data via USB / NET +//============================================================================== +#define MSDCVENDOR_NVT ENABLE //via USB, depend on USBINSERT_FUNCTION and _USB3_INT_CORE1_ +#define MSDCVENDOR_UPDFW DISABLE //enable it will cause disalbing MSDC and MTP/PTP/UAVC Mode, MSDCVENDOR_NVT must enable +#define MSDCVENDOR_IDENTITY_FILE "A:\\MSDCNVT" +#if (defined(_MODEL_DVCAM1_EVB_) || defined(_MODEL_DVCAM2_EVB_)) +#define MSDCVENDOR_NVT_EXAM DISABLE //only for novatek internal use +#else +#define MSDCVENDOR_NVT_EXAM DISABLE //for customer, disable it to reduce memory +#endif +//============================================================================== +// USBPRINT FUNCTIONS +//============================================================================== + +//============================================================================== +// USBPRINT FUNCTIONS +//============================================================================== + +//============================================================================== +// UI FUNCTIONS +//============================================================================== +//.............................................................................. +// UI Resource Storage Config +#define _LANG_STORE_ _INSIDECODE_ +#define _JPG_STORE_ _INSIDECODE_ +#define SPECIAL_KEY_RESET_FUNC DISABLE +#define EXTRA_MENU DISABLE + +//============================================================================== +// IPCam FUNCTION +//============================================================================== +//.............................................................................. + +///////FD param +#define IPCAM_FD_FUNC DISABLE +#define MAX_FDNUM 10 //set face detection max face number +//////MD param +#define IPCAM_MD_FUNC DISABLE +//////VQA param +#define IPCAM_VQA_FUNC DISABLE + +/////AUDIO param +#define IPCAM_AUDIO_IN_FUNC DISABLE +#define IPCAM_AUDIO_OUT_FUNC DISABLE +#define IPCAM_AEC_FUNC DISABLE +#define AUDIO_FUNC_AAC DISABLE + + +//============================================================================== +// NET FUNCTIONS +//============================================================================== +#if (!defined(_NVT_SDIO_WIFI_NONE_) || !defined(_NVT_USB_WIFI_NONE_)) +#define _NETWORK_DEVICE_ +#define _NETWORK_ON_WIFI_ +#endif +#if !defined(_NVT_USB_4G_NONE_) +#define _NETWORK_DEVICE_ +#define _NETWORK_ON_4G_ +#endif +#if !defined(_NVT_ETHERNET_NONE_) +#define _NETWORK_DEVICE_ +#define _NETWORK_ON_ETH_ +#endif + +#define MAC_APPEN_SSID DISABLE//ENABLE +#define ACL_TIME 15000 //minmum 15 sec +#define WIFI_APP_MANUFACTURER "NVT" +#define WIFI_APP_MODLE "CarDV_WiFi" +#define ONVIF_PROFILE_S DISABLE //Enable it to cause NO CARD DETECTED. +#define ECOS_POWER_OFF_FLOW DISABLE + +//#NT#2016/10/21#YongChang Qui -begin +//#NT#wifi modules on EVB can't be powered off by default +#define WIFI_POWER_OFF_FLOW DISABLE //Enabled only if ECOS_POWER_OFF_FLOW == DISABLE and DrvWiFi_PowerOff() actually powers off wifi module +//#NT#2016/10/21#YongChang Qui -end + +#define HFS_FUNC ENABLE + +#define HTTP_LIVEVIEW_FUNC DISABLE +#if (WIFI_FUNC==DISABLE) +#define WIFI_AP_FUNC DISABLE +#else +#define WIFI_AP_FUNC ENABLE +#endif +#define WIFI_FTP_FUNC DISABLE + +#define HTTP_MJPG_W_4 640 +#define HTTP_MJPG_H_3 480 + +#define HTTP_MJPG_W_16 640 +#define HTTP_MJPG_H_9 360 + +#define AUTO_WIFI DISABLE + +#define HTTP_LIVEVIEW 1 +#define RTSP_LIVEVIEW 2 +#define MOVIE_LIVEVIEW RTSP_LIVEVIEW + +#if(WIFI_AP_FUNC==DISABLE) +#undef HTTP_LIVEVIEW_FUNC +#define HTTP_LIVEVIEW_FUNC DISABLE +#define MOVIE_MULTI_RECORD_FUNC DISABLE + + +#undef HTTP_MJPG_W_4 +#undef HTTP_MJPG_H_3 +#undef HTTP_MJPG_W_16 +#undef HTTP_MJPG_H_9 +#define HTTP_MJPG_W_4 640 +#define HTTP_MJPG_H_3 480 +#define HTTP_MJPG_W_16 640 +#define HTTP_MJPG_H_9 360 + +#undef HFS_FUNC +#define HFS_FUNC DISABLE +#endif + +#define WIFI_APP_MANUFACTURER "NVT" +#define WIFI_APP_MODLE "CarDV_WiFi" +#define WIFI_APP_DOWNLOAD_URL "http://115.29.201.46:8020/download/filedesc.xml" + + +#if defined(_CPU2_LINUX_) +#define UCTRL_FUNC DISABLE +#else +#define UCTRL_FUNC DISABLE +#endif +#define ONVIF_FUNC DISABLE //CarDV-Linux is no using of ONVIF + + +#define WIFI_FINALCAM_APP_STYLE DISABLE +#define WIFI_BG_COLOR 14 + +#define WIFI_STA_RECONNECT_MAX_COUNT 5 +#define WIFI_STA_RECONNECT_INTERVAL 300 + +#define YOUKU_SDK DISABLE +#define IOT_P2P_FUNC DISABLE +#define NETWORK_4G_MODULE DISABLE + +#if (YOUKU_SDK == DISABLE) +#define WIFI_MOVIE_FOLDER "MOVIE_WIFI" +#define CUT_MOVIE_FOLDER "MOVIE_CUT" +//the following two functions should be exclusive +#define SAVE_DUAL_STREAM_FUNC DISABLE +#define CUT_MOVIE_FUNC DISABLE +#endif + +#define MOVIE_OT_FUNC DISABLE +#define MOVIE_OT_DRAW_VIDEO DISABLE + + + +#define CURL_FUNC DISABLE + +#define _DDD_FUNC_ DISABLE +#define MOVIE_DDD_FUNC DISABLE +#define MOVIE_DDD_FD_FUNC DISABLE +#define MOVIE_DDD_DRAW_VIDEO DISABLE +#define MOVIE_DDD_SAVE_LOG DISABLE +#define DDD_MODEL_IN_PSTORE DISABLE + +#define MOVIE_FTG_FUNC DISABLE +#define MOVIE_FTG_DRAW_VIDEO DISABLE + +//#NT#2017/04/28#KCHong -begin +//#NT# CNN Object detection +#define _OD_FUNC_ DISABLE +//#NT#2017/04/28#KCHong -end + +#define USERLOG_FUNC DISABLE + + +// fileSize align function +#define FILESIZE_ALIGN_FUNC DISABLE +#define PHOTO_FILESIZE_ALIGN_VALUE 2*1024*1024 // 2MB +#define FS_ALIGN_RESERVED_SIZE (2 * MOVIE_FILESIZE_ALIGN_VALUE) + +#define FS_SWITCH_STRG_FUNC DISABLE + +// mount sd-2 as "B:\\" +// To mount sd-2 as "B:\\" please do the following steps +// 1. set .int_id_dst[CC_CORE_MIPS1].Bit.bInt_ID_SDIO2 to TRUE +// 2. enable FS_DX_TYPE_DRIVE_B as DX_TYPE_CARD2 +// 3. enable FS_MULTI_STRG_FUNC +// 4. NETWORK = NETWORK_NONE (Both uITRON and eCos) +#define FS_MULTI_STRG_FUNC DISABLE +//MULTI_DRIVE +#if defined(_EMBMEM_EMMC_) && (FS_MULTI_STRG_FUNC==DISABLE) +#define FS_DX_TYPE_DRIVE_A USER_DX_TYPE_EMBMEM_FAT +#else +#define FS_DX_TYPE_DRIVE_A DX_TYPE_CARD1 +#endif +#define FS_DX_TYPE_DRIVE_B USER_DX_TYPE_EMBMEM_FAT //FS_MULTI_STRG_FUNC must enable for FS_DX_TYPE_DRIVE_B + +#define _3DNROUT_FUNC DISABLE + +#define RTC_FUNC DISABLE + +#define DISPLAY_FAST_SWITCH DISABLE //fast swicth display device +#define DISPLAY_OSD2_FMT DISP_PXLFMT_INDEX8 // 256 colors +#define SPK_MASK 0x01 +#define LOUT_MASK 0x02 +#define LINE_INSERT_FUNCTION DISABLE //Auto Detect - LINE cable insert (audio out) +#define USE_DPOF DISABLE +#define BT_FUNC DISABLE +#define ECOS_DBG_MSG_FORCE_UART1_DIRECT DISABLE +#define USOCKET_CLIENT DISABLE +#define MOVIE_DISDSP_FUNC DISABLE +#define WIFI_UI_VER_1_0 0 +#define WIFI_UI_VER_2_0 1 +#define WIFI_UI_FLOW_VER WIFI_UI_VER_1_0 +#define LOG_DBGINFO_IN_GPS_SECTION DISABLE +#define MOVIE_TD_SAVE_LOG DISABLE +#define MOVIE_SCD_FUNC DISABLE +#define UVC_MULTIMEDIA_FUNC DISABLE +#if (UVC_MULTIMEDIA_FUNC == ENABLE) +#undef MOVIE_UVAC_FUNC +#define MOVIE_UVAC_FUNC ENABLE // it needs to enable MOVIE_UVAC_FUNC if UVC_MULTIMEDIA_FUNC was enabled +#endif +#define FORCE_UNPLUG_RTSP DISABLE +#define IQTOOL_FUNC DISABLE +#define GXGFX_ADVANCED_STRING_FUNC DISABLE +#define SMALL_CLONE_MOVIE DISABLE +#define CUSTOM_NAMING_RULE DISABLE +#define LINUX_CVHOST_FUNC DISABLE +#define AUDIO_PLAY_TEST DISABLE +#define FTG_SNAPSHOT_FUN DISABLE +#define FTG_MAX_SNAPSHOT_NUM 5 +#define FTG_OVERRALL_MAX_BUF_SIZE 250*1024 +#define FTG_FACE_MAX_BUF_SIZE 100*1024 +#define FTG_MAX_SNAPSHOT_SIZE 1024*1024*25 +#define FTG_MAX_FACE_PIC_NUM 3 +#define RTSP_AUDIO_ENABLE DISABLE +#define AUDIO_CMD_UCTRL_ENABLE DISABLE +#define FACE_GRADE_TEST DISABLE +#define IPCAM_UVC_FUNC DISABLE +#define BOOT_RESET_MENU_INFO ENABLE +#define VIDEOSPRITEIPC DISABLE +#define IPCAM_FD_FUNC DISABLE +//#define IPCAM_DIS_FUNC DISABLE +#define IPCAM_DIS_MV_FUNC DISABLE //Digital Image Stabilzier: calculate motion vector +#define IPCAM_DIS_COMP_FUNC DISABLE //DIS compensation: if set IPCAM_DIS_COMP_FUNC = enable, it should set IPCAM_DIS_MV_FUNC = TRUE, too +#define HOT_PLUG_REMAIN_SIZE 0 +#define _CVHOST_EX_ DISABLE +#define _CVHOST_EX_ENDSP_ DISABLE +#define _NVTCV_EX_ DISABLE +#define _NVTCV_EX_ENDSP_ DISABLE +#define MOVIE_MAX_CHANNEL 16 +#define LINUX_MSDC DISABLE //DISABLE +#define STEREO_FUNC DISABLE +#define THUMB_STAMP_FUNC DISABLE +#define STAMP_PRIVATE_POOL ENABLE +#define VIDEOSPRITE_STAMP_FUNC ENABLE +#define VDOENC_MULTI_TEMPORARY_LAYER DISABLE //Multi Temporary Layer +#define YUV_TV_RANGE DISABLE //YUV color space in tv range +#define VIDEO_FUNC_MJPG DISABLE +#define VIDEO_FUNC_H264 DISABLE +#define VIDEO_FUNC_H265 DISABLE +#define STOP_REC_BK DISABLE +#define NMEDIAPLAY_FUNC DISABLE // switch SMediaPlay and NMediaPlay flow, use NMediaPlay when DISABLE to be set. +#define MOVIE_AI_DEMO DISABLE +#define HUNTING_CAMERA_MODEL ENABLE +#define HUNTING_CAMERA_BOOT_LINUX ENABLE +#define HUNTING_CAMERA_SYS_PARTITION_NAME sys +#define PHOTO_STAMP_ISP_STATUS DISABLE +#define PHOTO_DIRECT_FUNC DISABLE +#define POWERON_FAST_SLICE_ENC ENABLE +#define POWERON_FAST_SLICE_ENC_VER2 ENABLE +#define HUNTING_PHOTO_FAST_AE_60_FPS ENABLE + +#define HUNTING_CAMERA_MCU ENABLE +#define HUNTING_CAMERA_4G ENABLE//DISABLE +#define PHOTO_PREVIEW_SLICE_ENC_FUNC ENABLE +#define PHOTO_PREVIEW_SLICE_ENC_VER2_FUNC ENABLE +#define DZOOM_FUNC ENABLE + +////////////////////////sf st///////////////////////////////////// +#define HUNTING_MCU_I2C DISABLE +#define HUNTING_MCU_UART ENABLE +#define HUNTING_IR_LED_940 ENABLE +#define SF_EXIF_MN_BUF_SIZE 256 +#define SF_BASE_VERSION "7MD4RCwD901" +#define DCF_DIR_NAME "MEDIA" /* 100MEDIA */ +#define DCF_FILE_NAME "SYFW" /* SYFW0001.JPG */ +#define PHOTO_THUMB_PATH "A:\\THUMB\\" +#define MOVIE_THUMB_PATH "A:\\THUMB\\" +#define SF_SEND_LIST_DIR "/mnt/sd/THUMB" +#define SF_THUMB_SEND_LIST PHOTO_THUMB_PATH"send.list" +#define SF_THUMB_SEND_AUTO PHOTO_THUMB_PATH"auto.list" +#define SF_TRIGGER_TIME_TEST DISABLE +#define SF_IQ_TEST DISABLE +#define HW_S530 DISABLE +#define PHOTO_ISP_STAMP DISABLE +#define SF_BASE_VERSION_FEA "R2.3" +#define SF_GPS_SUPPORT 0 +#define SF_SEND_LIST_ITEM_LENGTH 15 +#define SF_4G_REGISTER_NETWORK_COUNT 230 +#define SUBSCRIBE_MAX_NUM 10 +#define SUBSCRIBE_SEND_MAX_NUM 50 +#define SUBSCRIBE_VIDEO_MAX_NUM 10 +#define SUBSCRIBE_VIDEO_SEND_MAX_NUM 50 + +#define SF_4G_USB_NET_DOWNLOAD 1 + +#define SF_TEST_GPRS 0 +#define CUSTOM_TEST_FTPS 0 + +#define SF_TEST_OTA_FTP 0 +#define CUSTOM_TEST_OTA_FTP 0 + +#define FASTBOOT_WAIT_FILESYS_TIMEOUT_MS 5000 +#define FASTBOOT_WAIT_FILENAMING_TIMEOUT_MS 5000 + +#define SF_BATTERY_TEST DISABLE +#define SF_BATTERY_TEST_FILE "A:\\BATTERY.TXT" +#define SF_HW_TEST_FILE "A:\\HW.TXT" +#define SF_HW_TEST DISABLE + +#ifndef ANR_FUNC +#define ANR_FUNC ENABLE +#endif +////////////////////sf end//////////////////////////////// + + +/******************************************************************************************* + * LVGL UI Style config + ******************************************************************************************/ +#if defined(_UI_STYLE_LVGL_) + +#ifdef DISPLAY_OSD_W +#undef DISPLAY_OSD_W +#endif + +#ifdef DISPLAY_OSD_H +#undef DISPLAY_OSD_H +#endif + +#ifdef DISPLAY_OSD_FMT +#undef DISPLAY_OSD_FMT +#endif + +#include "lv_conf.h" + +/******************************************************************************************* + * OSD res is determined by lvgl library (LV_HOR_RES_MAX / LV_VER_RES_MAX in the lv_conf.h) + ******************************************************************************************/ +#define DISPLAY_OSD_W LV_HOR_RES_MAX +#define DISPLAY_OSD_H LV_VER_RES_MAX + + +/******************************************************************************************* + * OSD format is determined by lvgl library (LV_COLOR_DEPTH in the lv_conf.h) + ******************************************************************************************/ +#if LV_COLOR_DEPTH == 8 + #define DISPLAY_OSD_FMT PXLFMT_INDEX8 + #define DISPLAY_HDAL_OSD_FMT HD_VIDEO_PXLFMT_I8 +#elif LV_COLOR_DEPTH == 24 + #define DISPLAY_OSD_FMT PXLFMT_RGBA5658_PK + #define DISPLAY_HDAL_OSD_FMT HD_VIDEO_PXLFMT_ARGB8565 +#elif LV_COLOR_DEPTH == 32 + #define DISPLAY_OSD_FMT PXLFMT_RGBA8888_PK + #define DISPLAY_HDAL_OSD_FMT HD_VIDEO_PXLFMT_ARGB8888 +#else + #error "LV_COLOR_DEPTH in the lv_conf.h is currently not supported" +#endif + +#define OSD_SCREEN_SIZE (DISPLAY_OSD_W*DISPLAY_OSD_H*HD_VIDEO_PXLFMT_BPP(DISPLAY_HDAL_OSD_FMT)/8) + +/******************************************************************************************* + * Movie stamp user config + ******************************************************************************************/ +#define LV_USER_CFG_STAMP_FONT_ID_XXL LV_PLUGIN_FONT_ID_NOTOSANS_BLACK_128_1BPP +#define LV_USER_CFG_STAMP_FONT_ID_XL LV_PLUGIN_FONT_ID_NOTOSANS_BLACK_64_1BPP +#define LV_USER_CFG_STAMP_FONT_ID_LARGE LV_PLUGIN_FONT_ID_ARIALUNI_48_1BPP +#define LV_USER_CFG_STAMP_FONT_ID_MEDIUM LV_PLUGIN_FONT_ID_ARIALUNI_32_1BPP +#define LV_USER_CFG_STAMP_FONT_ID_SMALL LV_PLUGIN_FONT_ID_ARIALUNI_16_1BPP +#define LV_USER_CFG_STAMP_FONT_ID_XS LV_PLUGIN_FONT_ID_NOTOSANS_BLACK_8_1BPP + +#define LV_USER_CFG_STAMP_LETTER_SPACE 0 +#define LV_USER_CFG_STAMP_TEXT_ALIGN LV_ALIGN_CENTER +#define LV_USER_CFG_STAMP_RADIUS 0 +#define LV_USER_CFG_STAMP_BORDER_WIDTH 10 +#define LV_USER_CFG_STAMP_EXT_WIDTH 0 +#define LV_USER_CFG_STAMP_EXT_HEIGHT 0 + +/* please always fill ARGB8888, alpha channel will be discarded if output format is yuv (Photo UIDateImprint) */ +#define LV_USER_CFG_STAMP_COLOR_TEXT 0xFFFFFFFF /* text color */ +#define LV_USER_CFG_STAMP_COLOR_BACKGROUND 0XFF000000 /* background color: black */ +#define LV_USER_CFG_MOVIE_DATESTAMP_COLOR_BACKGROUND 0X00000000 /* background color: none */ +#define LV_USER_CFG_STAMP_COLOR_FRAME 0x00000000 /* frame color */ + +/******************************************************************************************* + * Enable LVGL rotate depend on VDO_USE_ROTATE_BUFFER (LV_USE_GPU_NVT_DMA2D in the lv_conf.h should be enabled) + ******************************************************************************************/ +#if VDO_USE_ROTATE_BUFFER == ENABLE + #if LV_USE_GPU_NVT_DMA2D + #define LV_USER_CFG_USE_ROTATE_BUFFER 1 + #else + #error "LV_USE_GPU_NVT_DMA2D in the lv_conf.h must be enabled when VDO_USE_ROTATE_BUFFER = ENABLE" + #endif +#else + #define LV_USER_CFG_USE_ROTATE_BUFFER 0 +#endif + +#define LV_USER_CFG_USE_TWO_BUFFER 0 + +#endif + + +#endif //_PRJCFG_DVCAM_H_ diff --git a/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c b/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c index 47efe151b..13857e244 100755 --- a/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c +++ b/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c @@ -1246,7 +1246,7 @@ void SysResetFlag(void) sf_base64_decode(OTA_FTP_PASSWORD, (char *)tmpStr); snprintf((char *)puiPara->OtaFtpPassWord, sizeof(puiPara->OtaFtpPassWord), (char *)tmpStr); - #if defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) + #if defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) || defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S550_) puiPara->GpsNumber = DEFAULT_GPS_NUMBER; puiPara->TimeSend1Switch = DEFAULT_TIMESEND1_SWITCH; puiPara->TimeSend2Switch = DEFAULT_TIMESEND2_SWITCH; diff --git a/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.h b/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.h index d638f78b1..6fb5dc6cc 100755 --- a/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.h +++ b/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.h @@ -405,7 +405,7 @@ typedef struct _UIMenuUIMenuStoreInfo { SF_PARA_TIME_S PirDelayTime; SF_PARA_TIME_S DailyReportTime; SF_PARA_TIME_S DailyReportTime2; - #if defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) + #if (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) || defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S550_)) SF_PARA_TIME_S TimeSend1; SF_PARA_TIME_S TimeSend2; SF_PARA_TIME_S TimeSend3; @@ -475,7 +475,7 @@ typedef struct _UIMenuUIMenuStoreInfo { CHAR GpsAntiTheftSwitch; CHAR BatteryLogSwitch; - #if defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) + #if (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) || defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S550_)) ////////////S530//////// CHAR GpsNumber; CHAR TimeSend1Switch;/*OFF/ON*/ @@ -1892,7 +1892,7 @@ typedef enum SF_PIR_SENSITIVITY_LOW, SF_PIR_SENSITIVITY_MAX, } SF_PIR_SENSITIVITY; -#elif defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) +#elif (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) || defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S550_)) typedef enum { diff --git a/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIPhotoMapping.c b/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIPhotoMapping.c index e5388cbeb..9fd02c665 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIPhotoMapping.c +++ b/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIPhotoMapping.c @@ -41,7 +41,7 @@ static PHOTO_SIZE_PARAM g_PhotoCapSizeTable[PHOTO_SIZE_ID_MAX + 2] = { #if defined(_MODEL_565_HUNTING_EVB_LINUX_4G_68CS_) {2960, 1666, IMAGERATIO_16_9, "5M"}, // 5M - #elif defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) + #elif (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) || defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S550_)) {2592, 1944, IMAGERATIO_4_3, "5M"}, // 5M #endif {2048, 1536, IMAGERATIO_4_3, "3M"}, // 3M @@ -57,7 +57,7 @@ static PHOTO_SIZE_PARAM g_PhotoCapSizeTable[PHOTO_SIZE_ID_MAX + 2] = { static PHOTO_SIZE_PARAM g_ScreenNailSizeTable[SCREEN_PHOTO_SIZE_ID_MAX + 2] = { #if defined(_MODEL_565_HUNTING_EVB_LINUX_4G_68CS_) {1024, 768, IMAGERATIO_4_3, "0.78M"}, // 0.78M - #elif defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) + #elif (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) || defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S550_)) {640, 480, IMAGERATIO_4_3, "VGA"}, // VGA {1024, 768, IMAGERATIO_4_3, "XGA"}, // 0.78M {1920, 1440, IMAGERATIO_4_3, "2.76M"}, // 2.76M diff --git a/rtos/code/driver/na51089/include/sf_i2c_driver.h b/rtos/code/driver/na51089/include/sf_i2c_driver.h index 8d0bccd00..4b26a7246 100644 --- a/rtos/code/driver/na51089/include/sf_i2c_driver.h +++ b/rtos/code/driver/na51089/include/sf_i2c_driver.h @@ -18,7 +18,7 @@ //#endif //#ifndef SF_I2C_ADDR -#if defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) +#if (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) || defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S550_)) #define MCU_I2C_SLAVE_ADDR (0x20>>1) #elif defined(_MODEL_565_HUNTING_EVB_LINUX_4G_68CS_) #define MCU_I2C_SLAVE_ADDR (0xA0>>1) diff --git a/rtos/code/driver/na51089/source/mcu/sf_battery.c b/rtos/code/driver/na51089/source/mcu/sf_battery.c index 68c0861ba..32628d96a 100755 --- a/rtos/code/driver/na51089/source/mcu/sf_battery.c +++ b/rtos/code/driver/na51089/source/mcu/sf_battery.c @@ -436,7 +436,7 @@ UINT32 sf_battery_adc_value_get_once(void) } #endif -#if HW_S530 +#if (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) || defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S550_)) /************************************************* Function: sf_battery_level_update diff --git a/rtos/code/driver/na51089/source/mcu/sf_led.c b/rtos/code/driver/na51089/source/mcu/sf_led.c index 7024bba66..f6645341d 100755 --- a/rtos/code/driver/na51089/source/mcu/sf_led.c +++ b/rtos/code/driver/na51089/source/mcu/sf_led.c @@ -445,7 +445,7 @@ void sf_sys_status_led_set(LedSysState_t ledSysStateId) sf_led_set(SF_LED_BUSY, SF_LED_STATE_ON); //sf_set_runningLed(0); break; - +#if (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_)) case SF_LED_SYS_STATE_WIFI_DISCONNECT: sf_led_set(SF_LED_WIFI, SF_LED_STATE_SLOW_FLASHING); break; @@ -575,6 +575,7 @@ void sf_sys_status_led_set(LedSysState_t ledSysStateId) sf_led_set(SF_LED_STATUS_R, SF_LED_STATE_ON); break; +#endif case SF_LED_SYS_STATE_RESET: sf_set_runningLed(0); sf_led_set(SF_LED_ALL, SF_LED_STATE_ON); @@ -584,7 +585,9 @@ void sf_sys_status_led_set(LedSysState_t ledSysStateId) sf_set_runningLed(0); sf_led_set(SF_LED_ALL, SF_LED_STATE_OFF); sf_led_set(SF_LED_BUSY, SF_LED_STATE_ON); + #if (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_)) sf_led_set(SF_LED_STATUS_G, SF_LED_STATE_ON); + #endif isUsbIn = TRUE; break; #endif @@ -619,13 +622,14 @@ void sf_sys_status_led_set(LedSysState_t ledSysStateId) case SF_LED_SYS_STATE_PIR_NOT_DETECT: sf_led_set(SF_LED_BUSY, SF_LED_STATE_ON); break; + #if (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_)) case SF_LED_SYS_STATE_BAT_0_SLOW: sf_led_set(SF_LED_BAT1, SF_LED_STATE_SLOW_FLASHING); sf_led_set(SF_LED_BAT2, SF_LED_STATE_OFF); sf_led_set(SF_LED_BAT3, SF_LED_STATE_OFF); sf_led_set(SF_LED_BAT4, SF_LED_STATE_OFF); break; - + #endif default: break; } diff --git a/rtos/code/driver/na51089/source/mcu/sf_mcu.c b/rtos/code/driver/na51089/source/mcu/sf_mcu.c index be290a099..3e027429a 100755 --- a/rtos/code/driver/na51089/source/mcu/sf_mcu.c +++ b/rtos/code/driver/na51089/source/mcu/sf_mcu.c @@ -56,7 +56,7 @@ static UINT8 McuProductInfo = 0; #if defined(_MODEL_565_HUNTING_EVB_LINUX_4G_68CS_) static UINT8 drNoResetTimeSync = FALSE; //0:reset; 1:no reset; -#elif defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) +#elif (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) || defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S550_)) static UINT8 isSignalReady = 0; static UINT32 GPRS_ERRNO = 0; @@ -1334,7 +1334,7 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) } //#if 1 -#elif defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) +#elif (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) || defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S550_)) /************************************************* Function: sf_mcu_analog_pir_sen_convert @@ -2520,7 +2520,7 @@ int sf_mod_init(void) #if defined(_MODEL_565_HUNTING_EVB_LINUX_4G_68CS_) rt = sf_init_mcu(); - #elif defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) + #elif (defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) || defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S550_)) #if HUNTING_MCU_I2C == ENABLE rt = sf_init_mcu(); #else diff --git a/rtos/code/driver/na51089/source/portable/libdrv_portable.a b/rtos/code/driver/na51089/source/portable/libdrv_portable.a old mode 100644 new mode 100755 index 72478cfab..07dd3efb1 Binary files a/rtos/code/driver/na51089/source/portable/libdrv_portable.a and b/rtos/code/driver/na51089/source/portable/libdrv_portable.a differ