source: rtems/c/src/lib/libbsp/powerpc/gen5200/i2c/mpc5200mbus.h @ 379a4761

4.104.115
Last change on this file since 379a4761 was 4a260f0, checked in by Thomas Doerfler <Thomas.Doerfler@…>, on 09/08/08 at 09:51:46

corrected parameters in i2c driver for done signalling
updated mscan CAN driver

  • Property mode set to 100644
File size: 5.3 KB
Line 
1/*===============================================================*\
2| Project: RTEMS generic MPC5200 BSP                              |
3+-----------------------------------------------------------------+
4|                    Copyright (c) 2005                           |
5|                    Embedded Brains GmbH                         |
6|                    Obere Lagerstr. 30                           |
7|                    D-82178 Puchheim                             |
8|                    Germany                                      |
9|                    rtems@embedded-brains.de                     |
10+-----------------------------------------------------------------+
11| The license and distribution terms for this file may be         |
12| found in the file LICENSE in this distribution or at            |
13|                                                                 |
14| http://www.rtems.com/license/LICENSE.                           |
15|                                                                 |
16+-----------------------------------------------------------------+
17| MBUS module (I2C bus) definitions                               |
18+-----------------------------------------------------------------+
19| This file has been adapted from an existing source code file,   |
20| see the original file header below for reference                |
21\*===============================================================*/
22/*
23 * MCF5206e MBUS module (I2C bus) driver header file
24 *
25 * Copyright (C) 2000 OKTET Ltd., St.-Petersburg, Russia
26 * Author: Victor V. Vengerov <vvv@oktet.ru>
27 *
28 * The license and distribution terms for this file may be
29 * found in the file LICENSE in this distribution or at
30 *
31 * http://www.rtems.com/license/LICENSE.
32 */
33
34#ifndef __MPC5200BSP_MPC5200MBUS_H__
35#define __MPC5200BSP_MPC5200MBUS_H__
36
37#include "../include/mpc5200.h"
38#include "../include/i2c.h"
39
40/* States of I2C machine */
41typedef enum mpc5200mbus_i2c_state {
42    STATE_UNINITIALIZED,
43    STATE_IDLE,
44    STATE_ADDR_7,
45    STATE_ADDR_1_W,
46    STATE_ADDR_1_R,
47    STATE_SENDING,
48    STATE_RECEIVING
49} mpc5200mbus_i2c_state;
50
51typedef struct mpc5200_mbus {
52    enum mpc5200mbus_i2c_state state;/* State of I2C machine */
53    i2c_message           *msg;  /* Pointer to the first message in transfer */
54    int                    nmsg; /* Number of messages in transfer */
55    i2c_message           *cmsg; /* Current message */
56    int                    byte; /* Byte number in current message */
57    rtems_id               sema; /* MBUS semaphore */
58    i2c_transfer_done      done; /* Transfer done function */
59    void *         done_arg_ptr; /* Done function argument pointer */
60  int              bus_idx;  /* bus index: 0 or 1 */
61} mpc5200mbus;
62
63/* mpc5200mbus_initialize --
64 *     Initialize ColdFire MBUS I2C bus controller.
65 *
66 * PARAMETERS:
67 *     i2c_bus - pointer to the bus descriptor structure
68 *
69 * RETURNS:
70 *     RTEMS_SUCCESSFUL, or RTEMS error code when initialization failed.
71 */
72rtems_status_code
73mpc5200mbus_initialize(mpc5200mbus *i2c_bus);
74
75/* mpc5200mbus_select_clock_divider --
76 *     Select divider for system clock which is used for I2C bus clock
77 *     generation. Not each divider can be selected for I2C bus; this
78 *     function select nearest larger or equal divider, or maximum
79 *     possible divider, if passed value greater.
80 *
81 * PARAMETERS:
82 *     i2c_bus - pointer to the bus descriptor structure
83 *     divider - system frequency divider for I2C serial clock.
84 *
85 * RETURNS:
86 *     RTEMS_SUCCESSFUL, if operation performed successfully, or
87 *     RTEMS error code when failed.
88 */
89rtems_status_code
90mpc5200mbus_select_clock_divider(mpc5200mbus *i2c_bus, int divider);
91
92/* mpc5200mbus_i2c_transfer --
93 *     Initiate multiple-messages transfer over I2C bus via ColdFire MBUS
94 *     controller.
95 *
96 * PARAMETERS:
97 *     bus - pointer to MBUS controller descriptor
98 *     nmsg - number of messages
99 *     msg - pointer to messages array
100 *     done - function which is called when transfer is finished
101 *     done_arg_ptr - arbitrary argument ptr passed to done funciton
102 *
103 * RETURNS:
104 *     RTEMS_SUCCESSFUL if transfer initiated successfully, or error
105 *     code when failed.
106 */
107rtems_status_code
108mpc5200mbus_i2c_transfer(mpc5200mbus *bus, int nmsg, i2c_message *msg,
109                     i2c_transfer_done done, void * done_arg_ptr);
110
111/* mpc5200mbus_i2c_done --
112 *     Close ColdFire MBUS I2C bus controller and release all resources.
113 *
114 * PARAMETERS:
115 *     bus - pointer to MBUS controller descriptor
116 *
117 * RETURNS:
118 *     RTEMS_SUCCESSFUL, if transfer initiated successfully, or error
119 *     code when failed.
120 */
121rtems_status_code
122mpc5200mbus_i2c_done(mpc5200mbus *i2c_bus);
123
124/* mpc5200mbus_i2c_interrupt_handler --
125 *     ColdFire MBUS I2C bus controller interrupt handler. This function
126 *     called from real interrupt handler, and pointer to MBUS descriptor
127 *     structure passed to this function.
128 *
129 * PARAMETERS:
130 *     bus - pointert to the bus descriptor structure
131 *
132 * RETURNS:
133 *     none
134 */
135void mpc5200mbus_i2c_interrupt_handler(mpc5200mbus *bus);
136
137/* mpc5200mbus_poll --
138 *     MBUS module poll routine; used to poll events when I2C driver
139 *     operates in poll-driven mode.
140 *
141 * PARAMETERS:
142 *     none
143 *
144 * RETURNS:
145 *     none
146 */
147void mpc5200mbus_poll(mpc5200mbus *bus);
148
149#endif /* __MPC5200BSP_MPC5200MBUS_H__ */
Note: See TracBrowser for help on using the repository browser.