summaryrefslogtreecommitdiffstats
path: root/bsps/sparc/include/bsp/i2cmst.h
diff options
context:
space:
mode:
Diffstat (limited to 'bsps/sparc/include/bsp/i2cmst.h')
-rw-r--r--bsps/sparc/include/bsp/i2cmst.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/bsps/sparc/include/bsp/i2cmst.h b/bsps/sparc/include/bsp/i2cmst.h
new file mode 100644
index 0000000000..3eee717524
--- /dev/null
+++ b/bsps/sparc/include/bsp/i2cmst.h
@@ -0,0 +1,65 @@
+/**
+ * @file
+ * @ingroup sparc_bsp
+ * @defgroup i2c I2C-master
+ * @ingroup i2c
+ * @brief Driver for GRLIB port of OpenCores I2C-master
+ */
+
+/*
+ * COPYRIGHT (c) 2007 Cobham Gaisler AB
+ * with parts from the RTEMS MPC83xx I2C driver (c) 2007 Embedded Brains GmbH.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+#ifndef _I2CMST_H
+#define _I2CMST_H
+
+#include <rtems/libi2c.h>
+#include <ambapp.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* I2C-master operational registers */
+
+typedef struct gr_i2cmst_regs {
+ volatile unsigned int prescl; /* Prescale register */
+ volatile unsigned int ctrl; /* Control register */
+ volatile unsigned int tdrd; /* Transmit and Receive registers */
+ volatile unsigned int cmdsts; /* Command and Status registers */
+} gr_i2cmst_regs_t;
+
+/* Control (CTRL) register */
+#define GRI2C_CTRL_EN 0x00000080 /* Enable core */
+#define GRI2C_CTRL_IEN 0x00000040 /* Interrupt enable */
+
+/* Command (CMD) register */
+#define GRI2C_CMD_STA 0x00000080 /* Generate START condition */
+#define GRI2C_CMD_STO 0x00000040 /* Generate STOP condition */
+#define GRI2C_CMD_RD 0x00000020 /* Read from slave */
+#define GRI2C_CMD_WR 0x00000010 /* Write to slave */
+#define GRI2C_CMD_ACK 0x00000008 /* Acknowledge */
+#define GRI2C_CMD_IACK 0x00000001 /* Interrupt acknowledge */
+
+/* Status (STS) register */
+#define GRI2C_STS_RXACK 0x00000080 /* Receive acknowledge */
+#define GRI2C_STS_BUSY 0x00000040 /* I2C-bus busy */
+#define GRI2C_STS_AL 0x00000020 /* Arbitration lost */
+#define GRI2C_STS_TIP 0x00000002 /* Transfer in progress */
+#define GRI2C_STS_IF 0x00000001 /* Interrupt flag */
+
+#define GRI2C_STATUS_IDLE 0x00000000
+
+/* Register I2CMST driver to Driver Manager */
+void i2cmst_register_drv (void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _I2CMST_H */