diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-11-26 08:24:39 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-11-26 08:26:15 +0100 |
commit | d6f0ca64a5932ee38fb5891dbce886e0b10f63e7 (patch) | |
tree | 26b17ae50666a9619e2a3e88d5aeb54baa868670 /cpukit/dev | |
parent | smp09: Resolve missing prototype warning. (diff) | |
download | rtems-d6f0ca64a5932ee38fb5891dbce886e0b10f63e7.tar.bz2 |
i2c: Avoid undefined right shift operation
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; } |