bsp/atsam: Align SPI API with PIO_Configure()

This commit is contained in:
Sebastian Huber
2016-12-14 07:18:11 +01:00
parent 5dd02e9569
commit 1505eca59c
3 changed files with 44 additions and 27 deletions

View File

@@ -51,8 +51,8 @@ int spi_bus_register_atsam(
const char *bus_path,
Spi *register_base,
rtems_vector_number irq,
size_t pin_amount,
const Pin *pins
const Pin *pins,
size_t pin_count
);
#ifdef __cplusplus

View File

@@ -495,11 +495,11 @@ static int atsam_spi_setup(spi_bus *base)
static void atsam_spi_init(
atsam_spi_bus *bus,
size_t pin_amount,
const Pin *pins
const Pin *pins,
size_t pin_count
)
{
PIO_Configure(pins, pin_amount);
PIO_Configure(pins, pin_count);
ENABLE_PERIPHERAL(bus->board_id);
XDMAD_Initialize(&bus->Dma, 0);
bus->base.mode = 0;
@@ -516,8 +516,8 @@ int spi_bus_register_atsam(
const char *bus_path,
Spi *register_base,
rtems_vector_number irq,
size_t pin_amount,
const Pin *pins
const Pin *pins,
size_t pin_count
)
{
atsam_spi_bus *bus;
@@ -533,7 +533,7 @@ int spi_bus_register_atsam(
bus->board_id = board_id;
bus->irq = ID_XDMAC;
atsam_spi_init(bus, pin_amount, pins);
atsam_spi_init(bus, pins, pin_count);
sc = rtems_interrupt_handler_install(
bus->irq,

View File

@@ -55,29 +55,46 @@
int atsam_register_spi_0(void)
{
static const Pin pins[] = {PIN_SPI0_MISO, PIN_SPI0_MOSI, PIN_SPI0_NPCS0,
PIN_SPI0_NPCS1_1, PIN_SPI0_NPCS1_2, PIN_SPI0_NPCS2, PIN_SPI0_NPCS3,
PIN_SPI0_CLOCK};
static const Pin pins[] = {
PIN_SPI0_MISO,
PIN_SPI0_MOSI,
PIN_SPI0_NPCS0,
PIN_SPI0_NPCS1_1,
PIN_SPI0_NPCS1_2,
PIN_SPI0_NPCS2,
PIN_SPI0_NPCS3,
PIN_SPI0_CLOCK
};
return spi_bus_register_atsam(
ATSAM_SPI_0_BUS_PATH,
SPI0,
ID_SPI0,
8,
pins);
return spi_bus_register_atsam(
ATSAM_SPI_0_BUS_PATH,
SPI0,
ID_SPI0,
pins,
RTEMS_ARRAY_SIZE(pins)
);
}
int atsam_register_spi_1(void)
{
static const Pin pins[] = {PIN_SPI1_MISO, PIN_SPI1_MOSI, PIN_SPI1_NPCS0,
PIN_SPI1_NPCS1_1, PIN_SPI1_NPCS1_2, PIN_SPI1_NPCS2_1,
PIN_SPI1_NPCS2_2, PIN_SPI1_NPCS3_1, PIN_SPI1_NPCS3_2,
PIN_SPI1_CLOCK};
static const Pin pins[] = {
PIN_SPI1_MISO,
PIN_SPI1_MOSI,
PIN_SPI1_NPCS0,
PIN_SPI1_NPCS1_1,
PIN_SPI1_NPCS1_2,
PIN_SPI1_NPCS2_1,
PIN_SPI1_NPCS2_2,
PIN_SPI1_NPCS3_1,
PIN_SPI1_NPCS3_2,
PIN_SPI1_CLOCK
};
return spi_bus_register_atsam(
ATSAM_SPI_1_BUS_PATH,
SPI1,
ID_SPI1,
10,
pins);
return spi_bus_register_atsam(
ATSAM_SPI_1_BUS_PATH,
SPI1,
ID_SPI1,
pins,
RTEMS_ARRAY_SIZE(pins)
);
}