Re: [PATCH v4 7/8] clocksource: Add a new timer-ingenic driver

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

 



Le 3 avr. 2018 6:59 AM, Daniel Lezcano <daniel.lezcano@xxxxxxxxxx> a écrit :
>
> On 31/03/2018 19:46, Paul Cercueil wrote: 
> > Le 2018-03-31 10:10, Daniel Lezcano a écrit : 
> >> On 29/03/2018 16:52, Paul Cercueil wrote: 
> >>> 
> >>> 
> >>> Le mer. 28 mars 2018 à 18:25, Daniel Lezcano <daniel.lezcano@xxxxxxxxxx> 
> >>> a écrit : 
> >>>> On 28/03/2018 17:15, Paul Cercueil wrote: 
> >>>>>  Le 2018-03-24 07:26, Daniel Lezcano a écrit : 
> >>>>>>  On 18/03/2018 00:29, Paul Cercueil wrote: 
> >>>>>>>  This driver will use the TCU (Timer Counter Unit) present on the 
> >>>>>>> Ingenic 
> >>>>>>>  JZ47xx SoCs to provide the kernel with a clocksource and timers. 
> >>>>>> 
> >>>>>>  Please provide a more detailed description about the timer. 
> >>>>> 
> >>>>>  There's a doc file for that :) 
> >>>> 
> >>>> Usually, when there is a new driver I ask for a description in the 
> >>>> changelog for reference. 
> >>>> 
> >>>>>>  Where is the clocksource ? 
> >>>>> 
> >>>>>  Right, there is no clocksource, just timers. 
> >>>>> 
> >>>>>>  I don't see the point of using channel idx and pwm checking here. 
> >>>>>> 
> >>>>>>  There is one clockevent, why create multiple channels ? Can't you 
> >>>>>> stick 
> >>>>>>  to the usual init routine for a timer. 
> >>>>> 
> >>>>>  So the idea is that we use all the TCU channels that won't be used 
> >>>>> for PWM 
> >>>>>  as timers. Hence the PWM checking. Why is this bad? 
> >>>> 
> >>>> It is not bad but arguable. By checking the channels used by the pwm in 
> >>>> the code, you introduce an adherence between two subsystems even if it 
> >>>> is just related to the DT parsing part. 
> >>>> 
> >>>> As it is not needed to have more than one timer in the time framework 
> >>>> (at least with the same characteristics), the pwm channels check is 
> >>>> pointless. We can assume the author of the DT file is smart enough to 
> >>>> prevent conflicts and define a pwm and a timer properly instead of 
> >>>> adding more code complexity. 
> >>>> 
> >>>> In addition, simplifying the code will allow you to use the timer-of 
> >>>> code and reduce very significantly the init function. 
> >>> 
> >>> That's what I had in my V1 and V2, my DT node for the timer-ingenic 
> >>> driver 
> >>> had a "timers" property (e.g. "timers = <4 5>;") to select the channels 
> >>> that 
> >>> should be used as timers. Then Rob told me I shouldn't do that, and 
> >>> instead 
> >>> detect the channels that will be used for PWM. 
> >>> 
> >> 
> >> [ ... ] 
> >> 
> >> How do you specify the channels used for PWM ? 
> > 
> > To detect the channels that will be used as PWM I parse the whole 
> > devicetree 
> > searching for "pwms" properties; check that the PWM handle is for our 
> > TCU PWM 
> > driver; then read the PWM number from there. 
> > 
> > Of course it's hackish, and it only works for devicetree. I preferred the 
> > method with the "timers" property. 
>
> Do you have a DT portion describing that? Eg somewhere in the kernel's 
> git tree ? 
>
> From what I understood, we can specify the channel for a pwm but not for 
> a timer, there is certainly something I'm missing. 

No, it was something custom. There is no standard way to specify a channel to use for a timer.

> >>>>>>> 
> >>>>>>>  +config INGENIC_TIMER 
> >>>>>>>  +    bool "Clocksource/timer using the TCU in Ingenic JZ SoCs" 
> >>>>>>>  +    depends on MACH_INGENIC || COMPILE_TEST 
> >>>>>> 
> >>>>>>  bool "Clocksource/timer using the TCU in Ingenic JZ SoCs" if 
> >>>>>> COMPILE_TEST 
> >>>>>> 
> >>>>>>  Remove the depends MACH_INGENIC. 
> >>>>> 
> >>>>>  This driver is not useful on anything else than Ingenic SoCs, why 
> >>>>> should I 
> >>>>>  remove MACH_INGENIC then? 
> >>>> 
> >>>> For COMPILE_TEST on x86. 
> >>> 
> >>> Well that's a logical OR right here, so it will work... 
> >> 
> >> Right, I missed the second part of the condition. For consistency 
> >> reason, we don't add a dependency on the platform. The platform will 
> >> select it. Look the other timer options and you will see there is no 
> >> MACH deps. I'm trying consolidating all these options to have same 
> >> format and hopefully factor them out. 
> > 
> > I'm all for factorisation, but what I dislike with not depending on 
> > MACH_INGENIC, is that the driver now appears in the menuconfig for 
> > every arch, even if it only applies to one MIPS SoC. 
>
> Can you do the following change? 
>
> bool "Clocksource/timer using the TCU in Ingenic JZ SoCs" if COMPILE_TEST 
>
> so it will appear only when the COMPILE_TEST option is set whatever the 
> platform which is the purpose of this option to increase compile test 
> coverage. 

Ok, I get it now. It won't appear in the menuconfig unless COMPILE_TEST is selected, but I can still select it from the platform.

Thanks!
-Paul

[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux