[linux-yocto] [PATCH 5/5] drivers/i2c: Collapse AI2C driver implementation - adding i2c_regs
Paul Butler
butler.paul at gmail.com
Mon Oct 28 17:15:53 PDT 2013
Signed-off-by: Paul Butler <paul.butler at windriver.com>
---
drivers/i2c/busses/ai2c/ai2c_i2c_regs.h | 2165 +++++++++++++++++++++++++++++++
1 file changed, 2165 insertions(+)
create mode 100644 drivers/i2c/busses/ai2c/ai2c_i2c_regs.h
diff --git a/drivers/i2c/busses/ai2c/ai2c_i2c_regs.h b/drivers/i2c/busses/ai2c/ai2c_i2c_regs.h
new file mode 100644
index 0000000..64e847a
--- /dev/null
+++ b/drivers/i2c/busses/ai2c/ai2c_i2c_regs.h
@@ -0,0 +1,2165 @@
+/*
+ * Copyright (C) 2013 LSI Corporation
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*! @file ai2c_i2c_regs.h
+ * @brief I2C Hardware Layer Register Map
+ */
+
+#ifndef _AI2C_I2C_REGS_H_
+#define _AI2C_I2C_REGS_H_
+
+/*!
+ * @defgroup _i2c_hw_regs_ I2C Hardware Register Map
+ * @brief I2C Hardware Registers (i2chwregs)
+ * @details ACP HW registers used to communicate with I2C devices on the
+ * I2C bus immediately associated with the ACP
+ * @{
+ * @ingroup _i2c_
+ */
+
+/*****************************************************************************
+* Macros & Constants *
+*****************************************************************************/
+
+/*
+ * Register Group offsets
+ *
+ * The ACP has 8 groups of these handles at offsets 0x00, 0x20, 0x40,
+ * 0x60, 0x80, 0xA0, 0xC0, and 0xE0.
+ */
+#define AI2C_TIMER_SSP_OFFSET (0x0000) /*!< Offset to start of
+ SSP timer group */
+#define AI2C_TIMER_I2C_OFFSET (0x0020) /*!< Offset to start of
+ I2C timer group */
+#define AI2C_TIMER_UART0_CLK_OFFSET (0x0040) /*!< Offset to start of
+ UART0 Clk timer group */
+#define AI2C_TIMER_UART1_CLK_OFFSET (0x0060) /*!< Offset to start of
+ UART1 Clk timer group */
+#define AI2C_TIMER_WDOG_RESET_OFFSET (0x0080) /*!< Offset to start of
+ Watchdog Reset timer group */
+#define AI2C_TIMER_GP5_OFFSET (0x00A0) /*!< Offset to start of General
+ Purpose Timer #5 group */
+#define AI2C_TIMER_GP6_OFFSET (0x00C0) /*!< Offset to start of General
+ Purpose Timer #6 group */
+#define AI2C_TIMER_GP7_OFFSET (0x00E0) /*!< Offset to start of General
+ Purpose Timer #7 group */
+
+/*
+ * Register handle offsets
+ */
+
+#define AI2C_REG_TIMER_TLV (0x0000) /*!< Byte offset to Timer
+ load value register */
+#define AI2C_REG_TIMER_TV (0x0004) /*!< Byte offset to Timer
+ value register */
+#define AI2C_REG_TIMER_TC (0x0008) /*!< Byte offset to Timer
+ control register */
+#define AI2C_REG_TIMER_TIC (0x000C) /*!< Byte offset to Timer
+ interrupt clear register */
+#define AI2C_REG_TIMER_RIS (0x0010) /*!< Byte offset to Timer
+ raw interrupt source register */
+#define AI2C_REG_TIMER_IS (0x0014) /*!< Byte offset to Timer
+ interrupt source */
+#define AI2C_REG_TIMER_BLV (0x0018) /*!< Byte offset to Timer
+ background load value register */
+
+
+/*****************************************************************************
+* Register Definitions *
+*****************************************************************************/
+
+/*! @struct ai2c_reg_timer_tlv
+ * @brief Timer load value register
+ * Let:
+ * Prescale=<1..4>
+ * Clk_Period=K MHz
+ * Output Freq=J MHz
+ *
+ * Solve,
+ * Output Freq = (Clk_Period / Timer Prescale) /
+ * (Timer Load Value + 1)
+ * for
+ * "Timer Load Value"
+ *
+ * Example:
+ * Prescale=1, Clk_Period=400 MHz, Output Freq=4 MHz
+ * 4 MHZ = (400 MHz / 1) / (TLV + 1)
+ * TLV = (400/4) - 1
+ * = 99
+ */
+struct ai2c_reg_timer_tlv {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned value:32; /*!< bits 31:00 timer load value */
+#else
+ unsigned value:32; /*!< bits 31:00 timer load value */
+#endif
+};
+
+/*! @struct ai2c_reg_timer_tv
+ * @brief Timer value register
+ */
+struct ai2c_reg_timer_tv {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned value:32; /*!< bits 31:00 timer value */
+#else
+ unsigned value:32; /*!< bits 31:00 timer value */
+#endif
+};
+
+/*! @struct ai2c_reg_timer_tc
+ * @brief Timer control register
+ */
+struct ai2c_reg_timer_tc {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned reserved_31_08:24; /* bits 31:08 reserved */
+ unsigned te:1; /*!< bits 7 timer enable */
+ unsigned rmode:1; /*!< bits 6 mode */
+ unsigned ie:1; /*!< bits 5 interrupt enable */
+ unsigned omode:1; /*!< bits 4 output mode */
+ unsigned pres:2; /*!< bits 3: 2 pre-scaler */
+ unsigned size:1; /*!< bits 1 size */
+ unsigned osm:1; /*!< bits 0 one shot mode */
+#else
+ unsigned osm:1; /*!< bits 0 one shot mode */
+ unsigned size:1; /*!< bits 1 size */
+ unsigned pres:2; /*!< bits 3: 2 pre-scaler */
+ unsigned omode:1; /*!< bits 4 output mode */
+ unsigned ie:1; /*!< bits 5 interrupt enable */
+ unsigned rmode:1; /*!< bits 6 mode */
+ unsigned te:1; /*!< bits 7 timer enable */
+ unsigned reserved_31_08:24; /* bits 31:08 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_timer_tic
+ * @brief Timer interrupt clear register
+ */
+struct ai2c_reg_timer_tic {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned value:31; /* bits 31:01 reserved */
+ unsigned tic:1; /*!< bits 0 timer interrupt clear */
+#else
+ unsigned tic:1; /*!< bits 0 timer interrupt clear */
+ unsigned value:31; /* bits 31:01 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_timer_ris
+ * @brief Timer raw interrupt status register
+ */
+struct ai2c_reg_timer_ris {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned reserved:31; /* bits 31:01 reserved */
+ unsigned ris:1; /*!< bits 0 raw interrupt status */
+#else
+ unsigned ris:1; /*!< bits 0 raw interrupt status */
+ unsigned reserved:31; /* bits 31:01 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_timer_is
+ * @brief Timer interrupt status register
+ */
+struct ai2c_reg_timer_is {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned reserved:31; /* bits 31:01 reserved */
+ unsigned is:1; /*!< bits 0 interrupt status */
+#else
+ unsigned is:1; /*!< bits 0 interrupt status */
+ unsigned reserved:31; /* bits 31:01 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_timer_blv
+ * @brief Timer background load value register
+ */
+struct ai2c_reg_timer_blv {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned value:32; /*!< bits 31:00 background load value */
+#else
+ unsigned value:32; /*!< bits 31:00 background load value */
+#endif
+};
+
+
+/******************************************************************************
+ * _AI2C_CFG_NODE_REG_DEFINES_H_
+ *****************************************************************************/
+
+ /* NODE 0x1a , TARGET 0xff*/
+
+#define AI2C_CFG_NODE_NODE_INFO_0 (0x00000000)
+#define AI2C_CFG_NODE_NODE_INFO_1 (0x00000004)
+#define AI2C_CFG_NODE_NODE_INFO_2 (0x00000008)
+#define AI2C_CFG_NODE_NODE_INFO_3 (0x0000000c)
+#define AI2C_CFG_NODE_NODE_CFG (0x00000010)
+#define AI2C_CFG_NODE_WRITE_ERR_ADDR (0x00000014)
+#define AI2C_CFG_NODE_NODE_ERROR (0x00000018)
+#define AI2C_CFG_NODE_NODE_ERROR_DATA_R (0x0000001c)
+#define AI2C_CFG_NODE_NODE_SCRATCH (0x00000020)
+
+
+/*! @struct ai2c_cfg_node_node_info_0_r_t
+ * @brief CFG Node Info Register 0
+ * @details This register contains the module type and module revision
+ * for the module containing this CFG Node.
+ */
+struct ai2c_cfg_node_node_info_0_r {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned module_type:16;
+ unsigned module_revision:16;
+#else /* Little Endian */
+ unsigned module_revision:16;
+ unsigned module_type:16;
+#endif
+};
+
+/*! @struct ai2c_cfg_node_node_info_1_r
+ * @brief CFG Node Info Register 1
+ * @details This read-only register contains the module instance
+ * and lower 24 bits of the module info field for the module
+ * containing this CFG Node.
+ */
+struct ai2c_cfg_node_node_info_1_r {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned module_info:24;
+ unsigned module_instance:8;
+#else /* Little Endian */
+ unsigned module_instance:8;
+ unsigned module_info:24;
+#endif
+};
+
+/*! @struct ai2c_cfg_node_node_info_2_r
+ * @brief CFG Node Info Register 2
+ * @details This read-only register contains bits 55:24 of the module info field for the module containing this CFG Node.
+ */
+struct ai2c_cfg_node_node_info_2_r {
+ unsigned int module_info;
+};
+
+/*! @struct ai2c_cfg_node_node_info_3_r
+ * @brief CFG Node Info Register 3
+ * @details This read-only register contains bits 87:56 of the module info field for the module containing this CFG Node.
+ */
+struct ai2c_cfg_node_node_info_3_r {
+ unsigned int module_info;
+};
+
+/*! @struct ai2c_cfg_node_node_cfg_r
+ * @brief CFG Node Configuration Register
+ * @details This register contains fields that control the operation of the CFG node.
+ */
+struct ai2c_cfg_node_node_cfg_r {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned fpga:1;
+ unsigned reserved0:26;
+ unsigned opt_fill:1;
+ unsigned clk_apb_sel:2;
+ unsigned parity_enable:1;
+ unsigned parity_odd:1;
+#else /* Little Endian */
+ unsigned parity_odd:1;
+ unsigned parity_enable:1;
+ unsigned clk_apb_sel:2;
+ unsigned opt_fill:1;
+ unsigned reserved0:26;
+ unsigned fpga:1;
+#endif
+};
+
+/*! @struct ai2c_cfg_node_write_err_addr_r
+ * @brief CFG Node Write Error Address Register
+ * @details This read-only register holds the address associated with the first write error for the last write command.
+ */
+struct ai2c_cfg_node_write_err_addr_r {
+ unsigned int error_address;
+};
+
+/*! @struct ai2c_cfg_node_node_error_r
+ * @brief CFG Node Error Register
+ * @details This register holds the sticky errors detected by the CFG node.
+ */
+struct ai2c_cfg_node_node_error_r {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned reserved0:26;
+ unsigned node_error:1;
+ unsigned parity_error:1;
+ unsigned afifo_overflow:1;
+ unsigned afifo_underflow:1;
+ unsigned dfifo_overflow:1;
+ unsigned dfifo_underflow:1;
+#else /* Little Endian */
+ unsigned dfifo_underflow:1;
+ unsigned dfifo_overflow:1;
+ unsigned afifo_underflow:1;
+ unsigned afifo_overflow:1;
+ unsigned parity_error:1;
+ unsigned node_error:1;
+ unsigned reserved0:26;
+#endif
+};
+
+/*! @struct ai2c_cfg_node_node_error_data_r
+ * @brief CFG Node Error Data Register
+ * @details This register holds the error code associated with the first protocol error detected by the CFG node.
+ */
+struct ai2c_cfg_node_node_error_data_r {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned reserved0:28;
+ unsigned error_code:4;
+#else /* Little Endian */
+ unsigned error_code:4;
+ unsigned reserved0:28;
+#endif
+};
+
+/*! @struct ai2c_cfg_node_node_scratch_r
+ * @brief CFG Node Scratch Register
+ * @details This register is a scratch location for software's use.
+ */
+struct ai2c_cfg_node_node_scratch_r {
+ unsigned int scratch;
+};
+
+
+/******************************************************************************
+ * Register handle offsets (X1/X2 aka ACP3400, ACP2500) *
+ * *
+ * Regions:0x143.0, 0x14c.0 *
+ ******************************************************************************/
+
+#define AI2C_REG_I2C_MAST_XMT_CFG (0x0000) /*!< Offset to reg Master
+ Transmit Config */
+#define AI2C_REG_I2C_MAST_RCV_CFG (0x0004) /*!< Offset to reg Master
+ Receive Config */
+#define AI2C_REG_I2C_MAST_XMT_STAT (0x0008) /*!< Offset to reg Master
+ Transmit Status */
+#define AI2C_REG_I2C_MAST_RCV_STAT (0x000C) /*!< Offset to reg Master
+ Receive Status */
+#define AI2C_REG_I2C_MAST_INT_ENABLE (0x0010) /*!< Offset to reg Master
+ Interrupt Enable */
+#define AI2C_REG_I2C_MAST_INT_CLEAR (0x0014) /*!< Offset to reg Master
+ Interrupt Clear */
+#define AI2C_REG_I2C_MAST_INT_STAT (0x0018) /*!< Offset to reg Master
+ Interrupt Status */
+#define AI2C_REG_I2C_MAST_CLK_CFG (0x001C) /*!< Offset to reg Master
+ Clock Config */
+#define AI2C_REG_I2C_MAST_START_HLD_CFG (0x0020) /*!< Offset to reg Master
+ Start Hold
+ Timing Config */
+#define AI2C_REG_I2C_MAST_STOP_HLD_CFG (0x0024) /*!< Offset to reg Master
+ Stop Hold
+ Timing Config */
+#define AI2C_REG_I2C_MAST_DATA_HLD_CFG (0x0028) /*!< Offset to reg Master
+ Data Hold
+ Timing Config */
+#define AI2C_REG_I2C_MAST_BYPASS_MODE (0x002C) /*!< Offset to reg Master
+ Bypass Mode */
+#define AI2C_REG_I2C_MAST_SLV_ADDRESS (0x0030) /*!< Offset to reg Master
+ Slave Address target */
+#define AI2C_REG_I2C_MAST_TXD0 (0x0034) /*!< Offset to reg Master
+ Transmit Data 0 */
+#define AI2C_REG_I2C_MAST_TXD1 (0x0038) /*!< Offset to reg Master
+ Transmit Data 1 */
+#define AI2C_REG_I2C_MAST_RXD0 (0x003C) /*!< Offset to reg Master
+ Receive Data 0 */
+#define AI2C_REG_I2C_MAST_RXD1 (0x0040) /*!< Offset to reg Master
+ Receive Data 1 */
+#define AI2C_REG_I2C_SLV_TXRXCONFIG (0x0044) /*!< Offset to reg Slave
+ Transmit/Receive
+ Config */
+#define AI2C_REG_I2C_SLV_STAT (0x0048) /*!< Offset to reg
+ Slave Status */
+#define AI2C_REG_I2C_SLV_SELF_ADDRESS (0x004C) /*!< Offset to reg
+ Slave Self Address */
+#define AI2C_REG_I2C_SLV_TXD0 (0x0050) /*!< Offset to reg Slave
+ Transmit Data 0 */
+#define AI2C_REG_I2C_SLV_TXD1 (0x0054) /*!< Offset to reg Slave
+ Transmit Data 1 */
+#define AI2C_REG_I2C_SLV_RXD0 (0x0058) /*!< Offset to reg Slave
+ Receive Data 0 */
+#define AI2C_REG_I2C_SLV_RXD1 (0x005C) /*!< Offset to reg Slave
+ Receive Data 1 */
+#define AI2C_REG_I2C_SLV_INT_ENABLE (0x0060) /*!< Offset to reg Slave
+ Interrupt Enable */
+#define AI2C_REG_I2C_SLV_INT_CLEAR (0x0064) /*!< Offset to reg Slave
+ Interrupt Clear */
+#define AI2C_REG_I2C_SLV_DATA_HLD_CFG (0x0068) /*!< Offset to reg Slave
+ Data Hold
+ Timing Config */
+#define AI2C_REG_I2C_SLV_CLK_CFG (0x006C) /*!< Offset to reg
+ Slave Clock Config */
+
+
+/**********************************
+ * Register Structure definitions *
+ *********************************/
+
+/*! @struct ai2c_reg_i2c_mast_xmt_cfg
+ * @brief I2C Master XMIT Cfg register
+ */
+struct ai2c_reg_i2c_mast_xmt_cfg {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:2; /* bits 31:30 reserved */
+ unsigned stop:1; /*!< bits 29 Stop I2C clock */
+ unsigned:18; /* bits 28:11 reserved */
+ unsigned zeroAll:1; /*!< bits 10 Zero all control/data */
+ unsigned command:1; /*!< bits 9 write=0, read=1 */
+ unsigned mastModeActive:1; /*!< bits 8 Master mode active */
+ unsigned tenBitAddr:1; /*!< bits 7 10-bit address mode */
+ unsigned:1; /* bits 6 reserved */
+ unsigned endianness:1; /*!< bits 5 0=BE (def), 1=LE */
+ unsigned numBytes:4; /*!< bits 4:1 number of bytes to xmit*/
+ unsigned xmtReady:1; /*!< bits 0 Transmit Ready */
+#else
+ unsigned xmtReady:1; /*!< bits 0 Transmit Ready */
+ unsigned numBytes:4; /*!< bits 4:1 number of bytes to xmit*/
+ unsigned endianness:1; /*!< bits 5 0=BE (def), 1=LE */
+ unsigned:1; /* bits 6 reserved */
+ unsigned tenBitAddr:1; /*!< bits 7 10-bit address mode */
+ unsigned mastModeActive:1; /*!< bits 8 Master mode active */
+ unsigned command:1; /*!< bits 9 write=0, read=1 */
+ unsigned zeroAll:1; /*!< bits 10 Zero all control/data */
+ unsigned:18; /* bits 28:11 reserved */
+ unsigned stop:1; /*!< bits 29 Stop I2C clock */
+ unsigned:2; /* bits 31:30 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_mast_rcv_cfg
+ * @brief I2C Master RCV Cfg register
+ */
+struct ai2c_reg_i2c_mast_rcv_cfg {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned reserved_31_8:24; /* bits 31:8 reserved */
+ unsigned reserved_7_6:2; /* bits 7:6 reserved */
+ unsigned chgEndianness:1; /*!< bits 5 0=BE (def), 1=LE */
+ unsigned numBytes:4; /*!< bits 4:1 number of bytes to rcv */
+ unsigned rcvReady:1; /*!< bits 0 Receive Ready */
+#else
+ unsigned rcvReady:1; /*!< bits 0 Receive Ready */
+ unsigned numBytes:4; /*!< bits 4:1 number of bytes to rcv */
+ unsigned chgEndianness:1; /*!< bits 5 0=BE (def), 1=LE */
+ unsigned reserved_7_6:2; /* bits 7:6 reserved */
+ unsigned reserved_31_8:24; /* bits 31:8 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_mast_xmt_stat
+ * @brief I2C Master XMIT Status register
+ */
+struct ai2c_reg_i2c_mast_xmt_stat {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned reserved_31_8:25; /* bits 31:8 reserved */
+ unsigned reserved_7_2:5; /* bits 7:2 reserved */
+ unsigned xmtError:1; /*!< bits 1 Transmission error */
+ unsigned xmtDone:1; /*!< bits 0 Transmit done */
+#else
+ unsigned xmtDone:1; /*!< bits 0 Transmit done */
+ unsigned xmtError:1; /*!< bits 1 Transmission error */
+ unsigned reserved_7_2:5; /* bits 7:2 reserved */
+ unsigned reserved_31_8:25; /* bits 31:8 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_mast_rcv_stat
+ * @brief I2C Master RCV Status register
+ */
+struct ai2c_reg_i2c_mast_rcv_stat {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned reserved_31_6:26; /* bits 31:6 reserved */
+ unsigned numBytesRcv:4; /*!< bits 5:2 Num Bytes received */
+ unsigned rcvError:1; /*!< bits 1 Reception error */
+ unsigned rcvDone:1; /*!< bits 0 Receive done */
+#else
+ unsigned rcvDone:1; /*!< bits 0 Receive done */
+ unsigned rcvError:1; /*!< bits 1 Reception error */
+ unsigned numBytesRcv:4; /*!< bits 5:2 Num Bytes received */
+ unsigned reserved_31_6:26; /* bits 31:6 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_mast_int_enable
+ * @brief I2C Master Interrupt Enable register
+ */
+struct ai2c_reg_i2c_mast_int_enable {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned reserved_31_4:28; /* bits 31:4 reserved */
+ unsigned intRcvErr:1; /*!< bits 3 Enable int on rcv error */
+ unsigned intXmtErr:1; /*!< bits 2 Enable int on xmt error */
+ unsigned intRcvComplete:1; /*!< bits 1 Enable int on completion
+ of received data */
+ unsigned intXmtComplete:1; /*!< bits 0 Enable int on completion
+ of transmitted data */
+#else
+ unsigned intXmtComplete:1; /*!< bits 0 Enable int on completion
+ of transmitted data */
+ unsigned intRcvComplete:1; /*!< bits 1 Enable int on completion
+ of received data */
+ unsigned intXmtErr:1; /*!< bits 2 Enable int on xmt error */
+ unsigned intRcvErr:1; /*!< bits 3 Enable int on rcv error */
+ unsigned reserved_31_4:28; /* bits 31:4 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_mast_int_clear
+ * @brief I2C Master Interrupt Clear register
+ */
+struct ai2c_reg_i2c_mast_int_clear {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned reserved_31_4:28; /* bits 31:4 reserved */
+ unsigned intRcvErr:1; /*!< bits 3 Clear int on rcv error */
+ unsigned intXmtErr:1; /*!< bits 2 Clear int on xmt error */
+ unsigned intRcvComplete:1; /*!< bits 1 Clear int on completion
+ of received data */
+ unsigned intXmtComplete:1; /*!< bits 0 Clear int on completion
+ of transmitted data */
+#else
+ unsigned intXmtComplete:1; /*!< bits 0 Clear int on completion
+ of transmitted data */
+ unsigned intRcvComplete:1; /*!< bits 1 Clear int on completion
+ of received data */
+ unsigned intXmtErr:1; /*!< bits 2 Clear int on xmt error */
+ unsigned intRcvErr:1; /*!< bits 3 Clear int on rcv error */
+ unsigned reserved_31_4:28; /* bits 31:4 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_mast_int_stat
+ * @brief I2C Master Interrupt Status register
+ */
+struct ai2c_reg_i2c_mast_int_stat {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned reserved_31_4:28; /* bits 31:4 reserved */
+ unsigned rcvErr:1; /*!< bits 3 Receive error */
+ unsigned xmtDone:1; /*!< bits 2 Transmit done */
+ unsigned rcvDataRdy:1; /*!< bits 1 Receive data ready */
+ unsigned xmtErr:1; /*!< bits 0 Transmit error */
+#else
+ unsigned xmtErr:1; /*!< bits 0 Transmit error */
+ unsigned rcvDataRdy:1; /*!< bits 1 Receive data ready */
+ unsigned xmtDone:1; /*!< bits 2 Transmit done */
+ unsigned rcvErr:1; /*!< bits 3 Receive error */
+ unsigned reserved_31_4:28; /* bits 31:4 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_mast_clk_cfg
+ * @brief I2C Master Clock Configuration register
+ */
+struct ai2c_reg_i2c_mast_clk_cfg {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned reserved_31_26:6; /* bits 31:26 reserved */
+ unsigned pclkHighSCL:10; /*!< bits 25:16 # of pclk durations that
+ equal high period of SCL*/
+ unsigned reserved_15_10:6; /* bits 15:10 reserved */
+ unsigned pclkLowSCL:10; /*!< bits 9:0 # of pclk durations that
+ equal low period of SCL */
+#else
+ unsigned pclkLowSCL:10; /*!< bits 9:0 # of pclk durations that
+ equal low period of SCL */
+ unsigned reserved_15_10:6; /* bits 15:10 reserved */
+ unsigned pclkHighSCL:10; /*!< bits 25:16 # of pclk durations that
+ equal high period of SCL*/
+ unsigned reserved_31_26:6; /* bits 31:26 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_mast_start_hld_cfg
+ * @brief I2C Master Start Hold Timing Configuration register
+ */
+struct ai2c_reg_i2c_mast_start_hld_cfg {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned reserved_31_26:6; /* bits 31:26 reserved */
+ unsigned pclkStart:10; /*!< bits 25:16 # of pclk durations that
+ equal start cond on SDA */
+ unsigned reserved_15_10:6; /* bits 15:10 reserved */
+ unsigned pclkSetup:10; /*!< bits 9:0 # of pclk durations that
+ equal setup cond on SDA */
+#else
+ unsigned pclkSetup:10; /*!< bits 9:0 # of pclk durations that
+ equal setup cond on SDA */
+ unsigned reserved_15_10:6; /* bits 15:10 reserved */
+ unsigned pclkStart:10; /*!< bits 25:16 # of pclk durations that
+ equal start cond on SDA */
+ unsigned reserved_31_26:6; /* bits 31:26 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_mast_stop_hld_cfg
+ * @brief I2C Master Stop Hold Timing Configuration register
+ */
+struct ai2c_reg_i2c_mast_stop_hld_cfg {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned reserved_31_26:6; /* bits 31:26 reserved */
+ unsigned pclkStop:10; /*!< bits 25:16 # of pclk durations that
+ equal stop cond on SDA */
+ unsigned reserved_15_10:6; /* bits 15:10 reserved */
+ unsigned pclkSetup:10; /*!< bits 9:0 # of pclk durations that
+ equal setup cond on SDA */
+#else
+ unsigned pclkSetup:10; /*!< bits 9:0 # of pclk durations that
+ equal setup cond on SDA */
+ unsigned reserved_15_10:6; /* bits 15:10 reserved */
+ unsigned pclkStop:10; /*!< bits 25:16 # of pclk durations that
+ equal stop cond on SDA */
+ unsigned reserved_31_26:6; /* bits 31:26 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_mast_data_hld_cfg
+ * @brief I2C Master Data Hold Timing Configuration register
+ */
+struct ai2c_reg_i2c_mast_data_hld_cfg {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned reserved_31_26:6; /* bits 31:26 reserved */
+ unsigned pclkStop:10; /*!< bits 25:16 # of pclk durations that
+ equal stop cond on SDA
+ for data changing */
+ unsigned reserved_15_10:6; /* bits 15:10 reserved */
+ unsigned pclkSetup:10; /*!< bits 9:0 # of pclk durations that
+ equal setup cond on SDA
+ for data changing */
+#else
+ unsigned pclkSetup:10; /*!< bits 9:0 # of pclk durations that
+ equal setup cond on SDA
+ for data changing */
+ unsigned reserved_15_10:6; /* bits 15:10 reserved */
+ unsigned pclkStop:10; /*!< bits 25:16 # of pclk durations that
+ equal stop cond on SDA
+ for data changing */
+ unsigned reserved_31_26:6; /* bits 31:26 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_mast_bypass_mode
+ * @brief I2C Master Bypass Mode register
+ */
+struct ai2c_reg_i2c_mast_bypass_mode {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned reserved_31_3:29; /* bits 31:3 reserved */
+ unsigned enableBypass:1; /*!< bits 2 Enable bypass mode */
+ unsigned SCLvalue:1; /*!< bits 1 SCL value */
+ unsigned SDAvalue:1; /*!< bits 0 SDA value */
+#else
+ unsigned SDAvalue:1; /*!< bits 0 SDA value */
+ unsigned SCLvalue:1; /*!< bits 1 SCL value */
+ unsigned enableBypass:1; /*!< bits 2 Enable bypass mode */
+ unsigned reserved_31_3:29; /* bits 31:3 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_mast_slv_address
+ * @brief I2C Master Slave Address register
+ */
+struct ai2c_reg_i2c_mast_slv_address {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned reserved_31_16:16; /* bits 31:16 reserved */
+ unsigned targSlvAddr:16; /*!< bits 16:0 Address of the slave
+ device being addressed */
+#else
+ unsigned targSlvAddr:16; /*!< bits 16:0 Address of the slave
+ device being addressed */
+ unsigned reserved_31_16:16; /* bits 31:16 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_mast_txd0
+ * @brief I2C Master Transmit Data 0 register
+ */
+struct ai2c_reg_i2c_mast_txd0 {
+#ifdef AI2C_BIG_ENDIAN
+ unsigned data:32; /*!< bits 31:0 Data to be transmitted */
+#else
+ unsigned data:32; /*!< bits 31:0 Data to be transmitted */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_mast_rxd0_t
+ * @brief I2C Master Receive Data 0 register
+ */
+struct ai2c_reg_i2c_mast_rxd0 {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned data:32; /*!< bits 31:0 Data received */
+#else
+ unsigned data:32; /*!< bits 31:0 Data received */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_slv_txrxconfig
+ * @brief I2C Slave Transmit/Receive Config register
+ */
+struct ai2c_reg_i2c_slv_txrxconfig {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned reserved_31_11:21; /* bits 31:11 reserved */
+ unsigned zeroAll:1; /*!< bits 10 Zero all control/data */
+ unsigned rcvEndianness:1; /*!< bits 9 0=BE (def), 1=LE */
+ unsigned slvModeActive:1; /*!< bits 8 Slave mode active */
+ unsigned tenBitAddr:1; /*!< bits 7 10-bit address mode */
+ unsigned xmtEndianness:1; /*!< bits 6 0=BE (def), 1=LE */
+ unsigned numBytes:5; /*!< bits 5:1 number of bytes to xmit*/
+ unsigned xmtReady:1; /*!< bits 0 Transmit Ready */
+#else
+ unsigned xmtReady:1; /*!< bits 0 Transmit Ready */
+ unsigned numBytes:5; /*!< bits 5:1 number of bytes to xmit*/
+ unsigned xmtEndianness:1; /*!< bits 6 0=BE (def), 1=LE */
+ unsigned tenBitAddr:1; /*!< bits 7 10-bit address mode */
+ unsigned slvModeActive:1; /*!< bits 8 Slave mode active */
+ unsigned rcvEndianness:1; /*!< bits 9 0=BE (def), 1=LE */
+ unsigned zeroAll:1; /*!< bits 10 Zero all control/data */
+ unsigned reserved_31_11:21; /* bits 31:11 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_slv_stat
+ * @brief I2C Slave Status register
+ */
+struct ai2c_reg_i2c_slv_stat {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned reserved_31_10:23; /* bits 31:10 reserved */
+ unsigned numBytesRcv:4; /*!< bits 9:5 # bytes rcved on slave
+ transaction */
+ unsigned slvXmtErr:1; /*!< bits 4 Slave xmit in error */
+ unsigned slvXmtDone:1; /*!< bits 3 Slave done xmit data */
+ unsigned rcvErr:1; /*!< bits 2 Rcv data in error */
+ unsigned cmdRcv:1; /*!< bits 1 Command received by slv*/
+ unsigned slvRcvRdy:1; /*!< bits 0 Slv rcved data ready */
+#else
+ unsigned slvRcvRdy:1; /*!< bits 0 Slv rcved data ready */
+ unsigned cmdRcv:1; /*!< bits 1 Command received by slv*/
+ unsigned rcvErr:1; /*!< bits 2 Rcv data in error */
+ unsigned slvXmtDone:1; /*!< bits 3 Slave done xmit data */
+ unsigned slvXmtErr:1; /*!< bits 4 Slave xmit in error */
+ unsigned numBytesRcv:4; /*!< bits 9:5 # bytes rcved on slave
+ transaction */
+ unsigned reserved_31_10:23; /* bits 31:10 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_slv_self_address
+ * @brief I2C Slave Self Address register
+ */
+struct ai2c_reg_i2c_slv_self_address {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned address:32; /*!< bits 31:0 address of APPI2C */
+#else
+ unsigned address:32; /*!< bits 31:0 address of APPI2C */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_slv_txd0
+ * @brief I2C Slave Transmit Data 0 register
+ */
+struct ai2c_reg_i2c_slv_txd0 {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned data:32; /*!< bits 31:0 Data to be transmitted */
+#else
+ unsigned data:32; /*!< bits 31:0 Data to be transmitted */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_slv_rxd0
+ * @brief I2C Slave Receive Data 0 register
+ */
+struct ai2c_reg_i2c_slv_rxd0 {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned data:32; /*!< bits 31:0 Data received */
+#else
+ unsigned data:32; /*!< bits 31:0 Data received */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_slv_int_enable
+ * @brief I2C Slave Interrupt Enable register
+ */
+struct ai2c_reg_i2c_slv_int_enable {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned reserved_31_4:28; /* bits 31:4 reserved */
+ unsigned intRcvErr:1; /*!< bits 3 Enable int on rcv error */
+ unsigned intRcvDataRdy:1; /*!< bits 2 Enable int on rcv ready */
+ unsigned intXmtErr:1; /*!< bits 1 Enable int on xmt error */
+ unsigned intXmtComplete:1; /*!< bits 0 Enable int on completion
+ of transmitted data */
+#else
+ unsigned intXmtComplete:1; /*!< bits 0 Enable int on completion
+ of transmitted data */
+ unsigned intXmtErr:1; /*!< bits 1 Enable int on xmt error */
+ unsigned intRcvDataRdy:1; /*!< bits 2 Enable int on rcv ready */
+ unsigned intRcvErr:1; /*!< bits 3 Enable int on rcv error */
+ unsigned reserved_31_4:28; /* bits 31:4 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_slv_int_clear
+ * @brief I2C Slave Interrupt Clear register
+ */
+struct ai2c_reg_i2c_slv_int_clear {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned reserved_31_4:28; /* bits 31:4 reserved */
+ unsigned intRcvErr:1; /*!< bits 3 Clear int on rcv error */
+ unsigned intRcvDataRdy:1; /*!< bits 2 Clear int on rcv ready */
+ unsigned intXmtErr:1; /*!< bits 1 Clear int on xmt error */
+ unsigned intXmtComplete:1; /*!< bits 0 Clear int on completion
+ of transmitted data */
+#else
+ unsigned intXmtComplete:1; /*!< bits 0 Clear int on completion
+ of transmitted data */
+ unsigned intXmtErr:1; /*!< bits 1 Clear int on xmt error */
+ unsigned intRcvDataRdy:1; /*!< bits 2 Clear int on rcv ready */
+ unsigned intRcvErr:1; /*!< bits 3 Clear int on rcv error */
+ unsigned reserved_31_4:28; /* bits 31:4 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_slv_data_hld_cfg
+ * @brief I2C Slave Data Hold Timing Config register
+ */
+struct ai2c_reg_i2c_slv_data_hld_cfg {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned reserved_31_26:6; /* bits 31:26 reserved */
+ unsigned pclkHold:10; /*!< bits 25:16 # of pclk durations that
+ equal hold cond on SDA */
+ unsigned reserved_15_10:6; /*!< bits 15:10 reserved */
+ unsigned pclkSetup:10; /*!< bits 9:0 # of pclk durations that
+ equal setup cond on SDA */
+#else
+ unsigned pclkSetup:10; /*!< bits 9:0 # of pclk durations that
+ equal setup cond on SDA */
+ unsigned reserved_15_10:6; /*!< bits 15:10 reserved */
+ unsigned pclkHold:10; /*!< bits 25:16 # of pclk durations that
+ equal hold cond on SDA */
+ unsigned reserved_31_26:6; /* bits 31:26 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_slv_clk_cfg
+ * @brief I2C Slave Clock Config register
+ */
+struct ai2c_reg_i2c_slv_clk_cfg {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned reserved_31_26:6; /* bits 31:26 reserved */
+ unsigned pclkLowSCL:10; /*!< bits 25:16 # of pclk durations that
+ equal low period of SCL*/
+ unsigned reserved_15_10:6; /* bits 15:10 reserved */
+ unsigned pclkHighSCL:10; /*!< bits 9:0 # of pclk durations that
+ equal high period of SCL*/
+#else
+ unsigned pclkHighSCL:10; /*!< bits 9:0 # of pclk durations that
+ equal high period of SCL*/
+ unsigned reserved_15_10:6; /* bits 15:10 reserved */
+ unsigned pclkLowSCL:10; /*!< bits 25:16 # of pclk durations that
+ equal low period of SCL*/
+ unsigned reserved_31_26:6; /* bits 31:26 reserved */
+#endif
+};
+
+
+/******************************************************************************
+ * Register handle offsets (X7 aka AXM55xx) *
+ * *
+ * Regions:0x143.0, 0x14c.0, 0x152.0 *
+ * *
+ * Regerence: AMBA (tm) Peripheral I2c Bus Controller with SMB Functions *
+ * (API2C) Reference Manual, Version 0.1, April 2011, *
+ * DB13-00329-00. *
+ ******************************************************************************/
+
+#define AI2C_REG_I2C_X7_GLOBAL_CONTROL (0x0000) /*!< Offset to reg
+ Global Control */
+#define AI2C_REG_I2C_X7_INTERRUPT_STATUS (0x0004) /*!< Offset to reg
+ Interrupt Status */
+#define AI2C_REG_I2C_X7_INTERRUPT_ENABLE (0x0008) /*!< Offset to reg
+ Interrupt Enable */
+#define AI2C_REG_I2C_X7_WAIT_TIMER_CONTROL (0x000C) /*!< Offset to reg
+ Wait Timer Control */
+#define AI2C_REG_I2C_X7_IBML_TIMEOUT (0x0010) /*!< Offset to reg
+ IBML Timeout */
+#define AI2C_REG_I2C_X7_IBML_LOW_MEXT (0x0014) /*!< Offset to reg
+ IBML Low MEXT */
+#define AI2C_REG_I2C_X7_IBML_LOW_SEXT (0x0018) /*!< Offset to reg
+ IBML Low SEXT */
+#define AI2C_REG_I2C_X7_TIMER_CLOCK_DIV (0x001C) /*!< Offset to reg
+ Timer Clock Division */
+#define AI2C_REG_I2C_X7_I2C_BUS_MONITOR (0x0020) /*!< Offset to reg I2C
+ Bus Monitor */
+#define AI2C_REG_I2C_X7_SOFT_RESET (0x0024) /*!< Offset to reg Soft
+ Reset */
+#define AI2C_REG_I2C_X7_MST_COMMAND (0x0028) /*!< Offset to reg
+ Master Command */
+#define AI2C_REG_I2C_X7_MST_RX_XFER (0x002C) /*!< Offset to reg
+ Master Receive
+ Transfer */
+#define AI2C_REG_I2C_X7_MST_TX_XFER (0x0030) /*!< Offset to reg
+ Master Transmit
+ Transfer */
+#define AI2C_REG_I2C_X7_MST_ADDR_1 (0x0034) /*!< Offset to reg
+ Master Address 1 */
+#define AI2C_REG_I2C_X7_MST_ADDR_2 (0x0038) /*!< Offset to reg
+ Master Address 2 */
+#define AI2C_REG_I2C_X7_MST_DATA (0x003C) /*!< Offset to reg
+ Master Data */
+#define AI2C_REG_I2C_X7_MST_TX_FIFO (0x0040) /*!< Offset to reg
+ Master Transmit FIFO */
+#define AI2C_REG_I2C_X7_MST_RX_FIFO (0x0044) /*!< Offset to reg
+ Master Receive FIFO */
+#define AI2C_REG_I2C_X7_MST_INT_ENABLE (0x0048) /*!< Offset to reg
+ Master Interrupt
+ Enable */
+#define AI2C_REG_I2C_X7_MST_INT_STATUS (0x004C) /*!< Offset to reg
+ Master Interrupt
+ Status */
+#define AI2C_REG_I2C_X7_MST_TX_BYTES_XFRD (0x0050) /*!< Offset to reg
+ Master TX Bytes
+ Transferred */
+#define AI2C_REG_I2C_X7_MST_RX_BYTES_XFRD (0x0054) /*!< Offset to reg
+ Master RX Bytes
+ Transferred */
+#define AI2C_REG_I2C_X7_SLV_ADDR_DEC_CTL (0x0058) /*!< Offset to reg
+ Slave Address
+ Decrement Ctl */
+#define AI2C_REG_I2C_X7_SLV_ADDR_1 (0x005C) /*!< Offset to reg
+ Slave Address 1 */
+#define AI2C_REG_I2C_X7_SLV_ADDR_2 (0x0060) /*!< Offset to reg
+ Slave Address 2 */
+#define AI2C_REG_I2C_X7_SLV_RX_CTL (0x0064) /*!< Offset to reg
+ Slave Receive Control */
+#define AI2C_REG_I2C_X7_SLV_DATA (0x0068) /*!< Offset to reg
+ Slave Data */
+#define AI2C_REG_I2C_X7_SLV_RX_FIFO (0x006C) /*!< Offset to reg
+ Slave Receive FIFO */
+#define AI2C_REG_I2C_X7_SLV_INT_ENABLE (0x0070) /*!< Offset to reg
+ Slave Interrupt
+ Enable */
+#define AI2C_REG_I2C_X7_SLV_INT_STATUS (0x0074) /*!< Offset to reg
+ Slave Interrupt
+ Status */
+#define AI2C_REG_I2C_X7_SLV_READ_DUMMY (0x0078) /*!< Offset to reg
+ Slave Read Dummy */
+#define AI2C_REG_I2C_X7_SCL_HIGH_PERIOD (0x0080) /*!< Offset to reg
+ SCL High Period */
+#define AI2C_REG_I2C_X7_SCL_LOW_PERIOD (0x0084) /*!< Offset to reg
+ SCL Low Period */
+#define AI2C_REG_I2C_X7_SPIKE_FLTR_LEN (0x0088) /*!< Offset to reg
+ Spike Filter Length */
+#define AI2C_REG_I2C_X7_SDA_SETUP_TIME (0x008C) /*!< Offset to reg
+ SDA Setup Time */
+#define AI2C_REG_I2C_X7_SDA_HOLD_TIME (0x0090) /*!< Offset to reg
+ SDA Hold Time */
+#define AI2C_REG_I2C_X7_SMB_ALERT (0x0094) /*!< Offset to reg
+ SMB Alert */
+#define AI2C_REG_I2C_X7_UDID_W7 (0x0098) /*!< Offset to reg
+ UDID W7 */
+#define AI2C_REG_I2C_X7_UDID_W7_DEFAULT (0x00000008) /*!< Def value reg
+ UDID W7 */
+#define AI2C_REG_I2C_X7_UDID_W6 (0x009C) /*!< Offset to reg
+ UDID W6 */
+#define AI2C_REG_I2C_X7_UDID_W5 (0x00A0) /*!< Offset to reg
+ UDID W5 */
+#define AI2C_REG_I2C_X7_UDID_W4 (0x00A4) /*!< Offset to reg
+ UDID W4 */
+#define AI2C_REG_I2C_X7_UDID_W4_DEFAULT (0x00000004) /*!< Def value reg
+ UDID W4 */
+#define AI2C_REG_I2C_X7_UDID_W3 (0x00A8) /*!< Offset to reg
+ UDID W3 */
+#define AI2C_REG_I2C_X7_UDID_W2 (0x00AC) /*!< Offset to reg
+ UDID W2 */
+#define AI2C_REG_I2C_X7_UDID_W1 (0x00B0) /*!< Offset to reg
+ UDID W1 */
+#define AI2C_REG_I2C_X7_UDID_W0 (0x00B4) /*!< Offset to reg
+ UDID W0 */
+#define AI2C_REG_I2C_X7_ARPPEC_CFG_STAT (0x00B8) /*!< Offset to reg
+ ARPPEC Cfg Status */
+#define AI2C_REG_I2C_X7_SLV_ARP_INT_ENABLE (0x00BC) /*!< Offset to reg
+ Slave ARP Interrupt
+ Enable */
+#define AI2C_REG_I2C_X7_SLV_ARP_INT_STATUS (0x00C0) /*!< Offset to reg
+ Slave ARP Interrupt
+ Status */
+#define AI2C_REG_I2C_X7_MST_ARP_INT_ENABLE (0x00C4) /*!< Offset to reg
+ Master ARP Interrupt
+ Enable */
+#define AI2C_REG_I2C_X7_MST_ARP_INT_STATUS (0x00C8) /*!< Offset to reg
+ Master ARP Interrupt
+ Status */
+/*
+** Unused 0x00CC - 0x00FC
+*/
+
+
+/**********************************
+ * Register Structure definitions *
+ *********************************/
+
+/*! @struct ai2c_reg_i2c_x7_global_control
+ * @brief I2C Global Control register (X7)
+ */
+struct ai2c_reg_i2c_x7_global_control {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:29; /*!< bits 31:3 reserved */
+ unsigned IE:1; /*!< bits 2 enable/disable IBML timers:
+ 0=disable (def), 1=enable */
+ unsigned SE:1; /*!< bits 1 enable/disable SSM address
+ decode:0=disable, 1=enable */
+ unsigned ME:1; /*!< bits 0 enable/disable MSM:
+ 0=disable, 1=enable */
+#else
+ unsigned ME:1; /*!< bits 0 enable/disable MSM:
+ 0=disable, 1=enable */
+ unsigned SE:1; /*!< bits 1 enable/disable SSM address
+ decode:0=disable, 1=enable */
+ unsigned IE:1; /*!< bits 2 enable/disable IBML timers:
+ =disable (def), 1=enable */
+ unsigned:29; /* bits 31:3 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_interrupt_status
+ * @brief I2C Interrupt Status register (X7)
+ */
+struct ai2c_reg_i2c_x7_interrupt_status {
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:28; /*!< bits 31:4 reserved */
+ unsigned mai:1; /*!< bits 3 OR of all master ARP
+ interrupt sources */
+ unsigned sai:1; /*!< bits 2 OR of all slave ARP
+ interrupt sources */
+ unsigned si:1; /*!< bits 1 slave interrupt source(s) OR */
+ unsigned mi:1; /*!< bits 0 master interrupt source(s) OR */
+#else
+ unsigned mi:1; /*!< bits 0 master interrupt source(s) OR */
+ unsigned si:1; /*!< bits 1 slave interrupt source(s) OR */
+ unsigned sai:1; /*!< bits 2 OR of all slave ARP
+ interrupt sources */
+ unsigned mai:1; /*!< bits 3 OR of all master ARP
+ interrupt sources */
+ unsigned:28; /*!< bits 31:4 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_interrupt_enable
+ * @brief I2C Interrupt Enable register (X7)
+ */
+struct ai2c_reg_i2c_x7_interrupt_enable {
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:28; /*!< bits 31:4 reserved */
+ unsigned maie:1; /*!< bits 3 enable of all master ARP
+ interrupt sources */
+ unsigned saie:1; /*!< bits 2 enable of all slave ARP
+ interrupt sources */
+ unsigned sie:1; /*!< bits 1 enable of slave interrupt
+ source(s) */
+ unsigned mie:1; /*!< bits 0 enable of master interrupt
+ source(s) */
+#else
+ unsigned mie:1; /*!< bits 0 enable of master interrupt
+ source(s) */
+ unsigned sie:1; /*!< bits 1 enable of slave interrupt
+ source(s) */
+ unsigned saie:1; /*!< bits 2 enable of all slave ARP
+ interrupt sources */
+ unsigned maie:1; /*!< bits 3 enable of all master ARP
+ interrupt sources */
+ unsigned:28; /*!< bits 31:4 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_wait_timer_control
+ * @brief I2C Master XMIT Status register (X7)
+ */
+struct ai2c_reg_i2c_x7_wait_timer_control {
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:16; /*!< bits 31:16 reserved */
+ unsigned te:1; /*!< bits 15 enable master/slave wait timer */
+ unsigned tlv:15; /*!< bits 14:0 timer load value to extend the
+ SCL low timer */
+#else
+ unsigned tlv:15; /*!< bits 14:0 timer load value to extend the
+ SCL low timer */
+ unsigned te:1; /*!< bits 15 enable master/slave wait timer */
+ unsigned:16; /*!< bits 31:16 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_ibml_timeout
+ * @brief I2C Master RCV Status register (X7)
+ */
+struct ai2c_reg_i2c_x7_ibml_timeout {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:16; /*!< bits 31:16 reserved */
+ unsigned te:1; /*!< bits 15 enable/disable IBML Timeout */
+ unsigned itlv:15; /*!< bits 14:0 timer load value to extend
+ the SCL low timer after high */
+#else
+ unsigned itlv:15; /*!< bits 14:0 timer load value to extend
+ the SCL low timer after high */
+ unsigned te:1; /*!< bits 15 enable/disable IBML Timeout */
+ unsigned:16; /*!< bits 31:16 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_ibml_low_mext
+ * @brief I2C IBML Low MEXT register (X7)
+ */
+struct ai2c_reg_i2c_x7_ibml_low_mext {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:16; /*!< bits 31:16 reserved */
+ unsigned te:1; /*!< bits 15 enable/disable IBML
+ Low MEXT flag*/
+ unsigned imtlv:15; /*!< bits 14:0 timer load value at
+ begin of every master data byte transfer */
+#else
+ unsigned imtlv:15; /*!< bits 14:0 timer load value at begin
+ of every master data byte transfer */
+ unsigned te:1; /*!< bits 15 enable master/slave wait timer */
+ unsigned:16; /*!< bits 31:16 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_low_sext
+ * @brief I2C Master Interrupt Clear register (X7)
+ */
+struct ai2c_reg_i2c_x7_low_sext {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:16; /*!< bits 31:16 reserved */
+ unsigned te:1; /*!< bits 15 enable/disable IBML
+ Low MEXT flag*/
+ unsigned istlv:15; /*!< bits 14:0 timer load value at
+ begin of every slave data byte transfer */
+#else
+ unsigned istlv:15; /*!< bits 14:0 timer load value at begin
+ of every slave data byte transfer */
+ unsigned te:1; /*!< bits 15 enable master/slave wait timer */
+ unsigned:16; /*!< bits 31:16 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_i2c_bus_monitor
+ * @brief I2C Master Interrupt Status register (X7)
+ */
+struct ai2c_reg_i2c_x7_i2c_bus_monitor {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:26; /*!< bits 31:6 reserved */
+ unsigned sdae:1; /*!< bits 5 At least 1 high-to-low
+ transition occurred on SDA status line */
+ unsigned scle:1; /*!< bits 4 At least 1 high-to-low
+ transition occurred on SCL status line */
+ unsigned sdac:1; /*!< bits 3 Controls SDA signal */
+ unsigned sclc:1; /*!< bits 2 Controls SCL signal */
+ unsigned sdas:1; /*!< bits 1 Current value of SDA signal
+ on I2C bus */
+ unsigned scls:1; /*!< bits 0 Current value of SCL signal
+ on I2C bus */
+#else
+ unsigned scls:1; /*!< bits 0 Current value of SCL signal
+ on I2C bus */
+ unsigned sdas:1; /*!< bits 1 Current value of SDA signal
+ on I2C bus */
+ unsigned sclc:1; /*!< bits 2 Controls SCL signal */
+ unsigned sdac:1; /*!< bits 3 Controls SDA signal */
+ unsigned scle:1; /*!< bits 4 At least 1 high-to-low
+ transition occurred on SCL status line */
+ unsigned sdae:1; /*!< bits 5 At least 1 high-to-low
+ transition occurred on SDA status line */
+ unsigned:26; /*!< bits 31:6 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_soft_reset
+ * @brief I2C Soft Reset register (X7)
+ */
+struct ai2c_reg_i2c_x7_soft_reset {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:31; /*!< bits 31:1 reserved */
+ unsigned i2cr:1; /*!< bits 0 Reset the entire API2C module
+ when set to 1 */
+#else
+ unsigned i2cr:1; /*!< bits 0 Reset the entire API2C module
+ when set to 1 */
+ unsigned:31; /*!< bits 31:1 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_mst_command
+ * @brief I2C Master Command register (X7)
+ */
+struct ai2c_reg_i2c_x7_mst_command {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:28; /*!< bits 31:4 reserved */
+ unsigned sc:1; /*!< bits 3 Issue command when set to 1 */
+ unsigned cmdtype:3; /*!< bits 2:0 Command type:
+ 000: Manual Mode Transfer
+ 001: Automatic Mode Transfer
+ 010: Sequence Mode Transfer
+ 011: Issue master Stop
+ 111: Flush Master Transmit FIFO */
+#else
+ unsigned cmdtype:3; /*!< bits 2:0 Command type:
+ 000: Manual Mode Transfer
+ 001: Automatic Mode Transfer
+ 010: Sequence Mode Transfer
+ 011: Issue master Stop
+ 111: Flush Master Transmit FIFO */
+ unsigned sc:1; /*!< bits 3 Issue command when set to 1 */
+ unsigned:28; /*!< bits 31:4 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_mst_rx_xfer
+ * @brief I2C Master Receive Transfer Length register (X7)
+ */
+struct ai2c_reg_i2c_x7_mst_rx_xfer {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:24; /*!< bits 31:8 reserved */
+ unsigned length:8; /*!< bits 7:0 Number of bytes master receives
+ during read xfer */
+#else
+ unsigned length:8; /*!< bits 7:0 Number of bytes master receives
+ during read xfer */
+ unsigned:24; /*!< bits 31:8 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_mst_tx_xfer
+ * @brief I2C Master Transmit Transfer Length register (X7)
+ */
+struct ai2c_reg_i2c_x7_mst_tx_xfer {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:24; /*!< bits 31:8 reserved */
+ unsigned length:8; /*!< bits 7:0 Number of bytes master sends
+ during write xfer */
+#else
+ unsigned length:8; /*!< bits 7:0 Number of bytes master sends
+ during write xfer */
+ unsigned:24; /*!< bits 31:8 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_mst_addr_1
+ * @brief I2C Master Address 1 register (X7)
+ */
+struct ai2c_reg_i2c_x7_mst_addr_1 {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:24; /*!< bits 31:8 reserved */
+ unsigned i2ca1:7; /*!< bits 7:1 First 7 bits of the address phase
+ of transaction. If bits [7:3] = 11110, then
+ 10-bit addressing is selected, and bits [2:1]
+ become the two most significant bits of a
+ 10-bit address. */
+ unsigned ad:1; /*!< bits 0 Data direction:0=write, 1=read */
+#else
+ unsigned ad:1; /*!< bits 0 Data direction:0=write, 1=read */
+ unsigned i2ca1:7; /*!< bits 7:1 First 7 bits of the address phase
+ of transaction. If bits [7:3] = 11110, then
+ 10-bit addressing is selected, and bits [2:1]
+ become the two most significant bits of a
+ 10-bit address. */
+ unsigned:24; /*!< bits 31:8 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_mst_addr_2
+ * @brief I2C Master Address 2 register (X7)
+ */
+struct ai2c_reg_i2c_x7_mst_addr_2 {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:24; /*!< bits 31:8 reserved */
+ unsigned i2ca2:8; /*!< bits 7:0 I2C Address bits of a 10-bit
+ I2C address when
+ selected. If 10-bit addressing is enabled, this
+ field is sent as the second byte in the address
+ phase of an I2C transaction. */
+#else
+ unsigned i2ca2:8; /*!< bits 7:0 I2C Address bits of a 10-bit
+ I2C address when selected.
+ If 10-bit addressing is enabled, this
+ field is sent as the second byte in the address
+ phase of an I2C transaction. */
+ unsigned:24; /*!< bits 31:8 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_mst_data
+ * @brief I2C Master Data register (X7)
+ */
+struct ai2c_reg_i2c_x7_mst_data {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:24; /*!< bits 31:8 reserved */
+ unsigned data:8; /*!< bits 7:0 Each byte written goes to the
+ Master Transmit FIFO.
+ Each byte read returned from the
+ Master Transmit FIFO. */
+#else
+ unsigned data:8; /*!< bits 7:0 Each byte written goes to the
+ Master Transmit FIFO.
+ Each byte read returned from the
+ Master Transmit FIFO. */
+ unsigned:24; /*!< bits 31:8 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_mst_tx_fifo
+ * @brief I2C Master Transmit FIFO Status register (X7)
+ */
+struct ai2c_reg_i2c_x7_mst_tx_fifo {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:28; /*!< bits 31:4 reserved */
+ unsigned depth:4; /*!< bits 3:0 Number of bytes in
+ master Transmit FIFO */
+#else
+ unsigned depth:4; /*!< bits 3:0 Number of bytes in
+ master Transmit FIFO */
+ unsigned:28; /*!< bits 31:4 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_mst_rx_fifo
+ * @brief I2C Master Receive FIFO Status register (X7)
+ */
+struct ai2c_reg_i2c_x7_mst_rx_fifo {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:28; /*!< bits 31:4 reserved */
+ unsigned depth:4; /*!< bits 3:0 Number of bytes in master
+ Receive FIFO */
+#else
+ unsigned depth:4; /*!< bits 3:0 Number of bytes in master
+ Receive FIFO */
+ unsigned:28; /*!< bits 31:4 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_mst_int_enable
+ * @brief I2C Master Interrupt Enable register (X7)
+ */
+struct ai2c_reg_i2c_x7_mst_int_enable {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:16; /*!< bits 31:16 reserved */
+ unsigned mie:12; /*!< bits 15:4 Bits to enable individual
+ interrupt resources */
+ unsigned:4; /*!< bits 3:0 reserved */
+#else
+ unsigned:4; /*!< bits 3:0 reserved */
+ unsigned mie:12; /*!< bits 15:4 Bits to enable individual
+ interrupt resources */
+ unsigned:16; /*!< bits 31:16 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_mst_int_status
+ * @brief I2C Master Interrupt Status register (X7)
+ */
+struct ai2c_reg_i2c_x7_mst_int_status {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:16; /*!< bits 31:16 reserved */
+ unsigned itt:1; /*!< bits 15 */
+ unsigned itlm:1; /*!< bits 14 */
+ unsigned rfl:1; /*!< bits 13 */
+ unsigned tfl:1; /*!< bits 12 */
+ unsigned sns:1; /*!< bits 11 */
+ unsigned ss:1; /*!< bits 10 */
+ unsigned scc:1; /*!< bits 9 */
+ unsigned ip:1; /*!< bits 8 */
+ unsigned tss:1; /*!< bits 7 */
+ unsigned al:1; /*!< bits 6 */
+ unsigned nd:1; /*!< bits 5 */
+ unsigned na:1; /*!< bits 4 */
+ unsigned ts:1; /*!< bits 3 */
+ unsigned stp:1; /*!< bits 2 */
+ unsigned ttp:1; /*!< bits 1 */
+ unsigned rtp:1; /*!< bits 0 */
+#else
+ unsigned rtp:1; /*!< bits 0 */
+ unsigned ttp:1; /*!< bits 1 */
+ unsigned stp:1; /*!< bits 2 */
+ unsigned ts:1; /*!< bits 3 */
+ unsigned na:1; /*!< bits 4 */
+ unsigned nd:1; /*!< bits 5 */
+ unsigned al:1; /*!< bits 6 */
+ unsigned tss:1; /*!< bits 7 */
+ unsigned ip:1; /*!< bits 8 */
+ unsigned scc:1; /*!< bits 9 */
+ unsigned ss:1; /*!< bits 10 */
+ unsigned sns:1; /*!< bits 11 */
+ unsigned tfl:1; /*!< bits 12 */
+ unsigned rfl:1; /*!< bits 13 */
+ unsigned itlm:1; /*!< bits 14 */
+ unsigned itt:1; /*!< bits 15 */
+ unsigned:16; /*!< bits 31:16 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_mst_tx_bytes_xfrd
+ * @brief I2C Master Transmit Bytes Transferred register (X7)
+ */
+struct ai2c_reg_i2c_x7_mst_tx_bytes_xfrd {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:24; /*!< bits 31:8 reserved */
+ unsigned num:8; /*!< bits 7:0 Number of bytes
+ transferred successfully */
+#else
+ unsigned num:8; /*!< bits 7:0 Number of bytes
+ transferred successfully */
+ unsigned:24; /*!< bits 31:8 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_mst_rx_bytes_xfrd
+ * @brief I2C Master Receive Bytes Transferred register (X7)
+ */
+struct ai2c_reg_i2c_x7_mst_rx_bytes_xfrd {
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:24; /*!< bits 31:8 reserved */
+ unsigned num:8; /*!< bits 7:0 Number of bytes
+ received successfully */
+#else
+ unsigned num:8; /*!< bits 7:0 Number of bytes
+ received successfully */
+ unsigned:24; /*!< bits 31:8 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_slv_addr_dec_ctl
+ * @brief I2C Master Transmit Transfer Length register (X7)
+ */
+struct ai2c_reg_i2c_x7_slv_addr_dec_ctl {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:26; /*!< bits 31:6 reserved */
+ unsigned sa2m:8; /*!< bits 5 7-bit or 10-bit slave addressing
+ for Slave Addr Decoder 2 */
+ unsigned sa2e:8; /*!< bits 4 Slave State machine to ACK during
+ addr phase of trans for Slave Addr 2 */
+ unsigned sa1m:8; /*!< bits 3 7-bit or 10-bit slave addressing
+ for Slave Addr Decoder 1 */
+ unsigned sa1e:8; /*!< bits 2 Slave State machine to ACK during
+ addr phase of trans for Slave Addr 1 */
+ unsigned ogce:8; /*!< bits 1 Slave State machine to ACK to
+ General Call Address from its master */
+ unsigned gce:8; /*!< bits 0 Slave State machine to ACK to
+ General Call Address from other masters */
+#else
+ unsigned gce:8; /*!< bits 0 Slave State machine to ACK to
+ General Call Address from other masters */
+ unsigned ogce:8; /*!< bits 1 Slave State machine to ACK to
+ General Call Address from its master */
+ unsigned sa1e:8; /*!< bits 2 Slave State machine to ACK during
+ addr phase of trans for Slave Addr 1 */
+ unsigned sa1m:8; /*!< bits 3 7-bit or 10-bit slave addressing
+ for Slave Addr Decoder 1 */
+ unsigned sa2e:8; /*!< bits 4 Slave State machine to ACK during
+ addr phase of trans for Slave Addr 2 */
+ unsigned sa2m:8; /*!< bits 5 7-bit or 10-bit slave addressing
+ for Slave Addr Decoder 2 */
+ unsigned:24; /*!< bits 31:8 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_slv_addr_1
+ * @brief I2C Slave Address 1 register (X7)
+ */
+struct ai2c_reg_i2c_x7_slv_addr_1 {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:22; /*!< bits 31:10 reserved */
+ unsigned sa1:10; /*!< bits 9:0 7-bit or 10-bit address */
+#else
+ unsigned sa1:10; /*!< bits 9:0 7-bit or 10-bit address */
+ unsigned:22; /*!< bits 31:10 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_slv_addr_2
+ * @brief I2C Slave Address 2 register (X7)
+ */
+struct ai2c_reg_i2c_x7_slv_addr_2 {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:22; /*!< bits 31:10 reserved */
+ unsigned sa2:10; /*!< bits 9:0 7-bit or 10-bit address */
+#else
+ unsigned sa2:10; /*!< bits 9:0 7-bit or 10-bit address */
+ unsigned:22; /*!< bits 31:10 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_slv_rx_ctl
+ * @brief I2C Slave Receive Control register (X7)
+ */
+struct ai2c_reg_i2c_x7_slv_rx_ctl {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:29; /*!< bits 31:3 reserved */
+ unsigned acgca:1; /*!< bits 2 ACK data (write) phase to GCA */
+ unsigned acsa2:1; /*!< bits 1 ACK for data (write) phase
+ to Slave Addr 2 */
+ unsigned acsa1:1; /*!< bits 0 ACK for data (write) phase
+ to Slave Addr 1 */
+#else
+ unsigned acsa1:1; /*!< bits 0 ACK for data (write) phase
+ to Slave Addr 1 */
+ unsigned acsa2:1; /*!< bits 1 ACK for data (write) phase
+ to Slave Addr 2 */
+ unsigned acgca:1; /*!< bits 2 ACK data (write) phase
+ to GCA */
+ unsigned:29; /*!< bits 31:3 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_slv_data
+ * @brief I2C Slave Data register (X7)
+ */
+struct ai2c_reg_i2c_x7_slv_data {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:23; /*!< bits 31:9 reserved */
+ unsigned pec:1; /*!< bits 8 Set to subst PEC data
+ for transmission */
+ unsigned strd:8; /*!< bits 7:0 Read data from top
+ of Receive FIFO
+ Write places transmit data into Slave Read
+ Data Register. */
+#else
+ unsigned strd:8; /*!< bits 7:0 Read data from top
+ of Receive FIFO
+ Write places transmit data into Slave Read
+ Data Register. */
+ unsigned pec:1; /*!< bits 8 Set to subst PEC data
+ for transmission */
+ unsigned:24; /*!< bits 31:8 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_slv_rx_fifo
+ * @brief I2C Slave Receive FIFO Status register (X7)
+ */
+struct ai2c_reg_i2c_x7_slv_rx_fifo {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:24; /*!< bits 31:8 reserved */
+ unsigned pec:1; /*!< bits 7 PEC good or not */
+ unsigned stpc:1; /*!< bits 6 Data transfer termined due to
+ stop condition */
+ unsigned rsc:1; /*!< bits 4 Received byte was first after
+ repeated start */
+ unsigned strc:1; /*!< bits 4 This is first data byte for a
+ slave addr after start */
+ unsigned tnak:1; /*!< bits 3 NAK sent due to timeout */
+ unsigned as:1; /*!< bits 2 Data byte valid (0=ACK, 1=NAK) */
+ unsigned dv:2; /*!< bits 1:0 Data in FIFO is valid and for
+ which slave
+ * 00: empty
+ * 01: Valid for slave addr 1
+ * 10: Valid for slave addr 2
+ * 11: General call address
+ data valid */
+#else
+ unsigned dv:2; /*!< bits 1:0 Data in FIFO is valid and for
+ which slave
+ * 00: empty
+ * 01: Valid for slave addr 1
+ * 10: Valid for slave addr 2
+ * 11: General call address
+ data valid */
+ unsigned as:1; /*!< bits 2 Data byte valid (0=ACK, 1=NAK) */
+ unsigned tnak:1; /*!< bits 3 NAK sent due to timeout */
+ unsigned strc:1; /*!< bits 4 This is first data byte for a
+ slave addr after start */
+ unsigned rsc:1; /*!< bits 4 Received byte was first after
+ repeated start */
+ unsigned stpc:1; /*!< bits 6 Data transfer termined due to
+ stop condition */
+ unsigned pec:1; /*!< bits 7 PEC good or not */
+ unsigned:24; /*!< bits 31:8 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_slv_int_enable
+ * @brief I2C Slave Interrupt Enable register (X7)
+ */
+struct ai2c_reg_i2c_x7_slv_int_enable {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:16; /*!< bits 31:16 reserved */
+ unsigned sie2:8; /*!< bits 15:10 Bit enable individual sources in
+ corresponding status reg */
+ unsigned:1; /*!< bits 9 reserved */
+ unsigned sie1:5; /*!< bits 8:4 Bit enable individual sources in
+ corresponding status reg */
+ unsigned:1; /*!< bits 3 reserved */
+ unsigned sie0:3; /*!< bits 2:0 Bit enable individual sources in
+ corresponding status reg */
+#else
+ unsigned sie0:3; /*!< bits 2:0 Bit enable individual sources in
+ corresponding status reg */
+ unsigned:1; /*!< bits 3 reserved */
+ unsigned sie1:5; /*!< bits 8:4 Bit enable individual sources in
+ corresponding status reg */
+ unsigned:1; /*!< bits 9 reserved */
+ unsigned sie2:8; /*!< bits 15:10 Bit enable individual sources in
+ corresponding status reg */
+ unsigned:16; /*!< bits 31:16 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_slv_int_status
+ * @brief I2C Slave Interrupt Status register (X7)
+ */
+struct ai2c_reg_i2c_x7_slv_int_status {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:16; /*!< bits 31:16 reserved */
+ unsigned it:1; /*!< bits 15 See spec for details */
+ unsigned itls:1; /*!< bits 14 See spec for details */
+ unsigned srdre2:1; /*!< bits 13 See spec for details */
+ unsigned srat2:1; /*!< bits 12 See spec for details */
+ unsigned src2:1; /*!< bits 11 See spec for details */
+ unsigned srnd2:1; /*!< bits 10 See spec for details */
+ unsigned srrs2:1; /*!< bits 9 See spec for details */
+ unsigned srs2:1; /*!< bits 8 See spec for details */
+ unsigned srdre1:1; /*!< bits 7 See spec for details */
+ unsigned srat1:1; /*!< bits 6 See spec for details */
+ unsigned src1:1; /*!< bits 5 See spec for details */
+ unsigned srnd1:1; /*!< bits 4 See spec for details */
+ unsigned srrs1:1; /*!< bits 3 See spec for details */
+ unsigned srs1:1; /*!< bits 2 See spec for details */
+ unsigned wtc:1; /*!< bits 1 See spec for details */
+ unsigned rfh:1; /*!< bits 0 See spec for details */
+#else
+ unsigned rfh:1; /*!< bits 0 See spec for details */
+ unsigned wtc:1; /*!< bits 1 See spec for details */
+ unsigned srs1:1; /*!< bits 2 See spec for details */
+ unsigned srrs1:1; /*!< bits 3 See spec for details */
+ unsigned srnd1:1; /*!< bits 4 See spec for details */
+ unsigned src1:1; /*!< bits 5 See spec for details */
+ unsigned srat1:1; /*!< bits 6 See spec for details */
+ unsigned srdre1:1; /*!< bits 7 See spec for details */
+ unsigned srs2:1; /*!< bits 8 See spec for details */
+ unsigned srrs2:1; /*!< bits 9 See spec for details */
+ unsigned srnd2:1; /*!< bits 10 See spec for details */
+ unsigned src2:1; /*!< bits 11 See spec for details */
+ unsigned srat2:1; /*!< bits 12 See spec for details */
+ unsigned srdre2:1; /*!< bits 13 See spec for details */
+ unsigned itls:1; /*!< bits 14 See spec for details */
+ unsigned it:1; /*!< bits 15 See spec for details */
+ unsigned:16; /*!< bits 31:16 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_slv_read_dummy
+ * @brief I2C Slave Read Dummy register (X7)
+ */
+struct ai2c_reg_i2c_x7_slv_read_dummy {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:23; /*!< bits 31:9 reserved */
+ unsigned srte:1; /*!< bits 8 Disable/Enable slave read time-out */
+ unsigned dd:8; /*!< bits 7:0 Incoming slave read data */
+#else
+ unsigned dd:8; /*!< bits 7:0 Incoming slave read data */
+ unsigned srte:1; /*!< bits 8 Disable/Enable slave read time-out */
+ unsigned:23; /*!< bits 31:9 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_scl_high_period
+ * @brief I2C SCL High Period register (X7)
+ */
+struct ai2c_reg_i2c_x7_scl_high_period {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:16; /*!< bits 31:16 reserved */
+ unsigned period:16; /*!< bits 15:0 (Desired SCL High Time /
+ PCLK period) - 1 */
+#else
+ unsigned period:16; /*!< bits 15:0 (Desired SCL High Time /r
+i PCLK period) - 1 */
+ unsigned:16; /*!< bits 31:16 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_scl_low_period
+ * @brief I2C SCL Low Period register (X7)
+ */
+struct ai2c_reg_i2c_x7_scl_low_period {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:16; /*!< bits 31:16 reserved */
+ unsigned period:16; /*!< bits 15:0 (Desired SCL Low Time /
+ PCLK period) - 1 */
+#else
+ unsigned period:16; /*!< bits 15:0 (Desired SCL Low Time /
+ PCLK period) - 1 */
+ unsigned:16; /*!< bits 31:16 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_spike_fltr_len
+ * @brief I2C Spike Filter Length register (X7)
+ */
+struct ai2c_reg_i2c_x7_spike_fltr_len {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:27; /*!< bits 31:5 reserved */
+ unsigned fs:5; /*!< bits 4:0 Num of spike filter stages */
+#else
+ unsigned fs:5; /*!< bits 4:0 Num of spike filter stages */
+ unsigned:27; /*!< bits 31:5 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_scl_sda_setup_time
+ * @brief I2C SDA Setup Time register (X7)
+ */
+struct ai2c_reg_i2c_x7_sda_setup_time {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:16; /*!< bits 31:16 reserved */
+ unsigned period:16; /*!< bits 15:0 Suitable period */
+#else
+ unsigned period:16; /*!< bits 15:0 Suitable period */
+ unsigned:16; /*!< bits 31:16 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_sda_hold_time
+ * @brief I2C SDA Hold Time register (X7)
+ */
+struct ai2c_reg_i2c_x7_sda_hold_time {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:16; /*!< bits 31:16 reserved */
+ unsigned period:16; /*!< bits 15:0 Suitable period */
+#else
+ unsigned period:16; /*!< bits 15:0 Suitable period */
+ unsigned:16; /*!< bits 31:16 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_smb_alert
+ * @brief I2C SMB Alert register (X7)
+ */
+struct ai2c_reg_i2c_x7_smb_alert {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:28; /*!< bits 31:4 reserved */
+ unsigned slave_addr_sel:1; /*!< bits 3 Select a slave
+ address register to use in alerts */
+ unsigned smb_alert_pec_enable:1; /*!< bits 2 Suitable period */
+ unsigned smb_alert_enable:1; /*!< bits 1 Suitable period */
+ unsigned smb_alert:1; /*!< bits 0 Suitable period */
+#else
+ unsigned smb_alert:1; /*!< bits 0 Suitable period */
+ unsigned smb_alert_enable:1; /*!< bits 1 Suitable period */
+ unsigned smb_alert_pec_enable:1; /*!< bits 2 Suitable period */
+ unsigned slave_addr_sel:1; /*!< bits 3 Select a slave
+ address register to use in alerts */
+ unsigned:28; /*!< bits 31:4 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_udid_w7
+ * @brief I2C UDID 127:112 register (X7)
+ */
+struct ai2c_reg_i2c_x7_udid_w7 {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:16; /*!< bits 31:16 reserved */
+ unsigned addr_type:2; /*!< bits 15:14 Types of address */
+ unsigned:5; /*!< bits 13:9 reserved */
+ unsigned pec_supported:1; /*!< bits 8 Ability to support
+ slave PEC check/gen for non-ARP cmd */
+ unsigned:2; /*!< bits 7:6 reserved */
+ unsigned version:3; /*!< bits 5:3 UDID Version 1 */
+ unsigned revision:3; /*!< bits 2:0 Silicon Revision 0 */
+#else
+ unsigned revision:3; /*!< bits 2:0 Silicon Revision 0 */
+ unsigned version:3; /*!< bits 5:3 UDID Version 1 */
+ unsigned:2; /*!< bits 7:6 reserved */
+ unsigned pec_supported:1; /*!< bits 8 Ability to support
+ slave PEC check/gen for non-ARP cmd */
+ unsigned:5; /*!< bits 13:9 reserved */
+ unsigned addr_type:2; /*!< bits 15:14 Types of address */
+ unsigned:16; /*!< bits 31:16 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_udid_w6
+ * @brief I2C UDID 111:96 register (X7)
+ */
+struct ai2c_reg_i2c_x7_udid_w6 {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:16; /*!< bits 31:16 reserved */
+ unsigned vendorId:16; /*!< bits 15:0 Unique Vendor Id */
+#else
+ unsigned vendorId:16; /*!< bits 15:0 Unique Vendor Id */
+ unsigned:16; /*!< bits 31:16 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_udid_w5
+ * @brief I2C UDID 95:80 register (X7)
+ */
+struct ai2c_reg_i2c_x7_udid_w5 {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:16; /*!< bits 31:16 reserved */
+ unsigned deviceId:16; /*!< bits 15:0 Unique Device Id */
+#else
+ unsigned deviceId:16; /*!< bits 15:0 Unique Device Id */
+ unsigned:16; /*!< bits 31:16 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_udid_w4
+ * @brief I2C UDID 79:64 register (X7)
+ */
+struct ai2c_reg_i2c_x7_udid_w4 {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:25; /*!< bits 31:7 reserved */
+ unsigned ipmi:1; /*!< bits 6 Extra capab per IPMI specs */
+ unsigned asf:1; /*!< bits 5 Extra capab per ASF specs */
+ unsigned oem:1; /*!< bits 4 Extra capab per OEM
+ subsystem specs */
+ unsigned smbus_ver:4; /*!< bits 3:0 SMBus Version 2.0 */
+#else
+ unsigned smbus_ver:4; /*!< bits 3:0 SMBus Version 2.0 */
+ unsigned oem:1; /*!< bits 4 Extra capab per OEM
+ subsystem specs */
+ unsigned asf:1; /*!< bits 5 Extra capab per ASF specs */
+ unsigned ipmi:1; /*!< bits 6 Extra capab per IPMI specs */
+ unsigned:25; /*!< bits 31:7 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_udid_w3
+ * @brief I2C UDID 63:48 register (X7)
+ */
+struct ai2c_reg_i2c_x7_udid_w3 {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:16; /*!< bits 31:16 reserved */
+ unsigned subVendorId:16; /*!< bits 15:0 Subsystem Vendor Id */
+#else
+ unsigned subVendorId:16; /*!< bits 15:0 Subsystem Vendor Id */
+ unsigned:16; /*!< bits 31:16 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_udid_w2
+ * @brief I2C UDID 47:32 register (X7)
+ */
+struct ai2c_reg_i2c_x7_udid_w2 {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:16; /*!< bits 31:16 reserved */
+ unsigned subDeviceId:16; /*!< bits 15:0 Subsystem Device Id */
+#else
+ unsigned subDeviceId:16; /*!< bits 15:0 Subsystem Device Id */
+ unsigned:16; /*!< bits 31:16 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_udid_w1
+ * @brief I2C UDID 31:16 register (X7)
+ */
+struct ai2c_reg_i2c_x7_udid_w1 {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:16; /*!< bits 31:16 reserved */
+ unsigned vendorIDHI:16;
+ /*!< bits 15:0 Upper 16-bits of 32-bit unique value
+ * to differentiate between the same
+ * type of device. This field must be
+ * loaded to correct value before ARP
+ * is enabled. */
+#else
+ unsigned vendorIDHI:16;
+ /*!< bits 15:0 Upper 16-bits of 32-bit unique value
+ * to differentiate between the same
+ * type of device. This field must be
+ * loaded to correct value before ARP
+ * is enabled. */
+ unsigned:16; /*!< bits 31:16 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_udid_w0
+ * @brief I2C UDID 15:0 register (X7)
+ */
+struct ai2c_reg_i2c_x7_udid_w0 {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:16; /*!< bits 31:16 reserved */
+ unsigned vendorIDLO:16;
+ /*!< bits 15:0 Lower 16-bits of 32-bit unique value
+ * to differentiate between the same
+ * type of device. This field must be
+ * loaded to correct value before ARP
+ * is enabled. */
+#else
+ unsigned vendorIDLO:16;
+ /*!< bits 15:0 Lower 16-bits of 32-bit unique value
+ * to differentiate between the same
+ * type of device. This field must be
+ * loaded to correct value before ARP
+ * is enabled. */
+unsigned:16; /*!< bits 31:16 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_arppec_cfg_stat
+ * @brief I2C ARP/PEC Configuration & Status register (X7)
+ */
+struct ai2c_reg_i2c_x7_arppec_cfg_stat {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:26; /*!< bits 31:6 reserved */
+ unsigned slavePECEnable:1; /*!< bits 5 PEC gen/check
+ enabled for non-ARP cmds for slave */
+ unsigned masterPECEnable:1; /*!< bits 4 PEC gen/check enabled
+ for non-ARP cmds for master */
+ unsigned PSAEnable:1; /*!< bits 3 Persistent Slave
+ Address Enabled */
+ unsigned ARPEnable:1; /*!< bits 2 SMBus logic may
+ respond to ARP Slave Commands */
+ unsigned AVFlag:1; /*!< bits 2 Address valid
+ for ARP slave commands */
+ unsigned ARFlag:1; /*!< bits 0 Device address
+ resolved with ARP master */
+#else
+ unsigned ARFlag:1; /*!< bits 0 Device address
+ resolved with ARP master */
+ unsigned AVFlag:1; /*!< bits 2 Address valid
+ for ARP slave commands */
+ unsigned ARPEnable:1; /*!< bits 2 SMBus logic may
+ respond to ARP Slave Commands */
+ unsigned PSAEnable:1; /*!< bits 3 Persistent Slave
+ Address Enabled */
+ unsigned masterPECEnable:1; /*!< bits 4 PEC gen/check enabled
+ for non-ARP cmds for master */
+ unsigned slavePECEnable:1; /*!< bits 5 PEC gen/check enabled
+ for non-ARP cmds for slave */
+ unsigned:26; /*!< bits 31:6 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_slv_arp_int_enable
+ * @brief I2C Slave ARP Interrupt Enable register (X7)
+ */
+struct ai2c_reg_i2c_x7_slv_arp_int_enable {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:25; /*!< bits 31:7 reserved */
+ unsigned arpie:7; /*!< bits 6:0 Bit enable individual
+ interrupt sources for ARP Slave Int Stat reg */
+#else
+ unsigned arpie:7; /*!< bits 6:0 Bit enable individual interrupt
+ sources for ARP Slave Int Stat reg */
+ unsigned:25; /*!< bits 31:7 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_slv_arp_int_status
+ * @brief I2C Slave ARP Interrupt Status register (X7)
+ */
+struct ai2c_reg_i2c_x7_slv_arp_int_status {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:25; /*!< bits 31:7 reserved */
+ unsigned SMBAlertResp:7; /*!< bits 6 After receive/reply
+ to Alert Response message */
+ unsigned PrepARPRcv:7; /*!< bits 5 When decode/receive
+ a Prep to ARP command */
+ unsigned RstDevRcv:7; /*!< bits 4 When decode/receive a
+ Reset Device General Command */
+ unsigned GetUDIDRcv:7; /*!< bits 3 After receive/reply to
+ Get UDID General command */
+ unsigned AssignAddrRcv:7; /*!< bits 2 When receive an Assign
+ Address command */
+ unsigned GetUDIDDirectRcv:7; /*!< bits 1 After receive/reply
+ Get UDID Directed Command */
+ unsigned ResetDevDirect:7; /*!< bits 0 When slave receives
+ areset device directed command */
+#else
+ unsigned ResetDevDirect:7; /*!< bits 0 When slave receives
+ areset device directed command */
+ unsigned GetUDIDDirectRcv:7; /*!< bits 1 After receive/reply
+ Get UDID Directed Command */
+ unsigned AssignAddrRcv:7; /*!< bits 2 When receive an
+ Assign Address command */
+ unsigned GetUDIDRcv:7; /*!< bits 3 After receive/reply
+ to Get UDID General command */
+ unsigned RstDevRcv:7; /*!< bits 4 When decode/receive
+ a Reset Device General Command */
+ unsigned PrepARPRcv:7; /*!< bits 5 When decode/receive
+ a Prep to ARP command */
+ unsigned SMBAlertResp:7; /*!< bits 6 After receive/reply
+ to Alert Response message */
+ unsigned:25; /*!< bits 31:7 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_mst_arp_int_enable
+ * @brief I2C Master ARP Interrupt Enable register (X7)
+ */
+struct ai2c_reg_i2c_x7_mst_arp_int_enable {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:30; /*!< bits 31:2 reserved */
+ unsigned armmstie:2; /*!< bits 1:0 Bit enable individual
+ interrupt sources for ARP Master
+ Int Stat reg */
+#else
+ unsigned armmstie:2; /*!< bits 1:0 Bit enable individual
+ interrupt sources for ARP Master
+ Int Stat reg */
+ unsigned:30; /*!< bits 31:2 reserved */
+#endif
+};
+
+/*! @struct ai2c_reg_i2c_x7_mst_arp_int_status
+ * @brief I2C Master ARP Interrupt Status register (X7)
+ */
+struct ai2c_reg_i2c_x7_mst_arp_int_status {
+
+#ifdef AI2C_BIG_ENDIAN
+ unsigned:30; /*!< bits 31:2 reserved */
+ unsigned PECRdErr:1; /*!< bits 1 Master Read msg with PECr
+ enabled has detected a PEC error with
+ Slave response */
+ unsigned SMBAlert:1; /*!< bits 0 State of SMB_Alert#
+ signal on the SM Bus */
+#else
+ unsigned SMBAlert:1; /*!< bits 0 State of SMB_Alert#r
+ signal on the SM Bus */
+ unsigned PECRdErr:1; /*!< bits 1 Master Read msg with
+ PEC enabled has detected a PEC error
+ with Slave response */
+ unsigned:30; /*!< bits 31:2 reserved */
+#endif
+};
+
+/*!
+ * Node definitions for all nodes/engines in NCP/X1 (that we need here).
+ * This needs to be kept in-sync with HW.
+ */
+
+#define AI2C_NODE_X1_ECID 0x0A
+
+
+/* ---------------------------------- */
+/* --- AI2C Region ID Support --- */
+/* ---------------------------------- */
+
+
+#define AI2C_NODE_MASK (0xFFFF)
+#define AI2C_TARGET_MASK (0xFFFF)
+
+#define AI2C_NODE_ID(regionId) (((regionId) >> 16) & AI2C_NODE_MASK)
+#define AI2C_TARGET_ID(regionId) ((regionId) & AI2C_TARGET_MASK)
+
+
+#define AI2C_REGION_ID(node, target) \
+ ((((node) & AI2C_NODE_MASK) << 16) | ((target) & AI2C_TARGET_MASK))
+
+
+/* ---------------------------------- */
+/* --- AI2C Region ID Definitions --- */
+/* ---------------------------------- */
+
+/* Temporary dummy regions */
+#define AI2C_REGION_NULL (AI2C_REGION_ID(0xffff, 0xffff))
+
+
+#define AI2C_REGION_NCA_CFG (AI2C_REGION_ID(0x16, 0xff))
+
+
+#define AI2C_REGION_GPIO_0 (AI2C_REGION_ID(0x140, 0)) /* 320.0 */
+#define AI2C_REGION_I2C_0 (AI2C_REGION_ID(0x143, 0)) /* 323.0 */
+#define AI2C_REGION_TIMER (AI2C_REGION_ID(0x146, 0)) /* 326.0 */
+#define AI2C_REGION_GPREG (AI2C_REGION_ID(0x149, 0)) /* 329.0 */
+#define AI2C_REGION_I2C_1 (AI2C_REGION_ID(0x14c, 0)) /* 332.0 */
+#define AI2C_REGION_I2C_2 (AI2C_REGION_ID(0x152, 0)) /* 338.0 */
+
+#define AI2C_REGION_SMB (AI2C_REGION_ID(0x15c, 0)) /* 348.0 */
+#define AI2C_REGION_I2C_3 AI2C_REGION_SMB
+
+#define AI2C_REGION_CLK_CTRL (AI2C_REGION_ID(0x18d, 0)) /* 397.0 */
+
+#define AI2C_REGION_RESET_CTRL (AI2C_REGION_ID(0x18e, 0)) /* 398.0 */
+
+
+#endif /* _AI2C_I2C_REGS_H_ */
--
1.8.4.1
More information about the linux-yocto
mailing list