From: Bartosz Golaszewski <brgl@bgdev.pl>
To: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>,
Joachim Eastwood <manabian@gmail.com>,
"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>
Cc: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
Bartosz Golaszewski <bgolaszewski@baylibre.com>
Subject: [PATCH 02/13] nvmem: remove the global cell list
Date: Wed, 5 Sep 2018 11:57:27 +0200 [thread overview]
Message-ID: <20180905095738.26406-3-brgl@bgdev.pl> (raw)
In-Reply-To: <20180905095738.26406-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 02/13] nvmem: remove the global cell list
Date: Wed, 5 Sep 2018 11:57:27 +0200 [thread overview]
Message-ID: <20180905095738.26406-3-brgl@bgdev.pl> (raw)
In-Reply-To: <20180905095738.26406-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-05 9:59 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-05 9:57 [PATCH 00/13] nvmem: rework of the subsystem for non-DT users Bartosz Golaszewski
2018-09-05 9:57 ` Bartosz Golaszewski
2018-09-05 9:57 ` [PATCH 01/13] nvmem: remove unused APIs Bartosz Golaszewski
2018-09-05 9:57 ` Bartosz Golaszewski
2018-09-05 9:57 ` Bartosz Golaszewski [this message]
2018-09-05 9:57 ` [PATCH 02/13] nvmem: remove the global cell list Bartosz Golaszewski
2018-09-05 9:57 ` [PATCH 03/13] nvmem: use kref Bartosz Golaszewski
2018-09-05 9:57 ` Bartosz Golaszewski
2018-09-05 9:57 ` [PATCH 04/13] nvmem: lpc18xx_eeprom: use devm_nvmem_register() Bartosz Golaszewski
2018-09-05 9:57 ` Bartosz Golaszewski
2018-09-05 9:57 ` [PATCH 05/13] nvmem: change the signature of nvmem_unregister() Bartosz Golaszewski
2018-09-05 9:57 ` Bartosz Golaszewski
2018-09-07 4:48 ` kbuild test robot
2018-09-07 4:48 ` kbuild test robot
2018-09-07 4:57 ` kbuild test robot
2018-09-07 4:57 ` kbuild test robot
2018-09-05 9:57 ` [PATCH 06/13] nvmem: provide nvmem_dev_name() Bartosz Golaszewski
2018-09-05 9:57 ` Bartosz Golaszewski
2018-09-05 9:57 ` [PATCH 07/13] nvmem: remove the name field from struct nvmem_device Bartosz Golaszewski
2018-09-05 9:57 ` Bartosz Golaszewski
2018-09-05 9:57 ` [PATCH 08/13] nvmem: add a notifier chain Bartosz Golaszewski
2018-09-05 9:57 ` Bartosz Golaszewski
2018-09-07 5:11 ` kbuild test robot
2018-09-07 5:11 ` kbuild test robot
2018-09-05 9:57 ` [PATCH 09/13] nvmem: add support for cell info Bartosz Golaszewski
2018-09-05 9:57 ` Bartosz Golaszewski
2018-09-05 9:57 ` [PATCH 10/13] nvmem: resolve cells from DT at registration time Bartosz Golaszewski
2018-09-05 9:57 ` Bartosz Golaszewski
2018-09-05 9:57 ` [PATCH 11/13] nvmem: add support for cell lookups from machine code Bartosz Golaszewski
2018-09-05 9:57 ` Bartosz Golaszewski
2018-09-05 13:57 ` Boris Brezillon
2018-09-05 13:57 ` Boris Brezillon
2018-09-05 14:00 ` Bartosz Golaszewski
2018-09-05 14:00 ` Bartosz Golaszewski
2018-09-05 14:21 ` Boris Brezillon
2018-09-05 14:21 ` Boris Brezillon
2018-09-05 14:47 ` Bartosz Golaszewski
2018-09-05 14:47 ` Bartosz Golaszewski
2018-09-05 14:59 ` Boris Brezillon
2018-09-05 14:59 ` Boris Brezillon
2018-09-05 9:57 ` [PATCH 12/13] Documentation: nvmem: document cell tables and lookup entries Bartosz Golaszewski
2018-09-05 9:57 ` Bartosz Golaszewski
2018-09-05 9:57 ` [PATCH 13/13] nvmem: use SPDX license identifiers Bartosz Golaszewski
2018-09-05 9:57 ` 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=20180905095738.26406-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=manabian@gmail.com \
--cc=maxime.ripard@bootlin.com \
--cc=mchehab+samsung@kernel.org \
--cc=nsekhar@ti.com \
--cc=srinivas.kandagatla@linaro.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.