
if BOARD_GALILEO

config BOARD
        default galileo

config PINMUX
        def_bool y

config I2C
	def_bool y

config GPIO
	def_bool y

config PWM
	def_bool y

config SPI
	def_bool y

config ADC
	def_bool y

config SHARED_IRQ
	def_bool y

if PINMUX

config PINMUX_GALILEO_EXP0_NAME
        default GPIO_PCAL9535A_0_DEV_NAME
config PINMUX_GALILEO_EXP1_NAME
        default GPIO_PCAL9535A_1_DEV_NAME
config PINMUX_GALILEO_EXP2_NAME
        default GPIO_PCAL9535A_2_DEV_NAME
config PINMUX_GALILEO_PWM0_NAME
        default PWM_PCA9685_0_DEV_NAME
config PINMUX_GALILEO_GPIO_DW_NAME
	default GPIO_DW_0_NAME
config PINMUX_GALILEO_GPIO_INTEL_CW_NAME
	default GPIO_SCH_0_DEV_NAME
config PINMUX_GALILEO_GPIO_INTEL_RW_NAME
	default GPIO_SCH_1_DEV_NAME

endif # PINMUX

if ADC

config ADC_TI_ADC108S102
	def_bool y

if ADC_TI_ADC108S102

config ADC_TI_ADC108S102_SPI_PORT_NAME
	default "SPI0"
config ADC_TI_ADC108S102_SPI_CONFIGURATION
	default 0x81
config ADC_TI_ADC108S102_SPI_MAX_FREQ
	default 0x20000000

endif # ADC_TI_AC108S102

endif # ADC

if GPIO && I2C

config GPIO_PCAL9535A
	def_bool y

if GPIO_PCAL9535A

config GPIO_PCAL9535A_0
	def_bool y

if GPIO_PCAL9535A_0

config GPIO_PCAL9535A_0_DEV_NAME
	default "EXP0"
config GPIO_PCAL9535A_0_I2C_ADDR
	default 0x25
config GPIO_PCAL9535A_0_I2C_MASTER_DEV_NAME
	default I2C_DW_0_NAME

endif # GPIO_PCAL9535A_0

config GPIO_PCAL9535A_1
	def_bool y

if GPIO_PCAL9535A_1

config GPIO_PCAL9535A_1_DEV_NAME
	default "EXP1"
config GPIO_PCAL9535A_1_I2C_ADDR
	default 0x26
config GPIO_PCAL9535A_1_I2C_MASTER_DEV_NAME
	default I2C_DW_0_NAME

endif # GPIO_PCAL9535A_1

config GPIO_PCAL9535A_2
	def_bool y

if GPIO_PCAL9535A_2

config GPIO_PCAL9535A_2_DEV_NAME
	default "EXP2"
config GPIO_PCAL9535A_2_I2C_ADDR
	default 0x27
config GPIO_PCAL9535A_2_I2C_MASTER_DEV_NAME
	default I2C_DW_0_NAME

endif # GPIO_PCAL9535A_2

endif # GPIO_PCAL9535A

endif # GPIO && I2C

if PWM && I2C

config PWM_PCA9685
	def_bool y

if PWM_PCA9685

config PWM_PCA9685_0
	def_bool y

if PWM_PCA9685_0

config PWM_PCA9685_0_DEV_NAME
	default "PWM0"
config PWM_PCA9685_0_I2C_ADDR
	default 0x47
config PWM_PCA9685_0_I2C_MASTER_DEV_NAME
	default I2C_DW_0_NAME

endif # PWM_PCA9685_0
endif # PWM_PCA9685
endif # PWM && I2C

# SPI uses GPIO pin for CS, so it needs to be initialized after
# the gpio_dw driver
config SPI_INTEL_INIT_PRIORITY
	default 70 if SPI_INTEL

# Pin multiplexer uses PCAL9535A, needs to be initialized after it
config PINMUX_INIT_PRIORITY
	default 80 if PINMUX

endif # BOARD_GALILEO
