
menuconfig MEDIATEK_SOLUTION
	bool "MediaTek Properitary Configuration"
	select FW_LOADER_USER_HELPER_FALLBACK
	select I2C
	help
	  Check this to enable MediaTek properity configuration.

if MEDIATEK_SOLUTION

config MTK_PLATFORM
	string "MTK platform name"

config ARCH_MTK_PROJECT
	string "MTK project name"

config FPGA_EARLY_PORTING
	bool "MTK FPGA EARLY PORTING"
	help
	   Used for FPGA early porting to separate code segments between FPGA
	   platform and non-FPGA platform

config MTK_PSCI
	bool "Mediatek PSCI boot method"
	depends on ARM64
	help
	  Select if you want to enable PSCI boot method on MTK platform.

config MTK_LM_MODE
	bool "MTK Large Memory mode"
	select ARM_LPAE if !ARM64
	select ARCH_PHYS_ADDR_T_64BIT
	select ARCH_DMA_ADDR_T_64BIT
	help
	  Large Memory mode support for supporting more than 4GB DRAM access

config DMAUSER_PAGES
	bool "allocate highuser movable pages from dma zone"
	depends on MTK_LM_MODE && !MTK_MEMORY_LOWPOWER
	help
	  An internal debug kernel config for testing large memory mode.
	  To test if kernel drivers are fully compatible to large
	  memorys, we replace all GFP_HIGHUSER_MOVABLE/GFP_USER pages by
	  DMA (<= 4GB) pages. It makes all drivers have more chances
	  to allocate >= 4GB physical memory.

config MTK_ENG_BUILD
	bool "flag for MTK eng/usr build verification"
	help
	  Y means this kernel version is engineering mode and has more debugging
	  features built-in. This option is supposed to specifiy engineering or
	  user load for this build.
	  If you are not sure about this, set n

config MTK_DTBO_FEATURE
	bool "Support Device Tree Overlay"
	default y
	select BUILD_ARM_DTB_OVERLAY_IMAGE if !ARM64
	select BUILD_ARM64_DTB_OVERLAY_IMAGE if ARM64
	help
	  This allows a central DTB and overlays it dynamically.
	  An overlay can add nodes to the tree and make changes to properties
	  in the existing tree.
	  If you are not sure about this, set y

config MTK_LATE_MOUNT
	bool "Support late mount for vendor partition"
	default n
	help
	  This config disables early mount for vendor partition
	  Early mount is requested in new android version
	  OTA project will disable it to prevent exception
	  If you are not sure about this, do not set it to y

config TARGET_COPY_OUT_ODM
	bool "Support ODM partition"
	default y
	help
	  This config decide to enable odm partition
	  ODM partition is defined in new android version
	  OTA project will disable it to prevent exception
	  If you are not sure about this, do not set it to n

config EXTREME_LOW_RAM
	bool "Support the device with memory smaller than 512M"
	default n
	help
	  This config decide if device memory < 512M
	  For 512M device, it has many low mem shrinking mechanism
	  Normal project will disable it first
	  If you are not sure about this, do not set it to y

config MTK_LDVT
	bool "LDVT"
	help
	  Support LDVT or not

config MTK_BOUNCING_CHECK
	bool "Enable bouncing buffer check"
	default n
	help
	  In order to avoid misusing the DMA_MASK, an auto-check detection
	  is hooked in kernel to check whether the DMA_MASK value is correct.
	  This config can only be enabled for platforms which support Large DRAM.
	  Must not be enabled for those platforms which only support 4GB DRAM.

menu "Storage: EMMC, NAND, partition..."

config MTK_SHARED_SDCARD
	bool "MTK SHARED SDCARD"
	help
	  sdcard will be a folder of /data

config MTK_GPT_SCHEME_SUPPORT
        bool "MTK GPT SCHEME SUPPORT"
	help
	  GPT is GUID Partition Table
	  MTK driver support gpt scheme layout
	  GPT is a better partition layout scheme
	  GPT is instead of PMT

source "drivers/misc/mediatek/dum-char/Kconfig"
source "drivers/misc/mediatek/nand/Kconfig"
source "drivers/misc/mediatek/partition/Kconfig"
source "drivers/misc/mediatek/pidmap/Kconfig"

