Re: [PATCH] [OMAPZOOM] OMAP : DMA: Spurious interrupt fix

2009-01-12 Thread Tony Lindgren
* Shilimkar, Santosh santosh.shilim...@ti.com [090109 15:22]:
  -Original Message-
  From: Tony Lindgren [mailto:t...@atomide.com] 
  Sent: Friday, January 09, 2009 6:27 PM
  To: Shilimkar, Santosh
  Cc: Pandita, Vikram; linux-omap@vger.kernel.org
  Subject: Re: [PATCH] [OMAPZOOM] OMAP : DMA: Spurious interrupt fix
  
  * Shilimkar, Santosh santosh.shilim...@ti.com [090109 14:52]:
-Original Message-
From: Tony Lindgren [mailto:t...@atomide.com] 
Sent: Friday, January 09, 2009 4:58 PM
To: Shilimkar, Santosh
Cc: Pandita, Vikram; linux-omap@vger.kernel.org
Subject: Re: [PATCH] [OMAPZOOM] OMAP : DMA: Spurious interrupt fix

* Shilimkar, Santosh santosh.shilim...@ti.com [090109 12:51]:
 
 Tony,
 Regarding your proposal of doing the no. of channel 
reservation during runtime has one problem. 
 
 The whole idea was not to restrict users from using all 32 
channels and hence the config option. For OMAP secure chips, 
few security drivers which will execute in secure contex 
needs dedicated DMA channels and kernel dma library can't be 
used in that case. So in such cases, required DMA channels 
can be reserved using this config option. For GP devices all 
32 channels can be used currently. 
 
 If it can done in better way, please suggest.

Well how about passing the configuration for the DMA channels
from board-*.c file then?
   This is certainly a good option if the setting is fixed for 
  a particular board type. With this how do we ensure user 
  configurability. Lets say on a particular board, two 
  users/customers wants to use separate configurations for DMA 
  channels because of the needs what mentioned earlier. Then 
  again we need some kind of comfit option.
  Another clean way to achieve this is through 'bootargs'. 
  But this might be too much of a design for this requirement.
  
  Hmm, well how about starting with all of them, and allow
  limiting the active DMA number via /sys? I guess we could
  just set some of the DMA channels inactive that way.
  
  Or maybe allow setting indvidual DMA channels inactive
  via /sys?
 
 This won't be a good option because of few limitations.
 - dma library init will configure the entire register set for all the 
 channels. So through /sys disable , you have to mask all of this registers 
 with appropriate mask depending on the no of channels deactivated. This is 
 almost like doing another DMA init.
 - Secondly the security driver is active even before the dma library is 
 initialed and hence it won't get the required reservation of channels which 
 is bottleneck.
 - If both, dma library and security driver configure the DMA channels then, 
 you end up in a problem because the way OMAP DMA hardware is.  Just a brief - 
 In
 contrast to the SDMA.DMA4_CSRi registers, the SDMA.DMA4_IRQSTATUS_Lj 
 registers are updated regardless of the corresponding bits in the 
 SDMA.DMA4_IRQENABLE_Lj registers. For more details, you can refer the DMA 
 section in TRM. 
 Because of above, this is not seems to be an option. 

How about set up a cmdline option for omap dma for masking the
available channels?

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] [OMAPZOOM] OMAP : DMA: Spurious interrupt fix

