# NPCX I3C driver configuration options

# Copyright (c) 2024 Nuvoton Technology Corporation.
# SPDX-License-Identifier: Apache-2.0

DT_I3C_NPCX := $(dt_nodelabel_path,i3c0)

config I3C_NPCX
	bool "Nuvoton NPCX embedded controller (EC) I3C driver"
	depends on DT_HAS_NUVOTON_NPCX_I3C_ENABLED
	select RESET
	select I3C_IBI_WORKQUEUE if I3C_USE_IBI
	select PINCTRL
	default y
	help
	  This option enables the I3C driver for NPCX family of
	  processors.
	  Say y if you wish to use I3C channels on NPCX MCU.

# Expose this option when the 'reg' property includes the MDMA base address
# as the second group in the phandle-array.
# i.e. I3C node example in dtsi file.
# i3c0: i3c@400f0000 {
#	....
#	/* reg[0]: I3C_1 register, reg[1]: MDMA5 register */
#	reg-names = "i3c1", "mdma5";
#	reg = <0x400f0000 0x2000>,
#	      <0x40011500 0x100>;
#  	....
# }
config I3C_NPCX_DMA
	bool "Nuvoton NPCX embedded controller (EC) serial driver DMA support"
	depends on I3C_NPCX && "$(dt_node_reg_addr_hex,$(DT_I3C_NPCX),1)" != 0
	default y
	help
	  Enable support for npcx I3C DMA mode.
