*
* 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
static uint32_t iap_in[5], iap_out[5];
+#if IS_FLASH_LOADER
+
static uint32_t
ao_lpc_addr_to_sector(uint8_t *addr)
{
- uint32_t off = addr - LPC_FLASH_BASE;
+ uint32_t off = (uint32_t) (addr - LPC_FLASH_BASE);
return off >> LPC_FLASH_SECTOR_SHIFT;
}
static uint8_t
ao_lpc_addr_is_sector_aligned(uint8_t *addr)
{
- uint32_t off = addr - LPC_FLASH_BASE;
+ uint32_t off = (uint32_t) (addr - LPC_FLASH_BASE);
return (off & LPC_FLASH_SECTOR_MASK) == 0;
}
ret = ao_lpc_copy_ram_to_flash(page, src, 256, AO_LPC_SYSCLK / 1000);
return ret;
}
+
+#endif
+
+#if LPC_EEPROM_BYTES
+
+/*
+ * Write to eeprom
+ */
+
+uint8_t
+ao_eeprom_write(ao_pos_t pos, void *v, uint16_t len)
+{
+ iap_in[0] = LPC_IAP_EEPROM_WRITE;
+ iap_in[1] = (uint32_t) pos;
+ iap_in[2] = (uint32_t) v;
+ iap_in[3] = (uint32_t) len;
+ iap_in[4] = AO_LPC_SYSCLK / 1000;
+ iap(iap_in,iap_out);
+ return iap_out[0] == LPC_IAP_CMD_SUCCESS;
+}
+
+/*
+ * Read from eeprom
+ */
+uint8_t
+ao_eeprom_read(ao_pos_t pos, void *v, uint16_t len)
+{
+ iap_in[0] = LPC_IAP_EEPROM_READ;
+ iap_in[1] = (uint32_t) pos;
+ iap_in[2] = (uint32_t) v;
+ iap_in[3] = (uint32_t) len;
+ iap_in[4] = AO_LPC_SYSCLK / 1000;
+ iap(iap_in,iap_out);
+ return iap_out[0] == LPC_IAP_CMD_SUCCESS;
+}
+
+void
+ao_eeprom_init(void)
+{
+ /* Nothing to do here */
+}
+#endif