RTEMS 7.0-rc1
Loading...
Searching...
No Matches
mpc5200mbus.h
1/* SPDX-License-Identifier: GPL-2.0+-with-RTEMS-exception */
2
3/*
4 * RTEMS generic MPC5200 BSP
5 *
6 * MBUS module (I2C bus) definitions
7 *
8 * Adapted from: MCF5206e MBUS module (I2C bus) driver header file.
9 */
10
11/*
12 * Copyright (C) 2000 OKTET Ltd., St.-Petersburg, Russia
13 * Author: Victor V. Vengerov <vvv@oktet.ru>
14 * Copyright (c) 2005 embedded brains GmbH & Co. KG
15 *
16 * The license and distribution terms for this file may be
17 * found in the file LICENSE in this distribution or at
18 * http://www.rtems.org/license/LICENSE.
19 */
20
21#ifndef __MPC5200BSP_MPC5200MBUS_H__
22#define __MPC5200BSP_MPC5200MBUS_H__
23
24#include <bsp/mpc5200.h>
25#include <bsp/i2c.h>
26
27
28/* States of I2C machine */
29typedef enum mpc5200mbus_i2c_state {
30 STATE_UNINITIALIZED,
31 STATE_IDLE,
32 STATE_ADDR_7,
33 STATE_ADDR_1_W,
34 STATE_ADDR_1_R,
35 STATE_SENDING,
36 STATE_RECEIVING
37} mpc5200mbus_i2c_state;
38
39typedef struct mpc5200_mbus {
40 enum mpc5200mbus_i2c_state state;/* State of I2C machine */
41 i2c_message *msg; /* Pointer to the first message in transfer */
42 int nmsg; /* Number of messages in transfer */
43 i2c_message *cmsg; /* Current message */
44 int byte; /* Byte number in current message */
45 rtems_id sema; /* MBUS semaphore */
46 i2c_transfer_done done; /* Transfer done function */
47 void * done_arg_ptr; /* Done function argument pointer */
48 int bus_idx; /* bus index: 0 or 1 */
50
51/* mpc5200mbus_initialize --
52 * Initialize ColdFire MBUS I2C bus controller.
53 *
54 * PARAMETERS:
55 * i2c_bus - pointer to the bus descriptor structure
56 *
57 * RETURNS:
58 * RTEMS_SUCCESSFUL, or RTEMS error code when initialization failed.
59 */
61mpc5200mbus_initialize(mpc5200mbus *i2c_bus);
62
63/* mpc5200mbus_select_clock_divider --
64 * Select divider for system clock which is used for I2C bus clock
65 * generation. Not each divider can be selected for I2C bus; this
66 * function select nearest larger or equal divider, or maximum
67 * possible divider, if passed value greater.
68 *
69 * PARAMETERS:
70 * i2c_bus - pointer to the bus descriptor structure
71 * divider - system frequency divider for I2C serial clock.
72 *
73 * RETURNS:
74 * RTEMS_SUCCESSFUL, if operation performed successfully, or
75 * RTEMS error code when failed.
76 */
78mpc5200mbus_select_clock_divider(mpc5200mbus *i2c_bus, int divider);
79
80/* mpc5200mbus_i2c_transfer --
81 * Initiate multiple-messages transfer over I2C bus via ColdFire MBUS
82 * controller.
83 *
84 * PARAMETERS:
85 * bus - pointer to MBUS controller descriptor
86 * nmsg - number of messages
87 * msg - pointer to messages array
88 * done - function which is called when transfer is finished
89 * done_arg_ptr - arbitrary argument ptr passed to done funciton
90 *
91 * RETURNS:
92 * RTEMS_SUCCESSFUL if transfer initiated successfully, or error
93 * code when failed.
94 */
96mpc5200mbus_i2c_transfer(mpc5200mbus *bus, int nmsg, i2c_message *msg,
97 i2c_transfer_done done, void * done_arg_ptr);
98
99/* mpc5200mbus_i2c_done --
100 * Close ColdFire MBUS I2C bus controller and release all resources.
101 *
102 * PARAMETERS:
103 * bus - pointer to MBUS controller descriptor
104 *
105 * RETURNS:
106 * RTEMS_SUCCESSFUL, if transfer initiated successfully, or error
107 * code when failed.
108 */
110mpc5200mbus_i2c_done(mpc5200mbus *i2c_bus);
111
112/* mpc5200mbus_i2c_interrupt_handler --
113 * ColdFire MBUS I2C bus controller interrupt handler. This function
114 * called from real interrupt handler, and pointer to MBUS descriptor
115 * structure passed to this function.
116 *
117 * PARAMETERS:
118 * bus - pointert to the bus descriptor structure
119 *
120 * RETURNS:
121 * none
122 */
123void mpc5200mbus_i2c_interrupt_handler(mpc5200mbus *bus);
124
125/* mpc5200mbus_poll --
126 * MBUS module poll routine; used to poll events when I2C driver
127 * operates in poll-driven mode.
128 *
129 * PARAMETERS:
130 * none
131 *
132 * RETURNS:
133 * none
134 */
135void mpc5200mbus_poll(mpc5200mbus *bus);
136
137#endif /* __MPC5200BSP_MPC5200MBUS_H__ */
rtems_status_code
This enumeration provides status codes for directives of the Classic API.
Definition: status.h:85
Objects_Id rtems_id
This type represents RTEMS object identifiers.
Definition: types.h:94
I2C bus control.
Definition: i2c.h:123
Definition: i2c.h:55
Definition: mpc5200mbus.h:39
Definition: b1553brm.c:94