From mboxrd@z Thu Jan 1 00:00:00 1970 From: ladis@linux-mips.org (Ladislav Michl) Date: Wed, 13 Dec 2017 10:15:27 +0100 Subject: [PATCH v5 1/8] clocksource: dmtimer: Remove all the exports In-Reply-To: <20171212182150.GF14441@atomide.com> References: <1513059137-21593-2-git-send-email-j-keerthy@ti.com> <20171212071624.GA3453@lenoch> <20171212080134.GA9589@lenoch> <9de9b3dc-09f4-d58b-ba5a-60fcb563c665@ti.com> <20171212081923.GA10084@lenoch> <7c92b0c2-8784-9c14-66b0-a19fe68f08ad@ti.com> <20171212170054.GD14441@atomide.com> <20171212180317.GB10337@lenoch> <20171212182150.GF14441@atomide.com> Message-ID: <20171213091527.GA18859@lenoch> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Tue, Dec 12, 2017 at 10:21:50AM -0800, Tony Lindgren wrote: > * Ladislav Michl [171212 18:06]: > > I do not follow. Each general-purpose timer module has its own interrupt line, > > so claiming that irq directly using request_irq seems enough. Could you > > explain interrupt controller idea a bit more? > > Well let's assume we have drivers/clocksource/timer-dm.c implement > an irq controller. Then the pwm driver would just do: > > pwm9: dmtimer-pwm { > compatible = "ti,omap-dmtimer-pwm"; > #pwm-cells = <3>; > ti,timers = <&timer9>; > ti,clock-source = <0x00>; /* timer_sys_ck */ > interrupts-extended = <&timer9 IRQ_TYPE_SOMETHING>; > }; > > Then you can do whatever you need to in the pwm driver with > enable_irq/disable_irq + a handler? That seems to work. Now should we map 1:1 to timer interrupt or have separate interrupt for match, overflow and capture? Former would need some more dm_timer_ops to determine interrupt source, while later would work "automagically" - but I haven't tested it yet. > If reading the line status is needed.. Then maybe the GPIO framework > needs to have hardware timer support instead? It does not seem OMAP can read event pin value in event capture mode. > Anyways, just thinking out loud how we could have a Linux generic > hardware timer framework that drivers like pwm could then use. I need a bit longer chain: dmtimer -> pwm -> rc (which calls ir_raw_event_store from interrupt) Is extending pwm core with interrpt callback the right thing there? Something like: (*pulse_captured)(ktime_t width, ktime_t last_edge); Thank you, ladis