# Kconfig - Atmel SAM I2S bus driver configuration options
#
# Copyright (c) 2017 Piotr Mienkowski
#
# SPDX-License-Identifier: Apache-2.0
#

menuconfig I2S_SAM_SSC
	bool "Atmel SAM MCU family I2S (SSC) Bus Driver"
	depends on SOC_FAMILY_SAM
	select DMA
	default n
	help
	Enable Inter Sound (I2S) bus driver for Atmel SAM MCU family based on
	Synchronous Serial Controller (SSC) module.

if I2S_SAM_SSC

config I2S_SAM_SSC_RX_BLOCK_COUNT
	int "RX queue length"
	default 4

config I2S_SAM_SSC_TX_BLOCK_COUNT
	int "TX queue length"
	default 4

config I2S_SAM_SSC_0_NAME
	string "I2S 0 device name"
	default "I2S_0"

config I2S_SAM_SSC_0_IRQ_PRI
	int "Interrupt priority"
	default 0

config I2S_SAM_SSC_DMA_NAME
	string "DMA device name"
	default "DMA_0"
	help
	  Name of the DMA device this device driver can use.

config I2S_SAM_SSC_0_DMA_RX_CHANNEL
	int "DMA RX channel"
	help
	  DMA channel number to use for RX transfers.

config I2S_SAM_SSC_0_DMA_TX_CHANNEL
	int "DMA TX channel"
	help
	  DMA channel number to use for TX transfers.

choice I2S_SAM_SSC_0_PIN_TD_SELECT
	prompt "TD pin"
	depends on SOC_SERIES_SAME70

	config I2S_SAM_SSC_0_PIN_TD_PB5
		bool "PB5"

	config I2S_SAM_SSC_0_PIN_TD_PD10
		bool "PD10"

	config I2S_SAM_SSC_0_PIN_TD_PD26
		bool "PD26"

endchoice # I2S_SAM_SSC_0_PIN_TD_SELECT

config I2S_SAM_SSC_0_PIN_RF_EN
	bool "RF pin enabled"
	default y
	help
	  If enabled RF signal is connected to RF pin. It will be configured as
	  an output or an input depending on whether the receiver is working
	  in master or slave mode.

	  If disabled RF signal is disconnected from RF pin and connected
	  internally to TF (Transmitter Frame Synchro signal).

config I2S_SAM_SSC_0_PIN_RK_EN
	bool "RK pin enabled"
	default y
	help
	  If enabled RK signal is connected to RK pin. It will be configured as
	  an output or an input depending on whether the receiver is working
	  in master or slave mode.

	  If disabled RK signal is disconnected from RK pin and connected
	  internally to TK (Transmitter Clock signal).

endif # I2S_SAM_SSC
