[PATCH v9 02/12] reset: Add Realtek basic reset support

Yu-Chun Lin [林祐君] eleanor.lin at realtek.com
Thu Jun 25 03:02:59 PDT 2026


Hi Philipp,

> On Mi, 2026-06-24 at 19:29 +0800, Yu-Chun Lin wrote:
> > Signed-off-by: Yu-Chun Lin <eleanor.lin at realtek.com>
> > ---
> > +static int rtk_reset_deassert(struct reset_controller_dev *rcdev,
> > +                           unsigned long idx) {
> > +     struct rtk_reset_data *data = to_rtk_reset_controller(rcdev);
> > +     const struct rtk_reset_desc *desc;
> > +     u32 mask, val;
> > +
> > +     desc = rtk_reset_get_desc(data, idx);
> > +     mask = desc->write_en ? (0x3U << desc->bit) : BIT(desc->bit);
> > +     val = mask;
> > +
> > +     return regmap_update_bits(data->regmap, desc->ofs, mask, val);
> 
> You can use regmap_set_bits() here.
> 

Ack.

> > +}
> > +
> > +static int rtk_reset_status(struct reset_controller_dev *rcdev,
> > +                         unsigned long idx) {
> > +     struct rtk_reset_data *data = to_rtk_reset_controller(rcdev);
> > +     const struct rtk_reset_desc *desc;
> > +     u32 val;
> 
>         unsigned int val;
> 

Ack.

> > +     int ret;
> > +
> > +     desc = rtk_reset_get_desc(data, idx);
> > +     ret = regmap_read(data->regmap, desc->ofs, &val);
> > +     if (ret)
> > +             return ret;
> > +
> > +     return !((val >> desc->bit) & 1); }
> > +
> > +static const struct reset_control_ops rtk_reset_ops = {
> > +     .assert   = rtk_reset_assert,
> > +     .deassert = rtk_reset_deassert,
> > +     .status   = rtk_reset_status,
> > +};
> > +
> > +/* The caller must initialize data->descs, data->rcdev.nr_resets and
> > + * data->rcdev.owner before calling rtk_reset_controller_add().
> > + */
> > +int rtk_reset_controller_add(struct device *dev,
> > +                          struct rtk_reset_data *data) {
> > +     data->regmap          = dev_get_platdata(dev);
> > +     data->rcdev.ops       = &rtk_reset_ops;
> > +     data->rcdev.dev       = dev;
> > +     data->rcdev.of_node   = dev->parent->of_node;
> 
> This split rcdev initialization is more hassle than it is worth.
> Please just export rtk_reset_ops and duplicate the regmap/ops/dev/of_node
> assignment in the probe functions.
> 
> Alternatively, consolidate the probe function and export it from here.
> 

Thanks for your suggestion. I will go with your first approach in v10.

Best Regards,
Yu-Chun

> regards
> Philipp


More information about the linux-arm-kernel mailing list