summaryrefslogtreecommitdiffstats
path: root/cpukit/dev/i2c/eeprom.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2014-11-26 08:24:39 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2014-11-26 08:26:15 +0100
commitd6f0ca64a5932ee38fb5891dbce886e0b10f63e7 (patch)
tree26b17ae50666a9619e2a3e88d5aeb54baa868670 /cpukit/dev/i2c/eeprom.c
parentsmp09: Resolve missing prototype warning. (diff)
downloadrtems-d6f0ca64a5932ee38fb5891dbce886e0b10f63e7.tar.bz2
i2c: Avoid undefined right shift operation
Diffstat (limited to '')
-rw-r--r--cpukit/dev/i2c/eeprom.c13
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;
}