endmenu  # Storage

menu "Power, PMIC, Battery & Low Power related configs"

config MTK_BASE_POWER
	bool

config MTK_POWER_GS
	bool

config MTK_MEMORY_LOWPOWER
	bool "Support Mediatek memory lowpower technology"
	depends on CMA && ZONE_MOVABLE_CMA
	default n
	help
	  Mediatek DRAM low power technology.
	  It tries to safe DRAM power by switching
	  different DRAM mode dynamically. It's a
	  platform-dependent feature.

config MTK_DCS
	bool "Support Mediatek DDRPHY DCS mechanism"
	depends on MTK_MEMORY_LOWPOWER
	default n
	help
	  Mediatek DDRPHY DCS mechanism.
	  It tries to turn off free DDRPHY's power/clock.
	  This can help system reduce power consumption.
	  It is based on MTK_MEMORY_LOWPOWER technology.

config MTK_PASR
	bool "Support Mediatek DRAM PASR mechanism"
	depends on MTK_MEMORY_LOWPOWER && (MTK_EMI || MTK_EMI_MPU) && MTK_DRAMC
	default n
	help
	  Mediatek DRAM PASR mechanism.
	  It tries to turn off free DRAM segment's self-refresh.
	  This can help system reduce power consumption.
	  It is based on MTK_MEMORY_LOWPOWER technology.

config MTK_PERIODIC_DATA_COLLECTION
	bool "Support Mediatek memory lowpower technology"
	depends on MTK_MEMORY_LOWPOWER
	default n
	help
	  Mediatek DRAM low power technology.
	  It tries to compact memory periodically and
	  to create a unused contiguous memory. The
	  DRAM can enter low power state if it is idle.

source "drivers/misc/mediatek/base/power/Kconfig"
source "drivers/misc/mediatek/freqhopping/Kconfig"
source "drivers/misc/mediatek/pmic/Kconfig"
source "drivers/misc/mediatek/pmic_wrap/Kconfig"
source "drivers/misc/mediatek/power/Kconfig"
source "drivers/misc/mediatek/thermal/Kconfig"

endmenu  # Power

menu "MultiMedia, Display, Camera related configs"

config CUSTOM_KERNEL_IMGSENSOR
	string "Custom image sensor driver"
	help
	  Kernel space image sensor driver. Define  project used all image
	  sensors .The value is combination of CUSTOM_KERNEL_MAIN_IMGSENSOR,
	  CUSTOM_KERNEL_MAIN_BACKUP_IMGSENSOR, CUSTOM_KERNEL_SUB_IMGSENSOR,
	  and CUSTOM_KERNEL_SUB_BACKUP_IMGSENSOR

config CUSTOM_KERNEL_CAM_CAL_DRV
	string "Camera calibration driver"
	help
	  Kernel space camera calibration driver. Define  project used cam_cal
	  driver .

config MTK_SEC_VIDEO_PATH_SUPPORT
	bool "Enable MTK Secure Video Path Support"
	default n
	depends on (MTK_IN_HOUSE_TEE_SUPPORT) || (TRUSTONIC_TEE_SUPPORT) || (TRUSTY) || (MICROTRUST_TEE_SUPPORT)
	help
	  This enable MTK Secure Video Path Support.
	  depending on
	  MTK In-House TEE Support
	  or Trustonic TEE Support

config MTK_TEE_GP_SUPPORT
	bool "Enable MTK GlobalPlatform support in TEE related modules"
	default n
	depends on (TRUSTONIC_TEE_SUPPORT) || (MICROTRUST_TEE_SUPPORT)
	help
	  GlobalPlatform defines common/consistent APIs and this option
	  enables TEE related modules to use GPAPIs. (depending on
	  Trustonic TEE Support or Microtrust TEE Support or Google Trusty
	  TEE or other 3rd-party TEE)

config MTK_DRM_KEY_MNG_SUPPORT
	bool "Enable MTK DRM Key Manager Support"
	depends on (MTK_IN_HOUSE_TEE_SUPPORT) || (TRUSTONIC_TEE_SUPPORT) || (TRUSTY) || (MICROTRUST_TEE_SUPPORT)
	help
	  This enable MTK DRM Key Manager Support.
	  depending on
	  MTK In-House TEE Support
	  or Trustonic TEE Support

