projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of ssh://git.gag.com/scm/git/fw/altos
[fw/altos]
/
src
/
drivers
/
ao_m25.c
diff --git
a/src/drivers/ao_m25.c
b/src/drivers/ao_m25.c
index 390637d7fd116b5c39889b4ed65df295d6d6e1b5..b506b0a7c9394ee5bac8fd36ace6a8ea065dfe4f 100644
(file)
--- a/
src/drivers/ao_m25.c
+++ b/
src/drivers/ao_m25.c
@@
-3,7
+3,8
@@
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
@@
-82,11
+83,11
@@
__pdata uint16_t ao_storage_unit;
#if M25_MAX_CHIPS > 1
static uint8_t ao_m25_size[M25_MAX_CHIPS]; /* number of sectors in each chip */
#if M25_MAX_CHIPS > 1
static uint8_t ao_m25_size[M25_MAX_CHIPS]; /* number of sectors in each chip */
-static
uint8_t ao_m25_pin[M25_MAX_CHIPS];
/* chip select pin for each chip */
+static
ao_port_t ao_m25_pin[M25_MAX_CHIPS];
/* chip select pin for each chip */
static uint8_t ao_m25_numchips; /* number of chips detected */
#endif
static uint8_t ao_m25_total; /* total sectors available */
static uint8_t ao_m25_numchips; /* number of chips detected */
#endif
static uint8_t ao_m25_total; /* total sectors available */
-static
uint8_t ao_m25_wip;
/* write in progress */
+static
ao_port_t ao_m25_wip;
/* write in progress */
static __xdata uint8_t ao_m25_mutex;
static __xdata uint8_t ao_m25_mutex;
@@
-112,7
+113,7
@@
static __xdata uint8_t ao_m25_instruction[4];
* Block until the specified chip is done writing
*/
static void
* Block until the specified chip is done writing
*/
static void
-ao_m25_wait_wip(
uint8
_t cs)
+ao_m25_wait_wip(
ao_port
_t cs)
{
if (ao_m25_wip & cs) {
M25_SELECT(cs);
{
if (ao_m25_wip & cs) {
M25_SELECT(cs);
@@
-132,7
+133,7
@@
ao_m25_wait_wip(uint8_t cs)
* so that future operations will block until the WIP bit goes off
*/
static void
* so that future operations will block until the WIP bit goes off
*/
static void
-ao_m25_write_enable(
uint8
_t cs)
+ao_m25_write_enable(
ao_port
_t cs)
{
M25_SELECT(cs);
ao_m25_instruction[0] = M25_WREN;
{
M25_SELECT(cs);
ao_m25_instruction[0] = M25_WREN;
@@
-146,7
+147,7
@@
ao_m25_write_enable(uint8_t cs)
* Returns the number of 64kB sectors
*/
static uint8_t
* Returns the number of 64kB sectors
*/
static uint8_t
-ao_m25_read_capacity(
uint8
_t cs)
+ao_m25_read_capacity(
ao_port
_t cs)
{
uint8_t capacity;
M25_SELECT(cs);
{
uint8_t capacity;
M25_SELECT(cs);
@@
-166,12
+167,13
@@
ao_m25_read_capacity(uint8_t cs)
return 1 << (capacity - 0x10);
}
return 1 << (capacity - 0x10);
}
-static
uint8
_t
+static
ao_port
_t
ao_m25_set_address(uint32_t pos)
{
ao_m25_set_address(uint32_t pos)
{
-
uint8_t chip
;
+
ao_port_t mask
;
#if M25_MAX_CHIPS > 1
uint8_t size;
#if M25_MAX_CHIPS > 1
uint8_t size;
+ uint8_t chip;
for (chip = 0; chip < ao_m25_numchips; chip++) {
size = ao_m25_size[chip];
for (chip = 0; chip < ao_m25_numchips; chip++) {
size = ao_m25_size[chip];
@@
-182,16
+184,16
@@
ao_m25_set_address(uint32_t pos)
if (chip == ao_m25_numchips)
return 0xff;
if (chip == ao_m25_numchips)
return 0xff;
-
chip
= ao_m25_pin[chip];
+
mask
= ao_m25_pin[chip];
#else
#else
-
chip
= AO_M25_SPI_CS_MASK;
+
mask
= AO_M25_SPI_CS_MASK;
#endif
#endif
- ao_m25_wait_wip(
chip
);
+ ao_m25_wait_wip(
mask
);
ao_m25_instruction[1] = pos >> 16;
ao_m25_instruction[2] = pos >> 8;
ao_m25_instruction[3] = pos;
ao_m25_instruction[1] = pos >> 16;
ao_m25_instruction[2] = pos >> 8;
ao_m25_instruction[3] = pos;
- return
chip
;
+ return
mask
;
}
/*
}
/*
@@
-239,7
+241,7
@@
ao_m25_scan(void)
uint8_t
ao_storage_erase(uint32_t pos) __reentrant
{
uint8_t
ao_storage_erase(uint32_t pos) __reentrant
{
-
uint8_t
cs;
+
ao_port_t
cs;
if (pos >= ao_storage_total || pos + ao_storage_block > ao_storage_total)
return 0;
if (pos >= ao_storage_total || pos + ao_storage_block > ao_storage_total)
return 0;
@@
-249,7
+251,6
@@
ao_storage_erase(uint32_t pos) __reentrant
cs = ao_m25_set_address(pos);
cs = ao_m25_set_address(pos);
- ao_m25_wait_wip(cs);
ao_m25_write_enable(cs);
ao_m25_instruction[0] = M25_SE;
ao_m25_write_enable(cs);
ao_m25_instruction[0] = M25_SE;
@@
-268,7
+269,7
@@
ao_storage_erase(uint32_t pos) __reentrant
uint8_t
ao_storage_device_write(uint32_t pos, __xdata void *d, uint16_t len) __reentrant
{
uint8_t
ao_storage_device_write(uint32_t pos, __xdata void *d, uint16_t len) __reentrant
{
-
uint8_t
cs;
+
ao_port_t
cs;
if (pos >= ao_storage_total || pos + len > ao_storage_total)
return 0;
if (pos >= ao_storage_total || pos + len > ao_storage_total)
return 0;
@@
-295,7
+296,7
@@
ao_storage_device_write(uint32_t pos, __xdata void *d, uint16_t len) __reentrant
uint8_t
ao_storage_device_read(uint32_t pos, __xdata void *d, uint16_t len) __reentrant
{
uint8_t
ao_storage_device_read(uint32_t pos, __xdata void *d, uint16_t len) __reentrant
{
-
uint8_t
cs;
+
ao_port_t
cs;
if (pos >= ao_storage_total || pos + len > ao_storage_total)
return 0;
if (pos >= ao_storage_total || pos + len > ao_storage_total)
return 0;
@@
-332,7
+333,7
@@
void
ao_storage_device_info(void) __reentrant
{
#if M25_DEBUG
ao_storage_device_info(void) __reentrant
{
#if M25_DEBUG
-
uint8_t
cs;
+
ao_port_t
cs;
#endif
#if M25_MAX_CHIPS > 1
uint8_t chip;
#endif
#if M25_MAX_CHIPS > 1
uint8_t chip;