From: Lee Jones <lee@kernel.org>
To: Jeremy Kerr <jk@codeconstruct.com.au>
Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Arnd Bergmann <arnd@arndb.de>,
Philipp Zabel <p.zabel@pengutronix.de>,
Mark Brown <broonie@kernel.org>
Subject: Re: [RFC PATCH v3 2/2] mfd: syscon: allow reset control for syscon devices
Date: Wed, 4 Jan 2023 16:54:53 +0000 [thread overview]
Message-ID: <Y7WvXTPxyIGw5y9R@google.com> (raw)
In-Reply-To: <20221211025700.1180843-3-jk@codeconstruct.com.au>
On Sun, 11 Dec 2022, Jeremy Kerr wrote:
> Simple syscon devices may require deassertion of a reset signal in order
> to access their register set. Rather than requiring a custom driver to
> implement this, we can use the generic "resets" specifiers to link a
> reset line to the syscon.
>
> This change adds an optional reset line to the syscon device
> description, and deasserts the reset if detected.
>
> Signed-off-by: Jeremy Kerr <jk@codeconstruct.com.au>
>
> ---
> v2:
> * do reset control in the early of_syscon_register() path, rather than
> the platform device init, which isn't used.
> v3:
> * use a direct reset_control_deassert rather than handling in the
> regmap
> ---
> drivers/mfd/syscon.c | 27 +++++++++++++++++++++------
> 1 file changed, 21 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/mfd/syscon.c b/drivers/mfd/syscon.c
> index bdb2ce7ff03b..05e286a69dbe 100644
> --- a/drivers/mfd/syscon.c
> +++ b/drivers/mfd/syscon.c
> @@ -20,6 +20,7 @@
> #include <linux/platform_data/syscon.h>
> #include <linux/platform_device.h>
> #include <linux/regmap.h>
> +#include <linux/reset.h>
> #include <linux/mfd/syscon.h>
> #include <linux/slab.h>
>
> @@ -31,6 +32,7 @@ static LIST_HEAD(syscon_list);
> struct syscon {
> struct device_node *np;
> struct regmap *regmap;
> + struct reset_control *reset;
> struct list_head list;
> };
>
> @@ -40,7 +42,7 @@ static const struct regmap_config syscon_regmap_config = {
> .reg_stride = 4,
> };
>
> -static struct syscon *of_syscon_register(struct device_node *np, bool check_clk)
> +static struct syscon *of_syscon_register(struct device_node *np, bool check_res)
> {
> struct clk *clk;
> struct syscon *syscon;
> @@ -50,6 +52,7 @@ static struct syscon *of_syscon_register(struct device_node *np, bool check_clk)
> int ret;
> struct regmap_config syscon_config = syscon_regmap_config;
> struct resource res;
> + struct reset_control *reset;
>
> syscon = kzalloc(sizeof(*syscon), GFP_KERNEL);
> if (!syscon)
> @@ -114,7 +117,7 @@ static struct syscon *of_syscon_register(struct device_node *np, bool check_clk)
> goto err_regmap;
> }
>
> - if (check_clk) {
> + if (check_res) {
> clk = of_clk_get(np, 0);
> if (IS_ERR(clk)) {
> ret = PTR_ERR(clk);
> @@ -124,7 +127,17 @@ static struct syscon *of_syscon_register(struct device_node *np, bool check_clk)
> } else {
> ret = regmap_mmio_attach_clk(regmap, clk);
> if (ret)
> - goto err_attach;
> + goto err_attach_clk;
> + }
> +
> + reset = of_reset_control_get_optional_exclusive(np, NULL);
> + if (IS_ERR(reset)) {
> + ret = PTR_ERR(reset);
> + goto err_attach_clk;
> + } else {
> + ret = reset_control_deassert(reset);
> + if (ret)
> + goto err_reset;
> }
The else is superfluous, right?
Arnd, besides this are you happy with the patch?
--
Lee Jones [李琼斯]
next prev parent reply other threads:[~2023-01-04 16:57 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-11 2:56 [RFC PATCH v3 0/2] Add reset control for mfd syscon devices Jeremy Kerr
2022-12-11 2:56 ` [RFC PATCH v3 1/2] dt-bindings: mfd/syscon: Add resets property Jeremy Kerr
2022-12-11 2:57 ` [RFC PATCH v3 2/2] mfd: syscon: allow reset control for syscon devices Jeremy Kerr
2023-01-04 16:54 ` Lee Jones [this message]
2023-01-04 17:35 ` Jeremy Kerr
2023-01-04 17:57 ` Lee Jones
2023-01-04 22:34 ` Arnd Bergmann
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=Y7WvXTPxyIGw5y9R@google.com \
--to=lee@kernel.org \
--cc=arnd@arndb.de \
--cc=broonie@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=jk@codeconstruct.com.au \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=p.zabel@pengutronix.de \
--cc=robh+dt@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.