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 v2 02/16] nvmem: remove the global cell list
Date: Fri, 7 Sep 2018 12:07:36 +0200 [thread overview]
Message-ID: <20180907100750.14564-3-brgl@bgdev.pl> (raw)
In-Reply-To: <20180907100750.14564-1-brgl@bgdev.pl>
From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Make each nvmem device the owner of its nvmem cells.
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
---
drivers/nvmem/core.c | 28 ++++++++++++----------------
1 file changed, 12 insertions(+), 16 deletions(-)
diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
index bb475c2688f9..86af62e2df47 100644
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -38,6 +38,7 @@ struct nvmem_device {
int flags;
struct bin_attribute eeprom;
struct device *base_dev;
+ struct list_head cells;
nvmem_reg_read_t reg_read;
nvmem_reg_write_t reg_write;
void *priv;
@@ -58,9 +59,6 @@ struct nvmem_cell {
static DEFINE_MUTEX(nvmem_mutex);
static DEFINE_IDA(nvmem_ida);
-static LIST_HEAD(nvmem_cells);
-static DEFINE_MUTEX(nvmem_cells_mutex);
-
#ifdef CONFIG_DEBUG_LOCK_ALLOC
static struct lock_class_key eeprom_lock_key;
#endif
@@ -284,29 +282,25 @@ static struct nvmem_device *of_nvmem_find(struct device_node *nvmem_np)
static void nvmem_cell_drop(struct nvmem_cell *cell)
{
- mutex_lock(&nvmem_cells_mutex);
+ mutex_lock(&nvmem_mutex);
list_del(&cell->node);
- mutex_unlock(&nvmem_cells_mutex);
+ mutex_unlock(&nvmem_mutex);
kfree(cell);
}
-static void nvmem_device_remove_all_cells(const struct nvmem_device *nvmem)
+static void nvmem_device_remove_all_cells(struct nvmem_device *nvmem)
{
- struct nvmem_cell *cell;
- struct list_head *p, *n;
+ struct nvmem_cell *cell, *p;
- list_for_each_safe(p, n, &nvmem_cells) {
- cell = list_entry(p, struct nvmem_cell, node);
- if (cell->nvmem == nvmem)
- nvmem_cell_drop(cell);
- }
+ list_for_each_entry_safe(cell, p, &nvmem->cells, node)
+ nvmem_cell_drop(cell);
}
static void nvmem_cell_add(struct nvmem_cell *cell)
{
- mutex_lock(&nvmem_cells_mutex);
- list_add_tail(&cell->node, &nvmem_cells);
- mutex_unlock(&nvmem_cells_mutex);
+ mutex_lock(&nvmem_mutex);
+ list_add_tail(&cell->node, &cell->nvmem->cells);
+ mutex_unlock(&nvmem_mutex);
}
/*
@@ -423,6 +417,8 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)
goto err_device_del;
}
+ INIT_LIST_HEAD(&nvmem->cells);
+
return nvmem;
err_device_del:
--
2.18.0
WARNING: multiple messages have this Message-ID (diff)
From: brgl@bgdev.pl (Bartosz Golaszewski)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 02/16] nvmem: remove the global cell list
Date: Fri, 7 Sep 2018 12:07:36 +0200 [thread overview]
Message-ID: <20180907100750.14564-3-brgl@bgdev.pl> (raw)
In-Reply-To: <20180907100750.14564-1-brgl@bgdev.pl>
From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Make each nvmem device the owner of its nvmem cells.
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
---
drivers/nvmem/core.c | 28 ++++++++++++----------------
1 file changed, 12 insertions(+), 16 deletions(-)
diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
index bb475c2688f9..86af62e2df47 100644
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -38,6 +38,7 @@ struct nvmem_device {
int flags;
struct bin_attribute eeprom;
struct device *base_dev;
+ struct list_head cells;
nvmem_reg_read_t reg_read;
nvmem_reg_write_t reg_write;
void *priv;
@@ -58,9 +59,6 @@ struct nvmem_cell {
static DEFINE_MUTEX(nvmem_mutex);
static DEFINE_IDA(nvmem_ida);
-static LIST_HEAD(nvmem_cells);
-static DEFINE_MUTEX(nvmem_cells_mutex);
-
#ifdef CONFIG_DEBUG_LOCK_ALLOC
static struct lock_class_key eeprom_lock_key;
#endif
@@ -284,29 +282,25 @@ static struct nvmem_device *of_nvmem_find(struct device_node *nvmem_np)
static void nvmem_cell_drop(struct nvmem_cell *cell)
{
- mutex_lock(&nvmem_cells_mutex);
+ mutex_lock(&nvmem_mutex);
list_del(&cell->node);
- mutex_unlock(&nvmem_cells_mutex);
+ mutex_unlock(&nvmem_mutex);
kfree(cell);
}
-static void nvmem_device_remove_all_cells(const struct nvmem_device *nvmem)
+static void nvmem_device_remove_all_cells(struct nvmem_device *nvmem)
{
- struct nvmem_cell *cell;
- struct list_head *p, *n;
+ struct nvmem_cell *cell, *p;
- list_for_each_safe(p, n, &nvmem_cells) {
- cell = list_entry(p, struct nvmem_cell, node);
- if (cell->nvmem == nvmem)
- nvmem_cell_drop(cell);
- }
+ list_for_each_entry_safe(cell, p, &nvmem->cells, node)
+ nvmem_cell_drop(cell);
}
static void nvmem_cell_add(struct nvmem_cell *cell)
{
- mutex_lock(&nvmem_cells_mutex);
- list_add_tail(&cell->node, &nvmem_cells);
- mutex_unlock(&nvmem_cells_mutex);
+ mutex_lock(&nvmem_mutex);
+ list_add_tail(&cell->node, &cell->nvmem->cells);
+ mutex_unlock(&nvmem_mutex);
}
/*
@@ -423,6 +417,8 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)
goto err_device_del;
}
+ INIT_LIST_HEAD(&nvmem->cells);
+
return nvmem;
err_device_del:
--
2.18.0
next prev parent reply other threads:[~2018-09-07 10:08 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-07 10:07 [PATCH v2 00/16] nvmem: rework of the subsystem for non-DT users Bartosz Golaszewski
2018-09-07 10:07 ` Bartosz Golaszewski
2018-09-07 10:07 ` [PATCH v2 01/16] nvmem: remove unused APIs Bartosz Golaszewski
2018-09-07 10:07 ` Bartosz Golaszewski
2018-09-10 7:32 ` Srinivas Kandagatla
2018-09-10 7:32 ` Srinivas Kandagatla
2018-09-10 7:58 ` Bartosz Golaszewski
2018-09-10 7:58 ` Bartosz Golaszewski
2018-09-10 8:09 ` Srinivas Kandagatla
2018-09-10 8:09 ` Srinivas Kandagatla
2018-09-10 8:43 ` Bartosz Golaszewski
2018-09-10 8:43 ` Bartosz Golaszewski
2018-09-10 9:55 ` Srinivas Kandagatla
2018-09-10 9:55 ` Srinivas Kandagatla
2018-09-10 11:31 ` Bartosz Golaszewski
2018-09-10 11:31 ` Bartosz Golaszewski
2018-09-10 11:47 ` Srinivas Kandagatla
2018-09-10 11:47 ` Srinivas Kandagatla
2018-09-10 12:18 ` Boris Brezillon
2018-09-10 12:18 ` Boris Brezillon
2018-09-10 12:22 ` Bartosz Golaszewski
2018-09-10 12:22 ` Bartosz Golaszewski
2018-09-10 13:23 ` Srinivas Kandagatla
2018-09-10 13:23 ` Srinivas Kandagatla
2018-09-07 10:07 ` Bartosz Golaszewski [this message]
2018-09-07 10:07 ` [PATCH v2 02/16] nvmem: remove the global cell list Bartosz Golaszewski
2018-09-07 10:07 ` [PATCH v2 03/16] nvmem: use kref Bartosz Golaszewski
2018-09-07 10:07 ` Bartosz Golaszewski
2018-09-07 10:07 ` [PATCH v2 04/16] nvmem: lpc18xx_eeprom: use devm_nvmem_register() Bartosz Golaszewski
2018-09-07 10:07 ` Bartosz Golaszewski
2018-09-07 10:07 ` [PATCH v2 05/16] nvmem: sunxi_sid: " Bartosz Golaszewski
2018-09-07 10:07 ` Bartosz Golaszewski
2018-09-07 10:07 ` [PATCH v2 06/16] nvmem: mxs-ocotp: " Bartosz Golaszewski
2018-09-07 10:07 ` Bartosz Golaszewski
2018-09-07 10:07 ` [PATCH v2 07/16] nvmem: change the signature of nvmem_unregister() Bartosz Golaszewski
2018-09-07 10:07 ` Bartosz Golaszewski
2018-09-10 7:33 ` Srinivas Kandagatla
2018-09-10 7:33 ` Srinivas Kandagatla
2018-09-07 10:07 ` [PATCH v2 08/16] nvmem: provide nvmem_dev_name() Bartosz Golaszewski
2018-09-07 10:07 ` Bartosz Golaszewski
2018-09-07 10:07 ` [PATCH v2 09/16] nvmem: remove the name field from struct nvmem_device Bartosz Golaszewski
2018-09-07 10:07 ` Bartosz Golaszewski
2018-09-07 10:07 ` [PATCH v2 10/16] nvmem: add a notifier chain Bartosz Golaszewski
2018-09-07 10:07 ` Bartosz Golaszewski
2018-09-07 10:07 ` [PATCH v2 11/16] nvmem: add support for cell info Bartosz Golaszewski
2018-09-07 10:07 ` Bartosz Golaszewski
2018-09-10 7:32 ` Srinivas Kandagatla
2018-09-10 7:32 ` Srinivas Kandagatla
2018-09-10 7:36 ` Boris Brezillon
2018-09-10 7:36 ` Boris Brezillon
2018-09-10 8:53 ` Srinivas Kandagatla
2018-09-10 8:53 ` Srinivas Kandagatla
2018-09-07 10:07 ` [PATCH v2 12/16] nvmem: resolve cells from DT at registration time Bartosz Golaszewski
2018-09-07 10:07 ` Bartosz Golaszewski
2018-09-07 10:07 ` [PATCH v2 13/16] nvmem: add support for cell lookups from machine code Bartosz Golaszewski
2018-09-07 10:07 ` Bartosz Golaszewski
2018-09-10 7:32 ` Srinivas Kandagatla
2018-09-10 7:32 ` Srinivas Kandagatla
2018-09-10 8:17 ` Bartosz Golaszewski
2018-09-10 8:17 ` Bartosz Golaszewski
2018-09-10 8:23 ` Boris Brezillon
2018-09-10 8:23 ` Boris Brezillon
2018-09-10 8:55 ` Srinivas Kandagatla
2018-09-10 8:55 ` Srinivas Kandagatla
2018-09-10 9:45 ` Bartosz Golaszewski
2018-09-10 9:45 ` Bartosz Golaszewski
2018-09-10 9:49 ` Boris Brezillon
2018-09-10 9:49 ` Boris Brezillon
2018-09-10 9:50 ` Srinivas Kandagatla
2018-09-10 9:50 ` Srinivas Kandagatla
2018-09-10 11:26 ` Bartosz Golaszewski
2018-09-10 11:26 ` Bartosz Golaszewski
2018-09-07 10:07 ` [PATCH v2 14/16] Documentation: nvmem: document cell tables and lookup entries Bartosz Golaszewski
2018-09-07 10:07 ` Bartosz Golaszewski
2018-09-07 10:07 ` [PATCH v2 15/16] nvmem: use SPDX license identifiers Bartosz Golaszewski
2018-09-07 10:07 ` Bartosz Golaszewski
2018-09-07 10:07 ` [PATCH v2 16/16] nvmem: make the naming of arguments in nvmem_cell_get() consistent Bartosz Golaszewski
2018-09-07 10:07 ` Bartosz Golaszewski
2018-09-10 7:54 ` [PATCH v2 00/16] nvmem: rework of the subsystem for non-DT users Srinivas Kandagatla
2018-09-10 7:54 ` Srinivas Kandagatla
2018-09-10 8:24 ` Bartosz Golaszewski
2018-09-10 8:24 ` Bartosz Golaszewski
2018-09-10 10:02 ` Srinivas Kandagatla
2018-09-10 10:02 ` Srinivas Kandagatla
2018-09-10 14:58 ` Bartosz Golaszewski
2018-09-10 14:58 ` Bartosz Golaszewski
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=20180907100750.14564-3-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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.