mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH 1/4] nvmem: sync stub return values with linux code
@ 2021-01-18 20:55 Marco Felsch
  2021-01-18 20:55 ` [PATCH 2/4] nvmem: add missing stubs Marco Felsch
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Marco Felsch @ 2021-01-18 20:55 UTC (permalink / raw)
  To: barebox

Based on linux commit:
8<------------------------------------------------------------------------
commit 20167b70c894f20cd01e2579fad206de440816ef
Author: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Date:   Fri Sep 21 06:40:22 2018 -0700

    nvmem: use EOPNOTSUPP instead of ENOSYS

    Checkpatch emits warnings when using ENOSYS. Some of the frameworks
    started using EOPNOTSUPP as return values for API functions when given
    subsystem is disabled in Kconfig.

    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8<------------------------------------------------------------------------

Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
---
 include/linux/nvmem-consumer.h | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/include/linux/nvmem-consumer.h b/include/linux/nvmem-consumer.h
index 9e0fd4265e..2f79014c0f 100644
--- a/include/linux/nvmem-consumer.h
+++ b/include/linux/nvmem-consumer.h
@@ -50,7 +50,7 @@ int nvmem_device_cell_write(struct nvmem_device *nvmem,
 static inline struct nvmem_cell *nvmem_cell_get(struct device_d *dev,
 						const char *name)
 {
-	return ERR_PTR(-ENOSYS);
+	return ERR_PTR(-EOPNOTSUPP);
 }
 
 static inline void nvmem_cell_put(struct nvmem_cell *cell)
@@ -59,26 +59,26 @@ static inline void nvmem_cell_put(struct nvmem_cell *cell)
 
 static inline char *nvmem_cell_read(struct nvmem_cell *cell, size_t *len)
 {
-	return ERR_PTR(-ENOSYS);
+	return ERR_PTR(-EOPNOTSUPP);
 }
 
 static inline void *nvmem_cell_get_and_read(struct device_node *np,
 					    const char *cell_name,
 					    size_t bytes)
 {
-	return ERR_PTR(-ENOSYS);
+	return ERR_PTR(-EOPNOTSUPP);
 }
 
 static inline int nvmem_cell_write(struct nvmem_cell *cell,
 				    const char *buf, size_t len)
 {
-	return -ENOSYS;
+	return -EOPNOTSUPP;
 }
 
 static inline struct nvmem_device *nvmem_device_get(struct device_d *dev,
 						    const char *name)
 {
-	return ERR_PTR(-ENOSYS);
+	return ERR_PTR(-EOPNOTSUPP);
 }
 
 static inline void nvmem_device_put(struct nvmem_device *nvmem)
-- 
2.20.1


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 2/4] nvmem: add missing stubs
  2021-01-18 20:55 [PATCH 1/4] nvmem: sync stub return values with linux code Marco Felsch
@ 2021-01-18 20:55 ` Marco Felsch
  2021-01-18 20:55 ` [PATCH 3/4] nvmem: make nvmem_device_write/read public Marco Felsch
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Marco Felsch @ 2021-01-18 20:55 UTC (permalink / raw)
  To: barebox

Add missing stubs for nvmem_device_cell_read/write().

Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
---
 include/linux/nvmem-consumer.h | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/include/linux/nvmem-consumer.h b/include/linux/nvmem-consumer.h
index 2f79014c0f..d86377bfda 100644
--- a/include/linux/nvmem-consumer.h
+++ b/include/linux/nvmem-consumer.h
@@ -84,6 +84,20 @@ static inline struct nvmem_device *nvmem_device_get(struct device_d *dev,
 static inline void nvmem_device_put(struct nvmem_device *nvmem)
 {
 }
+
+static inline ssize_t nvmem_device_cell_read(struct nvmem_device *nvmem,
+					 struct nvmem_cell_info *info,
+					 void *buf)
+{
+	return -EOPNOTSUPP;
+}
+
+static inline int nvmem_device_cell_write(struct nvmem_device *nvmem,
+					  struct nvmem_cell_info *info,
+					  void *buf)
+{
+	return -EOPNOTSUPP;
+}
 #endif /* CONFIG_NVMEM */
 
 #if IS_ENABLED(CONFIG_NVMEM) && IS_ENABLED(CONFIG_OFTREE)
-- 
2.20.1


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 3/4] nvmem: make nvmem_device_write/read public
  2021-01-18 20:55 [PATCH 1/4] nvmem: sync stub return values with linux code Marco Felsch
  2021-01-18 20:55 ` [PATCH 2/4] nvmem: add missing stubs Marco Felsch
