regmap: Add regmap_field APIs
authorSrinivas Kandagatla <srinivas.kandagatla@st.com>
Tue, 11 Jun 2013 12:18:15 +0000 (13:18 +0100)
committerMark Brown <broonie@linaro.org>
Wed, 12 Jun 2013 15:27:44 +0000 (16:27 +0100)
commit67252287871113deba96adf7e4df1752f3f08688
tree8fd124b776d577d4d8dd0fa48b6c1a2df3be7ca3
parent317ddd256b9c24b0d78fa8018f80f1e495481a10
regmap: Add regmap_field APIs

It is common to access regmap registers at bit level, using
regmap_update_bits or regmap_read functions, however the end user has to
take care of a mask or shifting. This becomes overhead when such use
cases are high. Having a common function to do this is much convenient
and less error prone.

The idea of regmap_field is simple, regmap_field gives a logical
structure to bits of the regmap register, and the driver can use this
logical entity without the knowledge of the bit positions and masks all
over the code. This way code looks much neat and it need not handle the
masks, shifts every time it access the those entities.

With this new regmap_field_read/write apis the end user can setup a
regmap field using regmap_field_init and use the return regmap_field to
read write the register field without worrying about the masks or
shifts.

Also this apis will be useful for drivers which are based on regmaps,
like some clocks or pinctrls which can work on the regmap_fields
directly without having to worry about bit positions.

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@st.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
drivers/base/regmap/internal.h
drivers/base/regmap/regmap.c
include/linux/regmap.h