drivers/encx24j600: adapted to SPI API changes

This commit is contained in:
Hauke Petersen 2016-11-08 18:41:38 +01:00
parent dc3e78d521
commit 87534c75f0
3 changed files with 21 additions and 38 deletions

View File

@ -37,13 +37,14 @@
#define ENABLE_DEBUG (0)
#include "debug.h"
#define ENCX24J600_SPI_SPEED SPI_SPEED_1MHZ
#define SPI_CLK SPI_CLK_1MHZ
#define SPI_MODE SPI_MODE_0
#define ENCX24J600_INIT_DELAY 100000U
#define ENCX24J600_INIT_DELAY (100000U)
#define ENC_BUFFER_START 0x0000
#define ENC_BUFFER_SIZE 0x6000
#define ENC_BUFFER_END 0x5FFF
#define ENC_BUFFER_START (0x0000)
#define ENC_BUFFER_SIZE (0x6000)
#define ENC_BUFFER_END (0x5FFF)
#define RX_BUFFER_START (0x5340) /* Default value */
#define RX_BUFFER_END (ENC_BUFFER_END)
#define TX_BUFFER_LEN (0x2000)
@ -75,11 +76,11 @@ const static netdev2_driver_t netdev2_driver_encx24j600 = {
};
static inline void lock(encx24j600_t *dev) {
mutex_lock(&dev->mutex);
spi_acquire(dev->spi, dev->cs, SPI_MODE, SPI_CLK);
}
static inline void unlock(encx24j600_t *dev) {
mutex_unlock(&dev->mutex);
spi_release(dev->spi);
}
void encx24j600_setup(encx24j600_t *dev, const encx24j600_params_t *params)
@ -89,8 +90,6 @@ void encx24j600_setup(encx24j600_t *dev, const encx24j600_params_t *params)
dev->cs = params->cs_pin;
dev->int_pin = params->int_pin;
dev->rx_next_ptr = RX_BUFFER_START;
mutex_init(&dev->mutex);
}
static void encx24j600_isr(void *arg)
@ -147,11 +146,7 @@ static void _isr(netdev2_t *netdev)
static inline void enc_spi_transfer(encx24j600_t *dev, char *out, char *in, int len)
{
spi_acquire(dev->spi);
gpio_clear(dev->cs);
spi_transfer_bytes(dev->spi, out, in, len);
gpio_set(dev->cs);
spi_release(dev->spi);
spi_transfer_bytes(dev->spi, dev->cs, false, out, in, len);
}
static inline uint16_t reg_get(encx24j600_t *dev, uint8_t reg)
@ -170,20 +165,12 @@ static void phy_reg_set(encx24j600_t *dev, uint8_t reg, uint16_t value) {
}
static void cmd(encx24j600_t *dev, char cmd) {
spi_acquire(dev->spi);
gpio_clear(dev->cs);
spi_transfer_byte(dev->spi, cmd, NULL);
gpio_set(dev->cs);
spi_release(dev->spi);
spi_transfer_byte(dev->spi, dev->cs, false, (uint8_t)cmd);
}
static void cmdn(encx24j600_t *dev, uint8_t cmd, char *out, char *in, int len) {
spi_acquire(dev->spi);
gpio_clear(dev->cs);
spi_transfer_byte(dev->spi, cmd, NULL);
spi_transfer_bytes(dev->spi, out, in, len);
gpio_set(dev->cs);
spi_release(dev->spi);
spi_transfer_byte(dev->spi, dev->cs, true, cmd);
spi_transfer_bytes(dev->spi, dev->cs, false, out, in, len);
}
static void reg_set(encx24j600_t *dev, uint8_t reg, uint16_t value)
@ -249,13 +236,10 @@ static int _init(netdev2_t *encdev)
DEBUG("encx24j600: starting initialization...\n");
/* setup IO */
gpio_init(dev->cs, GPIO_OUT);
gpio_set(dev->cs);
gpio_init_int(dev->int_pin, GPIO_IN_PU, GPIO_FALLING, encx24j600_isr, (void*)dev);
if (spi_init_master(dev->spi, SPI_CONF_FIRST_RISING, ENCX24J600_SPI_SPEED) < 0) {
if (spi_init_cs(dev->spi, dev->cs) != SPI_OK) {
return -1;
}
gpio_init_int(dev->int_pin, GPIO_IN_PU, GPIO_FALLING, encx24j600_isr, (void*)dev);
lock(dev);

View File

@ -41,7 +41,6 @@ typedef struct {
gpio_t cs; /**< SPI chip select pin */
gpio_t int_pin; /**< SPI interrupt pin */
uint16_t rx_next_ptr; /**< ptr to next packet whithin devices memory */
mutex_t mutex; /**< mutex used to lock device access */
} encx24j600_t;
/**

View File

@ -22,13 +22,13 @@ CFLAGS += -DGNRC_PKTBUF_SIZE=2048
ifneq (,$(filter nucleo-f334,$(BOARD)))
# these settings are probably valid for PoEll-i on most nucelo boards, but
# tested only on nucleo-f334
ENC_SPI ?= SPI_0
ENC_SPI ?= SPI_DEV\(0\)
ENC_CS ?= GPIO_PIN\(PORT_C,10\)
ENC_INT ?= GPIO_PIN\(PORT_D,2\)
endif
# fallback: set SPI bus and pins to default values
ENC_SPI ?= SPI_0
ENC_SPI ?= SPI_DEV\(0\)
ENC_CS ?= GPIO_PIN\(0,0\)
ENC_INT ?= GPIO_PIN\(0,1\)
# export SPI and pins