# I3C configuration options
#
# Copyright (c) 2022 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0

menuconfig I3C
	bool "I3C Drivers"
	help
	  Enable I3C Driver Configuration

if I3C

module = I3C
module-str = i3c
source "subsys/logging/Kconfig.template.log_config"

config I3C_USE_GROUP_ADDR
	bool "Use Group Addresses"
	default y
	help
	  Enable this to use group addresses if supported
	  by the controllers and target devices.

	  Says Y if unsure.

menuconfig I3C_USE_IBI
	bool "Use In-Band Interrupt (IBI)"
	default y
	help
	  Enable this to use In-Band Interrupt (IBI).

	  Says Y if unsure.

if I3C_USE_IBI

config I3C_IBI_MAX_PAYLOAD_SIZE
	int "Maximum IBI Payload Size"
	default 16
	help
	  Maxmium IBI payload size.

menuconfig I3C_IBI_WORKQUEUE
	bool "Use IBI Workqueue"
	help
	  Use global workqueue for processing IBI.

	  This is enabled by driver if needed.

if I3C_IBI_WORKQUEUE

config I3C_IBI_WORKQUEUE_STACK_SIZE
	int "IBI workqueue stack size"
	default 1024
	help
	  Stack size for the IBI global workqueue.

config I3C_IBI_WORKQUEUE_PRIORITY
	int "IBI workqueue thread priority"
	default -1
	help
	  Thread priority for the IBI global workqueue.

config I3C_IBI_WORKQUEUE_LENGTH
	int "IBI workqueue queue length"
	default 8
	help
	  Define the maximum number of IBIs that can be
	  queued in the workqueue.

config I3C_IBI_WORKQUEUE_VERBOSE_DEBUG
	bool "Verbose debug messages for IBI workqueue"
	help
	  This turns on verbose debug for the IBI workqueue
	  when logging level is set to DEBUG, and prints
	  the IBI payload.

endif # I3C_IBI_WORKQUEUE

endif # I3C_USE_IBI

comment "Initialization Priority"

config I3C_CONTROLLER_INIT_PRIORITY
	int "I3C Controller Init Priority"
	# Default is just after CONFIG_KERNEL_INIT_PRIORITY_DEVICE
	default 50
	help
	  This is for setting up I3C controller device driver instance
	  and also to perform bus initialization (e.g. dynamic address
	  assignment).

	  Note that this needs to be done before the device driver
	  instances of the connected I2C and I3C devices start
	  initializing those devices. This is because some devices
	  may not be addressable until addresses are assigned by
	  the controller.

comment "Device Drivers"

rsource "Kconfig.nxp"

endif # I3C
