I think there is a big bug in cgminer's driver-icarus.c:
ICARUS_UNUSED_SIZE is defined as 16. IMO this should be 20.
ICARUS_WORK_DATA_OFFSET is defined as 64. IMO this should be 68.
(there are maybe even more wrong values)
Can you verify/confirm this?
So, have all the miners who use cgminer with icarus devices been misled?
BTW. the source code of this program is really a PITA to study :-(