From: Rob Herring <robh@kernel.org>
To: Mark Hasemeyer <markhas@chromium.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
Raul Rangel <rrangel@chromium.org>,
Frank Rowand <frowand.list@gmail.com>,
devicetree@vger.kernel.org
Subject: Re: [PATCH v1 3/6] of: irq: add wake capable bit to of_irq_resource()
Date: Wed, 13 Dec 2023 16:19:59 -0600 [thread overview]
Message-ID: <20231213221959.GC2115075-robh@kernel.org> (raw)
In-Reply-To: <20231213110009.v1.3.I29b26a7f3b80fac0a618707446a10b6cc974fdaf@changeid>
On Wed, Dec 13, 2023 at 11:00:21AM -0700, Mark Hasemeyer wrote:
> Add wake capability information to the irq resource. Wake capability is
> assumed based on conventions provided in the devicetree wakeup-source
> binding documentation. An interrupt is considered wake capable if the
> following are true:
> 1. a wakeup-source property exits in the same device node as the
> interrupt.
> 2. No dedicated irq is defined, or the irq is marked as dedicated by
> setting its interrupt-name to "wakeup".
>
> The wakeup-source documentation states that dedicated interrupts can use
> device specific interrupt names and device drivers are still welcome to
> use their own naming schemes. This api is provided as a helper if one is
> willing to conform to the above conventions.
>
> The ACPI subsystems already provides similar apis that allow one to
> query the wake capability of an irq. This brings feature parity to the
> devicetree.
>
> Signed-off-by: Mark Hasemeyer <markhas@chromium.org>
> ---
>
> drivers/of/irq.c | 30 ++++++++++++++++++++++++++++++
> 1 file changed, 30 insertions(+)
>
> diff --git a/drivers/of/irq.c b/drivers/of/irq.c
> index 174900072c18c..633711bc32953 100644
> --- a/drivers/of/irq.c
> +++ b/drivers/of/irq.c
> @@ -383,11 +383,39 @@ int of_irq_parse_one(struct device_node *device, int index, struct of_phandle_ar
> }
> EXPORT_SYMBOL_GPL(of_irq_parse_one);
>
> +/**
> + * __of_irq_wake_capable - Determine whether a given irq index is wake capable
> + *
> + * The irq is considered wake capable if the following are true:
> + * 1. wakeup-source property exists
> + * 2. no dedicated wakeirq exists OR provided irq index is a dedicated wakeirq
> + *
> + * This logic assumes the provided irq index is valid.
> + *
> + * @dev: pointer to device tree node
> + * @index: zero-based index of the irq
> + * Return: True if provided irq index for #dev is wake capable. False otherwise.
> + */
> +static bool __of_irq_wake_capable(const struct device_node *dev, int index)
> +{
> + int wakeindex;
> +
> + if (!of_property_read_bool(dev, "wakeup-source"))
> + return false;
> +
> + wakeindex = of_property_match_string(dev, "interrupt-names", "wakeup");
> + return wakeindex < 0 || wakeindex == index;
If a device has multiple interrupts, but none named "wakeup" you are
saying all the interrupts are wakeup capable. That's not right though.
Only the device knows which interrupts are wakeup capable. You need:
return wakeindex >= 0 && wakeindex == index;
Rob
next prev parent reply other threads:[~2023-12-13 22:20 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20231213110009.v1.1.Ifd0903f1c351e84376d71dbdadbd43931197f5ea@changeid>
2023-12-13 18:00 ` [PATCH v1 2/6] arm: arm64: dts: Enable cros-ec-spi as wake source Mark Hasemeyer
2023-12-13 18:08 ` Krzysztof Kozlowski
2023-12-13 22:11 ` Rob Herring
2023-12-14 21:04 ` Mark Hasemeyer
2023-12-14 22:20 ` Rob Herring
2023-12-14 10:55 ` AngeloGioacchino Del Regno
2023-12-14 11:53 ` Konrad Dybcio
2023-12-13 18:00 ` [PATCH v1 3/6] of: irq: add wake capable bit to of_irq_resource() Mark Hasemeyer
2023-12-13 19:44 ` Andy Shevchenko
2023-12-13 22:19 ` Rob Herring [this message]
2023-12-14 21:05 ` Mark Hasemeyer
2023-12-15 15:30 ` Rob Herring
2023-12-15 20:56 ` Mark Hasemeyer
2023-12-18 10:49 ` Sudeep Holla
2023-12-13 18:00 ` [PATCH v1 4/6] of: irq: Add default implementation for of_irq_to_resource() Mark Hasemeyer
2023-12-13 19:45 ` 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=20231213221959.GC2115075-robh@kernel.org \
--to=robh@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=frowand.list@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=markhas@chromium.org \
--cc=rrangel@chromium.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).