forked from Imagelibrary/rtems
bsp/atsam: Hide details of SPI driver
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user