From ff9d4e3713089fe29b6e8aacb852d7e363dd06ae Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov Date: Wed, 2 Mar 2022 17:37:36 +0300 Subject: [PATCH] Add IMX291 for Hi3516Cv200 --- .../kernel/hi3516cv200.generic.config | 327 ++++++++---------- .../kernel/hi3518ev200.generic.config | 20 +- .../files/script/load_hisilicon | 74 +++- .../sensor/config/imx291_i2c_lvds_1080p.ini | 146 ++++++++ .../files/sensor/libsns_gc2023.so | Bin 0 -> 30976 bytes .../files/sensor/libsns_imx122.so | Bin 0 -> 41740 bytes .../files/sensor/libsns_imx291.so | Bin 0 -> 18480 bytes .../files/sensor/libsns_imx307.so | Bin 0 -> 19416 bytes .../files/sensor/libsns_imx327.so | Bin 0 -> 19216 bytes 9 files changed, 342 insertions(+), 225 deletions(-) create mode 100644 general/package/hisilicon-osdrv-hi3516cv200/files/sensor/config/imx291_i2c_lvds_1080p.ini create mode 100644 general/package/hisilicon-osdrv-hi3516cv200/files/sensor/libsns_gc2023.so create mode 100644 general/package/hisilicon-osdrv-hi3516cv200/files/sensor/libsns_imx122.so create mode 100644 general/package/hisilicon-osdrv-hi3516cv200/files/sensor/libsns_imx291.so create mode 100644 general/package/hisilicon-osdrv-hi3516cv200/files/sensor/libsns_imx307.so create mode 100644 general/package/hisilicon-osdrv-hi3516cv200/files/sensor/libsns_imx327.so diff --git a/br-ext-chip-hisilicon/board/hi3516cv200/kernel/hi3516cv200.generic.config b/br-ext-chip-hisilicon/board/hi3516cv200/kernel/hi3516cv200.generic.config index e44a477f..e272b4ce 100644 --- a/br-ext-chip-hisilicon/board/hi3516cv200/kernel/hi3516cv200.generic.config +++ b/br-ext-chip-hisilicon/board/hi3516cv200/kernel/hi3516cv200.generic.config @@ -144,7 +144,6 @@ CONFIG_MULTIUSER=y CONFIG_SYSFS_SYSCALL=y # CONFIG_SYSCTL_SYSCALL is not set CONFIG_KALLSYMS=y -# CONFIG_KALLSYMS_ALL is not set # CONFIG_KALLSYMS_ABSOLUTE_PERCPU is not set CONFIG_KALLSYMS_BASE_RELATIVE=y CONFIG_PRINTK=y @@ -530,7 +529,6 @@ CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ARM_CPU_SUSPEND=y CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_NET=y -CONFIG_NET_INGRESS=y # # Networking options @@ -554,26 +552,25 @@ CONFIG_IP_PNP_DHCP=y # CONFIG_IP_PNP_RARP is not set # CONFIG_NET_IPIP is not set # CONFIG_NET_IPGRE_DEMUX is not set -CONFIG_NET_IP_TUNNEL=m +CONFIG_NET_IP_TUNNEL=y # CONFIG_SYN_COOKIES is not set -# CONFIG_NET_IPVTI is not set -# CONFIG_NET_UDP_TUNNEL is not set -# CONFIG_NET_FOU is not set -# CONFIG_NET_FOU_IP_TUNNELS is not set +CONFIG_NET_UDP_TUNNEL=y +CONFIG_NET_FOU=y # CONFIG_INET_AH is not set # CONFIG_INET_ESP is not set # CONFIG_INET_IPCOMP is not set # CONFIG_INET_XFRM_TUNNEL is not set -CONFIG_INET_TUNNEL=m -CONFIG_INET_XFRM_MODE_TRANSPORT=m -CONFIG_INET_XFRM_MODE_TUNNEL=m -CONFIG_INET_XFRM_MODE_BEET=m -CONFIG_INET_DIAG=m -CONFIG_INET_TCP_DIAG=m +# CONFIG_INET_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y # CONFIG_INET_UDP_DIAG is not set # CONFIG_INET_DIAG_DESTROY is not set # CONFIG_TCP_CONG_ADVANCED is not set CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_CUBIC=y CONFIG_DEFAULT_TCP_CONG="cubic" # CONFIG_TCP_MD5SIG is not set CONFIG_IPV6=y @@ -583,61 +580,22 @@ CONFIG_IPV6=y # CONFIG_INET6_ESP is not set # CONFIG_INET6_IPCOMP is not set # CONFIG_IPV6_MIP6 is not set -# CONFIG_IPV6_ILA is not set # CONFIG_INET6_XFRM_TUNNEL is not set # CONFIG_INET6_TUNNEL is not set -CONFIG_INET6_XFRM_MODE_TRANSPORT=m -CONFIG_INET6_XFRM_MODE_TUNNEL=m -CONFIG_INET6_XFRM_MODE_BEET=m +# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET6_XFRM_MODE_TUNNEL is not set +# CONFIG_INET6_XFRM_MODE_BEET is not set # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set -# CONFIG_IPV6_VTI is not set -CONFIG_IPV6_SIT=m -# CONFIG_IPV6_SIT_6RD is not set -CONFIG_IPV6_NDISC_NODETYPE=y +# CONFIG_IPV6_SIT is not set # CONFIG_IPV6_TUNNEL is not set -# CONFIG_IPV6_FOU is not set +CONFIG_IPV6_FOU=y # CONFIG_IPV6_FOU_TUNNEL is not set # CONFIG_IPV6_MULTIPLE_TABLES is not set # CONFIG_IPV6_MROUTE is not set # CONFIG_NETWORK_SECMARK is not set # CONFIG_NET_PTP_CLASSIFY is not set # CONFIG_NETWORK_PHY_TIMESTAMPING is not set -CONFIG_NETFILTER=y -# CONFIG_NETFILTER_DEBUG is not set -CONFIG_NETFILTER_ADVANCED=y - -# -# Core Netfilter Configuration -# -CONFIG_NETFILTER_INGRESS=y -# CONFIG_NETFILTER_NETLINK_ACCT is not set -# CONFIG_NETFILTER_NETLINK_QUEUE is not set -# CONFIG_NETFILTER_NETLINK_LOG is not set -# CONFIG_NF_CONNTRACK is not set -# CONFIG_NF_TABLES is not set -# CONFIG_NETFILTER_XTABLES is not set -# CONFIG_IP_SET is not set -# CONFIG_IP_VS is not set - -# -# IP: Netfilter Configuration -# -# CONFIG_NF_DEFRAG_IPV4 is not set -# CONFIG_NF_DUP_IPV4 is not set -# CONFIG_NF_LOG_ARP is not set -# CONFIG_NF_LOG_IPV4 is not set -# CONFIG_NF_REJECT_IPV4 is not set -# CONFIG_IP_NF_IPTABLES is not set -# CONFIG_IP_NF_ARPTABLES is not set - -# -# IPv6: Netfilter Configuration -# -# CONFIG_NF_DEFRAG_IPV6 is not set -# CONFIG_NF_DUP_IPV6 is not set -# CONFIG_NF_REJECT_IPV6 is not set -# CONFIG_NF_LOG_IPV6 is not set -# CONFIG_IP6_NF_IPTABLES is not set +# CONFIG_NETFILTER is not set # CONFIG_IP_DCCP is not set # CONFIG_IP_SCTP is not set # CONFIG_RDS is not set @@ -685,7 +643,30 @@ CONFIG_BQL=y # CONFIG_AF_RXRPC is not set # CONFIG_AF_KCM is not set # CONFIG_STREAM_PARSER is not set -# CONFIG_WIRELESS is not set +CONFIG_WIRELESS=y +CONFIG_WIRELESS_EXT=y +CONFIG_WEXT_CORE=y +CONFIG_WEXT_PROC=y +CONFIG_WEXT_PRIV=y +CONFIG_CFG80211=m +# CONFIG_NL80211_TESTMODE is not set +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set +CONFIG_CFG80211_DEFAULT_PS=y +# CONFIG_CFG80211_INTERNAL_REGDB is not set +CONFIG_CFG80211_CRDA_SUPPORT=y +# CONFIG_CFG80211_WEXT is not set +# CONFIG_LIB80211 is not set +CONFIG_MAC80211=m +CONFIG_MAC80211_HAS_RC=y +CONFIG_MAC80211_RC_MINSTREL=y +CONFIG_MAC80211_RC_MINSTREL_HT=y +# CONFIG_MAC80211_RC_MINSTREL_VHT is not set +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" +# CONFIG_MAC80211_MESH is not set +# CONFIG_MAC80211_MESSAGE_TRACING is not set +# CONFIG_MAC80211_DEBUG_MENU is not set +CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 # CONFIG_WIMAX is not set # CONFIG_RFKILL is not set # CONFIG_NET_9P is not set @@ -717,9 +698,6 @@ CONFIG_FW_LOADER=y CONFIG_EXTRA_FIRMWARE="" # CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set CONFIG_ALLOW_DEV_COREDUMP=y -# CONFIG_DEBUG_DRIVER is not set -# CONFIG_DEBUG_DEVRES is not set -# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set # CONFIG_SYS_HYPERVISOR is not set # CONFIG_GENERIC_CPU_DEVICES is not set CONFIG_REGMAP=y @@ -830,12 +808,7 @@ CONFIG_SPI_HISI_SFC=y # CONFIG_MTD_SPI_IDS is not set CONFIG_CLOSE_SPI_8PIN_4IO=y CONFIG_HISI_SPI_BLOCK_PROTECT=y -CONFIG_MTD_UBI=y -CONFIG_MTD_UBI_WL_THRESHOLD=4096 -CONFIG_MTD_UBI_BEB_LIMIT=20 -# CONFIG_MTD_UBI_FASTMAP is not set -# CONFIG_MTD_UBI_GLUEBI is not set -# CONFIG_MTD_UBI_BLOCK is not set +# CONFIG_MTD_UBI is not set CONFIG_DTC=y CONFIG_OF=y # CONFIG_OF_UNITTEST is not set @@ -950,7 +923,7 @@ CONFIG_SCSI_MOD=m # CONFIG_RAID_ATTRS is not set CONFIG_SCSI=m CONFIG_SCSI_DMA=y -CONFIG_SCSI_NETLINK=y +# CONFIG_SCSI_NETLINK is not set # CONFIG_SCSI_MQ_DEFAULT is not set # CONFIG_SCSI_PROC_FS is not set @@ -960,8 +933,7 @@ CONFIG_SCSI_NETLINK=y CONFIG_BLK_DEV_SD=m # CONFIG_CHR_DEV_ST is not set # CONFIG_CHR_DEV_OSST is not set -CONFIG_BLK_DEV_SR=m -# CONFIG_BLK_DEV_SR_VENDOR is not set +# CONFIG_BLK_DEV_SR is not set # CONFIG_CHR_DEV_SG is not set # CONFIG_CHR_DEV_SCH is not set # CONFIG_SCSI_CONSTANTS is not set @@ -991,11 +963,13 @@ CONFIG_NET_CORE=y # CONFIG_NET_TEAM is not set # CONFIG_MACVLAN is not set # CONFIG_VXLAN is not set +# CONFIG_GENEVE is not set +# CONFIG_GTP is not set # CONFIG_MACSEC is not set # CONFIG_NETCONSOLE is not set # CONFIG_NETPOLL is not set # CONFIG_NET_POLL_CONTROLLER is not set -CONFIG_TUN=y +CONFIG_TUN=m # CONFIG_TUN_VNET_CROSS_LE is not set # CONFIG_VETH is not set # CONFIG_NLMON is not set @@ -1099,7 +1073,34 @@ CONFIG_USB_NET_DRIVERS=m # CONFIG_USB_LAN78XX is not set # CONFIG_USB_USBNET is not set # CONFIG_USB_IPHETH is not set -# CONFIG_WLAN is not set +CONFIG_WLAN=y +# CONFIG_WLAN_VENDOR_ADMTEK is not set +# CONFIG_WLAN_VENDOR_ATH is not set +# CONFIG_WLAN_VENDOR_ATMEL is not set +# CONFIG_WLAN_VENDOR_BROADCOM is not set +# CONFIG_WLAN_VENDOR_CISCO is not set +# CONFIG_WLAN_VENDOR_INTEL is not set +# CONFIG_WLAN_VENDOR_INTERSIL is not set +# CONFIG_WLAN_VENDOR_MARVELL is not set +CONFIG_WLAN_VENDOR_MEDIATEK=y +CONFIG_MT7601U=m +# CONFIG_WLAN_VENDOR_RALINK is not set +CONFIG_WLAN_VENDOR_REALTEK=y +# CONFIG_RTL8187 is not set +CONFIG_RTL_CARDS=m +CONFIG_RTL8192CU=m +CONFIG_RTLWIFI=m +CONFIG_RTLWIFI_USB=m +CONFIG_RTLWIFI_DEBUG=y +CONFIG_RTL8192C_COMMON=m +CONFIG_RTL8XXXU=m +# CONFIG_RTL8XXXU_UNTESTED is not set +# CONFIG_WLAN_VENDOR_RSI is not set +# CONFIG_WLAN_VENDOR_ST is not set +# CONFIG_WLAN_VENDOR_TI is not set +# CONFIG_WLAN_VENDOR_ZYDAS is not set +# CONFIG_MAC80211_HWSIM is not set +# CONFIG_USB_NET_RNDIS_WLAN is not set # # Enable WiMAX (Networking options) to see the WiMAX drivers @@ -1257,7 +1258,6 @@ CONFIG_I2C_HISI=y # CONFIG_I2C_DEBUG_ALGO is not set # CONFIG_I2C_DEBUG_BUS is not set CONFIG_SPI=y -# CONFIG_SPI_DEBUG is not set CONFIG_SPI_MASTER=y # @@ -1313,14 +1313,12 @@ CONFIG_PINCTRL=y CONFIG_PINMUX=y CONFIG_PINCONF=y CONFIG_GENERIC_PINCONF=y -# CONFIG_DEBUG_PINCTRL is not set # CONFIG_PINCTRL_AMD is not set CONFIG_PINCTRL_SINGLE=y CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y CONFIG_GPIOLIB=y CONFIG_OF_GPIO=y CONFIG_GPIOLIB_IRQCHIP=y -# CONFIG_DEBUG_GPIO is not set CONFIG_GPIO_SYSFS=y # @@ -1538,41 +1536,6 @@ CONFIG_MFD_SYSCON=y # Frame buffer Devices # # CONFIG_FB is not set -# CONFIG_FIRMWARE_EDID is not set -# CONFIG_FB_CMDLINE is not set -# CONFIG_FB_NOTIFY is not set -# CONFIG_FB_DDC is not set -# CONFIG_FB_BOOT_VESA_SUPPORT is not set -# CONFIG_FB_CFB_FILLRECT is not set -# CONFIG_FB_CFB_COPYAREA is not set -# CONFIG_FB_CFB_IMAGEBLIT is not set -# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set -# CONFIG_FB_SYS_FILLRECT is not set -# CONFIG_FB_SYS_COPYAREA is not set -# CONFIG_FB_SYS_IMAGEBLIT is not set -# CONFIG_FB_FOREIGN_ENDIAN is not set -# CONFIG_FB_SYS_FOPS is not set -# CONFIG_FB_SVGALIB is not set -# CONFIG_FB_MACMODES is not set -# CONFIG_FB_BACKLIGHT is not set -# CONFIG_FB_MODE_HELPERS is not set -# CONFIG_FB_TILEBLITTING is not set - -# -# Frame buffer hardware drivers -# -# CONFIG_FB_ARMCLCD is not set -# CONFIG_FB_OPENCORES is not set -# CONFIG_FB_S1D13XXX is not set -# CONFIG_FB_SMSCUFX is not set -# CONFIG_FB_UDL is not set -# CONFIG_FB_IBM_GXT4500 is not set -# CONFIG_FB_VIRTUAL is not set -# CONFIG_FB_METRONOME is not set -# CONFIG_FB_BROADSHEET is not set -# CONFIG_FB_AUO_K190X is not set -# CONFIG_FB_SIMPLE is not set -# CONFIG_FB_SSD1307 is not set # CONFIG_BACKLIGHT_LCD_SUPPORT is not set # CONFIG_VGASTATE is not set @@ -1580,8 +1543,6 @@ CONFIG_MFD_SYSCON=y # Console display driver support # CONFIG_DUMMY_CONSOLE=y -# CONFIG_FRAMEBUFFER_CONSOLE is not set -# CONFIG_LOGO is not set # CONFIG_SOUND is not set # @@ -1627,11 +1588,6 @@ CONFIG_HID_GENERIC=y # CONFIG_HID_LCPOWER is not set # CONFIG_HID_LENOVO is not set # CONFIG_HID_LOGITECH is not set -# CONFIG_HID_LOGITECH_HIDPP is not set -# CONFIG_LOGITECH_FF is not set -# CONFIG_LOGIRUMBLEPAD2_FF is not set -# CONFIG_LOGIG940_FF is not set -# CONFIG_LOGIWHEELS_FF is not set # CONFIG_HID_MAGICMOUSE is not set # CONFIG_HID_MICROSOFT is not set # CONFIG_HID_MONTEREY is not set @@ -1798,7 +1754,6 @@ CONFIG_USB_STORAGE=m # CONFIG_USB_ISP1301 is not set # CONFIG_USB_ULPI is not set CONFIG_USB_GADGET=y -# CONFIG_USB_GADGET_DEBUG is not set # CONFIG_USB_GADGET_DEBUG_FILES is not set CONFIG_USB_GADGET_VBUS_DRAW=2 CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 @@ -1891,7 +1846,35 @@ CONFIG_RTC_LIB=y # # Microsoft Hyper-V guest support # -# CONFIG_STAGING is not set +CONFIG_STAGING=y +# CONFIG_PRISM2_USB is not set +# CONFIG_COMEDI is not set +# CONFIG_RTLLIB is not set +# CONFIG_R8712U is not set +CONFIG_R8188EU=m +CONFIG_88EU_AP_MODE=y +# CONFIG_VT6656 is not set + +# +# Speakup console speech +# +# CONFIG_SPEAKUP is not set +# CONFIG_STAGING_MEDIA is not set + +# +# Android +# +# CONFIG_STAGING_BOARD is not set +# CONFIG_LTE_GDM724X is not set +# CONFIG_MTD_SPINAND_MT29F is not set +# CONFIG_LNET is not set +# CONFIG_GS_FPGABOOT is not set +# CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set +# CONFIG_WILC1000_SDIO is not set +# CONFIG_WILC1000_SPI is not set +# CONFIG_MOST is not set +# CONFIG_KS7010 is not set +# CONFIG_GREYBUS is not set # CONFIG_GOLDFISH is not set # CONFIG_CHROME_PLATFORMS is not set CONFIG_CLKDEV_LOOKUP=y @@ -2031,10 +2014,7 @@ CONFIG_HI_DMAC_CHANNEL_NUM=4 # CONFIG_NILFS2_FS is not set CONFIG_F2FS_FS=m # CONFIG_F2FS_FS_XATTR is not set -# CONFIG_F2FS_FS_POSIX_ACL is not set -# CONFIG_F2FS_FS_SECURITY is not set # CONFIG_F2FS_CHECK_FS is not set -# CONFIG_F2FS_FS_ENCRYPTION is not set # CONFIG_F2FS_FAULT_INJECTION is not set CONFIG_FS_POSIX_ACL=y CONFIG_EXPORTFS=y @@ -2097,7 +2077,19 @@ CONFIG_MISC_FILESYSTEMS=y # CONFIG_BEFS_FS is not set # CONFIG_BFS_FS is not set # CONFIG_EFS_FS is not set -# CONFIG_YAFFS_FS is not set +CONFIG_YAFFS_FS=y +CONFIG_YAFFS_YAFFS1=y +# CONFIG_YAFFS_9BYTE_TAGS is not set +# CONFIG_YAFFS_DOES_ECC is not set +CONFIG_YAFFS_YAFFS2=y +CONFIG_YAFFS_AUTO_YAFFS2=y +# CONFIG_YAFFS_DISABLE_TAGS_ECC is not set +# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set +# CONFIG_YAFFS_EMPTY_LOST_AND_FOUND is not set +# CONFIG_YAFFS_DISABLE_BLOCK_REFRESHING is not set +# CONFIG_YAFFS_DISABLE_BACKGROUND is not set +# CONFIG_YAFFS_DISABLE_BAD_BLOCK_MARKING is not set +CONFIG_YAFFS_XATTR=y CONFIG_JFFS2_FS=y CONFIG_JFFS2_FS_DEBUG=0 CONFIG_JFFS2_FS_WRITEBUFFER=y @@ -2109,7 +2101,6 @@ CONFIG_JFFS2_ZLIB=y # CONFIG_JFFS2_LZO is not set CONFIG_JFFS2_RTIME=y # CONFIG_JFFS2_RUBIN is not set -# CONFIG_UBIFS_FS is not set # CONFIG_LOGFS is not set # CONFIG_CRAMFS is not set CONFIG_SQUASHFS=y @@ -2219,80 +2210,46 @@ CONFIG_NLS_UTF8=y # # CONFIG_PRINTK_TIME is not set CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 -# CONFIG_BOOT_PRINTK_DELAY is not set # # Compile-time checks and compiler options # -# CONFIG_DEBUG_INFO is not set # CONFIG_ENABLE_WARN_DEPRECATED is not set # CONFIG_ENABLE_MUST_CHECK is not set CONFIG_FRAME_WARN=1024 # CONFIG_STRIP_ASM_SYMS is not set -# CONFIG_READABLE_ASM is not set # CONFIG_UNUSED_SYMBOLS is not set -# CONFIG_PAGE_OWNER is not set # CONFIG_DEBUG_FS is not set # CONFIG_HEADERS_CHECK is not set # CONFIG_DEBUG_SECTION_MISMATCH is not set CONFIG_SECTION_MISMATCH_WARN_ONLY=y -# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set # CONFIG_MAGIC_SYSRQ is not set -CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_KERNEL is not set # # Memory Debugging # # CONFIG_PAGE_EXTENSION is not set -# CONFIG_DEBUG_PAGEALLOC is not set # CONFIG_PAGE_POISONING is not set -# CONFIG_DEBUG_OBJECTS is not set # CONFIG_SLUB_DEBUG_ON is not set # CONFIG_SLUB_STATS is not set CONFIG_HAVE_DEBUG_KMEMLEAK=y -# CONFIG_DEBUG_KMEMLEAK is not set -# CONFIG_DEBUG_STACK_USAGE is not set -# CONFIG_DEBUG_VM is not set CONFIG_DEBUG_MEMORY_INIT=y -# CONFIG_DEBUG_SHIRQ is not set # # Debug Lockups and Hangs # -# CONFIG_LOCKUP_DETECTOR is not set -# CONFIG_DETECT_HUNG_TASK is not set -# CONFIG_WQ_WATCHDOG is not set CONFIG_PANIC_ON_OOPS=y CONFIG_PANIC_ON_OOPS_VALUE=1 CONFIG_PANIC_TIMEOUT=0 -# CONFIG_SCHED_DEBUG is not set # CONFIG_SCHED_INFO is not set -# CONFIG_SCHEDSTATS is not set -# CONFIG_SCHED_STACK_END_CHECK is not set # CONFIG_DEBUG_TIMEKEEPING is not set -# CONFIG_TIMER_STATS is not set # # Lock Debugging (spinlocks, mutexes, etc...) # -# CONFIG_DEBUG_RT_MUTEXES is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_MUTEXES is not set -# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set -# CONFIG_DEBUG_LOCK_ALLOC is not set -# CONFIG_PROVE_LOCKING is not set -# CONFIG_LOCK_STAT is not set -# CONFIG_DEBUG_ATOMIC_SLEEP is not set -# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set -# CONFIG_LOCK_TORTURE_TEST is not set CONFIG_STACKTRACE=y -# CONFIG_DEBUG_KOBJECT is not set CONFIG_DEBUG_BUGVERBOSE=y -# CONFIG_DEBUG_LIST is not set -# CONFIG_DEBUG_PI_LIST is not set -# CONFIG_DEBUG_SG is not set -# CONFIG_DEBUG_NOTIFIERS is not set -# CONFIG_DEBUG_CREDENTIALS is not set # # RCU Debugging @@ -2300,15 +2257,6 @@ CONFIG_DEBUG_BUGVERBOSE=y # CONFIG_PROVE_RCU is not set # CONFIG_SPARSE_RCU_POINTER is not set # CONFIG_TORTURE_TEST is not set -# CONFIG_RCU_PERF_TEST is not set -# CONFIG_RCU_TORTURE_TEST is not set -# CONFIG_RCU_TRACE is not set -# CONFIG_RCU_EQS_DEBUG is not set -# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set -# CONFIG_NOTIFIER_ERROR_INJECTION is not set -# CONFIG_FAULT_INJECTION is not set -# CONFIG_LATENCYTOP is not set CONFIG_HAVE_FUNCTION_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y CONFIG_HAVE_DYNAMIC_FTRACE=y @@ -2321,11 +2269,6 @@ CONFIG_TRACING_SUPPORT=y # # Runtime Testing # -# CONFIG_TEST_LIST_SORT is not set -# CONFIG_BACKTRACE_SELF_TEST is not set -# CONFIG_RBTREE_TEST is not set -# CONFIG_INTERVAL_TREE_TEST is not set -# CONFIG_PERCPU_TEST is not set # CONFIG_ATOMIC64_SELFTEST is not set # CONFIG_TEST_HEXDUMP is not set # CONFIG_TEST_STRING_HELPERS is not set @@ -2345,16 +2288,13 @@ CONFIG_TRACING_SUPPORT=y # CONFIG_TEST_STATIC_KEYS is not set # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y -# CONFIG_KGDB is not set # CONFIG_ARCH_WANTS_UBSAN_NO_NULL is not set # CONFIG_UBSAN is not set CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y CONFIG_STRICT_DEVMEM=y # CONFIG_IO_STRICT_DEVMEM is not set -# CONFIG_ARM_PTDUMP is not set CONFIG_ARM_UNWIND=y # CONFIG_DEBUG_USER is not set -# CONFIG_DEBUG_LL is not set CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S" # CONFIG_DEBUG_UART_8250 is not set CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" @@ -2380,12 +2320,15 @@ CONFIG_CRYPTO=y # CONFIG_CRYPTO_ALGAPI=y CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD=m CONFIG_CRYPTO_AEAD2=y CONFIG_CRYPTO_BLKCIPHER=y CONFIG_CRYPTO_BLKCIPHER2=y CONFIG_CRYPTO_HASH=y CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG=m CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_RNG_DEFAULT=m CONFIG_CRYPTO_AKCIPHER2=y CONFIG_CRYPTO_KPP2=y # CONFIG_CRYPTO_RSA is not set @@ -2395,8 +2338,8 @@ CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_MANAGER2=y # CONFIG_CRYPTO_USER is not set CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y -# CONFIG_CRYPTO_GF128MUL is not set -# CONFIG_CRYPTO_NULL is not set +CONFIG_CRYPTO_GF128MUL=m +CONFIG_CRYPTO_NULL=m CONFIG_CRYPTO_NULL2=y CONFIG_CRYPTO_WORKQUEUE=y # CONFIG_CRYPTO_CRYPTD is not set @@ -2407,17 +2350,17 @@ CONFIG_CRYPTO_WORKQUEUE=y # # Authenticated Encryption with Associated Data # -# CONFIG_CRYPTO_CCM is not set -# CONFIG_CRYPTO_GCM is not set +CONFIG_CRYPTO_CCM=m +CONFIG_CRYPTO_GCM=m # CONFIG_CRYPTO_CHACHA20POLY1305 is not set -# CONFIG_CRYPTO_SEQIV is not set +CONFIG_CRYPTO_SEQIV=m # CONFIG_CRYPTO_ECHAINIV is not set # # Block modes # # CONFIG_CRYPTO_CBC is not set -# CONFIG_CRYPTO_CTR is not set +CONFIG_CRYPTO_CTR=m # CONFIG_CRYPTO_CTS is not set # CONFIG_CRYPTO_ECB is not set # CONFIG_CRYPTO_LRW is not set @@ -2429,7 +2372,7 @@ CONFIG_CRYPTO_WORKQUEUE=y # Hash modes # # CONFIG_CRYPTO_CMAC is not set -# CONFIG_CRYPTO_HMAC is not set +CONFIG_CRYPTO_HMAC=m # CONFIG_CRYPTO_XCBC is not set # CONFIG_CRYPTO_VMAC is not set @@ -2437,9 +2380,9 @@ CONFIG_CRYPTO_WORKQUEUE=y # Digest # CONFIG_CRYPTO_CRC32C=y -# CONFIG_CRYPTO_CRC32 is not set +CONFIG_CRYPTO_CRC32=m # CONFIG_CRYPTO_CRCT10DIF is not set -# CONFIG_CRYPTO_GHASH is not set +CONFIG_CRYPTO_GHASH=m # CONFIG_CRYPTO_POLY1305 is not set # CONFIG_CRYPTO_MD4 is not set # CONFIG_CRYPTO_MD5 is not set @@ -2449,7 +2392,7 @@ CONFIG_CRYPTO_CRC32C=y # CONFIG_CRYPTO_RMD256 is not set # CONFIG_CRYPTO_RMD320 is not set # CONFIG_CRYPTO_SHA1 is not set -# CONFIG_CRYPTO_SHA256 is not set +CONFIG_CRYPTO_SHA256=m # CONFIG_CRYPTO_SHA512 is not set # CONFIG_CRYPTO_SHA3 is not set # CONFIG_CRYPTO_TGR192 is not set @@ -2460,7 +2403,7 @@ CONFIG_CRYPTO_CRC32C=y # CONFIG_CRYPTO_AES=y # CONFIG_CRYPTO_ANUBIS is not set -# CONFIG_CRYPTO_ARC4 is not set +CONFIG_CRYPTO_ARC4=m # CONFIG_CRYPTO_BLOWFISH is not set # CONFIG_CRYPTO_CAMELLIA is not set # CONFIG_CRYPTO_CAST5 is not set @@ -2488,8 +2431,12 @@ CONFIG_CRYPTO_LZO=y # Random Number Generation # # CONFIG_CRYPTO_ANSI_CPRNG is not set -# CONFIG_CRYPTO_DRBG_MENU is not set -# CONFIG_CRYPTO_JITTERENTROPY is not set +CONFIG_CRYPTO_DRBG_MENU=m +CONFIG_CRYPTO_DRBG_HMAC=y +# CONFIG_CRYPTO_DRBG_HASH is not set +# CONFIG_CRYPTO_DRBG_CTR is not set +CONFIG_CRYPTO_DRBG=m +CONFIG_CRYPTO_JITTERENTROPY=m CONFIG_CRYPTO_USER_API=y # CONFIG_CRYPTO_USER_API_HASH is not set CONFIG_CRYPTO_USER_API_SKCIPHER=y diff --git a/br-ext-chip-hisilicon/board/hi3516cv200/kernel/hi3518ev200.generic.config b/br-ext-chip-hisilicon/board/hi3516cv200/kernel/hi3518ev200.generic.config index 4d53d435..e272b4ce 100644 --- a/br-ext-chip-hisilicon/board/hi3516cv200/kernel/hi3518ev200.generic.config +++ b/br-ext-chip-hisilicon/board/hi3516cv200/kernel/hi3518ev200.generic.config @@ -568,25 +568,9 @@ CONFIG_INET_DIAG=y CONFIG_INET_TCP_DIAG=y # CONFIG_INET_UDP_DIAG is not set # CONFIG_INET_DIAG_DESTROY is not set -CONFIG_TCP_CONG_ADVANCED=y -# CONFIG_TCP_CONG_BIC is not set +# CONFIG_TCP_CONG_ADVANCED is not set CONFIG_TCP_CONG_CUBIC=y -# CONFIG_TCP_CONG_WESTWOOD is not set -# CONFIG_TCP_CONG_HTCP is not set -# CONFIG_TCP_CONG_HSTCP is not set -# CONFIG_TCP_CONG_HYBLA is not set -# CONFIG_TCP_CONG_VEGAS is not set -# CONFIG_TCP_CONG_NV is not set -# CONFIG_TCP_CONG_SCALABLE is not set -# CONFIG_TCP_CONG_LP is not set -# CONFIG_TCP_CONG_VENO is not set -# CONFIG_TCP_CONG_YEAH is not set -# CONFIG_TCP_CONG_ILLINOIS is not set -# CONFIG_TCP_CONG_DCTCP is not set -# CONFIG_TCP_CONG_CDG is not set -# CONFIG_TCP_CONG_BBR is not set CONFIG_DEFAULT_CUBIC=y -# CONFIG_DEFAULT_RENO is not set CONFIG_DEFAULT_TCP_CONG="cubic" # CONFIG_TCP_MD5SIG is not set CONFIG_IPV6=y @@ -1128,7 +1112,7 @@ CONFIG_RTL8XXXU=m # # Input device support # -CONFIG_INPUT=y +# CONFIG_INPUT is not set # CONFIG_INPUT_FF_MEMLESS is not set # CONFIG_INPUT_POLLDEV is not set # CONFIG_INPUT_SPARSEKMAP is not set diff --git a/general/package/hisilicon-osdrv-hi3516cv200/files/script/load_hisilicon b/general/package/hisilicon-osdrv-hi3516cv200/files/script/load_hisilicon index 22c7d5ef..0e9e3ead 100755 --- a/general/package/hisilicon-osdrv-hi3516cv200/files/script/load_hisilicon +++ b/general/package/hisilicon-osdrv-hi3516cv200/files/script/load_hisilicon @@ -89,11 +89,10 @@ insert_isp() { insert_sns() { case $SENSOR in - 9m034 | ar0130 | jxf22 | ov9732 | jxh62 | sc1235 | sc2235) + 9m034 | jxf22 | ov2718 | ov9732 | ov9750 | ov9752 | jxh62 | sc1235 | sc2235) devmem 0x200f0040 32 0x2 # I2C0_SCL devmem 0x200f0044 32 0x2 # I2C0_SDA - # Cmos pinmux devmem 0x200f007c 32 0x1 # VI_DATA13 devmem 0x200f0080 32 0x1 # VI_DATA10 devmem 0x200f0084 32 0x1 # VI_DATA12 @@ -104,11 +103,10 @@ insert_sns() { devmem 0x2003002c 32 0xc4001 # Sensor unreset, clk 24MHz, VI 99MHz ;; - - sc1135 | sc1145 | sc2135) + ar0130 | 9m034 | sc1135 | sc1145 | sc2135) devmem 0x200f0040 32 0x2 # I2C0_SCL devmem 0x200f0044 32 0x2 # I2C0_SDA - # Cmos pinmux + devmem 0x200f007c 32 0x1 # VI_DATA13 devmem 0x200f0080 32 0x1 # VI_DATA10 devmem 0x200f0084 32 0x1 # VI_DATA12 @@ -118,7 +116,51 @@ insert_sns() { devmem 0x200f0094 32 0x1 # VI_DATA9 devmem 0x2003002c 32 0xb4001 # clk 27MHz, VI 99MHz ;; + ar0230) + devmem 0x200f0040 32 0x2 # I2C0_SCL + devmem 0x200f0044 32 0x2 # I2C0_SDA + devmem 0x2003002c 32 0xb4005 # sensor unreset, clk 27MHz, VI 148.5MHz + devmem 0x20030104 32 0x1 # vpss 148.5MHz + ;; + imx222) + devmem 0x200f0040 32 0x1 # SPI0_SCLK + devmem 0x200f0044 32 0x1 # SPI0_SDO + devmem 0x200f0048 32 0x1 # SPI0_SDI + devmem 0x200f004c 32 0x1 # SPI0_CSN + + devmem 0x200f007c 32 0x1 # VI_DATA13 + devmem 0x200f0080 32 0x1 # VI_DATA10 + devmem 0x200f0084 32 0x1 # VI_DATA12 + devmem 0x200f0088 32 0x1 # VI_DATA11 + devmem 0x200f008c 32 0x2 # VI_VS + devmem 0x200f0090 32 0x2 # VI_HS + devmem 0x200f0094 32 0x1 # VI_DATA9 + + devmem 0x2003002c 32 0x94001 # sensor unreset, clk 37.125MHz, VI 99MHz + + insmod sensor_spi.ko + ;; + ov9712 | ov2710 | ov9732 | gc2023) + devmem 0x200f0040 32 0x2 # I2C0_SCL + devmem 0x200f0044 32 0x2 # I2C0_SDA + + devmem 0x200f007c 32 0x1 # VI_DATA13 + devmem 0x200f0080 32 0x1 # VI_DATA10 + devmem 0x200f0084 32 0x1 # VI_DATA12 + devmem 0x200f0088 32 0x1 # VI_DATA11 + devmem 0x200f008c 32 0x2 # VI_VS + devmem 0x200f0090 32 0x2 # VI_HS + devmem 0x200f0094 32 0x1 # VI_DATA9 + + devmem 0x2003002c 32 0xc4001 # sensor unreset, clk 24MHz, VI 99MHz + ;; + mn34222 | imx291 | imx327 | imx307) + devmem 0x200f0040 32 0x2 # I2C0_SCL + devmem 0x200f0044 32 0x2 # I2C0_SDA + + devmem 0x2003002c 32 0x94001 # sensor unreset, clk 37.125MHz, VI 99MHz + ;; *) echo "xxxx Invalid sensor type $SENSOR xxxx" report_error @@ -203,20 +245,18 @@ remove_ko() { rmmod mmz } -load_usage() -{ - echo "Usage: ./load_hisilicon [-option] [sensor_name]" - echo "options:" - echo " -i insert modules" - echo " -r remove modules" - echo " -a remove modules first, then insert modules" - echo " -sensor sensor_name config sensor type [default: imx307]" - echo " -h help information" - echo -e "Available sensors: gc2053 imx307 imx327 imx335 os05a sc2231 sc2235 sc4236 sc3235 sc4236 etc." - echo -e "for example: ./load_hisilicon -i -sensor imx307 -osmem 32M -board demo -yuv0 0\n" +load_usage() { + echo "Usage: ./load_hisilicon [-option] [sensor_name]" + echo "options:" + echo " -i insert modules" + echo " -r remove modules" + echo " -a remove modules first, then insert modules" + echo " -sensor sensor_name config sensor type [default: imx307]" + echo " -h help information" + echo -e "Available sensors: gc2053 imx307 imx327 imx335 os05a sc2231 sc2235 sc4236 sc3235 sc4236 etc." + echo -e "for example: ./load_hisilicon -i -sensor imx307 -osmem 32M -board demo -yuv0 0\n" } - calc_mmz_info() { mmz_start=$(echo "$mem_start $os_mem_size" | awk 'BEGIN { temp = 0; } diff --git a/general/package/hisilicon-osdrv-hi3516cv200/files/sensor/config/imx291_i2c_lvds_1080p.ini b/general/package/hisilicon-osdrv-hi3516cv200/files/sensor/config/imx291_i2c_lvds_1080p.ini new file mode 100644 index 00000000..a3d57450 --- /dev/null +++ b/general/package/hisilicon-osdrv-hi3516cv200/files/sensor/config/imx291_i2c_lvds_1080p.ini @@ -0,0 +1,146 @@ +[sensor] +Sensor_type =imx291 ;sensor name +Mode =0 ;WDR_MODE_NONE = 0 + ;WDR_MODE_BUILT_IN = 1 + ;WDR_MODE_2To1_LINE = 2 + ;WDR_MODE_2To1_LINE = 3 + ;WDR_MODE_2To1_FRAME_FULL_RATE =4 ...etc +DllFile = /usr/lib/sensors/libsns_imx291.so ;sensor lib path + + +[mode] +input_mode =2 ;INPUT_MODE_MIPI = 0 + ;INPUT_MODE_SUBLVDS = 1 + ;INPUT_MODE_LVDS = 2 ...etc + +dev_attr = 1 ;mipi_dev_attr_t = 0 + ;lvds_dev_attr_t = 1 + ;NULL =2 + +[lvds] +;----------only for lvds_dev--------- +img_size_w = 1920 ;oringnal sensor input image size W +img_size_h = 1080 ;oringnal sensor input image size H +wdr_mode = 0 ;HI_WDR_MODE_NONE =0 + ;HI_WDR_MODE_2F = 1 + ;HI_WDR_MODE_3F = 2 + ;HI_WDR_MODE_4F =3 +raw_data_type = 2 ;RAW_DATA_8BIT = 0 + ;RAW_DATA_10BIT = 1 + ;RAW_DATA_12BIT = 2 + ;RAW_DATA_14BIT = 3 +lane_id = 0|1|2|3 +sync_code_0 = 0xab0|0xb60|0x800|0x9d0|0xab0|0xb60|0x800|0x9d0|0xab0|0xb60|0x800|0x9d0|0xab0|0xb60|0x800|0x9d0 +sync_code_1 = 0xab0|0xb60|0x800|0x9d0|0xab0|0xb60|0x800|0x9d0|0xab0|0xb60|0x800|0x9d0|0xab0|0xb60|0x800|0x9d0 +sync_code_2 = 0xab0|0xb60|0x800|0x9d0|0xab0|0xb60|0x800|0x9d0|0xab0|0xb60|0x800|0x9d0|0xab0|0xb60|0x800|0x9d0 +sync_code_3 = 0xab0|0xb60|0x800|0x9d0|0xab0|0xb60|0x800|0x9d0|0xab0|0xb60|0x800|0x9d0|0xab0|0xb60|0x800|0x9d0 + +[isp_image] +Isp_x =0 +Isp_y =0 +Isp_W =1920 +Isp_H =1080 +Isp_FrameRate=25 +Isp_Bayer =2 ;BAYER_RGGB=0, BAYER_GRBG=1, BAYER_GBRG=2, BAYER_BGGR=3 + + +[vi_dev] +Input_mod =6 ;VI_MODE_BT656 = 0, /* ITU-R BT.656 YUV4:2:2 */ + ;VI_MODE_BT601, /* ITU-R BT.601 YUV4:2:2 */ + ;VI_MODE_DIGITAL_CAMERA, /* digital camera mode */ + ;VI_MODE_BT1120_STANDARD, /* BT.1120 progressive mode */ + ;VI_MODE_BT1120_INTERLEAVED, /* BT.1120 interstage mode */ + ;VI_MODE_MIPI, /* MIPI mode*/ + ;VI_MODE_LVDS, + ;VI_MODE_HISPI +Work_mod =0 ;VI_WORK_MODE_1Multiplex = 0 + ;VI_WORK_MODE_2Multiplex, + ;VI_WORK_MODE_4Multiplex +Combine_mode =0 ;Y/C composite or separation mode + ;VI_COMBINE_COMPOSITE = 0 /*Composite mode */ + ;VI_COMBINE_SEPARATE, /*Separate mode */ +Comp_mode =0 ;Component mode (single-component or dual-component) + ;VI_COMP_MODE_SINGLE = 0, /*single component mode */ + ;VI_COMP_MODE_DOUBLE = 1, /*double component mode */ +Clock_edge =1 ;Clock edge mode (sampling on the rising or falling edge) + ;VI_CLK_EDGE_SINGLE_UP=0, /*rising edge */ + ;VI_CLK_EDGE_SINGLE_DOWN, /*falling edge */ +Mask_num =2 ;Component mask +Mask_0 =0xFFF00000 +Mask_1 =0x0 +Scan_mode = 1;VI_SCAN_INTERLACED = 0 + ;VI_SCAN_PROGRESSIVE, +Data_seq =2 ;data sequence (ONLY for YUV format) + ;----2th component U/V sequence in bt1120 + ; VI_INPUT_DATA_VUVU = 0, + ; VI_INPUT_DATA_UVUV, + ;----input sequence for yuv + ; VI_INPUT_DATA_UYVY = 0, + ; VI_INPUT_DATA_VYUY, + ; VI_INPUT_DATA_YUYV, + ; VI_INPUT_DATA_YVYU + +Vsync =1 ; vertical synchronization signal + ;VI_VSYNC_FIELD = 0, + ;VI_VSYNC_PULSE, +VsyncNeg=1 ;Polarity of the vertical synchronization signal + ;VI_VSYNC_NEG_HIGH = 0, + ;VI_VSYNC_NEG_LOW /*if VIU_VSYNC_E +Hsync =0 ;Attribute of the horizontal synchronization signal + ;VI_HSYNC_VALID_SINGNAL = 0, + ;VI_HSYNC_PULSE, +HsyncNeg =0 ;Polarity of the horizontal synchronization signal + ;VI_HSYNC_NEG_HIGH = 0, + ;VI_HSYNC_NEG_LOW +VsyncValid =1 ;Attribute of the valid vertical synchronization signal + ;VI_VSYNC_NORM_PULSE = 0, + ;VI_VSYNC_VALID_SINGAL, +VsyncValidNeg =0;Polarity of the valid vertical synchronization signal + ;VI_VSYNC_VALID_NEG_HIGH = 0, + ;VI_VSYNC_VALID_NEG_LOW +Timingblank_HsyncHfb =0 ;Horizontal front blanking width +Timingblank_HsyncAct =1920 ;Horizontal effetive width +Timingblank_HsyncHbb =0 ;Horizontal back blanking width +Timingblank_VsyncVfb =0 ;Vertical front blanking height +Timingblank_VsyncVact =1080 ;Vertical effetive width +Timingblank_VsyncVbb=0 ;Vertical back blanking height +Timingblank_VsyncVbfb =0 ;Even-field vertical front blanking height(interlace, invalid progressive) +Timingblank_VsyncVbact=0 ;Even-field vertical effetive width(interlace, invalid progressive) +Timingblank_VsyncVbbb =0 ;Even-field vertical back blanking height(interlace, invalid progressive) + +;----- only for bt656 ---------- +FixCode =0 ;BT656_FIXCODE_1 = 0, + ;BT656_FIXCODE_0 +FieldPolar=0 ;BT656_FIELD_POLAR_STD = 0 + ;BT656_FIELD_POLAR_NSTD +DataPath =1 ;ISP enable or bypass + ;VI_PATH_BYPASS = 0,/* ISP bypass */ + ;VI_PATH_ISP = 1,/* ISP enable */ + ;VI_PATH_RAW = 2,/* Capture raw data, for debug */ +InputDataType=1 ;VI_DATA_TYPE_YUV = 0,VI_DATA_TYPE_RGB = 1, +DataRev =FALSE ;Data reverse. FALSE = 0; TRUE = 1 +DevRect_x=0 ; +DevRect_y=30 ; +DevRect_w=1920 ; +DevRect_h=1080 ; + +[vi_chn] +CapRect_X =0 +CapRect_Y =0 +CapRect_Width=1920 +CapRect_Height=1080 +DestSize_Width=1920 +DestSize_Height=1080 +CapSel =2 ;Frame/field select. ONLY used in interlaced mode + ;VI_CAPSEL_TOP = 0, /* top field */ + ;VI_CAPSEL_BOTTOM, /* bottom field */ + ;VI_CAPSEL_BOTH, /* top and bottom field */ + +PixFormat =23;PIXEL_FORMAT_YUV_SEMIPLANAR_422 = 22 + ;PIXEL_FORMAT_YUV_SEMIPLANAR_420 = 23 ...etc +CompressMode =0 ;COMPRESS_MODE_NONE = 0 + ;COMPRESS_MODE_SEG =1 ...etc + +SrcFrameRate=-1 ;Source frame rate. -1: not controll +FrameRate =-1 ;Target frame rate. -1: not controll + diff --git a/general/package/hisilicon-osdrv-hi3516cv200/files/sensor/libsns_gc2023.so b/general/package/hisilicon-osdrv-hi3516cv200/files/sensor/libsns_gc2023.so new file mode 100644 index 0000000000000000000000000000000000000000..16ccd8d212a2f8bb04be981915683a1e02ed7fdc GIT binary patch literal 30976 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 QMqdXg_h|GD%V@d(3&3J|&j0`b literal 0 HcmV?d00001 diff --git a/general/package/hisilicon-osdrv-hi3516cv200/files/sensor/libsns_imx291.so b/general/package/hisilicon-osdrv-hi3516cv200/files/sensor/libsns_imx291.so new file mode 100644 index 0000000000000000000000000000000000000000..1d73d485a078f47a1f1e9e927d487aa880daa19e GIT binary patch literal 18480 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 z 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 CY5->d literal 0 HcmV?d00001 diff --git a/general/package/hisilicon-osdrv-hi3516cv200/files/sensor/libsns_imx307.so b/general/package/hisilicon-osdrv-hi3516cv200/files/sensor/libsns_imx307.so new file mode 100644 index 0000000000000000000000000000000000000000..ef3df0fd113652a8ba6a4bdc7b89269acb22d115 GIT binary patch literal 19416 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 e4zizZ)H@@c0Baq66lW1QC*Hv-E)3B4dfwJ=`m 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 literal 0 HcmV?d00001