All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: "Rafael J. Wysocki" <rafael@kernel.org>,
	Heikki Krogerus <heikki.krogerus@linux.intel.com>
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Mika Westerberg <mika.westerberg@linux.intel.com>,
	Linus Walleij <linus.walleij@linaro.org>,
	Ard Biesheuvel <ard.biesheuvel@linaro.org>,
	linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org,
	platform-driver-x86@vger.kernel.org
Subject: [PATCH v5 10/14] software node: rename is_array to is_inline
Date: Fri, 11 Oct 2019 16:07:17 -0700	[thread overview]
Message-ID: <20191011230721.206646-11-dmitry.torokhov@gmail.com> (raw)
In-Reply-To: <20191011230721.206646-1-dmitry.torokhov@gmail.com>

We do not need a special flag to know if we are dealing with an array,
as we can get that data from ratio between element length and the data
size, however we do need a flag to know whether the data is stored
directly inside property_entry or separately.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
 drivers/base/swnode.c    |  9 +++++----
 include/linux/property.h | 12 +++++++-----
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/drivers/base/swnode.c b/drivers/base/swnode.c
index 8826c9040c80..ae4b24ee2a54 100644
--- a/drivers/base/swnode.c
+++ b/drivers/base/swnode.c
@@ -108,7 +108,7 @@ static const void *property_get_pointer(const struct property_entry *prop)
 	if (!prop->length)
 		return NULL;
 
-	if (prop->is_array)
+	if (!prop->is_inline)
 		return prop->pointer;
 
 	return &prop->value;
@@ -205,7 +205,7 @@ static void property_entry_free_data(const struct property_entry *p)
 	const char * const *src_str;
 	size_t i, nval;
 
