SPI: Remove MAX2837/5864, W25Q80BV driver dependence on target code.

Conflicts:
	firmware/common/tuning.c
This commit is contained in:
Jared Boone
2014-11-10 12:44:14 -08:00
parent 6d57c08e28
commit 8ced9415c2
8 changed files with 25 additions and 13 deletions

View File

@ -82,11 +82,13 @@ spi_t spi_ssp1 = {
max2837_driver_t max2837 = {
.spi = &spi_ssp1,
.target_init = max2837_target_init,
.set_mode = max2837_target_set_mode,
};
max5864_driver_t max5864 = {
.spi = &spi_ssp1,
.target_init = max5864_target_init,
};
spi_t rffc5071_spi = {
@ -118,6 +120,7 @@ spi_t spi_ssp0 = {
w25q80bv_driver_t spi_flash = {
.spi = &spi_ssp0,
.target_init = w25q80bv_target_init,
};
void delay(uint32_t duration)

View File

@ -31,7 +31,6 @@
#include <stdint.h>
#include <string.h>
#include "max2837.h"
#include "max2837_target.h"
#include "max2837_regs.def" // private register def macros
#include "hackrf_core.h"
@ -80,7 +79,7 @@ static const uint16_t max2837_regs_default[MAX2837_NUM_REGS] = {
static void max2837_init(max2837_driver_t* const drv)
{
spi_init(drv->spi, &ssp_config_max2837);
max2837_target_init(drv);
drv->target_init(drv);
max2837_set_mode(drv, MAX2837_MODE_SHUTDOWN);
memcpy(drv->regs, max2837_regs_default, sizeof(drv->regs));

View File

@ -39,13 +39,17 @@ typedef enum {
MAX2837_MODE_RX
} max2837_mode_t;
typedef struct {
struct max2837_driver_t;
typedef struct max2837_driver_t max2837_driver_t;
struct max2837_driver_t {
spi_t* const spi;
void (*target_init)(max2837_driver_t* const drv);
void (*set_mode)(max2837_driver_t* const drv, const max2837_mode_t new_mode);
max2837_mode_t mode;
uint16_t regs[MAX2837_NUM_REGS];
uint32_t regs_dirty;
} max2837_driver_t;
};
/* Initialize chip. */
extern void max2837_setup(max2837_driver_t* const drv);

View File

@ -22,7 +22,6 @@
#include <stdint.h>
#include "max5864.h"
#include "max5864_target.h"
#include "hackrf_core.h"
@ -32,7 +31,7 @@ static void max5864_write(max5864_driver_t* const drv, uint8_t value) {
static void max5864_init(max5864_driver_t* const drv) {
spi_init(drv->spi, &ssp_config_max5864);
max5864_target_init(drv);
drv->target_init(drv);
}
void max5864_setup(max5864_driver_t* const drv) {

View File

@ -24,9 +24,13 @@
#include "spi.h"
typedef struct max5864_driver_t {
struct max5864_driver_t;
typedef struct max5864_driver_t max5864_driver_t;
struct max5864_driver_t {
spi_t* const spi;
} max5864_driver_t;
void (*target_init)(max5864_driver_t* const drv);
};
void max5864_setup(max5864_driver_t* const drv);

View File

@ -26,7 +26,6 @@
#include <rffc5071.h>
#include <max2837.h>
#include <sgpio.h>
#include "max2837_target.h"
#define FREQ_ONE_MHZ (1000*1000)

View File

@ -28,9 +28,9 @@
*/
#include <stdint.h>
#include <stddef.h>
#include "w25q80bv.h"
#include "w25q80bv_target.h"
#include "hackrf_core.h"
@ -60,7 +60,7 @@ void w25q80bv_setup(w25q80bv_driver_t* const drv)
drv->num_bytes = 1048576U;
spi_init(drv->spi, &ssp_config_w25q80bv);
w25q80bv_target_init(drv);
drv->target_init(drv);
device_id = 0;
while(device_id != W25Q80BV_DEVICE_ID_RES)

View File

@ -36,12 +36,16 @@ typedef union
uint8_t id_8b[8]; /* 8*8bits 64bits Unique ID */
} w25q80bv_unique_id_t;
typedef struct {
struct w25q80bv_driver_t;
typedef struct w25q80bv_driver_t w25q80bv_driver_t;
struct w25q80bv_driver_t {
spi_t* spi;
void (*target_init)(w25q80bv_driver_t* const drv);
size_t page_len;
size_t num_pages;
size_t num_bytes;
} w25q80bv_driver_t;
};
void w25q80bv_setup(w25q80bv_driver_t* const drv);
void w25q80bv_chip_erase(w25q80bv_driver_t* const drv);