@ 2021-01-18 20:55 ` Marco Felsch
  2021-01-18 20:55 ` [PATCH 4/4] nvmem: make id optional for of_nvmem_device_get() Marco Felsch
  2021-01-19 10:15 ` [PATCH 1/4] nvmem: sync stub return values with linux code Sascha Hauer
  3 siblings, 0 replies; 5+ messages in thread
From: Marco Felsch @ 2021-01-18 20:55 UTC (permalink / raw)
  To: barebox

Those functions already export their symbols so make it public
available. Compared to the nvmem_device_cell_read/write() APIs these
functions are a bit easier to use.

Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
---
 drivers/nvmem/core.c           |  6 ------
 include/linux/nvmem-consumer.h | 19 +++++++++++++++++++
 2 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
index 06e1414769..b9af31f4b5 100644
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -48,12 +48,6 @@ struct nvmem_cell {
 static LIST_HEAD(nvmem_cells);
 static LIST_HEAD(nvmem_devs);
 
-int nvmem_device_read(struct nvmem_device *nvmem, unsigned int offset,
-		      size_t bytes, void *buf);
-int nvmem_device_write(struct nvmem_device *nvmem, unsigned int offset,
-		       size_t bytes, const void *buf);
-
-
 static ssize_t nvmem_cdev_read(struct cdev *cdev, void *buf, size_t count,
 			       loff_t offset, unsigned long flags)
 {
diff --git a/include/linux/nvmem-consumer.h b/include/linux/nvmem-consumer.h
index d86377bfda..5d3d72837b 100644
--- a/include/linux/nvmem-consumer.h
+++ b/include/linux/nvmem-consumer.h
@@ -40,6 +40,10 @@ int nvmem_cell_write(struct nvmem_cell *cell, void *buf, size_t len);
 /* direct nvmem device read/write interface */
 struct nvmem_device *nvmem_device_get(struct device_d *dev, const char *name);
 void nvmem_device_put(struct nvmem_device *nvmem);
+int nvmem_device_read(struct nvmem_device *nvmem, unsigned int offset,
+		      size_t bytes, void *buf);
+int nvmem_device_write(struct nvmem_device *nvmem, unsigned int offset,
+		       size_t bytes, const void *buf);
 ssize_t nvmem_device_cell_read(struct nvmem_device *nvmem,
 			       struct nvmem_cell_info *info, void *buf);
 int nvmem_device_cell_write(struct nvmem_device *nvmem,
@@ -98,6 +102,21 @@ static inline int nvmem_device_cell_write(struct nvmem_device *nvmem,
 {
 	return -EOPNOTSUPP;
 }
+
+static inline int nvmem_device_read(struct nvmem_device *nvmem,
+				    unsigned int offset, size_t bytes,
+				    void *buf)
+{
+	return -EOPNOTSUPP;
+}
+
+static inline int nvmem_device_write(struct nvmem_device *nvmem,
+				     unsigned int offset, size_t bytes,
+				     const void *buf)
+{
+	return -EOPNOTSUPP;
+}
+
 #endif /* CONFIG_NVMEM */
 
 #if IS_ENABLED(CONFIG_NVMEM) && IS_ENABLED(CONFIG_OFTREE)
-- 
2.20.1


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 4/4] nvmem: make id optional for of_nvmem_device_get()
  2021-01-18 20:55 [PATCH 1/4] nvmem: sync stub return values with linux code Marco Felsch
  2021-01-18 20:55 ` [PATCH 2/4] nvmem: add missing stubs Marco Felsch
  2021-01-18 20:55 ` [PATCH 3/4] nvmem: make nvmem_device_write/read public Marco Felsch
@ 2021-01-18 20:55 ` Marco Felsch
  2021-01-19 10:15 ` [PATCH 1/4] nvmem: sync stub return values with linux code Sascha Hauer
  3 siblings, 0 replies; 5+ messages in thread
From: Marco Felsch @ 2021-01-18 20:55 UTC (permalink / raw)
  To: barebox

Port upstream linux commit
8<----------------------------------------------------------------------
commit d4e7fef1a9a5d2bf3f859ba9f50f4d5409a09ab0
Author: Alban Bedel <albeu@free.fr>
Date:   Mon Jan 28 15:55:03 2019 +0000

    nvmem: core: Properly handle connection ID in of_nvmem_device_get()

    of_nvmem_device_get() would crash if NULL was passed as a connection
    ID. Rework this to use the usual sementic of assuming the first
    connection when no connection ID is given.

    Furthermore of_nvmem_device_get() would return -EINVAL when it failed
    to resolve the connection, making it impossible to properly implement
    an optional connection. Return -ENOENT instead to let the caller know
    that the connection doesn't exists.

    Signed-off-by: Alban Bedel <albeu@free.fr>
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8<----------------------------------------------------------------------

Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
---
 drivers/nvmem/core.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
index b9af31f4b5..9b55f47b4c 100644
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -284,13 +284,14 @@ struct nvmem_device *of_nvmem_device_get(struct device_node *np, const char *id)
 {
 
 	struct device_node *nvmem_np;
-	int index;
+	int index = 0;
 
-	index = of_property_match_string(np, "nvmem-names", id);
+	if (id)
+		index = of_property_match_string(np, "nvmem-names", id);
 
 	nvmem_np = of_parse_phandle(np, "nvmem", index);
 	if (!nvmem_np)
-		return ERR_PTR(-EINVAL);
+		return ERR_PTR(-ENOENT);
 
 	return __nvmem_device_get(nvmem_np, NULL, NULL);
 }
-- 
2.20.1


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/4] nvmem: sync stub return values with linux code
  2021-01-18 20:55 [PATCH 1/4] nvmem: sync stub return values with linux code Marco Felsch
                   ` (2 preceding siblings ...)
  2021-01-18 20:55 ` [PATCH 4/4] nvmem: make id optional for of_nvmem_device_get() Marco Felsch
@ 2021-01-19 10:15 ` Sascha Hauer
  3 siblings, 0 replies; 5+ messages in thread
