bsp/atsam: Hide details of SPI driver

This commit is contained in:
Sebastian Huber
2016-12-14 07:25:49 +01:00
parent 1505eca59c
commit 3afa95bae0
2 changed files with 24 additions and 31 deletions

View File

@@ -16,43 +16,17 @@
#define LIBBSP_ARM_ATSAM_ATSAM_SPI_H
#include <libchip/chip.h>
#include <libchip/include/pio.h>
#include <bsp.h>
#include <dev/spi/spi.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#define DEFAULT_SPI0_CS 0
#define DEFAULT_SPI_CLOCK 500000
#define REGISTER_COMMAND_LENGTH 2
typedef struct {
spi_bus base;
Spi *regs;
rtems_vector_number irq;
uint32_t board_id;
uint32_t msg_todo;
const spi_ioc_transfer *msgs;
rtems_id task_id;
sXdmad Dma;
Spid SpiDma;
uint32_t dma_tx_channel;
uint32_t dma_rx_channel;
bool rx_transfer_done;
bool tx_transfer_done;
bool chip_select_active;
} atsam_spi_bus;
int spi_bus_register_atsam(
const char *bus_path,
Spi *register_base,
rtems_vector_number irq,
const Pin *pins,
size_t pin_count
const char *bus_path,
Spi *register_base,
rtems_vector_number irq,
const Pin *pins,
size_t pin_count
);
#ifdef __cplusplus

View File

@@ -32,8 +32,27 @@
#include <rtems/irq-extension.h>
#include <dev/spi/spi.h>
#define MAX_SPI_FREQUENCY 50000000
typedef struct {
spi_bus base;
Spi *regs;
rtems_vector_number irq;
uint32_t board_id;
uint32_t msg_todo;
const spi_ioc_transfer *msgs;
rtems_id task_id;
sXdmad Dma;
Spid SpiDma;
uint32_t dma_tx_channel;
uint32_t dma_rx_channel;
bool rx_transfer_done;
bool tx_transfer_done;
bool chip_select_active;
} atsam_spi_bus;
static void atsam_interrupt_handler(void *arg)
{
atsam_spi_bus *bus = (atsam_spi_bus *)arg;