UART Device Interface Functions More...
#include <stdbool.h>
#include <stdint.h>
#include "sw/device/lib/base/macros.h"
#include "sw/device/lib/base/mmio.h"
#include "sw/device/lib/dif/dif_base.h"
#include "dt/dt_uart.h"
Go to the source code of this file.
Data Structures | |
struct | dif_uart |
A handle to uart. More... | |
Macros | |
#define | kDifUartIrqTxWatermark kDtUartIrqTxWatermark |
A uart interrupt request type. | |
#define | kDifUartIrqRxWatermark kDtUartIrqRxWatermark |
Raised if the receive FIFO is past the high-water mark. | |
#define | kDifUartIrqTxDone kDtUartIrqTxDone |
Raised if the transmit FIFO has emptied and no transmit is ongoing. | |
#define | kDifUartIrqRxOverflow kDtUartIrqRxOverflow |
Raised if the receive FIFO has overflowed. | |
#define | kDifUartIrqRxFrameErr kDtUartIrqRxFrameErr |
Raised if a framing error has been detected on receive. | |
#define | kDifUartIrqRxBreakErr kDtUartIrqRxBreakErr |
Raised if break condition has been detected on receive. | |
#define | kDifUartIrqRxTimeout kDtUartIrqRxTimeout |
Raised if RX FIFO has characters remaining in the FIFO without being retrieved for the programmed time period. | |
#define | kDifUartIrqRxParityErr kDtUartIrqRxParityErr |
Raised if the receiver has detected a parity error. | |
#define | kDifUartIrqTxEmpty kDtUartIrqTxEmpty |
Raised if the transmit FIFO is empty. | |
Typedefs | |
typedef struct dif_uart | dif_uart_t |
A handle to uart. | |
typedef enum dif_uart_alert | dif_uart_alert_t |
A uart alert type. | |
typedef dt_uart_irq_t | dif_uart_irq_t |
typedef uint32_t | dif_uart_irq_state_snapshot_t |
A snapshot of the state of the interrupts for this IP. | |
typedef uint32_t | dif_uart_irq_enable_snapshot_t |
A snapshot of the enablement state of the interrupts for this IP. | |
Enumerations | |
enum | dif_uart_alert { kDifUartAlertFatalFault = 0 } |
A uart alert type. More... | |
Functions | |
OT_WARN_UNUSED_RESULT dif_result_t | dif_uart_init (mmio_region_t base_addr, dif_uart_t *uart) |
Creates a new handle for a(n) uart peripheral. | |
OT_WARN_UNUSED_RESULT dif_result_t | dif_uart_init_from_dt (dt_uart_t dt, dif_uart_t *uart) |
Creates a new handle for a(n) uart peripheral. | |
OT_WARN_UNUSED_RESULT dif_result_t | dif_uart_get_dt (const dif_uart_t *uart, dt_uart_t *dt) |
Get the DT handle from this DIF. | |
OT_WARN_UNUSED_RESULT dif_result_t | dif_uart_alert_force (const dif_uart_t *uart, dif_uart_alert_t alert) |
Forces a particular alert, causing it to be escalated as if the hardware had raised it. | |
OT_WARN_UNUSED_RESULT dif_result_t | dif_uart_irq_get_type (const dif_uart_t *uart, dif_uart_irq_t, dif_irq_type_t *type) |
Returns the type of a given interrupt (i.e., event or status) for this IP. | |
OT_WARN_UNUSED_RESULT dif_result_t | dif_uart_irq_get_state (const dif_uart_t *uart, dif_uart_irq_state_snapshot_t *snapshot) |
Returns the state of all interrupts (i.e., pending or not) for this IP. | |
OT_WARN_UNUSED_RESULT dif_result_t | dif_uart_irq_is_pending (const dif_uart_t *uart, dif_uart_irq_t, bool *is_pending) |
Returns whether a particular interrupt is currently pending. | |
OT_WARN_UNUSED_RESULT dif_result_t | dif_uart_irq_acknowledge_state (const dif_uart_t *uart, dif_uart_irq_state_snapshot_t snapshot) |
Acknowledges all interrupts that were pending at the time of the state snapshot. | |
OT_WARN_UNUSED_RESULT dif_result_t | dif_uart_irq_acknowledge_all (const dif_uart_t *uart) |
Acknowledges all interrupts, indicating to the hardware that all interrupts have been successfully serviced. | |
OT_WARN_UNUSED_RESULT dif_result_t | dif_uart_irq_acknowledge (const dif_uart_t *uart, dif_uart_irq_t) |
Acknowledges a particular interrupt, indicating to the hardware that it has been successfully serviced. | |
OT_WARN_UNUSED_RESULT dif_result_t | dif_uart_irq_force (const dif_uart_t *uart, dif_uart_irq_t, const bool val) |
Forces a particular interrupt, causing it to be serviced as if hardware had asserted it. | |
OT_WARN_UNUSED_RESULT dif_result_t | dif_uart_irq_get_enabled (const dif_uart_t *uart, dif_uart_irq_t, dif_toggle_t *state) |
Checks whether a particular interrupt is currently enabled or disabled. | |
OT_WARN_UNUSED_RESULT dif_result_t | dif_uart_irq_set_enabled (const dif_uart_t *uart, dif_uart_irq_t, dif_toggle_t state) |
Sets whether a particular interrupt is currently enabled or disabled. | |
OT_WARN_UNUSED_RESULT dif_result_t | dif_uart_irq_disable_all (const dif_uart_t *uart, dif_uart_irq_enable_snapshot_t *snapshot) |
Disables all interrupts, optionally snapshotting all enable states for later restoration. | |
OT_WARN_UNUSED_RESULT dif_result_t | dif_uart_irq_restore_all (const dif_uart_t *uart, const dif_uart_irq_enable_snapshot_t *snapshot) |
Restores interrupts from the given (enable) snapshot. | |
UART Device Interface Functions
Definition in file dif_uart_autogen.h.
struct dif_uart |
A handle to uart.
This type should be treated as opaque by users.
Definition at line 37 of file dif_uart_autogen.h.
Data Fields | ||
---|---|---|
mmio_region_t | base_addr | The base address for the uart hardware registers. |
dt_uart_t | dt |
The instance, set to kDtUartCount if not initialized through dif_uart_init_from_dt . |
#define kDifUartIrqRxBreakErr kDtUartIrqRxBreakErr |
Raised if break condition has been detected on receive.
Definition at line 154 of file dif_uart_autogen.h.
#define kDifUartIrqRxFrameErr kDtUartIrqRxFrameErr |
Raised if a framing error has been detected on receive.
Definition at line 150 of file dif_uart_autogen.h.
#define kDifUartIrqRxOverflow kDtUartIrqRxOverflow |
Raised if the receive FIFO has overflowed.
Definition at line 146 of file dif_uart_autogen.h.
#define kDifUartIrqRxParityErr kDtUartIrqRxParityErr |
Raised if the receiver has detected a parity error.
Definition at line 162 of file dif_uart_autogen.h.
#define kDifUartIrqRxTimeout kDtUartIrqRxTimeout |
Raised if RX FIFO has characters remaining in the FIFO without being retrieved for the programmed time period.
Definition at line 158 of file dif_uart_autogen.h.
#define kDifUartIrqRxWatermark kDtUartIrqRxWatermark |
Raised if the receive FIFO is past the high-water mark.
Definition at line 138 of file dif_uart_autogen.h.
#define kDifUartIrqTxDone kDtUartIrqTxDone |
Raised if the transmit FIFO has emptied and no transmit is ongoing.
Definition at line 142 of file dif_uart_autogen.h.
#define kDifUartIrqTxEmpty kDtUartIrqTxEmpty |
Raised if the transmit FIFO is empty.
Definition at line 166 of file dif_uart_autogen.h.
#define kDifUartIrqTxWatermark kDtUartIrqTxWatermark |
A uart interrupt request type.
DEPRECATED Use dt_uart_irq_t
instead. This enumeration exists solely for the transition to dt-based interrupt numbers and will be removed in the future.
The following are defines to keep the types consistent with DT. Raised if the transmit FIFO is past the high-water mark.
Definition at line 134 of file dif_uart_autogen.h.
typedef uint32_t dif_uart_irq_enable_snapshot_t |
A snapshot of the enablement state of the interrupts for this IP.
This is an opaque type, to be used with the dif_uart_irq_disable_all()
and dif_uart_irq_restore_all()
functions.
Definition at line 276 of file dif_uart_autogen.h.
typedef uint32_t dif_uart_irq_state_snapshot_t |
A snapshot of the state of the interrupts for this IP.
This is an opaque type, to be used with the dif_uart_irq_get_state()
and dif_uart_irq_acknowledge_state()
functions.
Definition at line 174 of file dif_uart_autogen.h.
typedef dt_uart_irq_t dif_uart_irq_t |
Definition at line 120 of file dif_uart_autogen.h.
typedef struct dif_uart dif_uart_t |
A handle to uart.
This type should be treated as opaque by users.
enum dif_uart_alert |
A uart alert type.
Enumerator | |
---|---|
kDifUartAlertFatalFault | This fatal alert is triggered when a fatal TL-UL bus integrity fault is detected. |
Definition at line 98 of file dif_uart_autogen.h.
OT_WARN_UNUSED_RESULT dif_result_t dif_uart_alert_force | ( | const dif_uart_t * | uart, |
dif_uart_alert_t | alert ) |
Forces a particular alert, causing it to be escalated as if the hardware had raised it.
uart | A uart handle. |
alert | The alert to force. |
Definition at line 62 of file dif_uart_autogen.c.
OT_WARN_UNUSED_RESULT dif_result_t dif_uart_get_dt | ( | const dif_uart_t * | uart, |
dt_uart_t * | dt ) |
Get the DT handle from this DIF.
If this DIF was initialized by dif_uart_init_from_dt(dt, ..)
then this function will return dt
. Otherwise it will return an error.
uart | A uart handle. | |
[out] | dt | DT handle. |
kDifBadArg
if the DIF has no DT information, kDifOk
otherwise. Definition at line 52 of file dif_uart_autogen.c.
OT_WARN_UNUSED_RESULT dif_result_t dif_uart_init | ( | mmio_region_t | base_addr, |
dif_uart_t * | uart ) |
Creates a new handle for a(n) uart peripheral.
This function does not actuate the hardware.
base_addr | The MMIO base address of the uart peripheral. | |
[out] | uart | Out param for the initialized handle. |
DEPRECATED This function exists solely for the transition to dt-based DIFs and will be removed in the future.
Definition at line 25 of file dif_uart_autogen.c.
OT_WARN_UNUSED_RESULT dif_result_t dif_uart_init_from_dt | ( | dt_uart_t | dt, |
dif_uart_t * | uart ) |
Creates a new handle for a(n) uart peripheral.
This function does not actuate the hardware.
dt | The devicetable description of the device. | |
[out] | uart | Out param for the initialized handle. |
Definition at line 39 of file dif_uart_autogen.c.
OT_WARN_UNUSED_RESULT dif_result_t dif_uart_irq_acknowledge | ( | const dif_uart_t * | uart, |
dif_uart_irq_t | irq ) |
Acknowledges a particular interrupt, indicating to the hardware that it has been successfully serviced.
uart | A uart handle. |
irq | An interrupt request. |
Definition at line 241 of file dif_uart_autogen.c.
OT_WARN_UNUSED_RESULT dif_result_t dif_uart_irq_acknowledge_all | ( | const dif_uart_t * | uart | ) |
Acknowledges all interrupts, indicating to the hardware that all interrupts have been successfully serviced.
uart | A uart handle. |
Definition at line 222 of file dif_uart_autogen.c.
OT_WARN_UNUSED_RESULT dif_result_t dif_uart_irq_acknowledge_state | ( | const dif_uart_t * | uart, |
dif_uart_irq_state_snapshot_t | snapshot ) |
Acknowledges all interrupts that were pending at the time of the state snapshot.
uart | A uart handle. |
snapshot | Interrupt state snapshot. |
Definition at line 180 of file dif_uart_autogen.c.
OT_WARN_UNUSED_RESULT dif_result_t dif_uart_irq_disable_all | ( | const dif_uart_t * | uart, |
dif_uart_irq_enable_snapshot_t * | snapshot ) |
Disables all interrupts, optionally snapshotting all enable states for later restoration.
uart | A uart handle. | |
[out] | snapshot | Out-param for the snapshot; may be NULL . |
Definition at line 349 of file dif_uart_autogen.c.
OT_WARN_UNUSED_RESULT dif_result_t dif_uart_irq_force | ( | const dif_uart_t * | uart, |
dif_uart_irq_t | irq, | ||
const bool | val ) |
Forces a particular interrupt, causing it to be serviced as if hardware had asserted it.
uart | A uart handle. |
irq | An interrupt request. |
val | Value to be set. |
Definition at line 266 of file dif_uart_autogen.c.
OT_WARN_UNUSED_RESULT dif_result_t dif_uart_irq_get_enabled | ( | const dif_uart_t * | uart, |
dif_uart_irq_t | irq, | ||
dif_toggle_t * | state ) |
Checks whether a particular interrupt is currently enabled or disabled.
uart | A uart handle. | |
irq | An interrupt request. | |
[out] | state | Out-param toggle state of the interrupt. |
Definition at line 291 of file dif_uart_autogen.c.
OT_WARN_UNUSED_RESULT dif_result_t dif_uart_irq_get_state | ( | const dif_uart_t * | uart, |
dif_uart_irq_state_snapshot_t * | snapshot ) |
Returns the state of all interrupts (i.e., pending or not) for this IP.
uart | A uart handle. | |
[out] | snapshot | Out-param for interrupt state snapshot. |
Definition at line 163 of file dif_uart_autogen.c.
OT_WARN_UNUSED_RESULT dif_result_t dif_uart_irq_get_type | ( | const dif_uart_t * | uart, |
dif_uart_irq_t | irq, | ||
dif_irq_type_t * | type ) |
Returns the type of a given interrupt (i.e., event or status) for this IP.
uart | A uart handle. | |
irq | An interrupt request. | |
[out] | type | Out-param for the interrupt type. |
Definition at line 144 of file dif_uart_autogen.c.
OT_WARN_UNUSED_RESULT dif_result_t dif_uart_irq_is_pending | ( | const dif_uart_t * | uart, |
dif_uart_irq_t | irq, | ||
bool * | is_pending ) |
Returns whether a particular interrupt is currently pending.
uart | A uart handle. | |
irq | An interrupt request. | |
[out] | is_pending | Out-param for whether the interrupt is pending. |
Definition at line 197 of file dif_uart_autogen.c.
OT_WARN_UNUSED_RESULT dif_result_t dif_uart_irq_restore_all | ( | const dif_uart_t * | uart, |
const dif_uart_irq_enable_snapshot_t * | snapshot ) |
Restores interrupts from the given (enable) snapshot.
uart | A uart handle. |
snapshot | A snapshot to restore from. |
Definition at line 376 of file dif_uart_autogen.c.
OT_WARN_UNUSED_RESULT dif_result_t dif_uart_irq_set_enabled | ( | const dif_uart_t * | uart, |
dif_uart_irq_t | irq, | ||
dif_toggle_t | state ) |
Sets whether a particular interrupt is currently enabled or disabled.
uart | A uart handle. |
irq | An interrupt request. |
state | The new toggle state for the interrupt. |
Definition at line 318 of file dif_uart_autogen.c.