mbed-os/targets/TARGET_Samsung/TARGET_SIDK_S5JS100/device/s5js100.h

652 lines
32 KiB
C

/****************************************************************************
*
* Copyright 2020 Samsung Electronics All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific
* language governing permissions and limitations under the License.
*
****************************************************************************/
#ifndef S5JS100_H
#define S5JS100_H
#ifdef __cplusplus
extern "C" {
#endif
/* ------------------------- Interrupt Number Definition ------------------------ */
#define S5JS100_IRQ_FIRST (16) /* Vector number of the first external interrupt */
typedef enum IRQn {
/* ------------------- Cortex-M7 Processor Exceptions Numbers ------------------- */
NonMaskableInt_IRQn = -14, /* 2 Non Maskable Interrupt */
HardFault_IRQn = -13, /* 3 HardFault Interrupt */
MemoryManagement_IRQn = -12, /* 4 Memory Management Interrupt */
BusFault_IRQn = -11, /* 5 Bus Fault Interrupt */
UsageFault_IRQn = -10, /* 6 Usage Fault Interrupt */
SVCall_IRQn = -5, /* 11 SV Call Interrupt */
DebugMonitor_IRQn = -4, /* 12 Debug Monitor Interrupt */
PendSV_IRQn = -2, /* 14 Pend SV Interrupt */
SysTick_IRQn = -1, /* 15 System Tick Interrupt */
/* --------------------- S5JS100 Specific Interrupt Numbers ---------------- */
S5JS100_IRQ_WDG = 0,
S5JS100_IRQ_PMU_ApTimer = 1,
S5JS100_IRQ_PMU_AlivePad = 2,
S5JS100_IRQ_PMU_JtagInt = 3,
S5JS100_IRQ_SSS_SSSINT = 4,
S5JS100_IRQ_SSS_MBINT = 5,
S5JS100_IRQ_SSS_KMINT = 6,
S5JS100_IRQ_DMACINTR = 7,
S5JS100_IRQ_SDIO_INTREQ_L = 8,
S5JS100_IRQ_TINT0 = 9,
S5JS100_IRQ_TINT1 = 10,
S5JS100_IRQ_TINT2 = 11,
S5JS100_IRQ_TINT3 = 12,
S5JS100_IRQ_TINT4 = 13,
S5JS100_IRQ_TINT5 = 14,
S5JS100_IRQ_GPIO_INTR0 = 15,
S5JS100_IRQ_GPIO_INTR1 = 16,
S5JS100_IRQ_GPIO_INTR2 = 17,
S5JS100_IRQ_USI0 = 18,
S5JS100_IRQ_USI1 = 19,
S5JS100_IRQ_SPI = 20,
S5JS100_IRQ_I2C = 21,
S5JS100_IRQ_PWM_INT0 = 22,
S5JS100_IRQ_PWM_INT1 = 23,
S5JS100_IRQ_PWM_INT2 = 24,
S5JS100_IRQ_PWM_INT3 = 25,
S5JS100_IRQ_PWM_INT4 = 26,
S5JS100_IRQ_PPMU = 27,
S5JS100_IRQ_EFUSE_WR = 28,
S5JS100_IRQ_CM7_CTT_0 = 29,
S5JS100_IRQ_CM7_CTT_1 = 30,
S5JS100_IRQ_MAILBOX_AP_INT = 31,
S5JS100_IRQ_UART0 = 32,
S5JS100_IRQ_UART1 = 33,
S5JS100_IRQ_GPADC = 34,
S5JS100_IRQ_MCPU_WDT = 35,
S5JS100_IRQ_SSS_INT1 = 36,
S5JS100_IRQ_SSS_INT2 = 37,
S5JS100_IRQ_SSS_RESET = 38,
S5JS100_IRQ_SLEEP = 39,
S5JS100_IRQ_TSU0 = 40,
S5JS100_IRQ_TSU1 = 41,
} IRQn_Type;
/* ================================================================================ */
/* ================ Processor and Core Peripheral Section ================ */
/* ================================================================================ */
/* -------- Configuration of the Cortex-M7 Processor and Core Peripherals ------- */
#define __CM7_REV 0x0201U /* Core revision r2p1 */
#define __MPU_PRESENT 1 /* MPU present */
#define __DCACHE_PRESENT 1 /* 32KB d-cache */
#define __ICACHE_PRESENT 1 /* 32KB I-cache */
#define __VTOR_PRESENT 1 /* VTOR present or not */
#define __NVIC_PRIO_BITS 3 /* Number of Bits used for Priority Levels */
#define __Vendor_SysTickConfig 0 /* Set to 1 if different SysTick Config is used */
#include <core_cm7.h> /* Processor and core peripherals */
#include "system_s5js100.h" /* System Header */
/* ================================================================================ */
/* ================ Device Specific Peripheral Section ================ */
/* ================================================================================ */
/* ------------------- Start of section using anonymous unions ------------------ */
#if defined ( __CC_ARM )
#pragma push
#pragma anon_unions
#elif defined(__ICCARM__)
#pragma language=extended
#elif defined(__GNUC__)
/* anonymous unions are enabled by default */
#elif defined(__TMS470__)
/* anonymous unions are enabled by default */
#elif defined(__TASKING__)
#pragma warning 586
#else
#warning Not supported compiler type
#endif
/*------------- Universal Asynchronous Receiver Transmitter (USI_UART) -----------*/
typedef struct {
__IO uint32_t ULCON; /* Offset : 0x000 (R/W) Line Control Register */
__IO uint32_t UCON; /* Offset: 0x004 (R/W) Control Register */
__IO uint32_t UFCON; /* Offset: 0x008 (R/W) FIFO Control Register */
__IO uint32_t UMCON; /* Offset: 0x00C (R/W) Modem Control Register */
__IO uint32_t UTRSTAT; /* Offset: 0x010 (R/W) Tx/Rx Status Register */
__IO uint32_t UERSTAT; /* Offset: 0x014 (R) Rx Error Status Register */
__IO uint32_t UFSTAT; /* Offset: 0x018 (R) FIFO Status Register */
__IO uint32_t UMSTAT; /* Offset: 0x01C (R) Modem Status Register */
__IO uint32_t UTXH; /* Offset: 0x020 (W) Transmit Buffer Register */
__IO uint32_t URXH; /* Offset: 0x024 (R) Receive Buffer Register */
__IO uint32_t UBRDIV; /* Offset: 0x028 (R/W) Baud Rate Divisor Register */
__IO uint32_t UFRACVAL; /* Offset: 0x02C (R/W) Divisor Fractional value Register */
__IO uint32_t UINTP; /* Offset: 0x030 (R/W) Interrupt Pending Register */
__IO uint32_t UINTS; /* Offset: 0x034 (R) Interrupt Source Register */
__IO uint32_t UINTM; /* Offset: 0x038 (R/W) Interrupt Mask Register */
__IO uint32_t RESERVED0[1];
__IO uint32_t UFTL_CONF; /* Offset: 0x040 (R/W) Filter Configuration Register */
} S5JS100_USI_UART_TypeDef;
/*------------- Universal Asynchronous Receiver Transmitter (UART) -----------*/
typedef struct {
__IO uint32_t DR; // 0x0000
__IO uint32_t SR; // 0x0004
__IO uint32_t RESERVED0[4]; // 0x008~0x014
__IO uint32_t FR; // 0x018
__IO uint32_t RESERVED1; // 0x01c
__IO uint32_t ILPR; // 0x020
__IO uint32_t IBRD; // 0x024
__IO uint32_t FBRD; // 0x028
__IO uint32_t LCRH; // 0x02c
__IO uint32_t CR; // 0x030
__IO uint32_t IFLS; // 0x034
__IO uint32_t IMSC; // 0x038
__IO uint32_t RIS; // 0x03C
__IO uint32_t MIS; // 0x040
__IO uint32_t ICR; // 0x044
__IO uint32_t DMACR; // 0x048
__IO uint32_t MODESEL; // 0x04C
} S5JS100_UART_TypeDef;
/* S5JS100 DATA Register Definitions */
/* Line Control register ****************************************************/
#define UART_ULCON_SAMPLING_SHIFT 7
#define UART_ULCON_SAMPLING_MASK (0x1 << UART_ULCON_SAMPLING_SHIFT)
#define UART_ULCON_SAMPLING_16 (0x0 << UART_ULCON_SAMPLING_SHIFT)
#define UART_ULCON_SAMPLING_8 (0x1 << UART_ULCON_SAMPLING_SHIFT)
#define UART_ULCON_INFRARED_SHIFT 6
#define UART_ULCON_INFRARED_MASK (0x1 << UART_ULCON_INFRARED_SHIFT)
#define UART_ULCON_INFRARED_NORMAL (0x0 << UART_ULCON_INFRARED_SHIFT)
#define UART_ULCON_INFRARED_IRTXRX (0x1 << UART_ULCON_INFRARED_SHIFT)
#define UART_ULCON_PARITY_SHIFT 5
#define UART_ULCON_PARITY_MASK (0x7 << UART_ULCON_PARITY_SHIFT)
#define UART_ULCON_PARITY_NONE (0x0 << UART_ULCON_PARITY_SHIFT)
#define UART_ULCON_PARITY_ODD (0x4 << UART_ULCON_PARITY_SHIFT)
#define UART_ULCON_PARITY_EVEN (0x5 << UART_ULCON_PARITY_SHIFT)
#define UART_ULCON_PARITY_FORCE1 (0x6 << UART_ULCON_PARITY_SHIFT)
#define UART_ULCON_PARITY_FORCE0 (0x7 << UART_ULCON_PARITY_SHIFT)
#define UART_ULCON_STOPBITS_SHIFT 2
#define UART_ULCON_STOPBITS_MASK (0x1 << UART_ULCON_STOPBITS_SHIFT)
#define UART_ULCON_STOPBITS_1BIT (0x0 << UART_ULCON_STOPBITS_SHIFT)
#define UART_ULCON_STOPBITS_2BITS (0x1 << UART_ULCON_STOPBITS_SHIFT)
#define UART_ULCON_DATABITS_SHIFT 0
#define UART_ULCON_DATABITS_MASK (0x3 << UART_ULCON_DATABITS_SHIFT)
#define UART_ULCON_DATABITS_5BITS (0x0 << UART_ULCON_DATABITS_SHIFT)
#define UART_ULCON_DATABITS_6BITS (0x1 << UART_ULCON_DATABITS_SHIFT)
#define UART_ULCON_DATABITS_7BITS (0x2 << UART_ULCON_DATABITS_SHIFT)
#define UART_ULCON_DATABITS_8BITS (0x3 << UART_ULCON_DATABITS_SHIFT)
/* Control register *********************************************************/
#define UART_UCON_TX_DMA_BURST_SHIFT 20
#define UART_UCON_TX_DMA_BURST_MASK (0x7 << UART_UCON_TX_DMA_BURST_SHIFT)
#define UART_UCON_TX_DMA_BURST_1BYTE (0x0 << UART_UCON_TX_DMA_BURST_SHIFT)
#define UART_UCON_TX_DMA_BURST_4BYTES (0x1 << UART_UCON_TX_DMA_BURST_SHIFT)
#define UART_UCON_TX_DMA_BURST_8BYTES (0x2 << UART_UCON_TX_DMA_BURST_SHIFT)
#define UART_UCON_RX_DMA_BURST_SHIFT 16
#define UART_UCON_RX_DMA_BURST_MASK (0x7 << UART_UCON_RX_DMA_BURST_SHIFT)
#define UART_UCON_RX_DMA_BURST_1BYTE (0x0 << UART_UCON_RX_DMA_BURST_SHIFT)
#define UART_UCON_RX_DMA_BURST_4BYTES (0x1 << UART_UCON_RX_DMA_BURST_SHIFT)
#define UART_UCON_RX_DMA_BURST_8BYTES (0x2 << UART_UCON_RX_DMA_BURST_SHIFT)
#define UART_UCON_RX_DMA_BURST_16BYTES (0x3 << UART_UCON_RX_DMA_BURST_SHIFT)
#define UART_UCON_RX_TOUT_SHIFT 12
#define UART_UCON_RX_TOUT_MASK (0x7 << UART_UCON_RX_TOUT_SHIFT)
#define UART_UCON_RX_TOUT_8FRAMES (0x0 << UART_UCON_RX_TOUT_SHIFT)
#define UART_UCON_RX_TOUT_16FRAMES (0x1 << UART_UCON_RX_TOUT_SHIFT)
#define UART_UCON_RX_TOUT_24FRAMES (0x2 << UART_UCON_RX_TOUT_SHIFT)
#define UART_UCON_RX_TOUT_32FRAMES (0x3 << UART_UCON_RX_TOUT_SHIFT)
#define UART_UCON_RX_TOUT_40FRAMES (0x4 << UART_UCON_RX_TOUT_SHIFT)
#define UART_UCON_RX_TOUT_48FRAMES (0x5 << UART_UCON_RX_TOUT_SHIFT)
#define UART_UCON_RX_TOUT_56FRAMES (0x6 << UART_UCON_RX_TOUT_SHIFT)
#define UART_UCON_RX_TOUT_64FRAMES (0x7 << UART_UCON_RX_TOUT_SHIFT)
#define UART_UCON_RX_FIFO_EMPTY_SHIFT 11
#define UART_UCON_RX_FIFO_EMPTY_MASK (0x1 << UART_UCON_RX_FIFO_EMPTY_SHIFT)
#define UART_UCON_RX_FIFO_EMPTY_DISABLE (0x0 << UART_UCON_RX_FIFO_EMPTY_SHIFT)
#define UART_UCON_RX_FIFO_EMPTY_ENABLE (0x1 << UART_UCON_RX_FIFO_EMPTY_SHIFT)
#define UART_UCON_RX_TOUT_DMAS_SHIFT 10
#define UART_UCON_RX_TOUT_DMAS_MASK (0x1 << UART_UCON_RX_TOUT_DMAS_SHIFT)
#define UART_UCON_RX_TOUT_DMAS_DISABLE (0x0 << UART_UCON_RX_TOUT_DMAS_SHIFT)
#define UART_UCON_RX_TOUT_DMAS_ENABLE (0x1 << UART_UCON_RX_TOUT_DMAS_SHIFT)
#define UART_UCON_TX_INTTYPE_SHIFT 9
#define UART_UCON_TX_INTTYPE_MASK (UART_UCON_TX_INTTYPE_SHIFT)
#define UART_UCON_TX_INTTYPE_PULSE (0x0 << UART_UCON_TX_INTTYPE_SHIFT)
#define UART_UCON_TX_INTTYPE_LEVEL (0x1 << UART_UCON_TX_INTTYPE_SHIFT)
#define UART_UCON_RX_INTTYPE_SHIFT 8
#define UART_UCON_RX_INTTYPE_MASK (UART_UCON_RX_INTTYPE_SHIFT)
#define UART_UCON_RX_INTTYPE_PULSE (0x0 << UART_UCON_RX_INTTYPE_SHIFT)
#define UART_UCON_RX_INTTYPE_LEVEL (0x1 << UART_UCON_RX_INTTYPE_SHIFT)
#define UART_UCON_RX_TOUTINT_SHIFT 7
#define UART_UCON_RX_TOUTINT_MASK (0x1 << UART_UCON_RX_TOUTINT_SHIFT)
#define UART_UCON_RX_TOUTINT_DISABLE (0x0 << UART_UCON_RX_TOUTINT_SHIFT)
#define UART_UCON_RX_TOUTINT_ENABLE (0x1 << UART_UCON_RX_TOUTINT_SHIFT)
#define UART_UCON_RX_ERRINT_SHIFT 6
#define UART_UCON_RX_ERRINT_MASK (0x1 << UART_UCON_RX_ERRINT_SHIFT)
#define UART_UCON_RX_ERRINT_DISABLE (0x0 << UART_UCON_RX_ERRINT_SHIFT)
#define UART_UCON_RX_ERRINT_ENABLE (0x1 << UART_UCON_RX_ERRINT_SHIFT)
#define UART_UCON_LOOPBACK_SHIFT 5
#define UART_UCON_LOOPBACK_MASK (0x1 << UART_UCON_LOOPBACK_SHIFT)
#define UART_UCON_LOOPBACK_DISABLE (0x0 << UART_UCON_LOOPBACK_SHIFT)
#define UART_UCON_LOOPBACK_ENABLE (0x1 << UART_UCON_LOOPBACK_SHIFT)
#define UART_UCON_SEND_BREAK_SHIFT 4
#define UART_UCON_SEND_BREAK (0x1 << UART_UCON_SEND_BREAK_SHIFT)
#define UART_UCON_TX_MODE_SHIFT 2
#define UART_UCON_TX_MODE_MASK (0x3 << UART_UCON_TX_MODE_SHIFT)
#define UART_UCON_TX_MODE_DISABLE (0x0 << UART_UCON_TX_MODE_SHIFT)
#define UART_UCON_TX_MODE_IRQPOLL (0x1 << UART_UCON_TX_MODE_SHIFT)
#define UART_UCON_TX_MODE_DMA (0x2 << UART_UCON_TX_MODE_SHIFT)
#define UART_UCON_TX_MODE_RESERVED (0x3 << UART_UCON_TX_MODE_SHIFT)
#define UART_UCON_RX_MODE_SHIFT 0
#define UART_UCON_RX_MODE_MASK (0x3 << UART_UCON_RX_MODE_SHIFT)
#define UART_UCON_RX_MODE_DISABLE (0x0 << UART_UCON_RX_MODE_SHIFT)
#define UART_UCON_RX_MODE_IRQPOLL (0x1 << UART_UCON_RX_MODE_SHIFT)
#define UART_UCON_RX_MODE_DMA (0x2 << UART_UCON_RX_MODE_SHIFT)
#define UART_UCON_RX_MODE_RESERVED (0x3 << UART_UCON_RX_MODE_SHIFT)
/* FIFO Control register ****************************************************/
#define UART_UFCON_TX_FIFO_TRIG_SHIFT 8
#define UART_UFCON_TX_FIFO_TRIG_MASK (0x7 << UART_UFCON_TX_FIFO_TRIG_SHIFT)
#define UART_UFCON_TX_FIFO_TRIG_0BYTE (0x0 << UART_UFCON_TX_FIFO_TRIG_SHIFT)
#define UART_UFCON_TX_FIFO_TRIG_2BYTES (0x1 << UART_UFCON_TX_FIFO_TRIG_SHIFT)
#define UART_UFCON_TX_FIFO_TRIG_4BYTES (0x2 << UART_UFCON_TX_FIFO_TRIG_SHIFT)
#define UART_UFCON_TX_FIFO_TRIG_6BYTES (0x3 << UART_UFCON_TX_FIFO_TRIG_SHIFT)
#define UART_UFCON_TX_FIFO_TRIG_8BYTES (0x4 << UART_UFCON_TX_FIFO_TRIG_SHIFT)
#define UART_UFCON_TX_FIFO_TRIG_10BYTES (0x4 << UART_UFCON_TX_FIFO_TRIG_SHIFT)
#define UART_UFCON_TX_FIFO_TRIG_12BYTES (0x5 << UART_UFCON_TX_FIFO_TRIG_SHIFT)
#define UART_UFCON_TX_FIFO_TRIG_14BYTES (0x6 << UART_UFCON_TX_FIFO_TRIG_SHIFT)
#define UART_UFCON_RX_FIFO_TRIG_SHIFT 4
#define UART_UFCON_RX_FIFO_TRIG_MASK (0x7 << UART_UFCON_RX_FIFO_TRIG_SHIFT)
#define UART_UFCON_RX_FIFO_TRIG_0BYTE (0x0 << UART_UFCON_RX_FIFO_TRIG_SHIFT)
#define UART_UFCON_RX_FIFO_TRIG_2BYTES (0x1 << UART_UFCON_RX_FIFO_TRIG_SHIFT)
#define UART_UFCON_RX_FIFO_TRIG_4BYTES (0x2 << UART_UFCON_RX_FIFO_TRIG_SHIFT)
#define UART_UFCON_RX_FIFO_TRIG_6BYTES (0x3 << UART_UFCON_RX_FIFO_TRIG_SHIFT)
#define UART_UFCON_RX_FIFO_TRIG_8BYTES (0x4 << UART_UFCON_RX_FIFO_TRIG_SHIFT)
#define UART_UFCON_RX_FIFO_TRIG_10BYTES (0x4 << UART_UFCON_RX_FIFO_TRIG_SHIFT)
#define UART_UFCON_RX_FIFO_TRIG_12BYTES (0x5 << UART_UFCON_RX_FIFO_TRIG_SHIFT)
#define UART_UFCON_RX_FIFO_TRIG_14BYTES (0x6 << UART_UFCON_RX_FIFO_TRIG_SHIFT)
#define UART_UFCON_TX_FIFO_RESET_SHIFT 2
#define UART_UFCON_TX_FIFO_RESET (0x1 << UART_UFCON_TX_FIFO_RESET_SHIFT)
#define UART_UFCON_RX_FIFO_RESET_SHIFT 1
#define UART_UFCON_RX_FIFO_RESET (0x1 << UART_UFCON_RX_FIFO_RESET_SHIFT)
#define UART_UFCON_FIFO_SHIFT 0
#define UART_UFCON_FIFO_MASK (0x1 << UART_UFCON_FIFO_SHIFT)
#define UART_UFCON_FIFO_DISABLE (0x0 << UART_UFCON_FIFO_SHIFT)
#define UART_UFCON_FIFO_ENABLE (0x1 << UART_UFCON_FIFO_SHIFT)
/* Modem Control register ***************************************************/
#define UART_UMCON_RTS_TRIG_SHIFT 5
#define UART_UMCON_RTS_TRIG_MASK (0x7 << UART_UMCON_RTS_TRIG_SHIFT)
#define UART_UMCON_RTS_TRIG_15BYTES (0x0 << UART_UMCON_RTS_TRIG_SHIFT)
#define UART_UMCON_RTS_TRIG_14BYTES (0x1 << UART_UMCON_RTS_TRIG_SHIFT)
#define UART_UMCON_RTS_TRIG_12BYTES (0x2 << UART_UMCON_RTS_TRIG_SHIFT)
#define UART_UMCON_RTS_TRIG_10BYTES (0x3 << UART_UMCON_RTS_TRIG_SHIFT)
#define UART_UMCON_RTS_TRIG_8BYTES (0x4 << UART_UMCON_RTS_TRIG_SHIFT)
#define UART_UMCON_RTS_TRIG_6BYTES (0x5 << UART_UMCON_RTS_TRIG_SHIFT)
#define UART_UMCON_RTS_TRIG_4BYTES (0x6 << UART_UMCON_RTS_TRIG_SHIFT)
#define UART_UMCON_RTS_TRIG_2BYTES (0x7 << UART_UMCON_RTS_TRIG_SHIFT)
#define UART_UMCON_AFC_SHIFT 4
#define UART_UMCON_AFC_MASK (0x1 << UART_UMCON_AFC_SHIFT)
#define UART_UMCON_AFC_DISABLE (0x0 << UART_UMCON_AFC_SHIFT)
#define UART_UMCON_AFC_ENABLE (0x1 << UART_UMCON_AFC_SHIFT)
#define UART_UMCON_MODEM_INT_SHIFT 3
#define UART_UMCON_MODEM_INT_MASK (0x1 << UART_UMCON_MODEM_INT_SHIFT)
#define UART_UMCON_MODEM_INT_DISABLE (0x0 << UART_UMCON_MODEM_INT_SHIFT)
#define UART_UMCON_MODEM_INT_ENABLE (0x1 << UART_UMCON_MODEM_INT_SHIFT)
#define UART_UMCON_REQ_TO_SEND_SHIFT 0
#define UART_UMCON_REQ_TO_SEND_MASK (0x1 << UART_UMCON_REQ_TO_SEND_SHIFT)
#define UART_UMCON_REQ_TO_SEND_HIGH (0x0 << UART_UMCON_REQ_TO_SEND_SHIFT)
#define UART_UMCON_REQ_TO_SEND_LOW (0x1 << UART_UMCON_REQ_TO_SEND_SHIFT)
/* Tx/Rx Status register ****************************************************/
#define UART_UTRSTAT_RX_FIFO_CNT_SHIFT 16
#define UART_UTRSTAT_RX_FIFO_CNT_MASK (0xff << UART_UTRSTAT_RXFIFO_CNT_SHIFT)
#define UART_UTRSTAT_TX_DMA_SHIFT 12
#define UART_UTRSTAT_TX_DMA_MASK (0xf << UART_UTRSTAT_TX_DMA_SHIFT)
#define UART_UTRSTAT_TX_DMA_IDLE (0x0 << UART_UTRSTAT_TX_DMA_SHIFT)
#define UART_UTRSTAT_TX_DMA_BURST_REQ (0x1 << UART_UTRSTAT_TX_DMA_SHIFT)
#define UART_UTRSTAT_TX_DMA_BURST_ACK (0x2 << UART_UTRSTAT_TX_DMA_SHIFT)
#define UART_UTRSTAT_TX_DMA_BURST_NEXT (0x3 << UART_UTRSTAT_TX_DMA_SHIFT)
#define UART_UTRSTAT_TX_DMA_SINGLE_REQ (0x4 << UART_UTRSTAT_TX_DMA_SHIFT)
#define UART_UTRSTAT_TX_DMA_SINGLE_ACK (0x5 << UART_UTRSTAT_TX_DMA_SHIFT)
#define UART_UTRSTAT_TX_DMA_SINGLE_NEXT (0x6 << UART_UTRSTAT_TX_DMA_SHIFT)
#define UART_UTRSTAT_TX_DMA_LBURST_REQ (0x7 << UART_UTRSTAT_TX_DMA_SHIFT)
#define UART_UTRSTAT_TX_DMA_LBURST_ACK (0x8 << UART_UTRSTAT_TX_DMA_SHIFT)
#define UART_UTRSTAT_TX_DMA_LSINGLE_REQ (0x9 << UART_UTRSTAT_TX_DMA_SHIFT)
#define UART_UTRSTAT_TX_DMA_LSINGLE_ACK (0xa << UART_UTRSTAT_TX_DMA_SHIFT)
#define UART_UTRSTAT_RX_DMA_SHIFT 8
#define UART_UTRSTAT_RX_DMA_MASK (0xf << UART_UTRSTAT_RX_DMA_SHIFT)
#define UART_UTRSTAT_RX_DMA_IDLE (0x0 << UART_UTRSTAT_RX_DMA_SHIFT)
#define UART_UTRSTAT_RX_DMA_BURST_REQ (0x1 << UART_UTRSTAT_RX_DMA_SHIFT)
#define UART_UTRSTAT_RX_DMA_BURST_ACK (0x2 << UART_UTRSTAT_RX_DMA_SHIFT)
#define UART_UTRSTAT_RX_DMA_BURST_NEXT (0x3 << UART_UTRSTAT_RX_DMA_SHIFT)
#define UART_UTRSTAT_RX_DMA_SINGLE_REQ (0x4 << UART_UTRSTAT_RX_DMA_SHIFT)
#define UART_UTRSTAT_RX_DMA_SINGLE_ACK (0x5 << UART_UTRSTAT_RX_DMA_SHIFT)
#define UART_UTRSTAT_RX_DMA_SINGLE_NEXT (0x6 << UART_UTRSTAT_RX_DMA_SHIFT)
#define UART_UTRSTAT_RX_DMA_LBURST_REQ (0x7 << UART_UTRSTAT_RX_DMA_SHIFT)
#define UART_UTRSTAT_RX_DMA_LBURST_ACK (0x8 << UART_UTRSTAT_RX_DMA_SHIFT)
#define UART_UTRSTAT_RX_DMA_LSINGLE_REQ (0x9 << UART_UTRSTAT_RX_DMA_SHIFT)
#define UART_UTRSTAT_RX_DMA_LSINGLE_ACK (0xa << UART_UTRSTAT_RX_DMA_SHIFT)
#define UART_UTRSTAT_RX_TOUT_SHIFT 3
#define UART_UTRSTAT_RX_TOUT_MASK (0x1 << UART_UTRSTAT_RX_TOUT_SHIFT)
#define UART_UTRSTAT_RX_TOUT_NONE (0x0 << UART_UTRSTAT_RX_TOUT_SHIFT)
#define UART_UTRSTAT_RX_TOUT_TIMEOUT (0x1 << UART_UTRSTAT_RX_TOUT_SHIFT)
#define UART_UTRSTAT_TX_SHIFT 2
#define UART_UTRSTAT_TX_MASK (0x1 << UART_UTRSTAT_TX_SHIFT)
#define UART_UTRSTAT_TX_NOT_EMPTY (0x0 << UART_UTRSTAT_TX_SHIFT)
#define UART_UTRSTAT_TX_EMPTY (0x1 << UART_UTRSTAT_TX_SHIFT)
#define UART_UTRSTAT_TX_BUF_SHIFT 1
#define UART_UTRSTAT_TX_BUF_MASK (0x1 << UART_UTRSTAT_TX_BUF_SHIFT)
#define UART_UTRSTAT_TX_BUF_NOT_EMPTY (0x0 << UART_UTRSTAT_TX_BUF_SHIFT)
#define UART_UTRSTAT_TX_BUF_EMPTY (0x1 << UART_UTRSTAT_TX_BUF_SHIFT)
#define UART_UTRSTAT_RX_BUF_SHIFT 0
#define UART_UTRSTAT_RX_BUF_MASK (0x1 << UART_UTRSTAT_RX_BUF_SHIFT)
#define UART_UTRSTAT_RX_BUF_NOT_EMPTY (0x1 << UART_UTRSTAT_RX_BUF_SHIFT)
#define UART_UTRSTAT_RX_BUF_EMPTY (0x0 << UART_UTRSTAT_RX_BUF_SHIFT)
/* Rx Error Status register *************************************************/
#define UART_UERSTAT_BREAK_DETECT 0x8
#define UART_UERSTAT_FRAME_ERROR 0x4
#define UART_UERSTAT_PARITY_ERROR 0x2
#define UART_UERSTAT_OVERRUN_ERROR 0x1
/* FIFO status register *****************************************************/
#define UART_UFSTAT_TX_FIFO_FULL_SHIFT 24
#define UART_UFSTAT_TX_FIFO_FULL_MASK (0x1 << UART_UFSTAT_TX_FIFO_FULL_SHIFT)
#define UART_UFSTAT_TX_FIFO_FULL (0x1 << UART_UFSTAT_TX_FIFO_FULL_SHIFT)
#define UART_UFSTAT_TX_FIFO_COUNT_SHIFT 16
#define UART_UFSTAT_TX_FIFO_COUNT_MASK (0xff << UART_UFSTAT_TX_FIFO_COUNT_SHIFT)
#define UART_UFSTAT_RX_FIFO_ERROR_SHIFT 9
#define UART_UFSTAT_RX_FIFO_ERROR_MASK (0x1 << UART_UFSTAT_RX_FIFO_ERROR_SHIFT)
#define UART_UFSTAT_RX_FIFO_ERROR (0x1 << UART_UFSTAT_RX_FIFO_ERROR_SHIFT)
#define UART_UFSTAT_RX_FIFO_FULL_SHIFT 8
#define UART_UFSTAT_RX_FIFO_FULL_MASK (0x1 << UART_UFSTAT_RX_FIFO_FULL_SHIFT)
#define UART_UFSTAT_RX_FIFO_FULL (0x1 << UART_UFSTAT_RX_FIFO_FULL_SHIFT)
#define UART_UFSTAT_RX_FIFO_COUNT_SHIFT 0
#define UART_UFSTAT_RX_FIFO_COUNT_MASK (0xff << UART_UFSTAT_RX_FIFO_COUNT_SHIFT)
/* Modem Status register ****************************************************/
#define UART_UMSTAT_DELTA_CTS_SHIFT 4
#define UART_UMSTAT_DELTA_CTS_MASK (0x1 << UART_UMSTAT_DELTA_CTS_SHIFT)
#define UART_UMSTAT_DELTA_CTS_NOCHANGE (0x0 << UART_UMSTAT_DELTA_CTS_SHIFT)
#define UART_UMSTAT_DELTA_CTS_CHANGED (0x1 << UART_UMSTAT_DELTA_CTS_SHIFT)
#define UART_UMSTAT_NCTS_SHIFT 0
#define UART_UMSTAT_NCTS_MASK (0x1 << UART_UMSTAT_NCTS_SHIFT)
#define UART_UMSTAT_NCTS_HIGH (0x0 << UART_UMSTAT_NCTS_SHIFT)
#define UART_UMSTAT_NCTS_LOW (0x1 << UART_UMSTAT_NCTS_SHIFT)
/* INterrupt Pending register ***********************************************/
#define UART_UINTP_MODEM_SHIFT 3
#define UART_UINTP_MODEM_MASK (0x1 << UART_UINTP_MODEM_SHIFT)
#define UART_UINTP_MODEM (0x1 << UART_UINTP_MODEM_SHIFT)
#define UART_UINTP_TXD_SHIFT 2
#define UART_UINTP_TXD_MASK (0x1 << UART_UINTP_TXD_SHIFT)
#define UART_UINTP_TXD (0x1 << UART_UINTP_TXD_SHIFT)
#define UART_UINTP_ERROR_SHIFT 1
#define UART_UINTP_ERROR_MASK (0x1 << UART_UINTP_ERROR_SHIFT)
#define UART_UINTP_ERROR (0x1 << UART_UINTP_ERROR_SHIFT)
#define UART_UINTP_RXD_SHIFT 0
#define UART_UINTP_RXD_MASK (0x1 << UART_UINTP_RXD_SHIFT)
#define UART_UINTP_RXD (0x1 << UART_UINTP_RXD_SHIFT)
/* Interrupt Source register ************************************************/
#define UART_UINTS_MODEM_SHIFT 3
#define UART_UINTS_MODEM_MASK (0x1 << UART_UINTS_MODEM_SHIFT)
#define UART_UINTS_MODEM (0x1 << UART_UINTS_MODEM_SHIFT)
#define UART_UINTS_TXD_SHIFT 2
#define UART_UINTS_TXD_MASK (0x1 << UART_UINTS_TXD_SHIFT)
#define UART_UINTS_TXD (0x1 << UART_UINTS_TXD_SHIFT)
#define UART_UINTS_ERROR_SHIFT 1
#define UART_UINTS_ERROR_MASK (0x1 << UART_UINTS_ERROR_SHIFT)
#define UART_UINTS_ERROR (0x1 << UART_UINTS_ERROR_SHIFT)
#define UART_UINTS_RXD_SHIFT 0
#define UART_UINTS_RXD_MASK (0x1 << UART_UINTS_RXD_SHIFT)
#define UART_UINTS_RXD (0x1 << UART_UINTS_RXD_SHIFT)
/* Interrupt Mask register **************************************************/
#define UART_UINTM_MODEM_SHIFT 3
#define UART_UINTM_MODEM_MASK (0x1 << UART_UINTM_MODEM_SHIFT)
#define UART_UINTM_TXD_SHIFT 2
#define UART_UINTM_TXD_MASK (0x1 << UART_UINTM_TXD_SHIFT)
#define UART_UINTM_ERROR_SHIFT 1
#define UART_UINTM_ERROR_MASK (0x1 << UART_UINTM_ERROR_SHIFT)
#define UART_UINTM_RXD_SHIFT 0
#define UART_UINTM_RXD_MASK (0x1 << UART_UINTM_RXD_SHIFT)
/*----------------------------- S5JS100 ATimer (TIMER) -------------------------------*/
typedef struct {
__IO uint32_t LOAD_VALUE; /* 0x0 */
__IO uint32_t CTRL; /* 0x4 */
__IO uint32_t LOAD_CON_VALUE; /* 0x8 */
__IO uint32_t INT_STATUS; /* 0xC */
__IO uint32_t INT_CLEAR; /* 0x10 */
__IO uint32_t INT_ENABLE; /* 0x14 */
__IO uint32_t RSVD3; /* 0x18 */
__IO uint32_t RSVD4; /* 0x1C */
__IO uint32_t RSVD5; /* 0x20 */
__IO uint32_t RSVD6; /* 0x24 */
__IO uint32_t RSVD7; /* 0x28 */
__IO uint32_t RSVD8; /* 0x2C */
__IO uint32_t RSVD9; /* 0x30 */
__IO uint32_t CNT_VALUE; /* 0x34 */
__IO uint32_t RSVD10; /* 0x38 */
__IO uint32_t RSVD11; /* 0x3C */
} S5JS100_TIMER_TypeDef;
/*----------------------------- S5JS100 USI (UART/SPI/I2C) -------------------------------*/
typedef struct {
__IO uint32_t CONFIG; // 0x0000
__IO uint32_t CON; // 0x0004
__IO uint32_t OPTION; // 0x008~0x014
__IO uint32_t VERSION; // 0x018
__IO uint32_t UART_VERSION; // 0x01c
__IO uint32_t SPI_VERSION; // 0x020
__IO uint32_t I2C_VERSION; // 0x024
__IO uint32_t FIFO_DEPTH; // 0x028
} S5JS100_USI_TypeDef;
#define USI_CONFIG_UART 1
#define USI_CONFIG_SPI 2
#define USI_CONFIG_I2C 4
#define USI_CON_RST 1
#define USI_OPTION_MASTER 1
#define USI_OPTION_HWACG(x) ((0x3 & (x)) << 1)
#define USI_VERSION_HW(x) ((x) & 0xFF)
#define USI_VERSION_SW(x) (((x) >> 8) & 0xFF)
#define USI_VERSION_UART(x) (((x) >> 16) & 1)
#define USI_VERSION_SPI(x) (((x) >> 17) & 1)
#define USI_VERSION_USI(x) (((x) >> 24) & 0xFF)
#define USI_TXFIFO(x) (((x) >> 16) & 0x1FF)
#define USI_RXFIFO(x) ((x) & 0x1FF)
/*-------------------- General Purpose Input Output (GPIO) -------------------*/
/*------------------- Watchdog ----------------------------------------------*/
/* -------------------- End of section using anonymous unions ------------------- */
#if defined ( __CC_ARM )
#pragma pop
#elif defined(__ICCARM__)
/* leave anonymous unions enabled */
#elif defined(__GNUC__)
/* anonymous unions are enabled by default */
#elif defined(__TMS470__)
/* anonymous unions are enabled by default */
#elif defined(__TASKING__)
#pragma warning restore
#else
#warning Not supported compiler type
#endif
/* ================================================================================ */
/* ================ Peripheral memory map ================ */
/* ================================================================================ */
/* Peripheral and SRAM base address */
#define S5JS100_FLASH_BASE 0x00000000
#define S5JS100_TIMER0_BASE 0x83012000
#define S5JS100_TIMER1_BASE 0x83012100
#define S5JS100_USI0_BASE 0x83014000
#define S5JS100_USI1_BASE 0x83015000
#define S5JS100_ACPU_SFR_PADDR 0x80000000
#define S5JS100_MCPU_ROM 0x80140000
#define S5JS100_MCPU_Debug 0x80150000
#define S5JS100_MCPU_CTI 0x80158000
#define S5JS100_PMU_ALIVE 0x81000000
#define S5JS100_SCMU 0x82000000
#define S5JS100_EFUSE 0x82010000
#define S5JS100_PMU_SYS 0x82020000
#define S5JS100_REG_PAD_CONTROL 0x82021000
#define S5JS100_ACMU 0x83000000
#define S5JS100_WDT_BASE 0x83011000
#define S5JS100_ATIMER 0x83012000
#define S5JS100_SDIOC 0x83020000
#define S5JS100_USI0 0x83014000
#define S5JS100_USI1 0x83015000
#define S5JS100_SPI 0x83016000
#define S5JS100_I2C 0x83017000
#define S5JS100_PWM 0x83018000
#define S5JS100_SSS_SS 0x83100000
#define S5JS100_SSS_MB 0x83110000
#define S5JS100_SSS_KM 0x83120000
#define S5JS100_PUF 0x83130000
#define S5JS100_PDMAC 0x83200000
#define S5JS100_ACPU_BUS_GPV 0x83300000
#define S5JS100_PPMU_ACPU 0x83400000
#define S5JS100_MCMU 0x84000000
#define S5JS100_MWDOG 0x84010000
#define S5JS100_MTIMER 0x84011000
#define S5JS100_NBSLEEP 0x84012000
#define S5JS100_USIM 0x84013000
#define S5JS100_GIC_DST 0x84100000
#define S5JS100_GIC_CPU 0x84101000
#define S5JS100_MDMAC 0x84200000
#define S5JS100_MCPU_BUS_GPV 0x84300000
#define S5JS100_MCPU_BUS_CFG 0x84400000
#define S5JS100_BUS_MONITOR 0x84401000
#define S5JS100_PPMU_MCPU 0x84410000
#define S5JS100_MIFCMU 0x85000000
#define S5JS100_BAAW 0x85010000
#define S5JS100_QSPI_SFR 0x85020000
#define S5JS100_GPADCIF0 0x85021000
#define S5JS100_GPADCIF1 0x85022000
#define S5JS100_MAILBOX 0x85023000
#define S5JS100_UART0_BASE 0x85024000
#define S5JS100_UART1_BASE 0x85025000
#define S5JS100_GPIO_BASE 0x85026000
#define S5JS100_PPMU_MCPU2MIF 0x85030000
#define S5JS100_SYS_CFG 0x85040000
#define S5JS100_MIF_BUS_GPV 0x85300000
#define S5JS100_PPMU_ACPU2MIF 0x85400000
#define S5JS100_RFIP 0x86000000
#define S5JS100_DCXO_CFG 0x87000000
#define S5JS100_MCPU2GNSS0 0x88000000
#define S5JS100_MCPU2GNSS1 0xC0000000
#define S5JS100_NB_MDM00 0xDC000000
#define S5JS100_NB_MDM01 0xDC400000
#define S5JS100_NB_MDM02 0xDC800000
#define S5JS100_NB_MDM03 0xDCC00000
#define S5JS100_NB_MDM04 0xDD000000
#define S5JS100_NB_MDM05 0xDD400000
#define S5JS100_NB_MDM06 0xDD800000
#define S5JS100_NB_MDM07 0xDDC00000
#define S5JS100_NB_MDM08 0xDE000000
#define S5JS100_NB_MDM09 0xDE400000
#define S5JS100_NB_MDM10 0xDE800000
#define S5JS100_NB_MDM11 0xDEC00000
#define S5JS100_NB_MDM12 0xDF000000
#define S5JS100_NB_MDM13 0xDF400000
#define S5JS100_ACPU_CM7_PERI 0xE0000000
#define S5JS100_BOOTMEM_MIRROR 0xFFFF0000
/* ================================================================================ */
/* ================ Peripheral declaration ================ */
/* ================================================================================ */
#define S5JS100_USI0_UART ((S5JS100_USI_UART_TypeDef *) S5JS100_USI0_BASE )
#define S5JS100_USI1_UART ((S5JS100_USI_UART_TypeDef *) S5JS100_USI1_BASE )
#define S5JS100_UART0 ((S5JS100_UART_TypeDef *) S5JS100_UART0_BASE )
#define S5JS100_UART1 ((S5JS100_UART_TypeDef *) S5JS100_UART1_BASE )
#define S5JS100_TIMER0 ((S5JS100_TIMER_TypeDef *) S5JS100_TIMER0_BASE )
#define S5JS100_TIMER1 ((S5JS100_TIMER_TypeDef *) S5JS100_TIMER1_BASE )
#define S5JS100_USI0_REG ((S5JS100_USI_TypeDef *) (S5JS100_USI0 + 0xC0))
#define S5JS100_USI1_REG ((S5JS100_USI_TypeDef *) (S5JS100_USI1 + 0xC0))
#define S5JS100_SYSCFG_USI0_CONF (*(uint32_t *)(S5JS100_SYS_CFG + 0x1030))
#define S5JS100_SYSCFG_USI0_IPCLK (*(uint32_t *)(S5JS100_SYS_CFG + 0x1034))
#define S5JS100_SYSCFG_USI1_CONF (*(uint32_t *)(S5JS100_SYS_CFG + 0x1038))
#define S5JS100_SYSCFG_USI1_IPCLK (*(uint32_t *)(S5JS100_SYS_CFG + 0x103C))
/*********************************************************************
* GPIO 2 / 3 BIT FEILD POS, OUTPUTS
*************************************************************************/
#ifdef __cplusplus
}
#endif
#endif /* S5JS100_H */