mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 06:57:57 +00:00
kernel: backport of changes & helpers
This code is required for upcoming NVMEM changes. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
This commit is contained in:
parent
98b09ba250
commit
11759a5bf3
@ -0,0 +1,95 @@
|
||||
From 3637d49e11219512920aca8b8ccd0994be33fa8b Mon Sep 17 00:00:00 2001
|
||||
From: Lee Jones <lee.jones@linaro.org>
|
||||
Date: Thu, 18 Mar 2021 10:40:30 +0000
|
||||
Subject: [PATCH] of: base: Fix some formatting issues and provide missing
|
||||
descriptions
|
||||
|
||||
Fixes the following W=1 kernel build warning(s):
|
||||
|
||||
drivers/of/base.c:315: warning: Function parameter or member 'cpun' not described in '__of_find_n_match_cpu_property'
|
||||
drivers/of/base.c:315: warning: Function parameter or member 'prop_name' not described in '__of_find_n_match_cpu_property'
|
||||
drivers/of/base.c:315: warning: Function parameter or member 'cpu' not described in '__of_find_n_match_cpu_property'
|
||||
drivers/of/base.c:315: warning: Function parameter or member 'thread' not described in '__of_find_n_match_cpu_property'
|
||||
drivers/of/base.c:315: warning: expecting prototype for property holds the physical id of the(). Prototype was for __of_find_n_match_cpu_property() instead
|
||||
drivers/of/base.c:1139: warning: Function parameter or member 'match' not described in 'of_find_matching_node_and_match'
|
||||
drivers/of/base.c:1779: warning: Function parameter or member 'np' not described in '__of_add_property'
|
||||
drivers/of/base.c:1779: warning: Function parameter or member 'prop' not described in '__of_add_property'
|
||||
drivers/of/base.c:1800: warning: Function parameter or member 'np' not described in 'of_add_property'
|
||||
drivers/of/base.c:1800: warning: Function parameter or member 'prop' not described in 'of_add_property'
|
||||
drivers/of/base.c:1849: warning: Function parameter or member 'np' not described in 'of_remove_property'
|
||||
drivers/of/base.c:1849: warning: Function parameter or member 'prop' not described in 'of_remove_property'
|
||||
drivers/of/base.c:2137: warning: Function parameter or member 'dn' not described in 'of_console_check'
|
||||
drivers/of/base.c:2137: warning: Function parameter or member 'name' not described in 'of_console_check'
|
||||
drivers/of/base.c:2137: warning: Function parameter or member 'index' not described in 'of_console_check'
|
||||
|
||||
Cc: Rob Herring <robh+dt@kernel.org>
|
||||
Cc: Frank Rowand <frowand.list@gmail.com>
|
||||
Cc: "David S. Miller" <davem@davemloft.net>
|
||||
Cc: devicetree@vger.kernel.org
|
||||
Signed-off-by: Lee Jones <lee.jones@linaro.org>
|
||||
Signed-off-by: Rob Herring <robh@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20210318104036.3175910-5-lee.jones@linaro.org
|
||||
---
|
||||
drivers/of/base.c | 16 +++++++++++-----
|
||||
1 file changed, 11 insertions(+), 5 deletions(-)
|
||||
|
||||
--- a/drivers/of/base.c
|
||||
+++ b/drivers/of/base.c
|
||||
@@ -305,7 +305,7 @@ bool __weak arch_match_cpu_phys_id(int c
|
||||
return (u32)phys_id == cpu;
|
||||
}
|
||||
|
||||
-/**
|
||||
+/*
|
||||
* Checks if the given "prop_name" property holds the physical id of the
|
||||
* core/thread corresponding to the logical cpu 'cpu'. If 'thread' is not
|
||||
* NULL, local thread number within the core is returned in it.
|
||||
@@ -1128,7 +1128,7 @@ EXPORT_SYMBOL(of_match_node);
|
||||
* will; typically, you pass what the previous call
|
||||
* returned. of_node_put() will be called on it
|
||||
* @matches: array of of device match structures to search in
|
||||
- * @match Updated to point at the matches entry which matched
|
||||
+ * @match: Updated to point at the matches entry which matched
|
||||
*
|
||||
* Returns a node pointer with refcount incremented, use
|
||||
* of_node_put() on it when done.
|
||||
@@ -1779,6 +1779,8 @@ EXPORT_SYMBOL(of_count_phandle_with_args
|
||||
|
||||
/**
|
||||
* __of_add_property - Add a property to a node without lock operations
|
||||
+ * @np: Caller's Device Node
|
||||
+ * @prob: Property to add
|
||||
*/
|
||||
int __of_add_property(struct device_node *np, struct property *prop)
|
||||
{
|
||||
@@ -1800,6 +1802,8 @@ int __of_add_property(struct device_node
|
||||
|
||||
/**
|
||||
* of_add_property - Add a property to a node
|
||||
+ * @np: Caller's Device Node
|
||||
+ * @prob: Property to add
|
||||
*/
|
||||
int of_add_property(struct device_node *np, struct property *prop)
|
||||
{
|
||||
@@ -1844,6 +1848,8 @@ int __of_remove_property(struct device_n
|
||||
|
||||
/**
|
||||
* of_remove_property - Remove a property from a node.
|
||||
+ * @np: Caller's Device Node
|
||||
+ * @prob: Property to remove
|
||||
*
|
||||
* Note that we don't actually remove it, since we have given out
|
||||
* who-knows-how-many pointers to the data using get-property.
|
||||
@@ -2130,9 +2136,9 @@ EXPORT_SYMBOL_GPL(of_alias_get_highest_i
|
||||
|
||||
/**
|
||||
* of_console_check() - Test and setup console for DT setup
|
||||
- * @dn - Pointer to device node
|
||||
- * @name - Name to use for preferred console without index. ex. "ttyS"
|
||||
- * @index - Index to use for preferred console.
|
||||
+ * @dn: Pointer to device node
|
||||
+ * @name: Name to use for preferred console without index. ex. "ttyS"
|
||||
+ * @index: Index to use for preferred console.
|
||||
*
|
||||
* Check if the given device node matches the stdout-path property in the
|
||||
* /chosen node. If it does then register it as the preferred console and return
|
@ -0,0 +1,489 @@
|
||||
From 62f026f082e4d762a47b43ea693b38f025122332 Mon Sep 17 00:00:00 2001
|
||||
From: Rob Herring <robh@kernel.org>
|
||||
Date: Fri, 26 Mar 2021 13:26:06 -0600
|
||||
Subject: [PATCH] of: Fix kerneldoc output formatting
|
||||
|
||||
The indentation of the kerneldoc comments affects the output formatting.
|
||||
Leading tabs in particular don't work, sections need to be indented
|
||||
under the section header, and several code blocks are reformatted.
|
||||
|
||||
Cc: Frank Rowand <frowand.list@gmail.com>
|
||||
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
|
||||
Signed-off-by: Rob Herring <robh@kernel.org>
|
||||
Reviewed-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20210326192606.3702739-1-robh@kernel.org
|
||||
---
|
||||
drivers/of/base.c | 275 +++++++++++++++++++++++-----------------------
|
||||
drivers/of/fdt.c | 9 +-
|
||||
2 files changed, 141 insertions(+), 143 deletions(-)
|
||||
|
||||
--- a/drivers/of/base.c
|
||||
+++ b/drivers/of/base.c
|
||||
@@ -651,11 +651,11 @@ bool of_device_is_big_endian(const struc
|
||||
EXPORT_SYMBOL(of_device_is_big_endian);
|
||||
|
||||
/**
|
||||
- * of_get_parent - Get a node's parent if any
|
||||
- * @node: Node to get parent
|
||||
+ * of_get_parent - Get a node's parent if any
|
||||
+ * @node: Node to get parent
|
||||
*
|
||||
- * Returns a node pointer with refcount incremented, use
|
||||
- * of_node_put() on it when done.
|
||||
+ * Return: A node pointer with refcount incremented, use
|
||||
+ * of_node_put() on it when done.
|
||||
*/
|
||||
struct device_node *of_get_parent(const struct device_node *node)
|
||||
{
|
||||
@@ -673,15 +673,15 @@ struct device_node *of_get_parent(const
|
||||
EXPORT_SYMBOL(of_get_parent);
|
||||
|
||||
/**
|
||||
- * of_get_next_parent - Iterate to a node's parent
|
||||
- * @node: Node to get parent of
|
||||
+ * of_get_next_parent - Iterate to a node's parent
|
||||
+ * @node: Node to get parent of
|
||||
*
|
||||
- * This is like of_get_parent() except that it drops the
|
||||
- * refcount on the passed node, making it suitable for iterating
|
||||
- * through a node's parents.
|
||||
+ * This is like of_get_parent() except that it drops the
|
||||
+ * refcount on the passed node, making it suitable for iterating
|
||||
+ * through a node's parents.
|
||||
*
|
||||
- * Returns a node pointer with refcount incremented, use
|
||||
- * of_node_put() on it when done.
|
||||
+ * Return: A node pointer with refcount incremented, use
|
||||
+ * of_node_put() on it when done.
|
||||
*/
|
||||
struct device_node *of_get_next_parent(struct device_node *node)
|
||||
{
|
||||
@@ -719,13 +719,13 @@ static struct device_node *__of_get_next
|
||||
child = __of_get_next_child(parent, child))
|
||||
|
||||
/**
|
||||
- * of_get_next_child - Iterate a node childs
|
||||
- * @node: parent node
|
||||
- * @prev: previous child of the parent node, or NULL to get first
|
||||
- *
|
||||
- * Returns a node pointer with refcount incremented, use of_node_put() on
|
||||
- * it when done. Returns NULL when prev is the last child. Decrements the
|
||||
- * refcount of prev.
|
||||
+ * of_get_next_child - Iterate a node childs
|
||||
+ * @node: parent node
|
||||
+ * @prev: previous child of the parent node, or NULL to get first
|
||||
+ *
|
||||
+ * Return: A node pointer with refcount incremented, use of_node_put() on
|
||||
+ * it when done. Returns NULL when prev is the last child. Decrements the
|
||||
+ * refcount of prev.
|
||||
*/
|
||||
struct device_node *of_get_next_child(const struct device_node *node,
|
||||
struct device_node *prev)
|
||||
@@ -741,12 +741,12 @@ struct device_node *of_get_next_child(co
|
||||
EXPORT_SYMBOL(of_get_next_child);
|
||||
|
||||
/**
|
||||
- * of_get_next_available_child - Find the next available child node
|
||||
- * @node: parent node
|
||||
- * @prev: previous child of the parent node, or NULL to get first
|
||||
+ * of_get_next_available_child - Find the next available child node
|
||||
+ * @node: parent node
|
||||
+ * @prev: previous child of the parent node, or NULL to get first
|
||||
*
|
||||
- * This function is like of_get_next_child(), except that it
|
||||
- * automatically skips any disabled nodes (i.e. status = "disabled").
|
||||
+ * This function is like of_get_next_child(), except that it
|
||||
+ * automatically skips any disabled nodes (i.e. status = "disabled").
|
||||
*/
|
||||
struct device_node *of_get_next_available_child(const struct device_node *node,
|
||||
struct device_node *prev)
|
||||
@@ -772,12 +772,12 @@ struct device_node *of_get_next_availabl
|
||||
EXPORT_SYMBOL(of_get_next_available_child);
|
||||
|
||||
/**
|
||||
- * of_get_next_cpu_node - Iterate on cpu nodes
|
||||
- * @prev: previous child of the /cpus node, or NULL to get first
|
||||
+ * of_get_next_cpu_node - Iterate on cpu nodes
|
||||
+ * @prev: previous child of the /cpus node, or NULL to get first
|
||||
*
|
||||
- * Returns a cpu node pointer with refcount incremented, use of_node_put()
|
||||
- * on it when done. Returns NULL when prev is the last child. Decrements
|
||||
- * the refcount of prev.
|
||||
+ * Return: A cpu node pointer with refcount incremented, use of_node_put()
|
||||
+ * on it when done. Returns NULL when prev is the last child. Decrements
|
||||
+ * the refcount of prev.
|
||||
*/
|
||||
struct device_node *of_get_next_cpu_node(struct device_node *prev)
|
||||
{
|
||||
@@ -834,15 +834,15 @@ struct device_node *of_get_compatible_ch
|
||||
EXPORT_SYMBOL(of_get_compatible_child);
|
||||
|
||||
/**
|
||||
- * of_get_child_by_name - Find the child node by name for a given parent
|
||||
- * @node: parent node
|
||||
- * @name: child name to look for.
|
||||
- *
|
||||
- * This function looks for child node for given matching name
|
||||
- *
|
||||
- * Returns a node pointer if found, with refcount incremented, use
|
||||
- * of_node_put() on it when done.
|
||||
- * Returns NULL if node is not found.
|
||||
+ * of_get_child_by_name - Find the child node by name for a given parent
|
||||
+ * @node: parent node
|
||||
+ * @name: child name to look for.
|
||||
+ *
|
||||
+ * This function looks for child node for given matching name
|
||||
+ *
|
||||
+ * Return: A node pointer if found, with refcount incremented, use
|
||||
+ * of_node_put() on it when done.
|
||||
+ * Returns NULL if node is not found.
|
||||
*/
|
||||
struct device_node *of_get_child_by_name(const struct device_node *node,
|
||||
const char *name)
|
||||
@@ -893,22 +893,22 @@ struct device_node *__of_find_node_by_fu
|
||||
}
|
||||
|
||||
/**
|
||||
- * of_find_node_opts_by_path - Find a node matching a full OF path
|
||||
- * @path: Either the full path to match, or if the path does not
|
||||
- * start with '/', the name of a property of the /aliases
|
||||
- * node (an alias). In the case of an alias, the node
|
||||
- * matching the alias' value will be returned.
|
||||
- * @opts: Address of a pointer into which to store the start of
|
||||
- * an options string appended to the end of the path with
|
||||
- * a ':' separator.
|
||||
- *
|
||||
- * Valid paths:
|
||||
- * /foo/bar Full path
|
||||
- * foo Valid alias
|
||||
- * foo/bar Valid alias + relative path
|
||||
+ * of_find_node_opts_by_path - Find a node matching a full OF path
|
||||
+ * @path: Either the full path to match, or if the path does not
|
||||
+ * start with '/', the name of a property of the /aliases
|
||||
+ * node (an alias). In the case of an alias, the node
|
||||
+ * matching the alias' value will be returned.
|
||||
+ * @opts: Address of a pointer into which to store the start of
|
||||
+ * an options string appended to the end of the path with
|
||||
+ * a ':' separator.
|
||||
+ *
|
||||
+ * Valid paths:
|
||||
+ * * /foo/bar Full path
|
||||
+ * * foo Valid alias
|
||||
+ * * foo/bar Valid alias + relative path
|
||||
*
|
||||
- * Returns a node pointer with refcount incremented, use
|
||||
- * of_node_put() on it when done.
|
||||
+ * Return: A node pointer with refcount incremented, use
|
||||
+ * of_node_put() on it when done.
|
||||
*/
|
||||
struct device_node *of_find_node_opts_by_path(const char *path, const char **opts)
|
||||
{
|
||||
@@ -958,15 +958,15 @@ struct device_node *of_find_node_opts_by
|
||||
EXPORT_SYMBOL(of_find_node_opts_by_path);
|
||||
|
||||
/**
|
||||
- * of_find_node_by_name - Find a node by its "name" property
|
||||
- * @from: The node to start searching from or NULL; the node
|
||||
+ * of_find_node_by_name - Find a node by its "name" property
|
||||
+ * @from: The node to start searching from or NULL; the node
|
||||
* you pass will not be searched, only the next one
|
||||
* will. Typically, you pass what the previous call
|
||||
* returned. of_node_put() will be called on @from.
|
||||
- * @name: The name string to match against
|
||||
+ * @name: The name string to match against
|
||||
*
|
||||
- * Returns a node pointer with refcount incremented, use
|
||||
- * of_node_put() on it when done.
|
||||
+ * Return: A node pointer with refcount incremented, use
|
||||
+ * of_node_put() on it when done.
|
||||
*/
|
||||
struct device_node *of_find_node_by_name(struct device_node *from,
|
||||
const char *name)
|
||||
@@ -985,16 +985,16 @@ struct device_node *of_find_node_by_name
|
||||
EXPORT_SYMBOL(of_find_node_by_name);
|
||||
|
||||
/**
|
||||
- * of_find_node_by_type - Find a node by its "device_type" property
|
||||
- * @from: The node to start searching from, or NULL to start searching
|
||||
+ * of_find_node_by_type - Find a node by its "device_type" property
|
||||
+ * @from: The node to start searching from, or NULL to start searching
|
||||
* the entire device tree. The node you pass will not be
|
||||
* searched, only the next one will; typically, you pass
|
||||
* what the previous call returned. of_node_put() will be
|
||||
* called on from for you.
|
||||
- * @type: The type string to match against
|
||||
+ * @type: The type string to match against
|
||||
*
|
||||
- * Returns a node pointer with refcount incremented, use
|
||||
- * of_node_put() on it when done.
|
||||
+ * Return: A node pointer with refcount incremented, use
|
||||
+ * of_node_put() on it when done.
|
||||
*/
|
||||
struct device_node *of_find_node_by_type(struct device_node *from,
|
||||
const char *type)
|
||||
@@ -1013,18 +1013,18 @@ struct device_node *of_find_node_by_type
|
||||
EXPORT_SYMBOL(of_find_node_by_type);
|
||||
|
||||
/**
|
||||
- * of_find_compatible_node - Find a node based on type and one of the
|
||||
+ * of_find_compatible_node - Find a node based on type and one of the
|
||||
* tokens in its "compatible" property
|
||||
- * @from: The node to start searching from or NULL, the node
|
||||
- * you pass will not be searched, only the next one
|
||||
- * will; typically, you pass what the previous call
|
||||
- * returned. of_node_put() will be called on it
|
||||
- * @type: The type string to match "device_type" or NULL to ignore
|
||||
- * @compatible: The string to match to one of the tokens in the device
|
||||
- * "compatible" list.
|
||||
+ * @from: The node to start searching from or NULL, the node
|
||||
+ * you pass will not be searched, only the next one
|
||||
+ * will; typically, you pass what the previous call
|
||||
+ * returned. of_node_put() will be called on it
|
||||
+ * @type: The type string to match "device_type" or NULL to ignore
|
||||
+ * @compatible: The string to match to one of the tokens in the device
|
||||
+ * "compatible" list.
|
||||
*
|
||||
- * Returns a node pointer with refcount incremented, use
|
||||
- * of_node_put() on it when done.
|
||||
+ * Return: A node pointer with refcount incremented, use
|
||||
+ * of_node_put() on it when done.
|
||||
*/
|
||||
struct device_node *of_find_compatible_node(struct device_node *from,
|
||||
const char *type, const char *compatible)
|
||||
@@ -1044,16 +1044,16 @@ struct device_node *of_find_compatible_n
|
||||
EXPORT_SYMBOL(of_find_compatible_node);
|
||||
|
||||
/**
|
||||
- * of_find_node_with_property - Find a node which has a property with
|
||||
- * the given name.
|
||||
- * @from: The node to start searching from or NULL, the node
|
||||
- * you pass will not be searched, only the next one
|
||||
- * will; typically, you pass what the previous call
|
||||
- * returned. of_node_put() will be called on it
|
||||
- * @prop_name: The name of the property to look for.
|
||||
+ * of_find_node_with_property - Find a node which has a property with
|
||||
+ * the given name.
|
||||
+ * @from: The node to start searching from or NULL, the node
|
||||
+ * you pass will not be searched, only the next one
|
||||
+ * will; typically, you pass what the previous call
|
||||
+ * returned. of_node_put() will be called on it
|
||||
+ * @prop_name: The name of the property to look for.
|
||||
*
|
||||
- * Returns a node pointer with refcount incremented, use
|
||||
- * of_node_put() on it when done.
|
||||
+ * Return: A node pointer with refcount incremented, use
|
||||
+ * of_node_put() on it when done.
|
||||
*/
|
||||
struct device_node *of_find_node_with_property(struct device_node *from,
|
||||
const char *prop_name)
|
||||
@@ -1102,10 +1102,10 @@ const struct of_device_id *__of_match_no
|
||||
|
||||
/**
|
||||
* of_match_node - Tell if a device_node has a matching of_match structure
|
||||
- * @matches: array of of device match structures to search in
|
||||
- * @node: the of device structure to match against
|
||||
+ * @matches: array of of device match structures to search in
|
||||
+ * @node: the of device structure to match against
|
||||
*
|
||||
- * Low level utility function used by device matching.
|
||||
+ * Low level utility function used by device matching.
|
||||
*/
|
||||
const struct of_device_id *of_match_node(const struct of_device_id *matches,
|
||||
const struct device_node *node)
|
||||
@@ -1121,17 +1121,17 @@ const struct of_device_id *of_match_node
|
||||
EXPORT_SYMBOL(of_match_node);
|
||||
|
||||
/**
|
||||
- * of_find_matching_node_and_match - Find a node based on an of_device_id
|
||||
- * match table.
|
||||
- * @from: The node to start searching from or NULL, the node
|
||||
- * you pass will not be searched, only the next one
|
||||
- * will; typically, you pass what the previous call
|
||||
- * returned. of_node_put() will be called on it
|
||||
- * @matches: array of of device match structures to search in
|
||||
- * @match: Updated to point at the matches entry which matched
|
||||
+ * of_find_matching_node_and_match - Find a node based on an of_device_id
|
||||
+ * match table.
|
||||
+ * @from: The node to start searching from or NULL, the node
|
||||
+ * you pass will not be searched, only the next one
|
||||
+ * will; typically, you pass what the previous call
|
||||
+ * returned. of_node_put() will be called on it
|
||||
+ * @matches: array of of device match structures to search in
|
||||
+ * @match: Updated to point at the matches entry which matched
|
||||
*
|
||||
- * Returns a node pointer with refcount incremented, use
|
||||
- * of_node_put() on it when done.
|
||||
+ * Return: A node pointer with refcount incremented, use
|
||||
+ * of_node_put() on it when done.
|
||||
*/
|
||||
struct device_node *of_find_matching_node_and_match(struct device_node *from,
|
||||
const struct of_device_id *matches,
|
||||
@@ -1465,21 +1465,21 @@ EXPORT_SYMBOL(of_parse_phandle);
|
||||
* Caller is responsible to call of_node_put() on the returned out_args->np
|
||||
* pointer.
|
||||
*
|
||||
- * Example:
|
||||
+ * Example::
|
||||
*
|
||||
- * phandle1: node1 {
|
||||
+ * phandle1: node1 {
|
||||
* #list-cells = <2>;
|
||||
- * }
|
||||
+ * };
|
||||
*
|
||||
- * phandle2: node2 {
|
||||
+ * phandle2: node2 {
|
||||
* #list-cells = <1>;
|
||||
- * }
|
||||
+ * };
|
||||
*
|
||||
- * node3 {
|
||||
+ * node3 {
|
||||
* list = <&phandle1 1 2 &phandle2 3>;
|
||||
- * }
|
||||
+ * };
|
||||
*
|
||||
- * To get a device_node of the `node2' node you may call this:
|
||||
+ * To get a device_node of the ``node2`` node you may call this:
|
||||
* of_parse_phandle_with_args(node3, "list", "#list-cells", 1, &args);
|
||||
*/
|
||||
int of_parse_phandle_with_args(const struct device_node *np, const char *list_name,
|
||||
@@ -1517,29 +1517,29 @@ EXPORT_SYMBOL(of_parse_phandle_with_args
|
||||
* Caller is responsible to call of_node_put() on the returned out_args->np
|
||||
* pointer.
|
||||
*
|
||||
- * Example:
|
||||
- *
|
||||
- * phandle1: node1 {
|
||||
- * #list-cells = <2>;
|
||||
- * }
|
||||
- *
|
||||
- * phandle2: node2 {
|
||||
- * #list-cells = <1>;
|
||||
- * }
|
||||
+ * Example::
|
||||
*
|
||||
- * phandle3: node3 {
|
||||
- * #list-cells = <1>;
|
||||
- * list-map = <0 &phandle2 3>,
|
||||
- * <1 &phandle2 2>,
|
||||
- * <2 &phandle1 5 1>;
|
||||
- * list-map-mask = <0x3>;
|
||||
- * };
|
||||
- *
|
||||
- * node4 {
|
||||
- * list = <&phandle1 1 2 &phandle3 0>;
|
||||
- * }
|
||||
+ * phandle1: node1 {
|
||||
+ * #list-cells = <2>;
|
||||
+ * };
|
||||
+ *
|
||||
+ * phandle2: node2 {
|
||||
+ * #list-cells = <1>;
|
||||
+ * };
|
||||
+ *
|
||||
+ * phandle3: node3 {
|
||||
+ * #list-cells = <1>;
|
||||
+ * list-map = <0 &phandle2 3>,
|
||||
+ * <1 &phandle2 2>,
|
||||
+ * <2 &phandle1 5 1>;
|
||||
+ * list-map-mask = <0x3>;
|
||||
+ * };
|
||||
+ *
|
||||
+ * node4 {
|
||||
+ * list = <&phandle1 1 2 &phandle3 0>;
|
||||
+ * };
|
||||
*
|
||||
- * To get a device_node of the `node2' node you may call this:
|
||||
+ * To get a device_node of the ``node2`` node you may call this:
|
||||
* of_parse_phandle_with_args(node4, "list", "list", 1, &args);
|
||||
*/
|
||||
int of_parse_phandle_with_args_map(const struct device_node *np,
|
||||
@@ -1699,19 +1699,19 @@ EXPORT_SYMBOL(of_parse_phandle_with_args
|
||||
* Caller is responsible to call of_node_put() on the returned out_args->np
|
||||
* pointer.
|
||||
*
|
||||
- * Example:
|
||||
+ * Example::
|
||||
*
|
||||
- * phandle1: node1 {
|
||||
- * }
|
||||
+ * phandle1: node1 {
|
||||
+ * };
|
||||
*
|
||||
- * phandle2: node2 {
|
||||
- * }
|
||||
+ * phandle2: node2 {
|
||||
+ * };
|
||||
*
|
||||
- * node3 {
|
||||
- * list = <&phandle1 0 2 &phandle2 2 3>;
|
||||
- * }
|
||||
+ * node3 {
|
||||
+ * list = <&phandle1 0 2 &phandle2 2 3>;
|
||||
+ * };
|
||||
*
|
||||
- * To get a device_node of the `node2' node you may call this:
|
||||
+ * To get a device_node of the ``node2`` node you may call this:
|
||||
* of_parse_phandle_with_fixed_args(node3, "list", 2, 1, &args);
|
||||
*/
|
||||
int of_parse_phandle_with_fixed_args(const struct device_node *np,
|
||||
@@ -1957,13 +1957,12 @@ static void of_alias_add(struct alias_pr
|
||||
|
||||
/**
|
||||
* of_alias_scan - Scan all properties of the 'aliases' node
|
||||
+ * @dt_alloc: An allocator that provides a virtual address to memory
|
||||
+ * for storing the resulting tree
|
||||
*
|
||||
* The function scans all the properties of the 'aliases' node and populates
|
||||
* the global lookup table with the properties. It returns the
|
||||
* number of alias properties found, or an error code in case of failure.
|
||||
- *
|
||||
- * @dt_alloc: An allocator that provides a virtual address to memory
|
||||
- * for storing the resulting tree
|
||||
*/
|
||||
void of_alias_scan(void * (*dt_alloc)(u64 size, u64 align))
|
||||
{
|
||||
@@ -2158,12 +2157,12 @@ bool of_console_check(struct device_node
|
||||
EXPORT_SYMBOL_GPL(of_console_check);
|
||||
|
||||
/**
|
||||
- * of_find_next_cache_node - Find a node's subsidiary cache
|
||||
- * @np: node of type "cpu" or "cache"
|
||||
+ * of_find_next_cache_node - Find a node's subsidiary cache
|
||||
+ * @np: node of type "cpu" or "cache"
|
||||
*
|
||||
- * Returns a node pointer with refcount incremented, use
|
||||
- * of_node_put() on it when done. Caller should hold a reference
|
||||
- * to np.
|
||||
+ * Return: A node pointer with refcount incremented, use
|
||||
+ * of_node_put() on it when done. Caller should hold a reference
|
||||
+ * to np.
|
||||
*/
|
||||
struct device_node *of_find_next_cache_node(const struct device_node *np)
|
||||
{
|
||||
--- a/drivers/of/fdt.c
|
||||
+++ b/drivers/of/fdt.c
|
||||
@@ -349,11 +349,6 @@ static int unflatten_dt_nodes(const void
|
||||
|
||||
/**
|
||||
* __unflatten_device_tree - create tree of device_nodes from flat blob
|
||||
- *
|
||||
- * unflattens a device-tree, creating the
|
||||
- * tree of struct device_node. It also fills the "name" and "type"
|
||||
- * pointers of the nodes so the normal device-tree walking functions
|
||||
- * can be used.
|
||||
* @blob: The blob to expand
|
||||
* @dad: Parent device node
|
||||
* @mynodes: The device_node tree created by the call
|
||||
@@ -361,6 +356,10 @@ static int unflatten_dt_nodes(const void
|
||||
* for the resulting tree
|
||||
* @detached: if true set OF_DETACHED on @mynodes
|
||||
*
|
||||
+ * unflattens a device-tree, creating the tree of struct device_node. It also
|
||||
+ * fills the "name" and "type" pointers of the nodes so the normal device-tree
|
||||
+ * walking functions can be used.
|
||||
+ *
|
||||
* Returns NULL on failure or the memory chunk containing the unflattened
|
||||
* device tree on success.
|
||||
*/
|
@ -0,0 +1,787 @@
|
||||
From 8c8239c2c1fb82f171cb22a707f3bb88a2f22109 Mon Sep 17 00:00:00 2001
|
||||
From: Rob Herring <robh@kernel.org>
|
||||
Date: Thu, 25 Mar 2021 10:47:12 -0600
|
||||
Subject: [PATCH] of: Add missing 'Return' section in kerneldoc comments
|
||||
|
||||
Many of the DT kerneldoc comments are lacking a 'Return' section. Let's
|
||||
add the section in cases we have a description of return values. There's
|
||||
still some cases where the return values are not documented.
|
||||
|
||||
Cc: Frank Rowand <frowand.list@gmail.com>
|
||||
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
|
||||
Signed-off-by: Rob Herring <robh@kernel.org>
|
||||
Reviewed-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20210325164713.1296407-8-robh@kernel.org
|
||||
---
|
||||
drivers/of/base.c | 39 +++++++++++++------------
|
||||
drivers/of/dynamic.c | 19 ++++++++-----
|
||||
drivers/of/fdt.c | 8 +++---
|
||||
drivers/of/irq.c | 14 ++++-----
|
||||
drivers/of/overlay.c | 16 +++++------
|
||||
drivers/of/platform.c | 10 +++----
|
||||
drivers/of/property.c | 66 +++++++++++++++++++++++++++----------------
|
||||
include/linux/of.h | 63 ++++++++++++++++++++++++++---------------
|
||||
8 files changed, 140 insertions(+), 95 deletions(-)
|
||||
|
||||
--- a/drivers/of/base.c
|
||||
+++ b/drivers/of/base.c
|
||||
@@ -244,7 +244,7 @@ struct device_node *__of_find_all_nodes(
|
||||
* @prev: Previous node or NULL to start iteration
|
||||
* of_node_put() will be called on it
|
||||
*
|
||||
- * Returns a node pointer with refcount incremented, use
|
||||
+ * Return: A node pointer with refcount incremented, use
|
||||
* of_node_put() on it when done.
|
||||
*/
|
||||
struct device_node *of_find_all_nodes(struct device_node *prev)
|
||||
@@ -374,7 +374,7 @@ bool __weak arch_find_n_match_cpu_physic
|
||||
* before booting secondary cores. This function uses arch_match_cpu_phys_id
|
||||
* which can be overridden by architecture specific implementation.
|
||||
*
|
||||
- * Returns a node pointer for the logical cpu with refcount incremented, use
|
||||
+ * Return: A node pointer for the logical cpu with refcount incremented, use
|
||||
* of_node_put() on it when done. Returns NULL if not found.
|
||||
*/
|
||||
struct device_node *of_get_cpu_node(int cpu, unsigned int *thread)
|
||||
@@ -394,8 +394,8 @@ EXPORT_SYMBOL(of_get_cpu_node);
|
||||
*
|
||||
* @cpu_node: Pointer to the device_node for CPU.
|
||||
*
|
||||
- * Returns the logical CPU number of the given CPU device_node.
|
||||
- * Returns -ENODEV if the CPU is not found.
|
||||
+ * Return: The logical CPU number of the given CPU device_node or -ENODEV if the
|
||||
+ * CPU is not found.
|
||||
*/
|
||||
int of_cpu_node_to_id(struct device_node *cpu_node)
|
||||
{
|
||||
@@ -427,7 +427,7 @@ EXPORT_SYMBOL(of_cpu_node_to_id);
|
||||
* bindings. This function check for both and returns the idle state node for
|
||||
* the requested index.
|
||||
*
|
||||
- * In case an idle state node is found at @index, the refcount is incremented
|
||||
+ * Return: An idle state node if found at @index. The refcount is incremented
|
||||
* for it, so call of_node_put() on it when done. Returns NULL if not found.
|
||||
*/
|
||||
struct device_node *of_get_cpu_state_node(struct device_node *cpu_node,
|
||||
@@ -561,7 +561,7 @@ int of_device_compatible_match(struct de
|
||||
* of_machine_is_compatible - Test root of device tree for a given compatible value
|
||||
* @compat: compatible string to look for in root node's compatible property.
|
||||
*
|
||||
- * Returns a positive integer if the root node has the given value in its
|
||||
+ * Return: A positive integer if the root node has the given value in its
|
||||
* compatible property.
|
||||
*/
|
||||
int of_machine_is_compatible(const char *compat)
|
||||
@@ -583,7 +583,7 @@ EXPORT_SYMBOL(of_machine_is_compatible);
|
||||
*
|
||||
* @device: Node to check for availability, with locks already held
|
||||
*
|
||||
- * Returns true if the status property is absent or set to "okay" or "ok",
|
||||
+ * Return: True if the status property is absent or set to "okay" or "ok",
|
||||
* false otherwise
|
||||
*/
|
||||
static bool __of_device_is_available(const struct device_node *device)
|
||||
@@ -611,7 +611,7 @@ static bool __of_device_is_available(con
|
||||
*
|
||||
* @device: Node to check for availability
|
||||
*
|
||||
- * Returns true if the status property is absent or set to "okay" or "ok",
|
||||
+ * Return: True if the status property is absent or set to "okay" or "ok",
|
||||
* false otherwise
|
||||
*/
|
||||
bool of_device_is_available(const struct device_node *device)
|
||||
@@ -632,7 +632,7 @@ EXPORT_SYMBOL(of_device_is_available);
|
||||
*
|
||||
* @device: Node to check for endianness
|
||||
*
|
||||
- * Returns true if the device has a "big-endian" property, or if the kernel
|
||||
+ * Return: True if the device has a "big-endian" property, or if the kernel
|
||||
* was compiled for BE *and* the device has a "native-endian" property.
|
||||
* Returns false otherwise.
|
||||
*
|
||||
@@ -816,7 +816,7 @@ EXPORT_SYMBOL(of_get_next_cpu_node);
|
||||
* Lookup child node whose compatible property contains the given compatible
|
||||
* string.
|
||||
*
|
||||
- * Returns a node pointer with refcount incremented, use of_node_put() on it
|
||||
+ * Return: a node pointer with refcount incremented, use of_node_put() on it
|
||||
* when done; or NULL if not found.
|
||||
*/
|
||||
struct device_node *of_get_compatible_child(const struct device_node *parent,
|
||||
@@ -1170,7 +1170,7 @@ EXPORT_SYMBOL(of_find_matching_node_and_
|
||||
* It does this by stripping the manufacturer prefix (as delimited by a ',')
|
||||
* from the first entry in the compatible list property.
|
||||
*
|
||||
- * This routine returns 0 on success, <0 on failure.
|
||||
+ * Return: This routine returns 0 on success, <0 on failure.
|
||||
*/
|
||||
int of_modalias_node(struct device_node *node, char *modalias, int len)
|
||||
{
|
||||
@@ -1190,7 +1190,7 @@ EXPORT_SYMBOL_GPL(of_modalias_node);
|
||||
* of_find_node_by_phandle - Find a node given a phandle
|
||||
* @handle: phandle of the node to find
|
||||
*
|
||||
- * Returns a node pointer with refcount incremented, use
|
||||
+ * Return: A node pointer with refcount incremented, use
|
||||
* of_node_put() on it when done.
|
||||
*/
|
||||
struct device_node *of_find_node_by_phandle(phandle handle)
|
||||
@@ -1431,7 +1431,7 @@ static int __of_parse_phandle_with_args(
|
||||
* @index: For properties holding a table of phandles, this is the index into
|
||||
* the table
|
||||
*
|
||||
- * Returns the device_node pointer with refcount incremented. Use
|
||||
+ * Return: The device_node pointer with refcount incremented. Use
|
||||
* of_node_put() on it when done.
|
||||
*/
|
||||
struct device_node *of_parse_phandle(const struct device_node *np,
|
||||
@@ -1731,7 +1731,7 @@ EXPORT_SYMBOL(of_parse_phandle_with_fixe
|
||||
* @list_name: property name that contains a list
|
||||
* @cells_name: property name that specifies phandles' arguments count
|
||||
*
|
||||
- * Returns the number of phandle + argument tuples within a property. It
|
||||
+ * Return: The number of phandle + argument tuples within a property. It
|
||||
* is a typical pattern to encode a list of phandle and variable
|
||||
* arguments into a single property. The number of arguments is encoded
|
||||
* by a property in the phandle-target node. For example, a gpios
|
||||
@@ -2031,7 +2031,9 @@ void of_alias_scan(void * (*dt_alloc)(u6
|
||||
* @stem: Alias stem of the given device_node
|
||||
*
|
||||
* The function travels the lookup table to get the alias id for the given
|
||||
- * device_node and alias stem. It returns the alias id if found.
|
||||
+ * device_node and alias stem.
|
||||
+ *
|
||||
+ * Return: The alias id if found.
|
||||
*/
|
||||
int of_alias_get_id(struct device_node *np, const char *stem)
|
||||
{
|
||||
@@ -2140,8 +2142,9 @@ EXPORT_SYMBOL_GPL(of_alias_get_highest_i
|
||||
* @index: Index to use for preferred console.
|
||||
*
|
||||
* Check if the given device node matches the stdout-path property in the
|
||||
- * /chosen node. If it does then register it as the preferred console and return
|
||||
- * TRUE. Otherwise return FALSE.
|
||||
+ * /chosen node. If it does then register it as the preferred console.
|
||||
+ *
|
||||
+ * Return: TRUE if console successfully setup. Otherwise return FALSE.
|
||||
*/
|
||||
bool of_console_check(struct device_node *dn, char *name, int index)
|
||||
{
|
||||
@@ -2192,7 +2195,7 @@ struct device_node *of_find_next_cache_n
|
||||
*
|
||||
* @cpu: cpu number(logical index) for which the last cache level is needed
|
||||
*
|
||||
- * Returns the the level at which the last cache is present. It is exactly
|
||||
+ * Return: The the level at which the last cache is present. It is exactly
|
||||
* same as the total number of cache levels for the given logical cpu.
|
||||
*/
|
||||
int of_find_last_cache_level(unsigned int cpu)
|
||||
--- a/drivers/of/dynamic.c
|
||||
+++ b/drivers/of/dynamic.c
|
||||
@@ -27,7 +27,7 @@ static struct device_node *kobj_to_devic
|
||||
* @node: Node to inc refcount, NULL is supported to simplify writing of
|
||||
* callers
|
||||
*
|
||||
- * Returns node.
|
||||
+ * Return: The node with refcount incremented.
|
||||
*/
|
||||
struct device_node *of_node_get(struct device_node *node)
|
||||
{
|
||||
@@ -104,7 +104,8 @@ int of_reconfig_notify(unsigned long act
|
||||
* @arg - argument of the of notifier
|
||||
*
|
||||
* Returns the new state of a device based on the notifier used.
|
||||
- * Returns 0 on device going from enabled to disabled, 1 on device
|
||||
+ *
|
||||
+ * Return: 0 on device going from enabled to disabled, 1 on device
|
||||
* going from disabled to enabled and -1 on no change.
|
||||
*/
|
||||
int of_reconfig_get_state_change(unsigned long action, struct of_reconfig_data *pr)
|
||||
@@ -371,7 +372,8 @@ void of_node_release(struct kobject *kob
|
||||
* property structure and the property name & contents. The property's
|
||||
* flags have the OF_DYNAMIC bit set so that we can differentiate between
|
||||
* dynamically allocated properties and not.
|
||||
- * Returns the newly allocated property or NULL on out of memory error.
|
||||
+ *
|
||||
+ * Return: The newly allocated property or NULL on out of memory error.
|
||||
*/
|
||||
struct property *__of_prop_dup(const struct property *prop, gfp_t allocflags)
|
||||
{
|
||||
@@ -414,7 +416,7 @@ struct property *__of_prop_dup(const str
|
||||
* another node. The node data are dynamically allocated and all the node
|
||||
* flags have the OF_DYNAMIC & OF_DETACHED bits set.
|
||||
*
|
||||
- * Returns the newly allocated node or NULL on out of memory error.
|
||||
+ * Return: The newly allocated node or NULL on out of memory error.
|
||||
*/
|
||||
struct device_node *__of_node_dup(const struct device_node *np,
|
||||
const char *full_name)
|
||||
@@ -780,7 +782,8 @@ static int __of_changeset_apply(struct o
|
||||
* Any side-effects of live tree state changes are applied here on
|
||||
* success, like creation/destruction of devices and side-effects
|
||||
* like creation of sysfs properties and directories.
|
||||
- * Returns 0 on success, a negative error value in case of an error.
|
||||
+ *
|
||||
+ * Return: 0 on success, a negative error value in case of an error.
|
||||
* On error the partially applied effects are reverted.
|
||||
*/
|
||||
int of_changeset_apply(struct of_changeset *ocs)
|
||||
@@ -874,7 +877,8 @@ static int __of_changeset_revert(struct
|
||||
* was before the application.
|
||||
* Any side-effects like creation/destruction of devices and
|
||||
* removal of sysfs properties and directories are applied.
|
||||
- * Returns 0 on success, a negative error value in case of an error.
|
||||
+ *
|
||||
+ * Return: 0 on success, a negative error value in case of an error.
|
||||
*/
|
||||
int of_changeset_revert(struct of_changeset *ocs)
|
||||
{
|
||||
@@ -902,7 +906,8 @@ EXPORT_SYMBOL_GPL(of_changeset_revert);
|
||||
* + OF_RECONFIG_ADD_PROPERTY
|
||||
* + OF_RECONFIG_REMOVE_PROPERTY,
|
||||
* + OF_RECONFIG_UPDATE_PROPERTY
|
||||
- * Returns 0 on success, a negative error value in case of an error.
|
||||
+ *
|
||||
+ * Return: 0 on success, a negative error value in case of an error.
|
||||
*/
|
||||
int of_changeset_action(struct of_changeset *ocs, unsigned long action,
|
||||
struct device_node *np, struct property *prop)
|
||||
--- a/drivers/of/fdt.c
|
||||
+++ b/drivers/of/fdt.c
|
||||
@@ -282,7 +282,7 @@ static void reverse_nodes(struct device_
|
||||
* @dad: Parent struct device_node
|
||||
* @nodepp: The device_node tree created by the call
|
||||
*
|
||||
- * It returns the size of unflattened device tree or error code
|
||||
+ * Return: The size of unflattened device tree or error code
|
||||
*/
|
||||
static int unflatten_dt_nodes(const void *blob,
|
||||
void *mem,
|
||||
@@ -360,7 +360,7 @@ static int unflatten_dt_nodes(const void
|
||||
* fills the "name" and "type" pointers of the nodes so the normal device-tree
|
||||
* walking functions can be used.
|
||||
*
|
||||
- * Returns NULL on failure or the memory chunk containing the unflattened
|
||||
+ * Return: NULL on failure or the memory chunk containing the unflattened
|
||||
* device tree on success.
|
||||
*/
|
||||
void *__unflatten_device_tree(const void *blob,
|
||||
@@ -441,7 +441,7 @@ static DEFINE_MUTEX(of_fdt_unflatten_mut
|
||||
* pointers of the nodes so the normal device-tree walking functions
|
||||
* can be used.
|
||||
*
|
||||
- * Returns NULL on failure or the memory chunk containing the unflattened
|
||||
+ * Return: NULL on failure or the memory chunk containing the unflattened
|
||||
* device tree on success.
|
||||
*/
|
||||
void *of_fdt_unflatten_tree(const unsigned long *blob,
|
||||
@@ -715,7 +715,7 @@ const void *__init of_get_flat_dt_prop(u
|
||||
* @node: node to test
|
||||
* @compat: compatible string to compare with compatible list.
|
||||
*
|
||||
- * On match, returns a non-zero value with smaller values returned for more
|
||||
+ * Return: a non-zero value on match with smaller values returned for more
|
||||
* specific compatible values.
|
||||
*/
|
||||
static int of_fdt_is_compatible(const void *blob,
|
||||
--- a/drivers/of/irq.c
|
||||
+++ b/drivers/of/irq.c
|
||||
@@ -48,7 +48,7 @@ EXPORT_SYMBOL_GPL(irq_of_parse_and_map);
|
||||
* of_irq_find_parent - Given a device node, find its interrupt parent node
|
||||
* @child: pointer to device node
|
||||
*
|
||||
- * Returns a pointer to the interrupt parent node, or NULL if the interrupt
|
||||
+ * Return: A pointer to the interrupt parent node, or NULL if the interrupt
|
||||
* parent could not be determined.
|
||||
*/
|
||||
struct device_node *of_irq_find_parent(struct device_node *child)
|
||||
@@ -81,14 +81,14 @@ EXPORT_SYMBOL_GPL(of_irq_find_parent);
|
||||
* @addr: address specifier (start of "reg" property of the device) in be32 format
|
||||
* @out_irq: structure of_phandle_args updated by this function
|
||||
*
|
||||
- * Returns 0 on success and a negative number on error
|
||||
- *
|
||||
* This function is a low-level interrupt tree walking function. It
|
||||
* can be used to do a partial walk with synthetized reg and interrupts
|
||||
* properties, for example when resolving PCI interrupts when no device
|
||||
* node exist for the parent. It takes an interrupt specifier structure as
|
||||
* input, walks the tree looking for any interrupt-map properties, translates
|
||||
* the specifier for each map, and then returns the translated map.
|
||||
+ *
|
||||
+ * Return: 0 on success and a negative number on error
|
||||
*/
|
||||
int of_irq_parse_raw(const __be32 *addr, struct of_phandle_args *out_irq)
|
||||
{
|
||||
@@ -380,7 +380,7 @@ EXPORT_SYMBOL_GPL(of_irq_to_resource);
|
||||
* @dev: pointer to device tree node
|
||||
* @index: zero-based index of the IRQ
|
||||
*
|
||||
- * Returns Linux IRQ number on success, or 0 on the IRQ mapping failure, or
|
||||
+ * Return: Linux IRQ number on success, or 0 on the IRQ mapping failure, or
|
||||
* -EPROBE_DEFER if the IRQ domain is not yet created, or error code in case
|
||||
* of any other failure.
|
||||
*/
|
||||
@@ -407,7 +407,7 @@ EXPORT_SYMBOL_GPL(of_irq_get);
|
||||
* @dev: pointer to device tree node
|
||||
* @name: IRQ name
|
||||
*
|
||||
- * Returns Linux IRQ number on success, or 0 on the IRQ mapping failure, or
|
||||
+ * Return: Linux IRQ number on success, or 0 on the IRQ mapping failure, or
|
||||
* -EPROBE_DEFER if the IRQ domain is not yet created, or error code in case
|
||||
* of any other failure.
|
||||
*/
|
||||
@@ -447,7 +447,7 @@ int of_irq_count(struct device_node *dev
|
||||
* @res: array of resources to fill in
|
||||
* @nr_irqs: the number of IRQs (and upper bound for num of @res elements)
|
||||
*
|
||||
- * Returns the size of the filled in table (up to @nr_irqs).
|
||||
+ * Return: The size of the filled in table (up to @nr_irqs).
|
||||
*/
|
||||
int of_irq_to_resource_table(struct device_node *dev, struct resource *res,
|
||||
int nr_irqs)
|
||||
@@ -602,7 +602,7 @@ static u32 __of_msi_map_id(struct device
|
||||
* Walk up the device hierarchy looking for devices with a "msi-map"
|
||||
* property. If found, apply the mapping to @id_in.
|
||||
*
|
||||
- * Returns the mapped MSI ID.
|
||||
+ * Return: The mapped MSI ID.
|
||||
*/
|
||||
u32 of_msi_map_id(struct device *dev, struct device_node *msi_np, u32 id_in)
|
||||
{
|
||||
--- a/drivers/of/overlay.c
|
||||
+++ b/drivers/of/overlay.c
|
||||
@@ -296,7 +296,7 @@ err_free_target_path:
|
||||
*
|
||||
* Update of property in symbols node is not allowed.
|
||||
*
|
||||
- * Returns 0 on success, -ENOMEM if memory allocation failure, or -EINVAL if
|
||||
+ * Return: 0 on success, -ENOMEM if memory allocation failure, or -EINVAL if
|
||||
* invalid @overlay.
|
||||
*/
|
||||
static int add_changeset_property(struct overlay_changeset *ovcs,
|
||||
@@ -401,7 +401,7 @@ static int add_changeset_property(struct
|
||||
*
|
||||
* NOTE_2: Multiple mods of created nodes not supported.
|
||||
*
|
||||
- * Returns 0 on success, -ENOMEM if memory allocation failure, or -EINVAL if
|
||||
+ * Return: 0 on success, -ENOMEM if memory allocation failure, or -EINVAL if
|
||||
* invalid @overlay.
|
||||
*/
|
||||
static int add_changeset_node(struct overlay_changeset *ovcs,
|
||||
@@ -473,7 +473,7 @@ static int add_changeset_node(struct ove
|
||||
*
|
||||
* Do not allow symbols node to have any children.
|
||||
*
|
||||
- * Returns 0 on success, -ENOMEM if memory allocation failure, or -EINVAL if
|
||||
+ * Return: 0 on success, -ENOMEM if memory allocation failure, or -EINVAL if
|
||||
* invalid @overlay_node.
|
||||
*/
|
||||
static int build_changeset_next_level(struct overlay_changeset *ovcs,
|
||||
@@ -604,7 +604,7 @@ static int find_dup_cset_prop(struct ove
|
||||
* the same node or duplicate {add, delete, or update} properties entries
|
||||
* for the same property.
|
||||
*
|
||||
- * Returns 0 on success, or -EINVAL if duplicate changeset entry found.
|
||||
+ * Return: 0 on success, or -EINVAL if duplicate changeset entry found.
|
||||
*/
|
||||
static int changeset_dup_entry_check(struct overlay_changeset *ovcs)
|
||||
{
|
||||
@@ -628,7 +628,7 @@ static int changeset_dup_entry_check(str
|
||||
* any portions of the changeset that were successfully created will remain
|
||||
* in @ovcs->cset.
|
||||
*
|
||||
- * Returns 0 on success, -ENOMEM if memory allocation failure, or -EINVAL if
|
||||
+ * Return: 0 on success, -ENOMEM if memory allocation failure, or -EINVAL if
|
||||
* invalid overlay in @ovcs->fragments[].
|
||||
*/
|
||||
static int build_changeset(struct overlay_changeset *ovcs)
|
||||
@@ -724,7 +724,7 @@ static struct device_node *find_target(s
|
||||
* the top level of @tree. The relevant top level nodes are the fragment
|
||||
* nodes and the __symbols__ node. Any other top level node will be ignored.
|
||||
*
|
||||
- * Returns 0 on success, -ENOMEM if memory allocation failure, -EINVAL if error
|
||||
+ * Return: 0 on success, -ENOMEM if memory allocation failure, -EINVAL if error
|
||||
* detected in @tree, or -ENOSPC if idr_alloc() error.
|
||||
*/
|
||||
static int init_overlay_changeset(struct overlay_changeset *ovcs,
|
||||
@@ -1179,7 +1179,7 @@ static int overlay_removal_is_ok(struct
|
||||
* If an error is returned by an overlay changeset post-remove notifier
|
||||
* then no further overlay changeset post-remove notifier will be called.
|
||||
*
|
||||
- * Returns 0 on success, or a negative error number. *ovcs_id is set to
|
||||
+ * Return: 0 on success, or a negative error number. *ovcs_id is set to
|
||||
* zero after reverting the changeset, even if a subsequent error occurs.
|
||||
*/
|
||||
int of_overlay_remove(int *ovcs_id)
|
||||
@@ -1257,7 +1257,7 @@ EXPORT_SYMBOL_GPL(of_overlay_remove);
|
||||
*
|
||||
* Removes all overlays from the system in the correct order.
|
||||
*
|
||||
- * Returns 0 on success, or a negative error number
|
||||
+ * Return: 0 on success, or a negative error number
|
||||
*/
|
||||
int of_overlay_remove_all(void)
|
||||
{
|
||||
--- a/drivers/of/platform.c
|
||||
+++ b/drivers/of/platform.c
|
||||
@@ -44,7 +44,7 @@ static const struct of_device_id of_skip
|
||||
* Takes a reference to the embedded struct device which needs to be dropped
|
||||
* after use.
|
||||
*
|
||||
- * Returns platform_device pointer, or NULL if not found
|
||||
+ * Return: platform_device pointer, or NULL if not found
|
||||
*/
|
||||
struct platform_device *of_find_device_by_node(struct device_node *np)
|
||||
{
|
||||
@@ -160,7 +160,7 @@ EXPORT_SYMBOL(of_device_alloc);
|
||||
* @platform_data: pointer to populate platform_data pointer with
|
||||
* @parent: Linux device model parent device.
|
||||
*
|
||||
- * Returns pointer to created platform device, or NULL if a device was not
|
||||
+ * Return: Pointer to created platform device, or NULL if a device was not
|
||||
* registered. Unavailable devices will not get registered.
|
||||
*/
|
||||
static struct platform_device *of_platform_device_create_pdata(
|
||||
@@ -204,7 +204,7 @@ err_clear_flag:
|
||||
* @bus_id: name to assign device
|
||||
* @parent: Linux device model parent device.
|
||||
*
|
||||
- * Returns pointer to created platform device, or NULL if a device was not
|
||||
+ * Return: Pointer to created platform device, or NULL if a device was not
|
||||
* registered. Unavailable devices will not get registered.
|
||||
*/
|
||||
struct platform_device *of_platform_device_create(struct device_node *np,
|
||||
@@ -463,7 +463,7 @@ EXPORT_SYMBOL(of_platform_bus_probe);
|
||||
* New board support should be using this function instead of
|
||||
* of_platform_bus_probe().
|
||||
*
|
||||
- * Returns 0 on success, < 0 on failure.
|
||||
+ * Return: 0 on success, < 0 on failure.
|
||||
*/
|
||||
int of_platform_populate(struct device_node *root,
|
||||
const struct of_device_id *matches,
|
||||
@@ -608,7 +608,7 @@ static void devm_of_platform_populate_re
|
||||
* Similar to of_platform_populate(), but will automatically call
|
||||
* of_platform_depopulate() when the device is unbound from the bus.
|
||||
*
|
||||
- * Returns 0 on success, < 0 on failure.
|
||||
+ * Return: 0 on success, < 0 on failure.
|
||||
*/
|
||||
int devm_of_platform_populate(struct device *dev)
|
||||
{
|
||||
--- a/drivers/of/property.c
|
||||
+++ b/drivers/of/property.c
|
||||
@@ -60,9 +60,11 @@ EXPORT_SYMBOL(of_graph_is_present);
|
||||
* @elem_size: size of the individual element
|
||||
*
|
||||
* Search for a property in a device node and count the number of elements of
|
||||
- * size elem_size in it. Returns number of elements on sucess, -EINVAL if the
|
||||
- * property does not exist or its length does not match a multiple of elem_size
|
||||
- * and -ENODATA if the property does not have a value.
|
||||
+ * size elem_size in it.
|
||||
+ *
|
||||
+ * Return: The number of elements on sucess, -EINVAL if the property does not
|
||||
+ * exist or its length does not match a multiple of elem_size and -ENODATA if
|
||||
+ * the property does not have a value.
|
||||
*/
|
||||
int of_property_count_elems_of_size(const struct device_node *np,
|
||||
const char *propname, int elem_size)
|
||||
@@ -94,8 +96,9 @@ EXPORT_SYMBOL_GPL(of_property_count_elem
|
||||
* @len: if !=NULL, actual length is written to here
|
||||
*
|
||||
* Search for a property in a device node and valid the requested size.
|
||||
- * Returns the property value on success, -EINVAL if the property does not
|
||||
- * exist, -ENODATA if property does not have a value, and -EOVERFLOW if the
|
||||
+ *
|
||||
+ * Return: The property value on success, -EINVAL if the property does not
|
||||
+ * exist, -ENODATA if property does not have a value, and -EOVERFLOW if the
|
||||
* property data is too small or too large.
|
||||
*
|
||||
*/
|
||||
@@ -128,7 +131,9 @@ static void *of_find_property_value_of_s
|
||||
* @out_value: pointer to return value, modified only if no error.
|
||||
*
|
||||
* Search for a property in a device node and read nth 32-bit value from
|
||||
- * it. Returns 0 on success, -EINVAL if the property does not exist,
|
||||
+ * it.
|
||||
+ *
|
||||
+ * Return: 0 on success, -EINVAL if the property does not exist,
|
||||
* -ENODATA if property does not have a value, and -EOVERFLOW if the
|
||||
* property data isn't large enough.
|
||||
*
|
||||
@@ -160,7 +165,9 @@ EXPORT_SYMBOL_GPL(of_property_read_u32_i
|
||||
* @out_value: pointer to return value, modified only if no error.
|
||||
*
|
||||
* Search for a property in a device node and read nth 64-bit value from
|
||||
- * it. Returns 0 on success, -EINVAL if the property does not exist,
|
||||
+ * it.
|
||||
+ *
|
||||
+ * Return: 0 on success, -EINVAL if the property does not exist,
|
||||
* -ENODATA if property does not have a value, and -EOVERFLOW if the
|
||||
* property data isn't large enough.
|
||||
*
|
||||
@@ -195,12 +202,14 @@ EXPORT_SYMBOL_GPL(of_property_read_u64_i
|
||||
* sz_min will be read.
|
||||
*
|
||||
* Search for a property in a device node and read 8-bit value(s) from
|
||||
- * it. Returns number of elements read on success, -EINVAL if the property
|
||||
- * does not exist, -ENODATA if property does not have a value, and -EOVERFLOW
|
||||
- * if the property data is smaller than sz_min or longer than sz_max.
|
||||
+ * it.
|
||||
*
|
||||
* dts entry of array should be like:
|
||||
- * property = /bits/ 8 <0x50 0x60 0x70>;
|
||||
+ * ``property = /bits/ 8 <0x50 0x60 0x70>;``
|
||||
+ *
|
||||
+ * Return: The number of elements read on success, -EINVAL if the property
|
||||
+ * does not exist, -ENODATA if property does not have a value, and -EOVERFLOW
|
||||
+ * if the property data is smaller than sz_min or longer than sz_max.
|
||||
*
|
||||
* The out_values is modified only if a valid u8 value can be decoded.
|
||||
*/
|
||||
@@ -243,12 +252,14 @@ EXPORT_SYMBOL_GPL(of_property_read_varia
|
||||
* sz_min will be read.
|
||||
*
|
||||
* Search for a property in a device node and read 16-bit value(s) from
|
||||
- * it. Returns number of elements read on success, -EINVAL if the property
|
||||
- * does not exist, -ENODATA if property does not have a value, and -EOVERFLOW
|
||||
- * if the property data is smaller than sz_min or longer than sz_max.
|
||||
+ * it.
|
||||
*
|
||||
* dts entry of array should be like:
|
||||
- * property = /bits/ 16 <0x5000 0x6000 0x7000>;
|
||||
+ * ``property = /bits/ 16 <0x5000 0x6000 0x7000>;``
|
||||
+ *
|
||||
+ * Return: The number of elements read on success, -EINVAL if the property
|
||||
+ * does not exist, -ENODATA if property does not have a value, and -EOVERFLOW
|
||||
+ * if the property data is smaller than sz_min or longer than sz_max.
|
||||
*
|
||||
* The out_values is modified only if a valid u16 value can be decoded.
|
||||
*/
|
||||
@@ -291,7 +302,9 @@ EXPORT_SYMBOL_GPL(of_property_read_varia
|
||||
* sz_min will be read.
|
||||
*
|
||||
* Search for a property in a device node and read 32-bit value(s) from
|
||||
- * it. Returns number of elements read on success, -EINVAL if the property
|
||||
+ * it.
|
||||
+ *
|
||||
+ * Return: The number of elements read on success, -EINVAL if the property
|
||||
* does not exist, -ENODATA if property does not have a value, and -EOVERFLOW
|
||||
* if the property data is smaller than sz_min or longer than sz_max.
|
||||
*
|
||||
@@ -330,7 +343,9 @@ EXPORT_SYMBOL_GPL(of_property_read_varia
|
||||
* @out_value: pointer to return value, modified only if return value is 0.
|
||||
*
|
||||
* Search for a property in a device node and read a 64-bit value from
|
||||
- * it. Returns 0 on success, -EINVAL if the property does not exist,
|
||||
+ * it.
|
||||
+ *
|
||||
+ * Return: 0 on success, -EINVAL if the property does not exist,
|
||||
* -ENODATA if property does not have a value, and -EOVERFLOW if the
|
||||
* property data isn't large enough.
|
||||
*
|
||||
@@ -365,7 +380,9 @@ EXPORT_SYMBOL_GPL(of_property_read_u64);
|
||||
* sz_min will be read.
|
||||
*
|
||||
* Search for a property in a device node and read 64-bit value(s) from
|
||||
- * it. Returns number of elements read on success, -EINVAL if the property
|
||||
+ * it.
|
||||
+ *
|
||||
+ * Return: The number of elements read on success, -EINVAL if the property
|
||||
* does not exist, -ENODATA if property does not have a value, and -EOVERFLOW
|
||||
* if the property data is smaller than sz_min or longer than sz_max.
|
||||
*
|
||||
@@ -407,10 +424,11 @@ EXPORT_SYMBOL_GPL(of_property_read_varia
|
||||
* return value is 0.
|
||||
*
|
||||
* Search for a property in a device tree node and retrieve a null
|
||||
- * terminated string value (pointer to data, not a copy). Returns 0 on
|
||||
- * success, -EINVAL if the property does not exist, -ENODATA if property
|
||||
- * does not have a value, and -EILSEQ if the string is not null-terminated
|
||||
- * within the length of the property data.
|
||||
+ * terminated string value (pointer to data, not a copy).
|
||||
+ *
|
||||
+ * Return: 0 on success, -EINVAL if the property does not exist, -ENODATA if
|
||||
+ * property does not have a value, and -EILSEQ if the string is not
|
||||
+ * null-terminated within the length of the property data.
|
||||
*
|
||||
* The out_string pointer is modified only if a valid string can be decoded.
|
||||
*/
|
||||
@@ -774,7 +792,7 @@ EXPORT_SYMBOL(of_graph_get_remote_port_p
|
||||
* @node: pointer to a local endpoint device_node
|
||||
*
|
||||
* Return: Remote port node associated with remote endpoint node linked
|
||||
- * to @node. Use of_node_put() on it when done.
|
||||
+ * to @node. Use of_node_put() on it when done.
|
||||
*/
|
||||
struct device_node *of_graph_get_remote_port(const struct device_node *node)
|
||||
{
|
||||
@@ -807,7 +825,7 @@ EXPORT_SYMBOL(of_graph_get_endpoint_coun
|
||||
* @endpoint: identifier (value of reg property) of the endpoint node
|
||||
*
|
||||
* Return: Remote device node associated with remote endpoint node linked
|
||||
- * to @node. Use of_node_put() on it when done.
|
||||
+ * to @node. Use of_node_put() on it when done.
|
||||
*/
|
||||
struct device_node *of_graph_get_remote_node(const struct device_node *node,
|
||||
u32 port, u32 endpoint)
|
||||
--- a/include/linux/of.h
|
||||
+++ b/include/linux/of.h
|
||||
@@ -424,12 +424,14 @@ extern int of_detach_node(struct device_
|
||||
* @sz: number of array elements to read
|
||||
*
|
||||
* Search for a property in a device node and read 8-bit value(s) from
|
||||
- * it. Returns 0 on success, -EINVAL if the property does not exist,
|
||||
- * -ENODATA if property does not have a value, and -EOVERFLOW if the
|
||||
- * property data isn't large enough.
|
||||
+ * it.
|
||||
*
|
||||
* dts entry of array should be like:
|
||||
- * property = /bits/ 8 <0x50 0x60 0x70>;
|
||||
+ * ``property = /bits/ 8 <0x50 0x60 0x70>;``
|
||||
+ *
|
||||
+ * Return: 0 on success, -EINVAL if the property does not exist,
|
||||
+ * -ENODATA if property does not have a value, and -EOVERFLOW if the
|
||||
+ * property data isn't large enough.
|
||||
*
|
||||
* The out_values is modified only if a valid u8 value can be decoded.
|
||||
*/
|
||||
@@ -454,12 +456,14 @@ static inline int of_property_read_u8_ar
|
||||
* @sz: number of array elements to read
|
||||
*
|
||||
* Search for a property in a device node and read 16-bit value(s) from
|
||||
- * it. Returns 0 on success, -EINVAL if the property does not exist,
|
||||
- * -ENODATA if property does not have a value, and -EOVERFLOW if the
|
||||
- * property data isn't large enough.
|
||||
+ * it.
|
||||
*
|
||||
* dts entry of array should be like:
|
||||
- * property = /bits/ 16 <0x5000 0x6000 0x7000>;
|
||||
+ * ``property = /bits/ 16 <0x5000 0x6000 0x7000>;``
|
||||
+ *
|
||||
+ * Return: 0 on success, -EINVAL if the property does not exist,
|
||||
+ * -ENODATA if property does not have a value, and -EOVERFLOW if the
|
||||
+ * property data isn't large enough.
|
||||
*
|
||||
* The out_values is modified only if a valid u16 value can be decoded.
|
||||
*/
|
||||
@@ -485,7 +489,9 @@ static inline int of_property_read_u16_a
|
||||
* @sz: number of array elements to read
|
||||
*
|
||||
* Search for a property in a device node and read 32-bit value(s) from
|
||||
- * it. Returns 0 on success, -EINVAL if the property does not exist,
|
||||
+ * it.
|
||||
+ *
|
||||
+ * Return: 0 on success, -EINVAL if the property does not exist,
|
||||
* -ENODATA if property does not have a value, and -EOVERFLOW if the
|
||||
* property data isn't large enough.
|
||||
*
|
||||
@@ -513,7 +519,9 @@ static inline int of_property_read_u32_a
|
||||
* @sz: number of array elements to read
|
||||
*
|
||||
* Search for a property in a device node and read 64-bit value(s) from
|
||||
- * it. Returns 0 on success, -EINVAL if the property does not exist,
|
||||
+ * it.
|
||||
+ *
|
||||
+ * Return: 0 on success, -EINVAL if the property does not exist,
|
||||
* -ENODATA if property does not have a value, and -EOVERFLOW if the
|
||||
* property data isn't large enough.
|
||||
*
|
||||
@@ -1063,7 +1071,9 @@ static inline bool of_node_is_type(const
|
||||
* @propname: name of the property to be searched.
|
||||
*
|
||||
* Search for a property in a device node and count the number of u8 elements
|
||||
- * in it. Returns number of elements on sucess, -EINVAL if the property does
|
||||
+ * in it.
|
||||
+ *
|
||||
+ * Return: The number of elements on sucess, -EINVAL if the property does
|
||||
* not exist or its length does not match a multiple of u8 and -ENODATA if the
|
||||
* property does not have a value.
|
||||
*/
|
||||
@@ -1080,7 +1090,9 @@ static inline int of_property_count_u8_e
|
||||
* @propname: name of the property to be searched.
|
||||
*
|
||||
* Search for a property in a device node and count the number of u16 elements
|
||||
- * in it. Returns number of elements on sucess, -EINVAL if the property does
|
||||
+ * in it.
|
||||
+ *
|
||||
+ * Return: The number of elements on sucess, -EINVAL if the property does
|
||||
* not exist or its length does not match a multiple of u16 and -ENODATA if the
|
||||
* property does not have a value.
|
||||
*/
|
||||
@@ -1097,7 +1109,9 @@ static inline int of_property_count_u16_
|
||||
* @propname: name of the property to be searched.
|
||||
*
|
||||
* Search for a property in a device node and count the number of u32 elements
|
||||
- * in it. Returns number of elements on sucess, -EINVAL if the property does
|
||||
+ * in it.
|
||||
+ *
|
||||
+ * Return: The number of elements on sucess, -EINVAL if the property does
|
||||
* not exist or its length does not match a multiple of u32 and -ENODATA if the
|
||||
* property does not have a value.
|
||||
*/
|
||||
@@ -1114,7 +1128,9 @@ static inline int of_property_count_u32_
|
||||
* @propname: name of the property to be searched.
|
||||
*
|
||||
* Search for a property in a device node and count the number of u64 elements
|
||||
- * in it. Returns number of elements on sucess, -EINVAL if the property does
|
||||
+ * in it.
|
||||
+ *
|
||||
+ * Return: The number of elements on sucess, -EINVAL if the property does
|
||||
* not exist or its length does not match a multiple of u64 and -ENODATA if the
|
||||
* property does not have a value.
|
||||
*/
|
||||
@@ -1135,7 +1151,7 @@ static inline int of_property_count_u64_
|
||||
* Search for a property in a device tree node and retrieve a list of
|
||||
* terminated string values (pointer to data, not a copy) in that property.
|
||||
*
|
||||
- * If @out_strs is NULL, the number of strings in the property is returned.
|
||||
+ * Return: If @out_strs is NULL, the number of strings in the property is returned.
|
||||
*/
|
||||
static inline int of_property_read_string_array(const struct device_node *np,
|
||||
const char *propname, const char **out_strs,
|
||||
@@ -1151,10 +1167,11 @@ static inline int of_property_read_strin
|
||||
* @propname: name of the property to be searched.
|
||||
*
|
||||
* Search for a property in a device tree node and retrieve the number of null
|
||||
- * terminated string contain in it. Returns the number of strings on
|
||||
- * success, -EINVAL if the property does not exist, -ENODATA if property
|
||||
- * does not have a value, and -EILSEQ if the string is not null-terminated
|
||||
- * within the length of the property data.
|
||||
+ * terminated string contain in it.
|
||||
+ *
|
||||
+ * Return: The number of strings on success, -EINVAL if the property does not
|
||||
+ * exist, -ENODATA if property does not have a value, and -EILSEQ if the string
|
||||
+ * is not null-terminated within the length of the property data.
|
||||
*/
|
||||
static inline int of_property_count_strings(const struct device_node *np,
|
||||
const char *propname)
|
||||
@@ -1174,7 +1191,8 @@ static inline int of_property_count_stri
|
||||
* Search for a property in a device tree node and retrieve a null
|
||||
* terminated string value (pointer to data, not a copy) in the list of strings
|
||||
* contained in that property.
|
||||
- * Returns 0 on success, -EINVAL if the property does not exist, -ENODATA if
|
||||
+ *
|
||||
+ * Return: 0 on success, -EINVAL if the property does not exist, -ENODATA if
|
||||
* property does not have a value, and -EILSEQ if the string is not
|
||||
* null-terminated within the length of the property data.
|
||||
*
|
||||
@@ -1194,7 +1212,8 @@ static inline int of_property_read_strin
|
||||
* @propname: name of the property to be searched.
|
||||
*
|
||||
* Search for a property in a device node.
|
||||
- * Returns true if the property exists false otherwise.
|
||||
+ *
|
||||
+ * Return: true if the property exists false otherwise.
|
||||
*/
|
||||
static inline bool of_property_read_bool(const struct device_node *np,
|
||||
const char *propname)
|
||||
@@ -1440,7 +1459,7 @@ static inline int of_reconfig_get_state_
|
||||
* of_device_is_system_power_controller - Tells if system-power-controller is found for device_node
|
||||
* @np: Pointer to the given device_node
|
||||
*
|
||||
- * return true if present false otherwise
|
||||
+ * Return: true if present false otherwise
|
||||
*/
|
||||
static inline bool of_device_is_system_power_controller(const struct device_node *np)
|
||||
{
|
@ -0,0 +1,54 @@
|
||||
From 31e46db02ac1351c84e56a18606d17fc1b8390dd Mon Sep 17 00:00:00 2001
|
||||
From: Lee Jones <lee.jones@linaro.org>
|
||||
Date: Mon, 29 Mar 2021 16:24:35 +0100
|
||||
Subject: [PATCH] of: base: Fix spelling issue with function param 'prop'
|
||||
|
||||
Fixes the following W=1 kernel build warning(s):
|
||||
|
||||
drivers/of/base.c:1781: warning: Function parameter or member 'prop' not described in '__of_add_property'
|
||||
drivers/of/base.c:1781: warning: Excess function parameter 'prob' description in '__of_add_property'
|
||||
drivers/of/base.c:1804: warning: Function parameter or member 'prop' not described in 'of_add_property'
|
||||
drivers/of/base.c:1804: warning: Excess function parameter 'prob' description in 'of_add_property'
|
||||
drivers/of/base.c:1855: warning: Function parameter or member 'prop' not described in 'of_remove_property'
|
||||
drivers/of/base.c:1855: warning: Excess function parameter 'prob' description in 'of_remove_property'
|
||||
|
||||
Cc: Rob Herring <robh+dt@kernel.org>
|
||||
Cc: Frank Rowand <frowand.list@gmail.com>
|
||||
Cc: "David S. Miller" <davem@davemloft.net>
|
||||
Cc: devicetree@vger.kernel.org
|
||||
Signed-off-by: Lee Jones <lee.jones@linaro.org>
|
||||
Link: https://lore.kernel.org/r/20210329152435.900225-1-lee.jones@linaro.org
|
||||
Signed-off-by: Rob Herring <robh@kernel.org>
|
||||
---
|
||||
drivers/of/base.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/drivers/of/base.c
|
||||
+++ b/drivers/of/base.c
|
||||
@@ -1780,7 +1780,7 @@ EXPORT_SYMBOL(of_count_phandle_with_args
|
||||
/**
|
||||
* __of_add_property - Add a property to a node without lock operations
|
||||
* @np: Caller's Device Node
|
||||
- * @prob: Property to add
|
||||
+ * @prop: Property to add
|
||||
*/
|
||||
int __of_add_property(struct device_node *np, struct property *prop)
|
||||
{
|
||||
@@ -1803,7 +1803,7 @@ int __of_add_property(struct device_node
|
||||
/**
|
||||
* of_add_property - Add a property to a node
|
||||
* @np: Caller's Device Node
|
||||
- * @prob: Property to add
|
||||
+ * @prop: Property to add
|
||||
*/
|
||||
int of_add_property(struct device_node *np, struct property *prop)
|
||||
{
|
||||
@@ -1849,7 +1849,7 @@ int __of_remove_property(struct device_n
|
||||
/**
|
||||
* of_remove_property - Remove a property from a node.
|
||||
* @np: Caller's Device Node
|
||||
- * @prob: Property to remove
|
||||
+ * @prop: Property to remove
|
||||
*
|
||||
* Note that we don't actually remove it, since we have given out
|
||||
* who-knows-how-many pointers to the data using get-property.
|
@ -1,7 +1,7 @@
|
||||
From 83216e3988cd196183542937c9bd58b279f946af Mon Sep 17 00:00:00 2001
|
||||
From: Michael Walle <michael@walle.cc>
|
||||
Date: Mon, 12 Apr 2021 19:47:17 +0200
|
||||
Subject: of: net: pass the dst buffer to of_get_mac_address()
|
||||
Subject: [PATCH] of: net: pass the dst buffer to of_get_mac_address()
|
||||
|
||||
of_get_mac_address() returns a "const void*" pointer to a MAC address.
|
||||
Lately, support to fetch the MAC address by an NVMEM provider was added.
|
@ -1,7 +1,7 @@
|
||||
From f10843e04a075202dbb39dfcee047e3a2fdf5a8d Mon Sep 17 00:00:00 2001
|
||||
From: Michael Walle <michael@walle.cc>
|
||||
Date: Mon, 12 Apr 2021 19:47:18 +0200
|
||||
Subject: of: net: fix of_get_mac_addr_nvmem() for non-platform devices
|
||||
Subject: [PATCH] of: net: fix of_get_mac_addr_nvmem() for non-platform devices
|
||||
|
||||
of_get_mac_address() already supports fetching the MAC address by an
|
||||
nvmem provider. But until now, it was just working for platform devices.
|
@ -0,0 +1,27 @@
|
||||
From a065d5615fc83908ef21ed8159ffb63d816ff5de Mon Sep 17 00:00:00 2001
|
||||
From: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||
Date: Wed, 28 Jul 2021 16:42:27 +0200
|
||||
Subject: [PATCH] of: unify of_count_phandle_with_args() arguments with
|
||||
!CONFIG_OF
|
||||
|
||||
Unify the declaration of of_count_phandle_with_args() between enabled
|
||||
and disabled OF by making constifying pointed device_node.
|
||||
|
||||
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||
Reviewed-by: Rob Herring <robh@kernel.org>
|
||||
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
|
||||
---
|
||||
include/linux/of.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/include/linux/of.h
|
||||
+++ b/include/linux/of.h
|
||||
@@ -889,7 +889,7 @@ static inline int of_parse_phandle_with_
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
-static inline int of_count_phandle_with_args(struct device_node *np,
|
||||
+static inline int of_count_phandle_with_args(const struct device_node *np,
|
||||
const char *list_name,
|
||||
const char *cells_name)
|
||||
{
|
@ -0,0 +1,359 @@
|
||||
From 66a8f7f04979f4ad739085f01d99c8caf620b4f5 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Walle <michael@walle.cc>
|
||||
Date: Tue, 18 Jan 2022 18:35:02 +0100
|
||||
Subject: [PATCH] of: base: make small of_parse_phandle() variants static
|
||||
inline
|
||||
|
||||
Make all the smaller variants of the of_parse_phandle() static inline.
|
||||
This also let us remove the empty function stubs if CONFIG_OF is not
|
||||
defined.
|
||||
|
||||
Suggested-by: Rob Herring <robh@kernel.org>
|
||||
Signed-off-by: Michael Walle <michael@walle.cc>
|
||||
[robh: move index < 0 check into __of_parse_phandle_with_args]
|
||||
Signed-off-by: Rob Herring <robh@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20220118173504.2867523-2-michael@walle.cc
|
||||
---
|
||||
drivers/of/base.c | 131 +++------------------------------------
|
||||
include/linux/of.h | 148 ++++++++++++++++++++++++++++++++++++---------
|
||||
2 files changed, 129 insertions(+), 150 deletions(-)
|
||||
|
||||
--- a/drivers/of/base.c
|
||||
+++ b/drivers/of/base.c
|
||||
@@ -1372,15 +1372,18 @@ int of_phandle_iterator_args(struct of_p
|
||||
return count;
|
||||
}
|
||||
|
||||
-static int __of_parse_phandle_with_args(const struct device_node *np,
|
||||
- const char *list_name,
|
||||
- const char *cells_name,
|
||||
- int cell_count, int index,
|
||||
- struct of_phandle_args *out_args)
|
||||
+int __of_parse_phandle_with_args(const struct device_node *np,
|
||||
+ const char *list_name,
|
||||
+ const char *cells_name,
|
||||
+ int cell_count, int index,
|
||||
+ struct of_phandle_args *out_args)
|
||||
{
|
||||
struct of_phandle_iterator it;
|
||||
int rc, cur_index = 0;
|
||||
|
||||
+ if (index < 0)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
/* Loop over the phandles until all the requested entry is found */
|
||||
of_for_each_phandle(&it, rc, np, list_name, cells_name, cell_count) {
|
||||
/*
|
||||
@@ -1423,82 +1426,7 @@ static int __of_parse_phandle_with_args(
|
||||
of_node_put(it.node);
|
||||
return rc;
|
||||
}
|
||||
-
|
||||
-/**
|
||||
- * of_parse_phandle - Resolve a phandle property to a device_node pointer
|
||||
- * @np: Pointer to device node holding phandle property
|
||||
- * @phandle_name: Name of property holding a phandle value
|
||||
- * @index: For properties holding a table of phandles, this is the index into
|
||||
- * the table
|
||||
- *
|
||||
- * Return: The device_node pointer with refcount incremented. Use
|
||||
- * of_node_put() on it when done.
|
||||
- */
|
||||
-struct device_node *of_parse_phandle(const struct device_node *np,
|
||||
- const char *phandle_name, int index)
|
||||
-{
|
||||
- struct of_phandle_args args;
|
||||
-
|
||||
- if (index < 0)
|
||||
- return NULL;
|
||||
-
|
||||
- if (__of_parse_phandle_with_args(np, phandle_name, NULL, 0,
|
||||
- index, &args))
|
||||
- return NULL;
|
||||
-
|
||||
- return args.np;
|
||||
-}
|
||||
-EXPORT_SYMBOL(of_parse_phandle);
|
||||
-
|
||||
-/**
|
||||
- * of_parse_phandle_with_args() - Find a node pointed by phandle in a list
|
||||
- * @np: pointer to a device tree node containing a list
|
||||
- * @list_name: property name that contains a list
|
||||
- * @cells_name: property name that specifies phandles' arguments count
|
||||
- * @index: index of a phandle to parse out
|
||||
- * @out_args: optional pointer to output arguments structure (will be filled)
|
||||
- *
|
||||
- * This function is useful to parse lists of phandles and their arguments.
|
||||
- * Returns 0 on success and fills out_args, on error returns appropriate
|
||||
- * errno value.
|
||||
- *
|
||||
- * Caller is responsible to call of_node_put() on the returned out_args->np
|
||||
- * pointer.
|
||||
- *
|
||||
- * Example::
|
||||
- *
|
||||
- * phandle1: node1 {
|
||||
- * #list-cells = <2>;
|
||||
- * };
|
||||
- *
|
||||
- * phandle2: node2 {
|
||||
- * #list-cells = <1>;
|
||||
- * };
|
||||
- *
|
||||
- * node3 {
|
||||
- * list = <&phandle1 1 2 &phandle2 3>;
|
||||
- * };
|
||||
- *
|
||||
- * To get a device_node of the ``node2`` node you may call this:
|
||||
- * of_parse_phandle_with_args(node3, "list", "#list-cells", 1, &args);
|
||||
- */
|
||||
-int of_parse_phandle_with_args(const struct device_node *np, const char *list_name,
|
||||
- const char *cells_name, int index,
|
||||
- struct of_phandle_args *out_args)
|
||||
-{
|
||||
- int cell_count = -1;
|
||||
-
|
||||
- if (index < 0)
|
||||
- return -EINVAL;
|
||||
-
|
||||
- /* If cells_name is NULL we assume a cell count of 0 */
|
||||
- if (!cells_name)
|
||||
- cell_count = 0;
|
||||
-
|
||||
- return __of_parse_phandle_with_args(np, list_name, cells_name,
|
||||
- cell_count, index, out_args);
|
||||
-}
|
||||
-EXPORT_SYMBOL(of_parse_phandle_with_args);
|
||||
+EXPORT_SYMBOL(__of_parse_phandle_with_args);
|
||||
|
||||
/**
|
||||
* of_parse_phandle_with_args_map() - Find a node pointed by phandle in a list and remap it
|
||||
@@ -1685,47 +1613,6 @@ free:
|
||||
EXPORT_SYMBOL(of_parse_phandle_with_args_map);
|
||||
|
||||
/**
|
||||
- * of_parse_phandle_with_fixed_args() - Find a node pointed by phandle in a list
|
||||
- * @np: pointer to a device tree node containing a list
|
||||
- * @list_name: property name that contains a list
|
||||
- * @cell_count: number of argument cells following the phandle
|
||||
- * @index: index of a phandle to parse out
|
||||
- * @out_args: optional pointer to output arguments structure (will be filled)
|
||||
- *
|
||||
- * This function is useful to parse lists of phandles and their arguments.
|
||||
- * Returns 0 on success and fills out_args, on error returns appropriate
|
||||
- * errno value.
|
||||
- *
|
||||
- * Caller is responsible to call of_node_put() on the returned out_args->np
|
||||
- * pointer.
|
||||
- *
|
||||
- * Example::
|
||||
- *
|
||||
- * phandle1: node1 {
|
||||
- * };
|
||||
- *
|
||||
- * phandle2: node2 {
|
||||
- * };
|
||||
- *
|
||||
- * node3 {
|
||||
- * list = <&phandle1 0 2 &phandle2 2 3>;
|
||||
- * };
|
||||
- *
|
||||
- * To get a device_node of the ``node2`` node you may call this:
|
||||
- * of_parse_phandle_with_fixed_args(node3, "list", 2, 1, &args);
|
||||
- */
|
||||
-int of_parse_phandle_with_fixed_args(const struct device_node *np,
|
||||
- const char *list_name, int cell_count,
|
||||
- int index, struct of_phandle_args *out_args)
|
||||
-{
|
||||
- if (index < 0)
|
||||
- return -EINVAL;
|
||||
- return __of_parse_phandle_with_args(np, list_name, NULL, cell_count,
|
||||
- index, out_args);
|
||||
-}
|
||||
-EXPORT_SYMBOL(of_parse_phandle_with_fixed_args);
|
||||
-
|
||||
-/**
|
||||
* of_count_phandle_with_args() - Find the number of phandles references in a property
|
||||
* @np: pointer to a device tree node containing a list
|
||||
* @list_name: property name that contains a list
|
||||
--- a/include/linux/of.h
|
||||
+++ b/include/linux/of.h
|
||||
@@ -363,18 +363,12 @@ extern const struct of_device_id *of_mat
|
||||
const struct of_device_id *matches, const struct device_node *node);
|
||||
extern int of_modalias_node(struct device_node *node, char *modalias, int len);
|
||||
extern void of_print_phandle_args(const char *msg, const struct of_phandle_args *args);
|
||||
-extern struct device_node *of_parse_phandle(const struct device_node *np,
|
||||
- const char *phandle_name,
|
||||
- int index);
|
||||
-extern int of_parse_phandle_with_args(const struct device_node *np,
|
||||
- const char *list_name, const char *cells_name, int index,
|
||||
- struct of_phandle_args *out_args);
|
||||
+extern int __of_parse_phandle_with_args(const struct device_node *np,
|
||||
+ const char *list_name, const char *cells_name, int cell_count,
|
||||
+ int index, struct of_phandle_args *out_args);
|
||||
extern int of_parse_phandle_with_args_map(const struct device_node *np,
|
||||
const char *list_name, const char *stem_name, int index,
|
||||
struct of_phandle_args *out_args);
|
||||
-extern int of_parse_phandle_with_fixed_args(const struct device_node *np,
|
||||
- const char *list_name, int cells_count, int index,
|
||||
- struct of_phandle_args *out_args);
|
||||
extern int of_count_phandle_with_args(const struct device_node *np,
|
||||
const char *list_name, const char *cells_name);
|
||||
|
||||
@@ -857,18 +851,12 @@ static inline int of_property_read_strin
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
-static inline struct device_node *of_parse_phandle(const struct device_node *np,
|
||||
- const char *phandle_name,
|
||||
- int index)
|
||||
-{
|
||||
- return NULL;
|
||||
-}
|
||||
-
|
||||
-static inline int of_parse_phandle_with_args(const struct device_node *np,
|
||||
- const char *list_name,
|
||||
- const char *cells_name,
|
||||
- int index,
|
||||
- struct of_phandle_args *out_args)
|
||||
+static inline int __of_parse_phandle_with_args(const struct device_node *np,
|
||||
+ const char *list_name,
|
||||
+ const char *cells_name,
|
||||
+ int cell_count,
|
||||
+ int index,
|
||||
+ struct of_phandle_args *out_args)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
@@ -882,13 +870,6 @@ static inline int of_parse_phandle_with_
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
-static inline int of_parse_phandle_with_fixed_args(const struct device_node *np,
|
||||
- const char *list_name, int cells_count, int index,
|
||||
- struct of_phandle_args *out_args)
|
||||
-{
|
||||
- return -ENOSYS;
|
||||
-}
|
||||
-
|
||||
static inline int of_count_phandle_with_args(const struct device_node *np,
|
||||
const char *list_name,
|
||||
const char *cells_name)
|
||||
@@ -1065,6 +1046,117 @@ static inline bool of_node_is_type(const
|
||||
}
|
||||
|
||||
/**
|
||||
+ * of_parse_phandle - Resolve a phandle property to a device_node pointer
|
||||
+ * @np: Pointer to device node holding phandle property
|
||||
+ * @phandle_name: Name of property holding a phandle value
|
||||
+ * @index: For properties holding a table of phandles, this is the index into
|
||||
+ * the table
|
||||
+ *
|
||||
+ * Return: The device_node pointer with refcount incremented. Use
|
||||
+ * of_node_put() on it when done.
|
||||
+ */
|
||||
+static inline struct device_node *of_parse_phandle(const struct device_node *np,
|
||||
+ const char *phandle_name,
|
||||
+ int index)
|
||||
+{
|
||||
+ struct of_phandle_args args;
|
||||
+
|
||||
+ if (__of_parse_phandle_with_args(np, phandle_name, NULL, 0,
|
||||
+ index, &args))
|
||||
+ return NULL;
|
||||
+
|
||||
+ return args.np;
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
+ * of_parse_phandle_with_args() - Find a node pointed by phandle in a list
|
||||
+ * @np: pointer to a device tree node containing a list
|
||||
+ * @list_name: property name that contains a list
|
||||
+ * @cells_name: property name that specifies phandles' arguments count
|
||||
+ * @index: index of a phandle to parse out
|
||||
+ * @out_args: optional pointer to output arguments structure (will be filled)
|
||||
+ *
|
||||
+ * This function is useful to parse lists of phandles and their arguments.
|
||||
+ * Returns 0 on success and fills out_args, on error returns appropriate
|
||||
+ * errno value.
|
||||
+ *
|
||||
+ * Caller is responsible to call of_node_put() on the returned out_args->np
|
||||
+ * pointer.
|
||||
+ *
|
||||
+ * Example::
|
||||
+ *
|
||||
+ * phandle1: node1 {
|
||||
+ * #list-cells = <2>;
|
||||
+ * };
|
||||
+ *
|
||||
+ * phandle2: node2 {
|
||||
+ * #list-cells = <1>;
|
||||
+ * };
|
||||
+ *
|
||||
+ * node3 {
|
||||
+ * list = <&phandle1 1 2 &phandle2 3>;
|
||||
+ * };
|
||||
+ *
|
||||
+ * To get a device_node of the ``node2`` node you may call this:
|
||||
+ * of_parse_phandle_with_args(node3, "list", "#list-cells", 1, &args);
|
||||
+ */
|
||||
+static inline int of_parse_phandle_with_args(const struct device_node *np,
|
||||
+ const char *list_name,
|
||||
+ const char *cells_name,
|
||||
+ int index,
|
||||
+ struct of_phandle_args *out_args)
|
||||
+{
|
||||
+ int cell_count = -1;
|
||||
+
|
||||
+ /* If cells_name is NULL we assume a cell count of 0 */
|
||||
+ if (!cells_name)
|
||||
+ cell_count = 0;
|
||||
+
|
||||
+ return __of_parse_phandle_with_args(np, list_name, cells_name,
|
||||
+ cell_count, index, out_args);
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
+ * of_parse_phandle_with_fixed_args() - Find a node pointed by phandle in a list
|
||||
+ * @np: pointer to a device tree node containing a list
|
||||
+ * @list_name: property name that contains a list
|
||||
+ * @cell_count: number of argument cells following the phandle
|
||||
+ * @index: index of a phandle to parse out
|
||||
+ * @out_args: optional pointer to output arguments structure (will be filled)
|
||||
+ *
|
||||
+ * This function is useful to parse lists of phandles and their arguments.
|
||||
+ * Returns 0 on success and fills out_args, on error returns appropriate
|
||||
+ * errno value.
|
||||
+ *
|
||||
+ * Caller is responsible to call of_node_put() on the returned out_args->np
|
||||
+ * pointer.
|
||||
+ *
|
||||
+ * Example::
|
||||
+ *
|
||||
+ * phandle1: node1 {
|
||||
+ * };
|
||||
+ *
|
||||
+ * phandle2: node2 {
|
||||
+ * };
|
||||
+ *
|
||||
+ * node3 {
|
||||
+ * list = <&phandle1 0 2 &phandle2 2 3>;
|
||||
+ * };
|
||||
+ *
|
||||
+ * To get a device_node of the ``node2`` node you may call this:
|
||||
+ * of_parse_phandle_with_fixed_args(node3, "list", 2, 1, &args);
|
||||
+ */
|
||||
+static inline int of_parse_phandle_with_fixed_args(const struct device_node *np,
|
||||
+ const char *list_name,
|
||||
+ int cell_count,
|
||||
+ int index,
|
||||
+ struct of_phandle_args *out_args)
|
||||
+{
|
||||
+ return __of_parse_phandle_with_args(np, list_name, NULL, cell_count,
|
||||
+ index, out_args);
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
* of_property_count_u8_elems - Count the number of u8 elements in a property
|
||||
*
|
||||
* @np: device node from which the property value is to be read.
|
@ -0,0 +1,56 @@
|
||||
From 8eddceb280f5deb8046fcb660de9f9f683b408b9 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Walle <michael@walle.cc>
|
||||
Date: Tue, 6 Dec 2022 21:07:21 +0100
|
||||
Subject: [PATCH] of: base: add of_parse_phandle_with_optional_args()
|
||||
|
||||
Add a new variant of the of_parse_phandle_with_args() which treats the
|
||||
cells name as optional. If it's missing, it is assumed that the phandle
|
||||
has no arguments.
|
||||
|
||||
Up until now, a nvmem node didn't have any arguments, so all the device
|
||||
trees haven't any '#*-cells' property. But there is a need for an
|
||||
additional argument for the phandle, for which we need a '#*-cells'
|
||||
property. Therefore, we need to support nvmem nodes with and without
|
||||
this property.
|
||||
|
||||
Signed-off-by: Michael Walle <michael@walle.cc>
|
||||
Reviewed-by: Rob Herring <robh@kernel.org>
|
||||
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||
---
|
||||
include/linux/of.h | 25 +++++++++++++++++++++++++
|
||||
1 file changed, 25 insertions(+)
|
||||
|
||||
--- a/include/linux/of.h
|
||||
+++ b/include/linux/of.h
|
||||
@@ -1157,6 +1157,31 @@ static inline int of_parse_phandle_with_
|
||||
}
|
||||
|
||||
/**
|
||||
+ * of_parse_phandle_with_optional_args() - Find a node pointed by phandle in a list
|
||||
+ * @np: pointer to a device tree node containing a list
|
||||
+ * @list_name: property name that contains a list
|
||||
+ * @cells_name: property name that specifies phandles' arguments count
|
||||
+ * @index: index of a phandle to parse out
|
||||
+ * @out_args: optional pointer to output arguments structure (will be filled)
|
||||
+ *
|
||||
+ * Same as of_parse_phandle_with_args() except that if the cells_name property
|
||||
+ * is not found, cell_count of 0 is assumed.
|
||||
+ *
|
||||
+ * This is used to useful, if you have a phandle which didn't have arguments
|
||||
+ * before and thus doesn't have a '#*-cells' property but is now migrated to
|
||||
+ * having arguments while retaining backwards compatibility.
|
||||
+ */
|
||||
+static inline int of_parse_phandle_with_optional_args(const struct device_node *np,
|
||||
+ const char *list_name,
|
||||
+ const char *cells_name,
|
||||
+ int index,
|
||||
+ struct of_phandle_args *out_args)
|
||||
+{
|
||||
+ return __of_parse_phandle_with_args(np, list_name, cells_name,
|
||||
+ 0, index, out_args);
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
* of_property_count_u8_elems - Count the number of u8 elements in a property
|
||||
*
|
||||
* @np: device node from which the property value is to be read.
|
@ -0,0 +1,32 @@
|
||||
From 4f4145c9fee8c7a445dbbbadceccce5391e6b287 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Walle <michael@walle.cc>
|
||||
Date: Tue, 6 Dec 2022 21:07:22 +0100
|
||||
Subject: [PATCH] of: property: make #.*-cells optional for simple props
|
||||
|
||||
Sometimes, future bindings for phandles will get additional arguments.
|
||||
Thus the target node of the phandle will need a new #.*-cells property.
|
||||
To be backwards compatible, this needs to be optional.
|
||||
|
||||
Prepare the DEFINE_SIMPLE_PROPS() to handle the cells name as optional.
|
||||
|
||||
Signed-off-by: Michael Walle <michael@walle.cc>
|
||||
Tested-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
Reviewed-by: Rob Herring <robh@kernel.org>
|
||||
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||
---
|
||||
drivers/of/property.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/of/property.c
|
||||
+++ b/drivers/of/property.c
|
||||
@@ -1267,8 +1267,8 @@ static struct device_node *parse_suffix_
|
||||
if (strcmp_suffix(prop_name, suffix))
|
||||
return NULL;
|
||||
|
||||
- if (of_parse_phandle_with_args(np, prop_name, cells_name, index,
|
||||
- &sup_args))
|
||||
+ if (__of_parse_phandle_with_args(np, prop_name, cells_name, 0, index,
|
||||
+ &sup_args))
|
||||
return NULL;
|
||||
|
||||
return sup_args.np;
|
@ -0,0 +1,28 @@
|
||||
From 9cf9486a6a7e8a3d76154d0c506051ba3740e8b6 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Walle <michael@walle.cc>
|
||||
Date: Tue, 6 Dec 2022 21:07:23 +0100
|
||||
Subject: [PATCH] of: property: add #nvmem-cell-cells property
|
||||
|
||||
Bindings describe the new '#nvmem-cell-cells' property. Now that the
|
||||
arguments count property is optional, we just add this property to the
|
||||
nvmem-cells.
|
||||
|
||||
Signed-off-by: Michael Walle <michael@walle.cc>
|
||||
Tested-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
Reviewed-by: Rob Herring <robh@kernel.org>
|
||||
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||
---
|
||||
drivers/of/property.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/of/property.c
|
||||
+++ b/drivers/of/property.c
|
||||
@@ -1314,7 +1314,7 @@ DEFINE_SIMPLE_PROP(hwlocks, "hwlocks", "
|
||||
DEFINE_SIMPLE_PROP(extcon, "extcon", NULL)
|
||||
DEFINE_SIMPLE_PROP(interrupts_extended, "interrupts-extended",
|
||||
"#interrupt-cells")
|
||||
-DEFINE_SIMPLE_PROP(nvmem_cells, "nvmem-cells", NULL)
|
||||
+DEFINE_SIMPLE_PROP(nvmem_cells, "nvmem-cells", "#nvmem-cell-cells")
|
||||
DEFINE_SIMPLE_PROP(phys, "phys", "#phy-cells")
|
||||
DEFINE_SIMPLE_PROP(wakeup_parent, "wakeup-parent", NULL)
|
||||
DEFINE_SIMPLE_PROP(pinctrl0, "pinctrl-0", NULL)
|
@ -0,0 +1,359 @@
|
||||
From 66a8f7f04979f4ad739085f01d99c8caf620b4f5 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Walle <michael@walle.cc>
|
||||
Date: Tue, 18 Jan 2022 18:35:02 +0100
|
||||
Subject: [PATCH] of: base: make small of_parse_phandle() variants static
|
||||
inline
|
||||
|
||||
Make all the smaller variants of the of_parse_phandle() static inline.
|
||||
This also let us remove the empty function stubs if CONFIG_OF is not
|
||||
defined.
|
||||
|
||||
Suggested-by: Rob Herring <robh@kernel.org>
|
||||
Signed-off-by: Michael Walle <michael@walle.cc>
|
||||
[robh: move index < 0 check into __of_parse_phandle_with_args]
|
||||
Signed-off-by: Rob Herring <robh@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20220118173504.2867523-2-michael@walle.cc
|
||||
---
|
||||
drivers/of/base.c | 131 +++------------------------------------
|
||||
include/linux/of.h | 148 ++++++++++++++++++++++++++++++++++++---------
|
||||
2 files changed, 129 insertions(+), 150 deletions(-)
|
||||
|
||||
--- a/drivers/of/base.c
|
||||
+++ b/drivers/of/base.c
|
||||
@@ -1371,15 +1371,18 @@ int of_phandle_iterator_args(struct of_p
|
||||
return count;
|
||||
}
|
||||
|
||||
-static int __of_parse_phandle_with_args(const struct device_node *np,
|
||||
- const char *list_name,
|
||||
- const char *cells_name,
|
||||
- int cell_count, int index,
|
||||
- struct of_phandle_args *out_args)
|
||||
+int __of_parse_phandle_with_args(const struct device_node *np,
|
||||
+ const char *list_name,
|
||||
+ const char *cells_name,
|
||||
+ int cell_count, int index,
|
||||
+ struct of_phandle_args *out_args)
|
||||
{
|
||||
struct of_phandle_iterator it;
|
||||
int rc, cur_index = 0;
|
||||
|
||||
+ if (index < 0)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
/* Loop over the phandles until all the requested entry is found */
|
||||
of_for_each_phandle(&it, rc, np, list_name, cells_name, cell_count) {
|
||||
/*
|
||||
@@ -1422,82 +1425,7 @@ static int __of_parse_phandle_with_args(
|
||||
of_node_put(it.node);
|
||||
return rc;
|
||||
}
|
||||
-
|
||||
-/**
|
||||
- * of_parse_phandle - Resolve a phandle property to a device_node pointer
|
||||
- * @np: Pointer to device node holding phandle property
|
||||
- * @phandle_name: Name of property holding a phandle value
|
||||
- * @index: For properties holding a table of phandles, this is the index into
|
||||
- * the table
|
||||
- *
|
||||
- * Return: The device_node pointer with refcount incremented. Use
|
||||
- * of_node_put() on it when done.
|
||||
- */
|
||||
-struct device_node *of_parse_phandle(const struct device_node *np,
|
||||
- const char *phandle_name, int index)
|
||||
-{
|
||||
- struct of_phandle_args args;
|
||||
-
|
||||
- if (index < 0)
|
||||
- return NULL;
|
||||
-
|
||||
- if (__of_parse_phandle_with_args(np, phandle_name, NULL, 0,
|
||||
- index, &args))
|
||||
- return NULL;
|
||||
-
|
||||
- return args.np;
|
||||
-}
|
||||
-EXPORT_SYMBOL(of_parse_phandle);
|
||||
-
|
||||
-/**
|
||||
- * of_parse_phandle_with_args() - Find a node pointed by phandle in a list
|
||||
- * @np: pointer to a device tree node containing a list
|
||||
- * @list_name: property name that contains a list
|
||||
- * @cells_name: property name that specifies phandles' arguments count
|
||||
- * @index: index of a phandle to parse out
|
||||
- * @out_args: optional pointer to output arguments structure (will be filled)
|
||||
- *
|
||||
- * This function is useful to parse lists of phandles and their arguments.
|
||||
- * Returns 0 on success and fills out_args, on error returns appropriate
|
||||
- * errno value.
|
||||
- *
|
||||
- * Caller is responsible to call of_node_put() on the returned out_args->np
|
||||
- * pointer.
|
||||
- *
|
||||
- * Example::
|
||||
- *
|
||||
- * phandle1: node1 {
|
||||
- * #list-cells = <2>;
|
||||
- * };
|
||||
- *
|
||||
- * phandle2: node2 {
|
||||
- * #list-cells = <1>;
|
||||
- * };
|
||||
- *
|
||||
- * node3 {
|
||||
- * list = <&phandle1 1 2 &phandle2 3>;
|
||||
- * };
|
||||
- *
|
||||
- * To get a device_node of the ``node2`` node you may call this:
|
||||
- * of_parse_phandle_with_args(node3, "list", "#list-cells", 1, &args);
|
||||
- */
|
||||
-int of_parse_phandle_with_args(const struct device_node *np, const char *list_name,
|
||||
- const char *cells_name, int index,
|
||||
- struct of_phandle_args *out_args)
|
||||
-{
|
||||
- int cell_count = -1;
|
||||
-
|
||||
- if (index < 0)
|
||||
- return -EINVAL;
|
||||
-
|
||||
- /* If cells_name is NULL we assume a cell count of 0 */
|
||||
- if (!cells_name)
|
||||
- cell_count = 0;
|
||||
-
|
||||
- return __of_parse_phandle_with_args(np, list_name, cells_name,
|
||||
- cell_count, index, out_args);
|
||||
-}
|
||||
-EXPORT_SYMBOL(of_parse_phandle_with_args);
|
||||
+EXPORT_SYMBOL(__of_parse_phandle_with_args);
|
||||
|
||||
/**
|
||||
* of_parse_phandle_with_args_map() - Find a node pointed by phandle in a list and remap it
|
||||
@@ -1684,47 +1612,6 @@ free:
|
||||
EXPORT_SYMBOL(of_parse_phandle_with_args_map);
|
||||
|
||||
/**
|
||||
- * of_parse_phandle_with_fixed_args() - Find a node pointed by phandle in a list
|
||||
- * @np: pointer to a device tree node containing a list
|
||||
- * @list_name: property name that contains a list
|
||||
- * @cell_count: number of argument cells following the phandle
|
||||
- * @index: index of a phandle to parse out
|
||||
- * @out_args: optional pointer to output arguments structure (will be filled)
|
||||
- *
|
||||
- * This function is useful to parse lists of phandles and their arguments.
|
||||
- * Returns 0 on success and fills out_args, on error returns appropriate
|
||||
- * errno value.
|
||||
- *
|
||||
- * Caller is responsible to call of_node_put() on the returned out_args->np
|
||||
- * pointer.
|
||||
- *
|
||||
- * Example::
|
||||
- *
|
||||
- * phandle1: node1 {
|
||||
- * };
|
||||
- *
|
||||
- * phandle2: node2 {
|
||||
- * };
|
||||
- *
|
||||
- * node3 {
|
||||
- * list = <&phandle1 0 2 &phandle2 2 3>;
|
||||
- * };
|
||||
- *
|
||||
- * To get a device_node of the ``node2`` node you may call this:
|
||||
- * of_parse_phandle_with_fixed_args(node3, "list", 2, 1, &args);
|
||||
- */
|
||||
-int of_parse_phandle_with_fixed_args(const struct device_node *np,
|
||||
- const char *list_name, int cell_count,
|
||||
- int index, struct of_phandle_args *out_args)
|
||||
-{
|
||||
- if (index < 0)
|
||||
- return -EINVAL;
|
||||
- return __of_parse_phandle_with_args(np, list_name, NULL, cell_count,
|
||||
- index, out_args);
|
||||
-}
|
||||
-EXPORT_SYMBOL(of_parse_phandle_with_fixed_args);
|
||||
-
|
||||
-/**
|
||||
* of_count_phandle_with_args() - Find the number of phandles references in a property
|
||||
* @np: pointer to a device tree node containing a list
|
||||
* @list_name: property name that contains a list
|
||||
--- a/include/linux/of.h
|
||||
+++ b/include/linux/of.h
|
||||
@@ -363,18 +363,12 @@ extern const struct of_device_id *of_mat
|
||||
const struct of_device_id *matches, const struct device_node *node);
|
||||
extern int of_modalias_node(struct device_node *node, char *modalias, int len);
|
||||
extern void of_print_phandle_args(const char *msg, const struct of_phandle_args *args);
|
||||
-extern struct device_node *of_parse_phandle(const struct device_node *np,
|
||||
- const char *phandle_name,
|
||||
- int index);
|
||||
-extern int of_parse_phandle_with_args(const struct device_node *np,
|
||||
- const char *list_name, const char *cells_name, int index,
|
||||
- struct of_phandle_args *out_args);
|
||||
+extern int __of_parse_phandle_with_args(const struct device_node *np,
|
||||
+ const char *list_name, const char *cells_name, int cell_count,
|
||||
+ int index, struct of_phandle_args *out_args);
|
||||
extern int of_parse_phandle_with_args_map(const struct device_node *np,
|
||||
const char *list_name, const char *stem_name, int index,
|
||||
struct of_phandle_args *out_args);
|
||||
-extern int of_parse_phandle_with_fixed_args(const struct device_node *np,
|
||||
- const char *list_name, int cells_count, int index,
|
||||
- struct of_phandle_args *out_args);
|
||||
extern int of_count_phandle_with_args(const struct device_node *np,
|
||||
const char *list_name, const char *cells_name);
|
||||
|
||||
@@ -864,18 +858,12 @@ static inline int of_property_read_strin
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
-static inline struct device_node *of_parse_phandle(const struct device_node *np,
|
||||
- const char *phandle_name,
|
||||
- int index)
|
||||
-{
|
||||
- return NULL;
|
||||
-}
|
||||
-
|
||||
-static inline int of_parse_phandle_with_args(const struct device_node *np,
|
||||
- const char *list_name,
|
||||
- const char *cells_name,
|
||||
- int index,
|
||||
- struct of_phandle_args *out_args)
|
||||
+static inline int __of_parse_phandle_with_args(const struct device_node *np,
|
||||
+ const char *list_name,
|
||||
+ const char *cells_name,
|
||||
+ int cell_count,
|
||||
+ int index,
|
||||
+ struct of_phandle_args *out_args)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
@@ -889,13 +877,6 @@ static inline int of_parse_phandle_with_
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
-static inline int of_parse_phandle_with_fixed_args(const struct device_node *np,
|
||||
- const char *list_name, int cells_count, int index,
|
||||
- struct of_phandle_args *out_args)
|
||||
-{
|
||||
- return -ENOSYS;
|
||||
-}
|
||||
-
|
||||
static inline int of_count_phandle_with_args(const struct device_node *np,
|
||||
const char *list_name,
|
||||
const char *cells_name)
|
||||
@@ -1077,6 +1058,117 @@ static inline bool of_node_is_type(const
|
||||
}
|
||||
|
||||
/**
|
||||
+ * of_parse_phandle - Resolve a phandle property to a device_node pointer
|
||||
+ * @np: Pointer to device node holding phandle property
|
||||
+ * @phandle_name: Name of property holding a phandle value
|
||||
+ * @index: For properties holding a table of phandles, this is the index into
|
||||
+ * the table
|
||||
+ *
|
||||
+ * Return: The device_node pointer with refcount incremented. Use
|
||||
+ * of_node_put() on it when done.
|
||||
+ */
|
||||
+static inline struct device_node *of_parse_phandle(const struct device_node *np,
|
||||
+ const char *phandle_name,
|
||||
+ int index)
|
||||
+{
|
||||
+ struct of_phandle_args args;
|
||||
+
|
||||
+ if (__of_parse_phandle_with_args(np, phandle_name, NULL, 0,
|
||||
+ index, &args))
|
||||
+ return NULL;
|
||||
+
|
||||
+ return args.np;
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
+ * of_parse_phandle_with_args() - Find a node pointed by phandle in a list
|
||||
+ * @np: pointer to a device tree node containing a list
|
||||
+ * @list_name: property name that contains a list
|
||||
+ * @cells_name: property name that specifies phandles' arguments count
|
||||
+ * @index: index of a phandle to parse out
|
||||
+ * @out_args: optional pointer to output arguments structure (will be filled)
|
||||
+ *
|
||||
+ * This function is useful to parse lists of phandles and their arguments.
|
||||
+ * Returns 0 on success and fills out_args, on error returns appropriate
|
||||
+ * errno value.
|
||||
+ *
|
||||
+ * Caller is responsible to call of_node_put() on the returned out_args->np
|
||||
+ * pointer.
|
||||
+ *
|
||||
+ * Example::
|
||||
+ *
|
||||
+ * phandle1: node1 {
|
||||
+ * #list-cells = <2>;
|
||||
+ * };
|
||||
+ *
|
||||
+ * phandle2: node2 {
|
||||
+ * #list-cells = <1>;
|
||||
+ * };
|
||||
+ *
|
||||
+ * node3 {
|
||||
+ * list = <&phandle1 1 2 &phandle2 3>;
|
||||
+ * };
|
||||
+ *
|
||||
+ * To get a device_node of the ``node2`` node you may call this:
|
||||
+ * of_parse_phandle_with_args(node3, "list", "#list-cells", 1, &args);
|
||||
+ */
|
||||
+static inline int of_parse_phandle_with_args(const struct device_node *np,
|
||||
+ const char *list_name,
|
||||
+ const char *cells_name,
|
||||
+ int index,
|
||||
+ struct of_phandle_args *out_args)
|
||||
+{
|
||||
+ int cell_count = -1;
|
||||
+
|
||||
+ /* If cells_name is NULL we assume a cell count of 0 */
|
||||
+ if (!cells_name)
|
||||
+ cell_count = 0;
|
||||
+
|
||||
+ return __of_parse_phandle_with_args(np, list_name, cells_name,
|
||||
+ cell_count, index, out_args);
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
+ * of_parse_phandle_with_fixed_args() - Find a node pointed by phandle in a list
|
||||
+ * @np: pointer to a device tree node containing a list
|
||||
+ * @list_name: property name that contains a list
|
||||
+ * @cell_count: number of argument cells following the phandle
|
||||
+ * @index: index of a phandle to parse out
|
||||
+ * @out_args: optional pointer to output arguments structure (will be filled)
|
||||
+ *
|
||||
+ * This function is useful to parse lists of phandles and their arguments.
|
||||
+ * Returns 0 on success and fills out_args, on error returns appropriate
|
||||
+ * errno value.
|
||||
+ *
|
||||
+ * Caller is responsible to call of_node_put() on the returned out_args->np
|
||||
+ * pointer.
|
||||
+ *
|
||||
+ * Example::
|
||||
+ *
|
||||
+ * phandle1: node1 {
|
||||
+ * };
|
||||
+ *
|
||||
+ * phandle2: node2 {
|
||||
+ * };
|
||||
+ *
|
||||
+ * node3 {
|
||||
+ * list = <&phandle1 0 2 &phandle2 2 3>;
|
||||
+ * };
|
||||
+ *
|
||||
+ * To get a device_node of the ``node2`` node you may call this:
|
||||
+ * of_parse_phandle_with_fixed_args(node3, "list", 2, 1, &args);
|
||||
+ */
|
||||
+static inline int of_parse_phandle_with_fixed_args(const struct device_node *np,
|
||||
+ const char *list_name,
|
||||
+ int cell_count,
|
||||
+ int index,
|
||||
+ struct of_phandle_args *out_args)
|
||||
+{
|
||||
+ return __of_parse_phandle_with_args(np, list_name, NULL, cell_count,
|
||||
+ index, out_args);
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
* of_property_count_u8_elems - Count the number of u8 elements in a property
|
||||
*
|
||||
* @np: device node from which the property value is to be read.
|
@ -0,0 +1,56 @@
|
||||
From 8eddceb280f5deb8046fcb660de9f9f683b408b9 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Walle <michael@walle.cc>
|
||||
Date: Tue, 6 Dec 2022 21:07:21 +0100
|
||||
Subject: [PATCH] of: base: add of_parse_phandle_with_optional_args()
|
||||
|
||||
Add a new variant of the of_parse_phandle_with_args() which treats the
|
||||
cells name as optional. If it's missing, it is assumed that the phandle
|
||||
has no arguments.
|
||||
|
||||
Up until now, a nvmem node didn't have any arguments, so all the device
|
||||
trees haven't any '#*-cells' property. But there is a need for an
|
||||
additional argument for the phandle, for which we need a '#*-cells'
|
||||
property. Therefore, we need to support nvmem nodes with and without
|
||||
this property.
|
||||
|
||||
Signed-off-by: Michael Walle <michael@walle.cc>
|
||||
Reviewed-by: Rob Herring <robh@kernel.org>
|
||||
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||
---
|
||||
include/linux/of.h | 25 +++++++++++++++++++++++++
|
||||
1 file changed, 25 insertions(+)
|
||||
|
||||
--- a/include/linux/of.h
|
||||
+++ b/include/linux/of.h
|
||||
@@ -1169,6 +1169,31 @@ static inline int of_parse_phandle_with_
|
||||
}
|
||||
|
||||
/**
|
||||
+ * of_parse_phandle_with_optional_args() - Find a node pointed by phandle in a list
|
||||
+ * @np: pointer to a device tree node containing a list
|
||||
+ * @list_name: property name that contains a list
|
||||
+ * @cells_name: property name that specifies phandles' arguments count
|
||||
+ * @index: index of a phandle to parse out
|
||||
+ * @out_args: optional pointer to output arguments structure (will be filled)
|
||||
+ *
|
||||
+ * Same as of_parse_phandle_with_args() except that if the cells_name property
|
||||
+ * is not found, cell_count of 0 is assumed.
|
||||
+ *
|
||||
+ * This is used to useful, if you have a phandle which didn't have arguments
|
||||
+ * before and thus doesn't have a '#*-cells' property but is now migrated to
|
||||
+ * having arguments while retaining backwards compatibility.
|
||||
+ */
|
||||
+static inline int of_parse_phandle_with_optional_args(const struct device_node *np,
|
||||
+ const char *list_name,
|
||||
+ const char *cells_name,
|
||||
+ int index,
|
||||
+ struct of_phandle_args *out_args)
|
||||
+{
|
||||
+ return __of_parse_phandle_with_args(np, list_name, cells_name,
|
||||
+ 0, index, out_args);
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
* of_property_count_u8_elems - Count the number of u8 elements in a property
|
||||
*
|
||||
* @np: device node from which the property value is to be read.
|
@ -0,0 +1,32 @@
|
||||
From 4f4145c9fee8c7a445dbbbadceccce5391e6b287 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Walle <michael@walle.cc>
|
||||
Date: Tue, 6 Dec 2022 21:07:22 +0100
|
||||
Subject: [PATCH] of: property: make #.*-cells optional for simple props
|
||||
|
||||
Sometimes, future bindings for phandles will get additional arguments.
|
||||
Thus the target node of the phandle will need a new #.*-cells property.
|
||||
To be backwards compatible, this needs to be optional.
|
||||
|
||||
Prepare the DEFINE_SIMPLE_PROPS() to handle the cells name as optional.
|
||||
|
||||
Signed-off-by: Michael Walle <michael@walle.cc>
|
||||
Tested-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
Reviewed-by: Rob Herring <robh@kernel.org>
|
||||
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||
---
|
||||
drivers/of/property.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/of/property.c
|
||||
+++ b/drivers/of/property.c
|
||||
@@ -1227,8 +1227,8 @@ static struct device_node *parse_suffix_
|
||||
if (strcmp_suffix(prop_name, suffix))
|
||||
return NULL;
|
||||
|
||||
- if (of_parse_phandle_with_args(np, prop_name, cells_name, index,
|
||||
- &sup_args))
|
||||
+ if (__of_parse_phandle_with_args(np, prop_name, cells_name, 0, index,
|
||||
+ &sup_args))
|
||||
return NULL;
|
||||
|
||||
return sup_args.np;
|
@ -0,0 +1,28 @@
|
||||
From 9cf9486a6a7e8a3d76154d0c506051ba3740e8b6 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Walle <michael@walle.cc>
|
||||
Date: Tue, 6 Dec 2022 21:07:23 +0100
|
||||
Subject: [PATCH] of: property: add #nvmem-cell-cells property
|
||||
|
||||
Bindings describe the new '#nvmem-cell-cells' property. Now that the
|
||||
arguments count property is optional, we just add this property to the
|
||||
nvmem-cells.
|
||||
|
||||
Signed-off-by: Michael Walle <michael@walle.cc>
|
||||
Tested-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
Reviewed-by: Rob Herring <robh@kernel.org>
|
||||
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||
---
|
||||
drivers/of/property.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/of/property.c
|
||||
+++ b/drivers/of/property.c
|
||||
@@ -1276,7 +1276,7 @@ DEFINE_SIMPLE_PROP(dmas, "dmas", "#dma-c
|
||||
DEFINE_SIMPLE_PROP(power_domains, "power-domains", "#power-domain-cells")
|
||||
DEFINE_SIMPLE_PROP(hwlocks, "hwlocks", "#hwlock-cells")
|
||||
DEFINE_SIMPLE_PROP(extcon, "extcon", NULL)
|
||||
-DEFINE_SIMPLE_PROP(nvmem_cells, "nvmem-cells", NULL)
|
||||
+DEFINE_SIMPLE_PROP(nvmem_cells, "nvmem-cells", "#nvmem-cell-cells")
|
||||
DEFINE_SIMPLE_PROP(phys, "phys", "#phy-cells")
|
||||
DEFINE_SIMPLE_PROP(wakeup_parent, "wakeup-parent", NULL)
|
||||
DEFINE_SIMPLE_PROP(pinctrl0, "pinctrl-0", NULL)
|
@ -16,7 +16,7 @@ SVN-Revision: 36780
|
||||
|
||||
--- a/drivers/of/fdt.c
|
||||
+++ b/drivers/of/fdt.c
|
||||
@@ -1055,6 +1055,9 @@ int __init early_init_dt_scan_chosen(uns
|
||||
@@ -1054,6 +1054,9 @@ int __init early_init_dt_scan_chosen(uns
|
||||
p = of_get_flat_dt_prop(node, "bootargs", &l);
|
||||
if (p != NULL && l > 0)
|
||||
strlcpy(data, p, min(l, COMMAND_LINE_SIZE));
|
||||
|
@ -17,7 +17,7 @@
|
||||
default ""
|
||||
--- a/drivers/of/fdt.c
|
||||
+++ b/drivers/of/fdt.c
|
||||
@@ -1059,6 +1059,17 @@ int __init early_init_dt_scan_chosen(uns
|
||||
@@ -1058,6 +1058,17 @@ int __init early_init_dt_scan_chosen(uns
|
||||
if (p != NULL && l > 0)
|
||||
strlcat(data, p, min_t(int, strlen(data) + (int)l, COMMAND_LINE_SIZE));
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
help
|
||||
--- a/drivers/of/fdt.c
|
||||
+++ b/drivers/of/fdt.c
|
||||
@@ -1059,6 +1059,17 @@ int __init early_init_dt_scan_chosen(uns
|
||||
@@ -1058,6 +1058,17 @@ int __init early_init_dt_scan_chosen(uns
|
||||
if (p != NULL && l > 0)
|
||||
strlcat(data, p, min_t(int, strlen(data) + (int)l, COMMAND_LINE_SIZE));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user