cc y / mbed

Fork of mbed by mbed official

Committer:
Kojto
Date:
Fri Oct 02 07:35:07 2015 +0200
Revision:
108:34e6b704fe68
Release 108  of the mbed library

Changes:
- new platforms - ELMO_F411RE, WIZNET_7500P, ARM_MPS2_BEID
- EFM32 - bugfixes in rtc, serial
- Cortex A cmsis - update files
- STML4 - RAM fixes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kojto 108:34e6b704fe68 1 /*
Kojto 108:34e6b704fe68 2 * Copyright:
Kojto 108:34e6b704fe68 3 * ----------------------------------------------------------------
Kojto 108:34e6b704fe68 4 * This confidential and proprietary software may be used only as
Kojto 108:34e6b704fe68 5 * authorised by a licensing agreement from ARM Limited
Kojto 108:34e6b704fe68 6 * (C) COPYRIGHT 2014 ARM Limited
Kojto 108:34e6b704fe68 7 * ALL RIGHTS RESERVED
Kojto 108:34e6b704fe68 8 * The entire notice above must be reproduced on all authorised
Kojto 108:34e6b704fe68 9 * copies and copies may only be made to the extent permitted
Kojto 108:34e6b704fe68 10 * by a licensing agreement from ARM Limited.
Kojto 108:34e6b704fe68 11 * ----------------------------------------------------------------
Kojto 108:34e6b704fe68 12 * File: smm_mps2.h
Kojto 108:34e6b704fe68 13 * Release: Version 1.0
Kojto 108:34e6b704fe68 14 * ----------------------------------------------------------------
Kojto 108:34e6b704fe68 15 */
Kojto 108:34e6b704fe68 16
Kojto 108:34e6b704fe68 17 #ifndef __SMM_MPS2_H
Kojto 108:34e6b704fe68 18 #define __SMM_MPS2_H
Kojto 108:34e6b704fe68 19
Kojto 108:34e6b704fe68 20 #include "peripherallink.h" /* device specific header file */
Kojto 108:34e6b704fe68 21
Kojto 108:34e6b704fe68 22 #if defined ( __CC_ARM )
Kojto 108:34e6b704fe68 23 #pragma anon_unions
Kojto 108:34e6b704fe68 24 #endif
Kojto 108:34e6b704fe68 25
Kojto 108:34e6b704fe68 26 /******************************************************************************/
Kojto 108:34e6b704fe68 27 /* FPGA System Register declaration */
Kojto 108:34e6b704fe68 28 /******************************************************************************/
Kojto 108:34e6b704fe68 29
Kojto 108:34e6b704fe68 30 typedef struct
Kojto 108:34e6b704fe68 31 {
Kojto 108:34e6b704fe68 32 __IO uint32_t LED; // Offset: 0x000 (R/W) LED connections
Kojto 108:34e6b704fe68 33 // [31:2] : Reserved
Kojto 108:34e6b704fe68 34 // [1:0] : LEDs
Kojto 108:34e6b704fe68 35 uint32_t RESERVED1[1];
Kojto 108:34e6b704fe68 36 __IO uint32_t BUTTON; // Offset: 0x008 (R/W) Buttons
Kojto 108:34e6b704fe68 37 // [31:2] : Reserved
Kojto 108:34e6b704fe68 38 // [1:0] : Buttons
Kojto 108:34e6b704fe68 39 uint32_t RESERVED2[1];
Kojto 108:34e6b704fe68 40 __IO uint32_t CLK1HZ; // Offset: 0x010 (R/W) 1Hz up counter
Kojto 108:34e6b704fe68 41 __IO uint32_t CLK100HZ; // Offset: 0x014 (R/W) 100Hz up counter
Kojto 108:34e6b704fe68 42 __IO uint32_t COUNTER; // Offset: 0x018 (R/W) Cycle Up Counter
Kojto 108:34e6b704fe68 43 // Increments when 32-bit prescale counter reach zero
Kojto 108:34e6b704fe68 44 uint32_t RESERVED3[1];
Kojto 108:34e6b704fe68 45 __IO uint32_t PRESCALE; // Offset: 0x020 (R/W) Prescaler
Kojto 108:34e6b704fe68 46 // Bit[31:0] : reload value for prescale counter
Kojto 108:34e6b704fe68 47 __IO uint32_t PSCNTR; // Offset: 0x024 (R/W) 32-bit Prescale counter
Kojto 108:34e6b704fe68 48 // current value of the pre-scaler counter
Kojto 108:34e6b704fe68 49 // The Cycle Up Counter increment when the prescale down counter reach 0
Kojto 108:34e6b704fe68 50 // The pre-scaler counter is reloaded with PRESCALE after reaching 0.
Kojto 108:34e6b704fe68 51 uint32_t RESERVED4[9];
Kojto 108:34e6b704fe68 52 __IO uint32_t MISC; // Offset: 0x04C (R/W) Misc control */
Kojto 108:34e6b704fe68 53 // [31:10] : Reserved
Kojto 108:34e6b704fe68 54 // [9] : SHIELD_1_SPI_nCS
Kojto 108:34e6b704fe68 55 // [8] : SHIELD_0_SPI_nCS
Kojto 108:34e6b704fe68 56 // [7] : ADC_SPI_nCS
Kojto 108:34e6b704fe68 57 // [6] : CLCD_BL_CTRL
Kojto 108:34e6b704fe68 58 // [5] : CLCD_RD
Kojto 108:34e6b704fe68 59 // [4] : CLCD_RS
Kojto 108:34e6b704fe68 60 // [3] : CLCD_RESET
Kojto 108:34e6b704fe68 61 // [2] : RESERVED
Kojto 108:34e6b704fe68 62 // [1] : SPI_nSS
Kojto 108:34e6b704fe68 63 // [0] : CLCD_CS
Kojto 108:34e6b704fe68 64 } MPS2_FPGAIO_TypeDef;
Kojto 108:34e6b704fe68 65
Kojto 108:34e6b704fe68 66 // MISC register bit definitions
Kojto 108:34e6b704fe68 67
Kojto 108:34e6b704fe68 68 #define CLCD_CS_Pos 0
Kojto 108:34e6b704fe68 69 #define CLCD_CS_Msk (1UL<<CLCD_CS_Pos)
Kojto 108:34e6b704fe68 70 #define SPI_nSS_Pos 1
Kojto 108:34e6b704fe68 71 #define SPI_nSS_Msk (1UL<<SPI_nSS_Pos)
Kojto 108:34e6b704fe68 72 #define CLCD_RESET_Pos 3
Kojto 108:34e6b704fe68 73 #define CLCD_RESET_Msk (1UL<<CLCD_RESET_Pos)
Kojto 108:34e6b704fe68 74 #define CLCD_RS_Pos 4
Kojto 108:34e6b704fe68 75 #define CLCD_RS_Msk (1UL<<CLCD_RS_Pos)
Kojto 108:34e6b704fe68 76 #define CLCD_RD_Pos 5
Kojto 108:34e6b704fe68 77 #define CLCD_RD_Msk (1UL<<CLCD_RD_Pos)
Kojto 108:34e6b704fe68 78 #define CLCD_BL_Pos 6
Kojto 108:34e6b704fe68 79 #define CLCD_BL_Msk (1UL<<CLCD_BL_Pos)
Kojto 108:34e6b704fe68 80 #define ADC_nCS_Pos 7
Kojto 108:34e6b704fe68 81 #define ADC_nCS_Msk (1UL<<ADC_nCS_Pos)
Kojto 108:34e6b704fe68 82 #define SHIELD_0_nCS_Pos 8
Kojto 108:34e6b704fe68 83 #define SHIELD_0_nCS_Msk (1UL<<SHIELD_0_nCS_Pos)
Kojto 108:34e6b704fe68 84 #define SHIELD_1_nCS_Pos 9
Kojto 108:34e6b704fe68 85 #define SHIELD_1_nCS_Msk (1UL<<SHIELD_1_nCS_Pos)
Kojto 108:34e6b704fe68 86
Kojto 108:34e6b704fe68 87 /******************************************************************************/
Kojto 108:34e6b704fe68 88 /* SCC Register declaration */
Kojto 108:34e6b704fe68 89 /******************************************************************************/
Kojto 108:34e6b704fe68 90
Kojto 108:34e6b704fe68 91 typedef struct //
Kojto 108:34e6b704fe68 92 {
Kojto 108:34e6b704fe68 93 __IO uint32_t CFG_REG0; // Offset: 0x000 (R/W) Remaps block RAM to ZBT
Kojto 108:34e6b704fe68 94 // [31:1] : Reserved
Kojto 108:34e6b704fe68 95 // [0] 1 : REMAP BlockRam to ZBT
Kojto 108:34e6b704fe68 96 __IO uint32_t LEDS; // Offset: 0x004 (R/W) Controls the MCC user LEDs
Kojto 108:34e6b704fe68 97 // [31:8] : Reserved
Kojto 108:34e6b704fe68 98 // [7:0] : MCC LEDs
Kojto 108:34e6b704fe68 99 uint32_t RESERVED0[1];
Kojto 108:34e6b704fe68 100 __I uint32_t SWITCHES; // Offset: 0x00C (R/ ) Denotes the state of the MCC user switches
Kojto 108:34e6b704fe68 101 // [31:8] : Reserved
Kojto 108:34e6b704fe68 102 // [7:0] : These bits indicate state of the MCC switches
Kojto 108:34e6b704fe68 103 __I uint32_t CFG_REG4; // Offset: 0x010 (R/ ) Denotes the board revision
Kojto 108:34e6b704fe68 104 // [31:4] : Reserved
Kojto 108:34e6b704fe68 105 // [3:0] : Used by the MCC to pass PCB revision. 0 = A 1 = B
Kojto 108:34e6b704fe68 106 uint32_t RESERVED1[35];
Kojto 108:34e6b704fe68 107 __IO uint32_t SYS_CFGDATA_RTN; // Offset: 0x0A0 (R/W) User data register
Kojto 108:34e6b704fe68 108 // [31:0] : Data
Kojto 108:34e6b704fe68 109 __IO uint32_t SYS_CFGDATA_OUT; // Offset: 0x0A4 (R/W) User data register
Kojto 108:34e6b704fe68 110 // [31:0] : Data
Kojto 108:34e6b704fe68 111 __IO uint32_t SYS_CFGCTRL; // Offset: 0x0A8 (R/W) Control register
Kojto 108:34e6b704fe68 112 // [31] : Start (generates interrupt on write to this bit)
Kojto 108:34e6b704fe68 113 // [30] : R/W access
Kojto 108:34e6b704fe68 114 // [29:26] : Reserved
Kojto 108:34e6b704fe68 115 // [25:20] : Function value
Kojto 108:34e6b704fe68 116 // [19:12] : Reserved
Kojto 108:34e6b704fe68 117 // [11:0] : Device (value of 0/1/2 for supported clocks)
Kojto 108:34e6b704fe68 118 __IO uint32_t SYS_CFGSTAT; // Offset: 0x0AC (R/W) Contains status information
Kojto 108:34e6b704fe68 119 // [31:2] : Reserved
Kojto 108:34e6b704fe68 120 // [1] : Error
Kojto 108:34e6b704fe68 121 // [0] : Complete
Kojto 108:34e6b704fe68 122 __IO uint32_t RESERVED2[20];
Kojto 108:34e6b704fe68 123 __IO uint32_t SCC_DLL; // Offset: 0x100 (R/W) DLL Lock Register
Kojto 108:34e6b704fe68 124 // [31:24] : DLL LOCK MASK[7:0] - Indicate if the DLL locked is masked
Kojto 108:34e6b704fe68 125 // [23:16] : DLL LOCK MASK[7:0] - Indicate if the DLLs are locked or unlocked
Kojto 108:34e6b704fe68 126 // [15:1] : Reserved
Kojto 108:34e6b704fe68 127 // [0] : This bit indicates if all enabled DLLs are locked
Kojto 108:34e6b704fe68 128 uint32_t RESERVED3[957];
Kojto 108:34e6b704fe68 129 __I uint32_t SCC_AID; // Offset: 0xFF8 (R/ ) SCC AID Register
Kojto 108:34e6b704fe68 130 // [31:24] : FPGA build number
Kojto 108:34e6b704fe68 131 // [23:20] : V2M-MPS2 target board revision (A = 0, B = 1)
Kojto 108:34e6b704fe68 132 // [19:11] : Reserved
Kojto 108:34e6b704fe68 133 // [10] : if “1” SCC_SW register has been implemented
Kojto 108:34e6b704fe68 134 // [9] : if “1” SCC_LED register has been implemented
Kojto 108:34e6b704fe68 135 // [8] : if “1” DLL lock register has been implemented
Kojto 108:34e6b704fe68 136 // [7:0] : number of SCC configuration register
Kojto 108:34e6b704fe68 137 __I uint32_t SCC_ID; // Offset: 0xFFC (R/ ) Contains information about the FPGA image
Kojto 108:34e6b704fe68 138 // [31:24] : Implementer ID: 0x41 = ARM
Kojto 108:34e6b704fe68 139 // [23:20] : Application note IP variant number
Kojto 108:34e6b704fe68 140 // [19:16] : IP Architecture: 0x4 =AHB
Kojto 108:34e6b704fe68 141 // [15:4] : Primary part number: 386 = AN386
Kojto 108:34e6b704fe68 142 // [3:0] : Application note IP revision number
Kojto 108:34e6b704fe68 143 } MPS2_SCC_TypeDef;
Kojto 108:34e6b704fe68 144
Kojto 108:34e6b704fe68 145
Kojto 108:34e6b704fe68 146 /******************************************************************************/
Kojto 108:34e6b704fe68 147 /* SSP Peripheral declaration */
Kojto 108:34e6b704fe68 148 /******************************************************************************/
Kojto 108:34e6b704fe68 149
Kojto 108:34e6b704fe68 150 typedef struct // Document DDI0194G_ssp_pl022_r1p3_trm.pdf
Kojto 108:34e6b704fe68 151 {
Kojto 108:34e6b704fe68 152 __IO uint32_t CR0; // Offset: 0x000 (R/W) Control register 0
Kojto 108:34e6b704fe68 153 // [31:16] : Reserved
Kojto 108:34e6b704fe68 154 // [15:8] : Serial clock rate
Kojto 108:34e6b704fe68 155 // [7] : SSPCLKOUT phase, applicable to Motorola SPI frame format only
Kojto 108:34e6b704fe68 156 // [6] : SSPCLKOUT polarity, applicable to Motorola SPI frame format only
Kojto 108:34e6b704fe68 157 // [5:4] : Frame format
Kojto 108:34e6b704fe68 158 // [3:0] : Data Size Select
Kojto 108:34e6b704fe68 159 __IO uint32_t CR1; // Offset: 0x004 (R/W) Control register 1
Kojto 108:34e6b704fe68 160 // [31:4] : Reserved
Kojto 108:34e6b704fe68 161 // [3] : Slave-mode output disable
Kojto 108:34e6b704fe68 162 // [2] : Master or slave mode select
Kojto 108:34e6b704fe68 163 // [1] : Synchronous serial port enable
Kojto 108:34e6b704fe68 164 // [0] : Loop back mode
Kojto 108:34e6b704fe68 165 __IO uint32_t DR; // Offset: 0x008 (R/W) Data register
Kojto 108:34e6b704fe68 166 // [31:16] : Reserved
Kojto 108:34e6b704fe68 167 // [15:0] : Transmit/Receive FIFO
Kojto 108:34e6b704fe68 168 __I uint32_t SR; // Offset: 0x00C (R/ ) Status register
Kojto 108:34e6b704fe68 169 // [31:5] : Reserved
Kojto 108:34e6b704fe68 170 // [4] : PrimeCell SSP busy flag
Kojto 108:34e6b704fe68 171 // [3] : Receive FIFO full
Kojto 108:34e6b704fe68 172 // [2] : Receive FIFO not empty
Kojto 108:34e6b704fe68 173 // [1] : Transmit FIFO not full
Kojto 108:34e6b704fe68 174 // [0] : Transmit FIFO empty
Kojto 108:34e6b704fe68 175 __IO uint32_t CPSR; // Offset: 0x010 (R/W) Clock prescale register
Kojto 108:34e6b704fe68 176 // [31:8] : Reserved
Kojto 108:34e6b704fe68 177 // [8:0] : Clock prescale divisor
Kojto 108:34e6b704fe68 178 __IO uint32_t IMSC; // Offset: 0x014 (R/W) Interrupt mask set or clear register
Kojto 108:34e6b704fe68 179 // [31:4] : Reserved
Kojto 108:34e6b704fe68 180 // [3] : Transmit FIFO interrupt mask
Kojto 108:34e6b704fe68 181 // [2] : Receive FIFO interrupt mask
Kojto 108:34e6b704fe68 182 // [1] : Receive timeout interrupt mask
Kojto 108:34e6b704fe68 183 // [0] : Receive overrun interrupt mask
Kojto 108:34e6b704fe68 184 __I uint32_t RIS; // Offset: 0x018 (R/ ) Raw interrupt status register
Kojto 108:34e6b704fe68 185 // [31:4] : Reserved
Kojto 108:34e6b704fe68 186 // [3] : raw interrupt state, prior to masking, of the SSPTXINTR interrupt
Kojto 108:34e6b704fe68 187 // [2] : raw interrupt state, prior to masking, of the SSPRXINTR interrupt
Kojto 108:34e6b704fe68 188 // [1] : raw interrupt state, prior to masking, of the SSPRTINTR interrupt
Kojto 108:34e6b704fe68 189 // [0] : raw interrupt state, prior to masking, of the SSPRORINTR interrupt
Kojto 108:34e6b704fe68 190 __I uint32_t MIS; // Offset: 0x01C (R/ ) Masked interrupt status register
Kojto 108:34e6b704fe68 191 // [31:4] : Reserved
Kojto 108:34e6b704fe68 192 // [3] : transmit FIFO masked interrupt state, after masking, of the SSPTXINTR interrupt
Kojto 108:34e6b704fe68 193 // [2] : receive FIFO masked interrupt state, after masking, of the SSPRXINTR interrupt
Kojto 108:34e6b704fe68 194 // [1] : receive timeout masked interrupt state, after masking, of the SSPRTINTR interrupt
Kojto 108:34e6b704fe68 195 // [0] : receive over run masked interrupt status, after masking, of the SSPRORINTR interrupt
Kojto 108:34e6b704fe68 196 __O uint32_t ICR; // Offset: 0x020 ( /W) Interrupt clear register
Kojto 108:34e6b704fe68 197 // [31:2] : Reserved
Kojto 108:34e6b704fe68 198 // [1] : Clears the SSPRTINTR interrupt
Kojto 108:34e6b704fe68 199 // [0] : Clears the SSPRORINTR interrupt
Kojto 108:34e6b704fe68 200 __IO uint32_t DMACR; // Offset: 0x024 (R/W) DMA control register
Kojto 108:34e6b704fe68 201 // [31:2] : Reserved
Kojto 108:34e6b704fe68 202 // [1] : Transmit DMA Enable
Kojto 108:34e6b704fe68 203 // [0] : Receive DMA Enable
Kojto 108:34e6b704fe68 204 } MPS2_SSP_TypeDef;
Kojto 108:34e6b704fe68 205
Kojto 108:34e6b704fe68 206
Kojto 108:34e6b704fe68 207 // SSP_CR0 Control register 0
Kojto 108:34e6b704fe68 208 #define SSP_CR0_DSS_Pos 0 // Data Size Select
Kojto 108:34e6b704fe68 209 #define SSP_CR0_DSS_Msk (0xF<<SSP_CR0_DSS_Pos)
Kojto 108:34e6b704fe68 210 #define SSP_CR0_FRF_Pos 4 // Frame Format Select
Kojto 108:34e6b704fe68 211 #define SSP_CR0_FRF_Msk (3UL<<SSP_CR0_FRM_Pos)
Kojto 108:34e6b704fe68 212 #define SSP_CR0_SPO_Pos 6 // SSPCLKOUT polarity
Kojto 108:34e6b704fe68 213 #define SSP_CR0_SPO_Msk (1UL<<SSP_CR0_SPO_Pos)
Kojto 108:34e6b704fe68 214 #define SSP_CR0_SPH_Pos 7 // SSPCLKOUT phase
Kojto 108:34e6b704fe68 215 #define SSP_CR0_SPH_Msk (1UL<<SSP_CR0_SPH_Pos)
Kojto 108:34e6b704fe68 216 #define SSP_CR0_SCR_Pos 8 // Serial Clock Rate (divide)
Kojto 108:34e6b704fe68 217 #define SSP_CR0_SCR_Msk (0xFF<<SSP_CR0_SCR_Pos)
Kojto 108:34e6b704fe68 218
Kojto 108:34e6b704fe68 219 #define SSP_CR0_SCR_DFLT 0x0300 // Serial Clock Rate (divide), default set at 3
Kojto 108:34e6b704fe68 220 #define SSP_CR0_FRF_MOT 0x0000 // Frame format, Motorola
Kojto 108:34e6b704fe68 221 #define SSP_CR0_DSS_8 0x0007 // Data packet size, 8bits
Kojto 108:34e6b704fe68 222 #define SSP_CR0_DSS_16 0x000F // Data packet size, 16bits
Kojto 108:34e6b704fe68 223
Kojto 108:34e6b704fe68 224 // SSP_CR1 Control register 1
Kojto 108:34e6b704fe68 225 #define SSP_CR1_LBM_Pos 0 // Loop Back Mode
Kojto 108:34e6b704fe68 226 #define SSP_CR1_LBM_Msk (1UL<<SSP_CR1_LBM_Pos)
Kojto 108:34e6b704fe68 227 #define SSP_CR1_SSE_Pos 1 // Serial port enable
Kojto 108:34e6b704fe68 228 #define SSP_CR1_SSE_Msk (1UL<<SSP_CR1_SSE_Pos)
Kojto 108:34e6b704fe68 229 #define SSP_CR1_MS_Pos 2 // Master or Slave mode
Kojto 108:34e6b704fe68 230 #define SSP_CR1_MS_Msk (1UL<<SSP_CR1_MS_Pos)
Kojto 108:34e6b704fe68 231 #define SSP_CR1_SOD_Pos 3 // Slave Output mode Disable
Kojto 108:34e6b704fe68 232 #define SSP_CR1_SOD_Msk (1UL<<SSP_CR1_SOD_Pos)
Kojto 108:34e6b704fe68 233
Kojto 108:34e6b704fe68 234 // SSP_SR Status register
Kojto 108:34e6b704fe68 235 #define SSP_SR_TFE_Pos 0 // Transmit FIFO empty
Kojto 108:34e6b704fe68 236 #define SSP_SR_TFE_Msk (1UL<<SSP_SR_TFE_Pos)
Kojto 108:34e6b704fe68 237 #define SSP_SR_TNF_Pos 1 // Transmit FIFO not full
Kojto 108:34e6b704fe68 238 #define SSP_SR_TNF_Msk (1UL<<SSP_SR_TNF_Pos)
Kojto 108:34e6b704fe68 239 #define SSP_SR_RNE_Pos 2 // Receive FIFO not empty
Kojto 108:34e6b704fe68 240 #define SSP_SR_RNE_Msk (1UL<<SSP_SR_RNE_Pos)
Kojto 108:34e6b704fe68 241 #define SSP_SR_RFF_Pos 3 // Receive FIFO full
Kojto 108:34e6b704fe68 242 #define SSP_SR_RFF_Msk (1UL<<SSP_SR_RFF_Pos)
Kojto 108:34e6b704fe68 243 #define SSP_SR_BSY_Pos 4 // Busy
Kojto 108:34e6b704fe68 244 #define SSP_SR_BSY_Msk (1UL<<SSP_SR_BSY_Pos)
Kojto 108:34e6b704fe68 245
Kojto 108:34e6b704fe68 246 // SSP_CPSR Clock prescale register
Kojto 108:34e6b704fe68 247 #define SSP_CPSR_CPD_Pos 0 // Clock prescale divisor
Kojto 108:34e6b704fe68 248 #define SSP_CPSR_CPD_Msk (0xFF<<SSP_CPSR_CDP_Pos)
Kojto 108:34e6b704fe68 249
Kojto 108:34e6b704fe68 250 #define SSP_CPSR_DFLT 0x0008 // Clock prescale (use with SCR), default set at 8
Kojto 108:34e6b704fe68 251
Kojto 108:34e6b704fe68 252 // SSPIMSC Interrupt mask set and clear register
Kojto 108:34e6b704fe68 253 #define SSP_IMSC_RORIM_Pos 0 // Receive overrun not Masked
Kojto 108:34e6b704fe68 254 #define SSP_IMSC_RORIM_Msk (1UL<<SSP_IMSC_RORIM_Pos)
Kojto 108:34e6b704fe68 255 #define SSP_IMSC_RTIM_Pos 1 // Receive timeout not Masked
Kojto 108:34e6b704fe68 256 #define SSP_IMSC_RTIM_Msk (1UL<<SSP_IMSC_RTIM_Pos)
Kojto 108:34e6b704fe68 257 #define SSP_IMSC_RXIM_Pos 2 // Receive FIFO not Masked
Kojto 108:34e6b704fe68 258 #define SSP_IMSC_RXIM_Msk (1UL<<SSP_IMSC_RXIM_Pos)
Kojto 108:34e6b704fe68 259 #define SSP_IMSC_TXIM_Pos 3 // Transmit FIFO not Masked
Kojto 108:34e6b704fe68 260 #define SSP_IMSC_TXIM_Msk (1UL<<SSP_IMSC_TXIM_Pos)
Kojto 108:34e6b704fe68 261
Kojto 108:34e6b704fe68 262 // SSPRIS Raw interrupt status register
Kojto 108:34e6b704fe68 263 #define SSP_RIS_RORRIS_Pos 0 // Raw Overrun interrupt flag
Kojto 108:34e6b704fe68 264 #define SSP_RIS_RORRIS_Msk (1UL<<SSP_RIS_RORRIS_Pos)
Kojto 108:34e6b704fe68 265 #define SSP_RIS_RTRIS_Pos 1 // Raw Timemout interrupt flag
Kojto 108:34e6b704fe68 266 #define SSP_RIS_RTRIS_Msk (1UL<<SSP_RIS_RTRIS_Pos)
Kojto 108:34e6b704fe68 267 #define SSP_RIS_RXRIS_Pos 2 // Raw Receive interrupt flag
Kojto 108:34e6b704fe68 268 #define SSP_RIS_RXRIS_Msk (1UL<<SSP_RIS_RXRIS_Pos)
Kojto 108:34e6b704fe68 269 #define SSP_RIS_TXRIS_Pos 3 // Raw Transmit interrupt flag
Kojto 108:34e6b704fe68 270 #define SSP_RIS_TXRIS_Msk (1UL<<SSP_RIS_TXRIS_Pos)
Kojto 108:34e6b704fe68 271
Kojto 108:34e6b704fe68 272 // SSPMIS Masked interrupt status register
Kojto 108:34e6b704fe68 273 #define SSP_MIS_RORMIS_Pos 0 // Masked Overrun interrupt flag
Kojto 108:34e6b704fe68 274 #define SSP_MIS_RORMIS_Msk (1UL<<SSP_MIS_RORMIS_Pos)
Kojto 108:34e6b704fe68 275 #define SSP_MIS_RTMIS_Pos 1 // Masked Timemout interrupt flag
Kojto 108:34e6b704fe68 276 #define SSP_MIS_RTMIS_Msk (1UL<<SSP_MIS_RTMIS_Pos)
Kojto 108:34e6b704fe68 277 #define SSP_MIS_RXMIS_Pos 2 // Masked Receive interrupt flag
Kojto 108:34e6b704fe68 278 #define SSP_MIS_RXMIS_Msk (1UL<<SSP_MIS_RXMIS_Pos)
Kojto 108:34e6b704fe68 279 #define SSP_MIS_TXMIS_Pos 3 // Masked Transmit interrupt flag
Kojto 108:34e6b704fe68 280 #define SSP_MIS_TXMIS_Msk (1UL<<SSP_MIS_TXMIS_Pos)
Kojto 108:34e6b704fe68 281
Kojto 108:34e6b704fe68 282 // SSPICR Interrupt clear register
Kojto 108:34e6b704fe68 283 #define SSP_ICR_RORIC_Pos 0 // Clears Overrun interrupt flag
Kojto 108:34e6b704fe68 284 #define SSP_ICR_RORIC_Msk (1UL<<SSP_ICR_RORIC_Pos)
Kojto 108:34e6b704fe68 285 #define SSP_ICR_RTIC_Pos 1 // Clears Timemout interrupt flag
Kojto 108:34e6b704fe68 286 #define SSP_ICR_RTIC_Msk (1UL<<SSP_ICR_RTIC_Pos)
Kojto 108:34e6b704fe68 287
Kojto 108:34e6b704fe68 288 // SSPDMACR DMA control register
Kojto 108:34e6b704fe68 289 #define SSP_DMACR_RXDMAE_Pos 0 // Enable Receive FIFO DMA
Kojto 108:34e6b704fe68 290 #define SSP_DMACR_RXDMAE_Msk (1UL<<SSP_DMACR_RXDMAE_Pos)
Kojto 108:34e6b704fe68 291 #define SSP_DMACR_TXDMAE_Pos 1 // Enable Transmit FIFO DMA
Kojto 108:34e6b704fe68 292 #define SSP_DMACR_TXDMAE_Msk (1UL<<SSP_DMACR_TXDMAE_Pos)
Kojto 108:34e6b704fe68 293
Kojto 108:34e6b704fe68 294 /******************************************************************************/
Kojto 108:34e6b704fe68 295 /* Audio and Touch Screen (I2C) Peripheral declaration */
Kojto 108:34e6b704fe68 296 /******************************************************************************/
Kojto 108:34e6b704fe68 297
Kojto 108:34e6b704fe68 298 typedef struct
Kojto 108:34e6b704fe68 299 {
Kojto 108:34e6b704fe68 300 union {
Kojto 108:34e6b704fe68 301 __O uint32_t CONTROLS; // Offset: 0x000 CONTROL Set Register ( /W)
Kojto 108:34e6b704fe68 302 __I uint32_t CONTROL; // Offset: 0x000 CONTROL Status Register (R/ )
Kojto 108:34e6b704fe68 303 };
Kojto 108:34e6b704fe68 304 __O uint32_t CONTROLC; // Offset: 0x004 CONTROL Clear Register ( /W)
Kojto 108:34e6b704fe68 305 } MPS2_I2C_TypeDef;
Kojto 108:34e6b704fe68 306
Kojto 108:34e6b704fe68 307 #define SDA 1 << 1
Kojto 108:34e6b704fe68 308 #define SCL 1 << 0
Kojto 108:34e6b704fe68 309
Kojto 108:34e6b704fe68 310
Kojto 108:34e6b704fe68 311 /******************************************************************************/
Kojto 108:34e6b704fe68 312 /* Audio I2S Peripheral declaration */
Kojto 108:34e6b704fe68 313 /******************************************************************************/
Kojto 108:34e6b704fe68 314
Kojto 108:34e6b704fe68 315 typedef struct
Kojto 108:34e6b704fe68 316 {
Kojto 108:34e6b704fe68 317 /*!< Offset: 0x000 CONTROL Register (R/W) */
Kojto 108:34e6b704fe68 318 __IO uint32_t CONTROL; // <h> CONTROL </h>
Kojto 108:34e6b704fe68 319 // <o.0> TX Enable
Kojto 108:34e6b704fe68 320 // <0=> TX disabled
Kojto 108:34e6b704fe68 321 // <1=> TX enabled
Kojto 108:34e6b704fe68 322 // <o.1> TX IRQ Enable
Kojto 108:34e6b704fe68 323 // <0=> TX IRQ disabled
Kojto 108:34e6b704fe68 324 // <1=> TX IRQ enabled
Kojto 108:34e6b704fe68 325 // <o.2> RX Enable
Kojto 108:34e6b704fe68 326 // <0=> RX disabled
Kojto 108:34e6b704fe68 327 // <1=> RX enabled
Kojto 108:34e6b704fe68 328 // <o.3> RX IRQ Enable
Kojto 108:34e6b704fe68 329 // <0=> RX IRQ disabled
Kojto 108:34e6b704fe68 330 // <1=> RX IRQ enabled
Kojto 108:34e6b704fe68 331 // <o.10..8> TX Buffer Water Level
Kojto 108:34e6b704fe68 332 // <0=> / IRQ triggers when any space available
Kojto 108:34e6b704fe68 333 // <1=> / IRQ triggers when more than 1 space available
Kojto 108:34e6b704fe68 334 // <2=> / IRQ triggers when more than 2 space available
Kojto 108:34e6b704fe68 335 // <3=> / IRQ triggers when more than 3 space available
Kojto 108:34e6b704fe68 336 // <4=> Undefined!
Kojto 108:34e6b704fe68 337 // <5=> Undefined!
Kojto 108:34e6b704fe68 338 // <6=> Undefined!
Kojto 108:34e6b704fe68 339 // <7=> Undefined!
Kojto 108:34e6b704fe68 340 // <o.14..12> RX Buffer Water Level
Kojto 108:34e6b704fe68 341 // <0=> Undefined!
Kojto 108:34e6b704fe68 342 // <1=> / IRQ triggers when less than 1 space available
Kojto 108:34e6b704fe68 343 // <2=> / IRQ triggers when less than 2 space available
Kojto 108:34e6b704fe68 344 // <3=> / IRQ triggers when less than 3 space available
Kojto 108:34e6b704fe68 345 // <4=> / IRQ triggers when less than 4 space available
Kojto 108:34e6b704fe68 346 // <5=> Undefined!
Kojto 108:34e6b704fe68 347 // <6=> Undefined!
Kojto 108:34e6b704fe68 348 // <7=> Undefined!
Kojto 108:34e6b704fe68 349 // <o.16> FIFO reset
Kojto 108:34e6b704fe68 350 // <0=> Normal operation
Kojto 108:34e6b704fe68 351 // <1=> FIFO reset
Kojto 108:34e6b704fe68 352 // <o.17> Audio Codec reset
Kojto 108:34e6b704fe68 353 // <0=> Normal operation
Kojto 108:34e6b704fe68 354 // <1=> Assert audio Codec reset
Kojto 108:34e6b704fe68 355 /*!< Offset: 0x004 STATUS Register (R/ ) */
Kojto 108:34e6b704fe68 356 __I uint32_t STATUS; // <h> STATUS </h>
Kojto 108:34e6b704fe68 357 // <o.0> TX Buffer alert
Kojto 108:34e6b704fe68 358 // <0=> TX buffer don't need service yet
Kojto 108:34e6b704fe68 359 // <1=> TX buffer need service
Kojto 108:34e6b704fe68 360 // <o.1> RX Buffer alert
Kojto 108:34e6b704fe68 361 // <0=> RX buffer don't need service yet
Kojto 108:34e6b704fe68 362 // <1=> RX buffer need service
Kojto 108:34e6b704fe68 363 // <o.2> TX Buffer Empty
Kojto 108:34e6b704fe68 364 // <0=> TX buffer have data
Kojto 108:34e6b704fe68 365 // <1=> TX buffer empty
Kojto 108:34e6b704fe68 366 // <o.3> TX Buffer Full
Kojto 108:34e6b704fe68 367 // <0=> TX buffer not full
Kojto 108:34e6b704fe68 368 // <1=> TX buffer full
Kojto 108:34e6b704fe68 369 // <o.4> RX Buffer Empty
Kojto 108:34e6b704fe68 370 // <0=> RX buffer have data
Kojto 108:34e6b704fe68 371 // <1=> RX buffer empty
Kojto 108:34e6b704fe68 372 // <o.5> RX Buffer Full
Kojto 108:34e6b704fe68 373 // <0=> RX buffer not full
Kojto 108:34e6b704fe68 374 // <1=> RX buffer full
Kojto 108:34e6b704fe68 375 union {
Kojto 108:34e6b704fe68 376 /*!< Offset: 0x008 Error Status Register (R/ ) */
Kojto 108:34e6b704fe68 377 __I uint32_t ERROR; // <h> ERROR </h>
Kojto 108:34e6b704fe68 378 // <o.0> TX error
Kojto 108:34e6b704fe68 379 // <0=> Okay
Kojto 108:34e6b704fe68 380 // <1=> TX overrun/underrun
Kojto 108:34e6b704fe68 381 // <o.1> RX error
Kojto 108:34e6b704fe68 382 // <0=> Okay
Kojto 108:34e6b704fe68 383 // <1=> RX overrun/underrun
Kojto 108:34e6b704fe68 384 /*!< Offset: 0x008 Error Clear Register ( /W) */
Kojto 108:34e6b704fe68 385 __O uint32_t ERRORCLR; // <h> ERRORCLR </h>
Kojto 108:34e6b704fe68 386 // <o.0> TX error
Kojto 108:34e6b704fe68 387 // <0=> Okay
Kojto 108:34e6b704fe68 388 // <1=> Clear TX error
Kojto 108:34e6b704fe68 389 // <o.1> RX error
Kojto 108:34e6b704fe68 390 // <0=> Okay
Kojto 108:34e6b704fe68 391 // <1=> Clear RX error
Kojto 108:34e6b704fe68 392 };
Kojto 108:34e6b704fe68 393 /*!< Offset: 0x00C Divide ratio Register (R/W) */
Kojto 108:34e6b704fe68 394 __IO uint32_t DIVIDE; // <h> Divide ratio for Left/Right clock </h>
Kojto 108:34e6b704fe68 395 // <o.9..0> TX error (default 0x80)
Kojto 108:34e6b704fe68 396 /*!< Offset: 0x010 Transmit Buffer ( /W) */
Kojto 108:34e6b704fe68 397 __O uint32_t TXBUF; // <h> Transmit buffer </h>
Kojto 108:34e6b704fe68 398 // <o.15..0> Right channel
Kojto 108:34e6b704fe68 399 // <o.31..16> Left channel
Kojto 108:34e6b704fe68 400 /*!< Offset: 0x014 Receive Buffer (R/ ) */
Kojto 108:34e6b704fe68 401 __I uint32_t RXBUF; // <h> Receive buffer </h>
Kojto 108:34e6b704fe68 402 // <o.15..0> Right channel
Kojto 108:34e6b704fe68 403 // <o.31..16> Left channel
Kojto 108:34e6b704fe68 404 uint32_t RESERVED1[186];
Kojto 108:34e6b704fe68 405 __IO uint32_t ITCR; // <h> Integration Test Control Register </h>
Kojto 108:34e6b704fe68 406 // <o.0> ITEN
Kojto 108:34e6b704fe68 407 // <0=> Normal operation
Kojto 108:34e6b704fe68 408 // <1=> Integration Test mode enable
Kojto 108:34e6b704fe68 409 __O uint32_t ITIP1; // <h> Integration Test Input Register 1</h>
Kojto 108:34e6b704fe68 410 // <o.0> SDIN
Kojto 108:34e6b704fe68 411 __O uint32_t ITOP1; // <h> Integration Test Output Register 1</h>
Kojto 108:34e6b704fe68 412 // <o.0> SDOUT
Kojto 108:34e6b704fe68 413 // <o.1> SCLK
Kojto 108:34e6b704fe68 414 // <o.2> LRCK
Kojto 108:34e6b704fe68 415 // <o.3> IRQOUT
Kojto 108:34e6b704fe68 416 } MPS2_I2S_TypeDef;
Kojto 108:34e6b704fe68 417
Kojto 108:34e6b704fe68 418 #define I2S_CONTROL_TXEN_Pos 0
Kojto 108:34e6b704fe68 419 #define I2S_CONTROL_TXEN_Msk (1UL<<I2S_CONTROL_TXEN_Pos)
Kojto 108:34e6b704fe68 420
Kojto 108:34e6b704fe68 421 #define I2S_CONTROL_TXIRQEN_Pos 1
Kojto 108:34e6b704fe68 422 #define I2S_CONTROL_TXIRQEN_Msk (1UL<<I2S_CONTROL_TXIRQEN_Pos)
Kojto 108:34e6b704fe68 423
Kojto 108:34e6b704fe68 424 #define I2S_CONTROL_RXEN_Pos 2
Kojto 108:34e6b704fe68 425 #define I2S_CONTROL_RXEN_Msk (1UL<<I2S_CONTROL_RXEN_Pos)
Kojto 108:34e6b704fe68 426
Kojto 108:34e6b704fe68 427 #define I2S_CONTROL_RXIRQEN_Pos 3
Kojto 108:34e6b704fe68 428 #define I2S_CONTROL_RXIRQEN_Msk (1UL<<I2S_CONTROL_RXIRQEN_Pos)
Kojto 108:34e6b704fe68 429
Kojto 108:34e6b704fe68 430 #define I2S_CONTROL_TXWLVL_Pos 8
Kojto 108:34e6b704fe68 431 #define I2S_CONTROL_TXWLVL_Msk (7UL<<I2S_CONTROL_TXWLVL_Pos)
Kojto 108:34e6b704fe68 432
Kojto 108:34e6b704fe68 433 #define I2S_CONTROL_RXWLVL_Pos 12
Kojto 108:34e6b704fe68 434 #define I2S_CONTROL_RXWLVL_Msk (7UL<<I2S_CONTROL_RXWLVL_Pos)
Kojto 108:34e6b704fe68 435 /* FIFO reset*/
Kojto 108:34e6b704fe68 436 #define I2S_CONTROL_FIFORST_Pos 16
Kojto 108:34e6b704fe68 437 #define I2S_CONTROL_FIFORST_Msk (1UL<<I2S_CONTROL_FIFORST_Pos)
Kojto 108:34e6b704fe68 438 /* Codec reset*/
Kojto 108:34e6b704fe68 439 #define I2S_CONTROL_CODECRST_Pos 17
Kojto 108:34e6b704fe68 440 #define I2S_CONTROL_CODECRST_Msk (1UL<<I2S_CONTROL_CODECRST_Pos)
Kojto 108:34e6b704fe68 441
Kojto 108:34e6b704fe68 442 #define I2S_STATUS_TXIRQ_Pos 0
Kojto 108:34e6b704fe68 443 #define I2S_STATUS_TXIRQ_Msk (1UL<<I2S_STATUS_TXIRQ_Pos)
Kojto 108:34e6b704fe68 444
Kojto 108:34e6b704fe68 445 #define I2S_STATUS_RXIRQ_Pos 1
Kojto 108:34e6b704fe68 446 #define I2S_STATUS_RXIRQ_Msk (1UL<<I2S_STATUS_RXIRQ_Pos)
Kojto 108:34e6b704fe68 447
Kojto 108:34e6b704fe68 448 #define I2S_STATUS_TXEmpty_Pos 2
Kojto 108:34e6b704fe68 449 #define I2S_STATUS_TXEmpty_Msk (1UL<<I2S_STATUS_TXEmpty_Pos)
Kojto 108:34e6b704fe68 450
Kojto 108:34e6b704fe68 451 #define I2S_STATUS_TXFull_Pos 3
Kojto 108:34e6b704fe68 452 #define I2S_STATUS_TXFull_Msk (1UL<<I2S_STATUS_TXFull_Pos)
Kojto 108:34e6b704fe68 453
Kojto 108:34e6b704fe68 454 #define I2S_STATUS_RXEmpty_Pos 4
Kojto 108:34e6b704fe68 455 #define I2S_STATUS_RXEmpty_Msk (1UL<<I2S_STATUS_RXEmpty_Pos)
Kojto 108:34e6b704fe68 456
Kojto 108:34e6b704fe68 457 #define I2S_STATUS_RXFull_Pos 5
Kojto 108:34e6b704fe68 458 #define I2S_STATUS_RXFull_Msk (1UL<<I2S_STATUS_RXFull_Pos)
Kojto 108:34e6b704fe68 459
Kojto 108:34e6b704fe68 460 #define I2S_ERROR_TXERR_Pos 0
Kojto 108:34e6b704fe68 461 #define I2S_ERROR_TXERR_Msk (1UL<<I2S_ERROR_TXERR_Pos)
Kojto 108:34e6b704fe68 462
Kojto 108:34e6b704fe68 463 #define I2S_ERROR_RXERR_Pos 1
Kojto 108:34e6b704fe68 464 #define I2S_ERROR_RXERR_Msk (1UL<<I2S_ERROR_RXERR_Pos)
Kojto 108:34e6b704fe68 465
Kojto 108:34e6b704fe68 466 /******************************************************************************/
Kojto 108:34e6b704fe68 467 /* SMSC9220 Register Definitions */
Kojto 108:34e6b704fe68 468 /******************************************************************************/
Kojto 108:34e6b704fe68 469
Kojto 108:34e6b704fe68 470 typedef struct // SMSC LAN9220
Kojto 108:34e6b704fe68 471 {
Kojto 108:34e6b704fe68 472 __I uint32_t RX_DATA_PORT; // Receive FIFO Ports (offset 0x0)
Kojto 108:34e6b704fe68 473 uint32_t RESERVED1[0x7];
Kojto 108:34e6b704fe68 474 __O uint32_t TX_DATA_PORT; // Transmit FIFO Ports (offset 0x20)
Kojto 108:34e6b704fe68 475 uint32_t RESERVED2[0x7];
Kojto 108:34e6b704fe68 476
Kojto 108:34e6b704fe68 477 __I uint32_t RX_STAT_PORT; // Receive FIFO status port (offset 0x40)
Kojto 108:34e6b704fe68 478 __I uint32_t RX_STAT_PEEK; // Receive FIFO status peek (offset 0x44)
Kojto 108:34e6b704fe68 479 __I uint32_t TX_STAT_PORT; // Transmit FIFO status port (offset 0x48)
Kojto 108:34e6b704fe68 480 __I uint32_t TX_STAT_PEEK; // Transmit FIFO status peek (offset 0x4C)
Kojto 108:34e6b704fe68 481
Kojto 108:34e6b704fe68 482 __I uint32_t ID_REV; // Chip ID and Revision (offset 0x50)
Kojto 108:34e6b704fe68 483 __IO uint32_t IRQ_CFG; // Main Interrupt Configuration (offset 0x54)
Kojto 108:34e6b704fe68 484 __IO uint32_t INT_STS; // Interrupt Status (offset 0x58)
Kojto 108:34e6b704fe68 485 __IO uint32_t INT_EN; // Interrupt Enable Register (offset 0x5C)
Kojto 108:34e6b704fe68 486 uint32_t RESERVED3; // Reserved for future use (offset 0x60)
Kojto 108:34e6b704fe68 487 __I uint32_t BYTE_TEST; // Read-only byte order testing register 87654321h (offset 0x64)
Kojto 108:34e6b704fe68 488 __IO uint32_t FIFO_INT; // FIFO Level Interrupts (offset 0x68)
Kojto 108:34e6b704fe68 489 __IO uint32_t RX_CFG; // Receive Configuration (offset 0x6C)
Kojto 108:34e6b704fe68 490 __IO uint32_t TX_CFG; // Transmit Configuration (offset 0x70)
Kojto 108:34e6b704fe68 491 __IO uint32_t HW_CFG; // Hardware Configuration (offset 0x74)
Kojto 108:34e6b704fe68 492 __IO uint32_t RX_DP_CTL; // RX Datapath Control (offset 0x78)
Kojto 108:34e6b704fe68 493 __I uint32_t RX_FIFO_INF; // Receive FIFO Information (offset 0x7C)
Kojto 108:34e6b704fe68 494 __I uint32_t TX_FIFO_INF; // Transmit FIFO Information (offset 0x80)
Kojto 108:34e6b704fe68 495 __IO uint32_t PMT_CTRL; // Power Management Control (offset 0x84)
Kojto 108:34e6b704fe68 496 __IO uint32_t GPIO_CFG; // General Purpose IO Configuration (offset 0x88)
Kojto 108:34e6b704fe68 497 __IO uint32_t GPT_CFG; // General Purpose Timer Configuration (offset 0x8C)
Kojto 108:34e6b704fe68 498 __I uint32_t GPT_CNT; // General Purpose Timer Count (offset 0x90)
Kojto 108:34e6b704fe68 499 uint32_t RESERVED4; // Reserved for future use (offset 0x94)
Kojto 108:34e6b704fe68 500 __IO uint32_t ENDIAN; // WORD SWAP Register (offset 0x98)
Kojto 108:34e6b704fe68 501 __I uint32_t FREE_RUN; // Free Run Counter (offset 0x9C)
Kojto 108:34e6b704fe68 502 __I uint32_t RX_DROP; // RX Dropped Frames Counter (offset 0xA0)
Kojto 108:34e6b704fe68 503 __IO uint32_t MAC_CSR_CMD; // MAC CSR Synchronizer Command (offset 0xA4)
Kojto 108:34e6b704fe68 504 __IO uint32_t MAC_CSR_DATA; // MAC CSR Synchronizer Data (offset 0xA8)
Kojto 108:34e6b704fe68 505 __IO uint32_t AFC_CFG; // Automatic Flow Control Configuration (offset 0xAC)
Kojto 108:34e6b704fe68 506 __IO uint32_t E2P_CMD; // EEPROM Command (offset 0xB0)
Kojto 108:34e6b704fe68 507 __IO uint32_t E2P_DATA; // EEPROM Data (offset 0xB4)
Kojto 108:34e6b704fe68 508
Kojto 108:34e6b704fe68 509 } SMSC9220_TypeDef;
Kojto 108:34e6b704fe68 510
Kojto 108:34e6b704fe68 511 // SMSC9220 MAC Registers Indices
Kojto 108:34e6b704fe68 512 #define SMSC9220_MAC_CR 0x1
Kojto 108:34e6b704fe68 513 #define SMSC9220_MAC_ADDRH 0x2
Kojto 108:34e6b704fe68 514 #define SMSC9220_MAC_ADDRL 0x3
Kojto 108:34e6b704fe68 515 #define SMSC9220_MAC_HASHH 0x4
Kojto 108:34e6b704fe68 516 #define SMSC9220_MAC_HASHL 0x5
Kojto 108:34e6b704fe68 517 #define SMSC9220_MAC_MII_ACC 0x6
Kojto 108:34e6b704fe68 518 #define SMSC9220_MAC_MII_DATA 0x7
Kojto 108:34e6b704fe68 519 #define SMSC9220_MAC_FLOW 0x8
Kojto 108:34e6b704fe68 520 #define SMSC9220_MAC_VLAN1 0x9
Kojto 108:34e6b704fe68 521 #define SMSC9220_MAC_VLAN2 0xA
Kojto 108:34e6b704fe68 522 #define SMSC9220_MAC_WUFF 0xB
Kojto 108:34e6b704fe68 523 #define SMSC9220_MAC_WUCSR 0xC
Kojto 108:34e6b704fe68 524
Kojto 108:34e6b704fe68 525 // SMSC9220 PHY Registers Indices
Kojto 108:34e6b704fe68 526 #define SMSC9220_PHY_BCONTROL 0x0
Kojto 108:34e6b704fe68 527 #define SMSC9220_PHY_BSTATUS 0x1
Kojto 108:34e6b704fe68 528 #define SMSC9220_PHY_ID1 0x2
Kojto 108:34e6b704fe68 529 #define SMSC9220_PHY_ID2 0x3
Kojto 108:34e6b704fe68 530 #define SMSC9220_PHY_ANEG_ADV 0x4
Kojto 108:34e6b704fe68 531 #define SMSC9220_PHY_ANEG_LPA 0x5
Kojto 108:34e6b704fe68 532 #define SMSC9220_PHY_ANEG_EXP 0x6
Kojto 108:34e6b704fe68 533 #define SMSC9220_PHY_MCONTROL 0x17
Kojto 108:34e6b704fe68 534 #define SMSC9220_PHY_MSTATUS 0x18
Kojto 108:34e6b704fe68 535 #define SMSC9220_PHY_CSINDICATE 0x27
Kojto 108:34e6b704fe68 536 #define SMSC9220_PHY_INTSRC 0x29
Kojto 108:34e6b704fe68 537 #define SMSC9220_PHY_INTMASK 0x30
Kojto 108:34e6b704fe68 538 #define SMSC9220_PHY_CS 0x31
Kojto 108:34e6b704fe68 539
Kojto 108:34e6b704fe68 540 /******************************************************************************/
Kojto 108:34e6b704fe68 541 /* Peripheral memory map */
Kojto 108:34e6b704fe68 542 /******************************************************************************/
Kojto 108:34e6b704fe68 543
Kojto 108:34e6b704fe68 544 #define MPS2_SSP0_BASE (0x40020000ul) /* User SSP Base Address */
Kojto 108:34e6b704fe68 545 #define MPS2_SSP1_BASE (0x40021000ul) /* CLCD SSP Base Address */
Kojto 108:34e6b704fe68 546 #define MPS2_TSC_I2C_BASE (0x40022000ul) /* Touch Screen I2C Base Address */
Kojto 108:34e6b704fe68 547 #define MPS2_AAIC_I2C_BASE (0x40023000ul) /* Audio Interface I2C Base Address */
Kojto 108:34e6b704fe68 548 #define MPS2_AAIC_I2S_BASE (0x40024000ul) /* Audio Interface I2S Base Address */
Kojto 108:34e6b704fe68 549 #define MPS2_SSP2_BASE (0x40025000ul) /* adc SSP Base Address */
Kojto 108:34e6b704fe68 550 #define MPS2_SSP3_BASE (0x40026000ul) /* shield 0 SSP Base Address */
Kojto 108:34e6b704fe68 551 #define MPS2_SSP4_BASE (0x40027000ul) /* shield 1 SSP Base Address */
Kojto 108:34e6b704fe68 552 #define MPS2_FPGAIO_BASE (0x40028000ul) /* FPGAIO Base Address */
Kojto 108:34e6b704fe68 553 #define MPS2_SHIELD0_I2C_BASE (0x40029000ul) /* Audio Interface I2C Base Address */
Kojto 108:34e6b704fe68 554 #define MPS2_SHIELD1_I2C_BASE (0x4002A000ul) /* Audio Interface I2C Base Address */
Kojto 108:34e6b704fe68 555 #define MPS2_SCC_BASE (0x4002F000ul) /* SCC Base Address */
Kojto 108:34e6b704fe68 556
Kojto 108:34e6b704fe68 557 #ifdef CORTEX_M7
Kojto 108:34e6b704fe68 558 #define SMSC9220_BASE (0xA0000000ul) /* Ethernet SMSC9220 Base Address */
Kojto 108:34e6b704fe68 559 #else
Kojto 108:34e6b704fe68 560 #define SMSC9220_BASE (0x40200000ul) /* Ethernet SMSC9220 Base Address */
Kojto 108:34e6b704fe68 561 #endif
Kojto 108:34e6b704fe68 562
Kojto 108:34e6b704fe68 563 #define MPS2_VGA_BUFFER (0x41100000ul) /* VGA Buffer Base Address */
Kojto 108:34e6b704fe68 564 #define MPS2_VGA_TEXT_BUFFER (0x41000000ul) /* VGA Text Buffer Address */
Kojto 108:34e6b704fe68 565
Kojto 108:34e6b704fe68 566 /******************************************************************************/
Kojto 108:34e6b704fe68 567 /* Peripheral declaration */
Kojto 108:34e6b704fe68 568 /******************************************************************************/
Kojto 108:34e6b704fe68 569
Kojto 108:34e6b704fe68 570 #define SMSC9220 ((SMSC9220_TypeDef *) SMSC9220_BASE )
Kojto 108:34e6b704fe68 571 #define MPS2_TS_I2C ((MPS2_I2C_TypeDef *) MPS2_TSC_I2C_BASE )
Kojto 108:34e6b704fe68 572 #define MPS2_AAIC_I2C ((MPS2_I2C_TypeDef *) MPS2_AAIC_I2C_BASE )
Kojto 108:34e6b704fe68 573 #define MPS2_SHIELD0_I2C ((MPS2_I2C_TypeDef *) MPS2_SHIELD0_I2C_BASE )
Kojto 108:34e6b704fe68 574 #define MPS2_SHIELD1_I2C ((MPS2_I2C_TypeDef *) MPS2_SHIELD1_I2C_BASE )
Kojto 108:34e6b704fe68 575 #define MPS2_AAIC_I2S ((MPS2_I2S_TypeDef *) MPS2_AAIC_I2S_BASE )
Kojto 108:34e6b704fe68 576 #define MPS2_FPGAIO ((MPS2_FPGAIO_TypeDef *) MPS2_FPGAIO_BASE )
Kojto 108:34e6b704fe68 577 #define MPS2_SCC ((MPS2_SCC_TypeDef *) MPS2_SCC_BASE )
Kojto 108:34e6b704fe68 578 #define MPS2_SSP0 ((MPS2_SSP_TypeDef *) MPS2_SSP0_BASE )
Kojto 108:34e6b704fe68 579 #define MPS2_SSP1 ((MPS2_SSP_TypeDef *) MPS2_SSP1_BASE )
Kojto 108:34e6b704fe68 580 #define MPS2_SSP2 ((MPS2_SSP_TypeDef *) MPS2_SSP2_BASE )
Kojto 108:34e6b704fe68 581 #define MPS2_SSP3 ((MPS2_SSP_TypeDef *) MPS2_SSP3_BASE )
Kojto 108:34e6b704fe68 582 #define MPS2_SSP4 ((MPS2_SSP_TypeDef *) MPS2_SSP4_BASE )
Kojto 108:34e6b704fe68 583
Kojto 108:34e6b704fe68 584 //******************************************************************************/
Kojto 108:34e6b704fe68 585 /* General MACRO Definitions */
Kojto 108:34e6b704fe68 586 /******************************************************************************/
Kojto 108:34e6b704fe68 587
Kojto 108:34e6b704fe68 588 //#define DEBUG
Kojto 108:34e6b704fe68 589 //#ifdef DEBUG
Kojto 108:34e6b704fe68 590 // #define debug(...) printf(__VA_ARGS__)
Kojto 108:34e6b704fe68 591 //#else
Kojto 108:34e6b704fe68 592 // #define debug(...)
Kojto 108:34e6b704fe68 593 //#endif // ifdef DEBUG
Kojto 108:34e6b704fe68 594
Kojto 108:34e6b704fe68 595 // Bit control macros
Kojto 108:34e6b704fe68 596 //#define HW_REG(base,offset) *((volatile unsigned int *)((base) + (offset)))
Kojto 108:34e6b704fe68 597
Kojto 108:34e6b704fe68 598 #define CREATE_MASK(msb, lsb) (((1U << ((msb) - (lsb) + 1)) - 1) << (lsb))
Kojto 108:34e6b704fe68 599 #define MASK_BITS(arg, msb, lsb) ((arg) & CREATE_MASK(msb, lsb))
Kojto 108:34e6b704fe68 600 #define EXTRACT_BITS(arg, msb, lsb) (MASK_BITS(arg, msb, lsb) >> (lsb))
Kojto 108:34e6b704fe68 601 #define INSERT_BITS(arg, msb, lsb, value) \
Kojto 108:34e6b704fe68 602 ((arg) = ((arg) & ~CREATE_MASK(msb, lsb)) | (((value) << (lsb)) & CREATE_MASK(msb, lsb)))
Kojto 108:34e6b704fe68 603
Kojto 108:34e6b704fe68 604 #define MASK_FIELD(arg, field) MASK_BITS(arg, field##_MSB, field##_LSB)
Kojto 108:34e6b704fe68 605 #define EXTRACT_FIELD(arg, field) EXTRACT_BITS(arg, field##_MSB, field##_LSB)
Kojto 108:34e6b704fe68 606 #define INSERT_FIELD(arg, field, value) INSERT_BITS(arg, field##_MSB, field##_LSB, value)
Kojto 108:34e6b704fe68 607
Kojto 108:34e6b704fe68 608 #define SET_BIT(arg, bit) ((arg) |= (1 << (bit)))
Kojto 108:34e6b704fe68 609 #define CLEAR_BIT(arg, bit) ((arg) &= ~(1 << (bit)))
Kojto 108:34e6b704fe68 610 #define TEST_BIT(arg, bit) ((arg) & (1 << (bit)))
Kojto 108:34e6b704fe68 611
Kojto 108:34e6b704fe68 612 #ifndef NoOfElements
Kojto 108:34e6b704fe68 613 #define NoOfElements(array) (sizeof(array) / sizeof(array[0]))
Kojto 108:34e6b704fe68 614 #endif
Kojto 108:34e6b704fe68 615
Kojto 108:34e6b704fe68 616 #endif /* __SMM_MPS2_H */