[PATCH v3 0/9] regmap: Add managed API, regmap fields, regmap config

Pratyush Yadav p.yadav at ti.com
Thu Sep 24 06:34:09 CEST 2020


Hi,

This series is a re-spin of Jean-Jacques' earlier effort [0], the goal
of which was to facilitate porting drivers from the Linux kernel. It
adds the managed API, using the same API as Linux. It also adds support
for regmap fields.

Jean-Jacques' series added support for custom regmap read/write
callbacks. The design was argued against by Simon [1]. He argued that
using the driver model was a better idea instead of the custom
functions. That would mean slightly more memory usage and a more
involved change.

The main aim of adding the custom functions is to support the Cadence
Sierra PHY driver from Linux [2]. The driver's custom functions aren't
very complicated, so they can be replaced by some simple formatting
options. So, add the struct regmap_config which contains fields to alter
the behaviour of the regmap. This includes specifying the size of the
read/write operations via 'width', specifying the start and size of
range from code instead of device tree via 'r_start' and 'r_size', and
specifying a left shift of the register offset before access via
'reg_offset_shift'. The driver can't be ported verbatim now, but this
allows the changes to be very isolated and minimal.

These config options allow us to avoid converting to driver model until
we really need it.

The Travis CI run can be found at [3].

[0] https://patchwork.ozlabs.org/project/uboot/cover/20191105114700.24989-1-jjhiblot@ti.com/
[1] https://patchwork.ozlabs.org/comment/2426186/
[2] https://elixir.bootlin.com/linux/latest/source/drivers/phy/cadence/phy-cadence-sierra.c
[3] https://travis-ci.org/github/prati0100/uboot/builds/729588518

Changes in v3 (also mentioned in individual patches):
- Allow multi-digit index in in_tree(). Fixes test failures in
  test/bind.py

- s/DM_TESTF/UT_TESTF/g

- Fix merge conflicts in test.dts

- Rebase on latest master.

Changes in v2:
- Add comments explaining the need for regmap_field.

- Set regmap->width to a default of REGMAP_SIZE_32 in regmap_alloc() to
  avoid the checks in regmap_{read,write}().

- Use calloc() instead of using malloc() and memset() to initialize a
  regmap to zero.

- Update comments on regmap_{read,write}() and
  regmap_raw_{read,write}().

- Drop comments explaining two non-existent fields in struct reg_field.

- Add a comment with example explaining REG_FIELD().

- Add Simon's Reviewed-by trailers.

Jean-Jacques Hiblot (3):
  regmap: Add devm_regmap_init()
  regmap: Add support for regmap fields
  test: dm: Add tests for regmap managed API and regmap fields

Pratyush Yadav (6):
  regmap: zero out the regmap on allocation
  regmap: Allow specifying read/write width
  regmap: Allow left shifting register offset before access
  regmap: Add regmap_init_mem_range()
  regmap: Allow devices to specify regmap range start and size in config
  test/py: allow multi-digit index in in_tree()

 arch/sandbox/dts/test.dts  |  13 +++
 drivers/core/regmap.c      | 163 ++++++++++++++++++++++++++++-
 include/regmap.h           | 205 ++++++++++++++++++++++++++++++++++---
 test/dm/regmap.c           | 198 +++++++++++++++++++++++++++++++++++
 test/py/tests/test_bind.py |   2 +-
 5 files changed, 563 insertions(+), 18 deletions(-)

--
2.28.0



More information about the U-Boot mailing list