122 lines
2.6 KiB
C
122 lines
2.6 KiB
C
/* Copyright 2016 The Chromium OS Authors. All rights reserved.
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
#ifndef __CROS_EC_UARTN_H
|
|
#define __CROS_EC_UARTN_H
|
|
|
|
#include "common.h"
|
|
|
|
/**
|
|
* Initialize the UART module.
|
|
*/
|
|
void uartn_init(int uart);
|
|
|
|
/**
|
|
* Flush the transmit FIFO.
|
|
*/
|
|
void uartn_tx_flush(int uart);
|
|
|
|
/**
|
|
* Return non-zero if there is room to transmit a character immediately.
|
|
*/
|
|
int uartn_tx_ready(int uart);
|
|
|
|
/**
|
|
* Return non-zero if a transmit is in progress.
|
|
*/
|
|
int uartn_tx_in_progress(int uart);
|
|
|
|
/*
|
|
* Return non-zero if the UART has a character available to read.
|
|
*/
|
|
int uartn_rx_available(int uart);
|
|
|
|
/**
|
|
* Send a character to the UART data register.
|
|
*
|
|
* If the transmit FIFO is full, blocks until there is space.
|
|
*
|
|
* @param c Character to send.
|
|
*/
|
|
void uartn_write_char(int uart, char c);
|
|
|
|
/**
|
|
* Read one char from the UART data register.
|
|
*
|
|
* @return The character read.
|
|
*/
|
|
int uartn_read_char(int uart);
|
|
|
|
/**
|
|
* Disable all UART related IRQs.
|
|
*
|
|
* Used to avoid concurrent accesses on UART management variables.
|
|
*/
|
|
void uartn_disable_interrupt(int uart);
|
|
|
|
/**
|
|
* Re-enable UART IRQs.
|
|
*/
|
|
void uartn_enable_interrupt(int uart);
|
|
|
|
/**
|
|
* Re-enable the UART transmit interrupt.
|
|
*
|
|
* This also forces triggering a UART interrupt, if the transmit interrupt was
|
|
* disabled.
|
|
*/
|
|
void uartn_tx_start(int uart);
|
|
|
|
/**
|
|
* Disable the UART transmit interrupt.
|
|
*/
|
|
void uartn_tx_stop(int uart);
|
|
|
|
/**
|
|
* Return non-zero if TX is connected for the UART.
|
|
*
|
|
* @param uart UART to check
|
|
* @return 1 if TX pin is connected, 0 if disconnected.
|
|
*/
|
|
int uart_tx_is_connected(int uart);
|
|
|
|
/* Connect TX pin for the UART */
|
|
void uartn_tx_connect(int uart);
|
|
|
|
/* Disconnect TX pin for the UART */
|
|
void uartn_tx_disconnect(int uart);
|
|
|
|
/**
|
|
* Return non-zero if TX and RX are enabled for the UART.
|
|
*
|
|
* Note that TX won't be connected unless uart_tx_is_connected() is also
|
|
* non-zero.
|
|
*
|
|
* @param uart UART to check
|
|
* @return 1 if UART is enabled, 0 if disabled.
|
|
*/
|
|
int uartn_is_enabled(int uart);
|
|
|
|
/**
|
|
* Enable TX and RX for the UART. Disable HW flow control and loopback.
|
|
*
|
|
* @param uart UART to enable
|
|
*
|
|
* Note that this does NOT connect the TX pin for the UART; that must be done
|
|
* explicitly via uartn_tx_connect().
|
|
*/
|
|
void uartn_enable(int uart);
|
|
|
|
/**
|
|
* Disable TX, RX, HW flow control, and loopback.
|
|
*
|
|
* @param uart UART to disable
|
|
*
|
|
* Note that this does NOT disconnect the TX pin for the UART; that must be
|
|
* done explicitly via uartn_tx_disconnect().
|
|
*/
|
|
void uartn_disable(int uart);
|
|
#endif /* __CROS_EC_UARTN_H */
|