It happens that the C spec says compilers can choose whether to treat
int bitfields as signed or unsigned.
In some cases, int was being used and signed was expected. The IAR
ARM compiler in particular treats int bitfields as unsigned.
Clean up these plus a few other bitfield usages to make the size and
type explicit.
Thanks to ChungKang Hu for identifying this issue.
Signed-off-by: Charles Manning <cdhmanning@gmail.com>