summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/altera-cyclone-v/hwlib/include/alt_i2c.h
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/arm/altera-cyclone-v/hwlib/include/alt_i2c.h')
-rw-r--r--c/src/lib/libbsp/arm/altera-cyclone-v/hwlib/include/alt_i2c.h2024
1 files changed, 0 insertions, 2024 deletions
diff --git a/c/src/lib/libbsp/arm/altera-cyclone-v/hwlib/include/alt_i2c.h b/c/src/lib/libbsp/arm/altera-cyclone-v/hwlib/include/alt_i2c.h
deleted file mode 100644
index 7af55cf4ac..0000000000
--- a/c/src/lib/libbsp/arm/altera-cyclone-v/hwlib/include/alt_i2c.h
+++ /dev/null
@@ -1,2024 +0,0 @@
-/******************************************************************************
-*
-* Copyright 2013 Altera Corporation. All Rights Reserved.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*
-* 1. Redistributions of source code must retain the above copyright notice,
-* this list of conditions and the following disclaimer.
-*
-* 2. Redistributions in binary form must reproduce the above copyright notice,
-* this list of conditions and the following disclaimer in the documentation
-* and/or other materials provided with the distribution.
-*
-* 3. The name of the author may not be used to endorse or promote products
-* derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY EXPRESS OR
-* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO
-* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
-* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
-* OF SUCH DAMAGE.
-*
-******************************************************************************/
-
-/*! \file
- * Altera - I2C Controller API
- */
-
-#ifndef __ALT_I2C_H__
-#define __ALT_I2C_H__
-
-#include "hwlib.h"
-#include "alt_clock_manager.h"
-#include "socal/alt_i2c.h"
-#include "socal/alt_rstmgr.h"
-#include "socal/hps.h"
-#include "socal/socal.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/******************************************************************************/
-/*! \addtogroup ALT_I2C I2C Controller API
- *
- * This module defines an API for configuring and managing the HPS I2C controllers.
- *
- * The I2C controller provides support for a communication link between integrated
- * circuits on a board. It is a simple two-wire bus which consists of a serial
- * data line (SDA) and a serial clock (SCL) for use in applications such as
- * temperature sensors and voltage level translators to EEPROMs, A/D and D/A
- * converters, CODECs, and many types of microprocessors.
- *
- * The Hard Processor System (HPS) provides four I2C controllers to enable system
- * software to communicate serially with I2C buses. Each I2C controller can
- * operate in master or slave mode, and support standard mode of up to 100
- * kilobits per second (Kbps) or fast mode of up to 400 Kbps. These I2C
- * controllers are instances of the Synopsys DesignWare APB I2C (DW_apb_i2c)
- * controller.
- *
- * NOTE: Each I2C controller must be programmed to operate in either master or
- * slave mode only. Operating as a master and slave simultaneously is not
- * supported.
- *
- * Features of the I2C Controller:
- * * Support both 100 KBps and 400 KBps modes
- * * One of the following I2C operations: master or slave
- * * Support both 7-bit and 10-bit addressing modes
- * * Mixed read and write combined-format transactions
- * * Bulk transmit mode
- * * DMA handshaking interface
- *
- * For a complete details on the configuration and operation of I2C controller,
- * consult the following references:
- * * <em>Cyclone V Device Handbook Volume 3: Hard Processor System Technical
- * Reference Manual, Chapter 20. I2C Controller (cv_54020-1.2)</em>
- * * <em>Synopsys DesignWare DW_apb_i2c Databook DW_apb_i2c, Version 1.15a</em>
- * * <em>The I2C-Bus Specification Version 2.1</em>
- *
- * @{
- */
-
-/******************************************************************************/
-/*!
- * This type definition enumerates the operational state of I2C by
- * transfer operation.
- */
-typedef enum ALT_I2C_TRANSFER_TYPE_e
-{
- ALT_I2C_TRANSFER_NONE = 0, /*!< No transfer operation */
- ALT_I2C_TRANSFER_START = 1, /*!< Start detect */
- ALT_I2C_TRANSFER_COMPLETE = 2, /*!< All operations done */
- ALT_I2C_TRANSFER_READ = 3, /*!< Read operation is active */
- ALT_I2C_TRANSFER_WRITE = 4, /*!< Write operation is active */
-}
-ALT_I2C_TRANSFER_TYPE_t;
-
-
-/*
- * A pointer or handle to the I2C controller device instance. The ALT_I2C_DEV_t is
- * initialized by a call to alt_i2c_init() and subsequently used by the other I2C
- * controller API functions as a reference to a specific device.
- *
- * \internal
- * ALT_I2C_DEV_t may be a struct or reference to an opaque data
- * structure. Whatever "internal" type is suited to the needs of the
- * implementation.
- * \endinternal
- */
-typedef struct ALT_I2C_DEV_s
-{
- void * location; /*!< HPS address of I2C instance. */
- alt_freq_t clock_freq; /*!< Input clock frequency. */
- uint32_t last_target; /*!< Last issued target address. */
-}
-ALT_I2C_DEV_t;
-
-/*!
- * This type enumerates the HPS I2C controller instances.
- */
-typedef enum ALT_I2C_CTLR_e
-{
- ALT_I2C_I2C0 = (int)ALT_I2C0_OFST, /*!< I2C0 instance. */
- ALT_I2C_I2C1 = (int)ALT_I2C1_OFST, /*!< I2C1 instance. */
- ALT_I2C_I2C2 = (int)ALT_I2C2_OFST, /*!< I2C2 instance. */
- ALT_I2C_I2C3 = (int)ALT_I2C3_OFST, /*!< I2C3 instance. */
-} ALT_I2C_CTLR_t;
-
-/*!
- * This type enumerates the modes that the I2C controller may operate in.
- *
- * NOTE: Each I2C controller must be programmed to operate in either master or
- * slave mode only. Operating as a master and slave simultaneously is not
- * supported.
- */
-typedef enum ALT_I2C_MODE_e
-{
- ALT_I2C_MODE_SLAVE = ALT_I2C_CON_MST_MOD_E_DIS, /*!< Slave Mode */
- ALT_I2C_MODE_MASTER = ALT_I2C_CON_MST_MOD_E_EN /*!< Master Mode */
-} ALT_I2C_MODE_t;
-
-/*!
- * This type enumerates the I2C controller operational speed modes.
- *
- * The I2C controller can operate in standard mode (with data rates 0 to 100 Kbps)
- * or fast mode (with data rates less than or equal to 400 Kbps). Additionally,
- * fast mode devices are downward compatible. For instance, fast mode devices can
- * communicate with standard mode devices in 0 to 100 Kbps I2C bus
- * system. However, standard mode devices are not upward compatible and should not
- * be incorporated in a fast-mode I2C bus system as they cannot follow the higher
- * transfer rate and therefore unpredictable states would occur.
- *
- * This setting is relevant only if one is operating the I2C in master mode.
- */
-typedef enum ALT_I2C_SPEED_e
-{
- ALT_I2C_SPEED_STANDARD = ALT_I2C_CON_SPEED_E_STANDARD,
- /*!< Standard mode (0 to 100 Kbps) */
- ALT_I2C_SPEED_FAST = ALT_I2C_CON_SPEED_E_FAST
- /*!< Fast mode (<= 400 Kbps) */
-} ALT_I2C_SPEED_t;
-
-/*!
- * This type enumerates the two addressing modes formats supported by the I2C
- * controller.
- *
- * The I2C controller does not support mixed address format - that is, a 7-bit
- * address transaction followed by a 10-bit address transaction or vice versa -
- * combined format transactions.
- */
-typedef enum ALT_I2C_ADDR_MODE_e
-{
- ALT_I2C_ADDR_MODE_7_BIT = ALT_I2C_TAR_IC_10BITADDR_MST_E_START7,
- /*!< 7-Bit Address Format */
- ALT_I2C_ADDR_MODE_10_BIT = ALT_I2C_TAR_IC_10BITADDR_MST_E_START10
- /*!< 10-Bit Address Format */
-} ALT_I2C_ADDR_MODE_t;
-
-/*!
- * This type enumerates interrupt status conditions for the I2C controller.
- */
-typedef enum ALT_I2C_STATUS_e
-{
- ALT_I2C_STATUS_RX_UNDER = 1UL << 0,
- /*!< Set if the processor attempts to read the
- * receive buffer when it is empty. If the I2C
- * controller is disabled, this status keeps
- * maintains its state until the master or slave
- * state machines go into idle, then this
- * interrupt is cleared.
- */
- ALT_I2C_STATUS_RX_OVER = 1UL << 1,
- /*!< Set if the receive buffer is completely
- * filled to capacity and an additional byte is
- * received from an external I2C device. The I2C
- * controller acknowledges this, but any data
- * bytes received after the FIFO is full are
- * discarded. If the I2C controller is disabled,
- * this status maintains its statue until the
- * master or slave state machines go into idle,
- * then this interrupt is cleared.
- */
- ALT_I2C_STATUS_RX_FULL = 1UL << 2,
- /*!< Set when the receive buffer reaches or goes
- * above the RX_TL threshold. It is
- * automatically cleared by hardware when buffer
- * level goes below the threshold. If the I2C
- * controller is disabled, the RX FIFO is
- * flushed and held in reset; therefore the RX
- * FIFO is not full. So this bit is cleared once
- * the I2C controller is disabled, regardless of
- * the activity that continues.
- */
- ALT_I2C_STATUS_TX_OVER = 1UL << 3,
- /*!< Set during transmit if the transmit buffer is
- * filled to capacity and the processor attempts
- * to issue another I2C command. When the I2C
- * controller is disabled, this bit maintains
- * its state until the master or slave state
- * machines go into idle, then this interrupt is
- * cleared.
- */
- ALT_I2C_STATUS_TX_EMPTY = 1UL << 4,
- /*!< This bit is set to 1 when the transmit buffer
- * is at or below the configured threshold
- * value. It is automatically cleared by
- * hardware when the buffer level goes above the
- * threshold. When the I2C controller is
- * disabled, the TX FIFO is flushed and held in
- * reset. The TX FIFO appears as if it has no
- * data in it, so this bit is set to 1, provided
- * there is activity in the master or slave
- * state machines. When there is no longer
- * activity, then this bit is set to 0.
- *
- */
- ALT_I2C_STATUS_RD_REQ = 1UL << 5,
- /*!< This bit is set to 1 when I2C is acting as a
- * slave and another I2C master is attempting to
- * read data from the I2C. The I2C holds the bus
- * in a wait state until this interrupt is
- * serviced, which means that the slave has been
- * addressed by a remote master that is asking
- * for data to be transferred. The processor
- * must respond to this interrupt and then write
- * the requested data. This bit is set to 0 just
- * after the processor by calling
- * alt_i2c_int_clear() with
- * ALT_I2C_STATUS_RD_REQ in the mask..
- */
- ALT_I2C_STATUS_TX_ABORT = 1UL << 6,
- /*!< This bit indicates if I2C, as an I2C
- * transmitter, is unable to complete the
- * intended actions on the contents of the
- * transmit FIFO. This situation can occur both
- * as an I2C master or an I2C slave, and is
- * referred to as a 'transmit abort'. When this
- * bit is set to 1, the IC_TX_ABRT_SOURCE
- * register indicates the reason why the
- * transmit abort takes places.
- *
- * NOTE: The I2C flushes/resets/empties the TX
- * FIFO whenever this bit is set. The TX FIFO
- * remains in this flushed state until the
- * register alt_i2c_int_clear() with
- * ALT_I2C_STATUS_TX_ABORT in the mask is
- * called. Once this happens, the TX FIFO is
- * then ready to accept more data bytes from the
- * APB interface.
- */
- ALT_I2C_STATUS_RX_DONE = 1UL << 7,
- /*!< When the I2C is acting as a
- * slave-transmitter, this bit is set to 1 if
- * the master does not acknowledge a transmitted
- * byte. This occurs on the last byte of the
- * transmission, indicating that the
- * transmission is done.
- */
- ALT_I2C_STATUS_ACTIVITY = 1UL << 8,
- /*!< This bit captures I2C activity and stays set
- * until it is cleared. There are four ways to
- * clear it:
- * * Disabling the I2C controller
- * * Calling alt_i2c_int_clear() with
- * ALT_I2C_STATUS_ACTIVITY in the mask.
- * * Calling alt_i2c_int_clear() with
- * ALT_I2C_STATUS_ALL in the mask.
- * * System reset
- *
- * Once this bit is set, it stays set unless one
- * of the four methods is used to clear it. Even
- * if the I2C module is idle, this bit remains
- * set until cleared, indicating that there was
- * activity on the bus.
- */
- ALT_I2C_STATUS_STOP_DET = 1UL << 9,
- /*!< Indicates whether a STOP condition has
- * occurred on the I2C interface regardless of
- * whether I2C is operating in slave or master
- * mode.
- */
- ALT_I2C_STATUS_START_DET = 1UL << 10,
- /*!< Indicates whether a START or RESTART
- * condition has occurred on the I2C interface
- * regardless of whether I2C is operating in
- * slave or master mode.
- */
- ALT_I2C_STATUS_INT_CALL = 1UL << 11,
- /*!< Set only when a General Call address is
- * received and it is acknowledged. It stays set
- * until it is cleared either by disabling I2C
- * or when alt_i2c_int_clear() with
- * ALT_I2C_STATUS_CALL in the mask is
- * called. I2C stores the received data in the
- * Rx buffer.
- */
- ALT_I2C_STATUS_INT_ALL = 0xFFF,
- /*!< All Combined and Individual Interrupts. This
- * enumeration value can be used to clear,
- * disable, and enable the combined interrupt
- * and all individual interrupt status
- * conditions. As a side effect, when passed to
- * alt_i2c_int_clear(), clears the source causes
- * (\ref ALT_I2C_TX_ABORT_CAUSE_t) of the
- * ALT_I2C_STATUS_TX_ABORT condition.
- */
-} ALT_I2C_STATUS_t;
-
-/*!
- * This type enumerates the source causes of a ALT_I2C_STATUS_TX_ABORT condition.
- *
- * The active ALT_I2C_TX_ABORT_CAUSE_t source conditions are cleared when
- * alt_i2c_int_clear() with is called ALT_I2C_STATUS_TX_ABORT in the mask or
- * alt_i2c_int_clear() is called with ALT_I2C_STATUS_ALL in the mask.
- *
- * \internal
- * Discuss special handling of abrt_sbyte_norstrt TX_ABRT source required in ???() function.
- * \endinternal
- */
-typedef enum ALT_I2C_TX_ABORT_CAUSE_e
-{
- ALT_I2C_TX_ABORT_CAUSE_7B_ADDR_NOACK = 1UL << 0,
- /*!< Master Abort 7 Bit Address - If set (1),
- * Master is in 7-bit addressing mode and the
- * address sent was not acknowledged by any
- * slave.
- *
- * Role of I2C: Master-Transmitter or
- * Master-Receiver
- */
- ALT_I2C_TX_ABORT_CAUSE_10ADDR1_NOACK = 1UL << 1,
- /*!< Master Abort 10 Bit Address Byte 1 - If set
- * (1), Master is in 10-bit address mode and the
- * first 10-bit address byte was not
- * acknowledged by any slave.
- *
- * Role of I2C: Master-Transmitter or
- * Master-Receiver
- */
- ALT_I2C_TX_ABORT_CAUSE_10ADDR2_NOACK = 1UL << 2,
- /*!< Master Abort 10 Bit Address Byte 2 - If set
- * (1), Master is in 10-bit address mode and the
- * second address byte of the 10-bit address was
- * not acknowledged by any slave
- *
- * Role of I2C: Master-Transmitter or
- * Master-Receiver
- */
- ALT_I2C_TX_ABORT_CAUSE_TXDATA_NOACK = 1UL << 3,
- /*!< Master Abort TX NOACK Bit - If set (1),
- * Master has received an acknowledgement for
- * the address, but when it sent data byte(s)
- * following the address, it did not receive an
- * acknowledge from the remote slave(s). This is
- * a master-mode only bit.
- *
- * Role of I2C: Master-Transmitter.
- */
- ALT_I2C_TX_ABORT_CAUSE_GCALL_NOACK = 1UL << 4,
- /*!< Master Abort GC Noack Bit - If set (1), I2C
- * controller in master mode sent a General Call
- * and no slave on the bus acknowledged the
- * General Call.
- *
- * Role of I2C: Master-Transmitter.
- */
- ALT_I2C_TX_ABORT_CAUSE_GCALL_RD = 1UL << 5,
- /*!< Master Abort GC Read Bit - If set (1), I2C
- * controller in master mode sent a General Call
- * but the user programmed the byte following
- * the General Call to be a read from the bus
- * (IC_DATA_CMD[9] is set to 1).
- *
- * Role of I2C: Master-Transmitter.
- */
- ALT_I2C_TX_ABORT_CAUSE_HS_ACKDET = 1UL << 6,
- /*!< Master HS MC Ack - If set (1), Master is in
- * High Speed mode and the High Speed Master
- * code was acknowledged (wrong behavior).
- *
- * Role of I2C: Master.
- */
- ALT_I2C_TX_ABORT_CAUSE_SBYTE_ACKDET = 1UL << 7,
- /*!< Master Abort START Byte - If set (1), Master
- * has sent a START Byte and the START Byte was
- * acknowledged (wrong behavior).
- *
- * Role of I2C: Master.
- */
- ALT_I2C_TX_ABORT_CAUSE_HS_NORSTRT = 1UL << 8,
- /*!< Master HS Restart Disabled - If set (1), the
- * restart is disabled (IC_RESTART_EN bit
- * (IC_CON[5]) = 0) and the user is trying to
- * use the master to transfer data in High Speed
- * mode.
- *
- * Role of I2C: Master-Transmitter or
- * Master-Receiver
- */
- ALT_I2C_TX_ABORT_CAUSE_SBYTE_NORSTRT = 1UL << 9,
- /*!< Master Abort START No Restart - To clear, the
- * source of the ABRT_SBYTE_NORSTRT must be
- * fixed first; restart must be enabled
- * (IC_CON[5]=1), the SPECIAL bit must be
- * cleared (IC_TAR[11]), or the GC_OR_START bit
- * must be cleared (IC_TAR[10]). Once the source
- * of the ABRT_SBYTE_NORSTRT is fixed, then this
- * bit can be cleared in the same manner as
- * other bits in this register. If the source of
- * the ABRT_SBYTE_NORSTRT is not fixed before
- * attempting to clear this bit, bit 9 clears
- * for one cycle and then gets re-asserted.
- *
- * If set (1), the restart is disabled
- * (IC_RESTART_EN bit (IC_CON[5]) = 0) and the
- * user is trying to send a START Byte.
- *
- * Role of I2C: Master.
- */
- ALT_I2C_TX_ABORT_CAUSE_10B_RD_NORSTRT = 1UL << 10,
- /*!< Master Abort 10 Bit No Restart - If set (1),
- * the restart is disabled (IC_RESTART_EN bit
- * (IC_CON[5]) = 0) and the master sends a read
- * command in 10-bit addressing mode.
- *
- * Role of I2C: Master Receiver.
- */
- ALT_I2C_TX_ABORT_CAUSE_MST_DIS = 1UL << 11,
- /*!< Master Operation with Master Disabled - If set
- * (1), user tries to initiate a Master
- * operation with the Master mode disabled.
- *
- * Role of I2C: Master or Slave-Receiver.
- */
- ALT_I2C_TX_ABORT_CAUSE_ARB_LOST = 1UL << 12,
- /*!< Master Abort Arbitration Lost - If set (1),
- * master has lost arbitration, or if
- * IC_TX_ABRT_SOURCE[14] is also set, then the
- * slave transmitter has lost arbitration. Note:
- * I2C can be both master and slave at the same
- * time.
- *
- * Role of I2C: Master or Slave-Transmitter.
- */
- ALT_I2C_TX_ABORT_CAUSE_SLVFLUSH_TXFIFO = 1UL << 13,
- /*!< Slave Abort Flush TXFIFO - If set (1), Slave
- * has received a read command and some data
- * exists in the TX FIFO so the slave issues a
- * TX_ABRT interrupt to flush old data in TX
- * FIFO.
- *
- * Role of I2C: Slave-Transmitter.
- */
- ALT_I2C_TX_ABORT_CAUSE_SLV_ARBLOST = 1UL << 14,
- /*!< Slave Abort Arbitration Lost - If set (1),
- * Slave lost the bus while transmitting data to
- * a remote master. IC_TX_ABRT_SOURCE[12] is set
- * at the same time.
- *
- * Note: Even though the slave never owns the
- * bus, something could go wrong on the
- * bus. This is a fail safe check. For instance,
- * during a data transmission at the low-to-high
- * transition of SCL, if what is on the data bus
- * is not what is supposed to be transmitted,
- * then DW_apb_i2c no longer own the bus.
- *
- * Role of I2C: Slave-Transmitter.
- */
- ALT_I2C_TX_ABORT_CAUSE_SLVRD_INTX = 1UL << 15
- /*!< Slave Abort Read TX - If set (1),
- * when the processor side responds to a
- * slave mode request for data to be transmitted
- * to a remote master and user writes a 1 in CMD
- * (bit 8) of IC_DATA_CMD register.
- *
- * Role of I2C: Slave-Transmitter.
- */
-} ALT_I2C_TX_ABORT_CAUSE_t;
-
-/*!
- * This type defines a structure for configuration of the SCL high and low counts
- * to ensure proper I/O timing with the device interface.
- *
- * The SCL count values are only relevant if the I2C controller is enabled to as
- * an I2C master. The SCL count values are ignored when the I2C controller is
- * enabled as an I2C slave.
- *
- * See: Clock Frequency Configuration section of <em>Chapter 20. I2C
- * Controller</em> in the <em>Cyclone V Device Handbook Volume 3: Hard
- * Processor System Technical Reference Manual</em> for a complete discussion
- * of calculation of the proper SCL clock high and low times.
- */
-typedef struct ALT_I2C_MASTER_CONFIG_s
-{
- ALT_I2C_ADDR_MODE_t addr_mode;
- /*!< The address mode (7 or 10 bit) when
- * acting as a master.
- */
- bool restart_enable;
- /*!< This setting determines whether RESTART
- * conditions may be sent when acting as a
- * master. When the \e restart_enable is
- * false, the I2C controller master is
- * incapable of performing the following
- * functions:
- * * Sending a START BYTE
- * * Performing any high-speed mode
- * operation
- * * Performing direction changes in
- * combined format mode
- * * Performing a read operation with a
- * 10-bit address
- */
- ALT_I2C_SPEED_t speed_mode;
- /*!< The speed mode of the I2C operation.
- */
- uint16_t ss_scl_hcnt;
- /*!< The SCL clock high-period count for
- * standard speed.
- */
- uint16_t ss_scl_lcnt;
- /*!< The SCL clock low-period count for
- * standard speed.
- */
- uint16_t fs_scl_hcnt;
- /*!< The SCL clock high-period count for fast
- * speed.
- */
- uint16_t fs_scl_lcnt;
- /*!< The SCL clock low-period count for fast
- * speed.
- */
- uint8_t fs_spklen;
- /*!< The duration, measured in ic_clk cycles,
- * of the longest spike that is filtered out
- * by the spike suppression logic when the
- * component is operating in SS or FS modes.
- */
-} ALT_I2C_MASTER_CONFIG_t;
-
-/*!
- * This type defines a structure for configuration of the I2C controller when it
- * is operating in slave mode.
- */
-typedef struct ALT_I2C_SLAVE_CONFIG_s
-{
- ALT_I2C_ADDR_MODE_t addr_mode; /*!< The address mode (7 or 10 bit) when
- * acting as a slave.
- */
- uint32_t addr; /*!< The slave address to which the I2C
- * controller responds when acting as a
- * slave.
- */
- bool nack_enable; /*!< Enable generation of a NACK. when the
- * I2C controller is a
- * slave-receiver. If \b true, it can
- * only generate a NACK after a data
- * byte is received; hence, the data
- * transfer is aborted and the data
- * received is not pushed onto the
- * receive buffer. When \b false, it
- * generates NACK/ACK, depending on
- * normal criteria.
- * * \b true = generate NACK after data
- * byte received
- * * \b false = generate NACK/ACK normally
- */
-} ALT_I2C_SLAVE_CONFIG_t;
-
-/*!
- * Initialize the specified I2C controller instance for use and return a device
- * handle referencing it.
- *
- * \param i2c
- * The HPS I2C controller instance to initialize.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * Initialization process:
- * * Initialize internal driver state
- * * Check clock setup (ALT_CLK_L4_SP)
- * * Take I2C instance out of reset (System Manager)
- * * Disable and clear all interrupts and status conditions
- * * Setup and initialize any expected initial I2C controller state
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_init(const ALT_I2C_CTLR_t i2c, ALT_I2C_DEV_t *i2c_dev);
-
-/*!
- * Reset the specified I2C controller instance for use.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * Reset process:
- * * Disable controller
- * * Initialize internal driver state
- * * Check clock setup (ALT_CLK_L4_SP)
- * * Take I2C instance out of reset (System Manager)
- * * Disable and clear all interrupts and status conditions
- * * Setup and initialize any expected initial I2C controller state
- * * Enable controller
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_reset(ALT_I2C_DEV_t * i2c_dev);
-
-/*!
- * Uninitialize the I2C controller referenced by the \e i2c_dev handle.
- *
- * This function attempts to gracefully shutdown the I2C controller by waiting for
- * any inpcomplete transactions to finish and then putting the I2C controller into
- * reset.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_uninit(ALT_I2C_DEV_t *i2c_dev);
-
-/*!
- * Disables the I2C controller.
- *
- * When the I2C controller is disabled, the following occurs:
- * * The TX FIFO and RX FIFO get flushed.
- * * The I2C interrupt status conditions remain active until the I2C controller
- * goes into IDLE state.
- *
- * If the controller is transmitting, it stops as well as deletes the contents of
- * the transmit buffer after the current transfer is complete. If the module is
- * receiving, the controller stops the current transfer at the end of the current
- * byte and does not acknowledge the transfer.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * IC_ENABLE.ENABLE = 0
- * Follow the procedure in section 3.8.3 Disabling DW_apb_i2c of the DW Databook.
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_disable(ALT_I2C_DEV_t *i2c_dev);
-
-/*!
- * Enables the I2C controller.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * IC_ENABLE.ENABLE = 1
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_enable(ALT_I2C_DEV_t *i2c_dev);
-
-/*!
- * Returns ALT_E_TRUE if the I2C controller is enabled.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * IC_ENABLE.ENABLE == 1
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_is_enabled(ALT_I2C_DEV_t *i2c_dev);
-
-/*!
- * Gets the current configuration of the I2C controller when operating in master
- * mode.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param cfg
- * [out] Pointer to a ALT_I2C_MASTER_CONFIG_t structure for holding
- * the returned I2C master mode configuration parameters.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_master_config_get(ALT_I2C_DEV_t *i2c_dev,
- ALT_I2C_MASTER_CONFIG_t* cfg);
-
-/*!
- * Sets the configuration of the I2C controller with operational parameters for
- * operating in master mode.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param cfg
- * Pointer to a ALT_I2C_MASTER_CONFIG_t structure holding the desired
- * I2C master mode operational parameters.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_master_config_set(ALT_I2C_DEV_t *i2c_dev,
- const ALT_I2C_MASTER_CONFIG_t* cfg);
-
-/*!
- * This is a utility function that returns the speed based on parameters of the
- * I2C master configuration.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param cfg
- * A pointer to the master confugurations.
- *
- * \param speed_in_hz
- * [out] Speed (Hz) of the I2C bus currently configured at.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- */
-ALT_STATUS_CODE alt_i2c_master_config_speed_get(ALT_I2C_DEV_t *i2c_dev,
- const ALT_I2C_MASTER_CONFIG_t* cfg,
- uint32_t * speed_in_hz);
-
-/*!
- * This is a utility function that computes parameters for the I2C master
- * configuration that best matches the speed requested.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param cfg
- * A pointer to the master confugurations.
- *
- * \param speed_in_hz
- * Speed (Hz) of the I2C bus to configure.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_master_config_speed_set(ALT_I2C_DEV_t *i2c_dev,
- ALT_I2C_MASTER_CONFIG_t * cfg,
- uint32_t speed_in_hz);
-
-/*!
- * Definition included for backwards compatibility.
- */
-#define alt_i2c_cfg_to_speed(i2c_dev, speed_in_hz, cfg) alt_i2c_master_config_speed_get((i2c_dev), (cfg), (speed_in_hz))
-
-/*!
- * Definition included for backwards compatibility.
- */
-#define alt_i2c_speed_to_cfg(i2c_dev, speed_in_hz, cfg) alt_i2c_master_config_speed_set((i2c_dev), (cfg), (speed_in_hz))
-
-/*!
- * Gets the current configuration of the I2C controller when operating in slave
- * mode.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param cfg
- * [out] Pointer to a ALT_I2C_SLAVE_CONFIG_t structure for holding
- * the returned I2C slave mode configuration parameters.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_slave_config_get(ALT_I2C_DEV_t *i2c_dev,
- ALT_I2C_SLAVE_CONFIG_t* cfg);
-
-/*!
- * Sets the configuration of the I2C controller with operational parameters for
- * operating in slave mode.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param cfg
- * Pointer to a ALT_I2C_SLAVE_CONFIG_t structure holding the desired
- * I2C slave mode operational parameters.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_slave_config_set(ALT_I2C_DEV_t *i2c_dev,
- const ALT_I2C_SLAVE_CONFIG_t* cfg);
-
-/*! \addtogroup ALT_I2C_SDA_HOLD SDA Hold Time Configuration
- *
- * The I2C protocol specification requires 300ns of hold time on the SDA signal in
- * standard and fast speed modes. Board delays on the SCL and SDA signals can mean
- * that the hold-time requirement is met at the I2C master, but not at the I2C
- * slave (or vice-versa). Because each system may encounter differing board signal
- * delays, the I2C controller provides the capability to adjust of the SDA
- * hold-time.
- *
- * The functions in this section provide software configuration of SDA hold time
- * for the I2C controller.
- *
- * @{
- */
-
-/*!
- * Gets the currently configured value for the SDA hold time in I2C controller
- * clock (\ref ALT_CLK_L4_SP) clock ticks.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param hold_time
- * [out] The configured SDA hold time in \ref ALT_CLK_L4_SP clock
- * ticks.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_sda_hold_time_get(ALT_I2C_DEV_t *i2c_dev,
- uint16_t *hold_time);
-
-/*!
- * Sets the configured value for the SDA hold time in terms of I2C controller
- * clock (\ref ALT_CLK_L4_SP) clock ticks.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param hold_time
- * The SDA hold time in \ref ALT_CLK_L4_SP clock ticks.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * IC_SDA_HOLD is 16 bits wide. hold_time must be in range 0..65535.
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_sda_hold_time_set(ALT_I2C_DEV_t *i2c_dev,
- const uint16_t hold_time);
-
-/*! @} */
-
-/*!
- * Gets the current operational mode of the I2C controller.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param mode
- * [out] The current operational mode enabled for the I2C
- * controller.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_op_mode_get(ALT_I2C_DEV_t *i2c_dev,
- ALT_I2C_MODE_t* mode);
-
-/*!
- * Sets the operational mode of the I2C controller.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param mode
- * The operational mode to enable for the I2C controller.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_op_mode_set(ALT_I2C_DEV_t *i2c_dev,
- const ALT_I2C_MODE_t mode);
-
-/*!
- * Returns ALT_E_TRUE if the I2C controller is busy. The I2C controller is busy if
- * either the Slave Finite State Machine (FSM) is not in the IDLE state or the
- * Master Finite State Machine (FSM) is not in the IDLE state.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * IC_STATUS.ACTIVITY == 1
- * NOTE: IC_STATUS[0] that is, the ACTIVITY bit is the OR of SLV_ACTIVITY and
- * MST_ACTIVITY bits.
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_is_busy(ALT_I2C_DEV_t *i2c_dev);
-
-/*!
- * This function reads a single data byte from the receive FIFO.
- *
- * This function is used to perform low level access to the data bytes
- * received by the I2C controller and buffered in the receive FIFO. It
- * may be used by master-receivers or slave receivers.
- *
- * This function does not check for valid data in the receive FIFO
- * beforehand and may cause an underflow if improperly used. It is
- * meant to be called from a context where preconditions have been
- * previously asserted such as in the implementation of the
- * alt_i2c_slave_receive() or alt_i2c_master_receive() function.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param val
- * [out] The single data byte read from the receive FIFO.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_read(ALT_I2C_DEV_t *i2c_dev, uint8_t *val);
-
-/*!
- * This function writes a single data byte to the transmit FIFO.
- *
- * This function is used to perform low level writes of data to the
- * transmit FIFO for transmission by the I2C controller. It may be
- * used by slave receivers.
- *
- * This function does not check whether the transmit FIFO is full or
- * not beforehand and may cause an overflow if improperly used. It is
- * meant to be called from a context where preconditions have been
- * previously asserted such as in the implementation of the
- * alt_i2c_slave_transmit() function.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param val
- * The data byte to write to the transmission FIFO.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_write(ALT_I2C_DEV_t *i2c_dev, const uint8_t val);
-
-/*!
- * This function acts in the role of a slave-receiver by receiving a single data
- * byte from the I2C bus in response to a write command from the master.
- *
- * This API is suitable for being called during an interrupt context. It is the
- * programmer's responsibility to ensure that there is data in the RX FIFO to
- * accomodate the request made.
- *
- * The I2C controller must be in slave mode before calling this function.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param data
- * [out] A pointer to a buffer to contain the received data byte.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_slave_receive(ALT_I2C_DEV_t *i2c_dev,
- uint8_t *data);
-
-/*!
- * This function acts in the role of a slave-transmitter by transmitting a single
- * data byte to the I2C bus in response to a read request from the master.
- *
- * This API is suitable for being called during an interrupt context. It is the
- * programmer's responsibility to ensure that there is enough space in the TX
- * FIFO to accomodate the request made.
- *
- * The I2C controller must be in slave mode before calling this function.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param data
- * The data byte to transmit.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_slave_transmit(ALT_I2C_DEV_t *i2c_dev,
- const uint8_t data);
-
-/*!
- * This function acts in the role of a slave-transmitter by transmitting data in
- * bulk to the I2C bus in response to a series of read requests from a master.
- *
- * In the standard I2C protocol, all transactions are single byte transactions and
- * the slave responds to a remote master read request by writing one byte into the
- * slave's TX FIFO. When a slave (slave-transmitter) is issued with a read request
- * from the remote master (master-receiver), at a minimum there should be at least
- * one entry placed into the slave-transmitter's TX FIFO. The I2C controller is
- * capable of handling more data in the TX FIFO so that subsequent read requests
- * can receive that data without raising an interrupt or software having to poll
- * to request more data. This eliminates overhead latencies from being incurred by
- * servicing the interrupt or polling for data requests each time had there been a
- * restriction of having only one entry placed in the TX FIFO.
- *
- * If the remote master acknowledges the data sent by the slave-transmitter and
- * there is no data in the slave's TX FIFO, the I2C controller raises the read
- * request interrupt and waits for data to be written into the TX FIFO before it
- * can be sent to the remote master.
- *
- * If the programmer knows in advance that the master is requesting a packet of \e
- * n bytes, then when another master request for data is received, the TX FIFO
- * could be written with \e n number bytes and the master receives it as a
- * continuous stream of data. For example, the slave continues to send data to the
- * master as long as the master is acknowledging the data sent and there is data
- * available in the TX FIFO. There is no need to hold the SCL line low or to issue
- * READ request again.
- *
- * If the remote master is to receive \e n bytes from the slave but the programmer
- * wrote a number of bytes larger than \e n to the TX FIFO, then when the slave
- * finishes sending the requested \e n bytes, it clears the TX FIFO and ignores
- * any excess bytes.
- *
- * This API is suitable for being called during an interrupt context. It is the
- * programmer's responsibility to ensure that there is enough space in the TX
- * FIFO to accomodate the request made.
- *
- * The I2C controller must be in slave mode before calling this function.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param data
- * A pointer to the data buffer to transmit.
- *
- * \param size
- * The size of the data buffer in bytes to place in the TX FIFO.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * See: Section <em>Slave-Transfer Operation for Bulk Transfers</em> of the DW
- * Databook for details of implementation and error conditions that may occur.
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_slave_bulk_transmit(ALT_I2C_DEV_t *i2c_dev,
- const void * data,
- const size_t size);
-
-/*!
- * This function returns the current target address.
- *
- * The I2C controller must be in master mode before calling this function.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param target_addr
- * [out] The 7 or 10 bit slave target address.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code.
- */
-ALT_STATUS_CODE alt_i2c_master_target_get(ALT_I2C_DEV_t * i2c_dev, uint32_t * target_addr);
-
-/*!
- * This function updates the target slave address for any upcoming I2C bus IO.
- *
- * This API is not suitlabe for being called in an interrupt context as it
- * will wait for the TX FIFO to flush before applying the changes. If the TX
- * FIFO is known to be empty and the controller idle, then it can be safely
- * called.
- *
- * The I2C controller must be in master mode before calling this function.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param target_addr
- * The 7 or 10 bit slave target address.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code.
- */
-ALT_STATUS_CODE alt_i2c_master_target_set(ALT_I2C_DEV_t * i2c_dev, uint32_t target_addr);
-
-/*!
- * This function acts in the role of a master-transmitter by issuing a write
- * command and transmitting data to the I2C bus.
- *
- * This API is not suitable for being called in an interrupt context as it may
- * wait for certain controller states before completing.
- *
- * The I2C controller must be in master mode before calling this function.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param data
- * A pointer to a data buffer to transmit
- *
- * \param size
- * The size of the data buffer in bytes to place in the TX FIFO.
- *
- * \param issue_restart
- * This parameter controls whether a RESTART is issued before the
- * byte is sent or received. If:
- * * \b true - if \e restart_enabled in \ref ALT_I2C_MASTER_CONFIG_t
- * is \b true, a RESTART is issued before the data is sent/received
- * (according to the value of CMD), regardless of whether or not
- * the transfer direction is changing from the previous command; if
- * \e restart_enabled is \b false, a STOP followed by a START is
- * issued instead.
- * * \b false - If \e restart_enabled in \ref ALT_I2C_MASTER_CONFIG_t
- * is \b true, a RESTART is issued only if the transfer direction
- * is changing from the previous command; if \e restart_enabled is
- * \b false, a STOP followed by a START is issued instead.
- *
- * \param issue_stop
- * This parameter controls whether a STOP is issued after the byte is
- * sent or received. If:
- * * \b true - STOP is issued after this byte, regardless of whether or
- * not the Tx FIFO is empty. If the Tx FIFO is not empty, the
- * master immediately tries to start a new transfer by issuing a
- * START and arbitrating for the bus.
- * * \b false - STOP is not issued after this byte, regardless of
- * whether or not the Tx FIFO is empty. If the Tx FIFO is not
- * empty, the master continues the current transfer by
- * sending/receiving data bytes according to the value of the CMD
- * bit. If the Tx FIFO is empty, the master holds the SCL line low
- * and stalls the bus until a new command is available in the Tx
- * FIFO.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_master_transmit(ALT_I2C_DEV_t *i2c_dev,
- const void * data,
- const size_t size,
- const bool issue_restart,
- const bool issue_stop);
-
-/*!
- * This function acts in the role of a master-receiver by receiving one or more
- * data bytes transmitted from a slave in response to read requests issued from
- * this master.
- *
- * This function causes the master to issue the required number of read requests
- * to the slave and read the received data bytes from the Rx FIFO.
- *
- * The \e issue_restart and \e issue_stop parameters apply to the final read
- * request transaction in the \e num_data_entries sequence required to fulfill the
- * aggregate receive request.
- *
- * This API is not suitable for being called in an interrupt context as it may
- * wait for certain controller states before completing.
- *
- * The I2C controller must be in master mode before calling this function.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param data
- * [out] The data buffer to receive the requested \e size bytes.
- *
- * \param size
- * The size of the data buffer to read from the RX FIFO.
- *
- * \param issue_restart
- * This parameter controls whether a RESTART is issued before the
- * byte is sent or received. If:
- * * \b true - if \e restart_enabled in \ref ALT_I2C_MASTER_CONFIG_t
- * is \b true, a RESTART is issued before the data is sent/received
- * (according to the value of CMD), regardless of whether or not
- * the transfer direction is changing from the previous command; if
- * \e restart_enabled is \b false, a STOP followed by a START is
- * issued instead.
- * * \b false - If \e restart_enabled in \ref ALT_I2C_MASTER_CONFIG_t
- * is \b true, a RESTART is issued only if the transfer direction
- * is changing from the previous command; if \e restart_enabled is
- * \b false, a STOP followed by a START is issued instead.
- *
- * \param issue_stop
- * This parameter controls whether a STOP is issued after the byte is
- * sent or received. If:
- * * \b true - STOP is issued after this byte, regardless of whether or
- * not the Tx FIFO is empty. If the Tx FIFO is not empty, the
- * master immediately tries to start a new transfer by issuing a
- * START and arbitrating for the bus.
- * * \b false - STOP is not issued after this byte, regardless of
- * whether or not the Tx FIFO is empty. If the Tx FIFO is not
- * empty, the master continues the current transfer by
- * sending/receiving data bytes according to the value of the CMD
- * bit. If the Tx FIFO is empty, the master holds the SCL line low
- * and stalls the bus until a new command is available in the Tx
- * FIFO.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_master_receive(ALT_I2C_DEV_t *i2c_dev,
- void * data,
- const size_t size,
- const bool issue_restart,
- const bool issue_stop);
-
-/*!
- * This function causes the I2C controller master to issue a READ request on the
- * bus. This function is typically used during master-receiver transfers.
- *
- * The I2C controller must be in master mode before calling this function.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param issue_restart
- * This parameter controls whether a RESTART is issued before the
- * byte is sent or received. If:
- * * \b true - if \e restart_enabled in \ref ALT_I2C_MASTER_CONFIG_t
- * is \b true, a RESTART is issued before the data is sent/received
- * (according to the value of CMD), regardless of whether or not
- * the transfer direction is changing from the previous command; if
- * \e restart_enabled is \b false, a STOP followed by a START is
- * issued instead.
- * * \b false - If \e restart_enabled in \ref ALT_I2C_MASTER_CONFIG_t
- * is \b true, a RESTART is issued only if the transfer direction
- * is changing from the previous command; if \e restart_enabled is
- * \b false, a STOP followed by a START is issued instead.
- *
- * \param issue_stop
- * This parameter controls whether a STOP is issued after the byte is
- * sent or received. If:
- * * \b true - STOP is issued after this byte, regardless of whether or
- * not the Tx FIFO is empty. If the Tx FIFO is not empty, the
- * master immediately tries to start a new transfer by issuing a
- * START and arbitrating for the bus.
- * * \b false - STOP is not issued after this byte, regardless of
- * whether or not the Tx FIFO is empty. If the Tx FIFO is not
- * empty, the master continues the current transfer by
- * sending/receiving data bytes according to the value of the CMD
- * bit. If the Tx FIFO is empty, the master holds the SCL line low
- * and stalls the bus until a new command is available in the Tx
- * FIFO.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * Write IC_DATA_CMD.CMD = 1 (read request). IC_DATA_CMD.DAT is
- * written with "don't care" values as these bits are ignored by the
- * I2C controller .
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_issue_read(ALT_I2C_DEV_t *i2c_dev,
- const bool issue_restart,
- const bool issue_stop);
-
-/*!
- * This function causes the I2C controller master to issue a send byte on the
- * bus. This function is typically used during master-transmitter/slave-transmitter
- * transfers.
- *
- * The I2C controller must be in master mode before calling this function.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param value
- * The data item to be transmitted.
- *
- * \param issue_restart
- * This parameter controls whether a RESTART is issued before the
- * byte is sent or received. If:
- * * \b true - if \e restart_enabled in \ref ALT_I2C_MASTER_CONFIG_t
- * is \b true, a RESTART is issued before the data is sent/received
- * (according to the value of CMD), regardless of whether or not
- * the transfer direction is changing from the previous command; if
- * \e restart_enabled is \b false, a STOP followed by a START is
- * issued instead.
- * * \b false - If \e restart_enabled in \ref ALT_I2C_MASTER_CONFIG_t
- * is \b true, a RESTART is issued only if the transfer direction
- * is changing from the previous command; if \e restart_enabled is
- * \b false, a STOP followed by a START is issued instead.
- *
- * \param issue_stop
- * This parameter controls whether a STOP is issued after the byte is
- * sent or received. If:
- * * \b true - STOP is issued after this byte, regardless of whether or
- * not the Tx FIFO is empty. If the Tx FIFO is not empty, the
- * master immediately tries to start a new transfer by issuing a
- * START and arbitrating for the bus.
- * * \b false - STOP is not issued after this byte, regardless of
- * whether or not the Tx FIFO is empty. If the Tx FIFO is not
- * empty, the master continues the current transfer by
- * sending/receiving data bytes according to the value of the CMD
- * bit. If the Tx FIFO is empty, the master holds the SCL line low
- * and stalls the bus until a new command is available in the Tx
- * FIFO.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * Write IC_DATA_CMD.CMD = 0 (write request).
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_issue_write(ALT_I2C_DEV_t *i2c_dev,
- const uint8_t value,
- const bool issue_restart,
- const bool issue_stop);
-
-/******************************************************************************/
-/*! \addtogroup ALT_I2C_GEN_CALL General Call
- *
- * The functions in this group support General Call addresses.
- *
- * The general call address is for addressing every device connected to the I2C
- * bus at the same time. However, if a device does not need any of the data
- * supplied within the general call structure, it can ignore this address by not
- * issuing an acknowledgment. If a device does require data from a general call
- * address, it acknowledges this address and behaves as a slave-receiver. The
- * master does not actually know how many devices acknowledged if one or more
- * devices respond. The second and following bytes are acknowledged by every
- * slave-receiver capable of handling this data. A slave who cannot process one of
- * these bytes must ignore it by not-acknowledging. If one or more slaves
- * acknowledge, the not-acknowledge will not be seen by the master.
- *
- * The functions in this group do not provide any general call functional command
- * interpretation or implementation (e.g. software reset).
- *
- * @{
- */
-
-/*!
- * This function acts in the role of a master-transmitter by issuing a general
- * call command to all devices connected to the I2C bus.
- *
- * The \e issue_restart and \e issue_stop parameters apply to the final write
- * transaction in the \e num_data_entries byte transmission sequence.
- *
- * The I2C controller must be in master mode before calling this function.
- *
- * The target slave address will be modified by this function. Call
- * alt_i2c_master_target_set() to reset the slave target address for
- * subsequent IO.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param data
- * An array of data byte(s) to transmit.
- *
- * \param num_data_entries
- * The number of entries (bytes) in \e data to place in the TX FIFO.
- *
- * \param issue_restart
- * This parameter controls whether a RESTART is issued before the
- * byte is sent or received. If:
- * * \b true - if \e restart_enabled in \ref ALT_I2C_MASTER_CONFIG_t
- * is \b true, a RESTART is issued before the data is sent/received
- * (according to the value of CMD), regardless of whether or not
- * the transfer direction is changing from the previous command; if
- * \e restart_enabled is \b false, a STOP followed by a START is
- * issued instead.
- * * \b false - If \e restart_enabled in \ref ALT_I2C_MASTER_CONFIG_t
- * is \b true, a RESTART is issued only if the transfer direction
- * is changing from the previous command; if \e restart_enabled is
- * \b false, a STOP followed by a START is issued instead.
- *
- * \param issue_stop
- * This parameter controls whether a STOP is issued after the byte is
- * sent or received. If:
- * * \b true - STOP is issued after this byte, regardless of whether or
- * not the Tx FIFO is empty. If the Tx FIFO is not empty, the
- * master immediately tries to start a new transfer by issuing a
- * START and arbitrating for the bus.
- * * \b false - STOP is not issued after this byte, regardless of
- * whether or not the Tx FIFO is empty. If the Tx FIFO is not
- * empty, the master continues the current transfer by
- * sending/receiving data bytes according to the value of the CMD
- * bit. If the Tx FIFO is empty, the master holds the SCL line low
- * and stalls the bus until a new command is available in the Tx
- * FIFO.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_master_general_call(ALT_I2C_DEV_t *i2c_dev,
- const void * data,
- const size_t size,
- const bool issue_restart,
- const bool issue_stop);
-
-/*!
- * Disables the I2C controller from responding to a General Call address. The
- * controller will respond with a NACK and no General Call status conditions or
- * interrupts are generated.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * IC_ACK_GENERAL_CALL.ACK_GEN_CALL = 0
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_general_call_ack_disable(ALT_I2C_DEV_t *i2c_dev);
-
-/*!
- * Enables the I2C controller to respond with an ACK when it receives a General
- * Call address.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * IC_ACK_GENERAL_CALL.ACK_GEN_CALL = 1
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_general_call_ack_enable(ALT_I2C_DEV_t *i2c_dev);
-
-/*!
- * Returns ALT_E_TRUE if the I2C controller is enabled to respond to General Call
- * addresses.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * IC_ACK_GENERAL_CALL.ACK_GEN_CALL == 1
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_general_call_ack_is_enabled(ALT_I2C_DEV_t *i2c_dev);
-
-/*! @} */
-
-/******************************************************************************/
-/*! \addtogroup ALT_I2C_INT Interrupt and Status Conditions
- *
- * The functions in this group provide management for the I2C controller status
- * conditions and interrupts.
- *
- * Each I2C controller has a single combined interrupt output (\b
- * ALT_INT_INTERRUPT_I2C<em>n</em>_IRQ). The following events can generate an
- * interrupt:
- * * General Call Address Received
- * * Start or Restart Condition Occurred
- * * Stop Condition Occurred
- * * I2C Controller Activity
- * * Receive Done
- * * Transmit Abort
- * * Read Request
- * * Transmit Buffer Empty
- * * Transmit Overflow
- * * Receive Buffer Full
- * * Receive Overflow
- * * Receive Underflow
- *
- * These interrupt status conditions may be monitored either by polling their
- * status or by configuring interrupt handlers using the HWLIB Interrupt
- * Controller API.
- *
- * Functions to get the current status, enable or disable (i.e. mass or unmask),
- * and clear interrupt status conditions for the I2C controller are defined in
- * this section.
- *
- * @{
- */
-
-/*!
- * Returns the current I2C controller interrupt status conditions.
- *
- * This function returns the current value of the I2C controller interrupt status
- * register value which reflects the current I2C controller status conditions that
- * are not disabled (i.e. masked).
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param status
- * [out] A pointer to a bit mask of the active \ref ALT_I2C_STATUS_t
- * interrupt and status conditions.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * IC_INTR_STAT
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_int_status_get(ALT_I2C_DEV_t *i2c_dev,
- uint32_t *status);
-
-/*!
- * Returns the I2C controller raw interrupt status conditions irrespective of
- * the interrupt status condition enablement state.
- *
- * This function returns the current value of the I2C controller raw interrupt
- * status register value which reflects the current I2C controller status
- * conditions regardless of whether they are disabled (i.e. masked) or not.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param status
- * [out] A pointer to a bit mask of the active \ref ALT_I2C_STATUS_t
- * interrupt and status conditions.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * IC_INTR_STAT
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_int_raw_status_get(ALT_I2C_DEV_t *i2c_dev,
- uint32_t *status);
-
-/*!
- * Clears the specified I2C controller interrupt status conditions identified
- * in the mask.
- *
- * This function clears one or more of the status conditions as contributors to
- * the \b ALT_INT_INTERRUPT_I2C<em>n</em>_IRQ interrupt signal state.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param mask
- * Specifies the QSPI interrupt status conditions to clear. \e mask
- * is a mask of logically OR'ed \ref ALT_I2C_STATUS_t values that
- * designate the status conditions to clear.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_int_clear(ALT_I2C_DEV_t *i2c_dev, const uint32_t mask);
-
-/*!
- * Disable the specified I2C controller interrupt status conditions identified in
- * the mask.
- *
- * This function disables one or more of the status conditions as contributors to
- * the \b ALT_INT_INTERRUPT_I2C<em>n</em>_IRQ interrupt signal state.
- *
- * NOTE: A cleared bit for any status condition in the mask value does not have
- * the effect of enabling it as a contributor to the \b
- * ALT_INT_INTERRUPT_I2C<em>n</em>_IRQ interrupt signal state. The function
- * alt_i2c_int_enable() is used to enable status source conditions.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param mask
- * Specifies the status conditions to disable as interrupt source
- * contributors. \e mask is a mask of logically OR'ed \ref
- * ALT_I2C_STATUS_t values that designate the status conditions to
- * disable.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_int_disable(ALT_I2C_DEV_t *i2c_dev, const uint32_t mask);
-
-/*!
- * Enable the specified I2C controller interrupt status conditions identified in
- * the mask.
- *
- * This function enables one or more of the status conditions as contributors to
- * the \b ALT_INT_INTERRUPT_I2C<em>n</em>_IRQ interrupt signal state.
- *
- * NOTE: A cleared bit for any status condition in the mask value does not have
- * the effect of disabling it as a contributor to the \b
- * ALT_INT_INTERRUPT_I2C<em>n</em>_IRQ interrupt signal state. The function
- * alt_i2c_int_disable() is used to disable status source conditions.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param mask
- * Specifies the status conditions to enable as interrupt source
- * contributors. \e mask is a mask of logically OR'ed \ref
- * ALT_I2C_STATUS_t values that designate the status conditions to
- * enable.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_int_enable(ALT_I2C_DEV_t *i2c_dev, const uint32_t mask);
-
-/*!
- * Gets the cause of I2C transmission abort. A I2C transmission abort indicates
- * that the I2C transmitter is unable to complete the intended actions on the
- * contents of the transmit FIFO. This situation can occur both as an I2C master
- * or an I2C slave, and is referred to as a "transmit abort".
- *
- * The returned value of this function is the value of the IC_TX_ABRT_SOURCE
- * register which indicates the cause why the transmit abort occurred.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param cause
- * [out] A pointer to a bit mask of the \ref ALT_I2C_TX_ABORT_CAUSE_t
- * causes of the transmission abort.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * IC_TX_ABRT_SOURCE
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_tx_abort_cause_get(ALT_I2C_DEV_t *i2c_dev,
- ALT_I2C_TX_ABORT_CAUSE_t *cause);
-
-/*! @} */
-
-/******************************************************************************/
-/*! \addtogroup ALT_I2C_RX_FIFO RX FIFO Management
- *
- * The receive FIFO has a configurable threshold value that controls the level of
- * entries (or above) that sets the RX_FULL status condition and triggers an
- * interrupt. The valid range is 0 - (ALT_I2C_RX_FIFO_NUM_ENTRIES-1), with the
- * additional restriction that I2C controller does not allow this value to be set
- * to a value larger than the depth of the buffer. If an attempt is made to do
- * that, the actual value set will be the maximum depth of the buffer. A value of
- * 0 sets the threshold for 1 entry, and a value of (ALT_I2C_RX_FIFO_NUM_ENTRIES-1)
- * sets the threshold for ALT_I2C_RX_FIFO_NUM_ENTRIES entries.
- *
- * @{
- */
-
-/*!
- * The number of entries (depth) of the I2C controller receive FIFO.
- */
-#define ALT_I2C_RX_FIFO_NUM_ENTRIES 64
-
-/*!
- * Returns ALT_E_TRUE when the receive FIFO is empty.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * IC_STATUS.RFNE == 0
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_rx_fifo_is_empty(ALT_I2C_DEV_t *i2c_dev);
-
-/*!
- * Returns ALT_E_TRUE when the receive FIFO is completely full.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * IC_STATUS.RFF == 1
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_rx_fifo_is_full(ALT_I2C_DEV_t *i2c_dev);
-
-/*!
- * Returns the number of valid entries in the receive FIFO.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param num_entries
- * [out] The number of entries in the receive FIFO.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * IC_RXFLR.RXFLR
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_rx_fifo_level_get(ALT_I2C_DEV_t *i2c_dev,
- uint32_t *num_entries);
-
-/*!
- * Gets the current receive FIFO threshold level value.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param threshold
- * [out] The current threshold value.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * IC_RX_TL.RX_TL
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_rx_fifo_threshold_get(ALT_I2C_DEV_t *i2c_dev,
- uint8_t *threshold);
-
-/*!
- * Sets the current receive FIFO threshold level value.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param threshold
- * The threshold value.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * IC_RX_TL.RX_TL = threshold
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_rx_fifo_threshold_set(ALT_I2C_DEV_t *i2c_dev,
- const uint8_t threshold);
-
-/*! @} */
-
-/******************************************************************************/
-/*! \addtogroup ALT_I2C_TX_FIFO TX FIFO Management
- *
- * The transmit FIFO has a configurable threshold value that controls the level of
- * entries (or below) that sets the TX_EMPTY status condition and triggers an
- * interrupt. The valid range is 0 - (ALT_I2C_TX_FIFO_NUM_ENTRIES-1), with the
- * additional restriction that I2C controller does not allow this value to be set
- * to a value larger than the depth of the buffer. If an attempt is made to do
- * that, the actual value set will be the maximum depth of the buffer. A value of
- * 0 sets the threshold for 0 entries, and a value of (ALT_I2C_TX_FIFO_NUM_ENTRIES-1)
- * sets the threshold for (ALT_I2C_TX_FIFO_NUM_ENTRIES-1) entries.
- *
- * @{
- */
-
-/*!
- * The number of entries (depth) of the I2C controller transmit FIFO.
- */
-#define ALT_I2C_TX_FIFO_NUM_ENTRIES 64
-
-/*!
- * Returns ALT_E_TRUE when the transmit FIFO is empty.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * IC_STATUS.TFE == 1
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_tx_fifo_is_empty(ALT_I2C_DEV_t *i2c_dev);
-
-/*!
- * Returns ALT_E_TRUE when the transmit FIFO is completely full.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * IC_STATUS.TFNF == 0
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_tx_fifo_is_full(ALT_I2C_DEV_t *i2c_dev);
-
-/*!
- * Returns the number of valid entries in the transmit FIFO.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param num_entries
- * [out] The number of entries in the transmit FIFO.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * IC_TXFLR.TXFLR
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_tx_fifo_level_get(ALT_I2C_DEV_t *i2c_dev,
- uint32_t *num_entries);
-
-/*!
- * Gets the current transmit FIFO threshold level value.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param threshold
- * [out] The current threshold value.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * IC_TX_TL.TX_TL
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_tx_fifo_threshold_get(ALT_I2C_DEV_t *i2c_dev,
- uint8_t *threshold);
-
-/*!
- * Sets the current transmit FIFO threshold level value.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param threshold
- * The threshold value.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- *
- * \internal
- * IC_TX_TL.TX_TL = threshold
- * \endinternal
- */
-ALT_STATUS_CODE alt_i2c_tx_fifo_threshold_set(ALT_I2C_DEV_t *i2c_dev,
- const uint8_t threshold);
-
-/*! @} */
-
-/******************************************************************************/
-/*! \addtogroup ALT_I2C_DMA DMA Interface
- *
- * The DMA interface has a configurable threshold value that controls the
- * level of entries that triggers the burst handshaking request used for DMA
- * integration.
- *
- * For the TX threshold, if the number of entries in the TX FIFO is at or
- * below the set threshold, a DMA handshaking request will be made. The valid
- * range for the TX threshold is 0 - (ALT_I2C_TX_FIFO_NUM_ENTRIES - 1).
- *
- * For the RX threshold, if the number of entries in the RX FIFO is above the
- * set threshold, a DMA handshaking request will be made. The valid range for
- * the RX treshold is 0 - (ALT_I2C_TX_FIFO_NUM_ENTRIES - 1).
- *
- * Having a higher threshold can improve the AXI bus utilization at the
- * expense of the likelyhoold of overflow / underflow conditions.
- * @{
- */
-
-/*!
- * Gets the current RX DMA threshold level value.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param threshold
- * [out] The threshold value.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- */
-ALT_STATUS_CODE alt_i2c_rx_dma_threshold_get(ALT_I2C_DEV_t * i2c_dev, uint8_t * threshold);
-
-/*!
- * Sets the current RX DMA threshold level value.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param threshold
- * The threshold value.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- */
-ALT_STATUS_CODE alt_i2c_rx_dma_threshold_set(ALT_I2C_DEV_t * i2c_dev, uint8_t threshold);
-
-/*!
- * Gets the current TX DMA threshold level value.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param threshold
- * [out] The threshold value.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- */
-ALT_STATUS_CODE alt_i2c_tx_dma_threshold_get(ALT_I2C_DEV_t * i2c_dev, uint8_t * threshold);
-
-/*!
- * Sets the current TX DMA threshold level value.
- *
- * \param i2c_dev
- * A pointer to the I2C controller device block instance.
- *
- * \param threshold
- * The threshold value.
- *
- * \retval ALT_E_SUCCESS Successful status.
- * \retval ALT_E_ERROR Details about error status code
- */
-ALT_STATUS_CODE alt_i2c_tx_dma_threshold_set(ALT_I2C_DEV_t * i2c_dev, uint8_t threshold);
-
-/*! @} */
-
-/*! @} */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-#endif /* __ALT_I2C_H__ */