mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-12-26 22:48:23 +00:00
169 lines
8.5 KiB
C
169 lines
8.5 KiB
C
/*
|
|
* RTEMS support for MPC83xx
|
|
*
|
|
* This file contains the MPC83xx SPI driver declarations.
|
|
* NOTE: This driver has the same API as a I2C driver.
|
|
*/
|
|
|
|
/*
|
|
* Copyright (c) 2007 embedded brains GmbH. All rights reserved.
|
|
*
|
|
* The license and distribution terms for this file may be
|
|
* found in the file LICENSE in this distribution or at
|
|
* http://www.rtems.org/license/LICENSE.
|
|
*/
|
|
|
|
#ifndef _MPC83XX_SPIDRV_H
|
|
#define _MPC83XX_SPIDRV_H
|
|
|
|
#include <mpc83xx/mpc83xx.h>
|
|
#include <rtems/libi2c.h>
|
|
#include <rtems/irq.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef struct mpc83xx_spi_softc {
|
|
m83xxSPIRegisters_t *reg_ptr;
|
|
int initialized;
|
|
rtems_irq_number irq_number;
|
|
uint32_t base_frq; /* input frq for baud rate divider */
|
|
rtems_id irq_sema_id;
|
|
uint32_t curr_addr; /* current spi address */
|
|
uint32_t idle_char;
|
|
uint8_t bytes_per_char;
|
|
uint8_t bit_shift;
|
|
} mpc83xx_spi_softc_t ;
|
|
|
|
typedef struct {
|
|
rtems_libi2c_bus_t bus_desc;
|
|
mpc83xx_spi_softc_t softc;
|
|
} mpc83xx_spi_desc_t;
|
|
|
|
/*=========================================================================*\
|
|
| Function: |
|
|
\*-------------------------------------------------------------------------*/
|
|
rtems_status_code mpc83xx_spi_init
|
|
(
|
|
/*-------------------------------------------------------------------------*\
|
|
| Purpose: |
|
|
| initialize the driver |
|
|
+---------------------------------------------------------------------------+
|
|
| Input Parameters: |
|
|
\*-------------------------------------------------------------------------*/
|
|
rtems_libi2c_bus_t *bh /* bus specifier structure */
|
|
);
|
|
/*-------------------------------------------------------------------------*\
|
|
| Return Value: |
|
|
| o = ok or error code |
|
|
\*=========================================================================*/
|
|
|
|
/*=========================================================================*\
|
|
| Function: |
|
|
\*-------------------------------------------------------------------------*/
|
|
int mpc83xx_spi_read_write_bytes
|
|
(
|
|
/*-------------------------------------------------------------------------*\
|
|
| Purpose: |
|
|
| transmit/receive some bytes from SPI device |
|
|
+---------------------------------------------------------------------------+
|
|
| Input Parameters: |
|
|
\*-------------------------------------------------------------------------*/
|
|
rtems_libi2c_bus_t *bh, /* bus specifier structure */
|
|
unsigned char *rbuf, /* buffer to store bytes */
|
|
const unsigned char *tbuf, /* buffer to send bytes */
|
|
int len /* number of bytes to transceive */
|
|
);
|
|
/*-------------------------------------------------------------------------*\
|
|
| Return Value: |
|
|
| number of bytes received or (negative) error code |
|
|
\*=========================================================================*/
|
|
|
|
/*=========================================================================*\
|
|
| Function: |
|
|
\*-------------------------------------------------------------------------*/
|
|
int mpc83xx_spi_read_bytes
|
|
(
|
|
/*-------------------------------------------------------------------------*\
|
|
| Purpose: |
|
|
| receive some bytes from SPI device |
|
|
+---------------------------------------------------------------------------+
|
|
| Input Parameters: |
|
|
\*-------------------------------------------------------------------------*/
|
|
rtems_libi2c_bus_t *bh, /* bus specifier structure */
|
|
unsigned char *buf, /* buffer to store bytes */
|
|
int len /* number of bytes to receive */
|
|
);
|
|
/*-------------------------------------------------------------------------*\
|
|
| Return Value: |
|
|
| number of bytes received or (negative) error code |
|
|
\*=========================================================================*/
|
|
|
|
/*=========================================================================*\
|
|
| Function: |
|
|
\*-------------------------------------------------------------------------*/
|
|
int mpc83xx_spi_write_bytes
|
|
(
|
|
/*-------------------------------------------------------------------------*\
|
|
| Purpose: |
|
|
| send some bytes to SPI device |
|
|
+---------------------------------------------------------------------------+
|
|
| Input Parameters: |
|
|
\*-------------------------------------------------------------------------*/
|
|
rtems_libi2c_bus_t *bh, /* bus specifier structure */
|
|
unsigned char *buf, /* buffer to send */
|
|
int len /* number of bytes to send */
|
|
|
|
);
|
|
/*-------------------------------------------------------------------------*\
|
|
| Return Value: |
|
|
| number of bytes sent or (negative) error code |
|
|
\*=========================================================================*/
|
|
|
|
/*=========================================================================*\
|
|
| Function: |
|
|
\*-------------------------------------------------------------------------*/
|
|
rtems_status_code mpc83xx_spi_set_tfr_mode
|
|
(
|
|
/*-------------------------------------------------------------------------*\
|
|
| Purpose: |
|
|
| set SPI to desired baudrate/clock mode/character mode |
|
|
+---------------------------------------------------------------------------+
|
|
| Input Parameters: |
|
|
\*-------------------------------------------------------------------------*/
|
|
rtems_libi2c_bus_t *bh, /* bus specifier structure */
|
|
const rtems_libi2c_tfr_mode_t *tfr_mode /* transfer mode info */
|
|
);
|
|
/*-------------------------------------------------------------------------*\
|
|
| Return Value: |
|
|
| rtems_status_code |
|
|
\*=========================================================================*/
|
|
|
|
/*=========================================================================*\
|
|
| Function: |
|
|
\*-------------------------------------------------------------------------*/
|
|
int mpc83xx_spi_ioctl
|
|
(
|
|
/*-------------------------------------------------------------------------*\
|
|
| Purpose: |
|
|
| perform selected ioctl function for SPI |
|
|
+---------------------------------------------------------------------------+
|
|
| Input Parameters: |
|
|
\*-------------------------------------------------------------------------*/
|
|
rtems_libi2c_bus_t *bh, /* bus specifier structure */
|
|
int cmd, /* ioctl command code */
|
|
void *arg /* additional argument array */
|
|
);
|
|
/*-------------------------------------------------------------------------*\
|
|
| Return Value: |
|
|
| rtems_status_code |
|
|
\*=========================================================================*/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
|
|
#endif /* _MPC83XX_I2CDRV_H */
|