RTEMS  5.1
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
28 extern "C" {
29 #endif
30 
31 typedef 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 
43 typedef struct {
44  rtems_libi2c_bus_t bus_desc;
45  mpc83xx_spi_softc_t softc;
47 
48 /*=========================================================================*\
49 | Function: |
50 \*-------------------------------------------------------------------------*/
51 rtems_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 \*-------------------------------------------------------------------------*/
69 int 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 \*-------------------------------------------------------------------------*/
90 int 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 \*-------------------------------------------------------------------------*/
110 int 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 \*-------------------------------------------------------------------------*/
131 rtems_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 \*-------------------------------------------------------------------------*/
150 int 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 */
Definition: mpc83xx_spidrv.h:31
Definition: libi2c.h:162
rtems_status_code
Classic API Status.
Definition: status.h:43
Definition: mpc83xx.h:349
Definition: mpc83xx_spidrv.h:43
Definition: libi2c.h:462
Objects_Id rtems_id
Used to manage and manipulate RTEMS object identifiers.
Definition: types.h:83
Legacy I2C Library.