2009-01-12 Thread Shilimkar, Santosh
 -Original Message-
 From: Tony Lindgren [mailto:t...@atomide.com] 
 Sent: Monday, January 12, 2009 6:11 PM
 To: Shilimkar, Santosh
 Cc: Pandita, Vikram; linux-omap@vger.kernel.org
 Subject: Re: [PATCH] [OMAPZOOM] OMAP : DMA: Spurious interrupt fix
 
 * Shilimkar, Santosh santosh.shilim...@ti.com [090109 15:22]:
   -Original Message-
   From: Tony Lindgren [mailto:t...@atomide.com] 
   Sent: Friday, January 09, 2009 6:27 PM
   To: Shilimkar, Santosh
   Cc: Pandita, Vikram; linux-omap@vger.kernel.org
   Subject: Re: [PATCH] [OMAPZOOM] OMAP : DMA: Spurious interrupt fix
   
   * Shilimkar, Santosh santosh.shilim...@ti.com [090109 14:52]:
 -Original Message-
 From: Tony Lindgren [mailto:t...@atomide.com] 
 Sent: Friday, January 09, 2009 4:58 PM
 To: Shilimkar, Santosh
 Cc: Pandita, Vikram; linux-omap@vger.kernel.org
 Subject: Re: [PATCH] [OMAPZOOM] OMAP : DMA: Spurious 
 interrupt fix
 
 * Shilimkar, Santosh santosh.shilim...@ti.com 
 [090109 12:51]:
  
  Tony,
  Regarding your proposal of doing the no. of channel 
 reservation during runtime has one problem. 
  
  The whole idea was not to restrict users from using all 32 
 channels and hence the config option. For OMAP secure chips, 
 few security drivers which will execute in secure contex 
 needs dedicated DMA channels and kernel dma library can't be 
 used in that case. So in such cases, required DMA channels 
 can be reserved using this config option. For GP devices all 
 32 channels can be used currently. 
  
  If it can done in better way, please suggest.
 
 Well how about passing the configuration for the DMA channels
 from board-*.c file then?
This is certainly a good option if the setting is fixed for 
   a particular board type. With this how do we ensure user 
   configurability. Lets say on a particular board, two 
   users/customers wants to use separate configurations for DMA 
   channels because of the needs what mentioned earlier. Then 
   again we need some kind of comfit option.
   Another clean way to achieve this is through 'bootargs'. 
   But this might be too much of a design for this requirement.
   
   Hmm, well how about starting with all of them, and allow
   limiting the active DMA number via /sys? I guess we could
   just set some of the DMA channels inactive that way.
   
   Or maybe allow setting indvidual DMA channels inactive
   via /sys?
  
  This won't be a good option because of few limitations.
  - dma library init will configure the entire register set 
 for all the channels. So through /sys disable , you have to 
 mask all of this registers with appropriate mask depending on 
 the no of channels deactivated. This is almost like doing 
 another DMA init.
  - Secondly the security driver is active even before the 
 dma library is initialed and hence it won't get the required 
 reservation of channels which is bottleneck.
  - If both, dma library and security driver configure the 
 DMA channels then, you end up in a problem because the way 
 OMAP DMA hardware is.  Just a brief - In
  contrast to the SDMA.DMA4_CSRi registers, the 
 SDMA.DMA4_IRQSTATUS_Lj registers are updated regardless of 
 the corresponding bits in the SDMA.DMA4_IRQENABLE_Lj 
 registers. For more details, you can refer the DMA section in TRM. 
  Because of above, this is not seems to be an option. 
 
 How about set up a cmdline option for omap dma for masking the
 available channels?
Do you mean through bootargs ? 
If yes then I already wrote about it.Indeed it is nice method to do this. So if 
your answer is yes, I will make a patch along with spurious interrupt patch.
--
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] [OMAPZOOM] OMAP : DMA: Spurious interrupt fix

2009-01-12 Thread Tony Lindgren
* Shilimkar, Santosh santosh.shilim...@ti.com [090112 15:00]:
  -Original Message-
  From: Tony Lindgren [mailto:t...@atomide.com] 
  Sent: Monday, January 12, 2009 6:11 PM
  To: Shilimkar, Santosh
  Cc: Pandita, Vikram; linux-omap@vger.kernel.org
  Subject: Re: [PATCH] [OMAPZOOM] OMAP : DMA: Spurious interrupt fix
  
  * Shilimkar, Santosh santosh.shilim...@ti.com [090109 15:22]:
-Original Message-
From: Tony Lindgren [mailto:t...@atomide.com] 
Sent: Friday, January 09, 2009 6:27 PM
To: Shilimkar, Santosh
Cc: Pandita, Vikram; linux-omap@vger.kernel.org
Subject: Re: [PATCH] [OMAPZOOM] OMAP : DMA: Spurious interrupt fix