-	if (p->is_array) {
+	if (!p->is_inline) {
 		if (p->type == DEV_PROP_STRING && p->pointer) {
 			src_str = p->pointer;
 			nval = p->length / sizeof(const char *);
@@ -250,7 +250,7 @@ static int property_entry_copy_data(struct property_entry *dst,
 	const void *pointer = property_get_pointer(src);
 	const void *new;
 
-	if (src->is_array) {
+	if (!src->is_inline) {
 		if (!src->length)
 			return -ENODATA;
 
@@ -264,15 +264,16 @@ static int property_entry_copy_data(struct property_entry *dst,
 				return -ENOMEM;
 		}
 
-		dst->is_array = true;
 		dst->pointer = new;
 	} else if (src->type == DEV_PROP_STRING) {
 		new = kstrdup(src->value.str, GFP_KERNEL);
 		if (!new && src->value.str)
 			return -ENOMEM;
 
+		dst->is_inline = true;
 		dst->value.str = new;
 	} else {
+		dst->is_inline = true;
 		dst->value = src->value;
 	}
 
diff --git a/include/linux/property.h b/include/linux/property.h
index 238e1507925f..ac7823d58cfe 100644
--- a/include/linux/property.h
+++ b/include/linux/property.h
@@ -222,15 +222,17 @@ static inline int fwnode_property_count_u64(const struct fwnode_handle *fwnode,
  * struct property_entry - "Built-in" device property representation.
  * @name: Name of the property.
  * @length: Length of data making up the value.
- * @is_array: True when the property is an array.
+ * @is_inline: True when the property value is stored directly in
+ *     &struct property_entry instance.
  * @type: Type of the data in unions.
- * @pointer: Pointer to the property (an array of items of the given type).
- * @value: Value of the property (when it is a single item of the given type).
+ * @pointer: Pointer to the property when it is stored separately from
+ *     the &struct property_entry instance.
+ * @value: Value of the property when it is stored inline.
  */
 struct property_entry {
 	const char *name;
 	size_t length;
-	bool is_array;
+	bool is_inline;
 	enum dev_prop_type type;
 	union {
 		const void *pointer;
@@ -257,7 +259,6 @@ struct property_entry {
 (struct property_entry) {						\
 	.name = _name_,							\
 	.length = (_len_) * __PROPERTY_ENTRY_ELEMENT_SIZE(_elem_),	\
-	.is_array = true,						\
 	.type = DEV_PROP_##_Type_,					\
 	{ .pointer = _val_ },						\
 }
@@ -288,6 +289,7 @@ struct property_entry {
 (struct property_entry) {						\
 	.name = _name_,							\
 	.length = __PROPERTY_ENTRY_ELEMENT_SIZE(_elem_),		\
+	.is_inline = true,						\
 	.type = DEV_PROP_##_Type_,					\
 	{ .value = { ._elem_ = _val_ } },				\
 }
-- 
2.23.0.700.g56cf767bdb-goog


  parent reply	other threads:[~2019-10-11 23:08 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-11 23:07 [PATCH v5 00/14] software node: add support for reference properties Dmitry Torokhov
2019-10-11 23:07 ` [PATCH v5 01/14] software node: remove DEV_PROP_MAX Dmitry Torokhov
2019-10-11 23:07 ` [PATCH v5 02/14] software node: introduce PROPERTY_ENTRY_ARRAY_XXX_LEN() Dmitry Torokhov
2019-10-15 12:02   ` Andy Shevchenko
2019-10-11 23:07 ` [PATCH v5 03/14] efi/apple-properties: use PROPERTY_ENTRY_U8_ARRAY_LEN Dmitry Torokhov
2019-10-15 12:01   ` Andy Shevchenko
2019-10-15 18:02     ` Dmitry Torokhov
2019-10-11 23:07 ` [PATCH v5 04/14] software node: mark internal macros with double underscores Dmitry Torokhov
2019-10-15 12:03   ` Andy Shevchenko
2019-10-15 18:09     ` Dmitry Torokhov
2019-10-11 23:07 ` [PATCH v5 05/14] software node: clean up property_copy_string_array() Dmitry Torokhov
2019-10-15 12:07   ` Andy Shevchenko
2019-10-15 18:12     ` Dmitry Torokhov
2019-10-16  7:53       ` Andy Shevchenko
2019-10-16 17:00         ` Dmitry Torokhov
2019-10-17  7:02           ` Andy Shevchenko
2019-10-11 23:07 ` [PATCH v5 06/14] software node: get rid of property_set_pointer() Dmitry Torokhov
2019-10-15 12:09   ` Andy Shevchenko
2019-10-15 18:14     ` Dmitry Torokhov
2019-10-11 23:07 ` [PATCH v5 07/14] software node: remove property_entry_read_uNN_array functions Dmitry Torokhov
2019-10-11 23:07 ` [PATCH v5 08/14] software node: unify PROPERTY_ENTRY_XXX macros Dmitry Torokhov
2019-10-11 23:07 ` [PATCH v5 09/14] software node: simplify property_entry_read_string_array() Dmitry Torokhov
2019-10-11 23:07 ` Dmitry Torokhov [this message]
2019-10-14  7:37   ` [PATCH v5 10/14] software node: rename is_array to is_inline Andy Shevchenko
2019-10-15 18:22     ` Dmitry Torokhov
2019-10-16  7:59       ` Andy Shevchenko
2019-10-16 16:54         ` Dmitry Torokhov
2019-10-17  7:16           ` Andy Shevchenko
2019-10-17 16:00             ` Dmitry Torokhov
2019-10-17 16:02   ` Dmitry Torokhov
2019-10-11 23:07 ` [PATCH v5 11/14] software node: move small properties inline when copying Dmitry Torokhov
2019-10-15 12:20   ` Andy Shevchenko
2019-10-15 18:25     ` Dmitry Torokhov
2019-10-16  7:48       ` Andy Shevchenko
2019-10-16 16:01         ` Dmitry Torokhov
2019-10-16 16:18           ` Andy Shevchenko
2019-10-16 16:23             ` Andy Shevchenko
2019-10-16 16:44               ` Dmitry Torokhov
2019-10-17 16:04   ` Dmitry Torokhov
2019-10-11 23:07 ` [PATCH v5 12/14] software node: implement reference properties Dmitry Torokhov
2019-10-11 23:07 ` [PATCH v5 13/14] platform/x86: intel_cht_int33fe: use inline " Dmitry Torokhov
2019-10-16  8:01   ` Andy Shevchenko
2019-10-11 23:07 ` [PATCH v5 14/14] software node: remove separate handling of references Dmitry Torokhov
2019-10-14  7:38 ` [PATCH v5 00/14] software node: add support for reference properties Andy Shevchenko
2019-10-14 23:57   ` Dmitry Torokhov
2019-10-16  8:02     ` Andy Shevchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191011230721.206646-11-dmitry.torokhov@gmail.com \
    --to=dmitry.torokhov@gmail.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=ard.biesheuvel@linaro.org \
    --cc=heikki.krogerus@linux.intel.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mika.westerberg@linux.intel.com \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=rafael@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.