Skip to content

Commit 440fa49

Browse files
committed
Remove paging and sync from I2CEEBlockDevice::read(), as it is not needed
1 parent 4d0c346 commit 440fa49

File tree

1 file changed

+13
-28
lines changed

1 file changed

+13
-28
lines changed

components/storage/blockdevice/COMPONENT_I2CEE/I2CEEBlockDevice.cpp

+13-28
Original file line numberDiff line numberDiff line change
@@ -64,39 +64,24 @@ int I2CEEBlockDevice::read(void *buffer, bd_addr_t addr, bd_size_t size)
6464

6565
auto *pBuffer = static_cast<char *>(buffer);
6666

67-
while (size > 0) {
68-
uint32_t off = addr % _block;
69-
uint32_t chunk = (off + size < _block) ? size : (_block - off);
70-
71-
_i2c->start();
67+
_i2c->start();
7268

73-
if (1 != _i2c->write(get_paged_device_address(addr))) {
74-
return BD_ERROR_DEVICE_ERROR;
75-
}
76-
77-
if (!_address_is_eight_bit && 1 != _i2c->write((char)(addr >> 8u))) {
78-
return BD_ERROR_DEVICE_ERROR;
79-
}
80-
81-
if (1 != _i2c->write((char)(addr & 0xffu))) {
82-
return BD_ERROR_DEVICE_ERROR;
83-
}
84-
85-
_i2c->stop();
69+
if (1 != _i2c->write(get_paged_device_address(addr))) {
70+
return BD_ERROR_DEVICE_ERROR;
71+
}
8672

87-
auto err = _sync();
73+
if (!_address_is_eight_bit && 1 != _i2c->write((char)(addr >> 8u))) {
74+
return BD_ERROR_DEVICE_ERROR;
75+
}
8876

89-
if (err) {
90-
return err;
91-
}
77+
if (1 != _i2c->write((char)(addr & 0xffu))) {
78+
return BD_ERROR_DEVICE_ERROR;
79+
}
9280

93-
if (0 != _i2c->read(_i2c_addr, pBuffer, chunk)) {
94-
return BD_ERROR_DEVICE_ERROR;
95-
}
81+
_i2c->stop();
9682

97-
addr += chunk;
98-
size -= chunk;
99-
pBuffer += chunk;
83+
if (0 != _i2c->read(_i2c_addr, pBuffer, size)) {
84+
return BD_ERROR_DEVICE_ERROR;
10085
}
10186

10287
return BD_ERROR_OK;

0 commit comments

Comments
 (0)