* Shilimkar, Santosh santosh.shilim...@ti.com [090109 14:52]:
  -Original Message-
  From: Tony Lindgren [mailto:t...@atomide.com] 
  Sent: Friday, January 09, 2009 4:58 PM
  To: Shilimkar, Santosh
  Cc: Pandita, Vikram; linux-omap@vger.kernel.org
  Subject: Re: [PATCH] [OMAPZOOM] OMAP : DMA: Spurious 
  interrupt fix
  
  * Shilimkar, Santosh santosh.shilim...@ti.com 
  [090109 12:51]:
   
   Tony,
   Regarding your proposal of doing the no. of channel 
  reservation during runtime has one problem. 
   
   The whole idea was not to restrict users from using all 32 
  channels and hence the config option. For OMAP secure chips, 
  few security drivers which will execute in secure contex 
  needs dedicated DMA channels and kernel dma library can't be 
  used in that case. So in such cases, required DMA channels 
  can be reserved using this config option. For GP devices all 
  32 channels can be used currently. 
   
   If it can done in better way, please suggest.
  
  Well how about passing the configuration for the DMA channels
  from board-*.c file then?
 This is certainly a good option if the setting is fixed for 
a particular board type. With this how do we ensure user 
configurability. Lets say on a particular board, two 
users/customers wants to use separate configurations for DMA 
channels because of the needs what mentioned earlier. Then 
again we need some kind of comfit option.
Another clean way to achieve this is through 'bootargs'. 
But this might be too much of a design for this requirement.

Hmm, well how about starting with all of them, and allow
limiting the active DMA number via /sys? I guess we could
just set some of the DMA channels inactive that way.

Or maybe allow setting indvidual DMA channels inactive
via /sys?
   
   This won't be a good option because of few limitations.
   - dma library init will configure the entire register set 
  for all the channels. So through /sys disable , you have to 
  mask all of this registers with appropriate mask depending on 
  the no of channels deactivated. This is almost like doing 
  another DMA init.
   - Secondly the security driver is active even before the 
  dma library is initialed and hence it won't get the required 
  reservation of channels which is bottleneck.
   - If both, dma library and security driver configure the 
  DMA channels then, you end up in a problem because the way 
  OMAP DMA hardware is.  Just a brief - In
   contrast to the SDMA.DMA4_CSRi registers, the 
  SDMA.DMA4_IRQSTATUS_Lj registers are updated regardless of 
  the corresponding bits in the SDMA.DMA4_IRQENABLE_Lj 
  registers. For more details, you can refer the DMA section in TRM. 
   Because of above, this is not seems to be an option. 
  
  How about set up a cmdline option for omap dma for masking the
  available channels?
 Do you mean through bootargs ? 
 If yes then I already wrote about it.Indeed it is nice method to do this. So 
 if your answer is yes, I will make a patch along with spurious interrupt 
 patch.

Yes, sorry if I missed that earlier.

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] [OMAPZOOM] OMAP : DMA: Spurious interrupt fix

2009-01-09 Thread Tony Lindgren
* Shilimkar, Santosh santosh.shilim...@ti.com [090109 14:52]:
  -Original Message-
  From: Tony Lindgren [mailto:t...@atomide.com] 
  Sent: Friday, January 09, 2009 4:58 PM
  To: Shilimkar, Santosh
  Cc: Pandita, Vikram; linux-omap@vger.kernel.org
  Subject: Re: [PATCH] [OMAPZOOM] OMAP : DMA: Spurious interrupt fix
  
  * Shilimkar, Santosh santosh.shilim...@ti.com [090109 12:51]:
   
   Tony,
   Regarding your proposal of doing the no. of channel 
  reservation during runtime has one problem. 
   
   The whole idea was not to restrict users from using all 32 
  channels and hence the config option. For OMAP secure chips, 
  few security drivers which will execute in secure contex 
  needs dedicated DMA channels and kernel dma library can't be 
  used in that case. So in such cases, required DMA channels 
  can be reserved using this config option. For GP devices all 
  32 channels can be used currently. 
   
   If it can done in better way, please suggest.
  
  Well how about passing the configuration for the DMA channels
  from board-*.c file then?
 This is certainly a good option if the setting is fixed for a particular 
 board type. With this how do we ensure user configurability. Lets say on a 
 particular board, two users/customers wants to use separate configurations 
 for DMA channels because of the needs what mentioned earlier. Then again we 
 need some kind of comfit option.
Another clean way to achieve this is through 'bootargs'. But this might be 
 too much of a design for this requirement.

Hmm, well how about starting with all of them, and allow
limiting the active DMA number via /sys? I guess we could
just set some of the DMA channels inactive that way.

