X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=pico%2Fcarthw%2Feeprom_spi.c;h=b250afffdfb4f0af43c02105ef91f93e5a72ad3b;hb=ee3c39efd2cf51cd654b6240f6fb595673f10f45;hp=921eb6abe2c00a5a425dd0faed2ef9441b80c514;hpb=8c2137f11f1b73f35f688f068de89b40b1f10484;p=picodrive.git diff --git a/pico/carthw/eeprom_spi.c b/pico/carthw/eeprom_spi.c index 921eb6a..b250aff 100644 --- a/pico/carthw/eeprom_spi.c +++ b/pico/carthw/eeprom_spi.c @@ -36,7 +36,9 @@ * ****************************************************************************************/ -#include "shared.h" +#include "../pico_int.h" +#include "../cd/genplus_macros.h" +#include "eeprom_spi.h" /* max supported size 64KB (25x512/95x512) */ #define SIZE_MASK 0xffff @@ -72,16 +74,16 @@ typedef struct static T_EEPROM_SPI spi_eeprom; -void eeprom_spi_init() +void *eeprom_spi_init(int *size) { /* reset eeprom state */ memset(&spi_eeprom, 0, sizeof(T_EEPROM_SPI)); spi_eeprom.out = 1; spi_eeprom.state = GET_OPCODE; - /* enable backup RAM */ - sram.custom = 2; - sram.on = 1; + if (size) + *size = sizeof(T_EEPROM_SPI); + return &spi_eeprom; } void eeprom_spi_write(unsigned char data) @@ -208,7 +210,7 @@ void eeprom_spi_write(unsigned char data) if (spi_eeprom.opcode & 0x01) { /* READ operation */ - spi_eeprom.buffer = sram.sram[spi_eeprom.addr]; + spi_eeprom.buffer = Pico.sv.data[spi_eeprom.addr]; spi_eeprom.state = READ_BYTE; } else @@ -264,7 +266,7 @@ void eeprom_spi_write(unsigned char data) /* $C000-$FFFF (sector #3) is protected */ if (spi_eeprom.addr < 0xC000) { - sram.sram[spi_eeprom.addr] = spi_eeprom.buffer; + Pico.sv.data[spi_eeprom.addr] = spi_eeprom.buffer; } break; } @@ -274,7 +276,7 @@ void eeprom_spi_write(unsigned char data) /* $8000-$FFFF (sectors #2 and #3) is protected */ if (spi_eeprom.addr < 0x8000) { - sram.sram[spi_eeprom.addr] = spi_eeprom.buffer; + Pico.sv.data[spi_eeprom.addr] = spi_eeprom.buffer; } break; } @@ -288,7 +290,7 @@ void eeprom_spi_write(unsigned char data) default: { /* no sectors protected */ - sram.sram[spi_eeprom.addr] = spi_eeprom.buffer; + Pico.sv.data[spi_eeprom.addr] = spi_eeprom.buffer; break; } } @@ -330,7 +332,7 @@ void eeprom_spi_write(unsigned char data) { /* read next array byte */ spi_eeprom.addr = (spi_eeprom.addr + 1) & SIZE_MASK; - spi_eeprom.buffer = sram.sram[spi_eeprom.addr]; + spi_eeprom.buffer = Pico.sv.data[spi_eeprom.addr]; } } }