File: 0057-Add-W25Q80BV-function-to-fast-read-from-device.patch

package info (click to toggle)
hackrf 2015.07.2-11
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 69,764 kB
  • ctags: 9,327
  • sloc: ansic: 13,907; python: 696; vhdl: 218; sh: 32; makefile: 15
file content (38 lines) | stat: -rw-r--r-- 1,171 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
From 7c98d3e14bb68686acfdf67b6642a7012c7dd4da Mon Sep 17 00:00:00 2001
From: Jared Boone <jboone@earfeast.com>
Date: Fri, 28 Aug 2015 12:48:05 -0700
Subject: [PATCH 57/68] Add W25Q80BV function to fast-read from device.

---
 firmware/common/w25q80bv.c | 22 ++++++++++++++++++++++
 firmware/common/w25q80bv.h |  3 +++
 2 files changed, 25 insertions(+)

--- a/firmware/common/w25q80bv.c
+++ b/firmware/common/w25q80bv.c
@@ -198,3 +198,25 @@
 		w25q80bv_page_program(drv, addr, len, data);
 	}
 }
+
+void w25q80bv_read(uint32_t addr, uint32_t len, uint8_t* const data)
+{
+	uint32_t i;
+
+	/* do nothing if we would overflow the flash */
+	if ((len > W25Q80BV_NUM_BYTES) || (addr > W25Q80BV_NUM_BYTES)
+			|| ((addr + len) > W25Q80BV_NUM_BYTES))
+		return;
+
+	w25q80bv_wait_while_busy();
+
+	gpio_clear(PORT_SSP0_SSEL, PIN_SSP0_SSEL);
+	ssp_transfer(SSP0_NUM, W25Q80BV_FAST_READ);
+	ssp_transfer(SSP0_NUM, (addr >> 16) & 0xFF);
+	ssp_transfer(SSP0_NUM, (addr >>  8) & 0xFF);
+	ssp_transfer(SSP0_NUM, (addr >>  0) & 0xFF);
+	ssp_transfer(SSP0_NUM, 0xFF);
+	for (i = 0; i < len; i++)
+		data[i] = ssp_transfer(SSP0_NUM, 0xFF);
+	gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL);
+}