lkml.org 
[lkml]   [2010]   [Jan]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 3/5] gic: Add set_type callback
Russell King - ARM Linux wrote:
> On Wed, Jan 27, 2010 at 11:32:27AM -0800, adharmap@codeaurora.org wrote:
>> + if (flow_type & (IRQ_TYPE_EDGE_RISING|IRQ_TYPE_EDGE_FALLING)) {
>> + reg_value |= (2<<bit_index);
>> + writel(reg_value, gic_dist_base(irq) + GIC_DIST_CONFIG
>> + + register_index);
>> + __set_irq_handler_unlocked(irq, handle_edge_irq);
>> + }
>> +
>> + if (flow_type & (IRQ_TYPE_LEVEL_HIGH|IRQ_TYPE_LEVEL_LOW)) {
>
> This is actually where things start to get rather sticky - because
> there may well be on-chip inverters between the GIC and external
> peripherals.
Actually the comment in gic_dist_init mentions about configuring SPI's
as level low when the GIC only supports level high. That suggests
presence of an inverter.
>
> Since the GIC can only sense one edge or one level depending on the
> hardware setup, it seems wrong to allow the configuration of both
> high and low levels, and both edges.
Agree, but this change at least lets us configure them as edge/level
triggered.

One solution (a rather easy one) is we simply reject LEVEL_LOW and
EDGE_FALLING and think as if the inverters belong to the peripherals
rather than the GIC.

Please suggest alternative implementation ideas.







\
 
 \ /
  Last update: 2010-01-28 02:47    [W:0.090 / U:0.612 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site