RTEMS 5.2
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
mpc83xx_spidrv.h
1/*===============================================================*\
2| Project: RTEMS support for MPC83xx |
3+-----------------------------------------------------------------+
4| Copyright (c) 2007 |
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.org/license/LICENSE. |
15| |
16+-----------------------------------------------------------------+
17| this file contains the MPC83xx SPI driver declarations |
18| NOTE: this driver has the same API as a I2C driver |
19\*===============================================================*/
20#ifndef _MPC83XX_SPIDRV_H
21#define _MPC83XX_SPIDRV_H
22
23#include <mpc83xx/mpc83xx.h>
24#include <rtems/libi2c.h>
25#include <rtems/irq.h>
26
27#ifdef __cplusplus
28extern "C" {
29#endif
30
31typedef struct mpc83xx_spi_softc {
32 m83xxSPIRegisters_t *reg_ptr;
33 int initialized;
34 rtems_irq_number irq_number;
35 uint32_t base_frq; /* input frq for baud rate divider */
36 rtems_id irq_sema_id;
37 uint32_t curr_addr; /* current spi address */
38 uint32_t idle_char;
39 uint8_t bytes_per_char;
40 uint8_t bit_shift;
42
43typedef struct {
44 rtems_libi2c_bus_t bus_desc;
47
48/*=========================================================================*\
49| Function: |
50\*-------------------------------------------------------------------------*/
51rtems_status_code mpc83xx_spi_init
52(
53/*-------------------------------------------------------------------------*\
54| Purpose: |
55| initialize the driver |
56+---------------------------------------------------------------------------+
57| Input Parameters: |
58\*-------------------------------------------------------------------------*/
59 rtems_libi2c_bus_t *bh /* bus specifier structure */
60 );
61/*-------------------------------------------------------------------------*\
62| Return Value: |
63| o = ok or error code |
64\*=========================================================================*/
65
66/*=========================================================================*\
67| Function: |
68\*-------------------------------------------------------------------------*/
69int mpc83xx_spi_read_write_bytes
70(
71/*-------------------------------------------------------------------------*\
72| Purpose: |
73| transmit/receive some bytes from SPI device |
74+---------------------------------------------------------------------------+
75| Input Parameters: |
76\*-------------------------------------------------------------------------*/
77 rtems_libi2c_bus_t *bh, /* bus specifier structure */
78 unsigned char *rbuf, /* buffer to store bytes */
79 const unsigned char *tbuf, /* buffer to send bytes */
80 int len /* number of bytes to transceive */
81 );
82/*-------------------------------------------------------------------------*\
83| Return Value: |
84| number of bytes received or (negative) error code |
85\*=========================================================================*/
86
87/*=========================================================================*\
88| Function: |
89\*-------------------------------------------------------------------------*/
90int mpc83xx_spi_read_bytes
91(
92/*-------------------------------------------------------------------------*\
93| Purpose: |
94| receive some bytes from SPI device |
95+---------------------------------------------------------------------------+
96| Input Parameters: |
97\*-------------------------------------------------------------------------*/
98 rtems_libi2c_bus_t *bh, /* bus specifier structure */
99 unsigned char *buf, /* buffer to store bytes */
100 int len /* number of bytes to receive */
101 );
102/*-------------------------------------------------------------------------*\
103| Return Value: |
104| number of bytes received or (negative) error code |
105\*=========================================================================*/
106
107/*=========================================================================*\
108| Function: |
109\*-------------------------------------------------------------------------*/
110int mpc83xx_spi_write_bytes
111(
112/*-------------------------------------------------------------------------*\
113| Purpose: |
114| send some bytes to SPI device |
115+---------------------------------------------------------------------------+
116| Input Parameters: |
117\*-------------------------------------------------------------------------*/
118 rtems_libi2c_bus_t *bh, /* bus specifier structure */
119 unsigned char *buf, /* buffer to send */
120 int len /* number of bytes to send */
121
122 );
123/*-------------------------------------------------------------------------*\
124| Return Value: |
125| number of bytes sent or (negative) error code |
126\*=========================================================================*/
127
128/*=========================================================================*\
129| Function: |
130\*-------------------------------------------------------------------------*/
131rtems_status_code mpc83xx_spi_set_tfr_mode
132(
133/*-------------------------------------------------------------------------*\
134| Purpose: |
135| set SPI to desired baudrate/clock mode/character mode |
136+---------------------------------------------------------------------------+
137| Input Parameters: |
138\*-------------------------------------------------------------------------*/
139 rtems_libi2c_bus_t *bh, /* bus specifier structure */
140 const rtems_libi2c_tfr_mode_t *tfr_mode /* transfer mode info */
141 );
142/*-------------------------------------------------------------------------*\
143| Return Value: |
144| rtems_status_code |
145\*=========================================================================*/
146
147/*=========================================================================*\
148| Function: |
149\*-------------------------------------------------------------------------*/
150int mpc83xx_spi_ioctl
151(
152/*-------------------------------------------------------------------------*\
153| Purpose: |
154| perform selected ioctl function for SPI |
155+---------------------------------------------------------------------------+
156| Input Parameters: |
157\*-------------------------------------------------------------------------*/
158 rtems_libi2c_bus_t *bh, /* bus specifier structure */
159 int cmd, /* ioctl command code */
160 void *arg /* additional argument array */
161 );
162/*-------------------------------------------------------------------------*\
163| Return Value: |
164| rtems_status_code |
165\*=========================================================================*/
166
167#ifdef __cplusplus
168}
169#endif
170
171
172#endif /* _MPC83XX_I2CDRV_H */
rtems_status_code
Classic API Status.
Definition: status.h:43
Objects_Id rtems_id
Used to manage and manipulate RTEMS object identifiers.
Definition: types.h:83
Legacy I2C Library.
Definition: mpc83xx.h:349
Definition: mpc83xx_spidrv.h:43
Definition: mpc83xx_spidrv.h:31
Definition: libi2c.h:163
Definition: libi2c.h:462