Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:22:43

0001 /**
0002  * @file
0003  *
0004  * @ingroup RTEMSBSPsARMCycVContrib
0005  */
0006 
0007 /*******************************************************************************
0008 *                                                                              *
0009 * Copyright 2013 Altera Corporation. All Rights Reserved.                      *
0010 *                                                                              *
0011 * Redistribution and use in source and binary forms, with or without           *
0012 * modification, are permitted provided that the following conditions are met:  *
0013 *                                                                              *
0014 * 1. Redistributions of source code must retain the above copyright notice,    *
0015 *    this list of conditions and the following disclaimer.                     *
0016 *                                                                              *
0017 * 2. Redistributions in binary form must reproduce the above copyright notice, *
0018 *    this list of conditions and the following disclaimer in the documentation *
0019 *    and/or other materials provided with the distribution.                    *
0020 *                                                                              *
0021 * 3. The name of the author may not be used to endorse or promote products     *
0022 *    derived from this software without specific prior written permission.     *
0023 *                                                                              *
0024 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY EXPRESS OR *
0025 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
0026 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO  *
0027 * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,       *
0028 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
0029 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;  *
0030 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,     *
0031 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR      *
0032 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF       *
0033 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                                   *
0034 *                                                                              *
0035 *******************************************************************************/
0036 
0037 /* Altera - ALT_I2C */
0038 
0039 #ifndef __ALTERA_ALT_I2C_H__
0040 #define __ALTERA_ALT_I2C_H__
0041 
0042 #ifdef __cplusplus
0043 extern "C"
0044 {
0045 #endif  /* __cplusplus */
0046 
0047 /*
0048  * Component : I2C Module - ALT_I2C
0049  * I2C Module
0050  * 
0051  * Registers in the I2C module
0052  * 
0053  */
0054 /*
0055  * Register : Control Register - ic_con
0056  * 
0057  * This register can be written only when the I2C is disabled, which corresponds to
0058  * the Bit [0] of the Enable Register being set to 0. Writes at other times have no
0059  * effect.
0060  * 
0061  * Register Layout
0062  * 
0063  *  Bits   | Access | Reset | Description         
0064  * :-------|:-------|:------|:---------------------
0065  *  [0]    | RW     | 0x1   | Master Enable       
0066  *  [2:1]  | RW     | 0x2   | Master Speed Control
0067  *  [3]    | RW     | 0x1   | Slave Address Size  
0068  *  [4]    | RW     | 0x1   | Master Address Size 
0069  *  [5]    | RW     | 0x1   | Restart Enable      
0070  *  [6]    | RW     | 0x1   | Slave Disable       
0071  *  [31:7] | ???    | 0x0   | *UNDEFINED*         
0072  * 
0073  */
0074 /*
0075  * Field : Master Enable - master_mode
0076  * 
0077  * This bit controls whether the i2c master is enabled.
0078  * 
0079  * NOTE: Software should ensure that if this bit is written with '1', then bit 6
0080  * should also be written with a '1'.
0081  * 
0082  * Field Enumeration Values:
0083  * 
0084  *  Enum                      | Value | Description    
0085  * :--------------------------|:------|:----------------
0086  *  ALT_I2C_CON_MST_MOD_E_DIS | 0x0   | master disabled
0087  *  ALT_I2C_CON_MST_MOD_E_EN  | 0x1   | master enabled 
0088  * 
0089  * Field Access Macros:
0090  * 
0091  */
0092 /*
0093  * Enumerated value for register field ALT_I2C_CON_MST_MOD
0094  * 
0095  * master disabled
0096  */
0097 #define ALT_I2C_CON_MST_MOD_E_DIS   0x0
0098 /*
0099  * Enumerated value for register field ALT_I2C_CON_MST_MOD
0100  * 
0101  * master enabled
0102  */
0103 #define ALT_I2C_CON_MST_MOD_E_EN    0x1
0104 
0105 /* The Least Significant Bit (LSB) position of the ALT_I2C_CON_MST_MOD register field. */
0106 #define ALT_I2C_CON_MST_MOD_LSB        0
0107 /* The Most Significant Bit (MSB) position of the ALT_I2C_CON_MST_MOD register field. */
0108 #define ALT_I2C_CON_MST_MOD_MSB        0
0109 /* The width in bits of the ALT_I2C_CON_MST_MOD register field. */
0110 #define ALT_I2C_CON_MST_MOD_WIDTH      1
0111 /* The mask used to set the ALT_I2C_CON_MST_MOD register field value. */
0112 #define ALT_I2C_CON_MST_MOD_SET_MSK    0x00000001
0113 /* The mask used to clear the ALT_I2C_CON_MST_MOD register field value. */
0114 #define ALT_I2C_CON_MST_MOD_CLR_MSK    0xfffffffe
0115 /* The reset value of the ALT_I2C_CON_MST_MOD register field. */
0116 #define ALT_I2C_CON_MST_MOD_RESET      0x1
0117 /* Extracts the ALT_I2C_CON_MST_MOD field value from a register. */
0118 #define ALT_I2C_CON_MST_MOD_GET(value) (((value) & 0x00000001) >> 0)
0119 /* Produces a ALT_I2C_CON_MST_MOD register field value suitable for setting the register. */
0120 #define ALT_I2C_CON_MST_MOD_SET(value) (((value) << 0) & 0x00000001)
0121 
0122 /*
0123  * Field : Master Speed Control - speed
0124  * 
0125  * These bits control at which speed the I2C operates, its setting is relevant only
0126  * if one is operating the I2C in master mode. Hardware protects against illegal
0127  * values being programmed by software. This field should be programmed only with
0128  * standard or fast speed.
0129  * 
0130  * Field Enumeration Values:
0131  * 
0132  *  Enum                         | Value | Description               
0133  * :-----------------------------|:------|:---------------------------
0134  *  ALT_I2C_CON_SPEED_E_STANDARD | 0x1   | standard mode (100 kbit/s)
0135  *  ALT_I2C_CON_SPEED_E_FAST     | 0x2   | fast mode (400 kbit/s)    
0136  * 
0137  * Field Access Macros:
0138  * 
0139  */
0140 /*
0141  * Enumerated value for register field ALT_I2C_CON_SPEED
0142  * 
0143  * standard mode (100 kbit/s)
0144  */
0145 #define ALT_I2C_CON_SPEED_E_STANDARD    0x1
0146 /*
0147  * Enumerated value for register field ALT_I2C_CON_SPEED
0148  * 
0149  * fast mode (400 kbit/s)
0150  */
0151 #define ALT_I2C_CON_SPEED_E_FAST        0x2
0152 
0153 /* The Least Significant Bit (LSB) position of the ALT_I2C_CON_SPEED register field. */
0154 #define ALT_I2C_CON_SPEED_LSB        1
0155 /* The Most Significant Bit (MSB) position of the ALT_I2C_CON_SPEED register field. */
0156 #define ALT_I2C_CON_SPEED_MSB        2
0157 /* The width in bits of the ALT_I2C_CON_SPEED register field. */
0158 #define ALT_I2C_CON_SPEED_WIDTH      2
0159 /* The mask used to set the ALT_I2C_CON_SPEED register field value. */
0160 #define ALT_I2C_CON_SPEED_SET_MSK    0x00000006
0161 /* The mask used to clear the ALT_I2C_CON_SPEED register field value. */
0162 #define ALT_I2C_CON_SPEED_CLR_MSK    0xfffffff9
0163 /* The reset value of the ALT_I2C_CON_SPEED register field. */
0164 #define ALT_I2C_CON_SPEED_RESET      0x2
0165 /* Extracts the ALT_I2C_CON_SPEED field value from a register. */
0166 #define ALT_I2C_CON_SPEED_GET(value) (((value) & 0x00000006) >> 1)
0167 /* Produces a ALT_I2C_CON_SPEED register field value suitable for setting the register. */
0168 #define ALT_I2C_CON_SPEED_SET(value) (((value) << 1) & 0x00000006)
0169 
0170 /*
0171  * Field : Slave Address Size - ic_10bitaddr_slave
0172  * 
0173  * When acting as a slave, this bit controls whether the I2C responds to 7- or
0174  * 10-bit addresses. In 7-bit addressing, only the lower 7 bits of  the Slave
0175  * Address Register are compared. The I2C responds will only respond to 10-bit
0176  * addressing transfers that match the full 10 bits of the Slave Address register.
0177  * 
0178  * Field Enumeration Values:
0179  * 
0180  *  Enum                                        | Value | Description      
0181  * :--------------------------------------------|:------|:------------------
0182  *  ALT_I2C_CON_IC_10BITADDR_SLV_E_SLVADDR7BIT  | 0x0   | 7-bit addressing 
0183  *  ALT_I2C_CON_IC_10BITADDR_SLV_E_SLVADDR10BIT | 0x1   | 10-bit addressing
0184  * 
0185  * Field Access Macros:
0186  * 
0187  */
0188 /*
0189  * Enumerated value for register field ALT_I2C_CON_IC_10BITADDR_SLV
0190  * 
0191  * 7-bit addressing
0192  */
0193 #define ALT_I2C_CON_IC_10BITADDR_SLV_E_SLVADDR7BIT  0x0
0194 /*
0195  * Enumerated value for register field ALT_I2C_CON_IC_10BITADDR_SLV
0196  * 
0197  * 10-bit addressing
0198  */
0199 #define ALT_I2C_CON_IC_10BITADDR_SLV_E_SLVADDR10BIT 0x1
0200 
0201 /* The Least Significant Bit (LSB) position of the ALT_I2C_CON_IC_10BITADDR_SLV register field. */
0202 #define ALT_I2C_CON_IC_10BITADDR_SLV_LSB        3
0203 /* The Most Significant Bit (MSB) position of the ALT_I2C_CON_IC_10BITADDR_SLV register field. */
0204 #define ALT_I2C_CON_IC_10BITADDR_SLV_MSB        3
0205 /* The width in bits of the ALT_I2C_CON_IC_10BITADDR_SLV register field. */
0206 #define ALT_I2C_CON_IC_10BITADDR_SLV_WIDTH      1
0207 /* The mask used to set the ALT_I2C_CON_IC_10BITADDR_SLV register field value. */
0208 #define ALT_I2C_CON_IC_10BITADDR_SLV_SET_MSK    0x00000008
0209 /* The mask used to clear the ALT_I2C_CON_IC_10BITADDR_SLV register field value. */
0210 #define ALT_I2C_CON_IC_10BITADDR_SLV_CLR_MSK    0xfffffff7
0211 /* The reset value of the ALT_I2C_CON_IC_10BITADDR_SLV register field. */
0212 #define ALT_I2C_CON_IC_10BITADDR_SLV_RESET      0x1
0213 /* Extracts the ALT_I2C_CON_IC_10BITADDR_SLV field value from a register. */
0214 #define ALT_I2C_CON_IC_10BITADDR_SLV_GET(value) (((value) & 0x00000008) >> 3)
0215 /* Produces a ALT_I2C_CON_IC_10BITADDR_SLV register field value suitable for setting the register. */
0216 #define ALT_I2C_CON_IC_10BITADDR_SLV_SET(value) (((value) << 3) & 0x00000008)
0217 
0218 /*
0219  * Field : Master Address Size - ic_10bitaddr_master
0220  * 
0221  * This bit controls whether the I2C starts its transfers in 7-or 10-bit addressing
0222  * mode when acting as a master.
0223  * 
0224  * Field Enumeration Values:
0225  * 
0226  *  Enum                                        | Value | Description      
0227  * :--------------------------------------------|:------|:------------------
0228  *  ALT_I2C_CON_IC_10BITADDR_MST_E_MSTADDR7BIT  | 0x0   | 7-bit addressing 
0229  *  ALT_I2C_CON_IC_10BITADDR_MST_E_MSTADDR10BIT | 0x1   | 10-bit addressing
0230  * 
0231  * Field Access Macros:
0232  * 
0233  */
0234 /*
0235  * Enumerated value for register field ALT_I2C_CON_IC_10BITADDR_MST
0236  * 
0237  * 7-bit addressing
0238  */
0239 #define ALT_I2C_CON_IC_10BITADDR_MST_E_MSTADDR7BIT  0x0
0240 /*
0241  * Enumerated value for register field ALT_I2C_CON_IC_10BITADDR_MST
0242  * 
0243  * 10-bit addressing
0244  */
0245 #define ALT_I2C_CON_IC_10BITADDR_MST_E_MSTADDR10BIT 0x1
0246 
0247 /* The Least Significant Bit (LSB) position of the ALT_I2C_CON_IC_10BITADDR_MST register field. */
0248 #define ALT_I2C_CON_IC_10BITADDR_MST_LSB        4
0249 /* The Most Significant Bit (MSB) position of the ALT_I2C_CON_IC_10BITADDR_MST register field. */
0250 #define ALT_I2C_CON_IC_10BITADDR_MST_MSB        4
0251 /* The width in bits of the ALT_I2C_CON_IC_10BITADDR_MST register field. */
0252 #define ALT_I2C_CON_IC_10BITADDR_MST_WIDTH      1
0253 /* The mask used to set the ALT_I2C_CON_IC_10BITADDR_MST register field value. */
0254 #define ALT_I2C_CON_IC_10BITADDR_MST_SET_MSK    0x00000010
0255 /* The mask used to clear the ALT_I2C_CON_IC_10BITADDR_MST register field value. */
0256 #define ALT_I2C_CON_IC_10BITADDR_MST_CLR_MSK    0xffffffef
0257 /* The reset value of the ALT_I2C_CON_IC_10BITADDR_MST register field. */
0258 #define ALT_I2C_CON_IC_10BITADDR_MST_RESET      0x1
0259 /* Extracts the ALT_I2C_CON_IC_10BITADDR_MST field value from a register. */
0260 #define ALT_I2C_CON_IC_10BITADDR_MST_GET(value) (((value) & 0x00000010) >> 4)
0261 /* Produces a ALT_I2C_CON_IC_10BITADDR_MST register field value suitable for setting the register. */
0262 #define ALT_I2C_CON_IC_10BITADDR_MST_SET(value) (((value) << 4) & 0x00000010)
0263 
0264 /*
0265  * Field : Restart Enable - ic_restart_en
0266  * 
0267  * Determines whether RESTART conditions may be sent when acting as a master. Some
0268  * older slaves do not support handling RESTART conditions; however, RESTART
0269  * conditions are used in several I2C operations. When RESTART is disabled, the
0270  * master is prohibited from performing the following functions
0271  * 
0272  * * Changing direction within a transfer (split),
0273  * 
0274  * * Sending a START BYTE,
0275  * 
0276  * * High-speed mode operation,
0277  * 
0278  * * Combined format transfers in 7-bit addressing modes,
0279  * 
0280  * * Read operation with a 10-bit address,
0281  * 
0282  * * Sending multiple bytes per transfer,
0283  * 
0284  * By replacing RESTART condition followed by a STOP and a subsequent START
0285  * condition, split operations are broken down into multiple I2C transfers. If the
0286  * above operations are performed, it will result in setting bit [6](tx_abort) of
0287  * the Raw Interrupt Status Register.
0288  * 
0289  * Field Enumeration Values:
0290  * 
0291  *  Enum                            | Value | Description           
0292  * :--------------------------------|:------|:-----------------------
0293  *  ALT_I2C_CON_IC_RESTART_EN_E_DIS | 0x0   | restart master disable
0294  *  ALT_I2C_CON_IC_RESTART_EN_E_EN  | 0x1   | restart master enable 
0295  * 
0296  * Field Access Macros:
0297  * 
0298  */
0299 /*
0300  * Enumerated value for register field ALT_I2C_CON_IC_RESTART_EN
0301  * 
0302  * restart master disable
0303  */
0304 #define ALT_I2C_CON_IC_RESTART_EN_E_DIS 0x0
0305 /*
0306  * Enumerated value for register field ALT_I2C_CON_IC_RESTART_EN
0307  * 
0308  * restart master enable
0309  */
0310 #define ALT_I2C_CON_IC_RESTART_EN_E_EN  0x1
0311 
0312 /* The Least Significant Bit (LSB) position of the ALT_I2C_CON_IC_RESTART_EN register field. */
0313 #define ALT_I2C_CON_IC_RESTART_EN_LSB        5
0314 /* The Most Significant Bit (MSB) position of the ALT_I2C_CON_IC_RESTART_EN register field. */
0315 #define ALT_I2C_CON_IC_RESTART_EN_MSB        5
0316 /* The width in bits of the ALT_I2C_CON_IC_RESTART_EN register field. */
0317 #define ALT_I2C_CON_IC_RESTART_EN_WIDTH      1
0318 /* The mask used to set the ALT_I2C_CON_IC_RESTART_EN register field value. */
0319 #define ALT_I2C_CON_IC_RESTART_EN_SET_MSK    0x00000020
0320 /* The mask used to clear the ALT_I2C_CON_IC_RESTART_EN register field value. */
0321 #define ALT_I2C_CON_IC_RESTART_EN_CLR_MSK    0xffffffdf
0322 /* The reset value of the ALT_I2C_CON_IC_RESTART_EN register field. */
0323 #define ALT_I2C_CON_IC_RESTART_EN_RESET      0x1
0324 /* Extracts the ALT_I2C_CON_IC_RESTART_EN field value from a register. */
0325 #define ALT_I2C_CON_IC_RESTART_EN_GET(value) (((value) & 0x00000020) >> 5)
0326 /* Produces a ALT_I2C_CON_IC_RESTART_EN register field value suitable for setting the register. */
0327 #define ALT_I2C_CON_IC_RESTART_EN_SET(value) (((value) << 5) & 0x00000020)
0328 
0329 /*
0330  * Field : Slave Disable - ic_slave_disable
0331  * 
0332  * This bit controls whether I2C has its slave disabled. The slave will be
0333  * disabled, after reset.
0334  * 
0335  * NOTE: Software should ensure that if this bit is written with 0, then bit [0] of
0336  * this register should also be written with a 0.
0337  * 
0338  * Field Enumeration Values:
0339  * 
0340  *  Enum                         | Value | Description  
0341  * :-----------------------------|:------|:--------------
0342  *  ALT_I2C_CON_IC_SLV_DIS_E_DIS | 0x1   | slave disable
0343  *  ALT_I2C_CON_IC_SLV_DIS_E_EN  | 0x0   | slave enable 
0344  * 
0345  * Field Access Macros:
0346  * 
0347  */
0348 /*
0349  * Enumerated value for register field ALT_I2C_CON_IC_SLV_DIS
0350  * 
0351  * slave disable
0352  */
0353 #define ALT_I2C_CON_IC_SLV_DIS_E_DIS    0x1
0354 /*
0355  * Enumerated value for register field ALT_I2C_CON_IC_SLV_DIS
0356  * 
0357  * slave enable
0358  */
0359 #define ALT_I2C_CON_IC_SLV_DIS_E_EN     0x0
0360 
0361 /* The Least Significant Bit (LSB) position of the ALT_I2C_CON_IC_SLV_DIS register field. */
0362 #define ALT_I2C_CON_IC_SLV_DIS_LSB        6
0363 /* The Most Significant Bit (MSB) position of the ALT_I2C_CON_IC_SLV_DIS register field. */
0364 #define ALT_I2C_CON_IC_SLV_DIS_MSB        6
0365 /* The width in bits of the ALT_I2C_CON_IC_SLV_DIS register field. */
0366 #define ALT_I2C_CON_IC_SLV_DIS_WIDTH      1
0367 /* The mask used to set the ALT_I2C_CON_IC_SLV_DIS register field value. */
0368 #define ALT_I2C_CON_IC_SLV_DIS_SET_MSK    0x00000040
0369 /* The mask used to clear the ALT_I2C_CON_IC_SLV_DIS register field value. */
0370 #define ALT_I2C_CON_IC_SLV_DIS_CLR_MSK    0xffffffbf
0371 /* The reset value of the ALT_I2C_CON_IC_SLV_DIS register field. */
0372 #define ALT_I2C_CON_IC_SLV_DIS_RESET      0x1
0373 /* Extracts the ALT_I2C_CON_IC_SLV_DIS field value from a register. */
0374 #define ALT_I2C_CON_IC_SLV_DIS_GET(value) (((value) & 0x00000040) >> 6)
0375 /* Produces a ALT_I2C_CON_IC_SLV_DIS register field value suitable for setting the register. */
0376 #define ALT_I2C_CON_IC_SLV_DIS_SET(value) (((value) << 6) & 0x00000040)
0377 
0378 #ifndef __ASSEMBLY__
0379 /*
0380  * WARNING: The C register and register group struct declarations are provided for
0381  * convenience and illustrative purposes. They should, however, be used with
0382  * caution as the C language standard provides no guarantees about the alignment or
0383  * atomicity of device memory accesses. The recommended practice for writing
0384  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
0385  * alt_write_word() functions.
0386  * 
0387  * The struct declaration for register ALT_I2C_CON.
0388  */
0389 struct ALT_I2C_CON_s
0390 {
0391     uint32_t  master_mode         :  1;  /* Master Enable */
0392     uint32_t  speed               :  2;  /* Master Speed Control */
0393     uint32_t  ic_10bitaddr_slave  :  1;  /* Slave Address Size */
0394     uint32_t  ic_10bitaddr_master :  1;  /* Master Address Size */
0395     uint32_t  ic_restart_en       :  1;  /* Restart Enable */
0396     uint32_t  ic_slave_disable    :  1;  /* Slave Disable */
0397     uint32_t                      : 25;  /* *UNDEFINED* */
0398 };
0399 
0400 /* The typedef declaration for register ALT_I2C_CON. */
0401 typedef volatile struct ALT_I2C_CON_s  ALT_I2C_CON_t;
0402 #endif  /* __ASSEMBLY__ */
0403 
0404 /* The byte offset of the ALT_I2C_CON register from the beginning of the component. */
0405 #define ALT_I2C_CON_OFST        0x0
0406 /* The address of the ALT_I2C_CON register. */
0407 #define ALT_I2C_CON_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_CON_OFST))
0408 
0409 /*
0410  * Register : Target Address Register - ic_tar
0411  * 
0412  * This register can be written to only when the ic_enable register is set to 0.
0413  * This register is 13 bits wide. All bits can be dynamically updated as long as
0414  * any set of the following conditions are true,
0415  * 
0416  * (Enable Register bit 0 is set to 0) or (Enable Register bit 0 is set to 1 AND
0417  * (I2C is NOT engaged in any Master [tx, rx] operation [ic_status register
0418  * mst_activity bit 5 is set to 0]) AND (I2C is enabled to operate in Master
0419  * mode[ic_con bit[0] is set to one]) AND (there are NO entries in the TX FIFO
0420  * Register [IC_STATUS bit [2] is set to 1])
0421  * 
0422  * Register Layout
0423  * 
0424  *  Bits    | Access | Reset | Description                  
0425  * :--------|:-------|:------|:------------------------------
0426  *  [9:0]   | RW     | 0x55  | Master Target Address        
0427  *  [10]    | RW     | 0x0   | General Call OR Start        
0428  *  [11]    | RW     | 0x0   | Special                      
0429  *  [12]    | RW     | 0x1   | Master Addressing Bit Control
0430  *  [31:13] | ???    | 0x0   | *UNDEFINED*                  
0431  * 
0432  */
0433 /*
0434  * Field : Master Target Address - ic_tar
0435  * 
0436  * This is the target address for any master transaction. When transmitting a
0437  * General Call, these bits are ignored. To generate a START BYTE, the CPU needs to
0438  * write only once into these bits. If the ic_tar and ic_sar are the same, loopback
0439  * exists but the FIFOs are shared between master and slave, so full loopback is
0440  * not feasible. Only one direction loopback mode is supported (simplex), not
0441  * duplex. A master cannot transmit to itself; it can transmit to only a slave.
0442  * 
0443  * Field Access Macros:
0444  * 
0445  */
0446 /* The Least Significant Bit (LSB) position of the ALT_I2C_TAR_IC_TAR register field. */
0447 #define ALT_I2C_TAR_IC_TAR_LSB        0
0448 /* The Most Significant Bit (MSB) position of the ALT_I2C_TAR_IC_TAR register field. */
0449 #define ALT_I2C_TAR_IC_TAR_MSB        9
0450 /* The width in bits of the ALT_I2C_TAR_IC_TAR register field. */
0451 #define ALT_I2C_TAR_IC_TAR_WIDTH      10
0452 /* The mask used to set the ALT_I2C_TAR_IC_TAR register field value. */
0453 #define ALT_I2C_TAR_IC_TAR_SET_MSK    0x000003ff
0454 /* The mask used to clear the ALT_I2C_TAR_IC_TAR register field value. */
0455 #define ALT_I2C_TAR_IC_TAR_CLR_MSK    0xfffffc00
0456 /* The reset value of the ALT_I2C_TAR_IC_TAR register field. */
0457 #define ALT_I2C_TAR_IC_TAR_RESET      0x55
0458 /* Extracts the ALT_I2C_TAR_IC_TAR field value from a register. */
0459 #define ALT_I2C_TAR_IC_TAR_GET(value) (((value) & 0x000003ff) >> 0)
0460 /* Produces a ALT_I2C_TAR_IC_TAR register field value suitable for setting the register. */
0461 #define ALT_I2C_TAR_IC_TAR_SET(value) (((value) << 0) & 0x000003ff)
0462 
0463 /*
0464  * Field : General Call OR Start - gc_or_start
0465  * 
0466  * If bit 11 (SPECIAL) of this Register is set to 1, then this bit indicates
0467  * whether a General Call or START byte command is to be performed by the I2C or
0468  * General Call Address after issuing a General Call, only writes may be performed.
0469  * Attempting to issue a read command results in setting bit 6 (TX_ABRT) of the Raw
0470  * Interrupt_Status register. The I2C remains in General Call mode until the
0471  * special bit value (bit 11) is cleared.
0472  * 
0473  * Field Enumeration Values:
0474  * 
0475  *  Enum                                | Value | Description 
0476  * :------------------------------------|:------|:-------------
0477  *  ALT_I2C_TAR_GC_OR_START_E_GENCALL   | 0x0   | General Call
0478  *  ALT_I2C_TAR_GC_OR_START_E_STARTBYTE | 0x1   | START Byte  
0479  * 
0480  * Field Access Macros:
0481  * 
0482  */
0483 /*
0484  * Enumerated value for register field ALT_I2C_TAR_GC_OR_START
0485  * 
0486  * General Call
0487  */
0488 #define ALT_I2C_TAR_GC_OR_START_E_GENCALL   0x0
0489 /*
0490  * Enumerated value for register field ALT_I2C_TAR_GC_OR_START
0491  * 
0492  * START Byte
0493  */
0494 #define ALT_I2C_TAR_GC_OR_START_E_STARTBYTE 0x1
0495 
0496 /* The Least Significant Bit (LSB) position of the ALT_I2C_TAR_GC_OR_START register field. */
0497 #define ALT_I2C_TAR_GC_OR_START_LSB        10
0498 /* The Most Significant Bit (MSB) position of the ALT_I2C_TAR_GC_OR_START register field. */
0499 #define ALT_I2C_TAR_GC_OR_START_MSB        10
0500 /* The width in bits of the ALT_I2C_TAR_GC_OR_START register field. */
0501 #define ALT_I2C_TAR_GC_OR_START_WIDTH      1
0502 /* The mask used to set the ALT_I2C_TAR_GC_OR_START register field value. */
0503 #define ALT_I2C_TAR_GC_OR_START_SET_MSK    0x00000400
0504 /* The mask used to clear the ALT_I2C_TAR_GC_OR_START register field value. */
0505 #define ALT_I2C_TAR_GC_OR_START_CLR_MSK    0xfffffbff
0506 /* The reset value of the ALT_I2C_TAR_GC_OR_START register field. */
0507 #define ALT_I2C_TAR_GC_OR_START_RESET      0x0
0508 /* Extracts the ALT_I2C_TAR_GC_OR_START field value from a register. */
0509 #define ALT_I2C_TAR_GC_OR_START_GET(value) (((value) & 0x00000400) >> 10)
0510 /* Produces a ALT_I2C_TAR_GC_OR_START register field value suitable for setting the register. */
0511 #define ALT_I2C_TAR_GC_OR_START_SET(value) (((value) << 10) & 0x00000400)
0512 
0513 /*
0514  * Field : Special - special
0515  * 
0516  * This bit indicates whether software performs a General Call or START BYTE
0517  * command.
0518  * 
0519  * Field Enumeration Values:
0520  * 
0521  *  Enum                            | Value | Description                                
0522  * :--------------------------------|:------|:--------------------------------------------
0523  *  ALT_I2C_TAR_SPECIAL_E_GENCALL   | 0x0   | Ignore bit 10 gc_or_start and use ic_tar   
0524  * :                                |       | normally                                   
0525  *  ALT_I2C_TAR_SPECIAL_E_STARTBYTE | 0x1   | Perform special I2C command as specified in
0526  * :                                |       | gc_or_start                                
0527  * 
0528  * Field Access Macros:
0529  * 
0530  */
0531 /*
0532  * Enumerated value for register field ALT_I2C_TAR_SPECIAL
0533  * 
0534  * Ignore bit 10 gc_or_start and use ic_tar normally
0535  */
0536 #define ALT_I2C_TAR_SPECIAL_E_GENCALL   0x0
0537 /*
0538  * Enumerated value for register field ALT_I2C_TAR_SPECIAL
0539  * 
0540  * Perform special I2C command as specified in gc_or_start
0541  */
0542 #define ALT_I2C_TAR_SPECIAL_E_STARTBYTE 0x1
0543 
0544 /* The Least Significant Bit (LSB) position of the ALT_I2C_TAR_SPECIAL register field. */
0545 #define ALT_I2C_TAR_SPECIAL_LSB        11
0546 /* The Most Significant Bit (MSB) position of the ALT_I2C_TAR_SPECIAL register field. */
0547 #define ALT_I2C_TAR_SPECIAL_MSB        11
0548 /* The width in bits of the ALT_I2C_TAR_SPECIAL register field. */
0549 #define ALT_I2C_TAR_SPECIAL_WIDTH      1
0550 /* The mask used to set the ALT_I2C_TAR_SPECIAL register field value. */
0551 #define ALT_I2C_TAR_SPECIAL_SET_MSK    0x00000800
0552 /* The mask used to clear the ALT_I2C_TAR_SPECIAL register field value. */
0553 #define ALT_I2C_TAR_SPECIAL_CLR_MSK    0xfffff7ff
0554 /* The reset value of the ALT_I2C_TAR_SPECIAL register field. */
0555 #define ALT_I2C_TAR_SPECIAL_RESET      0x0
0556 /* Extracts the ALT_I2C_TAR_SPECIAL field value from a register. */
0557 #define ALT_I2C_TAR_SPECIAL_GET(value) (((value) & 0x00000800) >> 11)
0558 /* Produces a ALT_I2C_TAR_SPECIAL register field value suitable for setting the register. */
0559 #define ALT_I2C_TAR_SPECIAL_SET(value) (((value) << 11) & 0x00000800)
0560 
0561 /*
0562  * Field : Master Addressing Bit Control - ic_10bitaddr_master
0563  * 
0564  * This bit controls whether the i2c starts its transfers in 7-bit or 10-bit
0565  * addressing mode when acting as a master.
0566  * 
0567  * Field Enumeration Values:
0568  * 
0569  *  Enum                                   | Value | Description          
0570  * :---------------------------------------|:------|:----------------------
0571  *  ALT_I2C_TAR_IC_10BITADDR_MST_E_START7  | 0x0   | Master Address, 7bit 
0572  *  ALT_I2C_TAR_IC_10BITADDR_MST_E_START10 | 0x1   | Master Address, 10bit
0573  * 
0574  * Field Access Macros:
0575  * 
0576  */
0577 /*
0578  * Enumerated value for register field ALT_I2C_TAR_IC_10BITADDR_MST
0579  * 
0580  * Master Address, 7bit
0581  */
0582 #define ALT_I2C_TAR_IC_10BITADDR_MST_E_START7   0x0
0583 /*
0584  * Enumerated value for register field ALT_I2C_TAR_IC_10BITADDR_MST
0585  * 
0586  * Master Address, 10bit
0587  */
0588 #define ALT_I2C_TAR_IC_10BITADDR_MST_E_START10  0x1
0589 
0590 /* The Least Significant Bit (LSB) position of the ALT_I2C_TAR_IC_10BITADDR_MST register field. */
0591 #define ALT_I2C_TAR_IC_10BITADDR_MST_LSB        12
0592 /* The Most Significant Bit (MSB) position of the ALT_I2C_TAR_IC_10BITADDR_MST register field. */
0593 #define ALT_I2C_TAR_IC_10BITADDR_MST_MSB        12
0594 /* The width in bits of the ALT_I2C_TAR_IC_10BITADDR_MST register field. */
0595 #define ALT_I2C_TAR_IC_10BITADDR_MST_WIDTH      1
0596 /* The mask used to set the ALT_I2C_TAR_IC_10BITADDR_MST register field value. */
0597 #define ALT_I2C_TAR_IC_10BITADDR_MST_SET_MSK    0x00001000
0598 /* The mask used to clear the ALT_I2C_TAR_IC_10BITADDR_MST register field value. */
0599 #define ALT_I2C_TAR_IC_10BITADDR_MST_CLR_MSK    0xffffefff
0600 /* The reset value of the ALT_I2C_TAR_IC_10BITADDR_MST register field. */
0601 #define ALT_I2C_TAR_IC_10BITADDR_MST_RESET      0x1
0602 /* Extracts the ALT_I2C_TAR_IC_10BITADDR_MST field value from a register. */
0603 #define ALT_I2C_TAR_IC_10BITADDR_MST_GET(value) (((value) & 0x00001000) >> 12)
0604 /* Produces a ALT_I2C_TAR_IC_10BITADDR_MST register field value suitable for setting the register. */
0605 #define ALT_I2C_TAR_IC_10BITADDR_MST_SET(value) (((value) << 12) & 0x00001000)
0606 
0607 #ifndef __ASSEMBLY__
0608 /*
0609  * WARNING: The C register and register group struct declarations are provided for
0610  * convenience and illustrative purposes. They should, however, be used with
0611  * caution as the C language standard provides no guarantees about the alignment or
0612  * atomicity of device memory accesses. The recommended practice for writing
0613  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
0614  * alt_write_word() functions.
0615  * 
0616  * The struct declaration for register ALT_I2C_TAR.
0617  */
0618 struct ALT_I2C_TAR_s
0619 {
0620     uint32_t  ic_tar              : 10;  /* Master Target Address */
0621     uint32_t  gc_or_start         :  1;  /* General Call OR Start */
0622     uint32_t  special             :  1;  /* Special */
0623     uint32_t  ic_10bitaddr_master :  1;  /* Master Addressing Bit Control */
0624     uint32_t                      : 19;  /* *UNDEFINED* */
0625 };
0626 
0627 /* The typedef declaration for register ALT_I2C_TAR. */
0628 typedef volatile struct ALT_I2C_TAR_s  ALT_I2C_TAR_t;
0629 #endif  /* __ASSEMBLY__ */
0630 
0631 /* The byte offset of the ALT_I2C_TAR register from the beginning of the component. */
0632 #define ALT_I2C_TAR_OFST        0x4
0633 /* The address of the ALT_I2C_TAR register. */
0634 #define ALT_I2C_TAR_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_TAR_OFST))
0635 
0636 /*
0637  * Register : Slave Address Register - ic_sar
0638  * 
0639  * Holds Address of Slave
0640  * 
0641  * Register Layout
0642  * 
0643  *  Bits    | Access | Reset | Description  
0644  * :--------|:-------|:------|:--------------
0645  *  [9:0]   | RW     | 0x55  | Slave Address
0646  *  [31:10] | ???    | 0x0   | *UNDEFINED*  
0647  * 
0648  */
0649 /*
0650  * Field : Slave Address - ic_sar
0651  * 
0652  * The Slave Address register holds the slave address when the I2C is operating as
0653  * a slave. For 7-bit addressing, only Field Bits [6:0] of the Slave Address
0654  * Register are used. This register can be written only when the I2C interface is
0655  * disabled, which corresponds to field bit 0 of the Enable Register being set to
0656  * 0. Writes at other times have no effect.
0657  * 
0658  * Note, the default values cannot be any of the reserved address locations: that
0659  * is,
0660  * 
0661  * 0x00 to 0x07, or 0x78 to 0x7f. The correct operation of the device is not
0662  * guaranteed if you program the Slave Address Register or Target Address Register
0663  * to a reserved value.
0664  * 
0665  * Field Access Macros:
0666  * 
0667  */
0668 /* The Least Significant Bit (LSB) position of the ALT_I2C_SAR_IC_SAR register field. */
0669 #define ALT_I2C_SAR_IC_SAR_LSB        0
0670 /* The Most Significant Bit (MSB) position of the ALT_I2C_SAR_IC_SAR register field. */
0671 #define ALT_I2C_SAR_IC_SAR_MSB        9
0672 /* The width in bits of the ALT_I2C_SAR_IC_SAR register field. */
0673 #define ALT_I2C_SAR_IC_SAR_WIDTH      10
0674 /* The mask used to set the ALT_I2C_SAR_IC_SAR register field value. */
0675 #define ALT_I2C_SAR_IC_SAR_SET_MSK    0x000003ff
0676 /* The mask used to clear the ALT_I2C_SAR_IC_SAR register field value. */
0677 #define ALT_I2C_SAR_IC_SAR_CLR_MSK    0xfffffc00
0678 /* The reset value of the ALT_I2C_SAR_IC_SAR register field. */
0679 #define ALT_I2C_SAR_IC_SAR_RESET      0x55
0680 /* Extracts the ALT_I2C_SAR_IC_SAR field value from a register. */
0681 #define ALT_I2C_SAR_IC_SAR_GET(value) (((value) & 0x000003ff) >> 0)
0682 /* Produces a ALT_I2C_SAR_IC_SAR register field value suitable for setting the register. */
0683 #define ALT_I2C_SAR_IC_SAR_SET(value) (((value) << 0) & 0x000003ff)
0684 
0685 #ifndef __ASSEMBLY__
0686 /*
0687  * WARNING: The C register and register group struct declarations are provided for
0688  * convenience and illustrative purposes. They should, however, be used with
0689  * caution as the C language standard provides no guarantees about the alignment or
0690  * atomicity of device memory accesses. The recommended practice for writing
0691  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
0692  * alt_write_word() functions.
0693  * 
0694  * The struct declaration for register ALT_I2C_SAR.
0695  */
0696 struct ALT_I2C_SAR_s
0697 {
0698     uint32_t  ic_sar : 10;  /* Slave Address */
0699     uint32_t         : 22;  /* *UNDEFINED* */
0700 };
0701 
0702 /* The typedef declaration for register ALT_I2C_SAR. */
0703 typedef volatile struct ALT_I2C_SAR_s  ALT_I2C_SAR_t;
0704 #endif  /* __ASSEMBLY__ */
0705 
0706 /* The byte offset of the ALT_I2C_SAR register from the beginning of the component. */
0707 #define ALT_I2C_SAR_OFST        0x8
0708 /* The address of the ALT_I2C_SAR register. */
0709 #define ALT_I2C_SAR_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_SAR_OFST))
0710 
0711 /*
0712  * Register : Tx Rx Data and Command Register - ic_data_cmd
0713  * 
0714  * This is the register the CPU writes to when filling the TX FIFO. Reading from
0715  * this register returns bytes from RX FIFO.
0716  * 
0717  * Register Layout
0718  * 
0719  *  Bits    | Access | Reset | Description              
0720  * :--------|:-------|:------|:--------------------------
0721  *  [7:0]   | RW     | 0x0   | Tx Rx Data               
0722  *  [8]     | W      | 0x0   | Master Read Write Control
0723  *  [9]     | W      | 0x0   | Generate Stop            
0724  *  [10]    | W      | 0x0   | Generate Restart         
0725  *  [31:11] | ???    | 0x0   | *UNDEFINED*              
0726  * 
0727  */
0728 /*
0729  * Field : Tx Rx Data - dat
0730  * 
0731  * This Field  contains the data to be transmitted or received on the I2C bus. If
0732  * you are writing to these bits and want to perform a read, bits 7:0 (dat) are
0733  * ignored by the I2C. However, when you read from this register, these bits return
0734  * the value of data received on the I2C interface.
0735  * 
0736  * Field Access Macros:
0737  * 
0738  */
0739 /* The Least Significant Bit (LSB) position of the ALT_I2C_DATA_CMD_DAT register field. */
0740 #define ALT_I2C_DATA_CMD_DAT_LSB        0
0741 /* The Most Significant Bit (MSB) position of the ALT_I2C_DATA_CMD_DAT register field. */
0742 #define ALT_I2C_DATA_CMD_DAT_MSB        7
0743 /* The width in bits of the ALT_I2C_DATA_CMD_DAT register field. */
0744 #define ALT_I2C_DATA_CMD_DAT_WIDTH      8
0745 /* The mask used to set the ALT_I2C_DATA_CMD_DAT register field value. */
0746 #define ALT_I2C_DATA_CMD_DAT_SET_MSK    0x000000ff
0747 /* The mask used to clear the ALT_I2C_DATA_CMD_DAT register field value. */
0748 #define ALT_I2C_DATA_CMD_DAT_CLR_MSK    0xffffff00
0749 /* The reset value of the ALT_I2C_DATA_CMD_DAT register field. */
0750 #define ALT_I2C_DATA_CMD_DAT_RESET      0x0
0751 /* Extracts the ALT_I2C_DATA_CMD_DAT field value from a register. */
0752 #define ALT_I2C_DATA_CMD_DAT_GET(value) (((value) & 0x000000ff) >> 0)
0753 /* Produces a ALT_I2C_DATA_CMD_DAT register field value suitable for setting the register. */
0754 #define ALT_I2C_DATA_CMD_DAT_SET(value) (((value) << 0) & 0x000000ff)
0755 
0756 /*
0757  * Field : Master Read Write Control - cmd
0758  * 
0759  * This bit controls whether a read or a write is performed. This bit does not
0760  * control the direction when the I2C acts as a slave. It controls only the
0761  * direction when it acts as a master. When a command is entered in the TX FIFO,
0762  * this bit distinguishes the write and read commands. In slave-receiver mode, this
0763  * bit is a 'don't care' because writes to this register are not required. In
0764  * slave-transmitter mode, a '0' indicates that the CPU data is to be transmitted.
0765  * When programming this bit, you should remember the following: attempting to
0766  * perform a read operation after a General Call command has been sent results in a
0767  * tx_abrt interrupt (bit 6 of the Raw Intr Status Register), unless bit 11 special
0768  * in the Target Address Register has been cleared. If a '1' is written to this bit
0769  * after receiving a RD_REQ interrupt, then a tx_abrt interrupt occurs.
0770  * 
0771  * NOTE: It is possible that while attempting a master I2C read transfer on I2C, a
0772  * RD_REQ interrupt may have occurred simultaneously due to a remote I2C master
0773  * addressing I2C. In this type of scenario, I2C ignores the Data Cmd write,
0774  * generates a tx_abrt interrupt, and waits to service the RD_REQ interrupt.
0775  * 
0776  * Field Enumeration Values:
0777  * 
0778  *  Enum                      | Value | Description 
0779  * :--------------------------|:------|:-------------
0780  *  ALT_I2C_DATA_CMD_CMD_E_RD | 0x1   | Master Read 
0781  *  ALT_I2C_DATA_CMD_CMD_E_WR | 0x0   | Master Write
0782  * 
0783  * Field Access Macros:
0784  * 
0785  */
0786 /*
0787  * Enumerated value for register field ALT_I2C_DATA_CMD_CMD
0788  * 
0789  * Master Read
0790  */
0791 #define ALT_I2C_DATA_CMD_CMD_E_RD   0x1
0792 /*
0793  * Enumerated value for register field ALT_I2C_DATA_CMD_CMD
0794  * 
0795  * Master Write
0796  */
0797 #define ALT_I2C_DATA_CMD_CMD_E_WR   0x0
0798 
0799 /* The Least Significant Bit (LSB) position of the ALT_I2C_DATA_CMD_CMD register field. */
0800 #define ALT_I2C_DATA_CMD_CMD_LSB        8
0801 /* The Most Significant Bit (MSB) position of the ALT_I2C_DATA_CMD_CMD register field. */
0802 #define ALT_I2C_DATA_CMD_CMD_MSB        8
0803 /* The width in bits of the ALT_I2C_DATA_CMD_CMD register field. */
0804 #define ALT_I2C_DATA_CMD_CMD_WIDTH      1
0805 /* The mask used to set the ALT_I2C_DATA_CMD_CMD register field value. */
0806 #define ALT_I2C_DATA_CMD_CMD_SET_MSK    0x00000100
0807 /* The mask used to clear the ALT_I2C_DATA_CMD_CMD register field value. */
0808 #define ALT_I2C_DATA_CMD_CMD_CLR_MSK    0xfffffeff
0809 /* The reset value of the ALT_I2C_DATA_CMD_CMD register field. */
0810 #define ALT_I2C_DATA_CMD_CMD_RESET      0x0
0811 /* Extracts the ALT_I2C_DATA_CMD_CMD field value from a register. */
0812 #define ALT_I2C_DATA_CMD_CMD_GET(value) (((value) & 0x00000100) >> 8)
0813 /* Produces a ALT_I2C_DATA_CMD_CMD register field value suitable for setting the register. */
0814 #define ALT_I2C_DATA_CMD_CMD_SET(value) (((value) << 8) & 0x00000100)
0815 
0816 /*
0817  * Field : Generate Stop - stop
0818  * 
0819  * This bit controls whether a STOP is issued after the byte is sent or received.
0820  * 
0821  * 1 = STOP is issued after this byte, regardless of whether or not the Tx FIFO is
0822  * empty. If the Tx FIFO is not empty, the master immediately tries to start a new
0823  * transfer by issuing a START and arbitrating for the bus.
0824  * 
0825  * 0 = STOP is not issued after this byte, regardless of whether or not the Tx FIFO
0826  * is empty. If the Tx FIFO is not empty, the master continues the current transfer
0827  * by sending/receiving data bytes according to the value of the CMD bit. If the Tx
0828  * FIFO is empty, the master holds the SCL line low and stalls the bus until a new
0829  * command is available in the Tx FIFO.
0830  * 
0831  * Field Enumeration Values:
0832  * 
0833  *  Enum                            | Value | Description      
0834  * :--------------------------------|:------|:------------------
0835  *  ALT_I2C_DATA_CMD_STOP_E_STOP    | 0x1   | Issue Stop       
0836  *  ALT_I2C_DATA_CMD_STOP_E_NO_STOP | 0x0   | Do Not Issue Stop
0837  * 
0838  * Field Access Macros:
0839  * 
0840  */
0841 /*
0842  * Enumerated value for register field ALT_I2C_DATA_CMD_STOP
0843  * 
0844  * Issue Stop
0845  */
0846 #define ALT_I2C_DATA_CMD_STOP_E_STOP    0x1
0847 /*
0848  * Enumerated value for register field ALT_I2C_DATA_CMD_STOP
0849  * 
0850  * Do Not Issue Stop
0851  */
0852 #define ALT_I2C_DATA_CMD_STOP_E_NO_STOP 0x0
0853 
0854 /* The Least Significant Bit (LSB) position of the ALT_I2C_DATA_CMD_STOP register field. */
0855 #define ALT_I2C_DATA_CMD_STOP_LSB        9
0856 /* The Most Significant Bit (MSB) position of the ALT_I2C_DATA_CMD_STOP register field. */
0857 #define ALT_I2C_DATA_CMD_STOP_MSB        9
0858 /* The width in bits of the ALT_I2C_DATA_CMD_STOP register field. */
0859 #define ALT_I2C_DATA_CMD_STOP_WIDTH      1
0860 /* The mask used to set the ALT_I2C_DATA_CMD_STOP register field value. */
0861 #define ALT_I2C_DATA_CMD_STOP_SET_MSK    0x00000200
0862 /* The mask used to clear the ALT_I2C_DATA_CMD_STOP register field value. */
0863 #define ALT_I2C_DATA_CMD_STOP_CLR_MSK    0xfffffdff
0864 /* The reset value of the ALT_I2C_DATA_CMD_STOP register field. */
0865 #define ALT_I2C_DATA_CMD_STOP_RESET      0x0
0866 /* Extracts the ALT_I2C_DATA_CMD_STOP field value from a register. */
0867 #define ALT_I2C_DATA_CMD_STOP_GET(value) (((value) & 0x00000200) >> 9)
0868 /* Produces a ALT_I2C_DATA_CMD_STOP register field value suitable for setting the register. */
0869 #define ALT_I2C_DATA_CMD_STOP_SET(value) (((value) << 9) & 0x00000200)
0870 
0871 /*
0872  * Field : Generate Restart - restart
0873  * 
0874  * This bit controls whether a RESTART is issued before the byte is sent or
0875  * received.
0876  * 
0877  * 1 = A RESTART is issued before the data is sent/received (according to the value
0878  * of CMD), regardless of whether or not the transfer direction is changing from
0879  * the previous command.
0880  * 
0881  * 0 = A RESTART is issued only if the transfer direction is changing from the
0882  * previous command.
0883  * 
0884  * Field Enumeration Values:
0885  * 
0886  *  Enum                                             | Value | Description                      
0887  * :-------------------------------------------------|:------|:----------------------------------
0888  *  ALT_I2C_DATA_CMD_RESTART_E_RESTART               | 0x1   | Issue Restart                    
0889  *  ALT_I2C_DATA_CMD_RESTART_E_RESTART_ON_DIR_CHANGE | 0x0   | Issue Restart On Direction Change
0890  * 
0891  * Field Access Macros:
0892  * 
0893  */
0894 /*
0895  * Enumerated value for register field ALT_I2C_DATA_CMD_RESTART
0896  * 
0897  * Issue Restart
0898  */
0899 #define ALT_I2C_DATA_CMD_RESTART_E_RESTART                  0x1
0900 /*
0901  * Enumerated value for register field ALT_I2C_DATA_CMD_RESTART
0902  * 
0903  * Issue Restart On Direction Change
0904  */
0905 #define ALT_I2C_DATA_CMD_RESTART_E_RESTART_ON_DIR_CHANGE    0x0
0906 
0907 /* The Least Significant Bit (LSB) position of the ALT_I2C_DATA_CMD_RESTART register field. */
0908 #define ALT_I2C_DATA_CMD_RESTART_LSB        10
0909 /* The Most Significant Bit (MSB) position of the ALT_I2C_DATA_CMD_RESTART register field. */
0910 #define ALT_I2C_DATA_CMD_RESTART_MSB        10
0911 /* The width in bits of the ALT_I2C_DATA_CMD_RESTART register field. */
0912 #define ALT_I2C_DATA_CMD_RESTART_WIDTH      1
0913 /* The mask used to set the ALT_I2C_DATA_CMD_RESTART register field value. */
0914 #define ALT_I2C_DATA_CMD_RESTART_SET_MSK    0x00000400
0915 /* The mask used to clear the ALT_I2C_DATA_CMD_RESTART register field value. */
0916 #define ALT_I2C_DATA_CMD_RESTART_CLR_MSK    0xfffffbff
0917 /* The reset value of the ALT_I2C_DATA_CMD_RESTART register field. */
0918 #define ALT_I2C_DATA_CMD_RESTART_RESET      0x0
0919 /* Extracts the ALT_I2C_DATA_CMD_RESTART field value from a register. */
0920 #define ALT_I2C_DATA_CMD_RESTART_GET(value) (((value) & 0x00000400) >> 10)
0921 /* Produces a ALT_I2C_DATA_CMD_RESTART register field value suitable for setting the register. */
0922 #define ALT_I2C_DATA_CMD_RESTART_SET(value) (((value) << 10) & 0x00000400)
0923 
0924 #ifndef __ASSEMBLY__
0925 /*
0926  * WARNING: The C register and register group struct declarations are provided for
0927  * convenience and illustrative purposes. They should, however, be used with
0928  * caution as the C language standard provides no guarantees about the alignment or
0929  * atomicity of device memory accesses. The recommended practice for writing
0930  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
0931  * alt_write_word() functions.
0932  * 
0933  * The struct declaration for register ALT_I2C_DATA_CMD.
0934  */
0935 struct ALT_I2C_DATA_CMD_s
0936 {
0937     uint32_t  dat     :  8;  /* Tx Rx Data */
0938     uint32_t  cmd     :  1;  /* Master Read Write Control */
0939     uint32_t  stop    :  1;  /* Generate Stop */
0940     uint32_t  restart :  1;  /* Generate Restart */
0941     uint32_t          : 21;  /* *UNDEFINED* */
0942 };
0943 
0944 /* The typedef declaration for register ALT_I2C_DATA_CMD. */
0945 typedef volatile struct ALT_I2C_DATA_CMD_s  ALT_I2C_DATA_CMD_t;
0946 #endif  /* __ASSEMBLY__ */
0947 
0948 /* The byte offset of the ALT_I2C_DATA_CMD register from the beginning of the component. */
0949 #define ALT_I2C_DATA_CMD_OFST        0x10
0950 /* The address of the ALT_I2C_DATA_CMD register. */
0951 #define ALT_I2C_DATA_CMD_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_DATA_CMD_OFST))
0952 
0953 /*
0954  * Register : Std Spd Clock SCL HCNT Register - ic_ss_scl_hcnt
0955  * 
0956  * This register sets the SCL clock high-period count for standard speed.
0957  * 
0958  * Register Layout
0959  * 
0960  *  Bits    | Access | Reset | Description            
0961  * :--------|:-------|:------|:------------------------
0962  *  [15:0]  | RW     | 0x190 | Std Spd SCL High Period
0963  *  [31:16] | ???    | 0x0   | *UNDEFINED*            
0964  * 
0965  */
0966 /*
0967  * Field : Std Spd SCL High Period - ic_ss_scl_hcnt
0968  * 
0969  * This register must be set before any I2C bus transaction can take place to
0970  * ensure proper I/O timing. This field sets the SCL clock high-period count for
0971  * standard speed. This register can be written only when the I2C interface is
0972  * disabled which corresponds to the Enable Register being set to 0. Writes at
0973  * other times have no effect. The minimum valid value is 6; hardware prevents
0974  * values less than this being written, and if attempted results in 6 being set. It
0975  * is readable and writeable.
0976  * 
0977  * NOTE: This register must not be programmed to a value higher than 65525, because
0978  * I2C uses a 16-bit counter to flag an I2C bus idle condition when this counter
0979  * reaches a value of IC_SS_SCL_HCNT + 10.
0980  * 
0981  * Field Access Macros:
0982  * 
0983  */
0984 /* The Least Significant Bit (LSB) position of the ALT_I2C_SS_SCL_HCNT_IC_SS_SCL_HCNT register field. */
0985 #define ALT_I2C_SS_SCL_HCNT_IC_SS_SCL_HCNT_LSB        0
0986 /* The Most Significant Bit (MSB) position of the ALT_I2C_SS_SCL_HCNT_IC_SS_SCL_HCNT register field. */
0987 #define ALT_I2C_SS_SCL_HCNT_IC_SS_SCL_HCNT_MSB        15
0988 /* The width in bits of the ALT_I2C_SS_SCL_HCNT_IC_SS_SCL_HCNT register field. */
0989 #define ALT_I2C_SS_SCL_HCNT_IC_SS_SCL_HCNT_WIDTH      16
0990 /* The mask used to set the ALT_I2C_SS_SCL_HCNT_IC_SS_SCL_HCNT register field value. */
0991 #define ALT_I2C_SS_SCL_HCNT_IC_SS_SCL_HCNT_SET_MSK    0x0000ffff
0992 /* The mask used to clear the ALT_I2C_SS_SCL_HCNT_IC_SS_SCL_HCNT register field value. */
0993 #define ALT_I2C_SS_SCL_HCNT_IC_SS_SCL_HCNT_CLR_MSK    0xffff0000
0994 /* The reset value of the ALT_I2C_SS_SCL_HCNT_IC_SS_SCL_HCNT register field. */
0995 #define ALT_I2C_SS_SCL_HCNT_IC_SS_SCL_HCNT_RESET      0x190
0996 /* Extracts the ALT_I2C_SS_SCL_HCNT_IC_SS_SCL_HCNT field value from a register. */
0997 #define ALT_I2C_SS_SCL_HCNT_IC_SS_SCL_HCNT_GET(value) (((value) & 0x0000ffff) >> 0)
0998 /* Produces a ALT_I2C_SS_SCL_HCNT_IC_SS_SCL_HCNT register field value suitable for setting the register. */
0999 #define ALT_I2C_SS_SCL_HCNT_IC_SS_SCL_HCNT_SET(value) (((value) << 0) & 0x0000ffff)
1000 
1001 #ifndef __ASSEMBLY__
1002 /*
1003  * WARNING: The C register and register group struct declarations are provided for
1004  * convenience and illustrative purposes. They should, however, be used with
1005  * caution as the C language standard provides no guarantees about the alignment or
1006  * atomicity of device memory accesses. The recommended practice for writing
1007  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
1008  * alt_write_word() functions.
1009  * 
1010  * The struct declaration for register ALT_I2C_SS_SCL_HCNT.
1011  */
1012 struct ALT_I2C_SS_SCL_HCNT_s
1013 {
1014     uint32_t  ic_ss_scl_hcnt : 16;  /* Std Spd SCL High Period */
1015     uint32_t                 : 16;  /* *UNDEFINED* */
1016 };
1017 
1018 /* The typedef declaration for register ALT_I2C_SS_SCL_HCNT. */
1019 typedef volatile struct ALT_I2C_SS_SCL_HCNT_s  ALT_I2C_SS_SCL_HCNT_t;
1020 #endif  /* __ASSEMBLY__ */
1021 
1022 /* The byte offset of the ALT_I2C_SS_SCL_HCNT register from the beginning of the component. */
1023 #define ALT_I2C_SS_SCL_HCNT_OFST        0x14
1024 /* The address of the ALT_I2C_SS_SCL_HCNT register. */
1025 #define ALT_I2C_SS_SCL_HCNT_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_SS_SCL_HCNT_OFST))
1026 
1027 /*
1028  * Register : Std Spd Clock SCL LCNT Register - ic_ss_scl_lcnt
1029  * 
1030  * This register sets the SCL clock low-period count for standard speed
1031  * 
1032  * Register Layout
1033  * 
1034  *  Bits    | Access | Reset | Description           
1035  * :--------|:-------|:------|:-----------------------
1036  *  [15:0]  | RW     | 0x1d6 | Std Spd SCL Low Period
1037  *  [31:16] | ???    | 0x0   | *UNDEFINED*           
1038  * 
1039  */
1040 /*
1041  * Field : Std Spd SCL Low Period - ic_ss_scl_lcnt
1042  * 
1043  * This register must be set before any I2C bus transaction can take place to
1044  * ensure proper I/O timing. This field sets the SCL clock low period count for
1045  * standard speed. This register can be written only when the I2C interface is
1046  * disabled which corresponds to the Enable Register register being set to 0.
1047  * Writes at other times have no effect. The minimum valid value is 8; hardware
1048  * prevents values less than this from being written, and if attempted, results in
1049  * 8 being set.
1050  * 
1051  * Field Access Macros:
1052  * 
1053  */
1054 /* The Least Significant Bit (LSB) position of the ALT_I2C_SS_SCL_LCNT_IC_SS_SCL_LCNT register field. */
1055 #define ALT_I2C_SS_SCL_LCNT_IC_SS_SCL_LCNT_LSB        0
1056 /* The Most Significant Bit (MSB) position of the ALT_I2C_SS_SCL_LCNT_IC_SS_SCL_LCNT register field. */
1057 #define ALT_I2C_SS_SCL_LCNT_IC_SS_SCL_LCNT_MSB        15
1058 /* The width in bits of the ALT_I2C_SS_SCL_LCNT_IC_SS_SCL_LCNT register field. */
1059 #define ALT_I2C_SS_SCL_LCNT_IC_SS_SCL_LCNT_WIDTH      16
1060 /* The mask used to set the ALT_I2C_SS_SCL_LCNT_IC_SS_SCL_LCNT register field value. */
1061 #define ALT_I2C_SS_SCL_LCNT_IC_SS_SCL_LCNT_SET_MSK    0x0000ffff
1062 /* The mask used to clear the ALT_I2C_SS_SCL_LCNT_IC_SS_SCL_LCNT register field value. */
1063 #define ALT_I2C_SS_SCL_LCNT_IC_SS_SCL_LCNT_CLR_MSK    0xffff0000
1064 /* The reset value of the ALT_I2C_SS_SCL_LCNT_IC_SS_SCL_LCNT register field. */
1065 #define ALT_I2C_SS_SCL_LCNT_IC_SS_SCL_LCNT_RESET      0x1d6
1066 /* Extracts the ALT_I2C_SS_SCL_LCNT_IC_SS_SCL_LCNT field value from a register. */
1067 #define ALT_I2C_SS_SCL_LCNT_IC_SS_SCL_LCNT_GET(value) (((value) & 0x0000ffff) >> 0)
1068 /* Produces a ALT_I2C_SS_SCL_LCNT_IC_SS_SCL_LCNT register field value suitable for setting the register. */
1069 #define ALT_I2C_SS_SCL_LCNT_IC_SS_SCL_LCNT_SET(value) (((value) << 0) & 0x0000ffff)
1070 
1071 #ifndef __ASSEMBLY__
1072 /*
1073  * WARNING: The C register and register group struct declarations are provided for
1074  * convenience and illustrative purposes. They should, however, be used with
1075  * caution as the C language standard provides no guarantees about the alignment or
1076  * atomicity of device memory accesses. The recommended practice for writing
1077  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
1078  * alt_write_word() functions.
1079  * 
1080  * The struct declaration for register ALT_I2C_SS_SCL_LCNT.
1081  */
1082 struct ALT_I2C_SS_SCL_LCNT_s
1083 {
1084     uint32_t  ic_ss_scl_lcnt : 16;  /* Std Spd SCL Low Period */
1085     uint32_t                 : 16;  /* *UNDEFINED* */
1086 };
1087 
1088 /* The typedef declaration for register ALT_I2C_SS_SCL_LCNT. */
1089 typedef volatile struct ALT_I2C_SS_SCL_LCNT_s  ALT_I2C_SS_SCL_LCNT_t;
1090 #endif  /* __ASSEMBLY__ */
1091 
1092 /* The byte offset of the ALT_I2C_SS_SCL_LCNT register from the beginning of the component. */
1093 #define ALT_I2C_SS_SCL_LCNT_OFST        0x18
1094 /* The address of the ALT_I2C_SS_SCL_LCNT register. */
1095 #define ALT_I2C_SS_SCL_LCNT_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_SS_SCL_LCNT_OFST))
1096 
1097 /*
1098  * Register : Fast Spd Clock SCL HCNT Register - ic_fs_scl_hcnt
1099  * 
1100  * This register sets the SCL clock high-period count for fast speed
1101  * 
1102  * Register Layout
1103  * 
1104  *  Bits    | Access | Reset | Description             
1105  * :--------|:-------|:------|:-------------------------
1106  *  [15:0]  | RW     | 0x3c  | Fast Spd SCL High Period
1107  *  [31:16] | ???    | 0x0   | *UNDEFINED*             
1108  * 
1109  */
1110 /*
1111  * Field : Fast Spd SCL High Period - ic_fs_scl_hcnt
1112  * 
1113  * This register must be set before any I2C bus transaction can take place to
1114  * ensure proper I/O timing. This register sets the SCL clock high-period count for
1115  * fast speed. It is used in high-speed mode to send the Master Code and START BYTE
1116  * or General CALL. This register goes away and becomes read-only returning 0s if
1117  * in Standard Speed Mode. This register can be written only when the I2C interface
1118  * is disabled, which corresponds to the Enable Register being set to 0. Writes at
1119  * other times have no effect. The minimum valid value is 6; hardware prevents
1120  * values less than this from being written, and if attempted results in 6 being
1121  * set.
1122  * 
1123  * Field Access Macros:
1124  * 
1125  */
1126 /* The Least Significant Bit (LSB) position of the ALT_I2C_FS_SCL_HCNT_IC_FS_SCL_HCNT register field. */
1127 #define ALT_I2C_FS_SCL_HCNT_IC_FS_SCL_HCNT_LSB        0
1128 /* The Most Significant Bit (MSB) position of the ALT_I2C_FS_SCL_HCNT_IC_FS_SCL_HCNT register field. */
1129 #define ALT_I2C_FS_SCL_HCNT_IC_FS_SCL_HCNT_MSB        15
1130 /* The width in bits of the ALT_I2C_FS_SCL_HCNT_IC_FS_SCL_HCNT register field. */
1131 #define ALT_I2C_FS_SCL_HCNT_IC_FS_SCL_HCNT_WIDTH      16
1132 /* The mask used to set the ALT_I2C_FS_SCL_HCNT_IC_FS_SCL_HCNT register field value. */
1133 #define ALT_I2C_FS_SCL_HCNT_IC_FS_SCL_HCNT_SET_MSK    0x0000ffff
1134 /* The mask used to clear the ALT_I2C_FS_SCL_HCNT_IC_FS_SCL_HCNT register field value. */
1135 #define ALT_I2C_FS_SCL_HCNT_IC_FS_SCL_HCNT_CLR_MSK    0xffff0000
1136 /* The reset value of the ALT_I2C_FS_SCL_HCNT_IC_FS_SCL_HCNT register field. */
1137 #define ALT_I2C_FS_SCL_HCNT_IC_FS_SCL_HCNT_RESET      0x3c
1138 /* Extracts the ALT_I2C_FS_SCL_HCNT_IC_FS_SCL_HCNT field value from a register. */
1139 #define ALT_I2C_FS_SCL_HCNT_IC_FS_SCL_HCNT_GET(value) (((value) & 0x0000ffff) >> 0)
1140 /* Produces a ALT_I2C_FS_SCL_HCNT_IC_FS_SCL_HCNT register field value suitable for setting the register. */
1141 #define ALT_I2C_FS_SCL_HCNT_IC_FS_SCL_HCNT_SET(value) (((value) << 0) & 0x0000ffff)
1142 
1143 #ifndef __ASSEMBLY__
1144 /*
1145  * WARNING: The C register and register group struct declarations are provided for
1146  * convenience and illustrative purposes. They should, however, be used with
1147  * caution as the C language standard provides no guarantees about the alignment or
1148  * atomicity of device memory accesses. The recommended practice for writing
1149  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
1150  * alt_write_word() functions.
1151  * 
1152  * The struct declaration for register ALT_I2C_FS_SCL_HCNT.
1153  */
1154 struct ALT_I2C_FS_SCL_HCNT_s
1155 {
1156     uint32_t  ic_fs_scl_hcnt : 16;  /* Fast Spd SCL High Period */
1157     uint32_t                 : 16;  /* *UNDEFINED* */
1158 };
1159 
1160 /* The typedef declaration for register ALT_I2C_FS_SCL_HCNT. */
1161 typedef volatile struct ALT_I2C_FS_SCL_HCNT_s  ALT_I2C_FS_SCL_HCNT_t;
1162 #endif  /* __ASSEMBLY__ */
1163 
1164 /* The byte offset of the ALT_I2C_FS_SCL_HCNT register from the beginning of the component. */
1165 #define ALT_I2C_FS_SCL_HCNT_OFST        0x1c
1166 /* The address of the ALT_I2C_FS_SCL_HCNT register. */
1167 #define ALT_I2C_FS_SCL_HCNT_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_FS_SCL_HCNT_OFST))
1168 
1169 /*
1170  * Register : Fast Spd Clock SCL LCNT Register - ic_fs_scl_lcnt
1171  * 
1172  * This register sets the SCL clock low period count
1173  * 
1174  * Register Layout
1175  * 
1176  *  Bits    | Access | Reset | Description            
1177  * :--------|:-------|:------|:------------------------
1178  *  [15:0]  | RW     | 0x82  | Fast Spd SCL Low Period
1179  *  [31:16] | ???    | 0x0   | *UNDEFINED*            
1180  * 
1181  */
1182 /*
1183  * Field : Fast Spd SCL Low Period - ic_fs_scl_lcnt
1184  * 
1185  * This register must be set before any I2C bus transaction can take place to
1186  * ensure proper I/O timing. This field sets the SCL clock low period count for
1187  * fast speed. It is used in high-speed mode to send the Master Code and START BYTE
1188  * or General CALL. This register can be written only when the I2C interface is
1189  * disabled, which corresponds to the Enable Register being set to 0. Writes at
1190  * other times have no effect.The minimum valid value is 8; hardware prevents
1191  * values less than this being written, and if attempted results in 8 being set.
1192  * 
1193  * Field Access Macros:
1194  * 
1195  */
1196 /* The Least Significant Bit (LSB) position of the ALT_I2C_FS_SCL_LCNT_IC_FS_SCL_LCNT register field. */
1197 #define ALT_I2C_FS_SCL_LCNT_IC_FS_SCL_LCNT_LSB        0
1198 /* The Most Significant Bit (MSB) position of the ALT_I2C_FS_SCL_LCNT_IC_FS_SCL_LCNT register field. */
1199 #define ALT_I2C_FS_SCL_LCNT_IC_FS_SCL_LCNT_MSB        15
1200 /* The width in bits of the ALT_I2C_FS_SCL_LCNT_IC_FS_SCL_LCNT register field. */
1201 #define ALT_I2C_FS_SCL_LCNT_IC_FS_SCL_LCNT_WIDTH      16
1202 /* The mask used to set the ALT_I2C_FS_SCL_LCNT_IC_FS_SCL_LCNT register field value. */
1203 #define ALT_I2C_FS_SCL_LCNT_IC_FS_SCL_LCNT_SET_MSK    0x0000ffff
1204 /* The mask used to clear the ALT_I2C_FS_SCL_LCNT_IC_FS_SCL_LCNT register field value. */
1205 #define ALT_I2C_FS_SCL_LCNT_IC_FS_SCL_LCNT_CLR_MSK    0xffff0000
1206 /* The reset value of the ALT_I2C_FS_SCL_LCNT_IC_FS_SCL_LCNT register field. */
1207 #define ALT_I2C_FS_SCL_LCNT_IC_FS_SCL_LCNT_RESET      0x82
1208 /* Extracts the ALT_I2C_FS_SCL_LCNT_IC_FS_SCL_LCNT field value from a register. */
1209 #define ALT_I2C_FS_SCL_LCNT_IC_FS_SCL_LCNT_GET(value) (((value) & 0x0000ffff) >> 0)
1210 /* Produces a ALT_I2C_FS_SCL_LCNT_IC_FS_SCL_LCNT register field value suitable for setting the register. */
1211 #define ALT_I2C_FS_SCL_LCNT_IC_FS_SCL_LCNT_SET(value) (((value) << 0) & 0x0000ffff)
1212 
1213 #ifndef __ASSEMBLY__
1214 /*
1215  * WARNING: The C register and register group struct declarations are provided for
1216  * convenience and illustrative purposes. They should, however, be used with
1217  * caution as the C language standard provides no guarantees about the alignment or
1218  * atomicity of device memory accesses. The recommended practice for writing
1219  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
1220  * alt_write_word() functions.
1221  * 
1222  * The struct declaration for register ALT_I2C_FS_SCL_LCNT.
1223  */
1224 struct ALT_I2C_FS_SCL_LCNT_s
1225 {
1226     uint32_t  ic_fs_scl_lcnt : 16;  /* Fast Spd SCL Low Period */
1227     uint32_t                 : 16;  /* *UNDEFINED* */
1228 };
1229 
1230 /* The typedef declaration for register ALT_I2C_FS_SCL_LCNT. */
1231 typedef volatile struct ALT_I2C_FS_SCL_LCNT_s  ALT_I2C_FS_SCL_LCNT_t;
1232 #endif  /* __ASSEMBLY__ */
1233 
1234 /* The byte offset of the ALT_I2C_FS_SCL_LCNT register from the beginning of the component. */
1235 #define ALT_I2C_FS_SCL_LCNT_OFST        0x20
1236 /* The address of the ALT_I2C_FS_SCL_LCNT register. */
1237 #define ALT_I2C_FS_SCL_LCNT_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_FS_SCL_LCNT_OFST))
1238 
1239 /*
1240  * Register : Interrupt Status Register - ic_intr_stat
1241  * 
1242  * Each bit in this register has a corresponding mask bit in the Interrupt Mask
1243  * Register. These bits are cleared by reading the matching Interrupt Clear
1244  * Register. The unmasked raw versions of these bits are available in the Raw
1245  * Interrupt Status Register.
1246  * 
1247  * Register Layout
1248  * 
1249  *  Bits    | Access | Reset | Description             
1250  * :--------|:-------|:------|:-------------------------
1251  *  [0]     | R      | 0x0   | Receiver Under          
1252  *  [1]     | R      | 0x0   | Receiver Over           
1253  *  [2]     | R      | 0x0   | Receive Full            
1254  *  [3]     | R      | 0x0   | Interrupt Transmit Over 
1255  *  [4]     | R      | 0x0   | Interrupt Transmit Empty
1256  *  [5]     | R      | 0x0   | Interrupt Read Request  
1257  *  [6]     | R      | 0x0   | Interrupt TX Abort      
1258  *  [7]     | R      | 0x0   | Interrupt RX Done       
1259  *  [8]     | R      | 0x0   | Interrupt R_activity    
1260  *  [9]     | R      | 0x0   | Interrupt Stop Detect   
1261  *  [10]    | R      | 0x0   | Interrupt Start Detect  
1262  *  [11]    | R      | 0x0   | Interrupt General Call  
1263  *  [31:12] | ???    | 0x0   | *UNDEFINED*             
1264  * 
1265  */
1266 /*
1267  * Field : Receiver Under - r_rx_under
1268  * 
1269  * Set if the processor attempts to read the receive buffer when it is empty by
1270  * reading from the Tx Rx Data and Command Register. If the module is disabled,
1271  * Enable Register is set to 0, this bit keeps its level until the master or slave
1272  * state machines go into idle, then this interrupt is cleared.
1273  * 
1274  * Field Access Macros:
1275  * 
1276  */
1277 /* The Least Significant Bit (LSB) position of the ALT_I2C_INTR_STAT_R_RX_UNDER register field. */
1278 #define ALT_I2C_INTR_STAT_R_RX_UNDER_LSB        0
1279 /* The Most Significant Bit (MSB) position of the ALT_I2C_INTR_STAT_R_RX_UNDER register field. */
1280 #define ALT_I2C_INTR_STAT_R_RX_UNDER_MSB        0
1281 /* The width in bits of the ALT_I2C_INTR_STAT_R_RX_UNDER register field. */
1282 #define ALT_I2C_INTR_STAT_R_RX_UNDER_WIDTH      1
1283 /* The mask used to set the ALT_I2C_INTR_STAT_R_RX_UNDER register field value. */
1284 #define ALT_I2C_INTR_STAT_R_RX_UNDER_SET_MSK    0x00000001
1285 /* The mask used to clear the ALT_I2C_INTR_STAT_R_RX_UNDER register field value. */
1286 #define ALT_I2C_INTR_STAT_R_RX_UNDER_CLR_MSK    0xfffffffe
1287 /* The reset value of the ALT_I2C_INTR_STAT_R_RX_UNDER register field. */
1288 #define ALT_I2C_INTR_STAT_R_RX_UNDER_RESET      0x0
1289 /* Extracts the ALT_I2C_INTR_STAT_R_RX_UNDER field value from a register. */
1290 #define ALT_I2C_INTR_STAT_R_RX_UNDER_GET(value) (((value) & 0x00000001) >> 0)
1291 /* Produces a ALT_I2C_INTR_STAT_R_RX_UNDER register field value suitable for setting the register. */
1292 #define ALT_I2C_INTR_STAT_R_RX_UNDER_SET(value) (((value) << 0) & 0x00000001)
1293 
1294 /*
1295  * Field : Receiver Over - r_rx_over
1296  * 
1297  * Set if the receive buffer is completely filled to 64 and an additional byte is
1298  * received from an external I2C device. The I2C acknowledges this, but any data
1299  * bytes received after the FIFO is full are lost. If the module is disabled,
1300  * Enable Register bit[0] is set to 0 this bit keeps its level until the master or
1301  * slave state machines go into idle, then this interrupt is cleared.
1302  * 
1303  * Field Access Macros:
1304  * 
1305  */
1306 /* The Least Significant Bit (LSB) position of the ALT_I2C_INTR_STAT_R_RX_OVER register field. */
1307 #define ALT_I2C_INTR_STAT_R_RX_OVER_LSB        1
1308 /* The Most Significant Bit (MSB) position of the ALT_I2C_INTR_STAT_R_RX_OVER register field. */
1309 #define ALT_I2C_INTR_STAT_R_RX_OVER_MSB        1
1310 /* The width in bits of the ALT_I2C_INTR_STAT_R_RX_OVER register field. */
1311 #define ALT_I2C_INTR_STAT_R_RX_OVER_WIDTH      1
1312 /* The mask used to set the ALT_I2C_INTR_STAT_R_RX_OVER register field value. */
1313 #define ALT_I2C_INTR_STAT_R_RX_OVER_SET_MSK    0x00000002
1314 /* The mask used to clear the ALT_I2C_INTR_STAT_R_RX_OVER register field value. */
1315 #define ALT_I2C_INTR_STAT_R_RX_OVER_CLR_MSK    0xfffffffd
1316 /* The reset value of the ALT_I2C_INTR_STAT_R_RX_OVER register field. */
1317 #define ALT_I2C_INTR_STAT_R_RX_OVER_RESET      0x0
1318 /* Extracts the ALT_I2C_INTR_STAT_R_RX_OVER field value from a register. */
1319 #define ALT_I2C_INTR_STAT_R_RX_OVER_GET(value) (((value) & 0x00000002) >> 1)
1320 /* Produces a ALT_I2C_INTR_STAT_R_RX_OVER register field value suitable for setting the register. */
1321 #define ALT_I2C_INTR_STAT_R_RX_OVER_SET(value) (((value) << 1) & 0x00000002)
1322 
1323 /*
1324  * Field : Receive Full - r_rx_full
1325  * 
1326  * Set when the receive buffer reaches or goes above the Receive FIFO Threshold
1327  * Value(rx_tl). It is automatically cleared by hardware when buffer level goes
1328  * below the threshold. If the module is disabled, Bit [0] of the Enable Register
1329  * set to 0, the RX FIFO is flushed and held in reset; therefore the RX FIFO is not
1330  * full. So this bit is cleared once the Enable Register Bit 0 is programmed with a
1331  * 0, regardless of the activity that continues.
1332  * 
1333  * Field Access Macros:
1334  * 
1335  */
1336 /* The Least Significant Bit (LSB) position of the ALT_I2C_INTR_STAT_R_RX_FULL register field. */
1337 #define ALT_I2C_INTR_STAT_R_RX_FULL_LSB        2
1338 /* The Most Significant Bit (MSB) position of the ALT_I2C_INTR_STAT_R_RX_FULL register field. */
1339 #define ALT_I2C_INTR_STAT_R_RX_FULL_MSB        2
1340 /* The width in bits of the ALT_I2C_INTR_STAT_R_RX_FULL register field. */
1341 #define ALT_I2C_INTR_STAT_R_RX_FULL_WIDTH      1
1342 /* The mask used to set the ALT_I2C_INTR_STAT_R_RX_FULL register field value. */
1343 #define ALT_I2C_INTR_STAT_R_RX_FULL_SET_MSK    0x00000004
1344 /* The mask used to clear the ALT_I2C_INTR_STAT_R_RX_FULL register field value. */
1345 #define ALT_I2C_INTR_STAT_R_RX_FULL_CLR_MSK    0xfffffffb
1346 /* The reset value of the ALT_I2C_INTR_STAT_R_RX_FULL register field. */
1347 #define ALT_I2C_INTR_STAT_R_RX_FULL_RESET      0x0
1348 /* Extracts the ALT_I2C_INTR_STAT_R_RX_FULL field value from a register. */
1349 #define ALT_I2C_INTR_STAT_R_RX_FULL_GET(value) (((value) & 0x00000004) >> 2)
1350 /* Produces a ALT_I2C_INTR_STAT_R_RX_FULL register field value suitable for setting the register. */
1351 #define ALT_I2C_INTR_STAT_R_RX_FULL_SET(value) (((value) << 2) & 0x00000004)
1352 
1353 /*
1354  * Field : Interrupt Transmit Over - r_tx_over
1355  * 
1356  * Set during transmit if the transmit buffer is filled to 64 and the processor
1357  * attempts to issue another I2C command by writing to the Data and Command
1358  * Register. When the module is disabled, this bit keeps its level until the master
1359  * or slave state machines goes into idle, then interrupt is cleared.
1360  * 
1361  * Field Access Macros:
1362  * 
1363  */
1364 /* The Least Significant Bit (LSB) position of the ALT_I2C_INTR_STAT_R_TX_OVER register field. */
1365 #define ALT_I2C_INTR_STAT_R_TX_OVER_LSB        3
1366 /* The Most Significant Bit (MSB) position of the ALT_I2C_INTR_STAT_R_TX_OVER register field. */
1367 #define ALT_I2C_INTR_STAT_R_TX_OVER_MSB        3
1368 /* The width in bits of the ALT_I2C_INTR_STAT_R_TX_OVER register field. */
1369 #define ALT_I2C_INTR_STAT_R_TX_OVER_WIDTH      1
1370 /* The mask used to set the ALT_I2C_INTR_STAT_R_TX_OVER register field value. */
1371 #define ALT_I2C_INTR_STAT_R_TX_OVER_SET_MSK    0x00000008
1372 /* The mask used to clear the ALT_I2C_INTR_STAT_R_TX_OVER register field value. */
1373 #define ALT_I2C_INTR_STAT_R_TX_OVER_CLR_MSK    0xfffffff7
1374 /* The reset value of the ALT_I2C_INTR_STAT_R_TX_OVER register field. */
1375 #define ALT_I2C_INTR_STAT_R_TX_OVER_RESET      0x0
1376 /* Extracts the ALT_I2C_INTR_STAT_R_TX_OVER field value from a register. */
1377 #define ALT_I2C_INTR_STAT_R_TX_OVER_GET(value) (((value) & 0x00000008) >> 3)
1378 /* Produces a ALT_I2C_INTR_STAT_R_TX_OVER register field value suitable for setting the register. */
1379 #define ALT_I2C_INTR_STAT_R_TX_OVER_SET(value) (((value) << 3) & 0x00000008)
1380 
1381 /*
1382  * Field : Interrupt Transmit Empty - r_tx_empty
1383  * 
1384  * This bit is set to 1 when the transmit buffer is at or below the threshold value
1385  * set in the ic_tx_tl register. It is automatically cleared by hardware when the
1386  * buffer level goes above the threshold. When the ic_enable bit 0 is 0, the TX
1387  * FIFO is flushed and held in reset. There the TX FIFO looks like it has no data
1388  * within it, so this bit is set to 1, provided there is activity in the master or
1389  * slave state machines. When there is no longer activity, this bit is set to 0.
1390  * 
1391  * Field Access Macros:
1392  * 
1393  */
1394 /* The Least Significant Bit (LSB) position of the ALT_I2C_INTR_STAT_R_TX_EMPTY register field. */
1395 #define ALT_I2C_INTR_STAT_R_TX_EMPTY_LSB        4
1396 /* The Most Significant Bit (MSB) position of the ALT_I2C_INTR_STAT_R_TX_EMPTY register field. */
1397 #define ALT_I2C_INTR_STAT_R_TX_EMPTY_MSB        4
1398 /* The width in bits of the ALT_I2C_INTR_STAT_R_TX_EMPTY register field. */
1399 #define ALT_I2C_INTR_STAT_R_TX_EMPTY_WIDTH      1
1400 /* The mask used to set the ALT_I2C_INTR_STAT_R_TX_EMPTY register field value. */
1401 #define ALT_I2C_INTR_STAT_R_TX_EMPTY_SET_MSK    0x00000010
1402 /* The mask used to clear the ALT_I2C_INTR_STAT_R_TX_EMPTY register field value. */
1403 #define ALT_I2C_INTR_STAT_R_TX_EMPTY_CLR_MSK    0xffffffef
1404 /* The reset value of the ALT_I2C_INTR_STAT_R_TX_EMPTY register field. */
1405 #define ALT_I2C_INTR_STAT_R_TX_EMPTY_RESET      0x0
1406 /* Extracts the ALT_I2C_INTR_STAT_R_TX_EMPTY field value from a register. */
1407 #define ALT_I2C_INTR_STAT_R_TX_EMPTY_GET(value) (((value) & 0x00000010) >> 4)
1408 /* Produces a ALT_I2C_INTR_STAT_R_TX_EMPTY register field value suitable for setting the register. */
1409 #define ALT_I2C_INTR_STAT_R_TX_EMPTY_SET(value) (((value) << 4) & 0x00000010)
1410 
1411 /*
1412  * Field : Interrupt Read Request - r_rd_req
1413  * 
1414  * This bit is set to 1 when i2c is acting as a slave and another I2C master is
1415  * attempting to read data from I2C. The I2C holds the I2C bus in a wait state
1416  * (SCL=0) until this interrupt is serviced, which means that the slave has been
1417  * addressed by a remote master that is asking for data to be transferred. The
1418  * processor must respond to this interrupt and then write the requested data to
1419  * the IC_DATA_CMD register. This bit is set to 0 just after the processor reads
1420  * the ic_clr_rd_req register.
1421  * 
1422  * Field Access Macros:
1423  * 
1424  */
1425 /* The Least Significant Bit (LSB) position of the ALT_I2C_INTR_STAT_R_RD_REQ register field. */
1426 #define ALT_I2C_INTR_STAT_R_RD_REQ_LSB        5
1427 /* The Most Significant Bit (MSB) position of the ALT_I2C_INTR_STAT_R_RD_REQ register field. */
1428 #define ALT_I2C_INTR_STAT_R_RD_REQ_MSB        5
1429 /* The width in bits of the ALT_I2C_INTR_STAT_R_RD_REQ register field. */
1430 #define ALT_I2C_INTR_STAT_R_RD_REQ_WIDTH      1
1431 /* The mask used to set the ALT_I2C_INTR_STAT_R_RD_REQ register field value. */
1432 #define ALT_I2C_INTR_STAT_R_RD_REQ_SET_MSK    0x00000020
1433 /* The mask used to clear the ALT_I2C_INTR_STAT_R_RD_REQ register field value. */
1434 #define ALT_I2C_INTR_STAT_R_RD_REQ_CLR_MSK    0xffffffdf
1435 /* The reset value of the ALT_I2C_INTR_STAT_R_RD_REQ register field. */
1436 #define ALT_I2C_INTR_STAT_R_RD_REQ_RESET      0x0
1437 /* Extracts the ALT_I2C_INTR_STAT_R_RD_REQ field value from a register. */
1438 #define ALT_I2C_INTR_STAT_R_RD_REQ_GET(value) (((value) & 0x00000020) >> 5)
1439 /* Produces a ALT_I2C_INTR_STAT_R_RD_REQ register field value suitable for setting the register. */
1440 #define ALT_I2C_INTR_STAT_R_RD_REQ_SET(value) (((value) << 5) & 0x00000020)
1441 
1442 /*
1443  * Field : Interrupt TX Abort - r_tx_abrt
1444  * 
1445  * This bit indicates if I2C, as an I2C transmitter, is unable to complete the
1446  * intended actions on the contents of the transmit FIFO. This situation can occur
1447  * both as an I2C master or an I2C slave, and is referred to as a 'transmit
1448  * abort'.When this bit is set to 1, the ic_tx_abrt_source register indicates the
1449  * reason why the transmit abort takes places.
1450  * 
1451  * NOTE: The I2C flushes/resets/empties the TX FIFO whenever this bit is set. The
1452  * TX FIFO remains in this flushed state until the register ic_clr_tx_abrt is read.
1453  * Once this read is performed, the TX FIFO is then ready to accept more data bytes
1454  * from the APB interface.
1455  * 
1456  * Field Access Macros:
1457  * 
1458  */
1459 /* The Least Significant Bit (LSB) position of the ALT_I2C_INTR_STAT_R_TX_ABRT register field. */
1460 #define ALT_I2C_INTR_STAT_R_TX_ABRT_LSB        6
1461 /* The Most Significant Bit (MSB) position of the ALT_I2C_INTR_STAT_R_TX_ABRT register field. */
1462 #define ALT_I2C_INTR_STAT_R_TX_ABRT_MSB        6
1463 /* The width in bits of the ALT_I2C_INTR_STAT_R_TX_ABRT register field. */
1464 #define ALT_I2C_INTR_STAT_R_TX_ABRT_WIDTH      1
1465 /* The mask used to set the ALT_I2C_INTR_STAT_R_TX_ABRT register field value. */
1466 #define ALT_I2C_INTR_STAT_R_TX_ABRT_SET_MSK    0x00000040
1467 /* The mask used to clear the ALT_I2C_INTR_STAT_R_TX_ABRT register field value. */
1468 #define ALT_I2C_INTR_STAT_R_TX_ABRT_CLR_MSK    0xffffffbf
1469 /* The reset value of the ALT_I2C_INTR_STAT_R_TX_ABRT register field. */
1470 #define ALT_I2C_INTR_STAT_R_TX_ABRT_RESET      0x0
1471 /* Extracts the ALT_I2C_INTR_STAT_R_TX_ABRT field value from a register. */
1472 #define ALT_I2C_INTR_STAT_R_TX_ABRT_GET(value) (((value) & 0x00000040) >> 6)
1473 /* Produces a ALT_I2C_INTR_STAT_R_TX_ABRT register field value suitable for setting the register. */
1474 #define ALT_I2C_INTR_STAT_R_TX_ABRT_SET(value) (((value) << 6) & 0x00000040)
1475 
1476 /*
1477  * Field : Interrupt RX Done - r_rx_done
1478  * 
1479  * When the I2C is acting as a slave-transmitter, this bit is set to 1, if the
1480  * master does not acknowledge a transmitted byte. This occurs on the last byte of
1481  * the transmission, indicating that the transmission is done.
1482  * 
1483  * Field Access Macros:
1484  * 
1485  */
1486 /* The Least Significant Bit (LSB) position of the ALT_I2C_INTR_STAT_R_RX_DONE register field. */
1487 #define ALT_I2C_INTR_STAT_R_RX_DONE_LSB        7
1488 /* The Most Significant Bit (MSB) position of the ALT_I2C_INTR_STAT_R_RX_DONE register field. */
1489 #define ALT_I2C_INTR_STAT_R_RX_DONE_MSB        7
1490 /* The width in bits of the ALT_I2C_INTR_STAT_R_RX_DONE register field. */
1491 #define ALT_I2C_INTR_STAT_R_RX_DONE_WIDTH      1
1492 /* The mask used to set the ALT_I2C_INTR_STAT_R_RX_DONE register field value. */
1493 #define ALT_I2C_INTR_STAT_R_RX_DONE_SET_MSK    0x00000080
1494 /* The mask used to clear the ALT_I2C_INTR_STAT_R_RX_DONE register field value. */
1495 #define ALT_I2C_INTR_STAT_R_RX_DONE_CLR_MSK    0xffffff7f
1496 /* The reset value of the ALT_I2C_INTR_STAT_R_RX_DONE register field. */
1497 #define ALT_I2C_INTR_STAT_R_RX_DONE_RESET      0x0
1498 /* Extracts the ALT_I2C_INTR_STAT_R_RX_DONE field value from a register. */
1499 #define ALT_I2C_INTR_STAT_R_RX_DONE_GET(value) (((value) & 0x00000080) >> 7)
1500 /* Produces a ALT_I2C_INTR_STAT_R_RX_DONE register field value suitable for setting the register. */
1501 #define ALT_I2C_INTR_STAT_R_RX_DONE_SET(value) (((value) << 7) & 0x00000080)
1502 
1503 /*
1504  * Field : Interrupt R_activity - r_activity
1505  * 
1506  * This bit captures I2C activity and stays set until it is cleared. There are four
1507  * ways to clear it:
1508  * 
1509  * * Disabling the I2C
1510  * 
1511  * * Reading the ic_clr_activity register
1512  * 
1513  * * Reading the ic_clr_intr register
1514  * 
1515  * * I2C reset
1516  * 
1517  * Once this bit is set, it stays set unless one of the four methods is used to
1518  * clear it. Even if the I2C module is idle, this bit remains set until cleared,
1519  * indicating that there was activity on the bus.
1520  * 
1521  * Field Access Macros:
1522  * 
1523  */
1524 /* The Least Significant Bit (LSB) position of the ALT_I2C_INTR_STAT_R_ACTIVITY register field. */
1525 #define ALT_I2C_INTR_STAT_R_ACTIVITY_LSB        8
1526 /* The Most Significant Bit (MSB) position of the ALT_I2C_INTR_STAT_R_ACTIVITY register field. */
1527 #define ALT_I2C_INTR_STAT_R_ACTIVITY_MSB        8
1528 /* The width in bits of the ALT_I2C_INTR_STAT_R_ACTIVITY register field. */
1529 #define ALT_I2C_INTR_STAT_R_ACTIVITY_WIDTH      1
1530 /* The mask used to set the ALT_I2C_INTR_STAT_R_ACTIVITY register field value. */
1531 #define ALT_I2C_INTR_STAT_R_ACTIVITY_SET_MSK    0x00000100
1532 /* The mask used to clear the ALT_I2C_INTR_STAT_R_ACTIVITY register field value. */
1533 #define ALT_I2C_INTR_STAT_R_ACTIVITY_CLR_MSK    0xfffffeff
1534 /* The reset value of the ALT_I2C_INTR_STAT_R_ACTIVITY register field. */
1535 #define ALT_I2C_INTR_STAT_R_ACTIVITY_RESET      0x0
1536 /* Extracts the ALT_I2C_INTR_STAT_R_ACTIVITY field value from a register. */
1537 #define ALT_I2C_INTR_STAT_R_ACTIVITY_GET(value) (((value) & 0x00000100) >> 8)
1538 /* Produces a ALT_I2C_INTR_STAT_R_ACTIVITY register field value suitable for setting the register. */
1539 #define ALT_I2C_INTR_STAT_R_ACTIVITY_SET(value) (((value) << 8) & 0x00000100)
1540 
1541 /*
1542  * Field : Interrupt Stop Detect - r_stop_det
1543  * 
1544  * Indicates whether a STOP condition has occurred on the I2C interface regardless
1545  * of whether I2C is operating in slave or master mode.
1546  * 
1547  * Field Access Macros:
1548  * 
1549  */
1550 /* The Least Significant Bit (LSB) position of the ALT_I2C_INTR_STAT_R_STOP_DET register field. */
1551 #define ALT_I2C_INTR_STAT_R_STOP_DET_LSB        9
1552 /* The Most Significant Bit (MSB) position of the ALT_I2C_INTR_STAT_R_STOP_DET register field. */
1553 #define ALT_I2C_INTR_STAT_R_STOP_DET_MSB        9
1554 /* The width in bits of the ALT_I2C_INTR_STAT_R_STOP_DET register field. */
1555 #define ALT_I2C_INTR_STAT_R_STOP_DET_WIDTH      1
1556 /* The mask used to set the ALT_I2C_INTR_STAT_R_STOP_DET register field value. */
1557 #define ALT_I2C_INTR_STAT_R_STOP_DET_SET_MSK    0x00000200
1558 /* The mask used to clear the ALT_I2C_INTR_STAT_R_STOP_DET register field value. */
1559 #define ALT_I2C_INTR_STAT_R_STOP_DET_CLR_MSK    0xfffffdff
1560 /* The reset value of the ALT_I2C_INTR_STAT_R_STOP_DET register field. */
1561 #define ALT_I2C_INTR_STAT_R_STOP_DET_RESET      0x0
1562 /* Extracts the ALT_I2C_INTR_STAT_R_STOP_DET field value from a register. */
1563 #define ALT_I2C_INTR_STAT_R_STOP_DET_GET(value) (((value) & 0x00000200) >> 9)
1564 /* Produces a ALT_I2C_INTR_STAT_R_STOP_DET register field value suitable for setting the register. */
1565 #define ALT_I2C_INTR_STAT_R_STOP_DET_SET(value) (((value) << 9) & 0x00000200)
1566 
1567 /*
1568  * Field : Interrupt Start Detect - r_start_det
1569  * 
1570  * Indicates whether a START or RESTART condition has occurred on the I2C interface
1571  * regardless of whether I2C is operating in slave or master mode.
1572  * 
1573  * Field Access Macros:
1574  * 
1575  */
1576 /* The Least Significant Bit (LSB) position of the ALT_I2C_INTR_STAT_R_START_DET register field. */
1577 #define ALT_I2C_INTR_STAT_R_START_DET_LSB        10
1578 /* The Most Significant Bit (MSB) position of the ALT_I2C_INTR_STAT_R_START_DET register field. */
1579 #define ALT_I2C_INTR_STAT_R_START_DET_MSB        10
1580 /* The width in bits of the ALT_I2C_INTR_STAT_R_START_DET register field. */
1581 #define ALT_I2C_INTR_STAT_R_START_DET_WIDTH      1
1582 /* The mask used to set the ALT_I2C_INTR_STAT_R_START_DET register field value. */
1583 #define ALT_I2C_INTR_STAT_R_START_DET_SET_MSK    0x00000400
1584 /* The mask used to clear the ALT_I2C_INTR_STAT_R_START_DET register field value. */
1585 #define ALT_I2C_INTR_STAT_R_START_DET_CLR_MSK    0xfffffbff
1586 /* The reset value of the ALT_I2C_INTR_STAT_R_START_DET register field. */
1587 #define ALT_I2C_INTR_STAT_R_START_DET_RESET      0x0
1588 /* Extracts the ALT_I2C_INTR_STAT_R_START_DET field value from a register. */
1589 #define ALT_I2C_INTR_STAT_R_START_DET_GET(value) (((value) & 0x00000400) >> 10)
1590 /* Produces a ALT_I2C_INTR_STAT_R_START_DET register field value suitable for setting the register. */
1591 #define ALT_I2C_INTR_STAT_R_START_DET_SET(value) (((value) << 10) & 0x00000400)
1592 
1593 /*
1594  * Field : Interrupt General Call - r_gen_call
1595  * 
1596  * Set only when a General Call address is received and it is acknowledged. It
1597  * stays set until it is cleared either by disabling I2C or when the CPU reads bit
1598  * 0 of the ic_clr_gen_call register. I2C stores the received data in the Rx
1599  * buffer.
1600  * 
1601  * Field Access Macros:
1602  * 
1603  */
1604 /* The Least Significant Bit (LSB) position of the ALT_I2C_INTR_STAT_R_GEN_CALL register field. */
1605 #define ALT_I2C_INTR_STAT_R_GEN_CALL_LSB        11
1606 /* The Most Significant Bit (MSB) position of the ALT_I2C_INTR_STAT_R_GEN_CALL register field. */
1607 #define ALT_I2C_INTR_STAT_R_GEN_CALL_MSB        11
1608 /* The width in bits of the ALT_I2C_INTR_STAT_R_GEN_CALL register field. */
1609 #define ALT_I2C_INTR_STAT_R_GEN_CALL_WIDTH      1
1610 /* The mask used to set the ALT_I2C_INTR_STAT_R_GEN_CALL register field value. */
1611 #define ALT_I2C_INTR_STAT_R_GEN_CALL_SET_MSK    0x00000800
1612 /* The mask used to clear the ALT_I2C_INTR_STAT_R_GEN_CALL register field value. */
1613 #define ALT_I2C_INTR_STAT_R_GEN_CALL_CLR_MSK    0xfffff7ff
1614 /* The reset value of the ALT_I2C_INTR_STAT_R_GEN_CALL register field. */
1615 #define ALT_I2C_INTR_STAT_R_GEN_CALL_RESET      0x0
1616 /* Extracts the ALT_I2C_INTR_STAT_R_GEN_CALL field value from a register. */
1617 #define ALT_I2C_INTR_STAT_R_GEN_CALL_GET(value) (((value) & 0x00000800) >> 11)
1618 /* Produces a ALT_I2C_INTR_STAT_R_GEN_CALL register field value suitable for setting the register. */
1619 #define ALT_I2C_INTR_STAT_R_GEN_CALL_SET(value) (((value) << 11) & 0x00000800)
1620 
1621 #ifndef __ASSEMBLY__
1622 /*
1623  * WARNING: The C register and register group struct declarations are provided for
1624  * convenience and illustrative purposes. They should, however, be used with
1625  * caution as the C language standard provides no guarantees about the alignment or
1626  * atomicity of device memory accesses. The recommended practice for writing
1627  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
1628  * alt_write_word() functions.
1629  * 
1630  * The struct declaration for register ALT_I2C_INTR_STAT.
1631  */
1632 struct ALT_I2C_INTR_STAT_s
1633 {
1634     const uint32_t  r_rx_under  :  1;  /* Receiver Under */
1635     const uint32_t  r_rx_over   :  1;  /* Receiver Over */
1636     const uint32_t  r_rx_full   :  1;  /* Receive Full */
1637     const uint32_t  r_tx_over   :  1;  /* Interrupt Transmit Over */
1638     const uint32_t  r_tx_empty  :  1;  /* Interrupt Transmit Empty */
1639     const uint32_t  r_rd_req    :  1;  /* Interrupt Read Request */
1640     const uint32_t  r_tx_abrt   :  1;  /* Interrupt TX Abort */
1641     const uint32_t  r_rx_done   :  1;  /* Interrupt RX Done */
1642     const uint32_t  r_activity  :  1;  /* Interrupt R_activity */
1643     const uint32_t  r_stop_det  :  1;  /* Interrupt Stop Detect */
1644     const uint32_t  r_start_det :  1;  /* Interrupt Start Detect */
1645     const uint32_t  r_gen_call  :  1;  /* Interrupt General Call */
1646     uint32_t                    : 20;  /* *UNDEFINED* */
1647 };
1648 
1649 /* The typedef declaration for register ALT_I2C_INTR_STAT. */
1650 typedef volatile struct ALT_I2C_INTR_STAT_s  ALT_I2C_INTR_STAT_t;
1651 #endif  /* __ASSEMBLY__ */
1652 
1653 /* The byte offset of the ALT_I2C_INTR_STAT register from the beginning of the component. */
1654 #define ALT_I2C_INTR_STAT_OFST        0x2c
1655 /* The address of the ALT_I2C_INTR_STAT register. */
1656 #define ALT_I2C_INTR_STAT_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_INTR_STAT_OFST))
1657 
1658 /*
1659  * Register : Interrupt Mask Register - ic_intr_mask
1660  * 
1661  * These bits mask their corresponding interrupt status bits.
1662  * 
1663  * Register Layout
1664  * 
1665  *  Bits    | Access | Reset | Description    
1666  * :--------|:-------|:------|:----------------
1667  *  [0]     | RW     | 0x1   | Mask RX Under  
1668  *  [1]     | RW     | 0x1   | RX Buffer Over 
1669  *  [2]     | RW     | 0x1   | RX Buffer Full 
1670  *  [3]     | RW     | 0x1   | TX Buffer Over 
1671  *  [4]     | RW     | 0x1   | TX Buffer Empty
1672  *  [5]     | RW     | 0x1   | Read Request   
1673  *  [6]     | RW     | 0x1   | TX Abort       
1674  *  [7]     | RW     | 0x1   | RX Done        
1675  *  [8]     | RW     | 0x0   | Activity Bit   
1676  *  [9]     | RW     | 0x0   | Stop Detect    
1677  *  [10]    | RW     | 0x0   | Start Detect   
1678  *  [11]    | RW     | 0x1   | General Call   
1679  *  [31:12] | ???    | 0x0   | *UNDEFINED*    
1680  * 
1681  */
1682 /*
1683  * Field : Mask RX Under - m_rx_under
1684  * 
1685  * Set if the processor attempts to read the receive buffer when it is empty by
1686  * reading from the ic_data_cmd register. If the module is disabled ic_enable[0]=0,
1687  * this bit keeps its level until the master or slave state machines go into idle,
1688  * and then this interrupt is cleared.
1689  * 
1690  * Field Access Macros:
1691  * 
1692  */
1693 /* The Least Significant Bit (LSB) position of the ALT_I2C_INTR_MSK_M_RX_UNDER register field. */
1694 #define ALT_I2C_INTR_MSK_M_RX_UNDER_LSB        0
1695 /* The Most Significant Bit (MSB) position of the ALT_I2C_INTR_MSK_M_RX_UNDER register field. */
1696 #define ALT_I2C_INTR_MSK_M_RX_UNDER_MSB        0
1697 /* The width in bits of the ALT_I2C_INTR_MSK_M_RX_UNDER register field. */
1698 #define ALT_I2C_INTR_MSK_M_RX_UNDER_WIDTH      1
1699 /* The mask used to set the ALT_I2C_INTR_MSK_M_RX_UNDER register field value. */
1700 #define ALT_I2C_INTR_MSK_M_RX_UNDER_SET_MSK    0x00000001
1701 /* The mask used to clear the ALT_I2C_INTR_MSK_M_RX_UNDER register field value. */
1702 #define ALT_I2C_INTR_MSK_M_RX_UNDER_CLR_MSK    0xfffffffe
1703 /* The reset value of the ALT_I2C_INTR_MSK_M_RX_UNDER register field. */
1704 #define ALT_I2C_INTR_MSK_M_RX_UNDER_RESET      0x1
1705 /* Extracts the ALT_I2C_INTR_MSK_M_RX_UNDER field value from a register. */
1706 #define ALT_I2C_INTR_MSK_M_RX_UNDER_GET(value) (((value) & 0x00000001) >> 0)
1707 /* Produces a ALT_I2C_INTR_MSK_M_RX_UNDER register field value suitable for setting the register. */
1708 #define ALT_I2C_INTR_MSK_M_RX_UNDER_SET(value) (((value) << 0) & 0x00000001)
1709 
1710 /*
1711  * Field : RX Buffer Over - m_rx_over
1712  * 
1713  * Set if the receive buffer is completely filled to 64 and an additional byte is
1714  * received from an external I2C device. The I2C acknowledges this, but any data
1715  * bytes received after the FIFO is full are lost. If the module is disabled
1716  * ic_enable[0]=0, this bit keeps its level until the master or slave state
1717  * machines go into idle, then this interrupt is cleared.
1718  * 
1719  * Field Access Macros:
1720  * 
1721  */
1722 /* The Least Significant Bit (LSB) position of the ALT_I2C_INTR_MSK_M_RX_OVER register field. */
1723 #define ALT_I2C_INTR_MSK_M_RX_OVER_LSB        1
1724 /* The Most Significant Bit (MSB) position of the ALT_I2C_INTR_MSK_M_RX_OVER register field. */
1725 #define ALT_I2C_INTR_MSK_M_RX_OVER_MSB        1
1726 /* The width in bits of the ALT_I2C_INTR_MSK_M_RX_OVER register field. */
1727 #define ALT_I2C_INTR_MSK_M_RX_OVER_WIDTH      1
1728 /* The mask used to set the ALT_I2C_INTR_MSK_M_RX_OVER register field value. */
1729 #define ALT_I2C_INTR_MSK_M_RX_OVER_SET_MSK    0x00000002
1730 /* The mask used to clear the ALT_I2C_INTR_MSK_M_RX_OVER register field value. */
1731 #define ALT_I2C_INTR_MSK_M_RX_OVER_CLR_MSK    0xfffffffd
1732 /* The reset value of the ALT_I2C_INTR_MSK_M_RX_OVER register field. */
1733 #define ALT_I2C_INTR_MSK_M_RX_OVER_RESET      0x1
1734 /* Extracts the ALT_I2C_INTR_MSK_M_RX_OVER field value from a register. */
1735 #define ALT_I2C_INTR_MSK_M_RX_OVER_GET(value) (((value) & 0x00000002) >> 1)
1736 /* Produces a ALT_I2C_INTR_MSK_M_RX_OVER register field value suitable for setting the register. */
1737 #define ALT_I2C_INTR_MSK_M_RX_OVER_SET(value) (((value) << 1) & 0x00000002)
1738 
1739 /*
1740  * Field : RX Buffer Full - m_rx_full
1741  * 
1742  * Set when the receive buffer reaches or goes above the RX_TL threshold in the
1743  * ic_rx_tl register. It is automatically cleared by hardware when buffer level
1744  * goes below the threshold. If the module is disabled ic_enable[0]=0, the RX FIFO
1745  * is flushed and held in reset; therefore the RX FIFO is not full. So this bit is
1746  * cleared once the ic_enable bit 0 is programmed with a 0, regardless of the
1747  * activity that continues.
1748  * 
1749  * Field Access Macros:
1750  * 
1751  */
1752 /* The Least Significant Bit (LSB) position of the ALT_I2C_INTR_MSK_M_RX_FULL register field. */
1753 #define ALT_I2C_INTR_MSK_M_RX_FULL_LSB        2
1754 /* The Most Significant Bit (MSB) position of the ALT_I2C_INTR_MSK_M_RX_FULL register field. */
1755 #define ALT_I2C_INTR_MSK_M_RX_FULL_MSB        2
1756 /* The width in bits of the ALT_I2C_INTR_MSK_M_RX_FULL register field. */
1757 #define ALT_I2C_INTR_MSK_M_RX_FULL_WIDTH      1
1758 /* The mask used to set the ALT_I2C_INTR_MSK_M_RX_FULL register field value. */
1759 #define ALT_I2C_INTR_MSK_M_RX_FULL_SET_MSK    0x00000004
1760 /* The mask used to clear the ALT_I2C_INTR_MSK_M_RX_FULL register field value. */
1761 #define ALT_I2C_INTR_MSK_M_RX_FULL_CLR_MSK    0xfffffffb
1762 /* The reset value of the ALT_I2C_INTR_MSK_M_RX_FULL register field. */
1763 #define ALT_I2C_INTR_MSK_M_RX_FULL_RESET      0x1
1764 /* Extracts the ALT_I2C_INTR_MSK_M_RX_FULL field value from a register. */
1765 #define ALT_I2C_INTR_MSK_M_RX_FULL_GET(value) (((value) & 0x00000004) >> 2)
1766 /* Produces a ALT_I2C_INTR_MSK_M_RX_FULL register field value suitable for setting the register. */
1767 #define ALT_I2C_INTR_MSK_M_RX_FULL_SET(value) (((value) << 2) & 0x00000004)
1768 
1769 /*
1770  * Field : TX Buffer Over - m_tx_over
1771  * 
1772  * Set during transmit if the transmit buffer is filled to 64 and the processor
1773  * attempts to issue another I2C command by writing to the ic_data_cmd register.
1774  * When the module is disabled, this bit keeps its level until the master or slave
1775  * state machines go into idle, then this interrupt is cleared.
1776  * 
1777  * Field Access Macros:
1778  * 
1779  */
1780 /* The Least Significant Bit (LSB) position of the ALT_I2C_INTR_MSK_M_TX_OVER register field. */
1781 #define ALT_I2C_INTR_MSK_M_TX_OVER_LSB        3
1782 /* The Most Significant Bit (MSB) position of the ALT_I2C_INTR_MSK_M_TX_OVER register field. */
1783 #define ALT_I2C_INTR_MSK_M_TX_OVER_MSB        3
1784 /* The width in bits of the ALT_I2C_INTR_MSK_M_TX_OVER register field. */
1785 #define ALT_I2C_INTR_MSK_M_TX_OVER_WIDTH      1
1786 /* The mask used to set the ALT_I2C_INTR_MSK_M_TX_OVER register field value. */
1787 #define ALT_I2C_INTR_MSK_M_TX_OVER_SET_MSK    0x00000008
1788 /* The mask used to clear the ALT_I2C_INTR_MSK_M_TX_OVER register field value. */
1789 #define ALT_I2C_INTR_MSK_M_TX_OVER_CLR_MSK    0xfffffff7
1790 /* The reset value of the ALT_I2C_INTR_MSK_M_TX_OVER register field. */
1791 #define ALT_I2C_INTR_MSK_M_TX_OVER_RESET      0x1
1792 /* Extracts the ALT_I2C_INTR_MSK_M_TX_OVER field value from a register. */
1793 #define ALT_I2C_INTR_MSK_M_TX_OVER_GET(value) (((value) & 0x00000008) >> 3)
1794 /* Produces a ALT_I2C_INTR_MSK_M_TX_OVER register field value suitable for setting the register. */
1795 #define ALT_I2C_INTR_MSK_M_TX_OVER_SET(value) (((value) << 3) & 0x00000008)
1796 
1797 /*
1798  * Field : TX Buffer Empty - m_tx_empty
1799  * 
1800  * This bit is set to 1 when the transmit buffer is at or below the threshold value
1801  * set in the ic_tx_tl register. It is automatically cleared by hardware when the
1802  * buffer level goes above the threshold. When the ic_enable bit 0 is 0, the TX
1803  * FIFO is flushed and held in reset. There the TX FIFO looks like it has no data
1804  * within it, so this bit is set to 1, provided there is activity in the master or
1805  * slave state machines. When there is no longer activity, then this bit is set to
1806  * 0.
1807  * 
1808  * Field Access Macros:
1809  * 
1810  */
1811 /* The Least Significant Bit (LSB) position of the ALT_I2C_INTR_MSK_M_TX_EMPTY register field. */
1812 #define ALT_I2C_INTR_MSK_M_TX_EMPTY_LSB        4
1813 /* The Most Significant Bit (MSB) position of the ALT_I2C_INTR_MSK_M_TX_EMPTY register field. */
1814 #define ALT_I2C_INTR_MSK_M_TX_EMPTY_MSB        4
1815 /* The width in bits of the ALT_I2C_INTR_MSK_M_TX_EMPTY register field. */
1816 #define ALT_I2C_INTR_MSK_M_TX_EMPTY_WIDTH      1
1817 /* The mask used to set the ALT_I2C_INTR_MSK_M_TX_EMPTY register field value. */
1818 #define ALT_I2C_INTR_MSK_M_TX_EMPTY_SET_MSK    0x00000010
1819 /* The mask used to clear the ALT_I2C_INTR_MSK_M_TX_EMPTY register field value. */
1820 #define ALT_I2C_INTR_MSK_M_TX_EMPTY_CLR_MSK    0xffffffef
1821 /* The reset value of the ALT_I2C_INTR_MSK_M_TX_EMPTY register field. */
1822 #define ALT_I2C_INTR_MSK_M_TX_EMPTY_RESET      0x1
1823 /* Extracts the ALT_I2C_INTR_MSK_M_TX_EMPTY field value from a register. */
1824 #define ALT_I2C_INTR_MSK_M_TX_EMPTY_GET(value) (((value) & 0x00000010) >> 4)
1825 /* Produces a ALT_I2C_INTR_MSK_M_TX_EMPTY register field value suitable for setting the register. */
1826 #define ALT_I2C_INTR_MSK_M_TX_EMPTY_SET(value) (((value) << 4) & 0x00000010)
1827 
1828 /*
1829  * Field : Read Request - m_rd_req
1830  * 
1831  * This bit is set to 1 when I2C is acting as a slave and another I2C master is
1832  * attempting to read data from I2C. The I2C holds the I2C bus in a wait state
1833  * (SCL=0) until this interrupt is serviced, which means that the slave has been
1834  * addressed by a remote master that is asking for data to be transferred. The
1835  * processor must respond to this interrupt and then write the requested data to
1836  * the ic_data_cmd register. This bit is set to 0 just after the processor reads
1837  * the ic_clr_rd_req register.
1838  * 
1839  * Field Access Macros:
1840  * 
1841  */
1842 /* The Least Significant Bit (LSB) position of the ALT_I2C_INTR_MSK_M_RD_REQ register field. */
1843 #define ALT_I2C_INTR_MSK_M_RD_REQ_LSB        5
1844 /* The Most Significant Bit (MSB) position of the ALT_I2C_INTR_MSK_M_RD_REQ register field. */
1845 #define ALT_I2C_INTR_MSK_M_RD_REQ_MSB        5
1846 /* The width in bits of the ALT_I2C_INTR_MSK_M_RD_REQ register field. */
1847 #define ALT_I2C_INTR_MSK_M_RD_REQ_WIDTH      1
1848 /* The mask used to set the ALT_I2C_INTR_MSK_M_RD_REQ register field value. */
1849 #define ALT_I2C_INTR_MSK_M_RD_REQ_SET_MSK    0x00000020
1850 /* The mask used to clear the ALT_I2C_INTR_MSK_M_RD_REQ register field value. */
1851 #define ALT_I2C_INTR_MSK_M_RD_REQ_CLR_MSK    0xffffffdf
1852 /* The reset value of the ALT_I2C_INTR_MSK_M_RD_REQ register field. */
1853 #define ALT_I2C_INTR_MSK_M_RD_REQ_RESET      0x1
1854 /* Extracts the ALT_I2C_INTR_MSK_M_RD_REQ field value from a register. */
1855 #define ALT_I2C_INTR_MSK_M_RD_REQ_GET(value) (((value) & 0x00000020) >> 5)
1856 /* Produces a ALT_I2C_INTR_MSK_M_RD_REQ register field value suitable for setting the register. */
1857 #define ALT_I2C_INTR_MSK_M_RD_REQ_SET(value) (((value) << 5) & 0x00000020)
1858 
1859 /*
1860  * Field : TX Abort - m_tx_abrt
1861  * 
1862  * This bit indicates if I2C, as an I2C transmitter, is unable to complete the
1863  * intended actions on the contents of the transmit FIFO. This situation can occur
1864  * both as an I2C master or an I2C slave, and is referred to as a 'transmit abort'.
1865  * When this bit is set to 1, the ic_tx_abrt_source register indicates the reason
1866  * why the transmit abort takes places.
1867  * 
1868  * NOTE: The I2C flushes/resets/empties the TX FIFO whenever this bit is set. The
1869  * TX FIFO remains in this flushed state until the register ic_clr_tx_abrt is read.
1870  * Once this read is performed, the TX FIFO is then ready to accept more data bytes
1871  * from the APB interface.
1872  * 
1873  * Field Access Macros:
1874  * 
1875  */
1876 /* The Least Significant Bit (LSB) position of the ALT_I2C_INTR_MSK_M_TX_ABRT register field. */
1877 #define ALT_I2C_INTR_MSK_M_TX_ABRT_LSB        6
1878 /* The Most Significant Bit (MSB) position of the ALT_I2C_INTR_MSK_M_TX_ABRT register field. */
1879 #define ALT_I2C_INTR_MSK_M_TX_ABRT_MSB        6
1880 /* The width in bits of the ALT_I2C_INTR_MSK_M_TX_ABRT register field. */
1881 #define ALT_I2C_INTR_MSK_M_TX_ABRT_WIDTH      1
1882 /* The mask used to set the ALT_I2C_INTR_MSK_M_TX_ABRT register field value. */
1883 #define ALT_I2C_INTR_MSK_M_TX_ABRT_SET_MSK    0x00000040
1884 /* The mask used to clear the ALT_I2C_INTR_MSK_M_TX_ABRT register field value. */
1885 #define ALT_I2C_INTR_MSK_M_TX_ABRT_CLR_MSK    0xffffffbf
1886 /* The reset value of the ALT_I2C_INTR_MSK_M_TX_ABRT register field. */
1887 #define ALT_I2C_INTR_MSK_M_TX_ABRT_RESET      0x1
1888 /* Extracts the ALT_I2C_INTR_MSK_M_TX_ABRT field value from a register. */
1889 #define ALT_I2C_INTR_MSK_M_TX_ABRT_GET(value) (((value) & 0x00000040) >> 6)
1890 /* Produces a ALT_I2C_INTR_MSK_M_TX_ABRT register field value suitable for setting the register. */
1891 #define ALT_I2C_INTR_MSK_M_TX_ABRT_SET(value) (((value) << 6) & 0x00000040)
1892 
1893 /*
1894  * Field : RX Done - m_rx_done
1895  * 
1896  * When the I2C is acting as a slave-transmitter, this bit is set to 1, if the
1897  * master does not acknowledge a transmitted byte. This occurs on the last byte of
1898  * the transmission, indicating that the transmission is done.
1899  * 
1900  * Field Access Macros:
1901  * 
1902  */
1903 /* The Least Significant Bit (LSB) position of the ALT_I2C_INTR_MSK_M_RX_DONE register field. */
1904 #define ALT_I2C_INTR_MSK_M_RX_DONE_LSB        7
1905 /* The Most Significant Bit (MSB) position of the ALT_I2C_INTR_MSK_M_RX_DONE register field. */
1906 #define ALT_I2C_INTR_MSK_M_RX_DONE_MSB        7
1907 /* The width in bits of the ALT_I2C_INTR_MSK_M_RX_DONE register field. */
1908 #define ALT_I2C_INTR_MSK_M_RX_DONE_WIDTH      1
1909 /* The mask used to set the ALT_I2C_INTR_MSK_M_RX_DONE register field value. */
1910 #define ALT_I2C_INTR_MSK_M_RX_DONE_SET_MSK    0x00000080
1911 /* The mask used to clear the ALT_I2C_INTR_MSK_M_RX_DONE register field value. */
1912 #define ALT_I2C_INTR_MSK_M_RX_DONE_CLR_MSK    0xffffff7f
1913 /* The reset value of the ALT_I2C_INTR_MSK_M_RX_DONE register field. */
1914 #define ALT_I2C_INTR_MSK_M_RX_DONE_RESET      0x1
1915 /* Extracts the ALT_I2C_INTR_MSK_M_RX_DONE field value from a register. */
1916 #define ALT_I2C_INTR_MSK_M_RX_DONE_GET(value) (((value) & 0x00000080) >> 7)
1917 /* Produces a ALT_I2C_INTR_MSK_M_RX_DONE register field value suitable for setting the register. */
1918 #define ALT_I2C_INTR_MSK_M_RX_DONE_SET(value) (((value) << 7) & 0x00000080)
1919 
1920 /*
1921  * Field : Activity Bit - m_activity
1922  * 
1923  * This bit captures i2c activity and stays set until it is cleared. There are four
1924  * ways to clear it:
1925  * 
1926  * * Disabling the i2c
1927  * 
1928  * * Reading the ic_clr_activity register
1929  * 
1930  * * Reading the ic_clr_intr register
1931  * 
1932  * * System reset
1933  * 
1934  * Once this bit is set, it stays set unless one of the four methods is used to
1935  * clear it. Even if the I2C module is idle, this bit remains set until cleared,
1936  * indicating that there was activity on the bus.
1937  * 
1938  * Field Access Macros:
1939  * 
1940  */
1941 /* The Least Significant Bit (LSB) position of the ALT_I2C_INTR_MSK_M_ACTIVITY register field. */
1942 #define ALT_I2C_INTR_MSK_M_ACTIVITY_LSB        8
1943 /* The Most Significant Bit (MSB) position of the ALT_I2C_INTR_MSK_M_ACTIVITY register field. */
1944 #define ALT_I2C_INTR_MSK_M_ACTIVITY_MSB        8
1945 /* The width in bits of the ALT_I2C_INTR_MSK_M_ACTIVITY register field. */
1946 #define ALT_I2C_INTR_MSK_M_ACTIVITY_WIDTH      1
1947 /* The mask used to set the ALT_I2C_INTR_MSK_M_ACTIVITY register field value. */
1948 #define ALT_I2C_INTR_MSK_M_ACTIVITY_SET_MSK    0x00000100
1949 /* The mask used to clear the ALT_I2C_INTR_MSK_M_ACTIVITY register field value. */
1950 #define ALT_I2C_INTR_MSK_M_ACTIVITY_CLR_MSK    0xfffffeff
1951 /* The reset value of the ALT_I2C_INTR_MSK_M_ACTIVITY register field. */
1952 #define ALT_I2C_INTR_MSK_M_ACTIVITY_RESET      0x0
1953 /* Extracts the ALT_I2C_INTR_MSK_M_ACTIVITY field value from a register. */
1954 #define ALT_I2C_INTR_MSK_M_ACTIVITY_GET(value) (((value) & 0x00000100) >> 8)
1955 /* Produces a ALT_I2C_INTR_MSK_M_ACTIVITY register field value suitable for setting the register. */
1956 #define ALT_I2C_INTR_MSK_M_ACTIVITY_SET(value) (((value) << 8) & 0x00000100)
1957 
1958 /*
1959  * Field : Stop Detect - m_stop_det
1960  * 
1961  * Indicates whether a STOP condition has occurred on the I2C interface regardless
1962  * of whether i2c is operating in slave or master mode.
1963  * 
1964  * Field Access Macros:
1965  * 
1966  */
1967 /* The Least Significant Bit (LSB) position of the ALT_I2C_INTR_MSK_M_STOP_DET register field. */
1968 #define ALT_I2C_INTR_MSK_M_STOP_DET_LSB        9
1969 /* The Most Significant Bit (MSB) position of the ALT_I2C_INTR_MSK_M_STOP_DET register field. */
1970 #define ALT_I2C_INTR_MSK_M_STOP_DET_MSB        9
1971 /* The width in bits of the ALT_I2C_INTR_MSK_M_STOP_DET register field. */
1972 #define ALT_I2C_INTR_MSK_M_STOP_DET_WIDTH      1
1973 /* The mask used to set the ALT_I2C_INTR_MSK_M_STOP_DET register field value. */
1974 #define ALT_I2C_INTR_MSK_M_STOP_DET_SET_MSK    0x00000200
1975 /* The mask used to clear the ALT_I2C_INTR_MSK_M_STOP_DET register field value. */
1976 #define ALT_I2C_INTR_MSK_M_STOP_DET_CLR_MSK    0xfffffdff
1977 /* The reset value of the ALT_I2C_INTR_MSK_M_STOP_DET register field. */
1978 #define ALT_I2C_INTR_MSK_M_STOP_DET_RESET      0x0
1979 /* Extracts the ALT_I2C_INTR_MSK_M_STOP_DET field value from a register. */
1980 #define ALT_I2C_INTR_MSK_M_STOP_DET_GET(value) (((value) & 0x00000200) >> 9)
1981 /* Produces a ALT_I2C_INTR_MSK_M_STOP_DET register field value suitable for setting the register. */
1982 #define ALT_I2C_INTR_MSK_M_STOP_DET_SET(value) (((value) << 9) & 0x00000200)
1983 
1984 /*
1985  * Field : Start Detect - m_start_det
1986  * 
1987  * Indicates whether a START or RESTART condition has occurred on the I2C interface
1988  * regardless of whether I2C is operating in slave or master mode.
1989  * 
1990  * Field Access Macros:
1991  * 
1992  */
1993 /* The Least Significant Bit (LSB) position of the ALT_I2C_INTR_MSK_M_START_DET register field. */
1994 #define ALT_I2C_INTR_MSK_M_START_DET_LSB        10
1995 /* The Most Significant Bit (MSB) position of the ALT_I2C_INTR_MSK_M_START_DET register field. */
1996 #define ALT_I2C_INTR_MSK_M_START_DET_MSB        10
1997 /* The width in bits of the ALT_I2C_INTR_MSK_M_START_DET register field. */
1998 #define ALT_I2C_INTR_MSK_M_START_DET_WIDTH      1
1999 /* The mask used to set the ALT_I2C_INTR_MSK_M_START_DET register field value. */
2000 #define ALT_I2C_INTR_MSK_M_START_DET_SET_MSK    0x00000400
2001 /* The mask used to clear the ALT_I2C_INTR_MSK_M_START_DET register field value. */
2002 #define ALT_I2C_INTR_MSK_M_START_DET_CLR_MSK    0xfffffbff
2003 /* The reset value of the ALT_I2C_INTR_MSK_M_START_DET register field. */
2004 #define ALT_I2C_INTR_MSK_M_START_DET_RESET      0x0
2005 /* Extracts the ALT_I2C_INTR_MSK_M_START_DET field value from a register. */
2006 #define ALT_I2C_INTR_MSK_M_START_DET_GET(value) (((value) & 0x00000400) >> 10)
2007 /* Produces a ALT_I2C_INTR_MSK_M_START_DET register field value suitable for setting the register. */
2008 #define ALT_I2C_INTR_MSK_M_START_DET_SET(value) (((value) << 10) & 0x00000400)
2009 
2010 /*
2011  * Field : General Call - m_gen_call
2012  * 
2013  * Set only when a General Call address is received and it is acknowledged. It
2014  * stays set until it is cleared either by disabling I2C or when the CPU reads bit
2015  * 0 of the ic_clr_gen_call register. I2C stores the received data in the Rx
2016  * buffer.
2017  * 
2018  * Field Access Macros:
2019  * 
2020  */
2021 /* The Least Significant Bit (LSB) position of the ALT_I2C_INTR_MSK_M_GEN_CALL register field. */
2022 #define ALT_I2C_INTR_MSK_M_GEN_CALL_LSB        11
2023 /* The Most Significant Bit (MSB) position of the ALT_I2C_INTR_MSK_M_GEN_CALL register field. */
2024 #define ALT_I2C_INTR_MSK_M_GEN_CALL_MSB        11
2025 /* The width in bits of the ALT_I2C_INTR_MSK_M_GEN_CALL register field. */
2026 #define ALT_I2C_INTR_MSK_M_GEN_CALL_WIDTH      1
2027 /* The mask used to set the ALT_I2C_INTR_MSK_M_GEN_CALL register field value. */
2028 #define ALT_I2C_INTR_MSK_M_GEN_CALL_SET_MSK    0x00000800
2029 /* The mask used to clear the ALT_I2C_INTR_MSK_M_GEN_CALL register field value. */
2030 #define ALT_I2C_INTR_MSK_M_GEN_CALL_CLR_MSK    0xfffff7ff
2031 /* The reset value of the ALT_I2C_INTR_MSK_M_GEN_CALL register field. */
2032 #define ALT_I2C_INTR_MSK_M_GEN_CALL_RESET      0x1
2033 /* Extracts the ALT_I2C_INTR_MSK_M_GEN_CALL field value from a register. */
2034 #define ALT_I2C_INTR_MSK_M_GEN_CALL_GET(value) (((value) & 0x00000800) >> 11)
2035 /* Produces a ALT_I2C_INTR_MSK_M_GEN_CALL register field value suitable for setting the register. */
2036 #define ALT_I2C_INTR_MSK_M_GEN_CALL_SET(value) (((value) << 11) & 0x00000800)
2037 
2038 #ifndef __ASSEMBLY__
2039 /*
2040  * WARNING: The C register and register group struct declarations are provided for
2041  * convenience and illustrative purposes. They should, however, be used with
2042  * caution as the C language standard provides no guarantees about the alignment or
2043  * atomicity of device memory accesses. The recommended practice for writing
2044  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
2045  * alt_write_word() functions.
2046  * 
2047  * The struct declaration for register ALT_I2C_INTR_MSK.
2048  */
2049 struct ALT_I2C_INTR_MSK_s
2050 {
2051     uint32_t  m_rx_under  :  1;  /* Mask RX Under */
2052     uint32_t  m_rx_over   :  1;  /* RX Buffer Over */
2053     uint32_t  m_rx_full   :  1;  /* RX Buffer Full */
2054     uint32_t  m_tx_over   :  1;  /* TX Buffer Over */
2055     uint32_t  m_tx_empty  :  1;  /* TX Buffer Empty */
2056     uint32_t  m_rd_req    :  1;  /* Read Request */
2057     uint32_t  m_tx_abrt   :  1;  /* TX Abort */
2058     uint32_t  m_rx_done   :  1;  /* RX Done */
2059     uint32_t  m_activity  :  1;  /* Activity Bit */
2060     uint32_t  m_stop_det  :  1;  /* Stop Detect */
2061     uint32_t  m_start_det :  1;  /* Start Detect */
2062     uint32_t  m_gen_call  :  1;  /* General Call */
2063     uint32_t              : 20;  /* *UNDEFINED* */
2064 };
2065 
2066 /* The typedef declaration for register ALT_I2C_INTR_MSK. */
2067 typedef volatile struct ALT_I2C_INTR_MSK_s  ALT_I2C_INTR_MSK_t;
2068 #endif  /* __ASSEMBLY__ */
2069 
2070 /* The byte offset of the ALT_I2C_INTR_MSK register from the beginning of the component. */
2071 #define ALT_I2C_INTR_MSK_OFST        0x30
2072 /* The address of the ALT_I2C_INTR_MSK register. */
2073 #define ALT_I2C_INTR_MSK_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_INTR_MSK_OFST))
2074 
2075 /*
2076  * Register : Raw Interrupt Status Register - ic_raw_intr_stat
2077  * 
2078  * Unlike the ic_intr_stat register, these bits are not masked so they always show
2079  * the true status of the I2C.
2080  * 
2081  * Register Layout
2082  * 
2083  *  Bits    | Access | Reset | Description               
2084  * :--------|:-------|:------|:---------------------------
2085  *  [0]     | R      | 0x0   | I2C Raw Interrupt RX Under
2086  *  [1]     | R      | 0x0   | Raw Interrupt RX Over     
2087  *  [2]     | R      | 0x0   | Raw Interrupt RX Full     
2088  *  [3]     | R      | 0x0   | Raw Interrupt TX Over     
2089  *  [4]     | R      | 0x0   | Raw Interrupt TX Empty    
2090  *  [5]     | R      | 0x0   | Raw Interrupt Read Request
2091  *  [6]     | R      | 0x0   | Raw Interrupt TX Abort    
2092  *  [7]     | R      | 0x0   | Raw Interrupt RX Done     
2093  *  [8]     | R      | 0x0   | Raw Interrupt Activity    
2094  *  [9]     | R      | 0x0   | Raw Interrupt Stop Detect 
2095  *  [10]    | R      | 0x0   | Raw Interrupt Start Detect
2096  *  [11]    | R      | 0x0   | Raw Interrupt General Call
2097  *  [31:12] | ???    | 0x0   | *UNDEFINED*               
2098  * 
2099  */
2100 /*
2101  * Field : I2C Raw Interrupt RX Under - rx_under
2102  * 
2103  * Set if the processor attempts to read the receive buffer when it is empty by
2104  * reading from the ic_data_cmd register. If the module is disabled ic_enable[0]=0,
2105  * this bit keeps its level until the master or slave state machines go into idle,
2106  * then this interrupt is cleared.
2107  * 
2108  * Field Access Macros:
2109  * 
2110  */
2111 /* The Least Significant Bit (LSB) position of the ALT_I2C_RAW_INTR_STAT_RX_UNDER register field. */
2112 #define ALT_I2C_RAW_INTR_STAT_RX_UNDER_LSB        0
2113 /* The Most Significant Bit (MSB) position of the ALT_I2C_RAW_INTR_STAT_RX_UNDER register field. */
2114 #define ALT_I2C_RAW_INTR_STAT_RX_UNDER_MSB        0
2115 /* The width in bits of the ALT_I2C_RAW_INTR_STAT_RX_UNDER register field. */
2116 #define ALT_I2C_RAW_INTR_STAT_RX_UNDER_WIDTH      1
2117 /* The mask used to set the ALT_I2C_RAW_INTR_STAT_RX_UNDER register field value. */
2118 #define ALT_I2C_RAW_INTR_STAT_RX_UNDER_SET_MSK    0x00000001
2119 /* The mask used to clear the ALT_I2C_RAW_INTR_STAT_RX_UNDER register field value. */
2120 #define ALT_I2C_RAW_INTR_STAT_RX_UNDER_CLR_MSK    0xfffffffe
2121 /* The reset value of the ALT_I2C_RAW_INTR_STAT_RX_UNDER register field. */
2122 #define ALT_I2C_RAW_INTR_STAT_RX_UNDER_RESET      0x0
2123 /* Extracts the ALT_I2C_RAW_INTR_STAT_RX_UNDER field value from a register. */
2124 #define ALT_I2C_RAW_INTR_STAT_RX_UNDER_GET(value) (((value) & 0x00000001) >> 0)
2125 /* Produces a ALT_I2C_RAW_INTR_STAT_RX_UNDER register field value suitable for setting the register. */
2126 #define ALT_I2C_RAW_INTR_STAT_RX_UNDER_SET(value) (((value) << 0) & 0x00000001)
2127 
2128 /*
2129  * Field : Raw Interrupt RX Over - rx_over
2130  * 
2131  * Set if the receive buffer is completely filled to  64 and an additional byte is
2132  * received from an external I2C device. The I2C acknowledges this, but any data
2133  * bytes received after the FIFO is full are lost. If the module is disabled
2134  * ic_enable[0]=0), this bit keeps its level until the master or slave state
2135  * machines go into then, this interrupt is cleared.
2136  * 
2137  * Field Access Macros:
2138  * 
2139  */
2140 /* The Least Significant Bit (LSB) position of the ALT_I2C_RAW_INTR_STAT_RX_OVER register field. */
2141 #define ALT_I2C_RAW_INTR_STAT_RX_OVER_LSB        1
2142 /* The Most Significant Bit (MSB) position of the ALT_I2C_RAW_INTR_STAT_RX_OVER register field. */
2143 #define ALT_I2C_RAW_INTR_STAT_RX_OVER_MSB        1
2144 /* The width in bits of the ALT_I2C_RAW_INTR_STAT_RX_OVER register field. */
2145 #define ALT_I2C_RAW_INTR_STAT_RX_OVER_WIDTH      1
2146 /* The mask used to set the ALT_I2C_RAW_INTR_STAT_RX_OVER register field value. */
2147 #define ALT_I2C_RAW_INTR_STAT_RX_OVER_SET_MSK    0x00000002
2148 /* The mask used to clear the ALT_I2C_RAW_INTR_STAT_RX_OVER register field value. */
2149 #define ALT_I2C_RAW_INTR_STAT_RX_OVER_CLR_MSK    0xfffffffd
2150 /* The reset value of the ALT_I2C_RAW_INTR_STAT_RX_OVER register field. */
2151 #define ALT_I2C_RAW_INTR_STAT_RX_OVER_RESET      0x0
2152 /* Extracts the ALT_I2C_RAW_INTR_STAT_RX_OVER field value from a register. */
2153 #define ALT_I2C_RAW_INTR_STAT_RX_OVER_GET(value) (((value) & 0x00000002) >> 1)
2154 /* Produces a ALT_I2C_RAW_INTR_STAT_RX_OVER register field value suitable for setting the register. */
2155 #define ALT_I2C_RAW_INTR_STAT_RX_OVER_SET(value) (((value) << 1) & 0x00000002)
2156 
2157 /*
2158  * Field : Raw Interrupt RX Full - rx_full
2159  * 
2160  * Set when the receive buffer reaches or goes above the RX_TL threshold in the
2161  * ic_rx_tl register. It is automatically cleared by hardware when buffer level
2162  * goes below the threshold. If the module is disabled ic_enable[0]=0, the RX FIFO
2163  * is flushed and held in reset; therefore the RX FIFO is not full. So this bit is
2164  * cleared once the ic_enable bit 0 is programmed with a 0, regardless of the
2165  * activity that continues.
2166  * 
2167  * Field Access Macros:
2168  * 
2169  */
2170 /* The Least Significant Bit (LSB) position of the ALT_I2C_RAW_INTR_STAT_RX_FULL register field. */
2171 #define ALT_I2C_RAW_INTR_STAT_RX_FULL_LSB        2
2172 /* The Most Significant Bit (MSB) position of the ALT_I2C_RAW_INTR_STAT_RX_FULL register field. */
2173 #define ALT_I2C_RAW_INTR_STAT_RX_FULL_MSB        2
2174 /* The width in bits of the ALT_I2C_RAW_INTR_STAT_RX_FULL register field. */
2175 #define ALT_I2C_RAW_INTR_STAT_RX_FULL_WIDTH      1
2176 /* The mask used to set the ALT_I2C_RAW_INTR_STAT_RX_FULL register field value. */
2177 #define ALT_I2C_RAW_INTR_STAT_RX_FULL_SET_MSK    0x00000004
2178 /* The mask used to clear the ALT_I2C_RAW_INTR_STAT_RX_FULL register field value. */
2179 #define ALT_I2C_RAW_INTR_STAT_RX_FULL_CLR_MSK    0xfffffffb
2180 /* The reset value of the ALT_I2C_RAW_INTR_STAT_RX_FULL register field. */
2181 #define ALT_I2C_RAW_INTR_STAT_RX_FULL_RESET      0x0
2182 /* Extracts the ALT_I2C_RAW_INTR_STAT_RX_FULL field value from a register. */
2183 #define ALT_I2C_RAW_INTR_STAT_RX_FULL_GET(value) (((value) & 0x00000004) >> 2)
2184 /* Produces a ALT_I2C_RAW_INTR_STAT_RX_FULL register field value suitable for setting the register. */
2185 #define ALT_I2C_RAW_INTR_STAT_RX_FULL_SET(value) (((value) << 2) & 0x00000004)
2186 
2187 /*
2188  * Field : Raw Interrupt TX Over - tx_over
2189  * 
2190  * Set during transmit if the transmit buffer is filled to 64  and the processor
2191  * attempts to issue another I2C command by writing to the ic_data_cmd register.
2192  * When the module is disabled, this bit keeps its level until the master or slave
2193  * state machines go into idle, then this interrupt is cleared.
2194  * 
2195  * Field Access Macros:
2196  * 
2197  */
2198 /* The Least Significant Bit (LSB) position of the ALT_I2C_RAW_INTR_STAT_TX_OVER register field. */
2199 #define ALT_I2C_RAW_INTR_STAT_TX_OVER_LSB        3
2200 /* The Most Significant Bit (MSB) position of the ALT_I2C_RAW_INTR_STAT_TX_OVER register field. */
2201 #define ALT_I2C_RAW_INTR_STAT_TX_OVER_MSB        3
2202 /* The width in bits of the ALT_I2C_RAW_INTR_STAT_TX_OVER register field. */
2203 #define ALT_I2C_RAW_INTR_STAT_TX_OVER_WIDTH      1
2204 /* The mask used to set the ALT_I2C_RAW_INTR_STAT_TX_OVER register field value. */
2205 #define ALT_I2C_RAW_INTR_STAT_TX_OVER_SET_MSK    0x00000008
2206 /* The mask used to clear the ALT_I2C_RAW_INTR_STAT_TX_OVER register field value. */
2207 #define ALT_I2C_RAW_INTR_STAT_TX_OVER_CLR_MSK    0xfffffff7
2208 /* The reset value of the ALT_I2C_RAW_INTR_STAT_TX_OVER register field. */
2209 #define ALT_I2C_RAW_INTR_STAT_TX_OVER_RESET      0x0
2210 /* Extracts the ALT_I2C_RAW_INTR_STAT_TX_OVER field value from a register. */
2211 #define ALT_I2C_RAW_INTR_STAT_TX_OVER_GET(value) (((value) & 0x00000008) >> 3)
2212 /* Produces a ALT_I2C_RAW_INTR_STAT_TX_OVER register field value suitable for setting the register. */
2213 #define ALT_I2C_RAW_INTR_STAT_TX_OVER_SET(value) (((value) << 3) & 0x00000008)
2214 
2215 /*
2216  * Field : Raw Interrupt TX Empty - tx_empty
2217  * 
2218  * This bit is set to 1 when the transmit buffer is at or below the threshold value
2219  * set in the ic_tx_tl register. It is automatically cleared by hardware when the
2220  * buffer level goes above the threshold. When the IC_ENABLE bit 0 is 0, the TX
2221  * FIFO is flushed and held in reset. There the TX FIFO looks like it has no data
2222  * within it, so this bit is set to 1, provided there is activity in the master or
2223  * slave state machines. When there is no longer activity, then this bit is set to
2224  * 0.
2225  * 
2226  * Field Access Macros:
2227  * 
2228  */
2229 /* The Least Significant Bit (LSB) position of the ALT_I2C_RAW_INTR_STAT_TX_EMPTY register field. */
2230 #define ALT_I2C_RAW_INTR_STAT_TX_EMPTY_LSB        4
2231 /* The Most Significant Bit (MSB) position of the ALT_I2C_RAW_INTR_STAT_TX_EMPTY register field. */
2232 #define ALT_I2C_RAW_INTR_STAT_TX_EMPTY_MSB        4
2233 /* The width in bits of the ALT_I2C_RAW_INTR_STAT_TX_EMPTY register field. */
2234 #define ALT_I2C_RAW_INTR_STAT_TX_EMPTY_WIDTH      1
2235 /* The mask used to set the ALT_I2C_RAW_INTR_STAT_TX_EMPTY register field value. */
2236 #define ALT_I2C_RAW_INTR_STAT_TX_EMPTY_SET_MSK    0x00000010
2237 /* The mask used to clear the ALT_I2C_RAW_INTR_STAT_TX_EMPTY register field value. */
2238 #define ALT_I2C_RAW_INTR_STAT_TX_EMPTY_CLR_MSK    0xffffffef
2239 /* The reset value of the ALT_I2C_RAW_INTR_STAT_TX_EMPTY register field. */
2240 #define ALT_I2C_RAW_INTR_STAT_TX_EMPTY_RESET      0x0
2241 /* Extracts the ALT_I2C_RAW_INTR_STAT_TX_EMPTY field value from a register. */
2242 #define ALT_I2C_RAW_INTR_STAT_TX_EMPTY_GET(value) (((value) & 0x00000010) >> 4)
2243 /* Produces a ALT_I2C_RAW_INTR_STAT_TX_EMPTY register field value suitable for setting the register. */
2244 #define ALT_I2C_RAW_INTR_STAT_TX_EMPTY_SET(value) (((value) << 4) & 0x00000010)
2245 
2246 /*
2247  * Field : Raw Interrupt Read Request - rd_req
2248  * 
2249  * This bit is set to 1 when I2C is acting as a slave and another I2C master is
2250  * attempting to read data from I2C. The i2c holds the I2C bus in a wait state
2251  * (SCL=0) until this interrupt is serviced, which means that the slave has been
2252  * addressed by a remote master that is asking for data to be transferred. The
2253  * processor must respond to this interrupt and then write the requested data to
2254  * the ic_data_cmd register. This bit is set to 0 just after the processor reads
2255  * the ic_clr_rd_req register.
2256  * 
2257  * Field Access Macros:
2258  * 
2259  */
2260 /* The Least Significant Bit (LSB) position of the ALT_I2C_RAW_INTR_STAT_RD_REQ register field. */
2261 #define ALT_I2C_RAW_INTR_STAT_RD_REQ_LSB        5
2262 /* The Most Significant Bit (MSB) position of the ALT_I2C_RAW_INTR_STAT_RD_REQ register field. */
2263 #define ALT_I2C_RAW_INTR_STAT_RD_REQ_MSB        5
2264 /* The width in bits of the ALT_I2C_RAW_INTR_STAT_RD_REQ register field. */
2265 #define ALT_I2C_RAW_INTR_STAT_RD_REQ_WIDTH      1
2266 /* The mask used to set the ALT_I2C_RAW_INTR_STAT_RD_REQ register field value. */
2267 #define ALT_I2C_RAW_INTR_STAT_RD_REQ_SET_MSK    0x00000020
2268 /* The mask used to clear the ALT_I2C_RAW_INTR_STAT_RD_REQ register field value. */
2269 #define ALT_I2C_RAW_INTR_STAT_RD_REQ_CLR_MSK    0xffffffdf
2270 /* The reset value of the ALT_I2C_RAW_INTR_STAT_RD_REQ register field. */
2271 #define ALT_I2C_RAW_INTR_STAT_RD_REQ_RESET      0x0
2272 /* Extracts the ALT_I2C_RAW_INTR_STAT_RD_REQ field value from a register. */
2273 #define ALT_I2C_RAW_INTR_STAT_RD_REQ_GET(value) (((value) & 0x00000020) >> 5)
2274 /* Produces a ALT_I2C_RAW_INTR_STAT_RD_REQ register field value suitable for setting the register. */
2275 #define ALT_I2C_RAW_INTR_STAT_RD_REQ_SET(value) (((value) << 5) & 0x00000020)
2276 
2277 /*
2278  * Field : Raw Interrupt TX Abort - tx_abrt
2279  * 
2280  * This bit indicates if I2C, as an I2C transmitter, is unable to complete the
2281  * intended actions on the contents of the transmit FIFO. This situation can occur
2282  * both as an I2C master or an I2C slave, and is referred to as a 'transmit abort'.
2283  * When this bit is set to 1, the IC_TX_ABRT_SOURCE register indicates the reason
2284  * why the transmit abort takes places.
2285  * 
2286  * NOTE: The I2C flushes/resets/empties the TX FIFO whenever this bit is set. The
2287  * TX FIFO remains in this flushed state until the register ic_clr_tx_abrt is read.
2288  * Once this read is performed, the TX FIFO is then ready to accept more data bytes
2289  * from the APB interface.
2290  * 
2291  * Field Access Macros:
2292  * 
2293  */
2294 /* The Least Significant Bit (LSB) position of the ALT_I2C_RAW_INTR_STAT_TX_ABRT register field. */
2295 #define ALT_I2C_RAW_INTR_STAT_TX_ABRT_LSB        6
2296 /* The Most Significant Bit (MSB) position of the ALT_I2C_RAW_INTR_STAT_TX_ABRT register field. */
2297 #define ALT_I2C_RAW_INTR_STAT_TX_ABRT_MSB        6
2298 /* The width in bits of the ALT_I2C_RAW_INTR_STAT_TX_ABRT register field. */
2299 #define ALT_I2C_RAW_INTR_STAT_TX_ABRT_WIDTH      1
2300 /* The mask used to set the ALT_I2C_RAW_INTR_STAT_TX_ABRT register field value. */
2301 #define ALT_I2C_RAW_INTR_STAT_TX_ABRT_SET_MSK    0x00000040
2302 /* The mask used to clear the ALT_I2C_RAW_INTR_STAT_TX_ABRT register field value. */
2303 #define ALT_I2C_RAW_INTR_STAT_TX_ABRT_CLR_MSK    0xffffffbf
2304 /* The reset value of the ALT_I2C_RAW_INTR_STAT_TX_ABRT register field. */
2305 #define ALT_I2C_RAW_INTR_STAT_TX_ABRT_RESET      0x0
2306 /* Extracts the ALT_I2C_RAW_INTR_STAT_TX_ABRT field value from a register. */
2307 #define ALT_I2C_RAW_INTR_STAT_TX_ABRT_GET(value) (((value) & 0x00000040) >> 6)
2308 /* Produces a ALT_I2C_RAW_INTR_STAT_TX_ABRT register field value suitable for setting the register. */
2309 #define ALT_I2C_RAW_INTR_STAT_TX_ABRT_SET(value) (((value) << 6) & 0x00000040)
2310 
2311 /*
2312  * Field : Raw Interrupt RX Done - rx_done
2313  * 
2314  * When the I2C is acting as a slave-transmitter, this bit is set to 1 if the
2315  * master does not acknowledge a transmitted byte. This occurs on the last byte of
2316  * the transmission, indicating that the transmission is done.
2317  * 
2318  * Field Access Macros:
2319  * 
2320  */
2321 /* The Least Significant Bit (LSB) position of the ALT_I2C_RAW_INTR_STAT_RX_DONE register field. */
2322 #define ALT_I2C_RAW_INTR_STAT_RX_DONE_LSB        7
2323 /* The Most Significant Bit (MSB) position of the ALT_I2C_RAW_INTR_STAT_RX_DONE register field. */
2324 #define ALT_I2C_RAW_INTR_STAT_RX_DONE_MSB        7
2325 /* The width in bits of the ALT_I2C_RAW_INTR_STAT_RX_DONE register field. */
2326 #define ALT_I2C_RAW_INTR_STAT_RX_DONE_WIDTH      1
2327 /* The mask used to set the ALT_I2C_RAW_INTR_STAT_RX_DONE register field value. */
2328 #define ALT_I2C_RAW_INTR_STAT_RX_DONE_SET_MSK    0x00000080
2329 /* The mask used to clear the ALT_I2C_RAW_INTR_STAT_RX_DONE register field value. */
2330 #define ALT_I2C_RAW_INTR_STAT_RX_DONE_CLR_MSK    0xffffff7f
2331 /* The reset value of the ALT_I2C_RAW_INTR_STAT_RX_DONE register field. */
2332 #define ALT_I2C_RAW_INTR_STAT_RX_DONE_RESET      0x0
2333 /* Extracts the ALT_I2C_RAW_INTR_STAT_RX_DONE field value from a register. */
2334 #define ALT_I2C_RAW_INTR_STAT_RX_DONE_GET(value) (((value) & 0x00000080) >> 7)
2335 /* Produces a ALT_I2C_RAW_INTR_STAT_RX_DONE register field value suitable for setting the register. */
2336 #define ALT_I2C_RAW_INTR_STAT_RX_DONE_SET(value) (((value) << 7) & 0x00000080)
2337 
2338 /*
2339  * Field : Raw Interrupt Activity - activity
2340  * 
2341  * This bit captures i2c activity and stays set until it is cleared. There are four
2342  * ways to clear it:
2343  * 
2344  * * Disabling the I2C
2345  * 
2346  * * Reading the ic_clr_activity register
2347  * 
2348  * * Reading the ic_clr_intr register
2349  * 
2350  * * System reset
2351  * 
2352  * Once this bit is set, it stays set unless one of the four methods is used to
2353  * clear it. Even if the i2c module is idle, this bit remains set until cleared,
2354  * indicating that there was activity on the bus.
2355  * 
2356  * Field Access Macros:
2357  * 
2358  */
2359 /* The Least Significant Bit (LSB) position of the ALT_I2C_RAW_INTR_STAT_ACTIVITY register field. */
2360 #define ALT_I2C_RAW_INTR_STAT_ACTIVITY_LSB        8
2361 /* The Most Significant Bit (MSB) position of the ALT_I2C_RAW_INTR_STAT_ACTIVITY register field. */
2362 #define ALT_I2C_RAW_INTR_STAT_ACTIVITY_MSB        8
2363 /* The width in bits of the ALT_I2C_RAW_INTR_STAT_ACTIVITY register field. */
2364 #define ALT_I2C_RAW_INTR_STAT_ACTIVITY_WIDTH      1
2365 /* The mask used to set the ALT_I2C_RAW_INTR_STAT_ACTIVITY register field value. */
2366 #define ALT_I2C_RAW_INTR_STAT_ACTIVITY_SET_MSK    0x00000100
2367 /* The mask used to clear the ALT_I2C_RAW_INTR_STAT_ACTIVITY register field value. */
2368 #define ALT_I2C_RAW_INTR_STAT_ACTIVITY_CLR_MSK    0xfffffeff
2369 /* The reset value of the ALT_I2C_RAW_INTR_STAT_ACTIVITY register field. */
2370 #define ALT_I2C_RAW_INTR_STAT_ACTIVITY_RESET      0x0
2371 /* Extracts the ALT_I2C_RAW_INTR_STAT_ACTIVITY field value from a register. */
2372 #define ALT_I2C_RAW_INTR_STAT_ACTIVITY_GET(value) (((value) & 0x00000100) >> 8)
2373 /* Produces a ALT_I2C_RAW_INTR_STAT_ACTIVITY register field value suitable for setting the register. */
2374 #define ALT_I2C_RAW_INTR_STAT_ACTIVITY_SET(value) (((value) << 8) & 0x00000100)
2375 
2376 /*
2377  * Field : Raw Interrupt Stop Detect - stop_det
2378  * 
2379  * Indicates whether a STOP condition has occurred on the I2C interface regardless
2380  * of whether I2C is operating in slave or master mode.
2381  * 
2382  * Field Access Macros:
2383  * 
2384  */
2385 /* The Least Significant Bit (LSB) position of the ALT_I2C_RAW_INTR_STAT_STOP_DET register field. */
2386 #define ALT_I2C_RAW_INTR_STAT_STOP_DET_LSB        9
2387 /* The Most Significant Bit (MSB) position of the ALT_I2C_RAW_INTR_STAT_STOP_DET register field. */
2388 #define ALT_I2C_RAW_INTR_STAT_STOP_DET_MSB        9
2389 /* The width in bits of the ALT_I2C_RAW_INTR_STAT_STOP_DET register field. */
2390 #define ALT_I2C_RAW_INTR_STAT_STOP_DET_WIDTH      1
2391 /* The mask used to set the ALT_I2C_RAW_INTR_STAT_STOP_DET register field value. */
2392 #define ALT_I2C_RAW_INTR_STAT_STOP_DET_SET_MSK    0x00000200
2393 /* The mask used to clear the ALT_I2C_RAW_INTR_STAT_STOP_DET register field value. */
2394 #define ALT_I2C_RAW_INTR_STAT_STOP_DET_CLR_MSK    0xfffffdff
2395 /* The reset value of the ALT_I2C_RAW_INTR_STAT_STOP_DET register field. */
2396 #define ALT_I2C_RAW_INTR_STAT_STOP_DET_RESET      0x0
2397 /* Extracts the ALT_I2C_RAW_INTR_STAT_STOP_DET field value from a register. */
2398 #define ALT_I2C_RAW_INTR_STAT_STOP_DET_GET(value) (((value) & 0x00000200) >> 9)
2399 /* Produces a ALT_I2C_RAW_INTR_STAT_STOP_DET register field value suitable for setting the register. */
2400 #define ALT_I2C_RAW_INTR_STAT_STOP_DET_SET(value) (((value) << 9) & 0x00000200)
2401 
2402 /*
2403  * Field : Raw Interrupt Start Detect - start_det
2404  * 
2405  * Indicates whether a START or RESTART condition has occurred on the I2C interface
2406  * regardless of whether I2C is operating in slave or master mode.
2407  * 
2408  * Field Access Macros:
2409  * 
2410  */
2411 /* The Least Significant Bit (LSB) position of the ALT_I2C_RAW_INTR_STAT_START_DET register field. */
2412 #define ALT_I2C_RAW_INTR_STAT_START_DET_LSB        10
2413 /* The Most Significant Bit (MSB) position of the ALT_I2C_RAW_INTR_STAT_START_DET register field. */
2414 #define ALT_I2C_RAW_INTR_STAT_START_DET_MSB        10
2415 /* The width in bits of the ALT_I2C_RAW_INTR_STAT_START_DET register field. */
2416 #define ALT_I2C_RAW_INTR_STAT_START_DET_WIDTH      1
2417 /* The mask used to set the ALT_I2C_RAW_INTR_STAT_START_DET register field value. */
2418 #define ALT_I2C_RAW_INTR_STAT_START_DET_SET_MSK    0x00000400
2419 /* The mask used to clear the ALT_I2C_RAW_INTR_STAT_START_DET register field value. */
2420 #define ALT_I2C_RAW_INTR_STAT_START_DET_CLR_MSK    0xfffffbff
2421 /* The reset value of the ALT_I2C_RAW_INTR_STAT_START_DET register field. */
2422 #define ALT_I2C_RAW_INTR_STAT_START_DET_RESET      0x0
2423 /* Extracts the ALT_I2C_RAW_INTR_STAT_START_DET field value from a register. */
2424 #define ALT_I2C_RAW_INTR_STAT_START_DET_GET(value) (((value) & 0x00000400) >> 10)
2425 /* Produces a ALT_I2C_RAW_INTR_STAT_START_DET register field value suitable for setting the register. */
2426 #define ALT_I2C_RAW_INTR_STAT_START_DET_SET(value) (((value) << 10) & 0x00000400)
2427 
2428 /*
2429  * Field : Raw Interrupt General Call - gen_call
2430  * 
2431  * Set only when a General Call address is received and it is acknowledged. It
2432  * stays set until it is cleared either by disabling I2C or when the CPU reads bit
2433  * 0 of the ic_clr_gen_call register. I2C stores the received data in the Rx
2434  * buffer.
2435  * 
2436  * Field Access Macros:
2437  * 
2438  */
2439 /* The Least Significant Bit (LSB) position of the ALT_I2C_RAW_INTR_STAT_GEN_CALL register field. */
2440 #define ALT_I2C_RAW_INTR_STAT_GEN_CALL_LSB        11
2441 /* The Most Significant Bit (MSB) position of the ALT_I2C_RAW_INTR_STAT_GEN_CALL register field. */
2442 #define ALT_I2C_RAW_INTR_STAT_GEN_CALL_MSB        11
2443 /* The width in bits of the ALT_I2C_RAW_INTR_STAT_GEN_CALL register field. */
2444 #define ALT_I2C_RAW_INTR_STAT_GEN_CALL_WIDTH      1
2445 /* The mask used to set the ALT_I2C_RAW_INTR_STAT_GEN_CALL register field value. */
2446 #define ALT_I2C_RAW_INTR_STAT_GEN_CALL_SET_MSK    0x00000800
2447 /* The mask used to clear the ALT_I2C_RAW_INTR_STAT_GEN_CALL register field value. */
2448 #define ALT_I2C_RAW_INTR_STAT_GEN_CALL_CLR_MSK    0xfffff7ff
2449 /* The reset value of the ALT_I2C_RAW_INTR_STAT_GEN_CALL register field. */
2450 #define ALT_I2C_RAW_INTR_STAT_GEN_CALL_RESET      0x0
2451 /* Extracts the ALT_I2C_RAW_INTR_STAT_GEN_CALL field value from a register. */
2452 #define ALT_I2C_RAW_INTR_STAT_GEN_CALL_GET(value) (((value) & 0x00000800) >> 11)
2453 /* Produces a ALT_I2C_RAW_INTR_STAT_GEN_CALL register field value suitable for setting the register. */
2454 #define ALT_I2C_RAW_INTR_STAT_GEN_CALL_SET(value) (((value) << 11) & 0x00000800)
2455 
2456 #ifndef __ASSEMBLY__
2457 /*
2458  * WARNING: The C register and register group struct declarations are provided for
2459  * convenience and illustrative purposes. They should, however, be used with
2460  * caution as the C language standard provides no guarantees about the alignment or
2461  * atomicity of device memory accesses. The recommended practice for writing
2462  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
2463  * alt_write_word() functions.
2464  * 
2465  * The struct declaration for register ALT_I2C_RAW_INTR_STAT.
2466  */
2467 struct ALT_I2C_RAW_INTR_STAT_s
2468 {
2469     const uint32_t  rx_under  :  1;  /* I2C Raw Interrupt RX Under */
2470     const uint32_t  rx_over   :  1;  /* Raw Interrupt RX Over */
2471     const uint32_t  rx_full   :  1;  /* Raw Interrupt RX Full */
2472     const uint32_t  tx_over   :  1;  /* Raw Interrupt TX Over */
2473     const uint32_t  tx_empty  :  1;  /* Raw Interrupt TX Empty */
2474     const uint32_t  rd_req    :  1;  /* Raw Interrupt Read Request */
2475     const uint32_t  tx_abrt   :  1;  /* Raw Interrupt TX Abort */
2476     const uint32_t  rx_done   :  1;  /* Raw Interrupt RX Done */
2477     const uint32_t  activity  :  1;  /* Raw Interrupt Activity */
2478     const uint32_t  stop_det  :  1;  /* Raw Interrupt Stop Detect */
2479     const uint32_t  start_det :  1;  /* Raw Interrupt Start Detect */
2480     const uint32_t  gen_call  :  1;  /* Raw Interrupt General Call */
2481     uint32_t                  : 20;  /* *UNDEFINED* */
2482 };
2483 
2484 /* The typedef declaration for register ALT_I2C_RAW_INTR_STAT. */
2485 typedef volatile struct ALT_I2C_RAW_INTR_STAT_s  ALT_I2C_RAW_INTR_STAT_t;
2486 #endif  /* __ASSEMBLY__ */
2487 
2488 /* The byte offset of the ALT_I2C_RAW_INTR_STAT register from the beginning of the component. */
2489 #define ALT_I2C_RAW_INTR_STAT_OFST        0x34
2490 /* The address of the ALT_I2C_RAW_INTR_STAT register. */
2491 #define ALT_I2C_RAW_INTR_STAT_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_RAW_INTR_STAT_OFST))
2492 
2493 /*
2494  * Register : Receive FIFO Threshold Register - ic_rx_tl
2495  * 
2496  * I2C Receive FIFO Threshold Register.
2497  * 
2498  * Register Layout
2499  * 
2500  *  Bits   | Access | Reset | Description                 
2501  * :-------|:-------|:------|:-----------------------------
2502  *  [7:0]  | RW     | 0x0   | Receive FIFO Threshold Level
2503  *  [31:8] | ???    | 0x0   | *UNDEFINED*                 
2504  * 
2505  */
2506 /*
2507  * Field : Receive FIFO Threshold Level - rx_tl
2508  * 
2509  * Controls the level of entries (or above) that triggers the RX_FULL interrupt
2510  * (bit 2 in IC_RAW_INTR_STAT register). The valid range is 0-255, with the
2511  * additional restriction that hardware does not allow this value to be set to a
2512  * value larger than the depth of the buffer. If an attempt is made to do that, the
2513  * actual value set will be the maximum depth of the buffer. A value of 0 sets the
2514  * threshold for 1 entry, and a value of 255 sets the threshold for 256 entries.
2515  * 
2516  * Field Access Macros:
2517  * 
2518  */
2519 /* The Least Significant Bit (LSB) position of the ALT_I2C_RX_TL_RX_TL register field. */
2520 #define ALT_I2C_RX_TL_RX_TL_LSB        0
2521 /* The Most Significant Bit (MSB) position of the ALT_I2C_RX_TL_RX_TL register field. */
2522 #define ALT_I2C_RX_TL_RX_TL_MSB        7
2523 /* The width in bits of the ALT_I2C_RX_TL_RX_TL register field. */
2524 #define ALT_I2C_RX_TL_RX_TL_WIDTH      8
2525 /* The mask used to set the ALT_I2C_RX_TL_RX_TL register field value. */
2526 #define ALT_I2C_RX_TL_RX_TL_SET_MSK    0x000000ff
2527 /* The mask used to clear the ALT_I2C_RX_TL_RX_TL register field value. */
2528 #define ALT_I2C_RX_TL_RX_TL_CLR_MSK    0xffffff00
2529 /* The reset value of the ALT_I2C_RX_TL_RX_TL register field. */
2530 #define ALT_I2C_RX_TL_RX_TL_RESET      0x0
2531 /* Extracts the ALT_I2C_RX_TL_RX_TL field value from a register. */
2532 #define ALT_I2C_RX_TL_RX_TL_GET(value) (((value) & 0x000000ff) >> 0)
2533 /* Produces a ALT_I2C_RX_TL_RX_TL register field value suitable for setting the register. */
2534 #define ALT_I2C_RX_TL_RX_TL_SET(value) (((value) << 0) & 0x000000ff)
2535 
2536 #ifndef __ASSEMBLY__
2537 /*
2538  * WARNING: The C register and register group struct declarations are provided for
2539  * convenience and illustrative purposes. They should, however, be used with
2540  * caution as the C language standard provides no guarantees about the alignment or
2541  * atomicity of device memory accesses. The recommended practice for writing
2542  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
2543  * alt_write_word() functions.
2544  * 
2545  * The struct declaration for register ALT_I2C_RX_TL.
2546  */
2547 struct ALT_I2C_RX_TL_s
2548 {
2549     uint32_t  rx_tl :  8;  /* Receive FIFO Threshold Level */
2550     uint32_t        : 24;  /* *UNDEFINED* */
2551 };
2552 
2553 /* The typedef declaration for register ALT_I2C_RX_TL. */
2554 typedef volatile struct ALT_I2C_RX_TL_s  ALT_I2C_RX_TL_t;
2555 #endif  /* __ASSEMBLY__ */
2556 
2557 /* The byte offset of the ALT_I2C_RX_TL register from the beginning of the component. */
2558 #define ALT_I2C_RX_TL_OFST        0x38
2559 /* The address of the ALT_I2C_RX_TL register. */
2560 #define ALT_I2C_RX_TL_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_RX_TL_OFST))
2561 
2562 /*
2563  * Register : Transmit FIFO Threshold Level Register - ic_tx_tl
2564  * 
2565  * Sets FIFO depth for Interrupt.
2566  * 
2567  * Register Layout
2568  * 
2569  *  Bits   | Access | Reset | Description                  
2570  * :-------|:-------|:------|:------------------------------
2571  *  [7:0]  | RW     | 0x0   | Transmit FIFO Threshold Level
2572  *  [31:8] | ???    | 0x0   | *UNDEFINED*                  
2573  * 
2574  */
2575 /*
2576  * Field : Transmit FIFO Threshold Level - tx_tl
2577  * 
2578  * Controls the level of entries (or below) that trigger the TX_EMPTY interrupt
2579  * (bit 4 in ic_raw_intr_stat register). The valid range is 0-255, with the
2580  * additional restriction that it may not be set to value larger than the depth of
2581  * the buffer. If an attempt is made to do that, the actual value set will be the
2582  * maximum depth of the buffer. A value of 0 sets the threshold for 0 entries, and
2583  * a value of 255 sets the threshold for 255 entries.
2584  * 
2585  * Field Access Macros:
2586  * 
2587  */
2588 /* The Least Significant Bit (LSB) position of the ALT_I2C_TX_TL_TX_TL register field. */
2589 #define ALT_I2C_TX_TL_TX_TL_LSB        0
2590 /* The Most Significant Bit (MSB) position of the ALT_I2C_TX_TL_TX_TL register field. */
2591 #define ALT_I2C_TX_TL_TX_TL_MSB        7
2592 /* The width in bits of the ALT_I2C_TX_TL_TX_TL register field. */
2593 #define ALT_I2C_TX_TL_TX_TL_WIDTH      8
2594 /* The mask used to set the ALT_I2C_TX_TL_TX_TL register field value. */
2595 #define ALT_I2C_TX_TL_TX_TL_SET_MSK    0x000000ff
2596 /* The mask used to clear the ALT_I2C_TX_TL_TX_TL register field value. */
2597 #define ALT_I2C_TX_TL_TX_TL_CLR_MSK    0xffffff00
2598 /* The reset value of the ALT_I2C_TX_TL_TX_TL register field. */
2599 #define ALT_I2C_TX_TL_TX_TL_RESET      0x0
2600 /* Extracts the ALT_I2C_TX_TL_TX_TL field value from a register. */
2601 #define ALT_I2C_TX_TL_TX_TL_GET(value) (((value) & 0x000000ff) >> 0)
2602 /* Produces a ALT_I2C_TX_TL_TX_TL register field value suitable for setting the register. */
2603 #define ALT_I2C_TX_TL_TX_TL_SET(value) (((value) << 0) & 0x000000ff)
2604 
2605 #ifndef __ASSEMBLY__
2606 /*
2607  * WARNING: The C register and register group struct declarations are provided for
2608  * convenience and illustrative purposes. They should, however, be used with
2609  * caution as the C language standard provides no guarantees about the alignment or
2610  * atomicity of device memory accesses. The recommended practice for writing
2611  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
2612  * alt_write_word() functions.
2613  * 
2614  * The struct declaration for register ALT_I2C_TX_TL.
2615  */
2616 struct ALT_I2C_TX_TL_s
2617 {
2618     uint32_t  tx_tl :  8;  /* Transmit FIFO Threshold Level */
2619     uint32_t        : 24;  /* *UNDEFINED* */
2620 };
2621 
2622 /* The typedef declaration for register ALT_I2C_TX_TL. */
2623 typedef volatile struct ALT_I2C_TX_TL_s  ALT_I2C_TX_TL_t;
2624 #endif  /* __ASSEMBLY__ */
2625 
2626 /* The byte offset of the ALT_I2C_TX_TL register from the beginning of the component. */
2627 #define ALT_I2C_TX_TL_OFST        0x3c
2628 /* The address of the ALT_I2C_TX_TL register. */
2629 #define ALT_I2C_TX_TL_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_TX_TL_OFST))
2630 
2631 /*
2632  * Register : Combined and Individual Interrupt Register - ic_clr_intr
2633  * 
2634  * Controls Interrupts
2635  * 
2636  * Register Layout
2637  * 
2638  *  Bits   | Access | Reset | Description                           
2639  * :-------|:-------|:------|:---------------------------------------
2640  *  [0]    | R      | 0x0   | Combined and Individual Interrupt Bits
2641  *  [31:1] | ???    | 0x0   | *UNDEFINED*                           
2642  * 
2643  */
2644 /*
2645  * Field : Combined and Individual Interrupt Bits - clr_intr
2646  * 
2647  * Read this register to clear the combined interrupt, all individual interrupts,
2648  * and the IC_TX_ABRT_SOURCE register. This bit does not clear hardware clearable
2649  * interrupts but software clearable interrupts. Refer to Bit 9 of the
2650  * ic_tx_abrt_source register for an exception to clearing ic_tx_abrt_source.
2651  * 
2652  * Field Access Macros:
2653  * 
2654  */
2655 /* The Least Significant Bit (LSB) position of the ALT_I2C_CLR_INTR_CLR_INTR register field. */
2656 #define ALT_I2C_CLR_INTR_CLR_INTR_LSB        0
2657 /* The Most Significant Bit (MSB) position of the ALT_I2C_CLR_INTR_CLR_INTR register field. */
2658 #define ALT_I2C_CLR_INTR_CLR_INTR_MSB        0
2659 /* The width in bits of the ALT_I2C_CLR_INTR_CLR_INTR register field. */
2660 #define ALT_I2C_CLR_INTR_CLR_INTR_WIDTH      1
2661 /* The mask used to set the ALT_I2C_CLR_INTR_CLR_INTR register field value. */
2662 #define ALT_I2C_CLR_INTR_CLR_INTR_SET_MSK    0x00000001
2663 /* The mask used to clear the ALT_I2C_CLR_INTR_CLR_INTR register field value. */
2664 #define ALT_I2C_CLR_INTR_CLR_INTR_CLR_MSK    0xfffffffe
2665 /* The reset value of the ALT_I2C_CLR_INTR_CLR_INTR register field. */
2666 #define ALT_I2C_CLR_INTR_CLR_INTR_RESET      0x0
2667 /* Extracts the ALT_I2C_CLR_INTR_CLR_INTR field value from a register. */
2668 #define ALT_I2C_CLR_INTR_CLR_INTR_GET(value) (((value) & 0x00000001) >> 0)
2669 /* Produces a ALT_I2C_CLR_INTR_CLR_INTR register field value suitable for setting the register. */
2670 #define ALT_I2C_CLR_INTR_CLR_INTR_SET(value) (((value) << 0) & 0x00000001)
2671 
2672 #ifndef __ASSEMBLY__
2673 /*
2674  * WARNING: The C register and register group struct declarations are provided for
2675  * convenience and illustrative purposes. They should, however, be used with
2676  * caution as the C language standard provides no guarantees about the alignment or
2677  * atomicity of device memory accesses. The recommended practice for writing
2678  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
2679  * alt_write_word() functions.
2680  * 
2681  * The struct declaration for register ALT_I2C_CLR_INTR.
2682  */
2683 struct ALT_I2C_CLR_INTR_s
2684 {
2685     const uint32_t  clr_intr :  1;  /* Combined and Individual Interrupt Bits */
2686     uint32_t                 : 31;  /* *UNDEFINED* */
2687 };
2688 
2689 /* The typedef declaration for register ALT_I2C_CLR_INTR. */
2690 typedef volatile struct ALT_I2C_CLR_INTR_s  ALT_I2C_CLR_INTR_t;
2691 #endif  /* __ASSEMBLY__ */
2692 
2693 /* The byte offset of the ALT_I2C_CLR_INTR register from the beginning of the component. */
2694 #define ALT_I2C_CLR_INTR_OFST        0x40
2695 /* The address of the ALT_I2C_CLR_INTR register. */
2696 #define ALT_I2C_CLR_INTR_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_CLR_INTR_OFST))
2697 
2698 /*
2699  * Register : Rx Under Interrupt Register - ic_clr_rx_under
2700  * 
2701  * Rx Under Interrupt Bits.
2702  * 
2703  * Register Layout
2704  * 
2705  *  Bits   | Access | Reset | Description                 
2706  * :-------|:-------|:------|:-----------------------------
2707  *  [0]    | R      | 0x0   | Clear Rx Under Interrupt Bit
2708  *  [31:1] | ???    | 0x0   | *UNDEFINED*                 
2709  * 
2710  */
2711 /*
2712  * Field : Clear Rx Under Interrupt Bit - clr_rx_under
2713  * 
2714  * Read this register to clear the RX_UNDER interrupt bit 0 of the ic_raw_intr_stat
2715  * register.
2716  * 
2717  * Field Access Macros:
2718  * 
2719  */
2720 /* The Least Significant Bit (LSB) position of the ALT_I2C_CLR_RX_UNDER_CLR_RX_UNDER register field. */
2721 #define ALT_I2C_CLR_RX_UNDER_CLR_RX_UNDER_LSB        0
2722 /* The Most Significant Bit (MSB) position of the ALT_I2C_CLR_RX_UNDER_CLR_RX_UNDER register field. */
2723 #define ALT_I2C_CLR_RX_UNDER_CLR_RX_UNDER_MSB        0
2724 /* The width in bits of the ALT_I2C_CLR_RX_UNDER_CLR_RX_UNDER register field. */
2725 #define ALT_I2C_CLR_RX_UNDER_CLR_RX_UNDER_WIDTH      1
2726 /* The mask used to set the ALT_I2C_CLR_RX_UNDER_CLR_RX_UNDER register field value. */
2727 #define ALT_I2C_CLR_RX_UNDER_CLR_RX_UNDER_SET_MSK    0x00000001
2728 /* The mask used to clear the ALT_I2C_CLR_RX_UNDER_CLR_RX_UNDER register field value. */
2729 #define ALT_I2C_CLR_RX_UNDER_CLR_RX_UNDER_CLR_MSK    0xfffffffe
2730 /* The reset value of the ALT_I2C_CLR_RX_UNDER_CLR_RX_UNDER register field. */
2731 #define ALT_I2C_CLR_RX_UNDER_CLR_RX_UNDER_RESET      0x0
2732 /* Extracts the ALT_I2C_CLR_RX_UNDER_CLR_RX_UNDER field value from a register. */
2733 #define ALT_I2C_CLR_RX_UNDER_CLR_RX_UNDER_GET(value) (((value) & 0x00000001) >> 0)
2734 /* Produces a ALT_I2C_CLR_RX_UNDER_CLR_RX_UNDER register field value suitable for setting the register. */
2735 #define ALT_I2C_CLR_RX_UNDER_CLR_RX_UNDER_SET(value) (((value) << 0) & 0x00000001)
2736 
2737 #ifndef __ASSEMBLY__
2738 /*
2739  * WARNING: The C register and register group struct declarations are provided for
2740  * convenience and illustrative purposes. They should, however, be used with
2741  * caution as the C language standard provides no guarantees about the alignment or
2742  * atomicity of device memory accesses. The recommended practice for writing
2743  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
2744  * alt_write_word() functions.
2745  * 
2746  * The struct declaration for register ALT_I2C_CLR_RX_UNDER.
2747  */
2748 struct ALT_I2C_CLR_RX_UNDER_s
2749 {
2750     const uint32_t  clr_rx_under :  1;  /* Clear Rx Under Interrupt Bit */
2751     uint32_t                     : 31;  /* *UNDEFINED* */
2752 };
2753 
2754 /* The typedef declaration for register ALT_I2C_CLR_RX_UNDER. */
2755 typedef volatile struct ALT_I2C_CLR_RX_UNDER_s  ALT_I2C_CLR_RX_UNDER_t;
2756 #endif  /* __ASSEMBLY__ */
2757 
2758 /* The byte offset of the ALT_I2C_CLR_RX_UNDER register from the beginning of the component. */
2759 #define ALT_I2C_CLR_RX_UNDER_OFST        0x44
2760 /* The address of the ALT_I2C_CLR_RX_UNDER register. */
2761 #define ALT_I2C_CLR_RX_UNDER_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_CLR_RX_UNDER_OFST))
2762 
2763 /*
2764  * Register : RX Over Interrupt Register - ic_clr_rx_over
2765  * 
2766  * Clears Rx over Interrupt Bit
2767  * 
2768  * Register Layout
2769  * 
2770  *  Bits   | Access | Reset | Description          
2771  * :-------|:-------|:------|:----------------------
2772  *  [0]    | R      | 0x0   | RX Over Interrupt Bit
2773  *  [31:1] | ???    | 0x0   | *UNDEFINED*          
2774  * 
2775  */
2776 /*
2777  * Field : RX Over Interrupt Bit - clr_rx_over
2778  * 
2779  * Read this register to clear the RX_OVER interrupt bit 1 of the ic_raw_intr_stat
2780  * register.
2781  * 
2782  * Field Access Macros:
2783  * 
2784  */
2785 /* The Least Significant Bit (LSB) position of the ALT_I2C_CLR_RX_OVER_CLR_RX_OVER register field. */
2786 #define ALT_I2C_CLR_RX_OVER_CLR_RX_OVER_LSB        0
2787 /* The Most Significant Bit (MSB) position of the ALT_I2C_CLR_RX_OVER_CLR_RX_OVER register field. */
2788 #define ALT_I2C_CLR_RX_OVER_CLR_RX_OVER_MSB        0
2789 /* The width in bits of the ALT_I2C_CLR_RX_OVER_CLR_RX_OVER register field. */
2790 #define ALT_I2C_CLR_RX_OVER_CLR_RX_OVER_WIDTH      1
2791 /* The mask used to set the ALT_I2C_CLR_RX_OVER_CLR_RX_OVER register field value. */
2792 #define ALT_I2C_CLR_RX_OVER_CLR_RX_OVER_SET_MSK    0x00000001
2793 /* The mask used to clear the ALT_I2C_CLR_RX_OVER_CLR_RX_OVER register field value. */
2794 #define ALT_I2C_CLR_RX_OVER_CLR_RX_OVER_CLR_MSK    0xfffffffe
2795 /* The reset value of the ALT_I2C_CLR_RX_OVER_CLR_RX_OVER register field. */
2796 #define ALT_I2C_CLR_RX_OVER_CLR_RX_OVER_RESET      0x0
2797 /* Extracts the ALT_I2C_CLR_RX_OVER_CLR_RX_OVER field value from a register. */
2798 #define ALT_I2C_CLR_RX_OVER_CLR_RX_OVER_GET(value) (((value) & 0x00000001) >> 0)
2799 /* Produces a ALT_I2C_CLR_RX_OVER_CLR_RX_OVER register field value suitable for setting the register. */
2800 #define ALT_I2C_CLR_RX_OVER_CLR_RX_OVER_SET(value) (((value) << 0) & 0x00000001)
2801 
2802 #ifndef __ASSEMBLY__
2803 /*
2804  * WARNING: The C register and register group struct declarations are provided for
2805  * convenience and illustrative purposes. They should, however, be used with
2806  * caution as the C language standard provides no guarantees about the alignment or
2807  * atomicity of device memory accesses. The recommended practice for writing
2808  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
2809  * alt_write_word() functions.
2810  * 
2811  * The struct declaration for register ALT_I2C_CLR_RX_OVER.
2812  */
2813 struct ALT_I2C_CLR_RX_OVER_s
2814 {
2815     const uint32_t  clr_rx_over :  1;  /* RX Over Interrupt Bit */
2816     uint32_t                    : 31;  /* *UNDEFINED* */
2817 };
2818 
2819 /* The typedef declaration for register ALT_I2C_CLR_RX_OVER. */
2820 typedef volatile struct ALT_I2C_CLR_RX_OVER_s  ALT_I2C_CLR_RX_OVER_t;
2821 #endif  /* __ASSEMBLY__ */
2822 
2823 /* The byte offset of the ALT_I2C_CLR_RX_OVER register from the beginning of the component. */
2824 #define ALT_I2C_CLR_RX_OVER_OFST        0x48
2825 /* The address of the ALT_I2C_CLR_RX_OVER register. */
2826 #define ALT_I2C_CLR_RX_OVER_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_CLR_RX_OVER_OFST))
2827 
2828 /*
2829  * Register : TX Over Interrupt Register - ic_clr_tx_over
2830  * 
2831  * Clears Over Interrupts
2832  * 
2833  * Register Layout
2834  * 
2835  *  Bits   | Access | Reset | Description          
2836  * :-------|:-------|:------|:----------------------
2837  *  [0]    | R      | 0x0   | TX Over Interrupt Bit
2838  *  [31:1] | ???    | 0x0   | *UNDEFINED*          
2839  * 
2840  */
2841 /*
2842  * Field : TX Over Interrupt Bit - clr_tx_over
2843  * 
2844  * Read this register to clear the TX_OVER interrupt (bit 3) of the
2845  * ic_raw_intr_stat register.
2846  * 
2847  * Field Access Macros:
2848  * 
2849  */
2850 /* The Least Significant Bit (LSB) position of the ALT_I2C_CLR_TX_OVER_CLR_TX_OVER register field. */
2851 #define ALT_I2C_CLR_TX_OVER_CLR_TX_OVER_LSB        0
2852 /* The Most Significant Bit (MSB) position of the ALT_I2C_CLR_TX_OVER_CLR_TX_OVER register field. */
2853 #define ALT_I2C_CLR_TX_OVER_CLR_TX_OVER_MSB        0
2854 /* The width in bits of the ALT_I2C_CLR_TX_OVER_CLR_TX_OVER register field. */
2855 #define ALT_I2C_CLR_TX_OVER_CLR_TX_OVER_WIDTH      1
2856 /* The mask used to set the ALT_I2C_CLR_TX_OVER_CLR_TX_OVER register field value. */
2857 #define ALT_I2C_CLR_TX_OVER_CLR_TX_OVER_SET_MSK    0x00000001
2858 /* The mask used to clear the ALT_I2C_CLR_TX_OVER_CLR_TX_OVER register field value. */
2859 #define ALT_I2C_CLR_TX_OVER_CLR_TX_OVER_CLR_MSK    0xfffffffe
2860 /* The reset value of the ALT_I2C_CLR_TX_OVER_CLR_TX_OVER register field. */
2861 #define ALT_I2C_CLR_TX_OVER_CLR_TX_OVER_RESET      0x0
2862 /* Extracts the ALT_I2C_CLR_TX_OVER_CLR_TX_OVER field value from a register. */
2863 #define ALT_I2C_CLR_TX_OVER_CLR_TX_OVER_GET(value) (((value) & 0x00000001) >> 0)
2864 /* Produces a ALT_I2C_CLR_TX_OVER_CLR_TX_OVER register field value suitable for setting the register. */
2865 #define ALT_I2C_CLR_TX_OVER_CLR_TX_OVER_SET(value) (((value) << 0) & 0x00000001)
2866 
2867 #ifndef __ASSEMBLY__
2868 /*
2869  * WARNING: The C register and register group struct declarations are provided for
2870  * convenience and illustrative purposes. They should, however, be used with
2871  * caution as the C language standard provides no guarantees about the alignment or
2872  * atomicity of device memory accesses. The recommended practice for writing
2873  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
2874  * alt_write_word() functions.
2875  * 
2876  * The struct declaration for register ALT_I2C_CLR_TX_OVER.
2877  */
2878 struct ALT_I2C_CLR_TX_OVER_s
2879 {
2880     const uint32_t  clr_tx_over :  1;  /* TX Over Interrupt Bit */
2881     uint32_t                    : 31;  /* *UNDEFINED* */
2882 };
2883 
2884 /* The typedef declaration for register ALT_I2C_CLR_TX_OVER. */
2885 typedef volatile struct ALT_I2C_CLR_TX_OVER_s  ALT_I2C_CLR_TX_OVER_t;
2886 #endif  /* __ASSEMBLY__ */
2887 
2888 /* The byte offset of the ALT_I2C_CLR_TX_OVER register from the beginning of the component. */
2889 #define ALT_I2C_CLR_TX_OVER_OFST        0x4c
2890 /* The address of the ALT_I2C_CLR_TX_OVER register. */
2891 #define ALT_I2C_CLR_TX_OVER_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_CLR_TX_OVER_OFST))
2892 
2893 /*
2894  * Register : Interrupt Read Request Register - ic_clr_rd_req
2895  * 
2896  * Clear RD_REQ Interrupt Register
2897  * 
2898  * Register Layout
2899  * 
2900  *  Bits   | Access | Reset | Description                        
2901  * :-------|:-------|:------|:------------------------------------
2902  *  [0]    | R      | 0x0   | Interrupt Register Read Request Bit
2903  *  [31:1] | ???    | 0x0   | *UNDEFINED*                        
2904  * 
2905  */
2906 /*
2907  * Field : Interrupt Register Read Request Bit - clr_rd_req
2908  * 
2909  * Read this register to clear the RD_REQ interrupt (bit 5) of the ic_raw_intr_stat
2910  * register.
2911  * 
2912  * Field Access Macros:
2913  * 
2914  */
2915 /* The Least Significant Bit (LSB) position of the ALT_I2C_CLR_RD_REQ_CLR_RD_REQ register field. */
2916 #define ALT_I2C_CLR_RD_REQ_CLR_RD_REQ_LSB        0
2917 /* The Most Significant Bit (MSB) position of the ALT_I2C_CLR_RD_REQ_CLR_RD_REQ register field. */
2918 #define ALT_I2C_CLR_RD_REQ_CLR_RD_REQ_MSB        0
2919 /* The width in bits of the ALT_I2C_CLR_RD_REQ_CLR_RD_REQ register field. */
2920 #define ALT_I2C_CLR_RD_REQ_CLR_RD_REQ_WIDTH      1
2921 /* The mask used to set the ALT_I2C_CLR_RD_REQ_CLR_RD_REQ register field value. */
2922 #define ALT_I2C_CLR_RD_REQ_CLR_RD_REQ_SET_MSK    0x00000001
2923 /* The mask used to clear the ALT_I2C_CLR_RD_REQ_CLR_RD_REQ register field value. */
2924 #define ALT_I2C_CLR_RD_REQ_CLR_RD_REQ_CLR_MSK    0xfffffffe
2925 /* The reset value of the ALT_I2C_CLR_RD_REQ_CLR_RD_REQ register field. */
2926 #define ALT_I2C_CLR_RD_REQ_CLR_RD_REQ_RESET      0x0
2927 /* Extracts the ALT_I2C_CLR_RD_REQ_CLR_RD_REQ field value from a register. */
2928 #define ALT_I2C_CLR_RD_REQ_CLR_RD_REQ_GET(value) (((value) & 0x00000001) >> 0)
2929 /* Produces a ALT_I2C_CLR_RD_REQ_CLR_RD_REQ register field value suitable for setting the register. */
2930 #define ALT_I2C_CLR_RD_REQ_CLR_RD_REQ_SET(value) (((value) << 0) & 0x00000001)
2931 
2932 #ifndef __ASSEMBLY__
2933 /*
2934  * WARNING: The C register and register group struct declarations are provided for
2935  * convenience and illustrative purposes. They should, however, be used with
2936  * caution as the C language standard provides no guarantees about the alignment or
2937  * atomicity of device memory accesses. The recommended practice for writing
2938  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
2939  * alt_write_word() functions.
2940  * 
2941  * The struct declaration for register ALT_I2C_CLR_RD_REQ.
2942  */
2943 struct ALT_I2C_CLR_RD_REQ_s
2944 {
2945     const uint32_t  clr_rd_req :  1;  /* Interrupt Register Read Request Bit */
2946     uint32_t                   : 31;  /* *UNDEFINED* */
2947 };
2948 
2949 /* The typedef declaration for register ALT_I2C_CLR_RD_REQ. */
2950 typedef volatile struct ALT_I2C_CLR_RD_REQ_s  ALT_I2C_CLR_RD_REQ_t;
2951 #endif  /* __ASSEMBLY__ */
2952 
2953 /* The byte offset of the ALT_I2C_CLR_RD_REQ register from the beginning of the component. */
2954 #define ALT_I2C_CLR_RD_REQ_OFST        0x50
2955 /* The address of the ALT_I2C_CLR_RD_REQ register. */
2956 #define ALT_I2C_CLR_RD_REQ_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_CLR_RD_REQ_OFST))
2957 
2958 /*
2959  * Register : Tx Abort Interrupt Register - ic_clr_tx_abrt
2960  * 
2961  * Clear TX_ABRT Interrupt
2962  * 
2963  * Register Layout
2964  * 
2965  *  Bits   | Access | Reset | Description           
2966  * :-------|:-------|:------|:-----------------------
2967  *  [0]    | R      | 0x0   | Tx Abort Interrupt Bit
2968  *  [31:1] | ???    | 0x0   | *UNDEFINED*           
2969  * 
2970  */
2971 /*
2972  * Field : Tx Abort Interrupt Bit - clr_tx_abort
2973  * 
2974  * Read this register to clear the TX_ABRT interrupt (bit 6) of the
2975  * ic_raw_intr_stat register, and the ic_tx_abrt_source register. This also
2976  * releases the TX FIFO from the flushed/reset state, allowing more writes to the
2977  * TX FIFO. Refer to Bit 9 of the ic_tx_abrt_source register for an exception to
2978  * clearing ic_tx_abrt_source.
2979  * 
2980  * Field Access Macros:
2981  * 
2982  */
2983 /* The Least Significant Bit (LSB) position of the ALT_I2C_CLR_TX_ABRT_CLR_TX_ABT register field. */
2984 #define ALT_I2C_CLR_TX_ABRT_CLR_TX_ABT_LSB        0
2985 /* The Most Significant Bit (MSB) position of the ALT_I2C_CLR_TX_ABRT_CLR_TX_ABT register field. */
2986 #define ALT_I2C_CLR_TX_ABRT_CLR_TX_ABT_MSB        0
2987 /* The width in bits of the ALT_I2C_CLR_TX_ABRT_CLR_TX_ABT register field. */
2988 #define ALT_I2C_CLR_TX_ABRT_CLR_TX_ABT_WIDTH      1
2989 /* The mask used to set the ALT_I2C_CLR_TX_ABRT_CLR_TX_ABT register field value. */
2990 #define ALT_I2C_CLR_TX_ABRT_CLR_TX_ABT_SET_MSK    0x00000001
2991 /* The mask used to clear the ALT_I2C_CLR_TX_ABRT_CLR_TX_ABT register field value. */
2992 #define ALT_I2C_CLR_TX_ABRT_CLR_TX_ABT_CLR_MSK    0xfffffffe
2993 /* The reset value of the ALT_I2C_CLR_TX_ABRT_CLR_TX_ABT register field. */
2994 #define ALT_I2C_CLR_TX_ABRT_CLR_TX_ABT_RESET      0x0
2995 /* Extracts the ALT_I2C_CLR_TX_ABRT_CLR_TX_ABT field value from a register. */
2996 #define ALT_I2C_CLR_TX_ABRT_CLR_TX_ABT_GET(value) (((value) & 0x00000001) >> 0)
2997 /* Produces a ALT_I2C_CLR_TX_ABRT_CLR_TX_ABT register field value suitable for setting the register. */
2998 #define ALT_I2C_CLR_TX_ABRT_CLR_TX_ABT_SET(value) (((value) << 0) & 0x00000001)
2999 
3000 #ifndef __ASSEMBLY__
3001 /*
3002  * WARNING: The C register and register group struct declarations are provided for
3003  * convenience and illustrative purposes. They should, however, be used with
3004  * caution as the C language standard provides no guarantees about the alignment or
3005  * atomicity of device memory accesses. The recommended practice for writing
3006  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
3007  * alt_write_word() functions.
3008  * 
3009  * The struct declaration for register ALT_I2C_CLR_TX_ABRT.
3010  */
3011 struct ALT_I2C_CLR_TX_ABRT_s
3012 {
3013     const uint32_t  clr_tx_abort :  1;  /* Tx Abort Interrupt Bit */
3014     uint32_t                     : 31;  /* *UNDEFINED* */
3015 };
3016 
3017 /* The typedef declaration for register ALT_I2C_CLR_TX_ABRT. */
3018 typedef volatile struct ALT_I2C_CLR_TX_ABRT_s  ALT_I2C_CLR_TX_ABRT_t;
3019 #endif  /* __ASSEMBLY__ */
3020 
3021 /* The byte offset of the ALT_I2C_CLR_TX_ABRT register from the beginning of the component. */
3022 #define ALT_I2C_CLR_TX_ABRT_OFST        0x54
3023 /* The address of the ALT_I2C_CLR_TX_ABRT register. */
3024 #define ALT_I2C_CLR_TX_ABRT_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_CLR_TX_ABRT_OFST))
3025 
3026 /*
3027  * Register : Rx Done Interrupt Register - ic_clr_rx_done
3028  * 
3029  * Clear RX_DONE Interrupt Register
3030  * 
3031  * Register Layout
3032  * 
3033  *  Bits   | Access | Reset | Description          
3034  * :-------|:-------|:------|:----------------------
3035  *  [0]    | R      | 0x0   | RX_DONE Interrupt Bit
3036  *  [31:1] | ???    | 0x0   | *UNDEFINED*          
3037  * 
3038  */
3039 /*
3040  * Field : RX_DONE Interrupt Bit - clr_rx_done
3041  * 
3042  * Read this register to clear the RX_DONE interrupt (bit 7) of the
3043  * ic_raw_intr_stat register.
3044  * 
3045  * Field Access Macros:
3046  * 
3047  */
3048 /* The Least Significant Bit (LSB) position of the ALT_I2C_CLR_RX_DONE_CLR_RX_DONE register field. */
3049 #define ALT_I2C_CLR_RX_DONE_CLR_RX_DONE_LSB        0
3050 /* The Most Significant Bit (MSB) position of the ALT_I2C_CLR_RX_DONE_CLR_RX_DONE register field. */
3051 #define ALT_I2C_CLR_RX_DONE_CLR_RX_DONE_MSB        0
3052 /* The width in bits of the ALT_I2C_CLR_RX_DONE_CLR_RX_DONE register field. */
3053 #define ALT_I2C_CLR_RX_DONE_CLR_RX_DONE_WIDTH      1
3054 /* The mask used to set the ALT_I2C_CLR_RX_DONE_CLR_RX_DONE register field value. */
3055 #define ALT_I2C_CLR_RX_DONE_CLR_RX_DONE_SET_MSK    0x00000001
3056 /* The mask used to clear the ALT_I2C_CLR_RX_DONE_CLR_RX_DONE register field value. */
3057 #define ALT_I2C_CLR_RX_DONE_CLR_RX_DONE_CLR_MSK    0xfffffffe
3058 /* The reset value of the ALT_I2C_CLR_RX_DONE_CLR_RX_DONE register field. */
3059 #define ALT_I2C_CLR_RX_DONE_CLR_RX_DONE_RESET      0x0
3060 /* Extracts the ALT_I2C_CLR_RX_DONE_CLR_RX_DONE field value from a register. */
3061 #define ALT_I2C_CLR_RX_DONE_CLR_RX_DONE_GET(value) (((value) & 0x00000001) >> 0)
3062 /* Produces a ALT_I2C_CLR_RX_DONE_CLR_RX_DONE register field value suitable for setting the register. */
3063 #define ALT_I2C_CLR_RX_DONE_CLR_RX_DONE_SET(value) (((value) << 0) & 0x00000001)
3064 
3065 #ifndef __ASSEMBLY__
3066 /*
3067  * WARNING: The C register and register group struct declarations are provided for
3068  * convenience and illustrative purposes. They should, however, be used with
3069  * caution as the C language standard provides no guarantees about the alignment or
3070  * atomicity of device memory accesses. The recommended practice for writing
3071  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
3072  * alt_write_word() functions.
3073  * 
3074  * The struct declaration for register ALT_I2C_CLR_RX_DONE.
3075  */
3076 struct ALT_I2C_CLR_RX_DONE_s
3077 {
3078     const uint32_t  clr_rx_done :  1;  /* RX_DONE Interrupt Bit */
3079     uint32_t                    : 31;  /* *UNDEFINED* */
3080 };
3081 
3082 /* The typedef declaration for register ALT_I2C_CLR_RX_DONE. */
3083 typedef volatile struct ALT_I2C_CLR_RX_DONE_s  ALT_I2C_CLR_RX_DONE_t;
3084 #endif  /* __ASSEMBLY__ */
3085 
3086 /* The byte offset of the ALT_I2C_CLR_RX_DONE register from the beginning of the component. */
3087 #define ALT_I2C_CLR_RX_DONE_OFST        0x58
3088 /* The address of the ALT_I2C_CLR_RX_DONE register. */
3089 #define ALT_I2C_CLR_RX_DONE_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_CLR_RX_DONE_OFST))
3090 
3091 /*
3092  * Register : Activity Interrupt Register - ic_clr_activity
3093  * 
3094  * Clears ACTIVITY Interrupt
3095  * 
3096  * Register Layout
3097  * 
3098  *  Bits   | Access | Reset | Description           
3099  * :-------|:-------|:------|:-----------------------
3100  *  [0]    | R      | 0x0   | Activity Interrupt Bit
3101  *  [31:1] | ???    | 0x0   | *UNDEFINED*           
3102  * 
3103  */
3104 /*
3105  * Field : Activity Interrupt Bit - clr_activity
3106  * 
3107  * Reading this register clears the ACTIVITY interrupt if the I2C is not active
3108  * anymore. If the I2C module is still active on the bus, the ACTIVITY interrupt
3109  * bit continues to be set. It is automatically cleared by hardware if the module
3110  * is disabled and if there is no further activity on the bus. The value read from
3111  * this register to get status of the ACTIVITY interrupt (bit 8) of the
3112  * ic_raw_intr_stat register.
3113  * 
3114  * Field Access Macros:
3115  * 
3116  */
3117 /* The Least Significant Bit (LSB) position of the ALT_I2C_CLR_ACTIVITY_CLR_ACTIVITY register field. */
3118 #define ALT_I2C_CLR_ACTIVITY_CLR_ACTIVITY_LSB        0
3119 /* The Most Significant Bit (MSB) position of the ALT_I2C_CLR_ACTIVITY_CLR_ACTIVITY register field. */
3120 #define ALT_I2C_CLR_ACTIVITY_CLR_ACTIVITY_MSB        0
3121 /* The width in bits of the ALT_I2C_CLR_ACTIVITY_CLR_ACTIVITY register field. */
3122 #define ALT_I2C_CLR_ACTIVITY_CLR_ACTIVITY_WIDTH      1
3123 /* The mask used to set the ALT_I2C_CLR_ACTIVITY_CLR_ACTIVITY register field value. */
3124 #define ALT_I2C_CLR_ACTIVITY_CLR_ACTIVITY_SET_MSK    0x00000001
3125 /* The mask used to clear the ALT_I2C_CLR_ACTIVITY_CLR_ACTIVITY register field value. */
3126 #define ALT_I2C_CLR_ACTIVITY_CLR_ACTIVITY_CLR_MSK    0xfffffffe
3127 /* The reset value of the ALT_I2C_CLR_ACTIVITY_CLR_ACTIVITY register field. */
3128 #define ALT_I2C_CLR_ACTIVITY_CLR_ACTIVITY_RESET      0x0
3129 /* Extracts the ALT_I2C_CLR_ACTIVITY_CLR_ACTIVITY field value from a register. */
3130 #define ALT_I2C_CLR_ACTIVITY_CLR_ACTIVITY_GET(value) (((value) & 0x00000001) >> 0)
3131 /* Produces a ALT_I2C_CLR_ACTIVITY_CLR_ACTIVITY register field value suitable for setting the register. */
3132 #define ALT_I2C_CLR_ACTIVITY_CLR_ACTIVITY_SET(value) (((value) << 0) & 0x00000001)
3133 
3134 #ifndef __ASSEMBLY__
3135 /*
3136  * WARNING: The C register and register group struct declarations are provided for
3137  * convenience and illustrative purposes. They should, however, be used with
3138  * caution as the C language standard provides no guarantees about the alignment or
3139  * atomicity of device memory accesses. The recommended practice for writing
3140  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
3141  * alt_write_word() functions.
3142  * 
3143  * The struct declaration for register ALT_I2C_CLR_ACTIVITY.
3144  */
3145 struct ALT_I2C_CLR_ACTIVITY_s
3146 {
3147     const uint32_t  clr_activity :  1;  /* Activity Interrupt Bit */
3148     uint32_t                     : 31;  /* *UNDEFINED* */
3149 };
3150 
3151 /* The typedef declaration for register ALT_I2C_CLR_ACTIVITY. */
3152 typedef volatile struct ALT_I2C_CLR_ACTIVITY_s  ALT_I2C_CLR_ACTIVITY_t;
3153 #endif  /* __ASSEMBLY__ */
3154 
3155 /* The byte offset of the ALT_I2C_CLR_ACTIVITY register from the beginning of the component. */
3156 #define ALT_I2C_CLR_ACTIVITY_OFST        0x5c
3157 /* The address of the ALT_I2C_CLR_ACTIVITY register. */
3158 #define ALT_I2C_CLR_ACTIVITY_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_CLR_ACTIVITY_OFST))
3159 
3160 /*
3161  * Register : Stop Detect Interrupt Register - ic_clr_stop_det
3162  * 
3163  * Clear Interrupts.
3164  * 
3165  * Register Layout
3166  * 
3167  *  Bits   | Access | Reset | Description              
3168  * :-------|:-------|:------|:--------------------------
3169  *  [0]    | R      | 0x0   | Stop Detect Interrupt Bit
3170  *  [31:1] | ???    | 0x0   | *UNDEFINED*              
3171  * 
3172  */
3173 /*
3174  * Field : Stop Detect Interrupt Bit - clr_stop_det
3175  * 
3176  * Read this register to clear the clr_stop_det interrupt (bit 9) of the
3177  * ic_raw_intr_stat register.
3178  * 
3179  * Field Access Macros:
3180  * 
3181  */
3182 /* The Least Significant Bit (LSB) position of the ALT_I2C_CLR_STOP_DET_CLR_STOP_DET register field. */
3183 #define ALT_I2C_CLR_STOP_DET_CLR_STOP_DET_LSB        0
3184 /* The Most Significant Bit (MSB) position of the ALT_I2C_CLR_STOP_DET_CLR_STOP_DET register field. */
3185 #define ALT_I2C_CLR_STOP_DET_CLR_STOP_DET_MSB        0
3186 /* The width in bits of the ALT_I2C_CLR_STOP_DET_CLR_STOP_DET register field. */
3187 #define ALT_I2C_CLR_STOP_DET_CLR_STOP_DET_WIDTH      1
3188 /* The mask used to set the ALT_I2C_CLR_STOP_DET_CLR_STOP_DET register field value. */
3189 #define ALT_I2C_CLR_STOP_DET_CLR_STOP_DET_SET_MSK    0x00000001
3190 /* The mask used to clear the ALT_I2C_CLR_STOP_DET_CLR_STOP_DET register field value. */
3191 #define ALT_I2C_CLR_STOP_DET_CLR_STOP_DET_CLR_MSK    0xfffffffe
3192 /* The reset value of the ALT_I2C_CLR_STOP_DET_CLR_STOP_DET register field. */
3193 #define ALT_I2C_CLR_STOP_DET_CLR_STOP_DET_RESET      0x0
3194 /* Extracts the ALT_I2C_CLR_STOP_DET_CLR_STOP_DET field value from a register. */
3195 #define ALT_I2C_CLR_STOP_DET_CLR_STOP_DET_GET(value) (((value) & 0x00000001) >> 0)
3196 /* Produces a ALT_I2C_CLR_STOP_DET_CLR_STOP_DET register field value suitable for setting the register. */
3197 #define ALT_I2C_CLR_STOP_DET_CLR_STOP_DET_SET(value) (((value) << 0) & 0x00000001)
3198 
3199 #ifndef __ASSEMBLY__
3200 /*
3201  * WARNING: The C register and register group struct declarations are provided for
3202  * convenience and illustrative purposes. They should, however, be used with
3203  * caution as the C language standard provides no guarantees about the alignment or
3204  * atomicity of device memory accesses. The recommended practice for writing
3205  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
3206  * alt_write_word() functions.
3207  * 
3208  * The struct declaration for register ALT_I2C_CLR_STOP_DET.
3209  */
3210 struct ALT_I2C_CLR_STOP_DET_s
3211 {
3212     const uint32_t  clr_stop_det :  1;  /* Stop Detect Interrupt Bit */
3213     uint32_t                     : 31;  /* *UNDEFINED* */
3214 };
3215 
3216 /* The typedef declaration for register ALT_I2C_CLR_STOP_DET. */
3217 typedef volatile struct ALT_I2C_CLR_STOP_DET_s  ALT_I2C_CLR_STOP_DET_t;
3218 #endif  /* __ASSEMBLY__ */
3219 
3220 /* The byte offset of the ALT_I2C_CLR_STOP_DET register from the beginning of the component. */
3221 #define ALT_I2C_CLR_STOP_DET_OFST        0x60
3222 /* The address of the ALT_I2C_CLR_STOP_DET register. */
3223 #define ALT_I2C_CLR_STOP_DET_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_CLR_STOP_DET_OFST))
3224 
3225 /*
3226  * Register : Start Detect Interrupt Register - ic_clr_start_det
3227  * 
3228  * Clears START_DET Interrupt
3229  * 
3230  * Register Layout
3231  * 
3232  *  Bits   | Access | Reset | Description               
3233  * :-------|:-------|:------|:---------------------------
3234  *  [0]    | R      | 0x0   | Start Detect Interrupt Bit
3235  *  [31:1] | ???    | 0x0   | *UNDEFINED*               
3236  * 
3237  */
3238 /*
3239  * Field : Start Detect Interrupt Bit - clr_start_det
3240  * 
3241  * Read this register to clear the start_det interrupt (bit 10) of the
3242  * ic_raw_intr_stat register.
3243  * 
3244  * Field Access Macros:
3245  * 
3246  */
3247 /* The Least Significant Bit (LSB) position of the ALT_I2C_CLR_START_DET_CLR_START_DET register field. */
3248 #define ALT_I2C_CLR_START_DET_CLR_START_DET_LSB        0
3249 /* The Most Significant Bit (MSB) position of the ALT_I2C_CLR_START_DET_CLR_START_DET register field. */
3250 #define ALT_I2C_CLR_START_DET_CLR_START_DET_MSB        0
3251 /* The width in bits of the ALT_I2C_CLR_START_DET_CLR_START_DET register field. */
3252 #define ALT_I2C_CLR_START_DET_CLR_START_DET_WIDTH      1
3253 /* The mask used to set the ALT_I2C_CLR_START_DET_CLR_START_DET register field value. */
3254 #define ALT_I2C_CLR_START_DET_CLR_START_DET_SET_MSK    0x00000001
3255 /* The mask used to clear the ALT_I2C_CLR_START_DET_CLR_START_DET register field value. */
3256 #define ALT_I2C_CLR_START_DET_CLR_START_DET_CLR_MSK    0xfffffffe
3257 /* The reset value of the ALT_I2C_CLR_START_DET_CLR_START_DET register field. */
3258 #define ALT_I2C_CLR_START_DET_CLR_START_DET_RESET      0x0
3259 /* Extracts the ALT_I2C_CLR_START_DET_CLR_START_DET field value from a register. */
3260 #define ALT_I2C_CLR_START_DET_CLR_START_DET_GET(value) (((value) & 0x00000001) >> 0)
3261 /* Produces a ALT_I2C_CLR_START_DET_CLR_START_DET register field value suitable for setting the register. */
3262 #define ALT_I2C_CLR_START_DET_CLR_START_DET_SET(value) (((value) << 0) & 0x00000001)
3263 
3264 #ifndef __ASSEMBLY__
3265 /*
3266  * WARNING: The C register and register group struct declarations are provided for
3267  * convenience and illustrative purposes. They should, however, be used with
3268  * caution as the C language standard provides no guarantees about the alignment or
3269  * atomicity of device memory accesses. The recommended practice for writing
3270  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
3271  * alt_write_word() functions.
3272  * 
3273  * The struct declaration for register ALT_I2C_CLR_START_DET.
3274  */
3275 struct ALT_I2C_CLR_START_DET_s
3276 {
3277     const uint32_t  clr_start_det :  1;  /* Start Detect Interrupt Bit */
3278     uint32_t                      : 31;  /* *UNDEFINED* */
3279 };
3280 
3281 /* The typedef declaration for register ALT_I2C_CLR_START_DET. */
3282 typedef volatile struct ALT_I2C_CLR_START_DET_s  ALT_I2C_CLR_START_DET_t;
3283 #endif  /* __ASSEMBLY__ */
3284 
3285 /* The byte offset of the ALT_I2C_CLR_START_DET register from the beginning of the component. */
3286 #define ALT_I2C_CLR_START_DET_OFST        0x64
3287 /* The address of the ALT_I2C_CLR_START_DET register. */
3288 #define ALT_I2C_CLR_START_DET_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_CLR_START_DET_OFST))
3289 
3290 /*
3291  * Register : GEN CALL Interrupt Register - ic_clr_gen_call
3292  * 
3293  * Clear GEN_CALL Interrupt Register
3294  * 
3295  * Register Layout
3296  * 
3297  *  Bits   | Access | Reset | Description           
3298  * :-------|:-------|:------|:-----------------------
3299  *  [0]    | R      | 0x0   | GEN CALL Interrupt Bit
3300  *  [31:1] | ???    | 0x0   | *UNDEFINED*           
3301  * 
3302  */
3303 /*
3304  * Field : GEN CALL Interrupt Bit - clr_gen_call
3305  * 
3306  * Read this register to clear the GEN_CALL interrupt (bit 11) of ic_raw_intr_stat
3307  * register.
3308  * 
3309  * Field Access Macros:
3310  * 
3311  */
3312 /* The Least Significant Bit (LSB) position of the ALT_I2C_CLR_GEN_CALL_CLR_GEN_CALL register field. */
3313 #define ALT_I2C_CLR_GEN_CALL_CLR_GEN_CALL_LSB        0
3314 /* The Most Significant Bit (MSB) position of the ALT_I2C_CLR_GEN_CALL_CLR_GEN_CALL register field. */
3315 #define ALT_I2C_CLR_GEN_CALL_CLR_GEN_CALL_MSB        0
3316 /* The width in bits of the ALT_I2C_CLR_GEN_CALL_CLR_GEN_CALL register field. */
3317 #define ALT_I2C_CLR_GEN_CALL_CLR_GEN_CALL_WIDTH      1
3318 /* The mask used to set the ALT_I2C_CLR_GEN_CALL_CLR_GEN_CALL register field value. */
3319 #define ALT_I2C_CLR_GEN_CALL_CLR_GEN_CALL_SET_MSK    0x00000001
3320 /* The mask used to clear the ALT_I2C_CLR_GEN_CALL_CLR_GEN_CALL register field value. */
3321 #define ALT_I2C_CLR_GEN_CALL_CLR_GEN_CALL_CLR_MSK    0xfffffffe
3322 /* The reset value of the ALT_I2C_CLR_GEN_CALL_CLR_GEN_CALL register field. */
3323 #define ALT_I2C_CLR_GEN_CALL_CLR_GEN_CALL_RESET      0x0
3324 /* Extracts the ALT_I2C_CLR_GEN_CALL_CLR_GEN_CALL field value from a register. */
3325 #define ALT_I2C_CLR_GEN_CALL_CLR_GEN_CALL_GET(value) (((value) & 0x00000001) >> 0)
3326 /* Produces a ALT_I2C_CLR_GEN_CALL_CLR_GEN_CALL register field value suitable for setting the register. */
3327 #define ALT_I2C_CLR_GEN_CALL_CLR_GEN_CALL_SET(value) (((value) << 0) & 0x00000001)
3328 
3329 #ifndef __ASSEMBLY__
3330 /*
3331  * WARNING: The C register and register group struct declarations are provided for
3332  * convenience and illustrative purposes. They should, however, be used with
3333  * caution as the C language standard provides no guarantees about the alignment or
3334  * atomicity of device memory accesses. The recommended practice for writing
3335  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
3336  * alt_write_word() functions.
3337  * 
3338  * The struct declaration for register ALT_I2C_CLR_GEN_CALL.
3339  */
3340 struct ALT_I2C_CLR_GEN_CALL_s
3341 {
3342     const uint32_t  clr_gen_call :  1;  /* GEN CALL Interrupt Bit */
3343     uint32_t                     : 31;  /* *UNDEFINED* */
3344 };
3345 
3346 /* The typedef declaration for register ALT_I2C_CLR_GEN_CALL. */
3347 typedef volatile struct ALT_I2C_CLR_GEN_CALL_s  ALT_I2C_CLR_GEN_CALL_t;
3348 #endif  /* __ASSEMBLY__ */
3349 
3350 /* The byte offset of the ALT_I2C_CLR_GEN_CALL register from the beginning of the component. */
3351 #define ALT_I2C_CLR_GEN_CALL_OFST        0x68
3352 /* The address of the ALT_I2C_CLR_GEN_CALL register. */
3353 #define ALT_I2C_CLR_GEN_CALL_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_CLR_GEN_CALL_OFST))
3354 
3355 /*
3356  * Register : Enable Register - ic_enable
3357  * 
3358  * Enable and disable i2c operation
3359  * 
3360  * Register Layout
3361  * 
3362  *  Bits   | Access | Reset | Description 
3363  * :-------|:-------|:------|:-------------
3364  *  [0]    | RW     | 0x0   | Enable Bit  
3365  *  [1]    | RW     | 0x0   | TX abort Bit
3366  *  [31:2] | ???    | 0x0   | *UNDEFINED* 
3367  * 
3368  */
3369 /*
3370  * Field : Enable Bit - enable
3371  * 
3372  * Controls whether the I2C is enabled. Software can disable I2C while it is
3373  * active. However, it is important that care be taken to ensure that I2C is
3374  * disabled properly. When the I2C is disabled, the following occurs:
3375  * 
3376  * The TX FIFO and RX FIFO get flushed. Status bits in the IC_INTR_STAT register
3377  * are still active until I2C goes into IDLE state. If the module is transmitting,
3378  * it stops as well as deletes the contents of the transmit buffer after the
3379  * current transfer is complete. If the module is receiving, the I2C stops the
3380  * current transfer at the end of the current byte and does not acknowledge the
3381  * transfer. The l4_sp_clk synchronizes pclk and ic_clk. The register
3382  * ic_enable_status is added to allow software to determine when the hardware has
3383  * completely shutdown in response to the IC_ENABLE register being set from 1 to 0.
3384  * Only one register is required to be monitored. Procedure for Disabling I2C
3385  * 
3386  * 1. Define a timer interval (ti2c_poll) equal to the 10 times the signaling
3387  * period for the highest I2C transfer speed used in the system and supported by
3388  * I2C. For example, if the highest I2C transfer mode is 400 kb/s, then this
3389  * ti2c_poll is 25us.
3390  * 
3391  * 2. Define a maximum time-out parameter, MAX_T_POLL_COUNT, such that if any
3392  * repeated polling operation exceeds this maximum value, an error is reported. 3.
3393  * Execute a blocking thread/process/function that prevents any further I2C master
3394  * transactions to be started by software, but allows any pending transfers to be
3395  * completed.
3396  * 
3397  * 4. The variable POLL_COUNT is initialized to zero. 5. Set IC_ENABLE to 0.
3398  * 
3399  * 6. Read the IC_ENABLE_STATUS register and test the IC_EN bit (bit 0). Increment
3400  * POLL_COUNT by one. If POLL_COUNT >= MAX_T_POLL_COUNT, exit with the relevant
3401  * error code.
3402  * 
3403  * 7. If IC_ENABLE_STATUS[0] is 1, then sleep for ti2c_poll and proceed to the
3404  * previous step. Otherwise, exit with a relevant success code.
3405  * 
3406  * Field Enumeration Values:
3407  * 
3408  *  Enum                | Value | Description                                   
3409  * :--------------------|:------|:-----------------------------------------------
3410  *  ALT_I2C_EN_EN_E_DIS | 0x0   | Disables i2c. TX and RX FIFOs are held in an  
3411  * :                    |       | erased state                                  
3412  *  ALT_I2C_EN_EN_E_EN  | 0x1   | Enables i2c. Software can disable i2c while it
3413  * :                    |       | is active                                     
3414  * 
3415  * Field Access Macros:
3416  * 
3417  */
3418 /*
3419  * Enumerated value for register field ALT_I2C_EN_EN
3420  * 
3421  * Disables i2c. TX and RX FIFOs are held in an erased state
3422  */
3423 #define ALT_I2C_EN_EN_E_DIS 0x0
3424 /*
3425  * Enumerated value for register field ALT_I2C_EN_EN
3426  * 
3427  * Enables i2c. Software can disable i2c while it is active
3428  */
3429 #define ALT_I2C_EN_EN_E_EN  0x1
3430 
3431 /* The Least Significant Bit (LSB) position of the ALT_I2C_EN_EN register field. */
3432 #define ALT_I2C_EN_EN_LSB        0
3433 /* The Most Significant Bit (MSB) position of the ALT_I2C_EN_EN register field. */
3434 #define ALT_I2C_EN_EN_MSB        0
3435 /* The width in bits of the ALT_I2C_EN_EN register field. */
3436 #define ALT_I2C_EN_EN_WIDTH      1
3437 /* The mask used to set the ALT_I2C_EN_EN register field value. */
3438 #define ALT_I2C_EN_EN_SET_MSK    0x00000001
3439 /* The mask used to clear the ALT_I2C_EN_EN register field value. */
3440 #define ALT_I2C_EN_EN_CLR_MSK    0xfffffffe
3441 /* The reset value of the ALT_I2C_EN_EN register field. */
3442 #define ALT_I2C_EN_EN_RESET      0x0
3443 /* Extracts the ALT_I2C_EN_EN field value from a register. */
3444 #define ALT_I2C_EN_EN_GET(value) (((value) & 0x00000001) >> 0)
3445 /* Produces a ALT_I2C_EN_EN register field value suitable for setting the register. */
3446 #define ALT_I2C_EN_EN_SET(value) (((value) << 0) & 0x00000001)
3447 
3448 /*
3449  * Field : TX abort Bit - txabort
3450  * 
3451  * Write 1 does a TX abort. Self cleared on abort completion
3452  * 
3453  * Field Access Macros:
3454  * 
3455  */
3456 /* The Least Significant Bit (LSB) position of the ALT_I2C_EN_TXABT register field. */
3457 #define ALT_I2C_EN_TXABT_LSB        1
3458 /* The Most Significant Bit (MSB) position of the ALT_I2C_EN_TXABT register field. */
3459 #define ALT_I2C_EN_TXABT_MSB        1
3460 /* The width in bits of the ALT_I2C_EN_TXABT register field. */
3461 #define ALT_I2C_EN_TXABT_WIDTH      1
3462 /* The mask used to set the ALT_I2C_EN_TXABT register field value. */
3463 #define ALT_I2C_EN_TXABT_SET_MSK    0x00000002
3464 /* The mask used to clear the ALT_I2C_EN_TXABT register field value. */
3465 #define ALT_I2C_EN_TXABT_CLR_MSK    0xfffffffd
3466 /* The reset value of the ALT_I2C_EN_TXABT register field. */
3467 #define ALT_I2C_EN_TXABT_RESET      0x0
3468 /* Extracts the ALT_I2C_EN_TXABT field value from a register. */
3469 #define ALT_I2C_EN_TXABT_GET(value) (((value) & 0x00000002) >> 1)
3470 /* Produces a ALT_I2C_EN_TXABT register field value suitable for setting the register. */
3471 #define ALT_I2C_EN_TXABT_SET(value) (((value) << 1) & 0x00000002)
3472 
3473 #ifndef __ASSEMBLY__
3474 /*
3475  * WARNING: The C register and register group struct declarations are provided for
3476  * convenience and illustrative purposes. They should, however, be used with
3477  * caution as the C language standard provides no guarantees about the alignment or
3478  * atomicity of device memory accesses. The recommended practice for writing
3479  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
3480  * alt_write_word() functions.
3481  * 
3482  * The struct declaration for register ALT_I2C_EN.
3483  */
3484 struct ALT_I2C_EN_s
3485 {
3486     uint32_t  enable  :  1;  /* Enable Bit */
3487     uint32_t  txabort :  1;  /* TX abort Bit */
3488     uint32_t          : 30;  /* *UNDEFINED* */
3489 };
3490 
3491 /* The typedef declaration for register ALT_I2C_EN. */
3492 typedef volatile struct ALT_I2C_EN_s  ALT_I2C_EN_t;
3493 #endif  /* __ASSEMBLY__ */
3494 
3495 /* The byte offset of the ALT_I2C_EN register from the beginning of the component. */
3496 #define ALT_I2C_EN_OFST        0x6c
3497 /* The address of the ALT_I2C_EN register. */
3498 #define ALT_I2C_EN_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_EN_OFST))
3499 
3500 /*
3501  * Register : Status Register - ic_status
3502  * 
3503  * This is a read-only register used to indicate the current transfer status and
3504  * FIFO status. The status register may be read at any time. None of the bits in
3505  * this register request an interrupt.When the I2C is disabled by writing 0 in bit
3506  * 0 of the ic_enable register:
3507  * 
3508  * * Bits 1 and 2 are set to 1
3509  * 
3510  * * Bits 3 and 4 are set to 0
3511  * 
3512  * When the master or slave state machines goes to idle
3513  * 
3514  * * Bits 5 and 6 are set to 0
3515  * 
3516  * Register Layout
3517  * 
3518  *  Bits   | Access | Reset | Description                   
3519  * :-------|:-------|:------|:-------------------------------
3520  *  [0]    | R      | 0x0   | Activity Status Bit           
3521  *  [1]    | R      | 0x1   | TX FIFO Not Full Bit          
3522  *  [2]    | R      | 0x1   | TX FIFO Empty Bit             
3523  *  [3]    | R      | 0x0   | RX FIFO Empty Bit             
3524  *  [4]    | R      | 0x0   | RX FIFO Full Bit              
3525  *  [5]    | R      | 0x0   | Master FSM Activity Status Bit
3526  *  [6]    | R      | 0x0   | Slave FSM Activity Status Bit 
3527  *  [31:7] | ???    | 0x0   | *UNDEFINED*                   
3528  * 
3529  */
3530 /*
3531  * Field : Activity Status Bit - activity
3532  * 
3533  * I2C Activity.
3534  * 
3535  * Field Access Macros:
3536  * 
3537  */
3538 /* The Least Significant Bit (LSB) position of the ALT_I2C_STAT_ACTIVITY register field. */
3539 #define ALT_I2C_STAT_ACTIVITY_LSB        0
3540 /* The Most Significant Bit (MSB) position of the ALT_I2C_STAT_ACTIVITY register field. */
3541 #define ALT_I2C_STAT_ACTIVITY_MSB        0
3542 /* The width in bits of the ALT_I2C_STAT_ACTIVITY register field. */
3543 #define ALT_I2C_STAT_ACTIVITY_WIDTH      1
3544 /* The mask used to set the ALT_I2C_STAT_ACTIVITY register field value. */
3545 #define ALT_I2C_STAT_ACTIVITY_SET_MSK    0x00000001
3546 /* The mask used to clear the ALT_I2C_STAT_ACTIVITY register field value. */
3547 #define ALT_I2C_STAT_ACTIVITY_CLR_MSK    0xfffffffe
3548 /* The reset value of the ALT_I2C_STAT_ACTIVITY register field. */
3549 #define ALT_I2C_STAT_ACTIVITY_RESET      0x0
3550 /* Extracts the ALT_I2C_STAT_ACTIVITY field value from a register. */
3551 #define ALT_I2C_STAT_ACTIVITY_GET(value) (((value) & 0x00000001) >> 0)
3552 /* Produces a ALT_I2C_STAT_ACTIVITY register field value suitable for setting the register. */
3553 #define ALT_I2C_STAT_ACTIVITY_SET(value) (((value) << 0) & 0x00000001)
3554 
3555 /*
3556  * Field : TX FIFO Not Full Bit - tfnf
3557  * 
3558  * Transmit Fifo Full
3559  * 
3560  * Field Enumeration Values:
3561  * 
3562  *  Enum                        | Value | Description              
3563  * :----------------------------|:------|:--------------------------
3564  *  ALT_I2C_STAT_TFNF_E_FULL    | 0x0   | Transmit FIFO is full    
3565  *  ALT_I2C_STAT_TFNF_E_NOTFULL | 0x1   | Transmit FIFO is not full
3566  * 
3567  * Field Access Macros:
3568  * 
3569  */
3570 /*
3571  * Enumerated value for register field ALT_I2C_STAT_TFNF
3572  * 
3573  * Transmit FIFO is full
3574  */
3575 #define ALT_I2C_STAT_TFNF_E_FULL    0x0
3576 /*
3577  * Enumerated value for register field ALT_I2C_STAT_TFNF
3578  * 
3579  * Transmit FIFO is not full
3580  */
3581 #define ALT_I2C_STAT_TFNF_E_NOTFULL 0x1
3582 
3583 /* The Least Significant Bit (LSB) position of the ALT_I2C_STAT_TFNF register field. */
3584 #define ALT_I2C_STAT_TFNF_LSB        1
3585 /* The Most Significant Bit (MSB) position of the ALT_I2C_STAT_TFNF register field. */
3586 #define ALT_I2C_STAT_TFNF_MSB        1
3587 /* The width in bits of the ALT_I2C_STAT_TFNF register field. */
3588 #define ALT_I2C_STAT_TFNF_WIDTH      1
3589 /* The mask used to set the ALT_I2C_STAT_TFNF register field value. */
3590 #define ALT_I2C_STAT_TFNF_SET_MSK    0x00000002
3591 /* The mask used to clear the ALT_I2C_STAT_TFNF register field value. */
3592 #define ALT_I2C_STAT_TFNF_CLR_MSK    0xfffffffd
3593 /* The reset value of the ALT_I2C_STAT_TFNF register field. */
3594 #define ALT_I2C_STAT_TFNF_RESET      0x1
3595 /* Extracts the ALT_I2C_STAT_TFNF field value from a register. */
3596 #define ALT_I2C_STAT_TFNF_GET(value) (((value) & 0x00000002) >> 1)
3597 /* Produces a ALT_I2C_STAT_TFNF register field value suitable for setting the register. */
3598 #define ALT_I2C_STAT_TFNF_SET(value) (((value) << 1) & 0x00000002)
3599 
3600 /*
3601  * Field : TX FIFO Empty Bit - tfe
3602  * 
3603  * Transmit FIFO Empty.
3604  * 
3605  * Field Enumeration Values:
3606  * 
3607  *  Enum                        | Value | Description               
3608  * :----------------------------|:------|:---------------------------
3609  *  ALT_I2C_STAT_TFE_E_NOTEMPTY | 0x0   | Transmit FIFO is not empty
3610  *  ALT_I2C_STAT_TFE_E_EMPTY    | 0x1   | Transmit FIFO is empty    
3611  * 
3612  * Field Access Macros:
3613  * 
3614  */
3615 /*
3616  * Enumerated value for register field ALT_I2C_STAT_TFE
3617  * 
3618  * Transmit FIFO is not empty
3619  */
3620 #define ALT_I2C_STAT_TFE_E_NOTEMPTY 0x0
3621 /*
3622  * Enumerated value for register field ALT_I2C_STAT_TFE
3623  * 
3624  * Transmit FIFO is empty
3625  */
3626 #define ALT_I2C_STAT_TFE_E_EMPTY    0x1
3627 
3628 /* The Least Significant Bit (LSB) position of the ALT_I2C_STAT_TFE register field. */
3629 #define ALT_I2C_STAT_TFE_LSB        2
3630 /* The Most Significant Bit (MSB) position of the ALT_I2C_STAT_TFE register field. */
3631 #define ALT_I2C_STAT_TFE_MSB        2
3632 /* The width in bits of the ALT_I2C_STAT_TFE register field. */
3633 #define ALT_I2C_STAT_TFE_WIDTH      1
3634 /* The mask used to set the ALT_I2C_STAT_TFE register field value. */
3635 #define ALT_I2C_STAT_TFE_SET_MSK    0x00000004
3636 /* The mask used to clear the ALT_I2C_STAT_TFE register field value. */
3637 #define ALT_I2C_STAT_TFE_CLR_MSK    0xfffffffb
3638 /* The reset value of the ALT_I2C_STAT_TFE register field. */
3639 #define ALT_I2C_STAT_TFE_RESET      0x1
3640 /* Extracts the ALT_I2C_STAT_TFE field value from a register. */
3641 #define ALT_I2C_STAT_TFE_GET(value) (((value) & 0x00000004) >> 2)
3642 /* Produces a ALT_I2C_STAT_TFE register field value suitable for setting the register. */
3643 #define ALT_I2C_STAT_TFE_SET(value) (((value) << 2) & 0x00000004)
3644 
3645 /*
3646  * Field : RX FIFO Empty Bit - rfne
3647  * 
3648  * Receive FIFO Not Empty.
3649  * 
3650  * Field Enumeration Values:
3651  * 
3652  *  Enum                         | Value | Description              
3653  * :-----------------------------|:------|:--------------------------
3654  *  ALT_I2C_STAT_RFNE_E_EMPTY    | 0x0   | Receive FIFO is empty    
3655  *  ALT_I2C_STAT_RFNE_E_NOTEMPTY | 0x1   | Receive FIFO is not empty
3656  * 
3657  * Field Access Macros:
3658  * 
3659  */
3660 /*
3661  * Enumerated value for register field ALT_I2C_STAT_RFNE
3662  * 
3663  * Receive FIFO is empty
3664  */
3665 #define ALT_I2C_STAT_RFNE_E_EMPTY       0x0
3666 /*
3667  * Enumerated value for register field ALT_I2C_STAT_RFNE
3668  * 
3669  * Receive FIFO is not empty
3670  */
3671 #define ALT_I2C_STAT_RFNE_E_NOTEMPTY    0x1
3672 
3673 /* The Least Significant Bit (LSB) position of the ALT_I2C_STAT_RFNE register field. */
3674 #define ALT_I2C_STAT_RFNE_LSB        3
3675 /* The Most Significant Bit (MSB) position of the ALT_I2C_STAT_RFNE register field. */
3676 #define ALT_I2C_STAT_RFNE_MSB        3
3677 /* The width in bits of the ALT_I2C_STAT_RFNE register field. */
3678 #define ALT_I2C_STAT_RFNE_WIDTH      1
3679 /* The mask used to set the ALT_I2C_STAT_RFNE register field value. */
3680 #define ALT_I2C_STAT_RFNE_SET_MSK    0x00000008
3681 /* The mask used to clear the ALT_I2C_STAT_RFNE register field value. */
3682 #define ALT_I2C_STAT_RFNE_CLR_MSK    0xfffffff7
3683 /* The reset value of the ALT_I2C_STAT_RFNE register field. */
3684 #define ALT_I2C_STAT_RFNE_RESET      0x0
3685 /* Extracts the ALT_I2C_STAT_RFNE field value from a register. */
3686 #define ALT_I2C_STAT_RFNE_GET(value) (((value) & 0x00000008) >> 3)
3687 /* Produces a ALT_I2C_STAT_RFNE register field value suitable for setting the register. */
3688 #define ALT_I2C_STAT_RFNE_SET(value) (((value) << 3) & 0x00000008)
3689 
3690 /*
3691  * Field : RX FIFO Full Bit - rff
3692  * 
3693  * Receive FIFO Completely Full.
3694  * 
3695  * Field Enumeration Values:
3696  * 
3697  *  Enum                       | Value | Description             
3698  * :---------------------------|:------|:-------------------------
3699  *  ALT_I2C_STAT_RFF_E_NOTFULL | 0x0   | Receive FIFO is not full
3700  *  ALT_I2C_STAT_RFF_E_FULL    | 0x1   | Receive FIFO is full    
3701  * 
3702  * Field Access Macros:
3703  * 
3704  */
3705 /*
3706  * Enumerated value for register field ALT_I2C_STAT_RFF
3707  * 
3708  * Receive FIFO is not full
3709  */
3710 #define ALT_I2C_STAT_RFF_E_NOTFULL  0x0
3711 /*
3712  * Enumerated value for register field ALT_I2C_STAT_RFF
3713  * 
3714  * Receive FIFO is full
3715  */
3716 #define ALT_I2C_STAT_RFF_E_FULL     0x1
3717 
3718 /* The Least Significant Bit (LSB) position of the ALT_I2C_STAT_RFF register field. */
3719 #define ALT_I2C_STAT_RFF_LSB        4
3720 /* The Most Significant Bit (MSB) position of the ALT_I2C_STAT_RFF register field. */
3721 #define ALT_I2C_STAT_RFF_MSB        4
3722 /* The width in bits of the ALT_I2C_STAT_RFF register field. */
3723 #define ALT_I2C_STAT_RFF_WIDTH      1
3724 /* The mask used to set the ALT_I2C_STAT_RFF register field value. */
3725 #define ALT_I2C_STAT_RFF_SET_MSK    0x00000010
3726 /* The mask used to clear the ALT_I2C_STAT_RFF register field value. */
3727 #define ALT_I2C_STAT_RFF_CLR_MSK    0xffffffef
3728 /* The reset value of the ALT_I2C_STAT_RFF register field. */
3729 #define ALT_I2C_STAT_RFF_RESET      0x0
3730 /* Extracts the ALT_I2C_STAT_RFF field value from a register. */
3731 #define ALT_I2C_STAT_RFF_GET(value) (((value) & 0x00000010) >> 4)
3732 /* Produces a ALT_I2C_STAT_RFF register field value suitable for setting the register. */
3733 #define ALT_I2C_STAT_RFF_SET(value) (((value) << 4) & 0x00000010)
3734 
3735 /*
3736  * Field : Master FSM Activity Status Bit - mst_activity
3737  * 
3738  * When the Master Finite State Machine (FSM) is not in the IDLE state, this bit is
3739  * set. Note:IC_STATUS[0]-that is, ACTIVITY bit-is the OR of SLV_ACTIVITY and
3740  * MST_ACTIVITY bits.
3741  * 
3742  * Field Enumeration Values:
3743  * 
3744  *  Enum                                | Value | Description                                    
3745  * :------------------------------------|:------|:------------------------------------------------
3746  *  ALT_I2C_STAT_MST_ACTIVITY_E_IDLE    | 0x0   | Master FSM is in IDLE state. Master part of i2c
3747  * :                                    |       | is not Active                                  
3748  *  ALT_I2C_STAT_MST_ACTIVITY_E_NOTIDLE | 0x1   | Master FSM is not in IDLE state. Master part of
3749  * :                                    |       | i2c is Active                                  
3750  * 
3751  * Field Access Macros:
3752  * 
3753  */
3754 /*
3755  * Enumerated value for register field ALT_I2C_STAT_MST_ACTIVITY
3756  * 
3757  * Master FSM is in IDLE state. Master part of i2c is not Active
3758  */
3759 #define ALT_I2C_STAT_MST_ACTIVITY_E_IDLE    0x0
3760 /*
3761  * Enumerated value for register field ALT_I2C_STAT_MST_ACTIVITY
3762  * 
3763  * Master FSM is not in IDLE state. Master part of i2c is Active
3764  */
3765 #define ALT_I2C_STAT_MST_ACTIVITY_E_NOTIDLE 0x1
3766 
3767 /* The Least Significant Bit (LSB) position of the ALT_I2C_STAT_MST_ACTIVITY register field. */
3768 #define ALT_I2C_STAT_MST_ACTIVITY_LSB        5
3769 /* The Most Significant Bit (MSB) position of the ALT_I2C_STAT_MST_ACTIVITY register field. */
3770 #define ALT_I2C_STAT_MST_ACTIVITY_MSB        5
3771 /* The width in bits of the ALT_I2C_STAT_MST_ACTIVITY register field. */
3772 #define ALT_I2C_STAT_MST_ACTIVITY_WIDTH      1
3773 /* The mask used to set the ALT_I2C_STAT_MST_ACTIVITY register field value. */
3774 #define ALT_I2C_STAT_MST_ACTIVITY_SET_MSK    0x00000020
3775 /* The mask used to clear the ALT_I2C_STAT_MST_ACTIVITY register field value. */
3776 #define ALT_I2C_STAT_MST_ACTIVITY_CLR_MSK    0xffffffdf
3777 /* The reset value of the ALT_I2C_STAT_MST_ACTIVITY register field. */
3778 #define ALT_I2C_STAT_MST_ACTIVITY_RESET      0x0
3779 /* Extracts the ALT_I2C_STAT_MST_ACTIVITY field value from a register. */
3780 #define ALT_I2C_STAT_MST_ACTIVITY_GET(value) (((value) & 0x00000020) >> 5)
3781 /* Produces a ALT_I2C_STAT_MST_ACTIVITY register field value suitable for setting the register. */
3782 #define ALT_I2C_STAT_MST_ACTIVITY_SET(value) (((value) << 5) & 0x00000020)
3783 
3784 /*
3785  * Field : Slave FSM Activity Status Bit - slv_activity
3786  * 
3787  * Slave FSM Activity Status. When the Slave Finite State Machine (FSM) is not in
3788  * the IDLE state, this bit is set.
3789  * 
3790  * Field Enumeration Values:
3791  * 
3792  *  Enum                                | Value | Description                                     
3793  * :------------------------------------|:------|:-------------------------------------------------
3794  *  ALT_I2C_STAT_SLV_ACTIVITY_E_IDLE    | 0x0   | Slave FSM is in IDLE state so the Slave part of 
3795  * :                                    |       | i2c is not Active                               
3796  *  ALT_I2C_STAT_SLV_ACTIVITY_E_NOTIDLE | 0x1   | Slave FSM is not in IDLE state so the Slave part
3797  * :                                    |       | of i2c is Active                                
3798  * 
3799  * Field Access Macros:
3800  * 
3801  */
3802 /*
3803  * Enumerated value for register field ALT_I2C_STAT_SLV_ACTIVITY
3804  * 
3805  * Slave FSM is in IDLE state so the Slave part of i2c is not Active
3806  */
3807 #define ALT_I2C_STAT_SLV_ACTIVITY_E_IDLE    0x0
3808 /*
3809  * Enumerated value for register field ALT_I2C_STAT_SLV_ACTIVITY
3810  * 
3811  * Slave FSM is not in IDLE state so the Slave part of i2c is Active
3812  */
3813 #define ALT_I2C_STAT_SLV_ACTIVITY_E_NOTIDLE 0x1
3814 
3815 /* The Least Significant Bit (LSB) position of the ALT_I2C_STAT_SLV_ACTIVITY register field. */
3816 #define ALT_I2C_STAT_SLV_ACTIVITY_LSB        6
3817 /* The Most Significant Bit (MSB) position of the ALT_I2C_STAT_SLV_ACTIVITY register field. */
3818 #define ALT_I2C_STAT_SLV_ACTIVITY_MSB        6
3819 /* The width in bits of the ALT_I2C_STAT_SLV_ACTIVITY register field. */
3820 #define ALT_I2C_STAT_SLV_ACTIVITY_WIDTH      1
3821 /* The mask used to set the ALT_I2C_STAT_SLV_ACTIVITY register field value. */
3822 #define ALT_I2C_STAT_SLV_ACTIVITY_SET_MSK    0x00000040
3823 /* The mask used to clear the ALT_I2C_STAT_SLV_ACTIVITY register field value. */
3824 #define ALT_I2C_STAT_SLV_ACTIVITY_CLR_MSK    0xffffffbf
3825 /* The reset value of the ALT_I2C_STAT_SLV_ACTIVITY register field. */
3826 #define ALT_I2C_STAT_SLV_ACTIVITY_RESET      0x0
3827 /* Extracts the ALT_I2C_STAT_SLV_ACTIVITY field value from a register. */
3828 #define ALT_I2C_STAT_SLV_ACTIVITY_GET(value) (((value) & 0x00000040) >> 6)
3829 /* Produces a ALT_I2C_STAT_SLV_ACTIVITY register field value suitable for setting the register. */
3830 #define ALT_I2C_STAT_SLV_ACTIVITY_SET(value) (((value) << 6) & 0x00000040)
3831 
3832 #ifndef __ASSEMBLY__
3833 /*
3834  * WARNING: The C register and register group struct declarations are provided for
3835  * convenience and illustrative purposes. They should, however, be used with
3836  * caution as the C language standard provides no guarantees about the alignment or
3837  * atomicity of device memory accesses. The recommended practice for writing
3838  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
3839  * alt_write_word() functions.
3840  * 
3841  * The struct declaration for register ALT_I2C_STAT.
3842  */
3843 struct ALT_I2C_STAT_s
3844 {
3845     const uint32_t  activity     :  1;  /* Activity Status Bit */
3846     const uint32_t  tfnf         :  1;  /* TX FIFO Not Full Bit */
3847     const uint32_t  tfe          :  1;  /* TX FIFO Empty Bit */
3848     const uint32_t  rfne         :  1;  /* RX FIFO Empty Bit */
3849     const uint32_t  rff          :  1;  /* RX FIFO Full Bit */
3850     const uint32_t  mst_activity :  1;  /* Master FSM Activity Status Bit */
3851     const uint32_t  slv_activity :  1;  /* Slave FSM Activity Status Bit */
3852     uint32_t                     : 25;  /* *UNDEFINED* */
3853 };
3854 
3855 /* The typedef declaration for register ALT_I2C_STAT. */
3856 typedef volatile struct ALT_I2C_STAT_s  ALT_I2C_STAT_t;
3857 #endif  /* __ASSEMBLY__ */
3858 
3859 /* The byte offset of the ALT_I2C_STAT register from the beginning of the component. */
3860 #define ALT_I2C_STAT_OFST        0x70
3861 /* The address of the ALT_I2C_STAT register. */
3862 #define ALT_I2C_STAT_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_STAT_OFST))
3863 
3864 /*
3865  * Register : Transmit FIFO Level Register - ic_txflr
3866  * 
3867  * This register contains the number of valid data entries in the transmit FIFO
3868  * buffer. It is cleared whenever:
3869  * 
3870  * * The I2C is disabled
3871  * 
3872  * * There is a transmit abort that is, TX_ABRT bit is set in the ic_raw_intr_stat
3873  *   register. The slave bulk transmit mode is aborted The register increments
3874  *   whenever data is placed into the transmit FIFO and decrements when data is
3875  *   taken from the transmit FIFO.
3876  * 
3877  * Register Layout
3878  * 
3879  *  Bits   | Access | Reset | Description            
3880  * :-------|:-------|:------|:------------------------
3881  *  [6:0]  | R      | 0x0   | Transmit FIFO Level Bit
3882  *  [31:7] | ???    | 0x0   | *UNDEFINED*            
3883  * 
3884  */
3885 /*
3886  * Field : Transmit FIFO Level Bit - txflr
3887  * 
3888  * Transmit FIFO Level.Contains the number of valid data entries in the transmit
3889  * FIFO.
3890  * 
3891  * Field Access Macros:
3892  * 
3893  */
3894 /* The Least Significant Bit (LSB) position of the ALT_I2C_TXFLR_TXFLR register field. */
3895 #define ALT_I2C_TXFLR_TXFLR_LSB        0
3896 /* The Most Significant Bit (MSB) position of the ALT_I2C_TXFLR_TXFLR register field. */
3897 #define ALT_I2C_TXFLR_TXFLR_MSB        6
3898 /* The width in bits of the ALT_I2C_TXFLR_TXFLR register field. */
3899 #define ALT_I2C_TXFLR_TXFLR_WIDTH      7
3900 /* The mask used to set the ALT_I2C_TXFLR_TXFLR register field value. */
3901 #define ALT_I2C_TXFLR_TXFLR_SET_MSK    0x0000007f
3902 /* The mask used to clear the ALT_I2C_TXFLR_TXFLR register field value. */
3903 #define ALT_I2C_TXFLR_TXFLR_CLR_MSK    0xffffff80
3904 /* The reset value of the ALT_I2C_TXFLR_TXFLR register field. */
3905 #define ALT_I2C_TXFLR_TXFLR_RESET      0x0
3906 /* Extracts the ALT_I2C_TXFLR_TXFLR field value from a register. */
3907 #define ALT_I2C_TXFLR_TXFLR_GET(value) (((value) & 0x0000007f) >> 0)
3908 /* Produces a ALT_I2C_TXFLR_TXFLR register field value suitable for setting the register. */
3909 #define ALT_I2C_TXFLR_TXFLR_SET(value) (((value) << 0) & 0x0000007f)
3910 
3911 #ifndef __ASSEMBLY__
3912 /*
3913  * WARNING: The C register and register group struct declarations are provided for
3914  * convenience and illustrative purposes. They should, however, be used with
3915  * caution as the C language standard provides no guarantees about the alignment or
3916  * atomicity of device memory accesses. The recommended practice for writing
3917  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
3918  * alt_write_word() functions.
3919  * 
3920  * The struct declaration for register ALT_I2C_TXFLR.
3921  */
3922 struct ALT_I2C_TXFLR_s
3923 {
3924     const uint32_t  txflr :  7;  /* Transmit FIFO Level Bit */
3925     uint32_t              : 25;  /* *UNDEFINED* */
3926 };
3927 
3928 /* The typedef declaration for register ALT_I2C_TXFLR. */
3929 typedef volatile struct ALT_I2C_TXFLR_s  ALT_I2C_TXFLR_t;
3930 #endif  /* __ASSEMBLY__ */
3931 
3932 /* The byte offset of the ALT_I2C_TXFLR register from the beginning of the component. */
3933 #define ALT_I2C_TXFLR_OFST        0x74
3934 /* The address of the ALT_I2C_TXFLR register. */
3935 #define ALT_I2C_TXFLR_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_TXFLR_OFST))
3936 
3937 /*
3938  * Register : Receive FIFO Level Register - ic_rxflr
3939  * 
3940  * This register contains the number of valid data entries in the receive FIFO
3941  * buffer. It is cleared whenever:
3942  * 
3943  * * The I2C is disabled
3944  * 
3945  * * Whenever there is a transmit abort caused by any of the events tracked in
3946  *   ic_tx_abrt_source The register increments whenever data is placed into the
3947  *   receive FIFO and decrements when data is taken from the receive FIFO.
3948  * 
3949  * Register Layout
3950  * 
3951  *  Bits   | Access | Reset | Description           
3952  * :-------|:-------|:------|:-----------------------
3953  *  [6:0]  | R      | 0x0   | Receive FIFO Level Bit
3954  *  [31:7] | ???    | 0x0   | *UNDEFINED*           
3955  * 
3956  */
3957 /*
3958  * Field : Receive FIFO Level Bit - rxflr
3959  * 
3960  * Receive FIFO Level. Contains the number of valid data entries in the receive
3961  * FIFO.
3962  * 
3963  * Field Access Macros:
3964  * 
3965  */
3966 /* The Least Significant Bit (LSB) position of the ALT_I2C_RXFLR_RXFLR register field. */
3967 #define ALT_I2C_RXFLR_RXFLR_LSB        0
3968 /* The Most Significant Bit (MSB) position of the ALT_I2C_RXFLR_RXFLR register field. */
3969 #define ALT_I2C_RXFLR_RXFLR_MSB        6
3970 /* The width in bits of the ALT_I2C_RXFLR_RXFLR register field. */
3971 #define ALT_I2C_RXFLR_RXFLR_WIDTH      7
3972 /* The mask used to set the ALT_I2C_RXFLR_RXFLR register field value. */
3973 #define ALT_I2C_RXFLR_RXFLR_SET_MSK    0x0000007f
3974 /* The mask used to clear the ALT_I2C_RXFLR_RXFLR register field value. */
3975 #define ALT_I2C_RXFLR_RXFLR_CLR_MSK    0xffffff80
3976 /* The reset value of the ALT_I2C_RXFLR_RXFLR register field. */
3977 #define ALT_I2C_RXFLR_RXFLR_RESET      0x0
3978 /* Extracts the ALT_I2C_RXFLR_RXFLR field value from a register. */
3979 #define ALT_I2C_RXFLR_RXFLR_GET(value) (((value) & 0x0000007f) >> 0)
3980 /* Produces a ALT_I2C_RXFLR_RXFLR register field value suitable for setting the register. */
3981 #define ALT_I2C_RXFLR_RXFLR_SET(value) (((value) << 0) & 0x0000007f)
3982 
3983 #ifndef __ASSEMBLY__
3984 /*
3985  * WARNING: The C register and register group struct declarations are provided for
3986  * convenience and illustrative purposes. They should, however, be used with
3987  * caution as the C language standard provides no guarantees about the alignment or
3988  * atomicity of device memory accesses. The recommended practice for writing
3989  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
3990  * alt_write_word() functions.
3991  * 
3992  * The struct declaration for register ALT_I2C_RXFLR.
3993  */
3994 struct ALT_I2C_RXFLR_s
3995 {
3996     const uint32_t  rxflr :  7;  /* Receive FIFO Level Bit */
3997     uint32_t              : 25;  /* *UNDEFINED* */
3998 };
3999 
4000 /* The typedef declaration for register ALT_I2C_RXFLR. */
4001 typedef volatile struct ALT_I2C_RXFLR_s  ALT_I2C_RXFLR_t;
4002 #endif  /* __ASSEMBLY__ */
4003 
4004 /* The byte offset of the ALT_I2C_RXFLR register from the beginning of the component. */
4005 #define ALT_I2C_RXFLR_OFST        0x78
4006 /* The address of the ALT_I2C_RXFLR register. */
4007 #define ALT_I2C_RXFLR_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_RXFLR_OFST))
4008 
4009 /*
4010  * Register : SDA Hold Register - ic_sda_hold
4011  * 
4012  * This register controls the amount of time delay (in terms of number of l4_sp_clk
4013  * clock periods) introduced in the falling edge of SCL, relative to SDA changing,
4014  * when I2C services a read request in a slave-transmitter operation.  The relevant
4015  * I2C requirement is thd:DAT as detailed in the I2C Bus Specification.
4016  * 
4017  * Register Layout
4018  * 
4019  *  Bits    | Access | Reset | Description 
4020  * :--------|:-------|:------|:-------------
4021  *  [15:0]  | RW     | 0x1   | SDA Hold Bit
4022  *  [31:16] | ???    | 0x0   | *UNDEFINED* 
4023  * 
4024  */
4025 /*
4026  * Field : SDA Hold Bit - ic_sda_hold
4027  * 
4028  * Program to a minimum 0f 300ns.
4029  * 
4030  * Field Access Macros:
4031  * 
4032  */
4033 /* The Least Significant Bit (LSB) position of the ALT_I2C_SDA_HOLD_IC_SDA_HOLD register field. */
4034 #define ALT_I2C_SDA_HOLD_IC_SDA_HOLD_LSB        0
4035 /* The Most Significant Bit (MSB) position of the ALT_I2C_SDA_HOLD_IC_SDA_HOLD register field. */
4036 #define ALT_I2C_SDA_HOLD_IC_SDA_HOLD_MSB        15
4037 /* The width in bits of the ALT_I2C_SDA_HOLD_IC_SDA_HOLD register field. */
4038 #define ALT_I2C_SDA_HOLD_IC_SDA_HOLD_WIDTH      16
4039 /* The mask used to set the ALT_I2C_SDA_HOLD_IC_SDA_HOLD register field value. */
4040 #define ALT_I2C_SDA_HOLD_IC_SDA_HOLD_SET_MSK    0x0000ffff
4041 /* The mask used to clear the ALT_I2C_SDA_HOLD_IC_SDA_HOLD register field value. */
4042 #define ALT_I2C_SDA_HOLD_IC_SDA_HOLD_CLR_MSK    0xffff0000
4043 /* The reset value of the ALT_I2C_SDA_HOLD_IC_SDA_HOLD register field. */
4044 #define ALT_I2C_SDA_HOLD_IC_SDA_HOLD_RESET      0x1
4045 /* Extracts the ALT_I2C_SDA_HOLD_IC_SDA_HOLD field value from a register. */
4046 #define ALT_I2C_SDA_HOLD_IC_SDA_HOLD_GET(value) (((value) & 0x0000ffff) >> 0)
4047 /* Produces a ALT_I2C_SDA_HOLD_IC_SDA_HOLD register field value suitable for setting the register. */
4048 #define ALT_I2C_SDA_HOLD_IC_SDA_HOLD_SET(value) (((value) << 0) & 0x0000ffff)
4049 
4050 #ifndef __ASSEMBLY__
4051 /*
4052  * WARNING: The C register and register group struct declarations are provided for
4053  * convenience and illustrative purposes. They should, however, be used with
4054  * caution as the C language standard provides no guarantees about the alignment or
4055  * atomicity of device memory accesses. The recommended practice for writing
4056  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
4057  * alt_write_word() functions.
4058  * 
4059  * The struct declaration for register ALT_I2C_SDA_HOLD.
4060  */
4061 struct ALT_I2C_SDA_HOLD_s
4062 {
4063     uint32_t  ic_sda_hold : 16;  /* SDA Hold Bit */
4064     uint32_t              : 16;  /* *UNDEFINED* */
4065 };
4066 
4067 /* The typedef declaration for register ALT_I2C_SDA_HOLD. */
4068 typedef volatile struct ALT_I2C_SDA_HOLD_s  ALT_I2C_SDA_HOLD_t;
4069 #endif  /* __ASSEMBLY__ */
4070 
4071 /* The byte offset of the ALT_I2C_SDA_HOLD register from the beginning of the component. */
4072 #define ALT_I2C_SDA_HOLD_OFST        0x7c
4073 /* The address of the ALT_I2C_SDA_HOLD register. */
4074 #define ALT_I2C_SDA_HOLD_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_SDA_HOLD_OFST))
4075 
4076 /*
4077  * Register : Transmit Abort Source Register - ic_tx_abrt_source
4078  * 
4079  * This register has 16 bits that indicate the source of the TX_ABRT bit. Except
4080  * for Bit 9, this register is cleared whenever the ic_clr_tx_abrt register or the
4081  * ic_clr_intr register is read. To clear Bit 9, the source of the
4082  * abrt_sbyte_norstrt must be fixed first; RESTART must be enabled (ic_con[5]=1),
4083  * the special bit must be cleared (ic_tar[11]), or the gc_or_start bit must be
4084  * cleared (ic_tar[10]). Once the source of the abrt_sbyte_norstrt is fixed, then
4085  * this bit can be cleared in the same manner as other bits in this  register. If
4086  * the source of the abrt_sbyte_norstrt is not fixed before attempting to clear
4087  * this bit, Bit 9 clears for one cycle and is then re-asserted.
4088  * 
4089  * Register Layout
4090  * 
4091  *  Bits    | Access | Reset | Description                       
4092  * :--------|:-------|:------|:-----------------------------------
4093  *  [0]     | RW     | 0x0   | Master Abort 7 Bit Address        
4094  *  [1]     | RW     | 0x0   | Master Abort 10 Bit Address Byte 1
4095  *  [2]     | RW     | 0x0   | Master Abort 10 Bit Address Byte 2
4096  *  [3]     | RW     | 0x0   | Master Abort TX Noack Bit         
4097  *  [4]     | RW     | 0x0   | Master Abort GC Noack Bit         
4098  *  [5]     | RW     | 0x0   | Master Abort GC Read Bit          
4099  *  [6]     | RW     | 0x0   | Master HS MC Ack                  
4100  *  [7]     | RW     | 0x0   | Master Abort START Byte           
4101  *  [8]     | RW     | 0x0   | Master HS Restart Disabled        
4102  *  [9]     | RW     | 0x0   | Master Abort START No Restart     
4103  *  [10]    | RW     | 0x0   | Master Abort 10 Bit No Restart    
4104  *  [11]    | RW     | 0x0   | Master Oper Master Dis            
4105  *  [12]    | RW     | 0x0   | Master Abort Arbitration Lost     
4106  *  [13]    | RW     | 0x0   | Slave Abort Flush TXFIFO          
4107  *  [14]    | RW     | 0x0   | Slave Abort Arbitration Lost      
4108  *  [15]    | RW     | 0x0   | Slave Abort Read TX               
4109  *  [31:16] | ???    | 0x0   | *UNDEFINED*                       
4110  * 
4111  */
4112 /*
4113  * Field : Master Abort 7 Bit Address - abrt_7b_addr_noack
4114  * 
4115  * Master is in 7-bit addressing mode and the address sent was not acknowledged by
4116  * any slave. Role of i2c: Master-Transmitter or Master-Receiver
4117  * 
4118  * Field Access Macros:
4119  * 
4120  */
4121 /* The Least Significant Bit (LSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_7B_ADDR_NOACK register field. */
4122 #define ALT_I2C_TX_ABRT_SRC_ABRT_7B_ADDR_NOACK_LSB        0
4123 /* The Most Significant Bit (MSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_7B_ADDR_NOACK register field. */
4124 #define ALT_I2C_TX_ABRT_SRC_ABRT_7B_ADDR_NOACK_MSB        0
4125 /* The width in bits of the ALT_I2C_TX_ABRT_SRC_ABRT_7B_ADDR_NOACK register field. */
4126 #define ALT_I2C_TX_ABRT_SRC_ABRT_7B_ADDR_NOACK_WIDTH      1
4127 /* The mask used to set the ALT_I2C_TX_ABRT_SRC_ABRT_7B_ADDR_NOACK register field value. */
4128 #define ALT_I2C_TX_ABRT_SRC_ABRT_7B_ADDR_NOACK_SET_MSK    0x00000001
4129 /* The mask used to clear the ALT_I2C_TX_ABRT_SRC_ABRT_7B_ADDR_NOACK register field value. */
4130 #define ALT_I2C_TX_ABRT_SRC_ABRT_7B_ADDR_NOACK_CLR_MSK    0xfffffffe
4131 /* The reset value of the ALT_I2C_TX_ABRT_SRC_ABRT_7B_ADDR_NOACK register field. */
4132 #define ALT_I2C_TX_ABRT_SRC_ABRT_7B_ADDR_NOACK_RESET      0x0
4133 /* Extracts the ALT_I2C_TX_ABRT_SRC_ABRT_7B_ADDR_NOACK field value from a register. */
4134 #define ALT_I2C_TX_ABRT_SRC_ABRT_7B_ADDR_NOACK_GET(value) (((value) & 0x00000001) >> 0)
4135 /* Produces a ALT_I2C_TX_ABRT_SRC_ABRT_7B_ADDR_NOACK register field value suitable for setting the register. */
4136 #define ALT_I2C_TX_ABRT_SRC_ABRT_7B_ADDR_NOACK_SET(value) (((value) << 0) & 0x00000001)
4137 
4138 /*
4139  * Field : Master Abort 10 Bit Address Byte 1 - abrt_10addr1_noack
4140  * 
4141  * Master is in 10-bit address mode and the first 10-bit address byte was not
4142  * acknowledged by any slave. Role of i2c: Master-Transmitter or Master-Receiver
4143  * 
4144  * Field Access Macros:
4145  * 
4146  */
4147 /* The Least Significant Bit (LSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR1_NOACK register field. */
4148 #define ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR1_NOACK_LSB        1
4149 /* The Most Significant Bit (MSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR1_NOACK register field. */
4150 #define ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR1_NOACK_MSB        1
4151 /* The width in bits of the ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR1_NOACK register field. */
4152 #define ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR1_NOACK_WIDTH      1
4153 /* The mask used to set the ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR1_NOACK register field value. */
4154 #define ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR1_NOACK_SET_MSK    0x00000002
4155 /* The mask used to clear the ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR1_NOACK register field value. */
4156 #define ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR1_NOACK_CLR_MSK    0xfffffffd
4157 /* The reset value of the ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR1_NOACK register field. */
4158 #define ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR1_NOACK_RESET      0x0
4159 /* Extracts the ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR1_NOACK field value from a register. */
4160 #define ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR1_NOACK_GET(value) (((value) & 0x00000002) >> 1)
4161 /* Produces a ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR1_NOACK register field value suitable for setting the register. */
4162 #define ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR1_NOACK_SET(value) (((value) << 1) & 0x00000002)
4163 
4164 /*
4165  * Field : Master Abort 10 Bit Address Byte 2 - abrt_10addr2_noack
4166  * 
4167  * Master is in 10-bit address mode and the second address byte of the 10-bit
4168  * address was not acknowledged by any slave. Role of i2c: Master-Transmitter or
4169  * Master-Receiver
4170  * 
4171  * Field Access Macros:
4172  * 
4173  */
4174 /* The Least Significant Bit (LSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR2_NOACK register field. */
4175 #define ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR2_NOACK_LSB        2
4176 /* The Most Significant Bit (MSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR2_NOACK register field. */
4177 #define ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR2_NOACK_MSB        2
4178 /* The width in bits of the ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR2_NOACK register field. */
4179 #define ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR2_NOACK_WIDTH      1
4180 /* The mask used to set the ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR2_NOACK register field value. */
4181 #define ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR2_NOACK_SET_MSK    0x00000004
4182 /* The mask used to clear the ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR2_NOACK register field value. */
4183 #define ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR2_NOACK_CLR_MSK    0xfffffffb
4184 /* The reset value of the ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR2_NOACK register field. */
4185 #define ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR2_NOACK_RESET      0x0
4186 /* Extracts the ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR2_NOACK field value from a register. */
4187 #define ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR2_NOACK_GET(value) (((value) & 0x00000004) >> 2)
4188 /* Produces a ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR2_NOACK register field value suitable for setting the register. */
4189 #define ALT_I2C_TX_ABRT_SRC_ABRT_10ADDR2_NOACK_SET(value) (((value) << 2) & 0x00000004)
4190 
4191 /*
4192  * Field : Master Abort TX Noack Bit - abrt_txdata_noack
4193  * 
4194  * This is a master-mode only bit. Master has received an acknowledgement for the
4195  * address, but when it sent data byte(s) following the address, it did not receive
4196  * an acknowledge from the remote slave(s). Role of i2c: Master-Transmitter
4197  * 
4198  * Field Access Macros:
4199  * 
4200  */
4201 /* The Least Significant Bit (LSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_TXDATA_NOACK register field. */
4202 #define ALT_I2C_TX_ABRT_SRC_ABRT_TXDATA_NOACK_LSB        3
4203 /* The Most Significant Bit (MSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_TXDATA_NOACK register field. */
4204 #define ALT_I2C_TX_ABRT_SRC_ABRT_TXDATA_NOACK_MSB        3
4205 /* The width in bits of the ALT_I2C_TX_ABRT_SRC_ABRT_TXDATA_NOACK register field. */
4206 #define ALT_I2C_TX_ABRT_SRC_ABRT_TXDATA_NOACK_WIDTH      1
4207 /* The mask used to set the ALT_I2C_TX_ABRT_SRC_ABRT_TXDATA_NOACK register field value. */
4208 #define ALT_I2C_TX_ABRT_SRC_ABRT_TXDATA_NOACK_SET_MSK    0x00000008
4209 /* The mask used to clear the ALT_I2C_TX_ABRT_SRC_ABRT_TXDATA_NOACK register field value. */
4210 #define ALT_I2C_TX_ABRT_SRC_ABRT_TXDATA_NOACK_CLR_MSK    0xfffffff7
4211 /* The reset value of the ALT_I2C_TX_ABRT_SRC_ABRT_TXDATA_NOACK register field. */
4212 #define ALT_I2C_TX_ABRT_SRC_ABRT_TXDATA_NOACK_RESET      0x0
4213 /* Extracts the ALT_I2C_TX_ABRT_SRC_ABRT_TXDATA_NOACK field value from a register. */
4214 #define ALT_I2C_TX_ABRT_SRC_ABRT_TXDATA_NOACK_GET(value) (((value) & 0x00000008) >> 3)
4215 /* Produces a ALT_I2C_TX_ABRT_SRC_ABRT_TXDATA_NOACK register field value suitable for setting the register. */
4216 #define ALT_I2C_TX_ABRT_SRC_ABRT_TXDATA_NOACK_SET(value) (((value) << 3) & 0x00000008)
4217 
4218 /*
4219  * Field : Master Abort GC Noack Bit - abrt_gcall_noack
4220  * 
4221  * i2c in master mode sent a General Call and no slave on the bus acknowledged the
4222  * General Call. Role of i2c: Master-Transmitter
4223  * 
4224  * Field Access Macros:
4225  * 
4226  */
4227 /* The Least Significant Bit (LSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_NOACK register field. */
4228 #define ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_NOACK_LSB        4
4229 /* The Most Significant Bit (MSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_NOACK register field. */
4230 #define ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_NOACK_MSB        4
4231 /* The width in bits of the ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_NOACK register field. */
4232 #define ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_NOACK_WIDTH      1
4233 /* The mask used to set the ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_NOACK register field value. */
4234 #define ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_NOACK_SET_MSK    0x00000010
4235 /* The mask used to clear the ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_NOACK register field value. */
4236 #define ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_NOACK_CLR_MSK    0xffffffef
4237 /* The reset value of the ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_NOACK register field. */
4238 #define ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_NOACK_RESET      0x0
4239 /* Extracts the ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_NOACK field value from a register. */
4240 #define ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_NOACK_GET(value) (((value) & 0x00000010) >> 4)
4241 /* Produces a ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_NOACK register field value suitable for setting the register. */
4242 #define ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_NOACK_SET(value) (((value) << 4) & 0x00000010)
4243 
4244 /*
4245  * Field : Master Abort GC Read Bit - abrt_gcall_read
4246  * 
4247  * i2c in master mode sent a General Call but the user programmed the byte
4248  * following the General Call to be a read from the bus (IC_DATA_CMD[9] is set to
4249  * 1). Role of i2c: Master-Transmitter
4250  * 
4251  * Field Access Macros:
4252  * 
4253  */
4254 /* The Least Significant Bit (LSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_RD register field. */
4255 #define ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_RD_LSB        5
4256 /* The Most Significant Bit (MSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_RD register field. */
4257 #define ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_RD_MSB        5
4258 /* The width in bits of the ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_RD register field. */
4259 #define ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_RD_WIDTH      1
4260 /* The mask used to set the ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_RD register field value. */
4261 #define ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_RD_SET_MSK    0x00000020
4262 /* The mask used to clear the ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_RD register field value. */
4263 #define ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_RD_CLR_MSK    0xffffffdf
4264 /* The reset value of the ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_RD register field. */
4265 #define ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_RD_RESET      0x0
4266 /* Extracts the ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_RD field value from a register. */
4267 #define ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_RD_GET(value) (((value) & 0x00000020) >> 5)
4268 /* Produces a ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_RD register field value suitable for setting the register. */
4269 #define ALT_I2C_TX_ABRT_SRC_ABRT_GCALL_RD_SET(value) (((value) << 5) & 0x00000020)
4270 
4271 /*
4272  * Field : Master HS MC Ack - abrt_hs_ackdet
4273  * 
4274  * Master is in High Speed mode and the High Speed Master code was  acknowledged
4275  * (wrong behavior). Role of i2c: Master
4276  * 
4277  * Field Access Macros:
4278  * 
4279  */
4280 /* The Least Significant Bit (LSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_HS_ACKDET register field. */
4281 #define ALT_I2C_TX_ABRT_SRC_ABRT_HS_ACKDET_LSB        6
4282 /* The Most Significant Bit (MSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_HS_ACKDET register field. */
4283 #define ALT_I2C_TX_ABRT_SRC_ABRT_HS_ACKDET_MSB        6
4284 /* The width in bits of the ALT_I2C_TX_ABRT_SRC_ABRT_HS_ACKDET register field. */
4285 #define ALT_I2C_TX_ABRT_SRC_ABRT_HS_ACKDET_WIDTH      1
4286 /* The mask used to set the ALT_I2C_TX_ABRT_SRC_ABRT_HS_ACKDET register field value. */
4287 #define ALT_I2C_TX_ABRT_SRC_ABRT_HS_ACKDET_SET_MSK    0x00000040
4288 /* The mask used to clear the ALT_I2C_TX_ABRT_SRC_ABRT_HS_ACKDET register field value. */
4289 #define ALT_I2C_TX_ABRT_SRC_ABRT_HS_ACKDET_CLR_MSK    0xffffffbf
4290 /* The reset value of the ALT_I2C_TX_ABRT_SRC_ABRT_HS_ACKDET register field. */
4291 #define ALT_I2C_TX_ABRT_SRC_ABRT_HS_ACKDET_RESET      0x0
4292 /* Extracts the ALT_I2C_TX_ABRT_SRC_ABRT_HS_ACKDET field value from a register. */
4293 #define ALT_I2C_TX_ABRT_SRC_ABRT_HS_ACKDET_GET(value) (((value) & 0x00000040) >> 6)
4294 /* Produces a ALT_I2C_TX_ABRT_SRC_ABRT_HS_ACKDET register field value suitable for setting the register. */
4295 #define ALT_I2C_TX_ABRT_SRC_ABRT_HS_ACKDET_SET(value) (((value) << 6) & 0x00000040)
4296 
4297 /*
4298  * Field : Master Abort START Byte - abrt_sbyte_ackdet
4299  * 
4300  * Master has sent a START Byte and the START Byte was acknowledged (wrong
4301  * behavior). Role of i2c: Master
4302  * 
4303  * Field Access Macros:
4304  * 
4305  */
4306 /* The Least Significant Bit (LSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_ACKDET register field. */
4307 #define ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_ACKDET_LSB        7
4308 /* The Most Significant Bit (MSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_ACKDET register field. */
4309 #define ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_ACKDET_MSB        7
4310 /* The width in bits of the ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_ACKDET register field. */
4311 #define ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_ACKDET_WIDTH      1
4312 /* The mask used to set the ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_ACKDET register field value. */
4313 #define ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_ACKDET_SET_MSK    0x00000080
4314 /* The mask used to clear the ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_ACKDET register field value. */
4315 #define ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_ACKDET_CLR_MSK    0xffffff7f
4316 /* The reset value of the ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_ACKDET register field. */
4317 #define ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_ACKDET_RESET      0x0
4318 /* Extracts the ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_ACKDET field value from a register. */
4319 #define ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_ACKDET_GET(value) (((value) & 0x00000080) >> 7)
4320 /* Produces a ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_ACKDET register field value suitable for setting the register. */
4321 #define ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_ACKDET_SET(value) (((value) << 7) & 0x00000080)
4322 
4323 /*
4324  * Field : Master HS Restart Disabled - abrt_hs_norstrt
4325  * 
4326  * The restart is disabled (IC_RESTART_EN bit (IC_CON[5]) =0) and the user is
4327  * trying to use the master to transfer data in High Speed mode. Role of i2c:
4328  * Master-Transmitter or Master-Receiver
4329  * 
4330  * Field Access Macros:
4331  * 
4332  */
4333 /* The Least Significant Bit (LSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_HS_NORSTRT register field. */
4334 #define ALT_I2C_TX_ABRT_SRC_ABRT_HS_NORSTRT_LSB        8
4335 /* The Most Significant Bit (MSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_HS_NORSTRT register field. */
4336 #define ALT_I2C_TX_ABRT_SRC_ABRT_HS_NORSTRT_MSB        8
4337 /* The width in bits of the ALT_I2C_TX_ABRT_SRC_ABRT_HS_NORSTRT register field. */
4338 #define ALT_I2C_TX_ABRT_SRC_ABRT_HS_NORSTRT_WIDTH      1
4339 /* The mask used to set the ALT_I2C_TX_ABRT_SRC_ABRT_HS_NORSTRT register field value. */
4340 #define ALT_I2C_TX_ABRT_SRC_ABRT_HS_NORSTRT_SET_MSK    0x00000100
4341 /* The mask used to clear the ALT_I2C_TX_ABRT_SRC_ABRT_HS_NORSTRT register field value. */
4342 #define ALT_I2C_TX_ABRT_SRC_ABRT_HS_NORSTRT_CLR_MSK    0xfffffeff
4343 /* The reset value of the ALT_I2C_TX_ABRT_SRC_ABRT_HS_NORSTRT register field. */
4344 #define ALT_I2C_TX_ABRT_SRC_ABRT_HS_NORSTRT_RESET      0x0
4345 /* Extracts the ALT_I2C_TX_ABRT_SRC_ABRT_HS_NORSTRT field value from a register. */
4346 #define ALT_I2C_TX_ABRT_SRC_ABRT_HS_NORSTRT_GET(value) (((value) & 0x00000100) >> 8)
4347 /* Produces a ALT_I2C_TX_ABRT_SRC_ABRT_HS_NORSTRT register field value suitable for setting the register. */
4348 #define ALT_I2C_TX_ABRT_SRC_ABRT_HS_NORSTRT_SET(value) (((value) << 8) & 0x00000100)
4349 
4350 /*
4351  * Field : Master Abort START No Restart - abrt_sbyte_norstrt
4352  * 
4353  * To clear Bit 9, the source of then abrt_sbyte_norstrt must be fixed first;
4354  * restart must be enabled (ic_con[5]=1), the SPECIAL bit must be cleared
4355  * (ic_tar[11]), or the GC_OR_START bit must be cleared (ic_tar[10]). Once the
4356  * source of the abrt_sbyte_norstrt is fixed, then this bit can be cleared in the
4357  * same manner as other bits in this register. If the source of the
4358  * abrt_sbyte_norstrt is not fixed before attempting to clear this bit, bit 9
4359  * clears for one cycle and then gets reasserted. 1: The restart is disabled
4360  * (IC_RESTART_EN bit (ic_con[5]) =0) and the user is trying to send a START Byte.
4361  * Role of I2C: Master
4362  * 
4363  * Field Access Macros:
4364  * 
4365  */
4366 /* The Least Significant Bit (LSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_NORSTRT register field. */
4367 #define ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_NORSTRT_LSB        9
4368 /* The Most Significant Bit (MSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_NORSTRT register field. */
4369 #define ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_NORSTRT_MSB        9
4370 /* The width in bits of the ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_NORSTRT register field. */
4371 #define ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_NORSTRT_WIDTH      1
4372 /* The mask used to set the ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_NORSTRT register field value. */
4373 #define ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_NORSTRT_SET_MSK    0x00000200
4374 /* The mask used to clear the ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_NORSTRT register field value. */
4375 #define ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_NORSTRT_CLR_MSK    0xfffffdff
4376 /* The reset value of the ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_NORSTRT register field. */
4377 #define ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_NORSTRT_RESET      0x0
4378 /* Extracts the ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_NORSTRT field value from a register. */
4379 #define ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_NORSTRT_GET(value) (((value) & 0x00000200) >> 9)
4380 /* Produces a ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_NORSTRT register field value suitable for setting the register. */
4381 #define ALT_I2C_TX_ABRT_SRC_ABRT_SBYTE_NORSTRT_SET(value) (((value) << 9) & 0x00000200)
4382 
4383 /*
4384  * Field : Master Abort 10 Bit No Restart - abrt_10b_rd_norstrt
4385  * 
4386  * The restart is disabled (ic_restart_en bit (ic_con[5]) =0) and the master sends
4387  * a read command in 10-bit addressing mode. Role of I2C: Master-Receiver
4388  * 
4389  * Field Access Macros:
4390  * 
4391  */
4392 /* The Least Significant Bit (LSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_10B_RD_NORSTRT register field. */
4393 #define ALT_I2C_TX_ABRT_SRC_ABRT_10B_RD_NORSTRT_LSB        10
4394 /* The Most Significant Bit (MSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_10B_RD_NORSTRT register field. */
4395 #define ALT_I2C_TX_ABRT_SRC_ABRT_10B_RD_NORSTRT_MSB        10
4396 /* The width in bits of the ALT_I2C_TX_ABRT_SRC_ABRT_10B_RD_NORSTRT register field. */
4397 #define ALT_I2C_TX_ABRT_SRC_ABRT_10B_RD_NORSTRT_WIDTH      1
4398 /* The mask used to set the ALT_I2C_TX_ABRT_SRC_ABRT_10B_RD_NORSTRT register field value. */
4399 #define ALT_I2C_TX_ABRT_SRC_ABRT_10B_RD_NORSTRT_SET_MSK    0x00000400
4400 /* The mask used to clear the ALT_I2C_TX_ABRT_SRC_ABRT_10B_RD_NORSTRT register field value. */
4401 #define ALT_I2C_TX_ABRT_SRC_ABRT_10B_RD_NORSTRT_CLR_MSK    0xfffffbff
4402 /* The reset value of the ALT_I2C_TX_ABRT_SRC_ABRT_10B_RD_NORSTRT register field. */
4403 #define ALT_I2C_TX_ABRT_SRC_ABRT_10B_RD_NORSTRT_RESET      0x0
4404 /* Extracts the ALT_I2C_TX_ABRT_SRC_ABRT_10B_RD_NORSTRT field value from a register. */
4405 #define ALT_I2C_TX_ABRT_SRC_ABRT_10B_RD_NORSTRT_GET(value) (((value) & 0x00000400) >> 10)
4406 /* Produces a ALT_I2C_TX_ABRT_SRC_ABRT_10B_RD_NORSTRT register field value suitable for setting the register. */
4407 #define ALT_I2C_TX_ABRT_SRC_ABRT_10B_RD_NORSTRT_SET(value) (((value) << 10) & 0x00000400)
4408 
4409 /*
4410  * Field : Master Oper Master Dis - abrt_master_dis
4411  * 
4412  * User tries to initiate a Master operation with the Master mode disabled. Role of
4413  * I2C: Master-Transmitter or Master-Receiver
4414  * 
4415  * Field Access Macros:
4416  * 
4417  */
4418 /* The Least Significant Bit (LSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_MST_DIS register field. */
4419 #define ALT_I2C_TX_ABRT_SRC_ABRT_MST_DIS_LSB        11
4420 /* The Most Significant Bit (MSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_MST_DIS register field. */
4421 #define ALT_I2C_TX_ABRT_SRC_ABRT_MST_DIS_MSB        11
4422 /* The width in bits of the ALT_I2C_TX_ABRT_SRC_ABRT_MST_DIS register field. */
4423 #define ALT_I2C_TX_ABRT_SRC_ABRT_MST_DIS_WIDTH      1
4424 /* The mask used to set the ALT_I2C_TX_ABRT_SRC_ABRT_MST_DIS register field value. */
4425 #define ALT_I2C_TX_ABRT_SRC_ABRT_MST_DIS_SET_MSK    0x00000800
4426 /* The mask used to clear the ALT_I2C_TX_ABRT_SRC_ABRT_MST_DIS register field value. */
4427 #define ALT_I2C_TX_ABRT_SRC_ABRT_MST_DIS_CLR_MSK    0xfffff7ff
4428 /* The reset value of the ALT_I2C_TX_ABRT_SRC_ABRT_MST_DIS register field. */
4429 #define ALT_I2C_TX_ABRT_SRC_ABRT_MST_DIS_RESET      0x0
4430 /* Extracts the ALT_I2C_TX_ABRT_SRC_ABRT_MST_DIS field value from a register. */
4431 #define ALT_I2C_TX_ABRT_SRC_ABRT_MST_DIS_GET(value) (((value) & 0x00000800) >> 11)
4432 /* Produces a ALT_I2C_TX_ABRT_SRC_ABRT_MST_DIS register field value suitable for setting the register. */
4433 #define ALT_I2C_TX_ABRT_SRC_ABRT_MST_DIS_SET(value) (((value) << 11) & 0x00000800)
4434 
4435 /*
4436  * Field : Master Abort Arbitration Lost - arb_lost
4437  * 
4438  * Master has lost arbitration, or if IC_TX_ABRT_SOURCE[14] is also set, then the
4439  * slave transmitter has lost arbitration. Note: I2C can be both master and slave
4440  * at the same time. Role of i2c: Master-Transmitter or Slave-Transmitter
4441  * 
4442  * Field Access Macros:
4443  * 
4444  */
4445 /* The Least Significant Bit (LSB) position of the ALT_I2C_TX_ABRT_SRC_ARB_LOST register field. */
4446 #define ALT_I2C_TX_ABRT_SRC_ARB_LOST_LSB        12
4447 /* The Most Significant Bit (MSB) position of the ALT_I2C_TX_ABRT_SRC_ARB_LOST register field. */
4448 #define ALT_I2C_TX_ABRT_SRC_ARB_LOST_MSB        12
4449 /* The width in bits of the ALT_I2C_TX_ABRT_SRC_ARB_LOST register field. */
4450 #define ALT_I2C_TX_ABRT_SRC_ARB_LOST_WIDTH      1
4451 /* The mask used to set the ALT_I2C_TX_ABRT_SRC_ARB_LOST register field value. */
4452 #define ALT_I2C_TX_ABRT_SRC_ARB_LOST_SET_MSK    0x00001000
4453 /* The mask used to clear the ALT_I2C_TX_ABRT_SRC_ARB_LOST register field value. */
4454 #define ALT_I2C_TX_ABRT_SRC_ARB_LOST_CLR_MSK    0xffffefff
4455 /* The reset value of the ALT_I2C_TX_ABRT_SRC_ARB_LOST register field. */
4456 #define ALT_I2C_TX_ABRT_SRC_ARB_LOST_RESET      0x0
4457 /* Extracts the ALT_I2C_TX_ABRT_SRC_ARB_LOST field value from a register. */
4458 #define ALT_I2C_TX_ABRT_SRC_ARB_LOST_GET(value) (((value) & 0x00001000) >> 12)
4459 /* Produces a ALT_I2C_TX_ABRT_SRC_ARB_LOST register field value suitable for setting the register. */
4460 #define ALT_I2C_TX_ABRT_SRC_ARB_LOST_SET(value) (((value) << 12) & 0x00001000)
4461 
4462 /*
4463  * Field : Slave Abort Flush TXFIFO - abrt_slvflush_txfifo
4464  * 
4465  * Slave has received a read command and some data exists in the TX FIFO so the
4466  * slave issues a TX_ABRT interrupt to flush old data in TX FIFO. Role of I2C:
4467  * Slave-Transmitter
4468  * 
4469  * Field Access Macros:
4470  * 
4471  */
4472 /* The Least Significant Bit (LSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_SLVFLUSH_TXFIFO register field. */
4473 #define ALT_I2C_TX_ABRT_SRC_ABRT_SLVFLUSH_TXFIFO_LSB        13
4474 /* The Most Significant Bit (MSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_SLVFLUSH_TXFIFO register field. */
4475 #define ALT_I2C_TX_ABRT_SRC_ABRT_SLVFLUSH_TXFIFO_MSB        13
4476 /* The width in bits of the ALT_I2C_TX_ABRT_SRC_ABRT_SLVFLUSH_TXFIFO register field. */
4477 #define ALT_I2C_TX_ABRT_SRC_ABRT_SLVFLUSH_TXFIFO_WIDTH      1
4478 /* The mask used to set the ALT_I2C_TX_ABRT_SRC_ABRT_SLVFLUSH_TXFIFO register field value. */
4479 #define ALT_I2C_TX_ABRT_SRC_ABRT_SLVFLUSH_TXFIFO_SET_MSK    0x00002000
4480 /* The mask used to clear the ALT_I2C_TX_ABRT_SRC_ABRT_SLVFLUSH_TXFIFO register field value. */
4481 #define ALT_I2C_TX_ABRT_SRC_ABRT_SLVFLUSH_TXFIFO_CLR_MSK    0xffffdfff
4482 /* The reset value of the ALT_I2C_TX_ABRT_SRC_ABRT_SLVFLUSH_TXFIFO register field. */
4483 #define ALT_I2C_TX_ABRT_SRC_ABRT_SLVFLUSH_TXFIFO_RESET      0x0
4484 /* Extracts the ALT_I2C_TX_ABRT_SRC_ABRT_SLVFLUSH_TXFIFO field value from a register. */
4485 #define ALT_I2C_TX_ABRT_SRC_ABRT_SLVFLUSH_TXFIFO_GET(value) (((value) & 0x00002000) >> 13)
4486 /* Produces a ALT_I2C_TX_ABRT_SRC_ABRT_SLVFLUSH_TXFIFO register field value suitable for setting the register. */
4487 #define ALT_I2C_TX_ABRT_SRC_ABRT_SLVFLUSH_TXFIFO_SET(value) (((value) << 13) & 0x00002000)
4488 
4489 /*
4490  * Field : Slave Abort Arbitration Lost - abrt_slv_arblost
4491  * 
4492  * Slave lost the bus while transmitting data to a remote master.
4493  * IC_TX_ABRT_SOURCE[12] is set at the same time. Note: Even though the slave never
4494  * 'owns' the bus, something could go wrong on the bus. This is a fail safe check.
4495  * For instance, during a data transmission at the low-to-high transition of SCL,
4496  * if what is on the data bus is not what is supposed to be transmitted, then i2c
4497  * no longer own the bus. Role of I2C: Slave-Transmitter
4498  * 
4499  * Field Access Macros:
4500  * 
4501  */
4502 /* The Least Significant Bit (LSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_SLV_ARBLOST register field. */
4503 #define ALT_I2C_TX_ABRT_SRC_ABRT_SLV_ARBLOST_LSB        14
4504 /* The Most Significant Bit (MSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_SLV_ARBLOST register field. */
4505 #define ALT_I2C_TX_ABRT_SRC_ABRT_SLV_ARBLOST_MSB        14
4506 /* The width in bits of the ALT_I2C_TX_ABRT_SRC_ABRT_SLV_ARBLOST register field. */
4507 #define ALT_I2C_TX_ABRT_SRC_ABRT_SLV_ARBLOST_WIDTH      1
4508 /* The mask used to set the ALT_I2C_TX_ABRT_SRC_ABRT_SLV_ARBLOST register field value. */
4509 #define ALT_I2C_TX_ABRT_SRC_ABRT_SLV_ARBLOST_SET_MSK    0x00004000
4510 /* The mask used to clear the ALT_I2C_TX_ABRT_SRC_ABRT_SLV_ARBLOST register field value. */
4511 #define ALT_I2C_TX_ABRT_SRC_ABRT_SLV_ARBLOST_CLR_MSK    0xffffbfff
4512 /* The reset value of the ALT_I2C_TX_ABRT_SRC_ABRT_SLV_ARBLOST register field. */
4513 #define ALT_I2C_TX_ABRT_SRC_ABRT_SLV_ARBLOST_RESET      0x0
4514 /* Extracts the ALT_I2C_TX_ABRT_SRC_ABRT_SLV_ARBLOST field value from a register. */
4515 #define ALT_I2C_TX_ABRT_SRC_ABRT_SLV_ARBLOST_GET(value) (((value) & 0x00004000) >> 14)
4516 /* Produces a ALT_I2C_TX_ABRT_SRC_ABRT_SLV_ARBLOST register field value suitable for setting the register. */
4517 #define ALT_I2C_TX_ABRT_SRC_ABRT_SLV_ARBLOST_SET(value) (((value) << 14) & 0x00004000)
4518 
4519 /*
4520  * Field : Slave Abort Read TX - abrt_slvrd_intx
4521  * 
4522  * When the processor side responds to a slave mode request for data to be
4523  * transmitted to a remote master and user writes a 1 in CMD (bit 8) of IC_DATA_CMD
4524  * register. Role of I2C: Slave-Transmitter
4525  * 
4526  * Field Access Macros:
4527  * 
4528  */
4529 /* The Least Significant Bit (LSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_SLVRD_INTX register field. */
4530 #define ALT_I2C_TX_ABRT_SRC_ABRT_SLVRD_INTX_LSB        15
4531 /* The Most Significant Bit (MSB) position of the ALT_I2C_TX_ABRT_SRC_ABRT_SLVRD_INTX register field. */
4532 #define ALT_I2C_TX_ABRT_SRC_ABRT_SLVRD_INTX_MSB        15
4533 /* The width in bits of the ALT_I2C_TX_ABRT_SRC_ABRT_SLVRD_INTX register field. */
4534 #define ALT_I2C_TX_ABRT_SRC_ABRT_SLVRD_INTX_WIDTH      1
4535 /* The mask used to set the ALT_I2C_TX_ABRT_SRC_ABRT_SLVRD_INTX register field value. */
4536 #define ALT_I2C_TX_ABRT_SRC_ABRT_SLVRD_INTX_SET_MSK    0x00008000
4537 /* The mask used to clear the ALT_I2C_TX_ABRT_SRC_ABRT_SLVRD_INTX register field value. */
4538 #define ALT_I2C_TX_ABRT_SRC_ABRT_SLVRD_INTX_CLR_MSK    0xffff7fff
4539 /* The reset value of the ALT_I2C_TX_ABRT_SRC_ABRT_SLVRD_INTX register field. */
4540 #define ALT_I2C_TX_ABRT_SRC_ABRT_SLVRD_INTX_RESET      0x0
4541 /* Extracts the ALT_I2C_TX_ABRT_SRC_ABRT_SLVRD_INTX field value from a register. */
4542 #define ALT_I2C_TX_ABRT_SRC_ABRT_SLVRD_INTX_GET(value) (((value) & 0x00008000) >> 15)
4543 /* Produces a ALT_I2C_TX_ABRT_SRC_ABRT_SLVRD_INTX register field value suitable for setting the register. */
4544 #define ALT_I2C_TX_ABRT_SRC_ABRT_SLVRD_INTX_SET(value) (((value) << 15) & 0x00008000)
4545 
4546 #ifndef __ASSEMBLY__
4547 /*
4548  * WARNING: The C register and register group struct declarations are provided for
4549  * convenience and illustrative purposes. They should, however, be used with
4550  * caution as the C language standard provides no guarantees about the alignment or
4551  * atomicity of device memory accesses. The recommended practice for writing
4552  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
4553  * alt_write_word() functions.
4554  * 
4555  * The struct declaration for register ALT_I2C_TX_ABRT_SRC.
4556  */
4557 struct ALT_I2C_TX_ABRT_SRC_s
4558 {
4559     uint32_t  abrt_7b_addr_noack   :  1;  /* Master Abort 7 Bit Address */
4560     uint32_t  abrt_10addr1_noack   :  1;  /* Master Abort 10 Bit Address Byte 1 */
4561     uint32_t  abrt_10addr2_noack   :  1;  /* Master Abort 10 Bit Address Byte 2 */
4562     uint32_t  abrt_txdata_noack    :  1;  /* Master Abort TX Noack Bit */
4563     uint32_t  abrt_gcall_noack     :  1;  /* Master Abort GC Noack Bit */
4564     uint32_t  abrt_gcall_read      :  1;  /* Master Abort GC Read Bit */
4565     uint32_t  abrt_hs_ackdet       :  1;  /* Master HS MC Ack */
4566     uint32_t  abrt_sbyte_ackdet    :  1;  /* Master Abort START Byte */
4567     uint32_t  abrt_hs_norstrt      :  1;  /* Master HS Restart Disabled */
4568     uint32_t  abrt_sbyte_norstrt   :  1;  /* Master Abort START No Restart */
4569     uint32_t  abrt_10b_rd_norstrt  :  1;  /* Master Abort 10 Bit No Restart */
4570     uint32_t  abrt_master_dis      :  1;  /* Master Oper Master Dis */
4571     uint32_t  arb_lost             :  1;  /* Master Abort Arbitration Lost */
4572     uint32_t  abrt_slvflush_txfifo :  1;  /* Slave Abort Flush TXFIFO */
4573     uint32_t  abrt_slv_arblost     :  1;  /* Slave Abort Arbitration Lost */
4574     uint32_t  abrt_slvrd_intx      :  1;  /* Slave Abort Read TX */
4575     uint32_t                       : 16;  /* *UNDEFINED* */
4576 };
4577 
4578 /* The typedef declaration for register ALT_I2C_TX_ABRT_SRC. */
4579 typedef volatile struct ALT_I2C_TX_ABRT_SRC_s  ALT_I2C_TX_ABRT_SRC_t;
4580 #endif  /* __ASSEMBLY__ */
4581 
4582 /* The byte offset of the ALT_I2C_TX_ABRT_SRC register from the beginning of the component. */
4583 #define ALT_I2C_TX_ABRT_SRC_OFST        0x80
4584 /* The address of the ALT_I2C_TX_ABRT_SRC register. */
4585 #define ALT_I2C_TX_ABRT_SRC_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_TX_ABRT_SRC_OFST))
4586 
4587 /*
4588  * Register : Generate Slave Data NACK - ic_slv_data_nack_only
4589  * 
4590  * The register is used to generate a NACK for the data part of a transfer when i2c
4591  * is acting as a slave-receiver.
4592  * 
4593  * Register Layout
4594  * 
4595  *  Bits   | Access | Reset | Description      
4596  * :-------|:-------|:------|:------------------
4597  *  [0]    | RW     | 0x0   | Generate Nack Bit
4598  *  [31:1] | ???    | 0x0   | *UNDEFINED*      
4599  * 
4600  */
4601 /*
4602  * Field : Generate Nack Bit - nack
4603  * 
4604  * This Bit control Nack generation
4605  * 
4606  * Field Enumeration Values:
4607  * 
4608  *  Enum                                         | Value | Description                          
4609  * :---------------------------------------------|:------|:--------------------------------------
4610  *  ALT_I2C_SLV_DATA_NACK_ONLY_NACK_E_AFTERDBYTE | 0x1   | Generate NACK after data byte receive
4611  *  ALT_I2C_SLV_DATA_NACK_ONLY_NACK_E_NORM       | 0x0   | Generate NACK/ACK normally           
4612  * 
4613  * Field Access Macros:
4614  * 
4615  */
4616 /*
4617  * Enumerated value for register field ALT_I2C_SLV_DATA_NACK_ONLY_NACK
4618  * 
4619  * Generate NACK after data byte receive
4620  */
4621 #define ALT_I2C_SLV_DATA_NACK_ONLY_NACK_E_AFTERDBYTE    0x1
4622 /*
4623  * Enumerated value for register field ALT_I2C_SLV_DATA_NACK_ONLY_NACK
4624  * 
4625  * Generate NACK/ACK normally
4626  */
4627 #define ALT_I2C_SLV_DATA_NACK_ONLY_NACK_E_NORM          0x0
4628 
4629 /* The Least Significant Bit (LSB) position of the ALT_I2C_SLV_DATA_NACK_ONLY_NACK register field. */
4630 #define ALT_I2C_SLV_DATA_NACK_ONLY_NACK_LSB        0
4631 /* The Most Significant Bit (MSB) position of the ALT_I2C_SLV_DATA_NACK_ONLY_NACK register field. */
4632 #define ALT_I2C_SLV_DATA_NACK_ONLY_NACK_MSB        0
4633 /* The width in bits of the ALT_I2C_SLV_DATA_NACK_ONLY_NACK register field. */
4634 #define ALT_I2C_SLV_DATA_NACK_ONLY_NACK_WIDTH      1
4635 /* The mask used to set the ALT_I2C_SLV_DATA_NACK_ONLY_NACK register field value. */
4636 #define ALT_I2C_SLV_DATA_NACK_ONLY_NACK_SET_MSK    0x00000001
4637 /* The mask used to clear the ALT_I2C_SLV_DATA_NACK_ONLY_NACK register field value. */
4638 #define ALT_I2C_SLV_DATA_NACK_ONLY_NACK_CLR_MSK    0xfffffffe
4639 /* The reset value of the ALT_I2C_SLV_DATA_NACK_ONLY_NACK register field. */
4640 #define ALT_I2C_SLV_DATA_NACK_ONLY_NACK_RESET      0x0
4641 /* Extracts the ALT_I2C_SLV_DATA_NACK_ONLY_NACK field value from a register. */
4642 #define ALT_I2C_SLV_DATA_NACK_ONLY_NACK_GET(value) (((value) & 0x00000001) >> 0)
4643 /* Produces a ALT_I2C_SLV_DATA_NACK_ONLY_NACK register field value suitable for setting the register. */
4644 #define ALT_I2C_SLV_DATA_NACK_ONLY_NACK_SET(value) (((value) << 0) & 0x00000001)
4645 
4646 #ifndef __ASSEMBLY__
4647 /*
4648  * WARNING: The C register and register group struct declarations are provided for
4649  * convenience and illustrative purposes. They should, however, be used with
4650  * caution as the C language standard provides no guarantees about the alignment or
4651  * atomicity of device memory accesses. The recommended practice for writing
4652  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
4653  * alt_write_word() functions.
4654  * 
4655  * The struct declaration for register ALT_I2C_SLV_DATA_NACK_ONLY.
4656  */
4657 struct ALT_I2C_SLV_DATA_NACK_ONLY_s
4658 {
4659     uint32_t  nack :  1;  /* Generate Nack Bit */
4660     uint32_t       : 31;  /* *UNDEFINED* */
4661 };
4662 
4663 /* The typedef declaration for register ALT_I2C_SLV_DATA_NACK_ONLY. */
4664 typedef volatile struct ALT_I2C_SLV_DATA_NACK_ONLY_s  ALT_I2C_SLV_DATA_NACK_ONLY_t;
4665 #endif  /* __ASSEMBLY__ */
4666 
4667 /* The byte offset of the ALT_I2C_SLV_DATA_NACK_ONLY register from the beginning of the component. */
4668 #define ALT_I2C_SLV_DATA_NACK_ONLY_OFST        0x84
4669 /* The address of the ALT_I2C_SLV_DATA_NACK_ONLY register. */
4670 #define ALT_I2C_SLV_DATA_NACK_ONLY_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_SLV_DATA_NACK_ONLY_OFST))
4671 
4672 /*
4673  * Register : DMA Control - ic_dma_cr
4674  * 
4675  * The register is used to enable the DMA Controller interface operation. There is
4676  * a separate bit for transmit and receive. This can be programmed regardless of
4677  * the state of IC_ENABLE.
4678  * 
4679  * Register Layout
4680  * 
4681  *  Bits   | Access | Reset | Description            
4682  * :-------|:-------|:------|:------------------------
4683  *  [0]    | RW     | 0x0   | Receive DMA Enable Bit 
4684  *  [1]    | RW     | 0x0   | Transmit DMA Enable Bit
4685  *  [31:2] | ???    | 0x0   | *UNDEFINED*            
4686  * 
4687  */
4688 /*
4689  * Field : Receive DMA Enable Bit - rdmae
4690  * 
4691  * This bit enables/disables the receive FIFO DMA channel.
4692  * 
4693  * Field Enumeration Values:
4694  * 
4695  *  Enum                       | Value | Description        
4696  * :---------------------------|:------|:--------------------
4697  *  ALT_I2C_DMA_CR_RDMAE_E_DIS | 0x0   | Receive DMA disable
4698  *  ALT_I2C_DMA_CR_RDMAE_E_EN  | 0x1   | Receive DMA enabled
4699  * 
4700  * Field Access Macros:
4701  * 
4702  */
4703 /*
4704  * Enumerated value for register field ALT_I2C_DMA_CR_RDMAE
4705  * 
4706  * Receive DMA disable
4707  */
4708 #define ALT_I2C_DMA_CR_RDMAE_E_DIS  0x0
4709 /*
4710  * Enumerated value for register field ALT_I2C_DMA_CR_RDMAE
4711  * 
4712  * Receive DMA enabled
4713  */
4714 #define ALT_I2C_DMA_CR_RDMAE_E_EN   0x1
4715 
4716 /* The Least Significant Bit (LSB) position of the ALT_I2C_DMA_CR_RDMAE register field. */
4717 #define ALT_I2C_DMA_CR_RDMAE_LSB        0
4718 /* The Most Significant Bit (MSB) position of the ALT_I2C_DMA_CR_RDMAE register field. */
4719 #define ALT_I2C_DMA_CR_RDMAE_MSB        0
4720 /* The width in bits of the ALT_I2C_DMA_CR_RDMAE register field. */
4721 #define ALT_I2C_DMA_CR_RDMAE_WIDTH      1
4722 /* The mask used to set the ALT_I2C_DMA_CR_RDMAE register field value. */
4723 #define ALT_I2C_DMA_CR_RDMAE_SET_MSK    0x00000001
4724 /* The mask used to clear the ALT_I2C_DMA_CR_RDMAE register field value. */
4725 #define ALT_I2C_DMA_CR_RDMAE_CLR_MSK    0xfffffffe
4726 /* The reset value of the ALT_I2C_DMA_CR_RDMAE register field. */
4727 #define ALT_I2C_DMA_CR_RDMAE_RESET      0x0
4728 /* Extracts the ALT_I2C_DMA_CR_RDMAE field value from a register. */
4729 #define ALT_I2C_DMA_CR_RDMAE_GET(value) (((value) & 0x00000001) >> 0)
4730 /* Produces a ALT_I2C_DMA_CR_RDMAE register field value suitable for setting the register. */
4731 #define ALT_I2C_DMA_CR_RDMAE_SET(value) (((value) << 0) & 0x00000001)
4732 
4733 /*
4734  * Field : Transmit DMA Enable Bit - tdmae
4735  * 
4736  * This bit enables/disables the transmit FIFO DMA channel.
4737  * 
4738  * Field Enumeration Values:
4739  * 
4740  *  Enum                       | Value | Description         
4741  * :---------------------------|:------|:---------------------
4742  *  ALT_I2C_DMA_CR_TDMAE_E_DIS | 0x0   | Transmit DMA disable
4743  *  ALT_I2C_DMA_CR_TDMAE_E_EN  | 0x1   | Transmit DMA enabled
4744  * 
4745  * Field Access Macros:
4746  * 
4747  */
4748 /*
4749  * Enumerated value for register field ALT_I2C_DMA_CR_TDMAE
4750  * 
4751  * Transmit DMA disable
4752  */
4753 #define ALT_I2C_DMA_CR_TDMAE_E_DIS  0x0
4754 /*
4755  * Enumerated value for register field ALT_I2C_DMA_CR_TDMAE
4756  * 
4757  * Transmit DMA enabled
4758  */
4759 #define ALT_I2C_DMA_CR_TDMAE_E_EN   0x1
4760 
4761 /* The Least Significant Bit (LSB) position of the ALT_I2C_DMA_CR_TDMAE register field. */
4762 #define ALT_I2C_DMA_CR_TDMAE_LSB        1
4763 /* The Most Significant Bit (MSB) position of the ALT_I2C_DMA_CR_TDMAE register field. */
4764 #define ALT_I2C_DMA_CR_TDMAE_MSB        1
4765 /* The width in bits of the ALT_I2C_DMA_CR_TDMAE register field. */
4766 #define ALT_I2C_DMA_CR_TDMAE_WIDTH      1
4767 /* The mask used to set the ALT_I2C_DMA_CR_TDMAE register field value. */
4768 #define ALT_I2C_DMA_CR_TDMAE_SET_MSK    0x00000002
4769 /* The mask used to clear the ALT_I2C_DMA_CR_TDMAE register field value. */
4770 #define ALT_I2C_DMA_CR_TDMAE_CLR_MSK    0xfffffffd
4771 /* The reset value of the ALT_I2C_DMA_CR_TDMAE register field. */
4772 #define ALT_I2C_DMA_CR_TDMAE_RESET      0x0
4773 /* Extracts the ALT_I2C_DMA_CR_TDMAE field value from a register. */
4774 #define ALT_I2C_DMA_CR_TDMAE_GET(value) (((value) & 0x00000002) >> 1)
4775 /* Produces a ALT_I2C_DMA_CR_TDMAE register field value suitable for setting the register. */
4776 #define ALT_I2C_DMA_CR_TDMAE_SET(value) (((value) << 1) & 0x00000002)
4777 
4778 #ifndef __ASSEMBLY__
4779 /*
4780  * WARNING: The C register and register group struct declarations are provided for
4781  * convenience and illustrative purposes. They should, however, be used with
4782  * caution as the C language standard provides no guarantees about the alignment or
4783  * atomicity of device memory accesses. The recommended practice for writing
4784  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
4785  * alt_write_word() functions.
4786  * 
4787  * The struct declaration for register ALT_I2C_DMA_CR.
4788  */
4789 struct ALT_I2C_DMA_CR_s
4790 {
4791     uint32_t  rdmae :  1;  /* Receive DMA Enable Bit */
4792     uint32_t  tdmae :  1;  /* Transmit DMA Enable Bit */
4793     uint32_t        : 30;  /* *UNDEFINED* */
4794 };
4795 
4796 /* The typedef declaration for register ALT_I2C_DMA_CR. */
4797 typedef volatile struct ALT_I2C_DMA_CR_s  ALT_I2C_DMA_CR_t;
4798 #endif  /* __ASSEMBLY__ */
4799 
4800 /* The byte offset of the ALT_I2C_DMA_CR register from the beginning of the component. */
4801 #define ALT_I2C_DMA_CR_OFST        0x88
4802 /* The address of the ALT_I2C_DMA_CR register. */
4803 #define ALT_I2C_DMA_CR_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_DMA_CR_OFST))
4804 
4805 /*
4806  * Register : DMA Transmit Data Level - ic_dma_tdlr
4807  * 
4808  * This register supports DMA Transmit Operation.
4809  * 
4810  * Register Layout
4811  * 
4812  *  Bits   | Access | Reset | Description                
4813  * :-------|:-------|:------|:----------------------------
4814  *  [5:0]  | RW     | 0x0   | DMA Transmit Data Level Bit
4815  *  [31:6] | ???    | 0x0   | *UNDEFINED*                
4816  * 
4817  */
4818 /*
4819  * Field : DMA Transmit Data Level Bit - dmatdl
4820  * 
4821  * This bit field controls the level at which a DMA request is made by the transmit
4822  * logic. It is equal to the watermark level; that is, the i2c_dma_tx_req signal is
4823  * generated when the number of valid data entries in the transmit FIFO is equal to
4824  * or below this field value, and TDMAE = 1.
4825  * 
4826  * Field Access Macros:
4827  * 
4828  */
4829 /* The Least Significant Bit (LSB) position of the ALT_I2C_DMA_TDLR_DMATDL register field. */
4830 #define ALT_I2C_DMA_TDLR_DMATDL_LSB        0
4831 /* The Most Significant Bit (MSB) position of the ALT_I2C_DMA_TDLR_DMATDL register field. */
4832 #define ALT_I2C_DMA_TDLR_DMATDL_MSB        5
4833 /* The width in bits of the ALT_I2C_DMA_TDLR_DMATDL register field. */
4834 #define ALT_I2C_DMA_TDLR_DMATDL_WIDTH      6
4835 /* The mask used to set the ALT_I2C_DMA_TDLR_DMATDL register field value. */
4836 #define ALT_I2C_DMA_TDLR_DMATDL_SET_MSK    0x0000003f
4837 /* The mask used to clear the ALT_I2C_DMA_TDLR_DMATDL register field value. */
4838 #define ALT_I2C_DMA_TDLR_DMATDL_CLR_MSK    0xffffffc0
4839 /* The reset value of the ALT_I2C_DMA_TDLR_DMATDL register field. */
4840 #define ALT_I2C_DMA_TDLR_DMATDL_RESET      0x0
4841 /* Extracts the ALT_I2C_DMA_TDLR_DMATDL field value from a register. */
4842 #define ALT_I2C_DMA_TDLR_DMATDL_GET(value) (((value) & 0x0000003f) >> 0)
4843 /* Produces a ALT_I2C_DMA_TDLR_DMATDL register field value suitable for setting the register. */
4844 #define ALT_I2C_DMA_TDLR_DMATDL_SET(value) (((value) << 0) & 0x0000003f)
4845 
4846 #ifndef __ASSEMBLY__
4847 /*
4848  * WARNING: The C register and register group struct declarations are provided for
4849  * convenience and illustrative purposes. They should, however, be used with
4850  * caution as the C language standard provides no guarantees about the alignment or
4851  * atomicity of device memory accesses. The recommended practice for writing
4852  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
4853  * alt_write_word() functions.
4854  * 
4855  * The struct declaration for register ALT_I2C_DMA_TDLR.
4856  */
4857 struct ALT_I2C_DMA_TDLR_s
4858 {
4859     uint32_t  dmatdl :  6;  /* DMA Transmit Data Level Bit */
4860     uint32_t         : 26;  /* *UNDEFINED* */
4861 };
4862 
4863 /* The typedef declaration for register ALT_I2C_DMA_TDLR. */
4864 typedef volatile struct ALT_I2C_DMA_TDLR_s  ALT_I2C_DMA_TDLR_t;
4865 #endif  /* __ASSEMBLY__ */
4866 
4867 /* The byte offset of the ALT_I2C_DMA_TDLR register from the beginning of the component. */
4868 #define ALT_I2C_DMA_TDLR_OFST        0x8c
4869 /* The address of the ALT_I2C_DMA_TDLR register. */
4870 #define ALT_I2C_DMA_TDLR_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_DMA_TDLR_OFST))
4871 
4872 /*
4873  * Register : Receive Data Level - ic_dma_rdlr
4874  * 
4875  * DMA Control Signals Interface.
4876  * 
4877  * Register Layout
4878  * 
4879  *  Bits   | Access | Reset | Description            
4880  * :-------|:-------|:------|:------------------------
4881  *  [5:0]  | RW     | 0x0   | Receive Data Level Bits
4882  *  [31:6] | ???    | 0x0   | *UNDEFINED*            
4883  * 
4884  */
4885 /*
4886  * Field : Receive Data Level Bits - dmardl
4887  * 
4888  * This bit field controls the level at which a DMA request is made by the receive
4889  * logic. The watermark level \= DMARDL+1; that is, dma_rx_req is generated when
4890  * the number of valid data entries in the receive FIFO is equal to or more than
4891  * this field value + 1, and RDMAE =1. For instance, when DMARDL is 0, then
4892  * dma_rx_req is asserted when or more data entries are present in the receive
4893  * FIFO.
4894  * 
4895  * Field Access Macros:
4896  * 
4897  */
4898 /* The Least Significant Bit (LSB) position of the ALT_I2C_DMA_RDLR_DMARDL register field. */
4899 #define ALT_I2C_DMA_RDLR_DMARDL_LSB        0
4900 /* The Most Significant Bit (MSB) position of the ALT_I2C_DMA_RDLR_DMARDL register field. */
4901 #define ALT_I2C_DMA_RDLR_DMARDL_MSB        5
4902 /* The width in bits of the ALT_I2C_DMA_RDLR_DMARDL register field. */
4903 #define ALT_I2C_DMA_RDLR_DMARDL_WIDTH      6
4904 /* The mask used to set the ALT_I2C_DMA_RDLR_DMARDL register field value. */
4905 #define ALT_I2C_DMA_RDLR_DMARDL_SET_MSK    0x0000003f
4906 /* The mask used to clear the ALT_I2C_DMA_RDLR_DMARDL register field value. */
4907 #define ALT_I2C_DMA_RDLR_DMARDL_CLR_MSK    0xffffffc0
4908 /* The reset value of the ALT_I2C_DMA_RDLR_DMARDL register field. */
4909 #define ALT_I2C_DMA_RDLR_DMARDL_RESET      0x0
4910 /* Extracts the ALT_I2C_DMA_RDLR_DMARDL field value from a register. */
4911 #define ALT_I2C_DMA_RDLR_DMARDL_GET(value) (((value) & 0x0000003f) >> 0)
4912 /* Produces a ALT_I2C_DMA_RDLR_DMARDL register field value suitable for setting the register. */
4913 #define ALT_I2C_DMA_RDLR_DMARDL_SET(value) (((value) << 0) & 0x0000003f)
4914 
4915 #ifndef __ASSEMBLY__
4916 /*
4917  * WARNING: The C register and register group struct declarations are provided for
4918  * convenience and illustrative purposes. They should, however, be used with
4919  * caution as the C language standard provides no guarantees about the alignment or
4920  * atomicity of device memory accesses. The recommended practice for writing
4921  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
4922  * alt_write_word() functions.
4923  * 
4924  * The struct declaration for register ALT_I2C_DMA_RDLR.
4925  */
4926 struct ALT_I2C_DMA_RDLR_s
4927 {
4928     uint32_t  dmardl :  6;  /* Receive Data Level Bits */
4929     uint32_t         : 26;  /* *UNDEFINED* */
4930 };
4931 
4932 /* The typedef declaration for register ALT_I2C_DMA_RDLR. */
4933 typedef volatile struct ALT_I2C_DMA_RDLR_s  ALT_I2C_DMA_RDLR_t;
4934 #endif  /* __ASSEMBLY__ */
4935 
4936 /* The byte offset of the ALT_I2C_DMA_RDLR register from the beginning of the component. */
4937 #define ALT_I2C_DMA_RDLR_OFST        0x90
4938 /* The address of the ALT_I2C_DMA_RDLR register. */
4939 #define ALT_I2C_DMA_RDLR_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_DMA_RDLR_OFST))
4940 
4941 /*
4942  * Register : SDA Setup Register - ic_sda_setup
4943  * 
4944  * This register controls the amount of time delay (in terms of number of l4_sp_clk
4945  * clock periods) introduced in the rising edge of SCL relative to SDA changing by
4946  * holding SCL low when I2C services a read request while operating as a slave-
4947  * transmitter. The relevant I2C requirement is tSU:DAT (note 4) as detailed in the
4948  * I2C Bus Specification. This register must be programmed with a value equal to or
4949  * greater than 2.
4950  * 
4951  * Note: The length of setup time is calculated using [(IC_SDA_SETUP - 1) *
4952  * (l4_sp_clk)], so if the user requires 10 l4_sp_clk periods of setup time, they
4953  * should program a value of 11. The IC_SDA_SETUP register is only used by the I2C
4954  * when operating as a slave transmitter.
4955  * 
4956  * Register Layout
4957  * 
4958  *  Bits   | Access | Reset | Description    
4959  * :-------|:-------|:------|:----------------
4960  *  [7:0]  | RW     | 0x64  | SDA Setup Value
4961  *  [31:8] | ???    | 0x0   | *UNDEFINED*    
4962  * 
4963  */
4964 /*
4965  * Field : SDA Setup Value - sda_setup
4966  * 
4967  * It is recommended that if the required delay is 1000ns, then for an l4_sp_clk
4968  * frequency of 10 MHz, ic_sda_setup should be programmed to a value of 11.
4969  * 
4970  * Field Access Macros:
4971  * 
4972  */
4973 /* The Least Significant Bit (LSB) position of the ALT_I2C_SDA_SETUP_SDA_SETUP register field. */
4974 #define ALT_I2C_SDA_SETUP_SDA_SETUP_LSB        0
4975 /* The Most Significant Bit (MSB) position of the ALT_I2C_SDA_SETUP_SDA_SETUP register field. */
4976 #define ALT_I2C_SDA_SETUP_SDA_SETUP_MSB        7
4977 /* The width in bits of the ALT_I2C_SDA_SETUP_SDA_SETUP register field. */
4978 #define ALT_I2C_SDA_SETUP_SDA_SETUP_WIDTH      8
4979 /* The mask used to set the ALT_I2C_SDA_SETUP_SDA_SETUP register field value. */
4980 #define ALT_I2C_SDA_SETUP_SDA_SETUP_SET_MSK    0x000000ff
4981 /* The mask used to clear the ALT_I2C_SDA_SETUP_SDA_SETUP register field value. */
4982 #define ALT_I2C_SDA_SETUP_SDA_SETUP_CLR_MSK    0xffffff00
4983 /* The reset value of the ALT_I2C_SDA_SETUP_SDA_SETUP register field. */
4984 #define ALT_I2C_SDA_SETUP_SDA_SETUP_RESET      0x64
4985 /* Extracts the ALT_I2C_SDA_SETUP_SDA_SETUP field value from a register. */
4986 #define ALT_I2C_SDA_SETUP_SDA_SETUP_GET(value) (((value) & 0x000000ff) >> 0)
4987 /* Produces a ALT_I2C_SDA_SETUP_SDA_SETUP register field value suitable for setting the register. */
4988 #define ALT_I2C_SDA_SETUP_SDA_SETUP_SET(value) (((value) << 0) & 0x000000ff)
4989 
4990 #ifndef __ASSEMBLY__
4991 /*
4992  * WARNING: The C register and register group struct declarations are provided for
4993  * convenience and illustrative purposes. They should, however, be used with
4994  * caution as the C language standard provides no guarantees about the alignment or
4995  * atomicity of device memory accesses. The recommended practice for writing
4996  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
4997  * alt_write_word() functions.
4998  * 
4999  * The struct declaration for register ALT_I2C_SDA_SETUP.
5000  */
5001 struct ALT_I2C_SDA_SETUP_s
5002 {
5003     uint32_t  sda_setup :  8;  /* SDA Setup Value */
5004     uint32_t            : 24;  /* *UNDEFINED* */
5005 };
5006 
5007 /* The typedef declaration for register ALT_I2C_SDA_SETUP. */
5008 typedef volatile struct ALT_I2C_SDA_SETUP_s  ALT_I2C_SDA_SETUP_t;
5009 #endif  /* __ASSEMBLY__ */
5010 
5011 /* The byte offset of the ALT_I2C_SDA_SETUP register from the beginning of the component. */
5012 #define ALT_I2C_SDA_SETUP_OFST        0x94
5013 /* The address of the ALT_I2C_SDA_SETUP register. */
5014 #define ALT_I2C_SDA_SETUP_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_SDA_SETUP_OFST))
5015 
5016 /*
5017  * Register : ACK General Call - ic_ack_general_call
5018  * 
5019  * The register controls whether i2c responds with a ACK or NACK when it receives
5020  * an I2C General Call address.
5021  * 
5022  * Register Layout
5023  * 
5024  *  Bits   | Access | Reset | Description         
5025  * :-------|:-------|:------|:---------------------
5026  *  [0]    | RW     | 0x1   | ACK General Call Bit
5027  *  [31:1] | ???    | 0x0   | *UNDEFINED*         
5028  * 
5029  */
5030 /*
5031  * Field : ACK General Call Bit - ack_gen_call
5032  * 
5033  * When an ACK is asserted, (by asserting i2c_out_data) when it receives a General
5034  * call. Otherwise, i2c responds with a NACK (by negating i2c_out_data).
5035  * 
5036  * Field Enumeration Values:
5037  * 
5038  *  Enum                                         | Value | Description             
5039  * :---------------------------------------------|:------|:-------------------------
5040  *  ALT_I2C_ACK_GENERAL_CALL_ACK_GEN_CALL_E_NACK | 0x0   | I2C responds with a NACK
5041  *  ALT_I2C_ACK_GENERAL_CALL_ACK_GEN_CALL_E_ACK  | 0x1   | I2C responds with an ACK
5042  * 
5043  * Field Access Macros:
5044  * 
5045  */
5046 /*
5047  * Enumerated value for register field ALT_I2C_ACK_GENERAL_CALL_ACK_GEN_CALL
5048  * 
5049  * I2C responds with a NACK
5050  */
5051 #define ALT_I2C_ACK_GENERAL_CALL_ACK_GEN_CALL_E_NACK    0x0
5052 /*
5053  * Enumerated value for register field ALT_I2C_ACK_GENERAL_CALL_ACK_GEN_CALL
5054  * 
5055  * I2C responds with an ACK
5056  */
5057 #define ALT_I2C_ACK_GENERAL_CALL_ACK_GEN_CALL_E_ACK     0x1
5058 
5059 /* The Least Significant Bit (LSB) position of the ALT_I2C_ACK_GENERAL_CALL_ACK_GEN_CALL register field. */
5060 #define ALT_I2C_ACK_GENERAL_CALL_ACK_GEN_CALL_LSB        0
5061 /* The Most Significant Bit (MSB) position of the ALT_I2C_ACK_GENERAL_CALL_ACK_GEN_CALL register field. */
5062 #define ALT_I2C_ACK_GENERAL_CALL_ACK_GEN_CALL_MSB        0
5063 /* The width in bits of the ALT_I2C_ACK_GENERAL_CALL_ACK_GEN_CALL register field. */
5064 #define ALT_I2C_ACK_GENERAL_CALL_ACK_GEN_CALL_WIDTH      1
5065 /* The mask used to set the ALT_I2C_ACK_GENERAL_CALL_ACK_GEN_CALL register field value. */
5066 #define ALT_I2C_ACK_GENERAL_CALL_ACK_GEN_CALL_SET_MSK    0x00000001
5067 /* The mask used to clear the ALT_I2C_ACK_GENERAL_CALL_ACK_GEN_CALL register field value. */
5068 #define ALT_I2C_ACK_GENERAL_CALL_ACK_GEN_CALL_CLR_MSK    0xfffffffe
5069 /* The reset value of the ALT_I2C_ACK_GENERAL_CALL_ACK_GEN_CALL register field. */
5070 #define ALT_I2C_ACK_GENERAL_CALL_ACK_GEN_CALL_RESET      0x1
5071 /* Extracts the ALT_I2C_ACK_GENERAL_CALL_ACK_GEN_CALL field value from a register. */
5072 #define ALT_I2C_ACK_GENERAL_CALL_ACK_GEN_CALL_GET(value) (((value) & 0x00000001) >> 0)
5073 /* Produces a ALT_I2C_ACK_GENERAL_CALL_ACK_GEN_CALL register field value suitable for setting the register. */
5074 #define ALT_I2C_ACK_GENERAL_CALL_ACK_GEN_CALL_SET(value) (((value) << 0) & 0x00000001)
5075 
5076 #ifndef __ASSEMBLY__
5077 /*
5078  * WARNING: The C register and register group struct declarations are provided for
5079  * convenience and illustrative purposes. They should, however, be used with
5080  * caution as the C language standard provides no guarantees about the alignment or
5081  * atomicity of device memory accesses. The recommended practice for writing
5082  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
5083  * alt_write_word() functions.
5084  * 
5085  * The struct declaration for register ALT_I2C_ACK_GENERAL_CALL.
5086  */
5087 struct ALT_I2C_ACK_GENERAL_CALL_s
5088 {
5089     uint32_t  ack_gen_call :  1;  /* ACK General Call Bit */
5090     uint32_t               : 31;  /* *UNDEFINED* */
5091 };
5092 
5093 /* The typedef declaration for register ALT_I2C_ACK_GENERAL_CALL. */
5094 typedef volatile struct ALT_I2C_ACK_GENERAL_CALL_s  ALT_I2C_ACK_GENERAL_CALL_t;
5095 #endif  /* __ASSEMBLY__ */
5096 
5097 /* The byte offset of the ALT_I2C_ACK_GENERAL_CALL register from the beginning of the component. */
5098 #define ALT_I2C_ACK_GENERAL_CALL_OFST        0x98
5099 /* The address of the ALT_I2C_ACK_GENERAL_CALL register. */
5100 #define ALT_I2C_ACK_GENERAL_CALL_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_ACK_GENERAL_CALL_OFST))
5101 
5102 /*
5103  * Register : Enable Status Register - ic_enable_status
5104  * 
5105  * This register is used to report the i2c hardware status when the IC_ENABLE
5106  * register is set from 1 to 0; that is, when i2c is disabled. If IC_ENABLE has
5107  * been set to 1, bits 2:1 are forced to 0, and bit 0 is forced to 1. If IC_ENABLE
5108  * has been set to 0, bits 2:1 are only valid as soon as bit 0 is read as '0'.
5109  * 
5110  * Note: When ic_enable has been written with '0' a delay occurs for bit 0 to be
5111  * read as '0' because disabling the i2c depends on I2C bus activities.
5112  * 
5113  * Register Layout
5114  * 
5115  *  Bits   | Access | Reset | Description                  
5116  * :-------|:-------|:------|:------------------------------
5117  *  [0]    | R      | 0x0   | Enable Status Bit            
5118  *  [1]    | R      | 0x0   | Slave Disabled While Busy Bit
5119  *  [2]    | R      | 0x0   | Slave Received Data Lost Bit 
5120  *  [31:3] | ???    | 0x0   | *UNDEFINED*                  
5121  * 
5122  */
5123 /*
5124  * Field : Enable Status Bit - ic_en
5125  * 
5126  * This bit always reflects the value driven on the output port ic_en. Not used in
5127  * current application. When read as 1, i2c is deemed to be in an enabled state.
5128  * When read as 0, i2c is deemed completely inactive. NOTE: The CPU can safely read
5129  * this bit anytime. When this bit is read as 0, the CPU can safely read
5130  * slv_rx_data_lost (bit 2) and slv_disabled_while_busy (bit 1).
5131  * 
5132  * Field Access Macros:
5133  * 
5134  */
5135 /* The Least Significant Bit (LSB) position of the ALT_I2C_EN_STAT_IC_EN register field. */
5136 #define ALT_I2C_EN_STAT_IC_EN_LSB        0
5137 /* The Most Significant Bit (MSB) position of the ALT_I2C_EN_STAT_IC_EN register field. */
5138 #define ALT_I2C_EN_STAT_IC_EN_MSB        0
5139 /* The width in bits of the ALT_I2C_EN_STAT_IC_EN register field. */
5140 #define ALT_I2C_EN_STAT_IC_EN_WIDTH      1
5141 /* The mask used to set the ALT_I2C_EN_STAT_IC_EN register field value. */
5142 #define ALT_I2C_EN_STAT_IC_EN_SET_MSK    0x00000001
5143 /* The mask used to clear the ALT_I2C_EN_STAT_IC_EN register field value. */
5144 #define ALT_I2C_EN_STAT_IC_EN_CLR_MSK    0xfffffffe
5145 /* The reset value of the ALT_I2C_EN_STAT_IC_EN register field. */
5146 #define ALT_I2C_EN_STAT_IC_EN_RESET      0x0
5147 /* Extracts the ALT_I2C_EN_STAT_IC_EN field value from a register. */
5148 #define ALT_I2C_EN_STAT_IC_EN_GET(value) (((value) & 0x00000001) >> 0)
5149 /* Produces a ALT_I2C_EN_STAT_IC_EN register field value suitable for setting the register. */
5150 #define ALT_I2C_EN_STAT_IC_EN_SET(value) (((value) << 0) & 0x00000001)
5151 
5152 /*
5153  * Field : Slave Disabled While Busy Bit - slv_disabled_while_busy
5154  * 
5155  * This bit indicates if a potential or active Slave operation has been aborted due
5156  * to the setting of the ic_enable register from 1 to 0. This bit is set when the
5157  * CPU writes a 0 to the ic_enable register while: (a) I2C is receiving the address
5158  * byte of the Slave-Transmitter operation from a remote master; OR, (b) address
5159  * and data bytes of the Slave-Receiver operation from a remote master. When read
5160  * as 1, I2C is deemed to have forced a NACK during any part of an I2C transfer,
5161  * irrespective of whether the I2C address matches the slave address set in i2c
5162  * (IC_SAR register) OR if the transfer is completed before IC_ENABLE is set to 0
5163  * but has not taken effect. NOTE: If the remote I2C master terminates the transfer
5164  * with a STOP condition before the i2c has a chance to NACK a transfer, and
5165  * IC_ENABLE has been set to 0, then this bit will also be set to 1. When read as
5166  * 0, i2c is deemed to have been disabled when there is master activity, or when
5167  * the I2C bus is idle. NOTE: The CPU can safely read this bit when IC_EN (bit 0)
5168  * is read as 0.
5169  * 
5170  * Field Access Macros:
5171  * 
5172  */
5173 /* The Least Significant Bit (LSB) position of the ALT_I2C_EN_STAT_SLV_DISD_WHILE_BUSY register field. */
5174 #define ALT_I2C_EN_STAT_SLV_DISD_WHILE_BUSY_LSB        1
5175 /* The Most Significant Bit (MSB) position of the ALT_I2C_EN_STAT_SLV_DISD_WHILE_BUSY register field. */
5176 #define ALT_I2C_EN_STAT_SLV_DISD_WHILE_BUSY_MSB        1
5177 /* The width in bits of the ALT_I2C_EN_STAT_SLV_DISD_WHILE_BUSY register field. */
5178 #define ALT_I2C_EN_STAT_SLV_DISD_WHILE_BUSY_WIDTH      1
5179 /* The mask used to set the ALT_I2C_EN_STAT_SLV_DISD_WHILE_BUSY register field value. */
5180 #define ALT_I2C_EN_STAT_SLV_DISD_WHILE_BUSY_SET_MSK    0x00000002
5181 /* The mask used to clear the ALT_I2C_EN_STAT_SLV_DISD_WHILE_BUSY register field value. */
5182 #define ALT_I2C_EN_STAT_SLV_DISD_WHILE_BUSY_CLR_MSK    0xfffffffd
5183 /* The reset value of the ALT_I2C_EN_STAT_SLV_DISD_WHILE_BUSY register field. */
5184 #define ALT_I2C_EN_STAT_SLV_DISD_WHILE_BUSY_RESET      0x0
5185 /* Extracts the ALT_I2C_EN_STAT_SLV_DISD_WHILE_BUSY field value from a register. */
5186 #define ALT_I2C_EN_STAT_SLV_DISD_WHILE_BUSY_GET(value) (((value) & 0x00000002) >> 1)
5187 /* Produces a ALT_I2C_EN_STAT_SLV_DISD_WHILE_BUSY register field value suitable for setting the register. */
5188 #define ALT_I2C_EN_STAT_SLV_DISD_WHILE_BUSY_SET(value) (((value) << 1) & 0x00000002)
5189 
5190 /*
5191  * Field : Slave Received Data Lost Bit - slv_rx_data_lost
5192  * 
5193  * This bit indicates if a Slave-Receiver operation has been aborted with at least
5194  * one data byte received from an I2C transfer due to the setting of IC ENABLE from
5195  * 1 to 0. When read as 1, i2c is deemed to have been actively engaged in an
5196  * aborted I2C transfer (with matching address) and the data phase of the I2C
5197  * transfer has been entered, even though a data byte has been responded with a
5198  * NACK. NOTE: If the remote I2C master terminates the transfer with a STOP
5199  * condition before the i2c has a chance to NACK a transfer, and ic_enable has been
5200  * set to 0, then this bit is also set to 1. When read as 0, i2c is deemed to have
5201  * been disabled without being actively involved in the data phase of a Slave-
5202  * Receiver transfer. NOTE: The CPU can safely read this bit when IC_EN (bit 0) is
5203  * read as 0.
5204  * 
5205  * Field Access Macros:
5206  * 
5207  */
5208 /* The Least Significant Bit (LSB) position of the ALT_I2C_EN_STAT_SLV_RX_DATA_LOST register field. */
5209 #define ALT_I2C_EN_STAT_SLV_RX_DATA_LOST_LSB        2
5210 /* The Most Significant Bit (MSB) position of the ALT_I2C_EN_STAT_SLV_RX_DATA_LOST register field. */
5211 #define ALT_I2C_EN_STAT_SLV_RX_DATA_LOST_MSB        2
5212 /* The width in bits of the ALT_I2C_EN_STAT_SLV_RX_DATA_LOST register field. */
5213 #define ALT_I2C_EN_STAT_SLV_RX_DATA_LOST_WIDTH      1
5214 /* The mask used to set the ALT_I2C_EN_STAT_SLV_RX_DATA_LOST register field value. */
5215 #define ALT_I2C_EN_STAT_SLV_RX_DATA_LOST_SET_MSK    0x00000004
5216 /* The mask used to clear the ALT_I2C_EN_STAT_SLV_RX_DATA_LOST register field value. */
5217 #define ALT_I2C_EN_STAT_SLV_RX_DATA_LOST_CLR_MSK    0xfffffffb
5218 /* The reset value of the ALT_I2C_EN_STAT_SLV_RX_DATA_LOST register field. */
5219 #define ALT_I2C_EN_STAT_SLV_RX_DATA_LOST_RESET      0x0
5220 /* Extracts the ALT_I2C_EN_STAT_SLV_RX_DATA_LOST field value from a register. */
5221 #define ALT_I2C_EN_STAT_SLV_RX_DATA_LOST_GET(value) (((value) & 0x00000004) >> 2)
5222 /* Produces a ALT_I2C_EN_STAT_SLV_RX_DATA_LOST register field value suitable for setting the register. */
5223 #define ALT_I2C_EN_STAT_SLV_RX_DATA_LOST_SET(value) (((value) << 2) & 0x00000004)
5224 
5225 #ifndef __ASSEMBLY__
5226 /*
5227  * WARNING: The C register and register group struct declarations are provided for
5228  * convenience and illustrative purposes. They should, however, be used with
5229  * caution as the C language standard provides no guarantees about the alignment or
5230  * atomicity of device memory accesses. The recommended practice for writing
5231  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
5232  * alt_write_word() functions.
5233  * 
5234  * The struct declaration for register ALT_I2C_EN_STAT.
5235  */
5236 struct ALT_I2C_EN_STAT_s
5237 {
5238     const uint32_t  ic_en                   :  1;  /* Enable Status Bit */
5239     const uint32_t  slv_disabled_while_busy :  1;  /* Slave Disabled While Busy Bit */
5240     const uint32_t  slv_rx_data_lost        :  1;  /* Slave Received Data Lost Bit */
5241     uint32_t                                : 29;  /* *UNDEFINED* */
5242 };
5243 
5244 /* The typedef declaration for register ALT_I2C_EN_STAT. */
5245 typedef volatile struct ALT_I2C_EN_STAT_s  ALT_I2C_EN_STAT_t;
5246 #endif  /* __ASSEMBLY__ */
5247 
5248 /* The byte offset of the ALT_I2C_EN_STAT register from the beginning of the component. */
5249 #define ALT_I2C_EN_STAT_OFST        0x9c
5250 /* The address of the ALT_I2C_EN_STAT register. */
5251 #define ALT_I2C_EN_STAT_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_EN_STAT_OFST))
5252 
5253 /*
5254  * Register : SS and FS Spike Suppression Limit Register - ic_fs_spklen
5255  * 
5256  * This register is used to store the duration, measured in ic_clk cycles, of the
5257  * longest spike that is filtered out by the spike suppression logic when the
5258  * component is operating in SS or FS modes.
5259  * 
5260  * Register Layout
5261  * 
5262  *  Bits   | Access | Reset | Description                     
5263  * :-------|:-------|:------|:---------------------------------
5264  *  [7:0]  | RW     | 0x2   | Spike Suppression Limit Register
5265  *  [31:8] | ???    | 0x0   | *UNDEFINED*                     
5266  * 
5267  */
5268 /*
5269  * Field : Spike Suppression Limit Register - spklen
5270  * 
5271  * This register must be set before any I2C bus transaction can take place to
5272  * ensure stable operation. This register sets the duration, measured in ic_clk
5273  * cycles, of the longest spike in the SCL or SDA lines that are filtered out by
5274  * the spike suppression logic. This register can be written only when the I2C
5275  * interface is disabled, which corresponds to the IC_ENABLE register being set to
5276  * 0. Writes at other times have no effect. The minimum valid value is 1; hardware
5277  * prevents values less than this being written, and if attempted results in 2
5278  * being set.
5279  * 
5280  * Field Access Macros:
5281  * 
5282  */
5283 /* The Least Significant Bit (LSB) position of the ALT_I2C_FS_SPKLEN_SPKLEN register field. */
5284 #define ALT_I2C_FS_SPKLEN_SPKLEN_LSB        0
5285 /* The Most Significant Bit (MSB) position of the ALT_I2C_FS_SPKLEN_SPKLEN register field. */
5286 #define ALT_I2C_FS_SPKLEN_SPKLEN_MSB        7
5287 /* The width in bits of the ALT_I2C_FS_SPKLEN_SPKLEN register field. */
5288 #define ALT_I2C_FS_SPKLEN_SPKLEN_WIDTH      8
5289 /* The mask used to set the ALT_I2C_FS_SPKLEN_SPKLEN register field value. */
5290 #define ALT_I2C_FS_SPKLEN_SPKLEN_SET_MSK    0x000000ff
5291 /* The mask used to clear the ALT_I2C_FS_SPKLEN_SPKLEN register field value. */
5292 #define ALT_I2C_FS_SPKLEN_SPKLEN_CLR_MSK    0xffffff00
5293 /* The reset value of the ALT_I2C_FS_SPKLEN_SPKLEN register field. */
5294 #define ALT_I2C_FS_SPKLEN_SPKLEN_RESET      0x2
5295 /* Extracts the ALT_I2C_FS_SPKLEN_SPKLEN field value from a register. */
5296 #define ALT_I2C_FS_SPKLEN_SPKLEN_GET(value) (((value) & 0x000000ff) >> 0)
5297 /* Produces a ALT_I2C_FS_SPKLEN_SPKLEN register field value suitable for setting the register. */
5298 #define ALT_I2C_FS_SPKLEN_SPKLEN_SET(value) (((value) << 0) & 0x000000ff)
5299 
5300 #ifndef __ASSEMBLY__
5301 /*
5302  * WARNING: The C register and register group struct declarations are provided for
5303  * convenience and illustrative purposes. They should, however, be used with
5304  * caution as the C language standard provides no guarantees about the alignment or
5305  * atomicity of device memory accesses. The recommended practice for writing
5306  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
5307  * alt_write_word() functions.
5308  * 
5309  * The struct declaration for register ALT_I2C_FS_SPKLEN.
5310  */
5311 struct ALT_I2C_FS_SPKLEN_s
5312 {
5313     uint32_t  spklen :  8;  /* Spike Suppression Limit Register */
5314     uint32_t         : 24;  /* *UNDEFINED* */
5315 };
5316 
5317 /* The typedef declaration for register ALT_I2C_FS_SPKLEN. */
5318 typedef volatile struct ALT_I2C_FS_SPKLEN_s  ALT_I2C_FS_SPKLEN_t;
5319 #endif  /* __ASSEMBLY__ */
5320 
5321 /* The byte offset of the ALT_I2C_FS_SPKLEN register from the beginning of the component. */
5322 #define ALT_I2C_FS_SPKLEN_OFST        0xa0
5323 /* The address of the ALT_I2C_FS_SPKLEN register. */
5324 #define ALT_I2C_FS_SPKLEN_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_FS_SPKLEN_OFST))
5325 
5326 /*
5327  * Register : Component Parameter Register 1 - ic_comp_param_1
5328  * 
5329  * This is a constant read-only register that contains encoded information about
5330  * the component's parameter settings.
5331  * 
5332  * Register Layout
5333  * 
5334  *  Bits    | Access | Reset | Description            
5335  * :--------|:-------|:------|:------------------------
5336  *  [1:0]   | R      | 0x2   | APB Data Width Register
5337  *  [3:2]   | R      | 0x2   | Max Speed Mode         
5338  *  [4]     | R      | 0x0   | CNT Registers Access   
5339  *  [5]     | R      | 0x1   | Intr IO                
5340  *  [6]     | R      | 0x1   | Has DMA                
5341  *  [7]     | R      | 0x1   | Add Encoded Params     
5342  *  [15:8]  | R      | 0x3f  | Rx Buffer Depth        
5343  *  [23:16] | R      | 0x3f  | Tx Buffer Depth        
5344  *  [31:24] | ???    | 0x0   | *UNDEFINED*            
5345  * 
5346  */
5347 /*
5348  * Field : APB Data Width Register - apb_data_width
5349  * 
5350  * Sets the APB Data Width.
5351  * 
5352  * Field Enumeration Values:
5353  * 
5354  *  Enum                                              | Value | Description              
5355  * :--------------------------------------------------|:------|:--------------------------
5356  *  ALT_I2C_COMP_PARAM_1_APB_DATA_WIDTH_E_WIDTH32BITS | 0x2   | APB Data Width is 32 Bits
5357  * 
5358  * Field Access Macros:
5359  * 
5360  */
5361 /*
5362  * Enumerated value for register field ALT_I2C_COMP_PARAM_1_APB_DATA_WIDTH
5363  * 
5364  * APB Data Width is 32 Bits
5365  */
5366 #define ALT_I2C_COMP_PARAM_1_APB_DATA_WIDTH_E_WIDTH32BITS   0x2
5367 
5368 /* The Least Significant Bit (LSB) position of the ALT_I2C_COMP_PARAM_1_APB_DATA_WIDTH register field. */
5369 #define ALT_I2C_COMP_PARAM_1_APB_DATA_WIDTH_LSB        0
5370 /* The Most Significant Bit (MSB) position of the ALT_I2C_COMP_PARAM_1_APB_DATA_WIDTH register field. */
5371 #define ALT_I2C_COMP_PARAM_1_APB_DATA_WIDTH_MSB        1
5372 /* The width in bits of the ALT_I2C_COMP_PARAM_1_APB_DATA_WIDTH register field. */
5373 #define ALT_I2C_COMP_PARAM_1_APB_DATA_WIDTH_WIDTH      2
5374 /* The mask used to set the ALT_I2C_COMP_PARAM_1_APB_DATA_WIDTH register field value. */
5375 #define ALT_I2C_COMP_PARAM_1_APB_DATA_WIDTH_SET_MSK    0x00000003
5376 /* The mask used to clear the ALT_I2C_COMP_PARAM_1_APB_DATA_WIDTH register field value. */
5377 #define ALT_I2C_COMP_PARAM_1_APB_DATA_WIDTH_CLR_MSK    0xfffffffc
5378 /* The reset value of the ALT_I2C_COMP_PARAM_1_APB_DATA_WIDTH register field. */
5379 #define ALT_I2C_COMP_PARAM_1_APB_DATA_WIDTH_RESET      0x2
5380 /* Extracts the ALT_I2C_COMP_PARAM_1_APB_DATA_WIDTH field value from a register. */
5381 #define ALT_I2C_COMP_PARAM_1_APB_DATA_WIDTH_GET(value) (((value) & 0x00000003) >> 0)
5382 /* Produces a ALT_I2C_COMP_PARAM_1_APB_DATA_WIDTH register field value suitable for setting the register. */
5383 #define ALT_I2C_COMP_PARAM_1_APB_DATA_WIDTH_SET(value) (((value) << 0) & 0x00000003)
5384 
5385 /*
5386  * Field : Max Speed Mode - max_speed_mode
5387  * 
5388  * The value of this field determines the maximum i2c bus interface speed.
5389  * 
5390  * Field Enumeration Values:
5391  * 
5392  *  Enum                                      | Value | Description           
5393  * :------------------------------------------|:------|:-----------------------
5394  *  ALT_I2C_COMP_PARAM_1_MAX_SPEED_MOD_E_FAST | 0x2   | Fast Mode (400 kbit/s)
5395  * 
5396  * Field Access Macros:
5397  * 
5398  */
5399 /*
5400  * Enumerated value for register field ALT_I2C_COMP_PARAM_1_MAX_SPEED_MOD
5401  * 
5402  * Fast Mode (400 kbit/s)
5403  */
5404 #define ALT_I2C_COMP_PARAM_1_MAX_SPEED_MOD_E_FAST   0x2
5405 
5406 /* The Least Significant Bit (LSB) position of the ALT_I2C_COMP_PARAM_1_MAX_SPEED_MOD register field. */
5407 #define ALT_I2C_COMP_PARAM_1_MAX_SPEED_MOD_LSB        2
5408 /* The Most Significant Bit (MSB) position of the ALT_I2C_COMP_PARAM_1_MAX_SPEED_MOD register field. */
5409 #define ALT_I2C_COMP_PARAM_1_MAX_SPEED_MOD_MSB        3
5410 /* The width in bits of the ALT_I2C_COMP_PARAM_1_MAX_SPEED_MOD register field. */
5411 #define ALT_I2C_COMP_PARAM_1_MAX_SPEED_MOD_WIDTH      2
5412 /* The mask used to set the ALT_I2C_COMP_PARAM_1_MAX_SPEED_MOD register field value. */
5413 #define ALT_I2C_COMP_PARAM_1_MAX_SPEED_MOD_SET_MSK    0x0000000c
5414 /* The mask used to clear the ALT_I2C_COMP_PARAM_1_MAX_SPEED_MOD register field value. */
5415 #define ALT_I2C_COMP_PARAM_1_MAX_SPEED_MOD_CLR_MSK    0xfffffff3
5416 /* The reset value of the ALT_I2C_COMP_PARAM_1_MAX_SPEED_MOD register field. */
5417 #define ALT_I2C_COMP_PARAM_1_MAX_SPEED_MOD_RESET      0x2
5418 /* Extracts the ALT_I2C_COMP_PARAM_1_MAX_SPEED_MOD field value from a register. */
5419 #define ALT_I2C_COMP_PARAM_1_MAX_SPEED_MOD_GET(value) (((value) & 0x0000000c) >> 2)
5420 /* Produces a ALT_I2C_COMP_PARAM_1_MAX_SPEED_MOD register field value suitable for setting the register. */
5421 #define ALT_I2C_COMP_PARAM_1_MAX_SPEED_MOD_SET(value) (((value) << 2) & 0x0000000c)
5422 
5423 /*
5424  * Field : CNT Registers Access - hc_count_values
5425  * 
5426  * This makes the *CNT registers readable and writable.
5427  * 
5428  * Field Enumeration Values:
5429  * 
5430  *  Enum                                        | Value | Description              
5431  * :--------------------------------------------|:------|:--------------------------
5432  *  ALT_I2C_COMP_PARAM_1_HC_COUNT_VALUES_E_RDWR | 0x0   | *CNT registers read/write
5433  * 
5434  * Field Access Macros:
5435  * 
5436  */
5437 /*
5438  * Enumerated value for register field ALT_I2C_COMP_PARAM_1_HC_COUNT_VALUES
5439  * 
5440  * * CNT registers read/write
5441  */
5442 #define ALT_I2C_COMP_PARAM_1_HC_COUNT_VALUES_E_RDWR 0x0
5443 
5444 /* The Least Significant Bit (LSB) position of the ALT_I2C_COMP_PARAM_1_HC_COUNT_VALUES register field. */
5445 #define ALT_I2C_COMP_PARAM_1_HC_COUNT_VALUES_LSB        4
5446 /* The Most Significant Bit (MSB) position of the ALT_I2C_COMP_PARAM_1_HC_COUNT_VALUES register field. */
5447 #define ALT_I2C_COMP_PARAM_1_HC_COUNT_VALUES_MSB        4
5448 /* The width in bits of the ALT_I2C_COMP_PARAM_1_HC_COUNT_VALUES register field. */
5449 #define ALT_I2C_COMP_PARAM_1_HC_COUNT_VALUES_WIDTH      1
5450 /* The mask used to set the ALT_I2C_COMP_PARAM_1_HC_COUNT_VALUES register field value. */
5451 #define ALT_I2C_COMP_PARAM_1_HC_COUNT_VALUES_SET_MSK    0x00000010
5452 /* The mask used to clear the ALT_I2C_COMP_PARAM_1_HC_COUNT_VALUES register field value. */
5453 #define ALT_I2C_COMP_PARAM_1_HC_COUNT_VALUES_CLR_MSK    0xffffffef
5454 /* The reset value of the ALT_I2C_COMP_PARAM_1_HC_COUNT_VALUES register field. */
5455 #define ALT_I2C_COMP_PARAM_1_HC_COUNT_VALUES_RESET      0x0
5456 /* Extracts the ALT_I2C_COMP_PARAM_1_HC_COUNT_VALUES field value from a register. */
5457 #define ALT_I2C_COMP_PARAM_1_HC_COUNT_VALUES_GET(value) (((value) & 0x00000010) >> 4)
5458 /* Produces a ALT_I2C_COMP_PARAM_1_HC_COUNT_VALUES register field value suitable for setting the register. */
5459 #define ALT_I2C_COMP_PARAM_1_HC_COUNT_VALUES_SET(value) (((value) << 4) & 0x00000010)
5460 
5461 /*
5462  * Field : Intr IO - intr_io
5463  * 
5464  * All interrupt sources are combined in to a single output.
5465  * 
5466  * Field Enumeration Values:
5467  * 
5468  *  Enum                                    | Value | Description              
5469  * :----------------------------------------|:------|:--------------------------
5470  *  ALT_I2C_COMP_PARAM_1_INTR_IO_E_COMBINED | 0x1   | Combined Interrupt Output
5471  * 
5472  * Field Access Macros:
5473  * 
5474  */
5475 /*
5476  * Enumerated value for register field ALT_I2C_COMP_PARAM_1_INTR_IO
5477  * 
5478  * Combined Interrupt Output
5479  */
5480 #define ALT_I2C_COMP_PARAM_1_INTR_IO_E_COMBINED 0x1
5481 
5482 /* The Least Significant Bit (LSB) position of the ALT_I2C_COMP_PARAM_1_INTR_IO register field. */
5483 #define ALT_I2C_COMP_PARAM_1_INTR_IO_LSB        5
5484 /* The Most Significant Bit (MSB) position of the ALT_I2C_COMP_PARAM_1_INTR_IO register field. */
5485 #define ALT_I2C_COMP_PARAM_1_INTR_IO_MSB        5
5486 /* The width in bits of the ALT_I2C_COMP_PARAM_1_INTR_IO register field. */
5487 #define ALT_I2C_COMP_PARAM_1_INTR_IO_WIDTH      1
5488 /* The mask used to set the ALT_I2C_COMP_PARAM_1_INTR_IO register field value. */
5489 #define ALT_I2C_COMP_PARAM_1_INTR_IO_SET_MSK    0x00000020
5490 /* The mask used to clear the ALT_I2C_COMP_PARAM_1_INTR_IO register field value. */
5491 #define ALT_I2C_COMP_PARAM_1_INTR_IO_CLR_MSK    0xffffffdf
5492 /* The reset value of the ALT_I2C_COMP_PARAM_1_INTR_IO register field. */
5493 #define ALT_I2C_COMP_PARAM_1_INTR_IO_RESET      0x1
5494 /* Extracts the ALT_I2C_COMP_PARAM_1_INTR_IO field value from a register. */
5495 #define ALT_I2C_COMP_PARAM_1_INTR_IO_GET(value) (((value) & 0x00000020) >> 5)
5496 /* Produces a ALT_I2C_COMP_PARAM_1_INTR_IO register field value suitable for setting the register. */
5497 #define ALT_I2C_COMP_PARAM_1_INTR_IO_SET(value) (((value) << 5) & 0x00000020)
5498 
5499 /*
5500  * Field : Has DMA - has_dma
5501  * 
5502  * This configures the inclusion of DMA handshaking interface signals.
5503  * 
5504  * Field Enumeration Values:
5505  * 
5506  *  Enum                                   | Value | Description
5507  * :---------------------------------------|:------|:------------
5508  *  ALT_I2C_COMP_PARAM_1_HAS_DMA_E_PRESENT | 0x1   | Has DMA    
5509  * 
5510  * Field Access Macros:
5511  * 
5512  */
5513 /*
5514  * Enumerated value for register field ALT_I2C_COMP_PARAM_1_HAS_DMA
5515  * 
5516  * Has DMA
5517  */
5518 #define ALT_I2C_COMP_PARAM_1_HAS_DMA_E_PRESENT  0x1
5519 
5520 /* The Least Significant Bit (LSB) position of the ALT_I2C_COMP_PARAM_1_HAS_DMA register field. */
5521 #define ALT_I2C_COMP_PARAM_1_HAS_DMA_LSB        6
5522 /* The Most Significant Bit (MSB) position of the ALT_I2C_COMP_PARAM_1_HAS_DMA register field. */
5523 #define ALT_I2C_COMP_PARAM_1_HAS_DMA_MSB        6
5524 /* The width in bits of the ALT_I2C_COMP_PARAM_1_HAS_DMA register field. */
5525 #define ALT_I2C_COMP_PARAM_1_HAS_DMA_WIDTH      1
5526 /* The mask used to set the ALT_I2C_COMP_PARAM_1_HAS_DMA register field value. */
5527 #define ALT_I2C_COMP_PARAM_1_HAS_DMA_SET_MSK    0x00000040
5528 /* The mask used to clear the ALT_I2C_COMP_PARAM_1_HAS_DMA register field value. */
5529 #define ALT_I2C_COMP_PARAM_1_HAS_DMA_CLR_MSK    0xffffffbf
5530 /* The reset value of the ALT_I2C_COMP_PARAM_1_HAS_DMA register field. */
5531 #define ALT_I2C_COMP_PARAM_1_HAS_DMA_RESET      0x1
5532 /* Extracts the ALT_I2C_COMP_PARAM_1_HAS_DMA field value from a register. */
5533 #define ALT_I2C_COMP_PARAM_1_HAS_DMA_GET(value) (((value) & 0x00000040) >> 6)
5534 /* Produces a ALT_I2C_COMP_PARAM_1_HAS_DMA register field value suitable for setting the register. */
5535 #define ALT_I2C_COMP_PARAM_1_HAS_DMA_SET(value) (((value) << 6) & 0x00000040)
5536 
5537 /*
5538  * Field : Add Encoded Params - add_encoded_params
5539  * 
5540  * By adding in the encoded parameters, this gives firmware an easy and quick way
5541  * of identifying the DesignWare component within an I/O memory map. Some critical
5542  * design-time options determine how a driver should interact with the peripheral.
5543  * There is a minimal area overhead by including these parameters. Allows a single
5544  * driver to be developed for each component which will be self-configurable.
5545  * 
5546  * Field Enumeration Values:
5547  * 
5548  *  Enum                                               | Value | Description       
5549  * :---------------------------------------------------|:------|:-------------------
5550  *  ALT_I2C_COMP_PARAM_1_ADD_ENC_PARAMS_E_ADDENCPARAMS | 0x1   | Add Encoded Params
5551  * 
5552  * Field Access Macros:
5553  * 
5554  */
5555 /*
5556  * Enumerated value for register field ALT_I2C_COMP_PARAM_1_ADD_ENC_PARAMS
5557  * 
5558  * Add Encoded Params
5559  */
5560 #define ALT_I2C_COMP_PARAM_1_ADD_ENC_PARAMS_E_ADDENCPARAMS  0x1
5561 
5562 /* The Least Significant Bit (LSB) position of the ALT_I2C_COMP_PARAM_1_ADD_ENC_PARAMS register field. */
5563 #define ALT_I2C_COMP_PARAM_1_ADD_ENC_PARAMS_LSB        7
5564 /* The Most Significant Bit (MSB) position of the ALT_I2C_COMP_PARAM_1_ADD_ENC_PARAMS register field. */
5565 #define ALT_I2C_COMP_PARAM_1_ADD_ENC_PARAMS_MSB        7
5566 /* The width in bits of the ALT_I2C_COMP_PARAM_1_ADD_ENC_PARAMS register field. */
5567 #define ALT_I2C_COMP_PARAM_1_ADD_ENC_PARAMS_WIDTH      1
5568 /* The mask used to set the ALT_I2C_COMP_PARAM_1_ADD_ENC_PARAMS register field value. */
5569 #define ALT_I2C_COMP_PARAM_1_ADD_ENC_PARAMS_SET_MSK    0x00000080
5570 /* The mask used to clear the ALT_I2C_COMP_PARAM_1_ADD_ENC_PARAMS register field value. */
5571 #define ALT_I2C_COMP_PARAM_1_ADD_ENC_PARAMS_CLR_MSK    0xffffff7f
5572 /* The reset value of the ALT_I2C_COMP_PARAM_1_ADD_ENC_PARAMS register field. */
5573 #define ALT_I2C_COMP_PARAM_1_ADD_ENC_PARAMS_RESET      0x1
5574 /* Extracts the ALT_I2C_COMP_PARAM_1_ADD_ENC_PARAMS field value from a register. */
5575 #define ALT_I2C_COMP_PARAM_1_ADD_ENC_PARAMS_GET(value) (((value) & 0x00000080) >> 7)
5576 /* Produces a ALT_I2C_COMP_PARAM_1_ADD_ENC_PARAMS register field value suitable for setting the register. */
5577 #define ALT_I2C_COMP_PARAM_1_ADD_ENC_PARAMS_SET(value) (((value) << 7) & 0x00000080)
5578 
5579 /*
5580  * Field : Rx Buffer Depth - rx_buffer_depth
5581  * 
5582  * Sets Rx FIFO Depth.
5583  * 
5584  * Field Enumeration Values:
5585  * 
5586  *  Enum                                            | Value | Description             
5587  * :------------------------------------------------|:------|:-------------------------
5588  *  ALT_I2C_COMP_PARAM_1_RX_BUF_DEPTH_E_FIFO64BYTES | 0x40  | Rx Fifo Depth 64 Entries
5589  * 
5590  * Field Access Macros:
5591  * 
5592  */
5593 /*
5594  * Enumerated value for register field ALT_I2C_COMP_PARAM_1_RX_BUF_DEPTH
5595  * 
5596  * Rx Fifo Depth 64 Entries
5597  */
5598 #define ALT_I2C_COMP_PARAM_1_RX_BUF_DEPTH_E_FIFO64BYTES 0x40
5599 
5600 /* The Least Significant Bit (LSB) position of the ALT_I2C_COMP_PARAM_1_RX_BUF_DEPTH register field. */
5601 #define ALT_I2C_COMP_PARAM_1_RX_BUF_DEPTH_LSB        8
5602 /* The Most Significant Bit (MSB) position of the ALT_I2C_COMP_PARAM_1_RX_BUF_DEPTH register field. */
5603 #define ALT_I2C_COMP_PARAM_1_RX_BUF_DEPTH_MSB        15
5604 /* The width in bits of the ALT_I2C_COMP_PARAM_1_RX_BUF_DEPTH register field. */
5605 #define ALT_I2C_COMP_PARAM_1_RX_BUF_DEPTH_WIDTH      8
5606 /* The mask used to set the ALT_I2C_COMP_PARAM_1_RX_BUF_DEPTH register field value. */
5607 #define ALT_I2C_COMP_PARAM_1_RX_BUF_DEPTH_SET_MSK    0x0000ff00
5608 /* The mask used to clear the ALT_I2C_COMP_PARAM_1_RX_BUF_DEPTH register field value. */
5609 #define ALT_I2C_COMP_PARAM_1_RX_BUF_DEPTH_CLR_MSK    0xffff00ff
5610 /* The reset value of the ALT_I2C_COMP_PARAM_1_RX_BUF_DEPTH register field. */
5611 #define ALT_I2C_COMP_PARAM_1_RX_BUF_DEPTH_RESET      0x3f
5612 /* Extracts the ALT_I2C_COMP_PARAM_1_RX_BUF_DEPTH field value from a register. */
5613 #define ALT_I2C_COMP_PARAM_1_RX_BUF_DEPTH_GET(value) (((value) & 0x0000ff00) >> 8)
5614 /* Produces a ALT_I2C_COMP_PARAM_1_RX_BUF_DEPTH register field value suitable for setting the register. */
5615 #define ALT_I2C_COMP_PARAM_1_RX_BUF_DEPTH_SET(value) (((value) << 8) & 0x0000ff00)
5616 
5617 /*
5618  * Field : Tx Buffer Depth - tx_buffer_depth
5619  * 
5620  * Sets Tx FIFO Depth.
5621  * 
5622  * Field Enumeration Values:
5623  * 
5624  *  Enum                                            | Value | Description               
5625  * :------------------------------------------------|:------|:---------------------------
5626  *  ALT_I2C_COMP_PARAM_1_TX_BUF_DEPTH_E_FIFO64BYTES | 0x40  | Tx Buffer Depth 64 Entries
5627  * 
5628  * Field Access Macros:
5629  * 
5630  */
5631 /*
5632  * Enumerated value for register field ALT_I2C_COMP_PARAM_1_TX_BUF_DEPTH
5633  * 
5634  * Tx Buffer Depth 64 Entries
5635  */
5636 #define ALT_I2C_COMP_PARAM_1_TX_BUF_DEPTH_E_FIFO64BYTES 0x40
5637 
5638 /* The Least Significant Bit (LSB) position of the ALT_I2C_COMP_PARAM_1_TX_BUF_DEPTH register field. */
5639 #define ALT_I2C_COMP_PARAM_1_TX_BUF_DEPTH_LSB        16
5640 /* The Most Significant Bit (MSB) position of the ALT_I2C_COMP_PARAM_1_TX_BUF_DEPTH register field. */
5641 #define ALT_I2C_COMP_PARAM_1_TX_BUF_DEPTH_MSB        23
5642 /* The width in bits of the ALT_I2C_COMP_PARAM_1_TX_BUF_DEPTH register field. */
5643 #define ALT_I2C_COMP_PARAM_1_TX_BUF_DEPTH_WIDTH      8
5644 /* The mask used to set the ALT_I2C_COMP_PARAM_1_TX_BUF_DEPTH register field value. */
5645 #define ALT_I2C_COMP_PARAM_1_TX_BUF_DEPTH_SET_MSK    0x00ff0000
5646 /* The mask used to clear the ALT_I2C_COMP_PARAM_1_TX_BUF_DEPTH register field value. */
5647 #define ALT_I2C_COMP_PARAM_1_TX_BUF_DEPTH_CLR_MSK    0xff00ffff
5648 /* The reset value of the ALT_I2C_COMP_PARAM_1_TX_BUF_DEPTH register field. */
5649 #define ALT_I2C_COMP_PARAM_1_TX_BUF_DEPTH_RESET      0x3f
5650 /* Extracts the ALT_I2C_COMP_PARAM_1_TX_BUF_DEPTH field value from a register. */
5651 #define ALT_I2C_COMP_PARAM_1_TX_BUF_DEPTH_GET(value) (((value) & 0x00ff0000) >> 16)
5652 /* Produces a ALT_I2C_COMP_PARAM_1_TX_BUF_DEPTH register field value suitable for setting the register. */
5653 #define ALT_I2C_COMP_PARAM_1_TX_BUF_DEPTH_SET(value) (((value) << 16) & 0x00ff0000)
5654 
5655 #ifndef __ASSEMBLY__
5656 /*
5657  * WARNING: The C register and register group struct declarations are provided for
5658  * convenience and illustrative purposes. They should, however, be used with
5659  * caution as the C language standard provides no guarantees about the alignment or
5660  * atomicity of device memory accesses. The recommended practice for writing
5661  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
5662  * alt_write_word() functions.
5663  * 
5664  * The struct declaration for register ALT_I2C_COMP_PARAM_1.
5665  */
5666 struct ALT_I2C_COMP_PARAM_1_s
5667 {
5668     const uint32_t  apb_data_width     :  2;  /* APB Data Width Register */
5669     const uint32_t  max_speed_mode     :  2;  /* Max Speed Mode */
5670     const uint32_t  hc_count_values    :  1;  /* CNT Registers Access */
5671     const uint32_t  intr_io            :  1;  /* Intr IO */
5672     const uint32_t  has_dma            :  1;  /* Has DMA */
5673     const uint32_t  add_encoded_params :  1;  /* Add Encoded Params */
5674     const uint32_t  rx_buffer_depth    :  8;  /* Rx Buffer Depth */
5675     const uint32_t  tx_buffer_depth    :  8;  /* Tx Buffer Depth */
5676     uint32_t                           :  8;  /* *UNDEFINED* */
5677 };
5678 
5679 /* The typedef declaration for register ALT_I2C_COMP_PARAM_1. */
5680 typedef volatile struct ALT_I2C_COMP_PARAM_1_s  ALT_I2C_COMP_PARAM_1_t;
5681 #endif  /* __ASSEMBLY__ */
5682 
5683 /* The byte offset of the ALT_I2C_COMP_PARAM_1 register from the beginning of the component. */
5684 #define ALT_I2C_COMP_PARAM_1_OFST        0xf4
5685 /* The address of the ALT_I2C_COMP_PARAM_1 register. */
5686 #define ALT_I2C_COMP_PARAM_1_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_COMP_PARAM_1_OFST))
5687 
5688 /*
5689  * Register : Component Version Register - ic_comp_version
5690  * 
5691  * Describes the version of the I2C
5692  * 
5693  * Register Layout
5694  * 
5695  *  Bits   | Access | Reset      | Description              
5696  * :-------|:-------|:-----------|:--------------------------
5697  *  [31:0] | R      | 0x3132302a | Component Parameter Value
5698  * 
5699  */
5700 /*
5701  * Field : Component Parameter Value - ic_comp_version
5702  * 
5703  * Specifies I2C release number (encoded as 4 ASCII characters)
5704  * 
5705  * Field Enumeration Values:
5706  * 
5707  *  Enum                                     | Value      | Description  
5708  * :-----------------------------------------|:-----------|:--------------
5709  *  ALT_I2C_COMP_VER_IC_COMP_VER_E_VER_1_20A | 0x3132302a | Version 1.20a
5710  * 
5711  * Field Access Macros:
5712  * 
5713  */
5714 /*
5715  * Enumerated value for register field ALT_I2C_COMP_VER_IC_COMP_VER
5716  * 
5717  * Version 1.20a
5718  */
5719 #define ALT_I2C_COMP_VER_IC_COMP_VER_E_VER_1_20A    0x3132302a
5720 
5721 /* The Least Significant Bit (LSB) position of the ALT_I2C_COMP_VER_IC_COMP_VER register field. */
5722 #define ALT_I2C_COMP_VER_IC_COMP_VER_LSB        0
5723 /* The Most Significant Bit (MSB) position of the ALT_I2C_COMP_VER_IC_COMP_VER register field. */
5724 #define ALT_I2C_COMP_VER_IC_COMP_VER_MSB        31
5725 /* The width in bits of the ALT_I2C_COMP_VER_IC_COMP_VER register field. */
5726 #define ALT_I2C_COMP_VER_IC_COMP_VER_WIDTH      32
5727 /* The mask used to set the ALT_I2C_COMP_VER_IC_COMP_VER register field value. */
5728 #define ALT_I2C_COMP_VER_IC_COMP_VER_SET_MSK    0xffffffff
5729 /* The mask used to clear the ALT_I2C_COMP_VER_IC_COMP_VER register field value. */
5730 #define ALT_I2C_COMP_VER_IC_COMP_VER_CLR_MSK    0x00000000
5731 /* The reset value of the ALT_I2C_COMP_VER_IC_COMP_VER register field. */
5732 #define ALT_I2C_COMP_VER_IC_COMP_VER_RESET      0x3132302a
5733 /* Extracts the ALT_I2C_COMP_VER_IC_COMP_VER field value from a register. */
5734 #define ALT_I2C_COMP_VER_IC_COMP_VER_GET(value) (((value) & 0xffffffff) >> 0)
5735 /* Produces a ALT_I2C_COMP_VER_IC_COMP_VER register field value suitable for setting the register. */
5736 #define ALT_I2C_COMP_VER_IC_COMP_VER_SET(value) (((value) << 0) & 0xffffffff)
5737 
5738 #ifndef __ASSEMBLY__
5739 /*
5740  * WARNING: The C register and register group struct declarations are provided for
5741  * convenience and illustrative purposes. They should, however, be used with
5742  * caution as the C language standard provides no guarantees about the alignment or
5743  * atomicity of device memory accesses. The recommended practice for writing
5744  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
5745  * alt_write_word() functions.
5746  * 
5747  * The struct declaration for register ALT_I2C_COMP_VER.
5748  */
5749 struct ALT_I2C_COMP_VER_s
5750 {
5751     const uint32_t  ic_comp_version : 32;  /* Component Parameter Value */
5752 };
5753 
5754 /* The typedef declaration for register ALT_I2C_COMP_VER. */
5755 typedef volatile struct ALT_I2C_COMP_VER_s  ALT_I2C_COMP_VER_t;
5756 #endif  /* __ASSEMBLY__ */
5757 
5758 /* The byte offset of the ALT_I2C_COMP_VER register from the beginning of the component. */
5759 #define ALT_I2C_COMP_VER_OFST        0xf8
5760 /* The address of the ALT_I2C_COMP_VER register. */
5761 #define ALT_I2C_COMP_VER_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_COMP_VER_OFST))
5762 
5763 /*
5764  * Register : Component Type Register - ic_comp_type
5765  * 
5766  * Describes a unique ASCII value
5767  * 
5768  * Register Layout
5769  * 
5770  *  Bits   | Access | Reset      | Description          
5771  * :-------|:-------|:-----------|:----------------------
5772  *  [31:0] | R      | 0x44570140 | Component Type Number
5773  * 
5774  */
5775 /*
5776  * Field : Component Type Number - ic_comp_type
5777  * 
5778  * Designware Component Type number = 0x44_57_01_40. This assigned unique hex value
5779  * is constant and is derived from the two ASCII letters 'DW' followed by a 16-bit
5780  * unsigned number.
5781  * 
5782  * Field Access Macros:
5783  * 
5784  */
5785 /* The Least Significant Bit (LSB) position of the ALT_I2C_COMP_TYPE_IC_COMP_TYPE register field. */
5786 #define ALT_I2C_COMP_TYPE_IC_COMP_TYPE_LSB        0
5787 /* The Most Significant Bit (MSB) position of the ALT_I2C_COMP_TYPE_IC_COMP_TYPE register field. */
5788 #define ALT_I2C_COMP_TYPE_IC_COMP_TYPE_MSB        31
5789 /* The width in bits of the ALT_I2C_COMP_TYPE_IC_COMP_TYPE register field. */
5790 #define ALT_I2C_COMP_TYPE_IC_COMP_TYPE_WIDTH      32
5791 /* The mask used to set the ALT_I2C_COMP_TYPE_IC_COMP_TYPE register field value. */
5792 #define ALT_I2C_COMP_TYPE_IC_COMP_TYPE_SET_MSK    0xffffffff
5793 /* The mask used to clear the ALT_I2C_COMP_TYPE_IC_COMP_TYPE register field value. */
5794 #define ALT_I2C_COMP_TYPE_IC_COMP_TYPE_CLR_MSK    0x00000000
5795 /* The reset value of the ALT_I2C_COMP_TYPE_IC_COMP_TYPE register field. */
5796 #define ALT_I2C_COMP_TYPE_IC_COMP_TYPE_RESET      0x44570140
5797 /* Extracts the ALT_I2C_COMP_TYPE_IC_COMP_TYPE field value from a register. */
5798 #define ALT_I2C_COMP_TYPE_IC_COMP_TYPE_GET(value) (((value) & 0xffffffff) >> 0)
5799 /* Produces a ALT_I2C_COMP_TYPE_IC_COMP_TYPE register field value suitable for setting the register. */
5800 #define ALT_I2C_COMP_TYPE_IC_COMP_TYPE_SET(value) (((value) << 0) & 0xffffffff)
5801 
5802 #ifndef __ASSEMBLY__
5803 /*
5804  * WARNING: The C register and register group struct declarations are provided for
5805  * convenience and illustrative purposes. They should, however, be used with
5806  * caution as the C language standard provides no guarantees about the alignment or
5807  * atomicity of device memory accesses. The recommended practice for writing
5808  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
5809  * alt_write_word() functions.
5810  * 
5811  * The struct declaration for register ALT_I2C_COMP_TYPE.
5812  */
5813 struct ALT_I2C_COMP_TYPE_s
5814 {
5815     const uint32_t  ic_comp_type : 32;  /* Component Type Number */
5816 };
5817 
5818 /* The typedef declaration for register ALT_I2C_COMP_TYPE. */
5819 typedef volatile struct ALT_I2C_COMP_TYPE_s  ALT_I2C_COMP_TYPE_t;
5820 #endif  /* __ASSEMBLY__ */
5821 
5822 /* The byte offset of the ALT_I2C_COMP_TYPE register from the beginning of the component. */
5823 #define ALT_I2C_COMP_TYPE_OFST        0xfc
5824 /* The address of the ALT_I2C_COMP_TYPE register. */
5825 #define ALT_I2C_COMP_TYPE_ADDR(base)  ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_COMP_TYPE_OFST))
5826 
5827 #ifndef __ASSEMBLY__
5828 /*
5829  * WARNING: The C register and register group struct declarations are provided for
5830  * convenience and illustrative purposes. They should, however, be used with
5831  * caution as the C language standard provides no guarantees about the alignment or
5832  * atomicity of device memory accesses. The recommended practice for writing
5833  * hardware drivers is to use the SoCAL access macros and alt_read_word() and
5834  * alt_write_word() functions.
5835  * 
5836  * The struct declaration for register group ALT_I2C.
5837  */
5838 struct ALT_I2C_s
5839 {
5840     volatile ALT_I2C_CON_t                 ic_con;                 /* ALT_I2C_CON */
5841     volatile ALT_I2C_TAR_t                 ic_tar;                 /* ALT_I2C_TAR */
5842     volatile ALT_I2C_SAR_t                 ic_sar;                 /* ALT_I2C_SAR */
5843     volatile uint32_t                      _pad_0xc_0xf;           /* *UNDEFINED* */
5844     volatile ALT_I2C_DATA_CMD_t            ic_data_cmd;            /* ALT_I2C_DATA_CMD */
5845     volatile ALT_I2C_SS_SCL_HCNT_t         ic_ss_scl_hcnt;         /* ALT_I2C_SS_SCL_HCNT */
5846     volatile ALT_I2C_SS_SCL_LCNT_t         ic_ss_scl_lcnt;         /* ALT_I2C_SS_SCL_LCNT */
5847     volatile ALT_I2C_FS_SCL_HCNT_t         ic_fs_scl_hcnt;         /* ALT_I2C_FS_SCL_HCNT */
5848     volatile ALT_I2C_FS_SCL_LCNT_t         ic_fs_scl_lcnt;         /* ALT_I2C_FS_SCL_LCNT */
5849     volatile uint32_t                      _pad_0x24_0x2b[2];      /* *UNDEFINED* */
5850     volatile ALT_I2C_INTR_STAT_t           ic_intr_stat;           /* ALT_I2C_INTR_STAT */
5851     volatile ALT_I2C_INTR_MSK_t            ic_intr_mask;           /* ALT_I2C_INTR_MSK */
5852     volatile ALT_I2C_RAW_INTR_STAT_t       ic_raw_intr_stat;       /* ALT_I2C_RAW_INTR_STAT */
5853     volatile ALT_I2C_RX_TL_t               ic_rx_tl;               /* ALT_I2C_RX_TL */
5854     volatile ALT_I2C_TX_TL_t               ic_tx_tl;               /* ALT_I2C_TX_TL */
5855     volatile ALT_I2C_CLR_INTR_t            ic_clr_intr;            /* ALT_I2C_CLR_INTR */
5856     volatile ALT_I2C_CLR_RX_UNDER_t        ic_clr_rx_under;        /* ALT_I2C_CLR_RX_UNDER */
5857     volatile ALT_I2C_CLR_RX_OVER_t         ic_clr_rx_over;         /* ALT_I2C_CLR_RX_OVER */
5858     volatile ALT_I2C_CLR_TX_OVER_t         ic_clr_tx_over;         /* ALT_I2C_CLR_TX_OVER */
5859     volatile ALT_I2C_CLR_RD_REQ_t          ic_clr_rd_req;          /* ALT_I2C_CLR_RD_REQ */
5860     volatile ALT_I2C_CLR_TX_ABRT_t         ic_clr_tx_abrt;         /* ALT_I2C_CLR_TX_ABRT */
5861     volatile ALT_I2C_CLR_RX_DONE_t         ic_clr_rx_done;         /* ALT_I2C_CLR_RX_DONE */
5862     volatile ALT_I2C_CLR_ACTIVITY_t        ic_clr_activity;        /* ALT_I2C_CLR_ACTIVITY */
5863     volatile ALT_I2C_CLR_STOP_DET_t        ic_clr_stop_det;        /* ALT_I2C_CLR_STOP_DET */
5864     volatile ALT_I2C_CLR_START_DET_t       ic_clr_start_det;       /* ALT_I2C_CLR_START_DET */
5865     volatile ALT_I2C_CLR_GEN_CALL_t        ic_clr_gen_call;        /* ALT_I2C_CLR_GEN_CALL */
5866     volatile ALT_I2C_EN_t                  ic_enable;              /* ALT_I2C_EN */
5867     volatile ALT_I2C_STAT_t                ic_status;              /* ALT_I2C_STAT */
5868     volatile ALT_I2C_TXFLR_t               ic_txflr;               /* ALT_I2C_TXFLR */
5869     volatile ALT_I2C_RXFLR_t               ic_rxflr;               /* ALT_I2C_RXFLR */
5870     volatile ALT_I2C_SDA_HOLD_t            ic_sda_hold;            /* ALT_I2C_SDA_HOLD */
5871     volatile ALT_I2C_TX_ABRT_SRC_t         ic_tx_abrt_source;      /* ALT_I2C_TX_ABRT_SRC */
5872     volatile ALT_I2C_SLV_DATA_NACK_ONLY_t  ic_slv_data_nack_only;  /* ALT_I2C_SLV_DATA_NACK_ONLY */
5873     volatile ALT_I2C_DMA_CR_t              ic_dma_cr;              /* ALT_I2C_DMA_CR */
5874     volatile ALT_I2C_DMA_TDLR_t            ic_dma_tdlr;            /* ALT_I2C_DMA_TDLR */
5875     volatile ALT_I2C_DMA_RDLR_t            ic_dma_rdlr;            /* ALT_I2C_DMA_RDLR */
5876     volatile ALT_I2C_SDA_SETUP_t           ic_sda_setup;           /* ALT_I2C_SDA_SETUP */
5877     volatile ALT_I2C_ACK_GENERAL_CALL_t    ic_ack_general_call;    /* ALT_I2C_ACK_GENERAL_CALL */
5878     volatile ALT_I2C_EN_STAT_t             ic_enable_status;       /* ALT_I2C_EN_STAT */
5879     volatile ALT_I2C_FS_SPKLEN_t           ic_fs_spklen;           /* ALT_I2C_FS_SPKLEN */
5880     volatile uint32_t                      _pad_0xa4_0xf3[20];     /* *UNDEFINED* */
5881     volatile ALT_I2C_COMP_PARAM_1_t        ic_comp_param_1;        /* ALT_I2C_COMP_PARAM_1 */
5882     volatile ALT_I2C_COMP_VER_t            ic_comp_version;        /* ALT_I2C_COMP_VER */
5883     volatile ALT_I2C_COMP_TYPE_t           ic_comp_type;           /* ALT_I2C_COMP_TYPE */
5884 };
5885 
5886 /* The typedef declaration for register group ALT_I2C. */
5887 typedef volatile struct ALT_I2C_s  ALT_I2C_t;
5888 /* The struct declaration for the raw register contents of register group ALT_I2C. */
5889 struct ALT_I2C_raw_s
5890 {
5891     volatile uint32_t  ic_con;                 /* ALT_I2C_CON */
5892     volatile uint32_t  ic_tar;                 /* ALT_I2C_TAR */
5893     volatile uint32_t  ic_sar;                 /* ALT_I2C_SAR */
5894     volatile uint32_t  _pad_0xc_0xf;           /* *UNDEFINED* */
5895     volatile uint32_t  ic_data_cmd;            /* ALT_I2C_DATA_CMD */
5896     volatile uint32_t  ic_ss_scl_hcnt;         /* ALT_I2C_SS_SCL_HCNT */
5897     volatile uint32_t  ic_ss_scl_lcnt;         /* ALT_I2C_SS_SCL_LCNT */
5898     volatile uint32_t  ic_fs_scl_hcnt;         /* ALT_I2C_FS_SCL_HCNT */
5899     volatile uint32_t  ic_fs_scl_lcnt;         /* ALT_I2C_FS_SCL_LCNT */
5900     volatile uint32_t  _pad_0x24_0x2b[2];      /* *UNDEFINED* */
5901     volatile uint32_t  ic_intr_stat;           /* ALT_I2C_INTR_STAT */
5902     volatile uint32_t  ic_intr_mask;           /* ALT_I2C_INTR_MSK */
5903     volatile uint32_t  ic_raw_intr_stat;       /* ALT_I2C_RAW_INTR_STAT */
5904     volatile uint32_t  ic_rx_tl;               /* ALT_I2C_RX_TL */
5905     volatile uint32_t  ic_tx_tl;               /* ALT_I2C_TX_TL */
5906     volatile uint32_t  ic_clr_intr;            /* ALT_I2C_CLR_INTR */
5907     volatile uint32_t  ic_clr_rx_under;        /* ALT_I2C_CLR_RX_UNDER */
5908     volatile uint32_t  ic_clr_rx_over;         /* ALT_I2C_CLR_RX_OVER */
5909     volatile uint32_t  ic_clr_tx_over;         /* ALT_I2C_CLR_TX_OVER */
5910     volatile uint32_t  ic_clr_rd_req;          /* ALT_I2C_CLR_RD_REQ */
5911     volatile uint32_t  ic_clr_tx_abrt;         /* ALT_I2C_CLR_TX_ABRT */
5912     volatile uint32_t  ic_clr_rx_done;         /* ALT_I2C_CLR_RX_DONE */
5913     volatile uint32_t  ic_clr_activity;        /* ALT_I2C_CLR_ACTIVITY */
5914     volatile uint32_t  ic_clr_stop_det;        /* ALT_I2C_CLR_STOP_DET */
5915     volatile uint32_t  ic_clr_start_det;       /* ALT_I2C_CLR_START_DET */
5916     volatile uint32_t  ic_clr_gen_call;        /* ALT_I2C_CLR_GEN_CALL */
5917     volatile uint32_t  ic_enable;              /* ALT_I2C_EN */
5918     volatile uint32_t  ic_status;              /* ALT_I2C_STAT */
5919     volatile uint32_t  ic_txflr;               /* ALT_I2C_TXFLR */
5920     volatile uint32_t  ic_rxflr;               /* ALT_I2C_RXFLR */
5921     volatile uint32_t  ic_sda_hold;            /* ALT_I2C_SDA_HOLD */
5922     volatile uint32_t  ic_tx_abrt_source;      /* ALT_I2C_TX_ABRT_SRC */
5923     volatile uint32_t  ic_slv_data_nack_only;  /* ALT_I2C_SLV_DATA_NACK_ONLY */
5924     volatile uint32_t  ic_dma_cr;              /* ALT_I2C_DMA_CR */
5925     volatile uint32_t  ic_dma_tdlr;            /* ALT_I2C_DMA_TDLR */
5926     volatile uint32_t  ic_dma_rdlr;            /* ALT_I2C_DMA_RDLR */
5927     volatile uint32_t  ic_sda_setup;           /* ALT_I2C_SDA_SETUP */
5928     volatile uint32_t  ic_ack_general_call;    /* ALT_I2C_ACK_GENERAL_CALL */
5929     volatile uint32_t  ic_enable_status;       /* ALT_I2C_EN_STAT */
5930     volatile uint32_t  ic_fs_spklen;           /* ALT_I2C_FS_SPKLEN */
5931     volatile uint32_t  _pad_0xa4_0xf3[20];     /* *UNDEFINED* */
5932     volatile uint32_t  ic_comp_param_1;        /* ALT_I2C_COMP_PARAM_1 */
5933     volatile uint32_t  ic_comp_version;        /* ALT_I2C_COMP_VER */
5934     volatile uint32_t  ic_comp_type;           /* ALT_I2C_COMP_TYPE */
5935 };
5936 
5937 /* The typedef declaration for the raw register contents of register group ALT_I2C. */
5938 typedef volatile struct ALT_I2C_raw_s  ALT_I2C_raw_t;
5939 #endif  /* __ASSEMBLY__ */
5940 
5941 
5942 #ifdef __cplusplus
5943 }
5944 #endif  /* __cplusplus */
5945 #endif  /* __ALTERA_ALT_I2C_H__ */
5946