]> sigrok.org Git - libsigrok.git/commit
sysclk-lwla: Simplify and optimize word extraction.
authorDaniel Elstner <redacted>
Sun, 26 Jan 2014 19:28:59 +0000 (20:28 +0100)
committerDaniel Elstner <redacted>
Tue, 28 Jan 2014 22:34:53 +0000 (23:34 +0100)
commite0df15d43600737fe225f5c68dbdbcf84d5fa326
treeb85097165182637f7f7626c58752ddf61ba8514d
parent5413df19528c96c6fba3ee4cc61ec3dfe01047cb
sysclk-lwla: Simplify and optimize word extraction.

It turns out that all LWLA protocol responses consist either
of 32-bit units or of 32-bit units combined into 64-bit units.
Thus it makes sense to double the basic unit size for reading
from 16 bit to 32 bit.
We cannot do the same for command messages though, as those
actually do use 16-bit quantities in some places, and 32-bit
arguments are not always aligned to 32-bit boundaries.

(acquisition_state.xfer_buf_in): Change unit type to uint32_t,
and update related macros and code accordingly.
(LWLA_TO_UINT32): New macro to replace LWLA_READ32, operating
directly on 32-bit values instead of pointers to 16-bit units.
Make use of a compiler-recognized idiom for bitwise rotation
to efficiently swap the 16-bit halves of a 32-bit word.
(LWLA_TO_UINT16): New macro to replace LWLA_READ16.
(LWLA_READ64): Remove unused macro.
(LWLA_WORD_[0123]): Slightly simplify 16-bit word extraction.
hardware/sysclk-lwla/lwla.c
hardware/sysclk-lwla/lwla.h
hardware/sysclk-lwla/protocol.c
hardware/sysclk-lwla/protocol.h