Hi Geert, Thank you for your review. On Friday, January 13, 2017, Geert Uytterhoeven wrote: > > +The OSTM comes with 2 independent channels. > > +We will use the first channel (OSTM0) as a free running clocksource > > +and the second channel (OSTM1) as a interrupt driven clock event. > > + > > +Additionally we will use the clocksource channel (OTSM0) for the > > +system schedule timer sched_clock(). > > The above two sentences are software policy, not hardware description. > Hence they do not belong in the DT bindings document. > You can move them to the commit description, though. OK. > > +Required Properties: > > + > > + - compatible: must be one or more of the following: > > + - "renesas,ostm-r7s72100" for the r7s72100 OSTM > > Please use "renesas,r7s72100-ostm" instead, to match current practices. If I look at the current r7s72100.dtsi: compatible = "renesas,r7s72100-cpg-clocks", "renesas,rz-cpg-clocks"; compatible = "renesas,r7s72100-mstp-clocks", "renesas,cpg-mstp-clocks"; compatible = "renesas,scif-r7s72100", "renesas,scif"; compatible = "renesas,rspi-r7s72100", "renesas,rspi-rz"; compatible = "renesas,riic-r7s72100", "renesas,riic-rz"; compatible = "renesas,mtu2-r7s72100", "renesas,mtu2"; compatible = "renesas,mmcif-r7s72100", "renesas,sh-mmcif"; compatible = "renesas,sdhi-r7s72100"; Is "renesas,xxx-r7s7210" the old way, and "renesas,r7s72100-xxx" is the new way?? > > + - reg: base address and length of the registers block for each timer > channel. > > + There should be 2 sets of addresses, one for each channel. > > + > > + - interrupts: interrupt specifiers for the timers. There should be 2 > > + interupts, one for each channel. > > + > > + - clocks: a list of phandle + clock-specifier pairs, one for each > entry > > + channel. There should be 2 sets, one for each channel. > > Are the channels truly independent? If yes, I think it's better to have > two separate device nodes, one for each channel. > Each channel has its own module clock, so using separate devices means > Runtime PM can manage both channels through their module clocks as soon as > you add a "power-domains" property pointing to the clock domain controller. Yes, technically they are independent channels. The way the driver is currently written, 1 instance of the driver uses 2 channels for different things. Ch0 will be set up as a 'clocksource', and ch1 will be set up as a 'clock event'. As in: static int __init ostm_timer_init(struct ostm_device *ostm) { int ret = 0; /* ostm0 will be clock source */ ret = ostm_init_clksrc(ostm); if (ret) goto err; /* use ostm0 as system scheduling clock */ ret = ostm_init_sched_clock(&ostm->clksrc); if (ret) goto err; /* ostm1 will be clock event */ ret = ostm_init_clkevt(ostm); err: return ret; } Do you think it would be better if a driver instance only does 1 thing: Either 'clocksource' or 'clock event'?? Then, I would make 2 ostm nodes and pass in the mode I would like it operate in? For example: &ostm0 { mode = "clocksource"; status = "okay"; }; &ostm1 { mode = "clock-event"; status = "okay"; }; Thank you, Chris