X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fdrv%2Feeprom.c;h=82fb9590f6126524ce8d63a76290df2ab1f706b9;hb=4d8a6a97c6c0e15296b51d5f02674079bede1aa0;hp=4fe444e9e0c11c1e0b0ab733c98faeb610025399;hpb=69eb4b200862f19d6ae3537bf1106f676248f5ba;p=bertos.git diff --git a/bertos/drv/eeprom.c b/bertos/drv/eeprom.c index 4fe444e9..82fb9590 100644 --- a/bertos/drv/eeprom.c +++ b/bertos/drv/eeprom.c @@ -82,6 +82,24 @@ static const EepromInfo mem_info[] = .blk_size = 0x10, .e2_size = 0x800, }, + { + /* 24XX32 */ + .has_dev_addr = true, + .blk_size = 0x20, + .e2_size = 0x1000, + }, + { + /* 24XX64 */ + .has_dev_addr = true, + .blk_size = 0x20, + .e2_size = 0x2000, + }, + { + /* 24XX128 */ + .has_dev_addr = true, + .blk_size = 0x40, + .e2_size = 0x4000, + }, { /* 24XX256 */ .has_dev_addr = true, @@ -181,9 +199,8 @@ static size_t eeprom_write(KBlock *blk, block_idx_t idx, const void *buf, size_t STATIC_ASSERT(countof(addr_buf) <= sizeof(e2addr_t)); - /* clamp size to memory limit (otherwise may roll back) */ - ASSERT(idx <= blk->blk_cnt); + ASSERT(idx < blk->priv.blk_start + blk->blk_cnt); size = MIN(size, blk->blk_size - offset); if (mem_info[eep->type].has_dev_addr) @@ -230,7 +247,7 @@ static size_t eeprom_readDirect(struct KBlock *_blk, block_idx_t idx, void *_buf STATIC_ASSERT(countof(addr_buf) <= sizeof(e2addr_t)); /* clamp size to memory limit (otherwise may roll back) */ - ASSERT(idx <= blk->blk.blk_cnt); + ASSERT(idx < blk->blk.priv.blk_start + blk->blk.blk_cnt); size = MIN(size, blk->blk.blk_size - offset); e2dev_addr_t dev_addr;