config MTK_LCM_PHYSICAL_ROTATION_HW
	bool "Rotate LCM display for 180 degree using HW"
	help
	  Rotate LCM display for 180 degree using mediatek hardware engine
	  Enable it when LCM hardware is intalled upside down,
	  and you need to rotate the display content to adapting.

source "drivers/misc/mediatek/cameraisp/Kconfig"
source "drivers/misc/mediatek/cam_cal/Kconfig"
source "drivers/misc/mediatek/cmdq/Kconfig"
source "drivers/misc/mediatek/cqdma/Kconfig"
source "drivers/misc/mediatek/ext_disp/Kconfig"
source "drivers/misc/mediatek/flashlight/Kconfig"
source "drivers/misc/mediatek/flashlight/richtek/Kconfig"
source "drivers/misc/mediatek/ccu/src/Kconfig"
source "drivers/misc/mediatek/gpu/Kconfig"
source "drivers/misc/mediatek/hdmi/Kconfig"
source "drivers/misc/mediatek/imgsensor/Kconfig"
source "drivers/misc/mediatek/jpeg/Kconfig"
source "drivers/misc/mediatek/lcm/Kconfig"
source "drivers/misc/mediatek/lens/Kconfig"
source "drivers/misc/mediatek/fde_aes/Kconfig"
source "drivers/misc/mediatek/mmp/Kconfig"
#source "drivers/misc/mediatek/multibridge/Kconfig"
#source "drivers/misc/mediatek/rrc/Kconfig"
source "drivers/misc/mediatek/trusted_mem/Kconfig"
source "drivers/misc/mediatek/sync/Kconfig"
source "drivers/misc/mediatek/videocodec/Kconfig"
source "drivers/misc/mediatek/video/Kconfig"
source "drivers/misc/mediatek/vpu/Kconfig"
source "drivers/misc/mediatek/dfrc/Kconfig"

config MTK_CAM_SECURITY_SUPPORT
	bool "Secure Camera Infrastructure Support"
	default n
	help
	  This is an option for MTK secure camera infrastructure.
	  It provides hardware-based security that guarantees the data integrity
	  form image sensor, ISP DMA port access to secure memory.
	  If you are not sure about this, do not set it to y.

endmenu  # MM

menu "Sensors"

config MTK_SENSOR_SUPPORT
	bool "MTK_SENSOR_SUPPORT"
	help
	  sensor config to sensor port sensor feature in project.

config MTK_SENSORS_1_0
	bool "MTK SENSORs driver 1.0 SUPPORT"
	help
	  This is an option for MTK SENSOR 1.0 driver.
	  we use BIO architecture instead of linux input
	  architecture, BIO means boost io transfer data
	  between kernel space and user space.
	  And we support loadble drivers

source "drivers/misc/mediatek/sensors-1.0/Kconfig"

endmenu  # Sensors


menu "Modem & Connectivity related configs"

#source "drivers/misc/mediatek/btcvsd/Kconfig"
source "drivers/misc/mediatek/btif/Kconfig"
source "drivers/misc/mediatek/ccci_util/Kconfig"
source "drivers/misc/mediatek/ccmni/Kconfig"
source "drivers/misc/mediatek/connectivity/Kconfig"
source "drivers/misc/mediatek/conn_md/Kconfig"
#source "drivers/misc/mediatek/dual_ccci/Kconfig"
source "drivers/misc/mediatek/eccci/Kconfig"
source "drivers/misc/mediatek/nfc/Kconfig"
#source "drivers/misc/mediatek/ssw/Kconfig"
source "drivers/misc/mediatek/aw9523/Kconfig"
source "drivers/misc/mediatek/aw9524/Kconfig"

