Hi Claudiu, Thanks for your patch! On Fri, Aug 30, 2024 at 3:02 PM Claudiu <claudiu.beznea@xxxxxxxxx> wrote: > From: Claudiu Beznea <claudiu.beznea.uj@xxxxxxxxxxxxxx> > > The VBATTB IP of the Renesas RZ/G3S SoC controls the clock that is used > by the RTC. The input to the VBATTB could be a 32KHz crystal oscillator Please drop "oscillator". > or an external clock device. > > The HW block diagram for the clock generator is as follows: > > +----------+ XC `\ > RTXIN --->| |----->| \ +----+ VBATTCLK > | 32K clock| | |----->|gate|-----------> > | osc | XBYP | | +----+ > RTXOUT --->| |----->| / > +----------+ , > > After discussions w/ Stephen Boyd the clock tree associated with this > hardware block was exported in Linux as: > > vbattb-xtal > xbyp > xc > mux > vbattbclk > > where: > - input-xtal is the input clock (connected to RTXIN, RTXOUT pins) > - xc, xbyp are mux inputs > - mux is the internal mux > - vbattclk is the gate clock that feeds in the end the RTC > > to allow selecting the input of the MUX though assigned-clock DT > properties, using the already existing clock drivers and avoid adding > other DT properties. If the crystal oscillator is connected as on RTXIN, Please drop "oscillator". > RTXOUT pins the XC will be selected as mux input. If an external clock > device is connected on RTXIN, RTXOUT pins the XBYP will be selected as > mux input. > > The load capacitance of the on-board crystal oscillator can be configured s/on-board/internal/ > with renesas,vbattb-load-nanofarads DT property. > > Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@xxxxxxxxxxxxxx> > --- /dev/null > +++ b/drivers/clk/renesas/clk-vbattb.c > @@ -0,0 +1,204 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * VBATTB clock driver > + * > + * Copyright (C) 2024 Renesas Electronics Corp. > + */ > + > +#include <linux/cleanup.h> > +#include <linux/clk-provider.h> > +#include <linux/device.h> > +#include <linux/io.h> > +#include <linux/mod_devicetable.h> > +#include <linux/of.h> > +#include <linux/platform_device.h> > +#include <linux/pm_runtime.h> > +#include <linux/reset.h> > + > +#include <dt-bindings/clock/r9a08g045-vbattb.h> > + > +#define VBATTB_BKSCCR 0x1c > +#define VBATTB_BKSCCR_SOSEL_BIT 6 > +#define VBATTB_SOSCCR2 0x24 > +#define VBATTB_SOSCCR2_SOSTP2_BIT 0 > +#define VBATTB_XOSCCR 0x30 > +#define VBATTB_XOSCCR_OUTEN_BIT 16 Please either drop the "_BIT"-suffixes... > +#define VBATTB_XOSCCR_XSEL GENMASK(1, 0) or add a "_MASK"-suffix here. > +#define VBATTB_XOSCCR_XSEL_4_PF 0x0 > +#define VBATTB_XOSCCR_XSEL_7_PF 0x1 > +#define VBATTB_XOSCCR_XSEL_9_PF 0x2 > +#define VBATTB_XOSCCR_XSEL_12_5_PF 0x3 The rest LGTM. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx 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