summaryrefslogtreecommitdiff
path: root/chip/g/uartn.h
diff options
context:
space:
mode:
Diffstat (limited to 'chip/g/uartn.h')
-rw-r--r--chip/g/uartn.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/chip/g/uartn.h b/chip/g/uartn.h
new file mode 100644
index 0000000000..12d0f53bff
--- /dev/null
+++ b/chip/g/uartn.h
@@ -0,0 +1,77 @@
+/* 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"
+#include "gpio.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);
+#endif /* __CROS_EC_UARTN_H */