RE: [PATCH v4 10/11] regulator: Add Renesas PMIC RAA215300 driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Geert,

Thanks for the feedback.

> Subject: Re: [PATCH v4 10/11] regulator: Add Renesas PMIC RAA215300
> driver
> 
> Hi Biju,
> 
> On Thu, May 18, 2023 at 1:37 PM Biju Das <biju.das.jz@xxxxxxxxxxxxxx>
> wrote:
> >
> > The RAA215300 is a 9-channel PMIC that consists of
> >  * Internally compensated regulators
> >  * built-in Real Time Clock (RTC)
> >  * 32kHz crystal oscillator
> >  * coin cell battery charger
> >
> > The RTC on RAA215300 is similar to the IP found in the ISL1208.
> > The existing driver for the ISL1208 works for this PMIC too, however
> > the RAA215300 exposes two devices via I2C, one for the RTC IP, and one
> > for everything else. The RTC IP has to be enabled by the other I2C
> > device, therefore this driver is necessary to get the RTC to work.
> >
> > The external oscillator bit is inverted on PMIC version 0x11.
> >
> > Add PMIC RAA215300 driver for enabling RTC block and instantiating RTC
> > device based on PMIC version.
> >
> > Signed-off-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx>
> > ---
> > v3->v4:
> >  * Moved from mfd->regulator as it doesn't use MFD APIs
> >  * Dropped handling "renesas,rtc-enabled" property and instead used
> >    clock-names to determine RTC is enabled or not and then
> instantiating
> >    RTC device.
> 
> Thanks for your patch!
> 
> > --- /dev/null
> > +++ b/drivers/regulator/raa215300.c
> 
> > +       xin = devm_clk_get_optional(&client->dev, "xin");
> > +       if (IS_ERR_OR_NULL(xin)) {
> > +               clkin = devm_clk_get(&client->dev, "clkin");
> > +               if (IS_ERR(clkin))
> > +                       return PTR_ERR(clkin);
> > +
> > +               int_osc_en = false;
> > +               xin = NULL;
> > +       } else {
> > +               clkin = NULL;
> > +       }
> > +
> > +       if (xin || clkin)  {
> 
> Perhaps just "if (of_property_present(np, "clocks"))"?

Agreed.

Cheers,
Biju

> 
> > +               struct i2c_client *rtc_client;
> > +
> > +               /* Enable RTC block */
> > +               regmap_update_bits(regmap, RAA215300_REG_BLOCK_EN,
> > +                                  RAA215300_REG_BLOCK_EN_RTC_EN,
> > +                                  RAA215300_REG_BLOCK_EN_RTC_EN);
> > +
> > +               rtc_client = i2c_new_ancillary_device(client, "rtc",
> > +
> RAA215300_RTC_DEFAULT_ADDR,
> > +                                                     pmic_version >=
> 0x12 ?
> > +                                                     "isl1208" :
> "raa215300_a0");
> > +               if (IS_ERR(rtc_client))
> > +                       return PTR_ERR(rtc_client);
> > +
> > +               ret = devm_add_action_or_reset(dev,
> > +
> raa215300_rtc_unregister_device,
> > +                                              rtc_client);
> > +               if (ret < 0)
> > +                       return ret;
> > +       }
> 
> Gr{oetje,eeting}s,
> 
>                         Geert
> 
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-
> m68k.org
> 
> In personal conversations with technical people, I call myself a hacker.
> But when I'm talking to journalists I just say "programmer" or something
> like that.
>                                 -- Linus Torvalds




[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux