Re: [PATCH 3/3 v3] ASoC: OMAP: Enhance OMAP1510 DMA progress software counter

2009-08-24 Thread Tony Lindgren
* Jarkko Nikula jhnik...@gmail.com [090818 19:55]:
 On Tue, 18 Aug 2009 14:45:41 +0100
 Mark Brown broo...@opensource.wolfsonmicro.com wrote:
 
  On Tue, Aug 18, 2009 at 03:42:05PM +0200, Janusz Krzysztofik wrote:
  
   And now, how is the patch 1/3 supposed to get into the mainline? Whom  
   should I ping from time to time to get it integrated? If not then, as  
   you know for sure, applying patch 2/3 whithout 1/3 will result in ASoC  
   support for OMAP1510 broken.
  
  Normally the OMAP tree, though that's possibly a bit tricky due to the
  ARM tree closing early.  If Tony's OK with merging via the ALSA tree we
  could also apply the ARM patch there?
 
 I would say that it's better to keep in Tony's hand since otherwise
 there can be risk for DMA code being out-of-sync as there are quite
 frequent other PM, OMAP4, errata, etc. patches coming into it.
 
 Of course it means that OMAP1510 audio is broken until the patch 1/3 is
 merged but probably patch can be merged as a fix if merge window is
 missed.

Already replied in another part of the thread, but just for the archives:

Since we don't have other dma or mcbsp patches going in right now,
let's merge these all via the alsa list so audio keeps working.

Regards,

Tony
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 3/3 v3] ASoC: OMAP: Enhance OMAP1510 DMA progress software counter

2009-08-18 Thread Janusz Krzysztofik

Mark Brown wrote:

On Mon, Aug 17, 2009 at 12:26:05PM +0300, Jarkko Nikula wrote:


I'm fine with this 3rd version. Probably Mark would like to have git
format-patch formatted version for avoiding manual commit log editing.



Acked-by: Jarkko Nikula jhnik...@gmail.com


Applied both 2-3, thanks.


Jarkko, Mark,

Thanks.

And now, how is the patch 1/3 supposed to get into the mainline? Whom 
should I ping from time to time to get it integrated? If not then, as 
you know for sure, applying patch 2/3 whithout 1/3 will result in ASoC 
support for OMAP1510 broken.


Thanks,
Janusz

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 3/3 v3] ASoC: OMAP: Enhance OMAP1510 DMA progress software counter

2009-08-18 Thread Jarkko Nikula
On Tue, 18 Aug 2009 14:45:41 +0100
Mark Brown broo...@opensource.wolfsonmicro.com wrote:

 On Tue, Aug 18, 2009 at 03:42:05PM +0200, Janusz Krzysztofik wrote:
 
  And now, how is the patch 1/3 supposed to get into the mainline? Whom  
  should I ping from time to time to get it integrated? If not then, as  
  you know for sure, applying patch 2/3 whithout 1/3 will result in ASoC  
  support for OMAP1510 broken.
 
 Normally the OMAP tree, though that's possibly a bit tricky due to the
 ARM tree closing early.  If Tony's OK with merging via the ALSA tree we
 could also apply the ARM patch there?

I would say that it's better to keep in Tony's hand since otherwise
there can be risk for DMA code being out-of-sync as there are quite
frequent other PM, OMAP4, errata, etc. patches coming into it.

Of course it means that OMAP1510 audio is broken until the patch 1/3 is
merged but probably patch can be merged as a fix if merge window is
missed.


-- 
Jarkko
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 3/3 v3] ASoC: OMAP: Enhance OMAP1510 DMA progress software counter

2009-08-17 Thread Jarkko Nikula
On Tue, 11 Aug 2009 21:44:29 +0200
Janusz Krzysztofik jkrzy...@tis.icnet.pl wrote:

 Enhance period_index accuracy, particularly just before buffer rewind, by
 making use of DMA interrupt status flags in addition to simply counting up
 interrupts.
 
 Changes since v2:
-   }
+   } else if (stat == OMAP_DMA_LAST_IRQ)
+   return;
  
   Is this test needed? This interrupt is set only for playback on
   omap1510 so this looks null-op.
 
  You're right, I have put it here before limiting the flag request to
  playback on OMAP1510 only. So it can be omitted...
 