Or maybe allow setting indvidual DMA channels inactive
via /sys?

   Time being if needed what best I can do is, to split this 
  patch into two parts as mentioned earlier. This will avoid 
  confusion of spurious interrupt issue and dam channel reservation
  OK
 I will do this once I get some time for sure.

Great!

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] [OMAPZOOM] OMAP : DMA: Spurious interrupt fix

2009-01-09 Thread Shilimkar, Santosh
 -Original Message-
 From: Tony Lindgren [mailto:t...@atomide.com] 
 Sent: Friday, January 09, 2009 6:27 PM
 To: Shilimkar, Santosh
 Cc: Pandita, Vikram; linux-omap@vger.kernel.org
 Subject: Re: [PATCH] [OMAPZOOM] OMAP : DMA: Spurious interrupt fix
 
 * Shilimkar, Santosh santosh.shilim...@ti.com [090109 14:52]:
   -Original Message-
   From: Tony Lindgren [mailto:t...@atomide.com] 
   Sent: Friday, January 09, 2009 4:58 PM
   To: Shilimkar, Santosh
   Cc: Pandita, Vikram; linux-omap@vger.kernel.org
   Subject: Re: [PATCH] [OMAPZOOM] OMAP : DMA: Spurious interrupt fix
   
   * Shilimkar, Santosh santosh.shilim...@ti.com [090109 12:51]:

Tony,
Regarding your proposal of doing the no. of channel 
   reservation during runtime has one problem. 

The whole idea was not to restrict users from using all 32 
   channels and hence the config option. For OMAP secure chips, 
   few security drivers which will execute in secure contex 
   needs dedicated DMA channels and kernel dma library can't be 
   used in that case. So in such cases, required DMA channels 
   can be reserved using this config option. For GP devices all 
   32 channels can be used currently. 

If it can done in better way, please suggest.
   
   Well how about passing the configuration for the DMA channels
   from board-*.c file then?
  This is certainly a good option if the setting is fixed for 
 a particular board type. With this how do we ensure user 
 configurability. Lets say on a particular board, two 
 users/customers wants to use separate configurations for DMA 
 channels because of the needs what mentioned earlier. Then 
 again we need some kind of comfit option.
 Another clean way to achieve this is through 'bootargs'. 
 But this might be too much of a design for this requirement.
 
 Hmm, well how about starting with all of them, and allow
 limiting the active DMA number via /sys? I guess we could
 just set some of the DMA channels inactive that way.
 
 Or maybe allow setting indvidual DMA channels inactive
 via /sys?

This won't be a good option because of few limitations.
- dma library init will configure the entire register set for all the channels. 
So through /sys disable , you have to mask all of this registers with 
appropriate mask depending on the no of channels deactivated. This is almost 
like doing another DMA init.
- Secondly the security driver is active even before the dma library is 
initialed and hence it won't get the required reservation of channels which is 
bottleneck.
- If both, dma library and security driver configure the DMA channels then, you 
end up in a problem because the way OMAP DMA hardware is.  Just a brief - In
contrast to the SDMA.DMA4_CSRi registers, the SDMA.DMA4_IRQSTATUS_Lj registers 
are updated regardless of the corresponding bits in the SDMA.DMA4_IRQENABLE_Lj 
registers. For more details, you can refer the DMA section in TRM. 
Because of above, this is not seems to be an option. 

Time being if needed what best I can do is, to split this 
   patch into two parts as mentioned earlier. This will avoid 
   confusion of spurious interrupt issue and dam channel reservation
   OK
  I will do this once I get some time for sure.
 
 Great!
 
 Tony

Regards,
Santosh

--
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] [OMAPZOOM] OMAP : DMA: Spurious interrupt fix

2008-12-03 Thread Shilimkar, Santosh
From: Santosh Shilimkar [EMAIL PROTECTED]

This fixes the spurious interrupt issue on a DMA channel. 

Signed-off-by: Santosh Shilimkar [EMAIL PROTECTED]
Acked By: Nishant Kamat [EMAIL PROTECTED]
Acked By: Gopinath Thara [EMAIL PROTECTED]
---
--- omapkernel.orig/arch/arm/plat-omap/include/mach/dma.h   2008-12-04 
10:29:08.949018434 +0530
+++ omapkernel/arch/arm/plat-omap/include/mach/dma.h2008-12-04 
11:14:25.359087775 +0530
@@ -67,7 +67,11 @@
 #define OMAP_DMA4_CAPS_4   0x74
 
 #define OMAP1_LOGICAL_DMA_CH_COUNT 17
