summaryrefslogtreecommitdiff
path: root/drivers/memory/spiflash.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/memory/spiflash.h')
-rw-r--r--drivers/memory/spiflash.h28
1 files changed, 25 insertions, 3 deletions
diff --git a/drivers/memory/spiflash.h b/drivers/memory/spiflash.h
index cd96b16f3..79ba5490b 100644
--- a/drivers/memory/spiflash.h
+++ b/drivers/memory/spiflash.h
@@ -3,7 +3,7 @@
*
* The MIT License (MIT)
*
- * Copyright (c) 2016 Damien P. George
+ * Copyright (c) 2016-2018 Damien P. George
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -26,14 +26,36 @@
#ifndef MICROPY_INCLUDED_DRIVERS_MEMORY_SPIFLASH_H
#define MICROPY_INCLUDED_DRIVERS_MEMORY_SPIFLASH_H
+#include "drivers/bus/qspi.h"
#include "extmod/machine_spi.h"
+enum {
+ MP_SPIFLASH_BUS_SPI,
+ MP_SPIFLASH_BUS_QSPI,
+};
+
+typedef struct _mp_spiflash_config_t {
+ uint32_t bus_kind;
+ union {
+ struct {
+ mp_hal_pin_obj_t cs;
+ void *data;
+ const mp_machine_spi_p_t *proto;
+ } u_spi;
+ struct {
+ void *data;
+ const mp_qspi_proto_t *proto;
+ } u_qspi;
+ } bus;
+} mp_spiflash_config_t;
+
typedef struct _mp_spiflash_t {
- mp_hal_pin_obj_t cs;
- mp_obj_base_t *spi; // object must have protocol pointing to mp_machine_spi_p_t struct
+ const mp_spiflash_config_t *config;
+ volatile uint32_t flags;
} mp_spiflash_t;
void mp_spiflash_init(mp_spiflash_t *self);
+void mp_spiflash_flush(mp_spiflash_t *self);
void mp_spiflash_read(mp_spiflash_t *self, uint32_t addr, size_t len, uint8_t *dest);
int mp_spiflash_write(mp_spiflash_t *self, uint32_t addr, size_t len, const uint8_t *src);