The number of sectors (64kB) units in the connected flash
part can be larger than 255, so switch from 8-bits to 32-bits for
holding this value.
Signed-off-by: Keith Packard <keithp@keithp.com>
-static uint8_t ao_m25_size[M25_MAX_CHIPS]; /* number of sectors in each chip */
+static uint32_t ao_m25_size[M25_MAX_CHIPS]; /* number of sectors in 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 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 uint32_t ao_m25_total; /* total sectors available */
static ao_port_t ao_m25_wip; /* write in progress */
static uint8_t ao_m25_mutex;
static ao_port_t ao_m25_wip; /* write in progress */
static uint8_t ao_m25_mutex;
#define M25_BLOCK_SHIFT 16
#define M25_BLOCK 65536L
#define M25_BLOCK_SHIFT 16
#define M25_BLOCK 65536L
-#define M25_POS_TO_SECTOR(pos) ((uint8_t) ((pos) >> M25_BLOCK_SHIFT))
+#define M25_POS_TO_SECTOR(pos) ((uint32_t) ((pos) >> M25_BLOCK_SHIFT))
#define M25_SECTOR_TO_POS(sector) (((uint32_t) (sector)) << M25_BLOCK_SHIFT)
/*
#define M25_SECTOR_TO_POS(sector) (((uint32_t) (sector)) << M25_BLOCK_SHIFT)
/*
/*
* Returns the number of 64kB sectors
*/
/*
* Returns the number of 64kB sectors
*/
ao_m25_read_capacity(ao_port_t cs)
{
uint8_t capacity;
ao_m25_read_capacity(ao_port_t cs)
{
uint8_t capacity;
{
ao_port_t mask;
#if M25_MAX_CHIPS > 1
{
ao_port_t mask;
#if M25_MAX_CHIPS > 1
uint8_t chip;
for (chip = 0; chip < ao_m25_numchips; chip++) {
uint8_t chip;
for (chip = 0; chip < ao_m25_numchips; chip++) {
ao_m25_scan(void)
{
#if M25_MAX_CHIPS > 1
ao_m25_scan(void)
{
#if M25_MAX_CHIPS > 1
+ uint8_t pin;
+ uint32_t size;
ao_mutex_put(&ao_m25_mutex);
#if M25_MAX_CHIPS > 1
ao_mutex_put(&ao_m25_mutex);
#if M25_MAX_CHIPS > 1
- printf ("Detected chips %d size %d\n", ao_m25_numchips, ao_m25_total);
+ printf ("Detected chips %d size %ld\n", ao_m25_numchips, ao_m25_total);
for (chip = 0; chip < ao_m25_numchips; chip++)
printf ("Flash chip %d select %02x size %d\n",
chip, ao_m25_pin[chip], ao_m25_size[chip]);
#else
for (chip = 0; chip < ao_m25_numchips; chip++)
printf ("Flash chip %d select %02x size %d\n",
chip, ao_m25_pin[chip], ao_m25_size[chip]);
#else
- printf ("Detected chips 1 size %d\n", ao_m25_total);
+ printf ("Detected chips 1 size %ld\n", ao_m25_total);