From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>,
Heikki Krogerus <heikki.krogerus@linux.intel.com>,
Linus Walleij <linus.walleij@linaro.org>,
linux-kernel@vger.kernel.org,
platform-driver-x86@vger.kernel.org
Subject: Re: [PATCH 1/3] software node: implement reference properties
Date: Fri, 6 Sep 2019 15:27:43 +0300 [thread overview]
Message-ID: <20190906122743.GQ2680@smile.fi.intel.com> (raw)
In-Reply-To: <20190906043809.18990-1-dmitry.torokhov@gmail.com>
On Thu, Sep 05, 2019 at 09:38:07PM -0700, Dmitry Torokhov wrote:
> It is possible to store references to software nodes in the same fashion as
> other static properties, so that users do not need to define separate
> structures:
>
> const struct software_node gpio_bank_b_node = {
> .name = "B",
> };
Why this can't be __initconst?
> const struct property_entry simone_key_enter_props[] __initconst = {
> PROPERTY_ENTRY_U32("linux,code", KEY_ENTER),
> PROPERTY_ENTRY_STRING("label", "enter"),
> PROPERTY_ENTRY_REF("gpios", &gpio_bank_b_node, 123, GPIO_ACTIVE_LOW),
> { }
> };
So it's basically mimics the concept of phandle, right?
> + ref_args = prop->is_array ?
> + &prop->pointer.ref[index] : &prop->value.ref;
Better to do if with explicit 'if ()' as it's done in the rest of the code.
if (prop->is_array)
ref_args = ...;
else
ref_args = ...;
> - DEV_PROP_MAX,
> + DEV_PROP_MAX
It seems it wasn't ever used, so, can be dropped completely.
> @@ -240,6 +255,7 @@ struct property_entry {
> const u32 *u32_data;
> const u64 *u64_data;
> const char * const *str;
> + const struct software_node_ref_args *ref;
> } pointer;
> union {
> u8 u8_data;
> @@ -247,6 +263,7 @@ struct property_entry {
> u32 u32_data;
> u64 u64_data;
> const char *str;
> + struct software_node_ref_args ref;
Hmm... This bumps the size of union a lot for each existing property_entry.
Is there any other way? Maybe we can keep pointer and allocate memory for it
when copying?
> } value;
> +#define PROPERTY_ENTRY_REF_ARRAY(_name_, _val_) \
> +(struct property_entry) { \
> + .name = _name_, \
> + .length = ARRAY_SIZE(_val_) * \
> + sizeof(struct software_node_ref_args), \
I would rather leave it on one line and shift right all \:s in this macro.
> + .is_array = true, \
> + .type = DEV_PROP_REF, \
> + .pointer.ref = _val_, \
> +}
> +
> +#define PROPERTY_ENTRY_REF(_name_, _ref_, ...) \
> +(struct property_entry) { \
> + .name = _name_, \
> + .length = sizeof(struct software_node_ref_args), \
> + .type = DEV_PROP_REF, \
> + .value.ref.node = _ref_, \
> + .value.ref.nargs = \
> + ARRAY_SIZE(((u64[]){ 0, ##__VA_ARGS__ })) - 1, \
Ditto.
> + .value.ref.args = { __VA_ARGS__ }, \
> +}
--
With Best Regards,
Andy Shevchenko
next prev parent reply other threads:[~2019-09-06 12:27 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-06 4:38 [PATCH 1/3] software node: implement reference properties Dmitry Torokhov
2019-09-06 4:38 ` [PATCH 2/3] platform/x86: intel_cht_int33fe: use inline " Dmitry Torokhov
2019-09-06 11:22 ` Heikki Krogerus
2019-09-06 21:34 ` Dmitry Torokhov
2019-09-06 4:38 ` [PATCH 3/3] software node: remove separate handling of references Dmitry Torokhov
2019-09-06 12:38 ` Andy Shevchenko
2019-09-06 11:17 ` [PATCH 1/3] software node: implement reference properties Heikki Krogerus
2019-09-06 12:40 ` Andy Shevchenko
2019-09-06 13:31 ` Heikki Krogerus
2019-09-06 12:27 ` Andy Shevchenko [this message]
2019-09-06 22:34 ` Dmitry Torokhov
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=20190906122743.GQ2680@smile.fi.intel.com \
--to=andriy.shevchenko@linux.intel.com \
--cc=dmitry.torokhov@gmail.com \
--cc=heikki.krogerus@linux.intel.com \
--cc=linus.walleij@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--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.