config MTK_VOLTE_SUPPORT
	bool
	default n
	depends on !CRYPTO_NULL || !CRYPTO_SHA512 || !CRYPTO_XCBC || !CRYPTO_CTR
	help
	  dummy option for dependency check.if MTK_VOLTE_SUPPORT is set,
	  CRYPTO_NULL && CRYPTO_SHA512 && CRYPTO_XCBC are not set, build error will happen.
	  CRYPTO_NULL && CRYPTO_SHA512 && CRYPTO_XCBC are set, build error will be fixed; when
	  MTK_VOLTE_SUPPORT is not set, there is no error whatever CRYPTO_NULL or CRYPTO_SHA512
	  or CRYPTO_XCBC are set or not

config MTK_EPDG_SUPPORT
	bool
	default n
	depends on !XFRM_USER || !XFRM_SUB_POLICY
	help
	  dummy option for dependency check.if MTK_EPDG_SUPPORT is set,
	  XFRM_USER && XFRM_SUB_POLICY  are not set, build error will happen.  XFRM_USER &&
	  XFRM_SUB_POLICY are set, build error will be fixed; when MTK_EPDG_SUPPORT is not
	  set, there is no error whatever XFRM_USER && XFRM_SUB_POLICY  are set or not


endmenu  # CONN

menu "Other Peripherals"

source "drivers/misc/mediatek/accdet/Kconfig"
source "drivers/misc/mediatek/auxadc/Kconfig"
source "drivers/misc/mediatek/cirq/Kconfig"
source "drivers/misc/mediatek/debug_latch/Kconfig"
source "drivers/misc/mediatek/debug_tracer/Kconfig"
source "drivers/misc/mediatek/devapc/Kconfig"
source "drivers/misc/mediatek/trng/Kconfig"
source "drivers/misc/mediatek/dfd/Kconfig"
source "drivers/misc/mediatek/dramc/Kconfig"
source "drivers/misc/mediatek/dxcc/Kconfig"
source "drivers/misc/mediatek/emi/Kconfig"
source "drivers/misc/mediatek/emi_bwl/Kconfig"
source "drivers/misc/mediatek/emi_mbw/Kconfig"
source "drivers/misc/mediatek/emi_mpu/Kconfig"
source "drivers/misc/mediatek/ext_gic/Kconfig"
source "drivers/misc/mediatek/gpio/Kconfig"
#source "drivers/misc/mediatek/gpt/Kconfig"
#source "drivers/misc/mediatek/i2c/Kconfig"
source "drivers/misc/mediatek/ir_learning/Kconfig"
source "drivers/misc/mediatek/irtx/Kconfig"
source "drivers/misc/mediatek/leds/Kconfig"
source "drivers/misc/mediatek/m4u/Kconfig"
#source "drivers/misc/mediatek/md32/Kconfig"
source "drivers/misc/mediatek/mu3d/Kconfig"
source "drivers/misc/mediatek/mu3phy/Kconfig"
source "drivers/misc/mediatek/pseudo_m4u/Kconfig"
source "drivers/misc/mediatek/pwm/Kconfig"
source "drivers/misc/mediatek/rtc/Kconfig"
source "drivers/misc/mediatek/scp/Kconfig"
source "drivers/misc/mediatek/audio_ipi/Kconfig"
source "drivers/misc/mediatek/sspm/Kconfig"
source "drivers/misc/mediatek/smi/Kconfig"
source "drivers/misc/mediatek/ssusb/Kconfig"
source "drivers/misc/mediatek/systracker/Kconfig"
source "drivers/misc/mediatek/uart/Kconfig"
source "drivers/misc/mediatek/usb11/Kconfig"
source "drivers/misc/mediatek/usb20/Kconfig"
source "drivers/misc/mediatek/usb2jtag/Kconfig"
source "drivers/misc/mediatek/usb_c/Kconfig"
source "drivers/misc/mediatek/vibrator/Kconfig"
source "drivers/misc/mediatek/xhci/Kconfig"
source "drivers/misc/mediatek/pcie_ut/Kconfig"


endmenu  # Peripheral

menu "Performance, Power, and Thermal"

config GATOR
	tristate "Gator module for ARM's Streamline Performance Analyzer"
	default m if (ARM || ARM64)
	depends on PROFILING
	depends on HIGH_RES_TIMERS
	depends on LOCAL_TIMERS || !(ARM && SMP)
	depends on PERF_EVENTS
	depends on HW_PERF_EVENTS || !(ARM || ARM64)
	select TRACING
	help
	  Gator module for ARM's Streamline Performance Analyzer

