1 /** 2 * \file 3 * 4 * \brief Component description for IISC 5 * 6 * Copyright (c) 2016 Atmel Corporation, 7 * a wholly owned subsidiary of Microchip Technology Inc. 8 * 9 * \asf_license_start 10 * 11 * \page License 12 * 13 * Licensed under the Apache License, Version 2.0 (the "License"); 14 * you may not use this file except in compliance with the License. 15 * You may obtain a copy of the Licence at 16 * 17 * http://www.apache.org/licenses/LICENSE-2.0 18 * 19 * Unless required by applicable law or agreed to in writing, software 20 * distributed under the License is distributed on an "AS IS" BASIS, 21 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 22 * See the License for the specific language governing permissions and 23 * limitations under the License. 24 * 25 * \asf_license_stop 26 * 27 */ 28 29 #ifndef _SAM4L_IISC_COMPONENT_ 30 #define _SAM4L_IISC_COMPONENT_ 31 32 /* ========================================================================== */ 33 /** SOFTWARE API DEFINITION FOR IISC */ 34 /* ========================================================================== */ 35 /** \addtogroup SAM4L_IISC Inter-IC Sound (I2S) Controller */ 36 /*@{*/ 37 38 #define IISC_I7560 39 #define REV_IISC 0x100 40 41 /* -------- IISC_CR : (IISC Offset: 0x00) ( /W 32) Control Register -------- */ 42 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) 43 typedef union { 44 struct { 45 uint32_t RXEN:1; /*!< bit: 0 Receive Enable */ 46 uint32_t RXDIS:1; /*!< bit: 1 Receive Disable */ 47 uint32_t CKEN:1; /*!< bit: 2 Clocks Enable */ 48 uint32_t CKDIS:1; /*!< bit: 3 Clocks Disable */ 49 uint32_t TXEN:1; /*!< bit: 4 Transmit Enable */ 50 uint32_t TXDIS:1; /*!< bit: 5 Transmit Disable */ 51 uint32_t :1; /*!< bit: 6 Reserved */ 52 uint32_t SWRST:1; /*!< bit: 7 Software Reset */ 53 uint32_t :24; /*!< bit: 8..31 Reserved */ 54 } bit; /*!< Structure used for bit access */ 55 uint32_t reg; /*!< Type used for register access */ 56 } IISC_CR_Type; 57 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ 58 59 #define IISC_CR_OFFSET 0x00 /**< \brief (IISC_CR offset) Control Register */ 60 61 #define IISC_CR_RXEN_Pos 0 /**< \brief (IISC_CR) Receive Enable */ 62 #define IISC_CR_RXEN (_U_(0x1) << IISC_CR_RXEN_Pos) 63 #define IISC_CR_RXEN_OFF_Val _U_(0x0) /**< \brief (IISC_CR) No effect */ 64 #define IISC_CR_RXEN_ON_Val _U_(0x1) /**< \brief (IISC_CR) Enables Data Receive if RXDIS is not set */ 65 #define IISC_CR_RXEN_OFF (IISC_CR_RXEN_OFF_Val << IISC_CR_RXEN_Pos) 66 #define IISC_CR_RXEN_ON (IISC_CR_RXEN_ON_Val << IISC_CR_RXEN_Pos) 67 #define IISC_CR_RXDIS_Pos 1 /**< \brief (IISC_CR) Receive Disable */ 68 #define IISC_CR_RXDIS (_U_(0x1) << IISC_CR_RXDIS_Pos) 69 #define IISC_CR_RXDIS_OFF_Val _U_(0x0) /**< \brief (IISC_CR) No effect */ 70 #define IISC_CR_RXDIS_ON_Val _U_(0x1) /**< \brief (IISC_CR) Disables Data Receive */ 71 #define IISC_CR_RXDIS_OFF (IISC_CR_RXDIS_OFF_Val << IISC_CR_RXDIS_Pos) 72 #define IISC_CR_RXDIS_ON (IISC_CR_RXDIS_ON_Val << IISC_CR_RXDIS_Pos) 73 #define IISC_CR_CKEN_Pos 2 /**< \brief (IISC_CR) Clocks Enable */ 74 #define IISC_CR_CKEN (_U_(0x1) << IISC_CR_CKEN_Pos) 75 #define IISC_CR_CKEN_OFF_Val _U_(0x0) /**< \brief (IISC_CR) No effect */ 76 #define IISC_CR_CKEN_ON_Val _U_(0x1) /**< \brief (IISC_CR) Enables clocks if CKDIS is not set */ 77 #define IISC_CR_CKEN_OFF (IISC_CR_CKEN_OFF_Val << IISC_CR_CKEN_Pos) 78 #define IISC_CR_CKEN_ON (IISC_CR_CKEN_ON_Val << IISC_CR_CKEN_Pos) 79 #define IISC_CR_CKDIS_Pos 3 /**< \brief (IISC_CR) Clocks Disable */ 80 #define IISC_CR_CKDIS (_U_(0x1) << IISC_CR_CKDIS_Pos) 81 #define IISC_CR_CKDIS_OFF_Val _U_(0x0) /**< \brief (IISC_CR) No effect */ 82 #define IISC_CR_CKDIS_ON_Val _U_(0x1) /**< \brief (IISC_CR) Disables clocks */ 83 #define IISC_CR_CKDIS_OFF (IISC_CR_CKDIS_OFF_Val << IISC_CR_CKDIS_Pos) 84 #define IISC_CR_CKDIS_ON (IISC_CR_CKDIS_ON_Val << IISC_CR_CKDIS_Pos) 85 #define IISC_CR_TXEN_Pos 4 /**< \brief (IISC_CR) Transmit Enable */ 86 #define IISC_CR_TXEN (_U_(0x1) << IISC_CR_TXEN_Pos) 87 #define IISC_CR_TXEN_OFF_Val _U_(0x0) /**< \brief (IISC_CR) No effect */ 88 #define IISC_CR_TXEN_ON_Val _U_(0x1) /**< \brief (IISC_CR) Enables Data Transmit if TXDIS is not set */ 89 #define IISC_CR_TXEN_OFF (IISC_CR_TXEN_OFF_Val << IISC_CR_TXEN_Pos) 90 #define IISC_CR_TXEN_ON (IISC_CR_TXEN_ON_Val << IISC_CR_TXEN_Pos) 91 #define IISC_CR_TXDIS_Pos 5 /**< \brief (IISC_CR) Transmit Disable */ 92 #define IISC_CR_TXDIS (_U_(0x1) << IISC_CR_TXDIS_Pos) 93 #define IISC_CR_TXDIS_OFF_Val _U_(0x0) /**< \brief (IISC_CR) No effect */ 94 #define IISC_CR_TXDIS_ON_Val _U_(0x1) /**< \brief (IISC_CR) Disables Data Transmit */ 95 #define IISC_CR_TXDIS_OFF (IISC_CR_TXDIS_OFF_Val << IISC_CR_TXDIS_Pos) 96 #define IISC_CR_TXDIS_ON (IISC_CR_TXDIS_ON_Val << IISC_CR_TXDIS_Pos) 97 #define IISC_CR_SWRST_Pos 7 /**< \brief (IISC_CR) Software Reset */ 98 #define IISC_CR_SWRST (_U_(0x1) << IISC_CR_SWRST_Pos) 99 #define IISC_CR_SWRST_OFF_Val _U_(0x0) /**< \brief (IISC_CR) No effect */ 100 #define IISC_CR_SWRST_ON_Val _U_(0x1) /**< \brief (IISC_CR) Performs a software reset. Has priority on any other bit in CR */ 101 #define IISC_CR_SWRST_OFF (IISC_CR_SWRST_OFF_Val << IISC_CR_SWRST_Pos) 102 #define IISC_CR_SWRST_ON (IISC_CR_SWRST_ON_Val << IISC_CR_SWRST_Pos) 103 #define IISC_CR_MASK _U_(0x000000BF) /**< \brief (IISC_CR) MASK Register */ 104 105 /* -------- IISC_MR : (IISC Offset: 0x04) (R/W 32) Mode Register -------- */ 106 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) 107 typedef union { 108 struct { 109 uint32_t MODE:1; /*!< bit: 0 Master/Slave/Controller Mode */ 110 uint32_t :1; /*!< bit: 1 Reserved */ 111 uint32_t DATALENGTH:3; /*!< bit: 2.. 4 Data Word Length */ 112 uint32_t :3; /*!< bit: 5.. 7 Reserved */ 113 uint32_t RXMONO:1; /*!< bit: 8 Receiver Mono */ 114 uint32_t RXDMA:1; /*!< bit: 9 Single or Multiple DMA Channels for Receiver */ 115 uint32_t RXLOOP:1; /*!< bit: 10 Loop-back Test Mode */ 116 uint32_t :1; /*!< bit: 11 Reserved */ 117 uint32_t TXMONO:1; /*!< bit: 12 Transmitter Mono */ 118 uint32_t TXDMA:1; /*!< bit: 13 Single or Multiple DMA Channels for Transmitter */ 119 uint32_t TXSAME:1; /*!< bit: 14 Transmit Data when Underrun */ 120 uint32_t :9; /*!< bit: 15..23 Reserved */ 121 uint32_t IMCKFS:6; /*!< bit: 24..29 Master Clock to fs Ratio */ 122 uint32_t IMCKMODE:1; /*!< bit: 30 Master Clock Mode */ 123 uint32_t IWS24:1; /*!< bit: 31 IWS Data Slot Width */ 124 } bit; /*!< Structure used for bit access */ 125 uint32_t reg; /*!< Type used for register access */ 126 } IISC_MR_Type; 127 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ 128 129 #define IISC_MR_OFFSET 0x04 /**< \brief (IISC_MR offset) Mode Register */ 130 #define IISC_MR_RESETVALUE _U_(0x00000000); /**< \brief (IISC_MR reset_value) Mode Register */ 131 132 #define IISC_MR_MODE_Pos 0 /**< \brief (IISC_MR) Master/Slave/Controller Mode */ 133 #define IISC_MR_MODE (_U_(0x1) << IISC_MR_MODE_Pos) 134 #define IISC_MR_MODE_SLAVE_Val _U_(0x0) /**< \brief (IISC_MR) Slave mode (only serial data handled, clocks received from external master or controller) */ 135 #define IISC_MR_MODE_MASTER_Val _U_(0x1) /**< \brief (IISC_MR) Master mode (clocks generated and output by IISC, serial data handled if CR.RXEN and/or CR.TXEN written to 1) */ 136 #define IISC_MR_MODE_SLAVE (IISC_MR_MODE_SLAVE_Val << IISC_MR_MODE_Pos) 137 #define IISC_MR_MODE_MASTER (IISC_MR_MODE_MASTER_Val << IISC_MR_MODE_Pos) 138 #define IISC_MR_DATALENGTH_Pos 2 /**< \brief (IISC_MR) Data Word Length */ 139 #define IISC_MR_DATALENGTH_Msk (_U_(0x7) << IISC_MR_DATALENGTH_Pos) 140 #define IISC_MR_DATALENGTH(value) (IISC_MR_DATALENGTH_Msk & ((value) << IISC_MR_DATALENGTH_Pos)) 141 #define IISC_MR_DATALENGTH_32_Val _U_(0x0) /**< \brief (IISC_MR) 32 bits */ 142 #define IISC_MR_DATALENGTH_24_Val _U_(0x1) /**< \brief (IISC_MR) 24 bits */ 143 #define IISC_MR_DATALENGTH_20_Val _U_(0x2) /**< \brief (IISC_MR) 20 bits */ 144 #define IISC_MR_DATALENGTH_18_Val _U_(0x3) /**< \brief (IISC_MR) 18 bits */ 145 #define IISC_MR_DATALENGTH_16_Val _U_(0x4) /**< \brief (IISC_MR) 16 bits */ 146 #define IISC_MR_DATALENGTH_16C_Val _U_(0x5) /**< \brief (IISC_MR) 16 bits compact stereo */ 147 #define IISC_MR_DATALENGTH_8_Val _U_(0x6) /**< \brief (IISC_MR) 8 bits */ 148 #define IISC_MR_DATALENGTH_8C_Val _U_(0x7) /**< \brief (IISC_MR) 8 bits compact stereo */ 149 #define IISC_MR_DATALENGTH_32 (IISC_MR_DATALENGTH_32_Val << IISC_MR_DATALENGTH_Pos) 150 #define IISC_MR_DATALENGTH_24 (IISC_MR_DATALENGTH_24_Val << IISC_MR_DATALENGTH_Pos) 151 #define IISC_MR_DATALENGTH_20 (IISC_MR_DATALENGTH_20_Val << IISC_MR_DATALENGTH_Pos) 152 #define IISC_MR_DATALENGTH_18 (IISC_MR_DATALENGTH_18_Val << IISC_MR_DATALENGTH_Pos) 153 #define IISC_MR_DATALENGTH_16 (IISC_MR_DATALENGTH_16_Val << IISC_MR_DATALENGTH_Pos) 154 #define IISC_MR_DATALENGTH_16C (IISC_MR_DATALENGTH_16C_Val << IISC_MR_DATALENGTH_Pos) 155 #define IISC_MR_DATALENGTH_8 (IISC_MR_DATALENGTH_8_Val << IISC_MR_DATALENGTH_Pos) 156 #define IISC_MR_DATALENGTH_8C (IISC_MR_DATALENGTH_8C_Val << IISC_MR_DATALENGTH_Pos) 157 #define IISC_MR_RXMONO_Pos 8 /**< \brief (IISC_MR) Receiver Mono */ 158 #define IISC_MR_RXMONO (_U_(0x1) << IISC_MR_RXMONO_Pos) 159 #define IISC_MR_RXMONO_STEREO_Val _U_(0x0) /**< \brief (IISC_MR) Normal mode */ 160 #define IISC_MR_RXMONO_MONO_Val _U_(0x1) /**< \brief (IISC_MR) Left channel data is duplicated to right channel */ 161 #define IISC_MR_RXMONO_STEREO (IISC_MR_RXMONO_STEREO_Val << IISC_MR_RXMONO_Pos) 162 #define IISC_MR_RXMONO_MONO (IISC_MR_RXMONO_MONO_Val << IISC_MR_RXMONO_Pos) 163 #define IISC_MR_RXDMA_Pos 9 /**< \brief (IISC_MR) Single or Multiple DMA Channels for Receiver */ 164 #define IISC_MR_RXDMA (_U_(0x1) << IISC_MR_RXDMA_Pos) 165 #define IISC_MR_RXDMA_SINGLE_Val _U_(0x0) /**< \brief (IISC_MR) Single DMA channel */ 166 #define IISC_MR_RXDMA_MULTIPLE_Val _U_(0x1) /**< \brief (IISC_MR) One DMA channel per data channel */ 167 #define IISC_MR_RXDMA_SINGLE (IISC_MR_RXDMA_SINGLE_Val << IISC_MR_RXDMA_Pos) 168 #define IISC_MR_RXDMA_MULTIPLE (IISC_MR_RXDMA_MULTIPLE_Val << IISC_MR_RXDMA_Pos) 169 #define IISC_MR_RXLOOP_Pos 10 /**< \brief (IISC_MR) Loop-back Test Mode */ 170 #define IISC_MR_RXLOOP (_U_(0x1) << IISC_MR_RXLOOP_Pos) 171 #define IISC_MR_RXLOOP_OFF_Val _U_(0x0) /**< \brief (IISC_MR) Normal mode */ 172 #define IISC_MR_RXLOOP_ON_Val _U_(0x1) /**< \brief (IISC_MR) ISDO internally connected to ISDI */ 173 #define IISC_MR_RXLOOP_OFF (IISC_MR_RXLOOP_OFF_Val << IISC_MR_RXLOOP_Pos) 174 #define IISC_MR_RXLOOP_ON (IISC_MR_RXLOOP_ON_Val << IISC_MR_RXLOOP_Pos) 175 #define IISC_MR_TXMONO_Pos 12 /**< \brief (IISC_MR) Transmitter Mono */ 176 #define IISC_MR_TXMONO (_U_(0x1) << IISC_MR_TXMONO_Pos) 177 #define IISC_MR_TXMONO_STEREO_Val _U_(0x0) /**< \brief (IISC_MR) Normal mode */ 178 #define IISC_MR_TXMONO_MONO_Val _U_(0x1) /**< \brief (IISC_MR) Left channel data is duplicated to right channel */ 179 #define IISC_MR_TXMONO_STEREO (IISC_MR_TXMONO_STEREO_Val << IISC_MR_TXMONO_Pos) 180 #define IISC_MR_TXMONO_MONO (IISC_MR_TXMONO_MONO_Val << IISC_MR_TXMONO_Pos) 181 #define IISC_MR_TXDMA_Pos 13 /**< \brief (IISC_MR) Single or Multiple DMA Channels for Transmitter */ 182 #define IISC_MR_TXDMA (_U_(0x1) << IISC_MR_TXDMA_Pos) 183 #define IISC_MR_TXDMA_SINGLE_Val _U_(0x0) /**< \brief (IISC_MR) Single DMA channel */ 184 #define IISC_MR_TXDMA_MULTIPLE_Val _U_(0x1) /**< \brief (IISC_MR) One DMA channel per data channel */ 185 #define IISC_MR_TXDMA_SINGLE (IISC_MR_TXDMA_SINGLE_Val << IISC_MR_TXDMA_Pos) 186 #define IISC_MR_TXDMA_MULTIPLE (IISC_MR_TXDMA_MULTIPLE_Val << IISC_MR_TXDMA_Pos) 187 #define IISC_MR_TXSAME_Pos 14 /**< \brief (IISC_MR) Transmit Data when Underrun */ 188 #define IISC_MR_TXSAME (_U_(0x1) << IISC_MR_TXSAME_Pos) 189 #define IISC_MR_TXSAME_ZERO_Val _U_(0x0) /**< \brief (IISC_MR) Zero data transmitted in case of underrun */ 190 #define IISC_MR_TXSAME_SAME_Val _U_(0x1) /**< \brief (IISC_MR) Last data transmitted in case of underrun */ 191 #define IISC_MR_TXSAME_ZERO (IISC_MR_TXSAME_ZERO_Val << IISC_MR_TXSAME_Pos) 192 #define IISC_MR_TXSAME_SAME (IISC_MR_TXSAME_SAME_Val << IISC_MR_TXSAME_Pos) 193 #define IISC_MR_IMCKFS_Pos 24 /**< \brief (IISC_MR) Master Clock to fs Ratio */ 194 #define IISC_MR_IMCKFS_Msk (_U_(0x3F) << IISC_MR_IMCKFS_Pos) 195 #define IISC_MR_IMCKFS(value) (IISC_MR_IMCKFS_Msk & ((value) << IISC_MR_IMCKFS_Pos)) 196 #define IISC_MR_IMCKFS_16_Val _U_(0x0) /**< \brief (IISC_MR) 16 fs */ 197 #define IISC_MR_IMCKFS_32_Val _U_(0x1) /**< \brief (IISC_MR) 32 fs */ 198 #define IISC_MR_IMCKFS_64_Val _U_(0x3) /**< \brief (IISC_MR) 64 fs */ 199 #define IISC_MR_IMCKFS_128_Val _U_(0x7) /**< \brief (IISC_MR) 128 fs */ 200 #define IISC_MR_IMCKFS_256_Val _U_(0xF) /**< \brief (IISC_MR) 256 fs */ 201 #define IISC_MR_IMCKFS_384_Val _U_(0x17) /**< \brief (IISC_MR) 384 fs */ 202 #define IISC_MR_IMCKFS_512_Val _U_(0x1F) /**< \brief (IISC_MR) 512 fs */ 203 #define IISC_MR_IMCKFS_768_Val _U_(0x2F) /**< \brief (IISC_MR) 768 fs */ 204 #define IISC_MR_IMCKFS_1024_Val _U_(0x3F) /**< \brief (IISC_MR) 1024 fs */ 205 #define IISC_MR_IMCKFS_16 (IISC_MR_IMCKFS_16_Val << IISC_MR_IMCKFS_Pos) 206 #define IISC_MR_IMCKFS_32 (IISC_MR_IMCKFS_32_Val << IISC_MR_IMCKFS_Pos) 207 #define IISC_MR_IMCKFS_64 (IISC_MR_IMCKFS_64_Val << IISC_MR_IMCKFS_Pos) 208 #define IISC_MR_IMCKFS_128 (IISC_MR_IMCKFS_128_Val << IISC_MR_IMCKFS_Pos) 209 #define IISC_MR_IMCKFS_256 (IISC_MR_IMCKFS_256_Val << IISC_MR_IMCKFS_Pos) 210 #define IISC_MR_IMCKFS_384 (IISC_MR_IMCKFS_384_Val << IISC_MR_IMCKFS_Pos) 211 #define IISC_MR_IMCKFS_512 (IISC_MR_IMCKFS_512_Val << IISC_MR_IMCKFS_Pos) 212 #define IISC_MR_IMCKFS_768 (IISC_MR_IMCKFS_768_Val << IISC_MR_IMCKFS_Pos) 213 #define IISC_MR_IMCKFS_1024 (IISC_MR_IMCKFS_1024_Val << IISC_MR_IMCKFS_Pos) 214 #define IISC_MR_IMCKMODE_Pos 30 /**< \brief (IISC_MR) Master Clock Mode */ 215 #define IISC_MR_IMCKMODE (_U_(0x1) << IISC_MR_IMCKMODE_Pos) 216 #define IISC_MR_IMCKMODE_NO_IMCK_Val _U_(0x0) /**< \brief (IISC_MR) No IMCK generated */ 217 #define IISC_MR_IMCKMODE_IMCK_Val _U_(0x1) /**< \brief (IISC_MR) IMCK generated */ 218 #define IISC_MR_IMCKMODE_NO_IMCK (IISC_MR_IMCKMODE_NO_IMCK_Val << IISC_MR_IMCKMODE_Pos) 219 #define IISC_MR_IMCKMODE_IMCK (IISC_MR_IMCKMODE_IMCK_Val << IISC_MR_IMCKMODE_Pos) 220 #define IISC_MR_IWS24_Pos 31 /**< \brief (IISC_MR) IWS Data Slot Width */ 221 #define IISC_MR_IWS24 (_U_(0x1) << IISC_MR_IWS24_Pos) 222 #define IISC_MR_IWS24_32_Val _U_(0x0) /**< \brief (IISC_MR) IWS Data Slot is 32-bit wide for DATALENGTH=18/20/24-bit */ 223 #define IISC_MR_IWS24_24_Val _U_(0x1) /**< \brief (IISC_MR) IWS Data Slot is 24-bit wide for DATALENGTH=18/20/24-bit */ 224 #define IISC_MR_IWS24_32 (IISC_MR_IWS24_32_Val << IISC_MR_IWS24_Pos) 225 #define IISC_MR_IWS24_24 (IISC_MR_IWS24_24_Val << IISC_MR_IWS24_Pos) 226 #define IISC_MR_MASK _U_(0xFF00771D) /**< \brief (IISC_MR) MASK Register */ 227 228 /* -------- IISC_SR : (IISC Offset: 0x08) (R/ 32) Status Register -------- */ 229 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) 230 typedef union { 231 struct { 232 uint32_t RXEN:1; /*!< bit: 0 Receive Enable */ 233 uint32_t RXRDY:1; /*!< bit: 1 Receive Ready */ 234 uint32_t RXOR:1; /*!< bit: 2 Receive Overrun */ 235 uint32_t :1; /*!< bit: 3 Reserved */ 236 uint32_t TXEN:1; /*!< bit: 4 Transmit Enable */ 237 uint32_t TXRDY:1; /*!< bit: 5 Transmit Ready */ 238 uint32_t TXUR:1; /*!< bit: 6 Transmit Underrun */ 239 uint32_t :1; /*!< bit: 7 Reserved */ 240 uint32_t RXORCH:2; /*!< bit: 8.. 9 Receive Overrun Channels */ 241 uint32_t :10; /*!< bit: 10..19 Reserved */ 242 uint32_t TXURCH:2; /*!< bit: 20..21 Transmit Underrun Channels */ 243 uint32_t :10; /*!< bit: 22..31 Reserved */ 244 } bit; /*!< Structure used for bit access */ 245 uint32_t reg; /*!< Type used for register access */ 246 } IISC_SR_Type; 247 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ 248 249 #define IISC_SR_OFFSET 0x08 /**< \brief (IISC_SR offset) Status Register */ 250 #define IISC_SR_RESETVALUE _U_(0x00000000); /**< \brief (IISC_SR reset_value) Status Register */ 251 252 #define IISC_SR_RXEN_Pos 0 /**< \brief (IISC_SR) Receive Enable */ 253 #define IISC_SR_RXEN (_U_(0x1) << IISC_SR_RXEN_Pos) 254 #define IISC_SR_RXEN_OFF_Val _U_(0x0) /**< \brief (IISC_SR) Receiver is effectively disabled, following a CR.RXDIS or CR.SWRST request */ 255 #define IISC_SR_RXEN_ON_Val _U_(0x1) /**< \brief (IISC_SR) Receiver is effectively enabled, following a CR.RXEN request */ 256 #define IISC_SR_RXEN_OFF (IISC_SR_RXEN_OFF_Val << IISC_SR_RXEN_Pos) 257 #define IISC_SR_RXEN_ON (IISC_SR_RXEN_ON_Val << IISC_SR_RXEN_Pos) 258 #define IISC_SR_RXRDY_Pos 1 /**< \brief (IISC_SR) Receive Ready */ 259 #define IISC_SR_RXRDY (_U_(0x1) << IISC_SR_RXRDY_Pos) 260 #define IISC_SR_RXRDY_EMPTY_Val _U_(0x0) /**< \brief (IISC_SR) The register RHR is empty and can't be read */ 261 #define IISC_SR_RXRDY_FULL_Val _U_(0x1) /**< \brief (IISC_SR) The register RHR is full and is ready to be read */ 262 #define IISC_SR_RXRDY_EMPTY (IISC_SR_RXRDY_EMPTY_Val << IISC_SR_RXRDY_Pos) 263 #define IISC_SR_RXRDY_FULL (IISC_SR_RXRDY_FULL_Val << IISC_SR_RXRDY_Pos) 264 #define IISC_SR_RXOR_Pos 2 /**< \brief (IISC_SR) Receive Overrun */ 265 #define IISC_SR_RXOR (_U_(0x1) << IISC_SR_RXOR_Pos) 266 #define IISC_SR_RXOR_NO_Val _U_(0x0) /**< \brief (IISC_SR) No overrun */ 267 #define IISC_SR_RXOR_YES_Val _U_(0x1) /**< \brief (IISC_SR) The previous received data has not been read. This data is lost */ 268 #define IISC_SR_RXOR_NO (IISC_SR_RXOR_NO_Val << IISC_SR_RXOR_Pos) 269 #define IISC_SR_RXOR_YES (IISC_SR_RXOR_YES_Val << IISC_SR_RXOR_Pos) 270 #define IISC_SR_TXEN_Pos 4 /**< \brief (IISC_SR) Transmit Enable */ 271 #define IISC_SR_TXEN (_U_(0x1) << IISC_SR_TXEN_Pos) 272 #define IISC_SR_TXEN_OFF_Val _U_(0x0) /**< \brief (IISC_SR) Transmitter is effectively disabled, following a CR.TXDIS or CR.SWRST request */ 273 #define IISC_SR_TXEN_ON_Val _U_(0x1) /**< \brief (IISC_SR) Transmitter is effectively enabled, following a CR.TXEN request */ 274 #define IISC_SR_TXEN_OFF (IISC_SR_TXEN_OFF_Val << IISC_SR_TXEN_Pos) 275 #define IISC_SR_TXEN_ON (IISC_SR_TXEN_ON_Val << IISC_SR_TXEN_Pos) 276 #define IISC_SR_TXRDY_Pos 5 /**< \brief (IISC_SR) Transmit Ready */ 277 #define IISC_SR_TXRDY (_U_(0x1) << IISC_SR_TXRDY_Pos) 278 #define IISC_SR_TXRDY_FULL_Val _U_(0x0) /**< \brief (IISC_SR) The register THR is full and can't be written */ 279 #define IISC_SR_TXRDY_EMPTY_Val _U_(0x1) /**< \brief (IISC_SR) The register THR is empty and is ready to be written */ 280 #define IISC_SR_TXRDY_FULL (IISC_SR_TXRDY_FULL_Val << IISC_SR_TXRDY_Pos) 281 #define IISC_SR_TXRDY_EMPTY (IISC_SR_TXRDY_EMPTY_Val << IISC_SR_TXRDY_Pos) 282 #define IISC_SR_TXUR_Pos 6 /**< \brief (IISC_SR) Transmit Underrun */ 283 #define IISC_SR_TXUR (_U_(0x1) << IISC_SR_TXUR_Pos) 284 #define IISC_SR_TXUR_NO_Val _U_(0x0) /**< \brief (IISC_SR) No underrun */ 285 #define IISC_SR_TXUR_YES_Val _U_(0x1) /**< \brief (IISC_SR) The last bit of the last data written to the register THR has been set. Until the next write to THR, data will be sent according to MR.TXSAME field */ 286 #define IISC_SR_TXUR_NO (IISC_SR_TXUR_NO_Val << IISC_SR_TXUR_Pos) 287 #define IISC_SR_TXUR_YES (IISC_SR_TXUR_YES_Val << IISC_SR_TXUR_Pos) 288 #define IISC_SR_RXORCH_Pos 8 /**< \brief (IISC_SR) Receive Overrun Channels */ 289 #define IISC_SR_RXORCH_Msk (_U_(0x3) << IISC_SR_RXORCH_Pos) 290 #define IISC_SR_RXORCH(value) (IISC_SR_RXORCH_Msk & ((value) << IISC_SR_RXORCH_Pos)) 291 #define IISC_SR_RXORCH_LEFT_Val _U_(0x0) /**< \brief (IISC_SR) Overrun first occurred on left channel */ 292 #define IISC_SR_RXORCH_RIGHT_Val _U_(0x1) /**< \brief (IISC_SR) Overrun first occurred on right channel */ 293 #define IISC_SR_RXORCH_LEFT (IISC_SR_RXORCH_LEFT_Val << IISC_SR_RXORCH_Pos) 294 #define IISC_SR_RXORCH_RIGHT (IISC_SR_RXORCH_RIGHT_Val << IISC_SR_RXORCH_Pos) 295 #define IISC_SR_TXURCH_Pos 20 /**< \brief (IISC_SR) Transmit Underrun Channels */ 296 #define IISC_SR_TXURCH_Msk (_U_(0x3) << IISC_SR_TXURCH_Pos) 297 #define IISC_SR_TXURCH(value) (IISC_SR_TXURCH_Msk & ((value) << IISC_SR_TXURCH_Pos)) 298 #define IISC_SR_TXURCH_LEFT_Val _U_(0x0) /**< \brief (IISC_SR) Underrun first occurred on left channel */ 299 #define IISC_SR_TXURCH_RIGHT_Val _U_(0x1) /**< \brief (IISC_SR) Underrun first occurred on right channel */ 300 #define IISC_SR_TXURCH_LEFT (IISC_SR_TXURCH_LEFT_Val << IISC_SR_TXURCH_Pos) 301 #define IISC_SR_TXURCH_RIGHT (IISC_SR_TXURCH_RIGHT_Val << IISC_SR_TXURCH_Pos) 302 #define IISC_SR_MASK _U_(0x00300377) /**< \brief (IISC_SR) MASK Register */ 303 304 /* -------- IISC_SCR : (IISC Offset: 0x0C) ( /W 32) Status Clear Register -------- */ 305 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) 306 typedef union { 307 struct { 308 uint32_t :2; /*!< bit: 0.. 1 Reserved */ 309 uint32_t RXOR:1; /*!< bit: 2 Receive Overrun */ 310 uint32_t :3; /*!< bit: 3.. 5 Reserved */ 311 uint32_t TXUR:1; /*!< bit: 6 Transmit Underrun */ 312 uint32_t :1; /*!< bit: 7 Reserved */ 313 uint32_t RXORCH:2; /*!< bit: 8.. 9 Receive Overrun Channels */ 314 uint32_t :10; /*!< bit: 10..19 Reserved */ 315 uint32_t TXURCH:2; /*!< bit: 20..21 Transmit Underrun Channels */ 316 uint32_t :10; /*!< bit: 22..31 Reserved */ 317 } bit; /*!< Structure used for bit access */ 318 uint32_t reg; /*!< Type used for register access */ 319 } IISC_SCR_Type; 320 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ 321 322 #define IISC_SCR_OFFSET 0x0C /**< \brief (IISC_SCR offset) Status Clear Register */ 323 324 #define IISC_SCR_RXOR_Pos 2 /**< \brief (IISC_SCR) Receive Overrun */ 325 #define IISC_SCR_RXOR (_U_(0x1) << IISC_SCR_RXOR_Pos) 326 #define IISC_SCR_RXOR_NO_Val _U_(0x0) /**< \brief (IISC_SCR) No effect */ 327 #define IISC_SCR_RXOR_CLEAR_Val _U_(0x1) /**< \brief (IISC_SCR) Clears the corresponding SR bit */ 328 #define IISC_SCR_RXOR_NO (IISC_SCR_RXOR_NO_Val << IISC_SCR_RXOR_Pos) 329 #define IISC_SCR_RXOR_CLEAR (IISC_SCR_RXOR_CLEAR_Val << IISC_SCR_RXOR_Pos) 330 #define IISC_SCR_TXUR_Pos 6 /**< \brief (IISC_SCR) Transmit Underrun */ 331 #define IISC_SCR_TXUR (_U_(0x1) << IISC_SCR_TXUR_Pos) 332 #define IISC_SCR_TXUR_NO_Val _U_(0x0) /**< \brief (IISC_SCR) No effect */ 333 #define IISC_SCR_TXUR_CLEAR_Val _U_(0x1) /**< \brief (IISC_SCR) Clears the corresponding SR bit */ 334 #define IISC_SCR_TXUR_NO (IISC_SCR_TXUR_NO_Val << IISC_SCR_TXUR_Pos) 335 #define IISC_SCR_TXUR_CLEAR (IISC_SCR_TXUR_CLEAR_Val << IISC_SCR_TXUR_Pos) 336 #define IISC_SCR_RXORCH_Pos 8 /**< \brief (IISC_SCR) Receive Overrun Channels */ 337 #define IISC_SCR_RXORCH_Msk (_U_(0x3) << IISC_SCR_RXORCH_Pos) 338 #define IISC_SCR_RXORCH(value) (IISC_SCR_RXORCH_Msk & ((value) << IISC_SCR_RXORCH_Pos)) 339 #define IISC_SCR_TXURCH_Pos 20 /**< \brief (IISC_SCR) Transmit Underrun Channels */ 340 #define IISC_SCR_TXURCH_Msk (_U_(0x3) << IISC_SCR_TXURCH_Pos) 341 #define IISC_SCR_TXURCH(value) (IISC_SCR_TXURCH_Msk & ((value) << IISC_SCR_TXURCH_Pos)) 342 #define IISC_SCR_MASK _U_(0x00300344) /**< \brief (IISC_SCR) MASK Register */ 343 344 /* -------- IISC_SSR : (IISC Offset: 0x10) ( /W 32) Status Set Register -------- */ 345 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) 346 typedef union { 347 struct { 348 uint32_t :2; /*!< bit: 0.. 1 Reserved */ 349 uint32_t RXOR:1; /*!< bit: 2 Receive Overrun */ 350 uint32_t :3; /*!< bit: 3.. 5 Reserved */ 351 uint32_t TXUR:1; /*!< bit: 6 Transmit Underrun */ 352 uint32_t :1; /*!< bit: 7 Reserved */ 353 uint32_t RXORCH:2; /*!< bit: 8.. 9 Receive Overrun Channels */ 354 uint32_t :10; /*!< bit: 10..19 Reserved */ 355 uint32_t TXURCH:2; /*!< bit: 20..21 Transmit Underrun Channels */ 356 uint32_t :10; /*!< bit: 22..31 Reserved */ 357 } bit; /*!< Structure used for bit access */ 358 uint32_t reg; /*!< Type used for register access */ 359 } IISC_SSR_Type; 360 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ 361 362 #define IISC_SSR_OFFSET 0x10 /**< \brief (IISC_SSR offset) Status Set Register */ 363 364 #define IISC_SSR_RXOR_Pos 2 /**< \brief (IISC_SSR) Receive Overrun */ 365 #define IISC_SSR_RXOR (_U_(0x1) << IISC_SSR_RXOR_Pos) 366 #define IISC_SSR_RXOR_NO_Val _U_(0x0) /**< \brief (IISC_SSR) No effect */ 367 #define IISC_SSR_RXOR_SET_Val _U_(0x1) /**< \brief (IISC_SSR) Sets corresponding SR bit */ 368 #define IISC_SSR_RXOR_NO (IISC_SSR_RXOR_NO_Val << IISC_SSR_RXOR_Pos) 369 #define IISC_SSR_RXOR_SET (IISC_SSR_RXOR_SET_Val << IISC_SSR_RXOR_Pos) 370 #define IISC_SSR_TXUR_Pos 6 /**< \brief (IISC_SSR) Transmit Underrun */ 371 #define IISC_SSR_TXUR (_U_(0x1) << IISC_SSR_TXUR_Pos) 372 #define IISC_SSR_TXUR_NO_Val _U_(0x0) /**< \brief (IISC_SSR) No effect */ 373 #define IISC_SSR_TXUR_SET_Val _U_(0x1) /**< \brief (IISC_SSR) Sets corresponding SR bit */ 374 #define IISC_SSR_TXUR_NO (IISC_SSR_TXUR_NO_Val << IISC_SSR_TXUR_Pos) 375 #define IISC_SSR_TXUR_SET (IISC_SSR_TXUR_SET_Val << IISC_SSR_TXUR_Pos) 376 #define IISC_SSR_RXORCH_Pos 8 /**< \brief (IISC_SSR) Receive Overrun Channels */ 377 #define IISC_SSR_RXORCH_Msk (_U_(0x3) << IISC_SSR_RXORCH_Pos) 378 #define IISC_SSR_RXORCH(value) (IISC_SSR_RXORCH_Msk & ((value) << IISC_SSR_RXORCH_Pos)) 379 #define IISC_SSR_TXURCH_Pos 20 /**< \brief (IISC_SSR) Transmit Underrun Channels */ 380 #define IISC_SSR_TXURCH_Msk (_U_(0x3) << IISC_SSR_TXURCH_Pos) 381 #define IISC_SSR_TXURCH(value) (IISC_SSR_TXURCH_Msk & ((value) << IISC_SSR_TXURCH_Pos)) 382 #define IISC_SSR_MASK _U_(0x00300344) /**< \brief (IISC_SSR) MASK Register */ 383 384 /* -------- IISC_IER : (IISC Offset: 0x14) ( /W 32) Interrupt Enable Register -------- */ 385 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) 386 typedef union { 387 struct { 388 uint32_t :1; /*!< bit: 0 Reserved */ 389 uint32_t RXRDY:1; /*!< bit: 1 Receiver Ready Interrupt Enable */ 390 uint32_t RXOR:1; /*!< bit: 2 Receive Overrun Interrupt Enable */ 391 uint32_t :2; /*!< bit: 3.. 4 Reserved */ 392 uint32_t TXRDY:1; /*!< bit: 5 Transmit Ready Interrupt Enable */ 393 uint32_t TXUR:1; /*!< bit: 6 Transmit Underrun Interrupt Enable */ 394 uint32_t :25; /*!< bit: 7..31 Reserved */ 395 } bit; /*!< Structure used for bit access */ 396 uint32_t reg; /*!< Type used for register access */ 397 } IISC_IER_Type; 398 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ 399 400 #define IISC_IER_OFFSET 0x14 /**< \brief (IISC_IER offset) Interrupt Enable Register */ 401 402 #define IISC_IER_RXRDY_Pos 1 /**< \brief (IISC_IER) Receiver Ready Interrupt Enable */ 403 #define IISC_IER_RXRDY (_U_(0x1) << IISC_IER_RXRDY_Pos) 404 #define IISC_IER_RXRDY_OFF_Val _U_(0x0) /**< \brief (IISC_IER) No effect */ 405 #define IISC_IER_RXRDY_ON_Val _U_(0x1) /**< \brief (IISC_IER) Enables the corresponding interrupt */ 406 #define IISC_IER_RXRDY_OFF (IISC_IER_RXRDY_OFF_Val << IISC_IER_RXRDY_Pos) 407 #define IISC_IER_RXRDY_ON (IISC_IER_RXRDY_ON_Val << IISC_IER_RXRDY_Pos) 408 #define IISC_IER_RXOR_Pos 2 /**< \brief (IISC_IER) Receive Overrun Interrupt Enable */ 409 #define IISC_IER_RXOR (_U_(0x1) << IISC_IER_RXOR_Pos) 410 #define IISC_IER_RXOR_OFF_Val _U_(0x0) /**< \brief (IISC_IER) No effect */ 411 #define IISC_IER_RXOR_ON_Val _U_(0x1) /**< \brief (IISC_IER) Enables the corresponding interrupt */ 412 #define IISC_IER_RXOR_OFF (IISC_IER_RXOR_OFF_Val << IISC_IER_RXOR_Pos) 413 #define IISC_IER_RXOR_ON (IISC_IER_RXOR_ON_Val << IISC_IER_RXOR_Pos) 414 #define IISC_IER_TXRDY_Pos 5 /**< \brief (IISC_IER) Transmit Ready Interrupt Enable */ 415 #define IISC_IER_TXRDY (_U_(0x1) << IISC_IER_TXRDY_Pos) 416 #define IISC_IER_TXRDY_OFF_Val _U_(0x0) /**< \brief (IISC_IER) No effect */ 417 #define IISC_IER_TXRDY_ON_Val _U_(0x1) /**< \brief (IISC_IER) Enables the corresponding interrupt */ 418 #define IISC_IER_TXRDY_OFF (IISC_IER_TXRDY_OFF_Val << IISC_IER_TXRDY_Pos) 419 #define IISC_IER_TXRDY_ON (IISC_IER_TXRDY_ON_Val << IISC_IER_TXRDY_Pos) 420 #define IISC_IER_TXUR_Pos 6 /**< \brief (IISC_IER) Transmit Underrun Interrupt Enable */ 421 #define IISC_IER_TXUR (_U_(0x1) << IISC_IER_TXUR_Pos) 422 #define IISC_IER_TXUR_OFF_Val _U_(0x0) /**< \brief (IISC_IER) No effect */ 423 #define IISC_IER_TXUR_ON_Val _U_(0x1) /**< \brief (IISC_IER) Enables the corresponding interrupt */ 424 #define IISC_IER_TXUR_OFF (IISC_IER_TXUR_OFF_Val << IISC_IER_TXUR_Pos) 425 #define IISC_IER_TXUR_ON (IISC_IER_TXUR_ON_Val << IISC_IER_TXUR_Pos) 426 #define IISC_IER_MASK _U_(0x00000066) /**< \brief (IISC_IER) MASK Register */ 427 428 /* -------- IISC_IDR : (IISC Offset: 0x18) ( /W 32) Interrupt Disable Register -------- */ 429 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) 430 typedef union { 431 struct { 432 uint32_t :1; /*!< bit: 0 Reserved */ 433 uint32_t RXRDY:1; /*!< bit: 1 Receive Ready Interrupt Disable */ 434 uint32_t RXOR:1; /*!< bit: 2 Receive Overrun Interrupt Disable */ 435 uint32_t :2; /*!< bit: 3.. 4 Reserved */ 436 uint32_t TXRDY:1; /*!< bit: 5 Transmit Ready Interrupt Disable */ 437 uint32_t TXUR:1; /*!< bit: 6 Transmit Underrun Interrupt Disable */ 438 uint32_t :25; /*!< bit: 7..31 Reserved */ 439 } bit; /*!< Structure used for bit access */ 440 uint32_t reg; /*!< Type used for register access */ 441 } IISC_IDR_Type; 442 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ 443 444 #define IISC_IDR_OFFSET 0x18 /**< \brief (IISC_IDR offset) Interrupt Disable Register */ 445 446 #define IISC_IDR_RXRDY_Pos 1 /**< \brief (IISC_IDR) Receive Ready Interrupt Disable */ 447 #define IISC_IDR_RXRDY (_U_(0x1) << IISC_IDR_RXRDY_Pos) 448 #define IISC_IDR_RXRDY_OFF_Val _U_(0x0) /**< \brief (IISC_IDR) No effect */ 449 #define IISC_IDR_RXRDY_ON_Val _U_(0x1) /**< \brief (IISC_IDR) Disables the corresponding interrupt */ 450 #define IISC_IDR_RXRDY_OFF (IISC_IDR_RXRDY_OFF_Val << IISC_IDR_RXRDY_Pos) 451 #define IISC_IDR_RXRDY_ON (IISC_IDR_RXRDY_ON_Val << IISC_IDR_RXRDY_Pos) 452 #define IISC_IDR_RXOR_Pos 2 /**< \brief (IISC_IDR) Receive Overrun Interrupt Disable */ 453 #define IISC_IDR_RXOR (_U_(0x1) << IISC_IDR_RXOR_Pos) 454 #define IISC_IDR_RXOR_OFF_Val _U_(0x0) /**< \brief (IISC_IDR) No effect */ 455 #define IISC_IDR_RXOR_ON_Val _U_(0x1) /**< \brief (IISC_IDR) Disables the corresponding interrupt */ 456 #define IISC_IDR_RXOR_OFF (IISC_IDR_RXOR_OFF_Val << IISC_IDR_RXOR_Pos) 457 #define IISC_IDR_RXOR_ON (IISC_IDR_RXOR_ON_Val << IISC_IDR_RXOR_Pos) 458 #define IISC_IDR_TXRDY_Pos 5 /**< \brief (IISC_IDR) Transmit Ready Interrupt Disable */ 459 #define IISC_IDR_TXRDY (_U_(0x1) << IISC_IDR_TXRDY_Pos) 460 #define IISC_IDR_TXRDY_OFF_Val _U_(0x0) /**< \brief (IISC_IDR) No effect */ 461 #define IISC_IDR_TXRDY_ON_Val _U_(0x1) /**< \brief (IISC_IDR) Disables the corresponding interrupt */ 462 #define IISC_IDR_TXRDY_OFF (IISC_IDR_TXRDY_OFF_Val << IISC_IDR_TXRDY_Pos) 463 #define IISC_IDR_TXRDY_ON (IISC_IDR_TXRDY_ON_Val << IISC_IDR_TXRDY_Pos) 464 #define IISC_IDR_TXUR_Pos 6 /**< \brief (IISC_IDR) Transmit Underrun Interrupt Disable */ 465 #define IISC_IDR_TXUR (_U_(0x1) << IISC_IDR_TXUR_Pos) 466 #define IISC_IDR_TXUR_OFF_Val _U_(0x0) /**< \brief (IISC_IDR) No effect */ 467 #define IISC_IDR_TXUR_ON_Val _U_(0x1) /**< \brief (IISC_IDR) Disables the corresponding interrupt */ 468 #define IISC_IDR_TXUR_OFF (IISC_IDR_TXUR_OFF_Val << IISC_IDR_TXUR_Pos) 469 #define IISC_IDR_TXUR_ON (IISC_IDR_TXUR_ON_Val << IISC_IDR_TXUR_Pos) 470 #define IISC_IDR_MASK _U_(0x00000066) /**< \brief (IISC_IDR) MASK Register */ 471 472 /* -------- IISC_IMR : (IISC Offset: 0x1C) (R/ 32) Interrupt Mask Register -------- */ 473 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) 474 typedef union { 475 struct { 476 uint32_t :1; /*!< bit: 0 Reserved */ 477 uint32_t RXRDY:1; /*!< bit: 1 Receive Ready Interrupt Mask */ 478 uint32_t RXOR:1; /*!< bit: 2 Receive Overrun Interrupt Mask */ 479 uint32_t :2; /*!< bit: 3.. 4 Reserved */ 480 uint32_t TXRDY:1; /*!< bit: 5 Transmit Ready Interrupt Mask */ 481 uint32_t TXUR:1; /*!< bit: 6 Transmit Underrun Interrupt Mask */ 482 uint32_t :25; /*!< bit: 7..31 Reserved */ 483 } bit; /*!< Structure used for bit access */ 484 uint32_t reg; /*!< Type used for register access */ 485 } IISC_IMR_Type; 486 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ 487 488 #define IISC_IMR_OFFSET 0x1C /**< \brief (IISC_IMR offset) Interrupt Mask Register */ 489 #define IISC_IMR_RESETVALUE _U_(0x00000000); /**< \brief (IISC_IMR reset_value) Interrupt Mask Register */ 490 491 #define IISC_IMR_RXRDY_Pos 1 /**< \brief (IISC_IMR) Receive Ready Interrupt Mask */ 492 #define IISC_IMR_RXRDY (_U_(0x1) << IISC_IMR_RXRDY_Pos) 493 #define IISC_IMR_RXRDY_DISABLED_Val _U_(0x0) /**< \brief (IISC_IMR) The corresponding interrupt is disabled */ 494 #define IISC_IMR_RXRDY_ENABLED_Val _U_(0x1) /**< \brief (IISC_IMR) The corresponding interrupt is enabled */ 495 #define IISC_IMR_RXRDY_DISABLED (IISC_IMR_RXRDY_DISABLED_Val << IISC_IMR_RXRDY_Pos) 496 #define IISC_IMR_RXRDY_ENABLED (IISC_IMR_RXRDY_ENABLED_Val << IISC_IMR_RXRDY_Pos) 497 #define IISC_IMR_RXOR_Pos 2 /**< \brief (IISC_IMR) Receive Overrun Interrupt Mask */ 498 #define IISC_IMR_RXOR (_U_(0x1) << IISC_IMR_RXOR_Pos) 499 #define IISC_IMR_RXOR_DISABLED_Val _U_(0x0) /**< \brief (IISC_IMR) The corresponding interrupt is disabled */ 500 #define IISC_IMR_RXOR_ENABLED_Val _U_(0x1) /**< \brief (IISC_IMR) The corresponding interrupt is enabled */ 501 #define IISC_IMR_RXOR_DISABLED (IISC_IMR_RXOR_DISABLED_Val << IISC_IMR_RXOR_Pos) 502 #define IISC_IMR_RXOR_ENABLED (IISC_IMR_RXOR_ENABLED_Val << IISC_IMR_RXOR_Pos) 503 #define IISC_IMR_TXRDY_Pos 5 /**< \brief (IISC_IMR) Transmit Ready Interrupt Mask */ 504 #define IISC_IMR_TXRDY (_U_(0x1) << IISC_IMR_TXRDY_Pos) 505 #define IISC_IMR_TXRDY_DISABLED_Val _U_(0x0) /**< \brief (IISC_IMR) The corresponding interrupt is disabled */ 506 #define IISC_IMR_TXRDY_ENABLED_Val _U_(0x1) /**< \brief (IISC_IMR) The corresponding interrupt is enabled */ 507 #define IISC_IMR_TXRDY_DISABLED (IISC_IMR_TXRDY_DISABLED_Val << IISC_IMR_TXRDY_Pos) 508 #define IISC_IMR_TXRDY_ENABLED (IISC_IMR_TXRDY_ENABLED_Val << IISC_IMR_TXRDY_Pos) 509 #define IISC_IMR_TXUR_Pos 6 /**< \brief (IISC_IMR) Transmit Underrun Interrupt Mask */ 510 #define IISC_IMR_TXUR (_U_(0x1) << IISC_IMR_TXUR_Pos) 511 #define IISC_IMR_TXUR_DISABLED_Val _U_(0x0) /**< \brief (IISC_IMR) The corresponding interrupt is disabled */ 512 #define IISC_IMR_TXUR_ENABLED_Val _U_(0x1) /**< \brief (IISC_IMR) The corresponding interrupt is enabled */ 513 #define IISC_IMR_TXUR_DISABLED (IISC_IMR_TXUR_DISABLED_Val << IISC_IMR_TXUR_Pos) 514 #define IISC_IMR_TXUR_ENABLED (IISC_IMR_TXUR_ENABLED_Val << IISC_IMR_TXUR_Pos) 515 #define IISC_IMR_MASK _U_(0x00000066) /**< \brief (IISC_IMR) MASK Register */ 516 517 /* -------- IISC_RHR : (IISC Offset: 0x20) (R/ 32) Receive Holding Register -------- */ 518 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) 519 typedef union { 520 struct { 521 uint32_t RDAT:32; /*!< bit: 0..31 Receive Data */ 522 } bit; /*!< Structure used for bit access */ 523 uint32_t reg; /*!< Type used for register access */ 524 } IISC_RHR_Type; 525 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ 526 527 #define IISC_RHR_OFFSET 0x20 /**< \brief (IISC_RHR offset) Receive Holding Register */ 528 #define IISC_RHR_RESETVALUE _U_(0x00000000); /**< \brief (IISC_RHR reset_value) Receive Holding Register */ 529 530 #define IISC_RHR_RDAT_Pos 0 /**< \brief (IISC_RHR) Receive Data */ 531 #define IISC_RHR_RDAT_Msk (_U_(0xFFFFFFFF) << IISC_RHR_RDAT_Pos) 532 #define IISC_RHR_RDAT(value) (IISC_RHR_RDAT_Msk & ((value) << IISC_RHR_RDAT_Pos)) 533 #define IISC_RHR_MASK _U_(0xFFFFFFFF) /**< \brief (IISC_RHR) MASK Register */ 534 535 /* -------- IISC_THR : (IISC Offset: 0x24) ( /W 32) Transmit Holding Register -------- */ 536 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) 537 typedef union { 538 struct { 539 uint32_t TDAT:32; /*!< bit: 0..31 Transmit Data */ 540 } bit; /*!< Structure used for bit access */ 541 uint32_t reg; /*!< Type used for register access */ 542 } IISC_THR_Type; 543 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ 544 545 #define IISC_THR_OFFSET 0x24 /**< \brief (IISC_THR offset) Transmit Holding Register */ 546 547 #define IISC_THR_TDAT_Pos 0 /**< \brief (IISC_THR) Transmit Data */ 548 #define IISC_THR_TDAT_Msk (_U_(0xFFFFFFFF) << IISC_THR_TDAT_Pos) 549 #define IISC_THR_TDAT(value) (IISC_THR_TDAT_Msk & ((value) << IISC_THR_TDAT_Pos)) 550 #define IISC_THR_MASK _U_(0xFFFFFFFF) /**< \brief (IISC_THR) MASK Register */ 551 552 /* -------- IISC_VERSION : (IISC Offset: 0x28) (R/ 32) Version Register -------- */ 553 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) 554 typedef union { 555 struct { 556 uint32_t VERSION:12; /*!< bit: 0..11 Reserved. Value subject to change. No functionality associated. This is the Atmel internal version of the macrocell. */ 557 uint32_t :4; /*!< bit: 12..15 Reserved */ 558 uint32_t VARIANT:4; /*!< bit: 16..19 Reserved. Value subject to change. No functionality associated. */ 559 uint32_t :12; /*!< bit: 20..31 Reserved */ 560 } bit; /*!< Structure used for bit access */ 561 uint32_t reg; /*!< Type used for register access */ 562 } IISC_VERSION_Type; 563 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ 564 565 #define IISC_VERSION_OFFSET 0x28 /**< \brief (IISC_VERSION offset) Version Register */ 566 #define IISC_VERSION_RESETVALUE _U_(0x00000100); /**< \brief (IISC_VERSION reset_value) Version Register */ 567 568 #define IISC_VERSION_VERSION_Pos 0 /**< \brief (IISC_VERSION) Reserved. Value subject to change. No functionality associated. This is the Atmel internal version of the macrocell. */ 569 #define IISC_VERSION_VERSION_Msk (_U_(0xFFF) << IISC_VERSION_VERSION_Pos) 570 #define IISC_VERSION_VERSION(value) (IISC_VERSION_VERSION_Msk & ((value) << IISC_VERSION_VERSION_Pos)) 571 #define IISC_VERSION_VARIANT_Pos 16 /**< \brief (IISC_VERSION) Reserved. Value subject to change. No functionality associated. */ 572 #define IISC_VERSION_VARIANT_Msk (_U_(0xF) << IISC_VERSION_VARIANT_Pos) 573 #define IISC_VERSION_VARIANT(value) (IISC_VERSION_VARIANT_Msk & ((value) << IISC_VERSION_VARIANT_Pos)) 574 #define IISC_VERSION_MASK _U_(0x000F0FFF) /**< \brief (IISC_VERSION) MASK Register */ 575 576 /* -------- IISC_PARAMETER : (IISC Offset: 0x2C) (R/ 32) Parameter Register -------- */ 577 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) 578 typedef union { 579 struct { 580 uint32_t :7; /*!< bit: 0.. 6 Reserved */ 581 uint32_t FORMAT:1; /*!< bit: 7 Data protocol format */ 582 uint32_t :8; /*!< bit: 8..15 Reserved */ 583 uint32_t NBCHAN:5; /*!< bit: 16..20 Maximum number of channels - 1 */ 584 uint32_t :11; /*!< bit: 21..31 Reserved */ 585 } bit; /*!< Structure used for bit access */ 586 uint32_t reg; /*!< Type used for register access */ 587 } IISC_PARAMETER_Type; 588 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ 589 590 #define IISC_PARAMETER_OFFSET 0x2C /**< \brief (IISC_PARAMETER offset) Parameter Register */ 591 #define IISC_PARAMETER_RESETVALUE _U_(0x00010000); /**< \brief (IISC_PARAMETER reset_value) Parameter Register */ 592 593 #define IISC_PARAMETER_FORMAT_Pos 7 /**< \brief (IISC_PARAMETER) Data protocol format */ 594 #define IISC_PARAMETER_FORMAT (_U_(0x1) << IISC_PARAMETER_FORMAT_Pos) 595 #define IISC_PARAMETER_FORMAT_I2S_Val _U_(0x0) /**< \brief (IISC_PARAMETER) I2S format, stereo with IWS low for left channel */ 596 #define IISC_PARAMETER_FORMAT_I2S (IISC_PARAMETER_FORMAT_I2S_Val << IISC_PARAMETER_FORMAT_Pos) 597 #define IISC_PARAMETER_NBCHAN_Pos 16 /**< \brief (IISC_PARAMETER) Maximum number of channels - 1 */ 598 #define IISC_PARAMETER_NBCHAN_Msk (_U_(0x1F) << IISC_PARAMETER_NBCHAN_Pos) 599 #define IISC_PARAMETER_NBCHAN(value) (IISC_PARAMETER_NBCHAN_Msk & ((value) << IISC_PARAMETER_NBCHAN_Pos)) 600 #define IISC_PARAMETER_MASK _U_(0x001F0080) /**< \brief (IISC_PARAMETER) MASK Register */ 601 602 /** \brief IISC hardware registers */ 603 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) 604 typedef struct { 605 __O uint32_t CR; /**< \brief Offset: 0x00 ( /W 32) Control Register */ 606 __IO uint32_t MR; /**< \brief Offset: 0x04 (R/W 32) Mode Register */ 607 __I uint32_t SR; /**< \brief Offset: 0x08 (R/ 32) Status Register */ 608 __O uint32_t SCR; /**< \brief Offset: 0x0C ( /W 32) Status Clear Register */ 609 __O uint32_t SSR; /**< \brief Offset: 0x10 ( /W 32) Status Set Register */ 610 __O uint32_t IER; /**< \brief Offset: 0x14 ( /W 32) Interrupt Enable Register */ 611 __O uint32_t IDR; /**< \brief Offset: 0x18 ( /W 32) Interrupt Disable Register */ 612 __I uint32_t IMR; /**< \brief Offset: 0x1C (R/ 32) Interrupt Mask Register */ 613 __I uint32_t RHR; /**< \brief Offset: 0x20 (R/ 32) Receive Holding Register */ 614 __O uint32_t THR; /**< \brief Offset: 0x24 ( /W 32) Transmit Holding Register */ 615 __I uint32_t VERSION; /**< \brief Offset: 0x28 (R/ 32) Version Register */ 616 __I uint32_t PARAMETER; /**< \brief Offset: 0x2C (R/ 32) Parameter Register */ 617 } Iisc; 618 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ 619 620 /*@}*/ 621 622 #endif /* _SAM4L_IISC_COMPONENT_ */ 623