From: Dan Carpenter <dan.carpenter@oracle.com>
To: Sergio Paracuellos <sergio.paracuellos@gmail.com>
Cc: sboyd@kernel.org, linux-clk@vger.kernel.org,
gregkh@linuxfoundation.org, devicetree@vger.kernel.org,
robh+dt@kernel.org, linux-staging@lists.linux.dev,
neil@brown.name, linux-kernel@vger.kernel.org, john@phrozen.org
Subject: Re: [PATCH 3/4] clk: ralink: make system controller node a reset provider
Date: Wed, 6 Oct 2021 11:29:03 +0300 [thread overview]
Message-ID: <20211006082903.GZ2048@kadam> (raw)
In-Reply-To: <20211006061204.2854-4-sergio.paracuellos@gmail.com>
On Wed, Oct 06, 2021 at 08:12:03AM +0200, Sergio Paracuellos wrote:
> @@ -398,6 +401,76 @@ static void __init mt7621_clk_init(struct device_node *node)
> }
> CLK_OF_DECLARE_DRIVER(mt7621_clk, "mediatek,mt7621-sysc", mt7621_clk_init);
>
> +struct mt7621_rst {
> + struct reset_controller_dev rcdev;
> + struct regmap *sysc;
> +};
> +
> +static inline struct mt7621_rst *to_mt7621_rst(struct reset_controller_dev *dev)
No need to mark this as inline. The compiler should do it automatically
or it will ignore the inline.
> +{
> + return container_of(dev, struct mt7621_rst, rcdev);
> +}
> +
> +static int mt7621_assert_device(struct reset_controller_dev *rcdev,
> + unsigned long id)
> +{
> + struct mt7621_rst *data = to_mt7621_rst(rcdev);
> + struct regmap *sysc = data->sysc;
> +
> + if (id == MT7621_RST_SYS)
> + return -1;
Please, return proper error codes.
> +
> + return regmap_update_bits(sysc, SYSC_REG_RESET_CTRL, BIT(id), BIT(id));
> +}
> +
> +static int mt7621_deassert_device(struct reset_controller_dev *rcdev,
> + unsigned long id)
> +{
> + struct mt7621_rst *data = to_mt7621_rst(rcdev);
> + struct regmap *sysc = data->sysc;
> +
> + if (id == MT7621_RST_SYS)
> + return -1;
Here too.
> +
> + return regmap_update_bits(sysc, SYSC_REG_RESET_CTRL, BIT(id), 0);
> +}
> +
> +static int mt7621_reset_device(struct reset_controller_dev *rcdev,
> + unsigned long id)
> +{
> + int ret;
> +
> + ret = mt7621_assert_device(rcdev, id);
> + if (ret < 0)
> + return ret;
> +
> + return mt7621_deassert_device(rcdev, id);
> +}
> +
> +static const struct reset_control_ops reset_ops = {
> + .reset = mt7621_reset_device,
> + .assert = mt7621_assert_device,
> + .deassert = mt7621_deassert_device
> +};
> +
> +static int mt7621_reset_init(struct device *dev, struct regmap *sysc)
> +{
> + struct mt7621_rst *rst_data;
> +
> + rst_data = kzalloc(sizeof(*rst_data), GFP_KERNEL);
Can we use devm_ to allocate this or do we need to clean up if
devm_reset_controller_register() fails? Also a free in the release
function I suppose. (Please, use devm_).
> + if (!rst_data)
> + return -ENOMEM;
> +
> + rst_data->sysc = sysc;
> + rst_data->rcdev.ops = &reset_ops;
> + rst_data->rcdev.owner = THIS_MODULE;
> + rst_data->rcdev.nr_resets = 32;
> + rst_data->rcdev.of_reset_n_cells = 1;
> + rst_data->rcdev.of_node = dev_of_node(dev);
> +
> + return devm_reset_controller_register(dev, &rst_data->rcdev);
> +}
regards,
dan carpenter
next prev parent reply other threads:[~2021-10-06 8:29 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-06 6:12 [PATCH 0/4] clk: ralink: make system controller a reset provider Sergio Paracuellos
2021-10-06 6:12 ` [PATCH 1/4] dt-bindings: reset: add dt binding header for Mediatek MT7621 resets Sergio Paracuellos
2021-10-06 6:12 ` [PATCH 2/4] dt-bindings: clock: mediatek,mt7621-sysc: add '#reset-cells' property Sergio Paracuellos
2021-10-06 6:12 ` [PATCH 3/4] clk: ralink: make system controller node a reset provider Sergio Paracuellos
2021-10-06 8:29 ` Dan Carpenter [this message]
2021-10-06 10:02 ` Sergio Paracuellos
2021-10-06 10:14 ` Dan Carpenter
2021-10-06 10:20 ` Sergio Paracuellos
2021-10-06 6:12 ` [PATCH 4/4] staging: mt7621-dts: align resets with binding documentation Sergio Paracuellos
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=20211006082903.GZ2048@kadam \
--to=dan.carpenter@oracle.com \
--cc=devicetree@vger.kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=john@phrozen.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-staging@lists.linux.dev \
--cc=neil@brown.name \
--cc=robh+dt@kernel.org \
--cc=sboyd@kernel.org \
--cc=sergio.paracuellos@gmail.com \
/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.