config MTK_FPSGO
	bool "Support FPSGO framework"
	default n
	depends on MTK_ACAO_SUPPORT
	help
	  Support FPSGO framework for UX & Gaming FPS performance and
	  low power balance. As a perquisite to ensure FPS performance,
	  FPSGO persuades lowest power consumption for better DoU
	  endurance and gaming experience.
	  If you are not sure about this, set n.

config MTK_FPSGO_FBT_GAME
	bool "Support FPSGO Frame Budget Tuner for Game"
	default n
	depends on MTK_FPSGO
	help
	  Support FPSGO Frame Budget Tuner for Gaming FPS performance
	  and low power balance. FBT is designated to achieve on-time
	  rendering through manipulation of CPU frequencies.
	  If you are not sure about this, set n.

config MTK_FPSGO_FBT_UX
	bool "Support FPSGO Frame Budget Tuner for UX"
	default n
	depends on MTK_FPSGO
	help
	  Support FPSGO Frame Budget Tuner for UX FPS performance and
	  and low power balance. FBT is designated to achieve on-time
	  rendering through manipulation of CPU frequencies.
	  If you are not sure about this, set n.

config MTK_FPSGO_FSTB
	bool "Support FPSGO FPS STBailizer"
	default n
	depends on MTK_FPSGO
	help
	  Support FPSGO FPS stabilizer for FPS performance and low
	  power balance.
	  If you are not sure about this, set n.

config MTK_FPSGO_MULTI_STAGE_RESCUE
	bool "Support FPSGO FBT multi-stage rescuer"
	default n
	depends on MTK_FPSGO
	help
	  Support FPSGO FBT milti-stage boost rescuer.
	  If you are not sure about this, set n.

endmenu  # PPT

menu "Misc configs"

config MTK_MEM
	bool "Support platform memory information"
	default y
	help
	  MTK_MEM provides basic platform memory information
	  for mediatek platform drivers. It also provides
	  some debug features. Please see
	  MTK_MEMCFG.

config MTK_MEMCFG
	bool "Support enhanced memory configurations"
	depends on MTK_MEM
	help
	  MTK_MEMCFG provides debug features such as
	  platform memory layout information and
	  fragmentation test tools. The features
	  cost additional memory.

config MTK_CACHE_DUMP
	bool "enable cache dump"
	depends on MTK_MEM
	default y
	help
	  Enable cache dump feature. When undef instrunction occurred,
	  we need to check cache data is correct or not. This will use
	  cpu op code to dump tag, data in current l1 cache. AEE will
	  store this data in db file after reboot.

config MTK_CACHE_FLUSH_RANGE_PARALLEL
	bool "Enable cache flush by range in parallel"
	depends on MTK_IRQ_NEW_DESIGN
	help
	  This mediatek feature is to accelerate the cache flush by range operation
	  with parallel flushing support. Cache flush module issues smp_function_call
	  to all the online CPUs except the one has largest affinity value, which
	  services IRQs rather than participating cache flushing procesure.

config MTK_SVP
	bool "Support Mediatek Shareable Secure Video Playback technology"
	depends on CMA
	default y if (ARM || ARM64)
	help
	  Mediatek Shareable SVP technology.
	  It tries to save memory by switching
	  different DRAM mode dynamically. It's a
	  platform-dependent feature.

config MTK_SVP_RAM_SIZE
	int "MTK SVP RAM dram buffer size in MB"
	depends on MTK_SVP
	default 0

config MTK_TUI_RAM_SIZE
	int "MTK TUI SVP RAM dram buffer size in MB"
	depends on MTK_SVP
	default 0

config MTK_AB_OTA_UPDATER
	bool "Support Android A/B system updates"
	default n

config MTK_GROUP_ENABLE_VERITY
	bool "Support enable dm verity for grouped switch"
	default y
	select BLK_DEV_MD
	select MD_LINEAR
	select DM_ANDROID_VERITY
	select KEYS
	select INTEGRITY_SIGNATURES
	select INTEGRITY_ASYMMETRIC_KEYS
	select SYSTEM_TRUSTED_KEYRING
	select DM_VERITY
	select X509_CERTIFICATE_PARSER
	select PUBLIC_KEY_ALGO_RSA
	select ASYMMETRIC_KEY_TYPE
	select ASYMMETRIC_PUBLIC_KEY_SUBTYPE

