X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fdrivers%2Fao_m25.c;h=2e4cbedf989d23991c54245b6a6a18d392e2d1b1;hb=341157c7415fcf879696c9d8167722a0c5ff264c;hp=ca0615e7c5b75e30c8e1eb0b50f98d741977f2e7;hpb=936eceded2d08f4eb7318b28bd1be6cd3b06a7b3;p=fw%2Faltos diff --git a/src/drivers/ao_m25.c b/src/drivers/ao_m25.c index ca0615e7..2e4cbedf 100644 --- a/src/drivers/ao_m25.c +++ b/src/drivers/ao_m25.c @@ -82,11 +82,11 @@ 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 */ +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 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; @@ -101,12 +101,14 @@ static uint8_t ao_m25_mutex; static uint8_t ao_m25_instruction[4]; -#define M25_SELECT(cs) ao_spi_get_mask(AO_M25_SPI_CS_PORT,cs,AO_M25_SPI_BUS, AO_SPI_SPEED_FAST) +#define AO_M25_SPI_SPEED ao_spi_speed(10000000) /* this seems like a reasonable minimum speed to require */ + +#define M25_SELECT(cs) ao_spi_get_mask(AO_M25_SPI_CS_PORT,cs,AO_M25_SPI_BUS,AO_M25_SPI_SPEED) #define M25_DESELECT(cs) ao_spi_put_mask(AO_M25_SPI_CS_PORT,cs,AO_M25_SPI_BUS) #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) /* @@ -146,7 +148,7 @@ ao_m25_write_enable(ao_port_t cs) /* * Returns the number of 64kB sectors */ -static uint8_t +static uint32_t ao_m25_read_capacity(ao_port_t cs) { uint8_t capacity; @@ -172,7 +174,7 @@ ao_m25_set_address(uint32_t pos) { ao_port_t mask; #if M25_MAX_CHIPS > 1 - uint8_t size; + uint32_t size; uint8_t chip; for (chip = 0; chip < ao_m25_numchips; chip++) { @@ -204,7 +206,8 @@ static uint8_t ao_m25_scan(void) { #if M25_MAX_CHIPS > 1 - uint8_t pin, size; + uint8_t pin; + uint32_t size; #endif if (ao_m25_total) @@ -344,12 +347,12 @@ ao_storage_device_info(void) 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 - printf ("Detected chips 1 size %d\n", ao_m25_total); + printf ("Detected chips 1 size %ld\n", ao_m25_total); #endif #if M25_DEBUG