+   omap_enable_dma_irq(prtd-dma_ch, OMAP_DMA_FRAME_IRQ |
+   OMAP_DMA_LAST_IRQ);
  
   Indent OMAP_DMA_LAST_IRQ with tab(s) and spaces to the same column
   than OMAP_DMA_FRAME_IRQ. Looks nicer then.
 
  OK, will fix it.
 
   Should the
   OMAP_DMA_BLOCK_IRQ to be set since it is handled in omap_pcm_dma_irq?
 
  This one is already requested from inside omap_request_dma() and used
  inside omap1_dma_handle_ch() in addition to passing it to us.
 But for less confusion, it'll be better if requested from here too.
 
I'm fine with this 3rd version. Probably Mark would like to have git
format-patch formatted version for avoiding manual commit log editing.

Acked-by: Jarkko Nikula jhnik...@gmail.com
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 3/3 v3] ASoC: OMAP: Enhance OMAP1510 DMA progress software counter

2009-08-11 Thread Janusz Krzysztofik
Enhance period_index accuracy, particularly just before buffer rewind, by
making use of DMA interrupt status flags in addition to simply counting up
interrupts.

Changes since v2:
   -   }
   +   } else if (stat == OMAP_DMA_LAST_IRQ)
   +   return;
 
  Is this test needed? This interrupt is set only for playback on
  omap1510 so this looks null-op.

 You're right, I have put it here before limiting the flag request to
 playback on OMAP1510 only. So it can be omitted...

   +   omap_enable_dma_irq(prtd-dma_ch, OMAP_DMA_FRAME_IRQ |
   +   OMAP_DMA_LAST_IRQ);
 
  Indent OMAP_DMA_LAST_IRQ with tab(s) and spaces to the same column
  than OMAP_DMA_FRAME_IRQ. Looks nicer then.

 OK, will fix it.

  Should the
  OMAP_DMA_BLOCK_IRQ to be set since it is handled in omap_pcm_dma_irq?

 This one is already requested from inside omap_request_dma() and used
 inside omap1_dma_handle_ch() in addition to passing it to us.
But for less confusion, it'll be better if requested from here too.

Changes since v1:
1. Fix buggy DMA interrupt handling in case of multiple status flags set in
   parallel.
2. Enable OMAP_DMA_LAST_IRQ only for playback on OMAP1510.

This patch applies on top of patch 2 from this series:
[RFC][PATCH 2/3] ASoC: OMAP: Make use of DMA channel self linking on OMAP1510

Created against linux-2.6.31-rc5.

Tested on Amstrad Delta.

Signed-off-by: Janusz Krzysztofik jkrzy...@tis.icnet.pl

---
--- linux-2.6.31-rc5/sound/soc/omap/omap-pcm.c.orig 2009-08-11 
21:13:22.0 +0200
+++ linux-2.6.31-rc5/sound/soc/omap/omap-pcm.c  2009-08-11 21:34:34.0 
+0200
@@ -68,8 +68,21 @@ static void omap_pcm_dma_irq(int ch, u16
 * that can be used by omap_pcm_pointer() instead.
 */
spin_lock_irqsave(prtd-lock, flags);
+   if ((stat == OMAP_DMA_LAST_IRQ) 
+   (prtd-period_index == runtime-periods - 1)) {
+   /* we are in sync, do nothing */
+   spin_unlock_irqrestore(prtd-lock, flags);
+   return;
+   }
if (prtd-period_index = 0) {
-   if (++prtd-period_index == runtime-periods) {
+   if (stat  OMAP_DMA_BLOCK_IRQ) {
+   /* end of buffer reached, loop back */
+   prtd-period_index = 0;
+   } else if (stat  OMAP_DMA_LAST_IRQ) {
+   /* update the counter for the last period */
+   prtd-period_index = runtime-periods - 1;
+   } else if (++prtd-period_index = runtime-periods) {
+   /* end of buffer missed? loop back */
prtd-period_index = 0;
}
}
@@ -175,7 +188,12 @@ static int omap_pcm_prepare(struct snd_p
dma_params.frame_count  = runtime-periods;
omap_set_dma_params(prtd-dma_ch, dma_params);
 
-   omap_enable_dma_irq(prtd-dma_ch, OMAP_DMA_FRAME_IRQ);
+   if ((cpu_is_omap1510()) 
+   (substream-stream == SNDRV_PCM_STREAM_PLAYBACK))
+   omap_enable_dma_irq(prtd-dma_ch, OMAP_DMA_FRAME_IRQ |
+ OMAP_DMA_LAST_IRQ | OMAP_DMA_BLOCK_IRQ);
+   else
+   omap_enable_dma_irq(prtd-dma_ch, OMAP_DMA_FRAME_IRQ);
 
return 0;
 }
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html