config SYSTEM_AS_ROOT
	bool "Support system-as-root, which merges ramdisk into system image"
	default y

source "drivers/misc/mediatek/aee/Kconfig"
source "drivers/misc/mediatek/atf_log/Kconfig"
source "drivers/misc/mediatek/boot/Kconfig"
source "drivers/misc/mediatek/boot_reason/Kconfig"
source "drivers/misc/mediatek/blocktag/Kconfig"
source "drivers/misc/mediatek/chip/Kconfig"

config MTK_CPU_STRESS
	bool "MTK cpu stress pattern"
	default n
	help
	  This is an option for MTK internal cpu_stress pattern.
	  Run test patterns to stress CPU functionality.
	  Internal project will enable it to stress CPU.
	  If you are not sure about this, do not set it to y.

#source "drivers/misc/mediatek/devinfo/Kconfig"
#source "drivers/misc/mediatek/dynamic_boost/Kconfig"
source "drivers/misc/mediatek/exm/Kconfig"
source "drivers/misc/mediatek/gud/Kconfig"
source "drivers/misc/mediatek/ice_debug/Kconfig"
source "drivers/misc/mediatek/log_store/Kconfig"
source "drivers/misc/mediatek/masp/Kconfig"
source "drivers/misc/mediatek/mlog/Kconfig"
source "drivers/misc/mediatek/mtee/Kconfig"
source "drivers/misc/mediatek/mtprintk/Kconfig"
source "drivers/misc/mediatek/mtprof/Kconfig"
source "drivers/misc/mediatek/performance/Kconfig"
source "drivers/misc/mediatek/ram_console/Kconfig"
source "drivers/misc/mediatek/sched/Kconfig"
source "drivers/misc/mediatek/selinux_warning/Kconfig"
source "drivers/misc/mediatek/sysenv/Kconfig"
#
source "drivers/misc/mediatek/teei/Kconfig"
source "drivers/misc/mediatek/vow/Kconfig"
source "drivers/misc/mediatek/watchpoint/Kconfig"
source "drivers/misc/mediatek/rt-regmap/Kconfig"
source "drivers/misc/mediatek/smartpa/Kconfig"
source "drivers/misc/mediatek/reg_monitor/Kconfig"
source "drivers/misc/mediatek/iccs/Kconfig"
source "drivers/misc/mediatek/fiq_cache/Kconfig"
source "drivers/misc/mediatek/base/power/mcdi/Kconfig"
source "drivers/misc/mediatek/geniezone/Kconfig"
source "drivers/misc/mediatek/timer/Kconfig"
source "drivers/misc/mediatek/io_boost/Kconfig"
source "drivers/misc/mediatek/es_reg/Kconfig"
source "drivers/misc/mediatek/cmo/Kconfig"
source "drivers/misc/mediatek/tkcore/Kconfig"
source "drivers/misc/mediatek/Kconfig.default"

config MTK_FD_LEAK_DETECT
	bool "Enable MTK fd leak detection"
	help
	  This feature is for detecting fd leak.
	  When kernel can not alloc fd, will print error information.
	  This feature should be enbled only on Engineer load; User/Userdebug
	  load should be enabled by demand.

config MTK_FD_LEAK_SPECIFIC_DEBUG
	bool "Specific demand in fd leak debug"
	default n
	help
	  Specific demand in fd leak debug.
	  Eg,
	  For some specific processes, may need backtrace, coredump
	  and other debug information.

config MTK_DM_VERITY_OFF
	bool "Disable dm-verity"
	default n

config MTK_IRIS_SUPPORT
	bool "Biometric authentication - iris secure camera"
	default n

config MTK_DYNAMIC_LOAD_STORE_BYPASS_WA
	bool "Support Mediatek dynamic workaround for CA75 load-store-bypassing"
	default n
	help
	  Disable load-store-bypassing in user-space

endmenu    # Misc

endif
