Re: OMAP: DSS2: Common IRQ handler for all OMAPs

archit taneja
2011-02-15T04:27:33Z

Hi,

On Monday 14 February 2011 08:00 PM, Balbi, Felipe wrote:
> Hi,
>
> On Mon, Feb 14, 2011 at 04:21:47PM +0200, Tomi Valkeinen wrote:
>> On Wed, 2011-02-02 at 08:56 +0000, archit taneja wrote:
>>> OMAP2 has an irq line dedicated for DISPC interrupts, there is no DSI
>>> on omap2.
>>> OMAP3 has a common irq line for DISPC and DSI interrupts.
>>> OMAP4 has seperate irq lines for DISPC and DSI Interrupts.
>>>
>>> Use dss_features to have a common DSS irq handler for all OMAP revisions.
>>>
>>> Also, use a member of the global dss structure to store the irq number
>>> as it is used in 2 functions.
>>
>> It's good to remove the cpu_is_xxxx() calls, but I'm not quite sure
>> about this patch...
>>
>> Could we use shared interrupt handlers here, so that dss.c would handle
>> only DISPC interrupts (or should it be even in dispc.c?) and dsi.c would
>> handle DSI interrupts?

Could you elaborate this a bit more?

>>
>> On OMAP3 both dss.c and dsi.c would register to the same interrupt, and
>> they would need to check if the interrupt was really for them. On OMAP4
>> the code could be the same, even though the check is unnecessary.

The code can't be exactly the same. The DSS_IRQSTATUS register used on
OMAP3 doesn't exist on OMAP4. A read to this register on OMAP4 would
cause a hang/crash.

>>
>> Also, as I mentioned in the email I sent some minutes ago, this patch
>> fixes the free_irq call in dss_exit. Things like that should never be
>> fixed silently, even if it's trivial like in this case.
>

Will take care of this from now on.

> does it make sense to install an irq_chip for that ? I mean, can you
> mask/unmask dss and or dsi IRQs ? If you can, then it might make sense
> to take a look into GENIRQ and install an irq_chip for that. Then both
> dsi and dss would be able to use standard request_irq() API.
>

We could disable dsi IRQs by masking all the possible interrupt events
in DSI_IRQSTATUS. The same goes for dispc. Is this what you meant by
masking/unmasking irqs?

<snip>

Regards,
Archit