From: Sascha Hauer @ 2021-01-19 10:15 UTC (permalink / raw)
  To: Marco Felsch; +Cc: barebox

On Mon, Jan 18, 2021 at 09:55:25PM +0100, Marco Felsch wrote:
> Based on linux commit:
> 8<------------------------------------------------------------------------
> commit 20167b70c894f20cd01e2579fad206de440816ef
> Author: Bartosz Golaszewski <bgolaszewski@baylibre.com>
> Date:   Fri Sep 21 06:40:22 2018 -0700
> 
>     nvmem: use EOPNOTSUPP instead of ENOSYS
> 
>     Checkpatch emits warnings when using ENOSYS. Some of the frameworks
>     started using EOPNOTSUPP as return values for API functions when given
>     subsystem is disabled in Kconfig.
> 
>     Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
>     Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
>     Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> 8<------------------------------------------------------------------------
> 
> Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
> ---
>  include/linux/nvmem-consumer.h | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)

Applied, thanks

Sascha

> 
> diff --git a/include/linux/nvmem-consumer.h b/include/linux/nvmem-consumer.h
> index 9e0fd4265e..2f79014c0f 100644
> --- a/include/linux/nvmem-consumer.h
> +++ b/include/linux/nvmem-consumer.h
> @@ -50,7 +50,7 @@ int nvmem_device_cell_write(struct nvmem_device *nvmem,
>  static inline struct nvmem_cell *nvmem_cell_get(struct device_d *dev,
>  						const char *name)
>  {
> -	return ERR_PTR(-ENOSYS);
> +	return ERR_PTR(-EOPNOTSUPP);
>  }
>  
>  static inline void nvmem_cell_put(struct nvmem_cell *cell)
> @@ -59,26 +59,26 @@ static inline void nvmem_cell_put(struct nvmem_cell *cell)
>  
>  static inline char *nvmem_cell_read(struct nvmem_cell *cell, size_t *len)
>  {
> -	return ERR_PTR(-ENOSYS);
> +	return ERR_PTR(-EOPNOTSUPP);
>  }
>  
>  static inline void *nvmem_cell_get_and_read(struct device_node *np,
>  					    const char *cell_name,
>  					    size_t bytes)
>  {
> -	return ERR_PTR(-ENOSYS);
> +	return ERR_PTR(-EOPNOTSUPP);
>  }
>  
>  static inline int nvmem_cell_write(struct nvmem_cell *cell,
>  				    const char *buf, size_t len)
>  {
> -	return -ENOSYS;
> +	return -EOPNOTSUPP;
>  }
>  
>  static inline struct nvmem_device *nvmem_device_get(struct device_d *dev,
>  						    const char *name)
>  {
> -	return ERR_PTR(-ENOSYS);
> +	return ERR_PTR(-EOPNOTSUPP);
>  }
>  
>  static inline void nvmem_device_put(struct nvmem_device *nvmem)
> -- 
> 2.20.1
> 
> 
> _______________________________________________
> barebox mailing list
> barebox@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-01-19 10:15 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-18 20:55 [PATCH 1/4] nvmem: sync stub return values with linux code Marco Felsch
2021-01-18 20:55 ` [PATCH 2/4] nvmem: add missing stubs Marco Felsch
2021-01-18 20:55 ` [PATCH 3/4] nvmem: make nvmem_device_write/read public Marco Felsch
2021-01-18 20:55 ` [PATCH 4/4] nvmem: make id optional for of_nvmem_device_get() Marco Felsch
2021-01-19 10:15 ` [PATCH 1/4] nvmem: sync stub return values with linux code Sascha Hauer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox