summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/gen5200/i2c/mpc5200mbus.h
diff options
context:
space:
mode:
authorRalf Corsepius <ralf.corsepius@rtems.org>2005-12-31 05:09:26 +0000
committerRalf Corsepius <ralf.corsepius@rtems.org>2005-12-31 05:09:26 +0000
commitca680bc5890abe0d6bfe7eb4a40a0229f1b6bd36 (patch)
tree805a5ddce1250235d6133376ddabb5543eb2cf82 /c/src/lib/libbsp/powerpc/gen5200/i2c/mpc5200mbus.h
parentAdd BuildRoot. (diff)
downloadrtems-ca680bc5890abe0d6bfe7eb4a40a0229f1b6bd36.tar.bz2
New (CVS import Thomas Doerfler <Thomas.Doerfler@embedded-brains.de>'s
submission).
Diffstat (limited to '')
-rw-r--r--c/src/lib/libbsp/powerpc/gen5200/i2c/mpc5200mbus.h171
1 files changed, 171 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/powerpc/gen5200/i2c/mpc5200mbus.h b/c/src/lib/libbsp/powerpc/gen5200/i2c/mpc5200mbus.h
new file mode 100644
index 0000000000..78975d66d8
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/gen5200/i2c/mpc5200mbus.h
@@ -0,0 +1,171 @@
+/*===============================================================*\
+| Project: RTEMS generic MPC5200 BSP |
++-----------------------------------------------------------------+
+| File: mpc5200mbus.h
++-----------------------------------------------------------------+
+| Copyright (c) 2005 |
+| Embedded Brains GmbH |
+| Obere Lagerstr. 30 |
+| D-82178 Puchheim |
+| Germany |
+| rtems@embedded-brains.de |
++-----------------------------------------------------------------+
+| The license and distribution terms for this file may be |
+| found in the file LICENSE in this distribution or at |
+| |
+| http://www.rtems.com/license/LICENSE. |
+| |
++-----------------------------------------------------------------+
+| MBUS module (I2C bus) definitions |
++-----------------------------------------------------------------+
+| This file has been adapted from an existing source code file, |
+| see the original file header below for reference |
++-----------------------------------------------------------------+
+| date history ID |
+| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
+| 01.12.05 creation doe |
+|*****************************************************************|
+|*CVS information: |
+|*(the following information is created automatically, |
+|*do not edit here) |
+|*****************************************************************|
+|* $Log$
+|* Revision 1.5 2005/12/09 08:57:03 thomas
+|* added/modifed file headers
+|*
+|* Revision 1.4 2005/12/06 14:11:11 thomas
+|* added EB file headers
+|*
+ *
+|*****************************************************************|
+\*===============================================================*/
+/*
+ * MCF5206e MBUS module (I2C bus) driver header file
+ *
+ * Copyright (C) 2000 OKTET Ltd., St.-Petersburg, Russia
+ * Author: Victor V. Vengerov <vvv@oktet.ru>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ *
+ * http://www.rtems.com/license/LICENSE.
+ *
+ * @(#) mcfmbus.h,v 1.3 2004/03/31 01:59:32 ralf Exp
+ */
+
+#ifndef __MPC5200BSP_MPC5200MBUS_H__
+#define __MPC5200BSP_MPC5200MBUS_H__
+
+#include "../include/mpc5200.h"
+#include "../include/i2c.h"
+
+/* States of I2C machine */
+typedef enum mpc5200mbus_i2c_state {
+ STATE_UNINITIALIZED,
+ STATE_IDLE,
+ STATE_ADDR_7,
+ STATE_ADDR_1_W,
+ STATE_ADDR_1_R,
+ STATE_SENDING,
+ STATE_RECEIVING
+} mpc5200mbus_i2c_state;
+
+typedef struct mpc5200_mbus {
+ enum mpc5200mbus_i2c_state state;/* State of I2C machine */
+ i2c_message *msg; /* Pointer to the first message in transfer */
+ int nmsg; /* Number of messages in transfer */
+ i2c_message *cmsg; /* Current message */
+ int byte; /* Byte number in current message */
+ rtems_id sema; /* MBUS semaphore */
+ i2c_transfer_done done; /* Transfer done function */
+ uint32_t done_arg; /* Done function argument */
+ int bus_idx; /* bus index: 0 or 1 */
+} mpc5200mbus;
+
+/* mpc5200mbus_initialize --
+ * Initialize ColdFire MBUS I2C bus controller.
+ *
+ * PARAMETERS:
+ * i2c_bus - pointer to the bus descriptor structure
+ *
+ * RETURNS:
+ * RTEMS_SUCCESSFUL, or RTEMS error code when initialization failed.
+ */
+rtems_status_code
+mpc5200mbus_initialize(mpc5200mbus *i2c_bus);
+
+/* mpc5200mbus_select_clock_divider --
+ * Select divider for system clock which is used for I2C bus clock
+ * generation. Not each divider can be selected for I2C bus; this
+ * function select nearest larger or equal divider, or maximum
+ * possible divider, if passed value greater.
+ *
+ * PARAMETERS:
+ * i2c_bus - pointer to the bus descriptor structure
+ * divider - system frequency divider for I2C serial clock.
+ *
+ * RETURNS:
+ * RTEMS_SUCCESSFUL, if operation performed successfully, or
+ * RTEMS error code when failed.
+ */
+rtems_status_code
+mpc5200mbus_select_clock_divider(mpc5200mbus *i2c_bus, int divider);
+
+/* mpc5200mbus_i2c_transfer --
+ * Initiate multiple-messages transfer over I2C bus via ColdFire MBUS
+ * controller.
+ *
+ * PARAMETERS:
+ * bus - pointer to MBUS controller descriptor
+ * nmsg - number of messages
+ * msg - pointer to messages array
+ * done - function which is called when transfer is finished
+ * done_arg - arbitrary argument passed to done funciton
+ *
+ * RETURNS:
+ * RTEMS_SUCCESSFUL if transfer initiated successfully, or error
+ * code when failed.
+ */
+rtems_status_code
+mpc5200mbus_i2c_transfer(mpc5200mbus *bus, int nmsg, i2c_message *msg,
+ i2c_transfer_done done, uint32_t done_arg);
+
+/* mpc5200mbus_i2c_done --
+ * Close ColdFire MBUS I2C bus controller and release all resources.
+ *
+ * PARAMETERS:
+ * bus - pointer to MBUS controller descriptor
+ *
+ * RETURNS:
+ * RTEMS_SUCCESSFUL, if transfer initiated successfully, or error
+ * code when failed.
+ */
+rtems_status_code
+mpc5200mbus_i2c_done(mpc5200mbus *i2c_bus);
+
+/* mpc5200mbus_i2c_interrupt_handler --
+ * ColdFire MBUS I2C bus controller interrupt handler. This function
+ * called from real interrupt handler, and pointer to MBUS descriptor
+ * structure passed to this function.
+ *
+ * PARAMETERS:
+ * bus - pointert to the bus descriptor structure
+ *
+ * RETURNS:
+ * none
+ */
+void mpc5200mbus_i2c_interrupt_handler(mpc5200mbus *bus);
+
+/* mpc5200mbus_poll --
+ * MBUS module poll routine; used to poll events when I2C driver
+ * operates in poll-driven mode.
+ *
+ * PARAMETERS:
+ * none
+ *
+ * RETURNS:
+ * none
+ */
+void mpc5200mbus_poll(mpc5200mbus *bus);
+
+#endif /* __MPC5200BSP_MPC5200MBUS_H__ */