/*
 * Copyright (c) 2018 Synopsys, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/**
 * @brief Board configuration macros for EM Starter kit board
 *
 * This header file is used to specify and describe board-level
 * aspects for the target.
 */

#ifndef _SOC__H_
#define _SOC__H_

#include <misc/util.h>

/* default system clock */
/* On the EM Starter Kit board, the peripheral bus clock frequency is 50Mhz */
#define SYSCLK_DEFAULT_IOSC_HZ			MHZ(50)

/* ARC EM Core IRQs */
#define IRQ_TIMER0				16
#define IRQ_TIMER1				17

#if defined(CONFIG_BOARD_EM_STARTERKIT_R23) && defined(CONFIG_SOC_EMSK_EM7D)
#define IRQ_SEC_TIMER0				20
#endif /* CONFIG_BOARD_EM_STARTERKIT_R23 && CONFIG_SOC_EMSK_EM7D */

#if defined(CONFIG_BOARD_EM_STARTERKIT_R23) && defined(CONFIG_SOC_EMSK_EM7D)
#define IRQ_CORE_DMA_COMPLETE			22
#define IRQ_CORE_DMA_ERROR			23
#else /* CONFIG_BOARD_EM_STARTERKIT_R23 && CONFIG_SOC_EMSK_EM7D */
#define IRQ_CORE_DMA_COMPLETE			20
#define IRQ_CORE_DMA_ERROR			21
#endif /* !(CONFIG_BOARD_EM_STARTERKIT_R23 && CONFIG_SOC_EMSK_EM7D) */


#ifndef _ASMLANGUAGE

#include <misc/util.h>
#include <random/rand32.h>

#define INT_ENABLE_ARC				~(0x00000001 << 8)
#define INT_ENABLE_ARC_BIT_POS			(8)

/*
 * UARTs: UART0 & UART1 & UART2
 */
#define DT_UART_NS16550_PORT_0_IRQ_FLAGS	0 /* Default */
#define DT_UART_NS16550_PORT_1_IRQ_FLAGS	0 /* Default */
#define DT_UART_NS16550_PORT_2_IRQ_FLAGS	0 /* Default */

#ifndef CONFIG_HAS_DTS
/* I2C */
/* I2C_0 is on Pmod2 connector */
#define DT_I2C_0_BASE_ADDR			0xF0004000
#define DT_I2C_0_IRQ_FLAGS			0

/* I2C_1 is on Pmod4 connector */
#define DT_I2C_1_BASE_ADDR			0xF0005000
#define DT_I2C_1_IRQ_FLAGS			0


/* GPIO */
#define DT_GPIO_DW_0_BASE_ADDR			0xF0002000 /* GPIO 0 : PORTA */
#define DT_GPIO_DW_0_BITS				32
#define GPIO_DW_PORT_0_INT_MASK			0 /* n/a */
#define DT_GPIO_DW_0_IRQ_FLAGS			0 /* Defaults */

#define DT_GPIO_DW_1_BASE_ADDR			0xF000200C /* GPIO 1 : PORTB */
#define DT_GPIO_DW_1_BITS				9          /* 9 LEDs on board */
#define GPIO_DW_PORT_1_INT_MASK			0 /* n/a */

#define DT_GPIO_DW_2_BASE_ADDR			0xF0002018 /* GPIO 2 : PORTC */
#define DT_GPIO_DW_2_BITS				32
#define GPIO_DW_PORT_2_INT_MASK			0 /* n/a */

#define DT_GPIO_DW_3_BASE_ADDR			0xF0002024 /* GPIO 3 : PORTD */
#define DT_GPIO_DW_3_BITS				12
#define GPIO_DW_PORT_3_INT_MASK			0 /* n/a */

/* SPI */
#define DT_SPI_DW_SPI_CLOCK			SYSCLK_DEFAULT_IOSC_HZ

#define DT_SPI_DW_IRQ_FLAGS			0

/*
 * SPI Chip Select Assignments on EM Starter Kit
 *
 *  CS0   Pmod6 - pin 1 - J6
 *  CS1   Pmod5 - pin 1 - J5 & Pmod 6 - pin 7 - J6
 *  CS2   Pmod6 - pin 8 - J6
 *  CS3   SDCard (onboard)
 *  CS4   Internal SPI Slave - loopback
 *  CS5   SPI-Flash (onboard)
 */

/**
 * Peripheral Interrupt Connection Configurations
 */
#ifdef CONFIG_BOARD_EM_STARTERKIT_R23
#define DT_GPIO_DW_0_IRQ				24
#define DT_I2C_0_IRQ			25
#define DT_I2C_1_IRQ			26
#else /* CONFIG_BOARD_EM_STARTERKIT_R23 */
#define DT_GPIO_DW_0_IRQ				22
#define DT_I2C_0_IRQ			23
#define DT_I2C_1_IRQ			24
#endif /* !CONFIG_BOARD_EM_STARTERKIT_R23 */

#define DT_GPIO_DW_1_IRQ				0	/* can't interrupt */
#define DT_GPIO_DW_2_IRQ				0	/* can't interrupt */
#define DT_GPIO_DW_3_IRQ				0	/* can't interrupt */

#endif /* CONFIG_HAS_DTS */

#endif /* !_ASMLANGUAGE */

#endif /* _SOC__H_ */