+#ifdef CONFIG_OMAP_DMA_LIBRARY_CHANNELS
+#define OMAP_DMA4_LOGICAL_DMA_CH_COUNT CONFIG_OMAP_DMA_LIBRARY_CHANNELS
+#else
 #define OMAP_DMA4_LOGICAL_DMA_CH_COUNT 32  /* REVISIT: Is this 32 + 2? */
+#endif
 
 /* Common channel specific registers for omap1 */
 #define OMAP1_DMA_CH_BASE(n)   (0x40 * (n) + 0x00)
Index: omapkernel/arch/arm/plat-omap/Kconfig
===
--- omapkernel.orig/arch/arm/plat-omap/Kconfig  2008-12-04 10:29:08.949018434 
+0530
+++ omapkernel/arch/arm/plat-omap/Kconfig   2008-12-04 10:38:21.883850512 
+0530
@@ -256,6 +256,18 @@ config OMAP_SERIAL_WAKE
  to data on the serial RX line. This allows you to wake the
  system from serial console.
 
+
+config OMAP_DMA_LIBRARY_CHANNELS
+int DMA channels controlled by the kernel DMA library
+range 24 32
+depends on ARCH_OMAP3
+default 32
+help
+  Some of the OMAP System DMA channels may need to be
+  reserved for software that don't use the DMA library, such as
+  security drivers. Use this option to limit the number of channels
+  controlled by the kernel DMA library.
+
 endmenu
 
 endif
Index: omapkernel/arch/arm/configs/omap_3430sdp_defconfig
===
--- omapkernel.orig/arch/arm/configs/omap_3430sdp_defconfig 2008-12-04 
10:29:08.949018434 +0530
+++ omapkernel/arch/arm/configs/omap_3430sdp_defconfig  2008-12-04 
10:38:21.884850481 +0530
@@ -177,7 +177,7 @@ CONFIG_ARCH_OMAP_OTG=y
 # CONFIG_ARCH_OMAP1 is not set
 # CONFIG_ARCH_OMAP2 is not set
 CONFIG_ARCH_OMAP3=y
-
+CONFIG_OMAP_DMA_LIBRARY_CHANNELS=24
 #
 # OMAP Feature Selections
 #
Index: omapkernel/arch/arm/plat-omap/dma.c
===
--- omapkernel.orig/arch/arm/plat-omap/dma.c2008-12-04 10:38:16.732010840 
+0530
+++ omapkernel/arch/arm/plat-omap/dma.c 2008-12-04 11:11:07.671274902 +0530
@@ -1946,7 +1946,7 @@ static int omap2_dma_handle_ch(int ch)
 /* STATUS register count is from 1-32 while our is 0-31 */
 static irqreturn_t omap2_dma_irq_handler(int irq, void *dev_id)
 {
-   u32 val;
+   u32 val, enable_reg;
int i;
 
val = dma_read(IRQSTATUS_L0);
@@ -1955,6 +1955,8 @@ static irqreturn_t omap2_dma_irq_handler
printk(KERN_WARNING Spurious DMA IRQ\n);
return IRQ_HANDLED;
}
+   enable_reg = dma_read(IRQENABLE_L0);
+   val = enable_reg; /* Dispatch only relevant interrupts */
for (i = 0; i  dma_lch_count  val != 0; i++) {
if (val  1)
omap2_dma_handle_ch(i);
Index: omapkernel/arch/arm/configs/omap_ldp_defconfig
===
--- omapkernel.orig/arch/arm/configs/omap_ldp_defconfig 2008-12-04 
11:18:54.0 +0530
+++ omapkernel/arch/arm/configs/omap_ldp_defconfig  2008-12-04 
11:19:33.507466484 +0530
@@ -177,6 +177,7 @@ CONFIG_ARCH_OMAP_OTG=y
 # CONFIG_ARCH_OMAP1 is not set
 # CONFIG_ARCH_OMAP2 is not set
 CONFIG_ARCH_OMAP3=y
+CONFIG_OMAP_DMA_LIBRARY_CHANNELS=32
 #
 # OMAP Feature Selections
 #

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