diff options
Diffstat (limited to 'cpukit/dev')
-rw-r--r-- | cpukit/dev/i2c/eeprom.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/cpukit/dev/i2c/eeprom.c b/cpukit/dev/i2c/eeprom.c index 9165141346..39cff951cb 100644 --- a/cpukit/dev/i2c/eeprom.c +++ b/cpukit/dev/i2c/eeprom.c @@ -221,17 +221,20 @@ int i2c_dev_register_eeprom( if (address_bytes > EEPROM_MAX_ADDRESS_BYTES) { rtems_set_errno_and_return_minus_one(ERANGE); + } else if (address_bytes == EEPROM_MAX_ADDRESS_BYTES) { + extra_address = 0; + } else { + extra_address = size_in_bytes >> (8 * address_bytes); } - if (page_size_in_bytes > EEPROM_MAX_PAGE_SIZE) { - page_size_in_bytes = EEPROM_MAX_PAGE_SIZE; - } - - extra_address = size_in_bytes >> (8 * address_bytes); if (extra_address != 0 && (extra_address & (extra_address - 1)) != 0) { rtems_set_errno_and_return_minus_one(EINVAL); } + if (page_size_in_bytes > EEPROM_MAX_PAGE_SIZE) { + page_size_in_bytes = EEPROM_MAX_PAGE_SIZE; + } + if (program_timeout_in_ms == 0) { program_timeout_in_ms = 1000; } |