OMAP1 realtime patch patch-2.6.23-rt1-omap1
Subsystems (4)
Update of OMAP1 realtime patch to most recent -rt patch patch-2.6.23-rt1.
As ususal, use recent OMAP git (2.6.23-omap1) as starting point, then apply patch-2.6.23-rt1 [1] ignoring conflicts, and on top of this patch in attachment.
Cheers,
Dirk
[1] http://www.kernel.org/pub/linux/kernel/projects/rt/
kernel/irq/manage.c +14 -0
@@ -637,6 +637,7 @@ static void thread_simple_irq(irq_desc_tunsigned int irq = desc - irq_desc;irqreturn_t action_ret; + restart:if (action && !desc->depth) {spin_unlock (&desc->lock); action_ret =handle_IRQ_event (irq, action);
@@ -645,6 +646,19 @@ static void thread_simple_irq(irq_desc_tif (!noirqdebug)note_interrupt (irq, desc, action_ret); } + +/* +* Some boards will disable an interrupt when it +* sets IRQ_PENDING . So we have to remove the flag +* and re-enable to handle it. +*/ +if (desc->status &IRQ_PENDING ) { + desc->status &= ~IRQ_PENDING ; +if (desc->chip) + desc->chip->enable (irq); + goto restart; + } + desc->status &= ~IRQ_INPROGRESS ; }
sound/arm/omap/omap-alsa.c +0 -4
@@ -165,10 +165,8 @@ static u_int audio_get_dma_pos(struct au*/ static void audio_stop_dma (struct audio_stream *s) { -unsigned long flags;ADEBUG (); -spin_lock_irqsave (&s->dma_lock, flags); s->active =0 ; s->period =0 ; s->periods =0 ;
@@ -177,8 +175,6 @@ static void audio_stop_dma(struct audio_omap_stop_alsa_sound_dma (s);omap_clear_alsa_sound_dma (s); - -spin_unlock_irqrestore (&s->dma_lock, flags); }/*
arch/arm/plat-omap/gpio.c +1 -1
@@ -150,7 +150,7 @@ struct gpio_bank {u32 saved_fallingdetect;u32 saved_risingdetect;#endif -spinlock_t lock; +raw_spinlock_t lock; };#define METHOD_MPUIO 0