]> git.baikalelectronics.ru Git - kernel.git/commit
nvmem: sunxi_sid: Optimize register read-out method
authorChen-Yu Tsai <wens@csie.org>
Sat, 13 Apr 2019 10:32:50 +0000 (11:32 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Apr 2019 17:43:11 +0000 (19:43 +0200)
commit550c2103a74b56aa694b70b52e02a32ca0f6721f
tree38ada939657cc218d0732829eb5413bd7d347abe
parenta5e8dece6688e53292cbe5fffe674f7a323b8ef7
nvmem: sunxi_sid: Optimize register read-out method

SID cells are 32-bit aligned, and a multiple of 32 bits in length. The
only outlier is the thermal sensor calibration data, which is 16 bits
per sensor. However a whole 64 bits is allocated for this purpose, so
we could consider it conforming to the rule above.

Also, the register read-out method assumes native endian, unlike the
direct MMIO method, which assumes big endian. Thus no endian conversion
is involved.

Under these assumptions, the register read-out method can be slightly
optimized. Instead of reading one word then discarding 3 bytes, read
the whole word directly into the buffer. However, for reads under 4
bytes or trailing bytes, we still use a scratch buffer to extract the
requested bytes.

We could go one step further if .word_size was 4, but changing that
would affect the sysfs interface's behavior.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/nvmem/sunxi_sid.c