From: Bartosz Golaszewski <brgl@bgdev.pl>
To: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>,
"David S . Miller" <davem@davemloft.net>,
Mauro Carvalho Chehab <mchehab+samsung@kernel.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Andrew Morton <akpm@linux-foundation.org>,
Arnd Bergmann <arnd@arndb.de>, Jonathan Corbet <corbet@lwn.net>,
Sekhar Nori <nsekhar@ti.com>, Kevin Hilman <khilman@kernel.org>,
David Lechner <david@lechnology.com>,
Boris Brezillon <boris.brezillon@bootlin.com>,
Andrew Lunn <andrew@lunn.ch>, Alban Bedel <albeu@free.fr>,
Maxime Ripard <maxime.ripard@bootlin.com>,
Chen-Yu Tsai <wens@csie.org>
Cc: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
Bartosz Golaszewski <bgolaszewski@baylibre.com>
Subject: [PATCH v4 00/22] nvmem: rework of the subsystem for non-DT users
Date: Fri, 14 Sep 2018 16:39:49 +0200 [thread overview]
Message-ID: <20180914144011.27614-1-brgl@bgdev.pl> (raw)
From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
NOTE: I decided to post v4 despite no new reviews from Srinivas as I'll
be off next week. There were a couple issues reported by the kbuild bot
and one bug I noticed after sending v3.
This series contains nvmem framework changes prerequisite for further
development of my previous series[1] that aims at removal of the
platform data struct from at24 EEPROM driver.
The patches are conceptually split into a couple groups.
First five patches fix issues with existing issues.
Patch 6 switches the nvmem providers to using kref which is necessary
for removal of the return value from nvmem_unregister(). This is an
approach similar to the one used in the clock framework where the
provider is only removed after the last reference to it is dropped.
Patch 7 changes the errno returned from the driver after kzalloc()
fails from -EINVAL to -ENOMEM which makes more sense.
Patches 8-10 convert last remaining users of nvmem_unregister() who
still check its return value to using devm_nvmem_unregister() and
patch 11 changes its return value from int to void.
Patches 12-15 introduce the most significant changes of this series:
we remove the global cell list, add support for static cell definitions
external to the provider structure, change the way DT lookup works and
allow to associate resources and consumers using lookup tables. The way
nvmem_cell_get() for non-DT users is changed but there are no current
users and it's currently broken anyway (cell being removed after a call
to nvmem_cell_put()).
Patch 16 updates the documentation.
Patch 17 adds support for notifiers to nvmem so that users can
subscribe for events such as device or cell registration or removal.
Patches 18 & 19 add some minor improvements to the codebase.
Last three patches contain fixes to warnings emitted by checkpatch.
It's a good moment to add them if we're already touching a big part
of the subsystem's code.
Tested both DT and non-DT use cases.
[1] https://lkml.org/lkml/2018/8/10/149
v1 -> v2:
- extended the lookup structure with a proper con_id independent from the
cell name defined in the cell definition table
- added a patch that makes the naming convention for the cell name argument
in the nvmem_cell_get() family of functions consistent
- there were two users of nvmem_unregister() that still checked the return
value, now switched to devm_nvmem_register()
- fixed build failures reported by kbuild test robot
v2 -> v3:
- dropped the patch removing unused APIs and introduced changes on top of
existing code instead
- fixed nvmem provider reference decreasing in error paths
- added checkpatch fixes
- removed nvmem-machine.h and distributed new definitions among existing
consumer and provider headers
- reordered patches thematically
- added more patches fixing issues in existing codebase
v3 -> v4:
- fixed the notifier chain call when removing nvmem devices: call the
notifier chain for NVMEM_REMOVE before releasing any resources
- added patch 7/22 ("sunxi_sid: return -ENOMEM if kzalloc() fails")
- fixed the return value in error path for patch 8/22 ("sunxi_sid: use
devm_nvmem_register())"
- fixed the return value of devm_nvmem_unregister() in
patch 11/22 ("change the signature of nvmem_unregister()")
Bartosz Golaszewski (22):
nvmem: provide nvmem_dev_name()
nvmem: remove the name field from struct nvmem_device
nvmem: use list_for_each_entry_safe in nvmem_device_remove_all_cells()
nvmem: remove a stray newline
nvmem: check the return value of nvmem_add_cells()
nvmem: use kref
nvmem: sunxi_sid: return -ENOMEM if kzalloc() fails
nvmem: sunxi_sid: use devm_nvmem_register()
nvmem: lpc18xx_eeprom: use devm_nvmem_register()
nvmem: mxs-ocotp: use devm_nvmem_register()
nvmem: change the signature of nvmem_unregister()
nvmem: remove the global cell list
nvmem: add support for cell info
nvmem: resolve cells from DT at registration time
nvmem: add support for cell lookups from machine code
Documentation: nvmem: document cell tables and lookup entries
nvmem: add a notifier chain
nvmem: use SPDX license identifiers
nvmem: make the naming of arguments in nvmem_cell_get() consistent
nvmem: use EOPNOTSUPP instead of ENOSYS
nvmem: fix commenting style
nvmem: use octal permissions instead of constants
Documentation/nvmem/nvmem.txt | 31 ++
drivers/nvmem/core.c | 527 ++++++++++++++++++++++-----------
drivers/nvmem/lpc18xx_eeprom.c | 6 +-
drivers/nvmem/mxs-ocotp.c | 4 +-
drivers/nvmem/sunxi_sid.c | 20 +-
include/linux/nvmem-consumer.h | 100 +++++--
include/linux/nvmem-provider.h | 50 ++--
7 files changed, 497 insertions(+), 241 deletions(-)
--
2.18.0
next reply other threads:[~2018-09-14 14:40 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-14 14:39 Bartosz Golaszewski [this message]
2018-09-14 14:39 ` [PATCH v4 01/22] nvmem: provide nvmem_dev_name() Bartosz Golaszewski
2018-09-14 14:39 ` [PATCH v4 02/22] nvmem: remove the name field from struct nvmem_device Bartosz Golaszewski
2018-09-14 14:39 ` [PATCH v4 03/22] nvmem: use list_for_each_entry_safe in nvmem_device_remove_all_cells() Bartosz Golaszewski
2018-09-14 14:39 ` [PATCH v4 04/22] nvmem: remove a stray newline Bartosz Golaszewski
2018-09-14 14:39 ` [PATCH v4 05/22] nvmem: check the return value of nvmem_add_cells() Bartosz Golaszewski
2018-09-14 14:39 ` [PATCH v4 06/22] nvmem: use kref Bartosz Golaszewski
2018-09-14 14:39 ` [PATCH v4 07/22] nvmem: sunxi_sid: return -ENOMEM if kzalloc() fails Bartosz Golaszewski
2018-09-14 14:39 ` [PATCH v4 08/22] nvmem: sunxi_sid: use devm_nvmem_register() Bartosz Golaszewski
2018-09-14 14:39 ` [PATCH v4 09/22] nvmem: lpc18xx_eeprom: " Bartosz Golaszewski
2018-09-14 14:39 ` [PATCH v4 10/22] nvmem: mxs-ocotp: " Bartosz Golaszewski
2018-09-14 14:40 ` [PATCH v4 11/22] nvmem: change the signature of nvmem_unregister() Bartosz Golaszewski
2018-09-14 14:40 ` [PATCH v4 12/22] nvmem: remove the global cell list Bartosz Golaszewski
2018-09-14 14:40 ` [PATCH v4 13/22] nvmem: add support for cell info Bartosz Golaszewski
2018-09-14 14:40 ` [PATCH v4 14/22] nvmem: resolve cells from DT at registration time Bartosz Golaszewski
2018-09-14 14:40 ` [PATCH v4 15/22] nvmem: add support for cell lookups from machine code Bartosz Golaszewski
2018-09-21 1:12 ` Srinivas Kandagatla
2018-09-14 14:40 ` [PATCH v4 16/22] Documentation: nvmem: document cell tables and lookup entries Bartosz Golaszewski
2018-09-14 14:40 ` [PATCH v4 17/22] nvmem: add a notifier chain Bartosz Golaszewski
2018-09-14 14:40 ` [PATCH v4 18/22] nvmem: use SPDX license identifiers Bartosz Golaszewski
2018-09-14 14:40 ` [PATCH v4 19/22] nvmem: make the naming of arguments in nvmem_cell_get() consistent Bartosz Golaszewski
2018-09-14 14:40 ` [PATCH v4 20/22] nvmem: use EOPNOTSUPP instead of ENOSYS Bartosz Golaszewski
2018-09-14 14:40 ` [PATCH v4 21/22] nvmem: fix commenting style Bartosz Golaszewski
2018-09-14 14:40 ` [PATCH v4 22/22] nvmem: use octal permissions instead of constants Bartosz Golaszewski
2018-09-16 14:08 ` [PATCH v4 00/22] nvmem: rework of the subsystem for non-DT users Srinivas Kandagatla
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180914144011.27614-1-brgl@bgdev.pl \
--to=brgl@bgdev.pl \
--cc=akpm@linux-foundation.org \
--cc=albeu@free.fr \
--cc=andrew@lunn.ch \
--cc=arnd@arndb.de \
--cc=bgolaszewski@baylibre.com \
--cc=boris.brezillon@bootlin.com \
--cc=corbet@lwn.net \
--cc=davem@davemloft.net \
--cc=david@lechnology.com \
--cc=gregkh@linuxfoundation.org \
--cc=khilman@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maxime.ripard@bootlin.com \
--cc=mchehab+samsung@kernel.org \
--cc=nsekhar@ti.com \
--cc=srinivas.kandagatla@linaro.org \
--cc=wens@csie.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).