linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* Using DMA interrupt on MPC8313
@ 2008-06-12 19:35 Ron Madrid
  2008-06-12 19:47 ` Kumar Gala
  0 siblings, 1 reply; 19+ messages in thread
From: Ron Madrid @ 2008-06-12 19:35 UTC (permalink / raw)
  To: linuxppc-dev

I'm trying to write a driver that would make use of the DMA on the MPC8313.  I'm attempting to
register the interrupt with request_irq but it is not passing.  Is there something that I need to
do before I call request_irq, maybe in the dts or somewhere else?

Ron

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Using DMA interrupt on MPC8313
  2008-06-12 19:35 Using DMA interrupt on MPC8313 Ron Madrid
@ 2008-06-12 19:47 ` Kumar Gala
  2008-06-12 20:04   ` Ron Madrid
  0 siblings, 1 reply; 19+ messages in thread
From: Kumar Gala @ 2008-06-12 19:47 UTC (permalink / raw)
  To: Ron Madrid; +Cc: linuxppc-dev


On Jun 12, 2008, at 2:35 PM, Ron Madrid wrote:

> I'm trying to write a driver that would make use of the DMA on the  
> MPC8313.  I'm attempting to
> register the interrupt with request_irq but it is not passing.  Is  
> there something that I need to
> do before I call request_irq, maybe in the dts or somewhere else?


any reason you aren't using the dmaengine driver?

- k

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Using DMA interrupt on MPC8313
  2008-06-12 19:47 ` Kumar Gala
@ 2008-06-12 20:04   ` Ron Madrid
  2008-06-12 23:01     ` Kumar Gala
  0 siblings, 1 reply; 19+ messages in thread
From: Ron Madrid @ 2008-06-12 20:04 UTC (permalink / raw)
  To: Kumar Gala; +Cc: linuxppc-dev

Well in that case wouldn't I need to use the fsldma driver?  Or is dmaengine a generic dma driver?

Ron
--- Kumar Gala <galak@kernel.crashing.org> wrote:

> 
> On Jun 12, 2008, at 2:35 PM, Ron Madrid wrote:
> 
> > I'm trying to write a driver that would make use of the DMA on the  
> > MPC8313.  I'm attempting to
> > register the interrupt with request_irq but it is not passing.  Is  
> > there something that I need to
> > do before I call request_irq, maybe in the dts or somewhere else?
> 
> 
> any reason you aren't using the dmaengine driver?
> 
> - k
> 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Using DMA interrupt on MPC8313
  2008-06-12 20:04   ` Ron Madrid
@ 2008-06-12 23:01     ` Kumar Gala
  2008-06-13 19:02       ` Ron Madrid
  0 siblings, 1 reply; 19+ messages in thread
From: Kumar Gala @ 2008-06-12 23:01 UTC (permalink / raw)
  To: Ron Madrid; +Cc: linuxppc-dev

The dmaengine provides a generic set of APIs w/a FSL dma backend.  It  
might be the case that your need of dma doesnt fit into the current  
set of APIs.

- k

On Jun 12, 2008, at 3:04 PM, Ron Madrid wrote:

> Well in that case wouldn't I need to use the fsldma driver?  Or is  
> dmaengine a generic dma driver?
>
> Ron
> --- Kumar Gala <galak@kernel.crashing.org> wrote:
>
>>
>> On Jun 12, 2008, at 2:35 PM, Ron Madrid wrote:
>>
>>> I'm trying to write a driver that would make use of the DMA on the
>>> MPC8313.  I'm attempting to
>>> register the interrupt with request_irq but it is not passing.  Is
>>> there something that I need to
>>> do before I call request_irq, maybe in the dts or somewhere else?
>>
>>
>> any reason you aren't using the dmaengine driver?
>>
>> - k
>>

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Using DMA interrupt on MPC8313
  2008-06-12 23:01     ` Kumar Gala
@ 2008-06-13 19:02       ` Ron Madrid
  2008-06-13 23:33         ` Kumar Gala
  0 siblings, 1 reply; 19+ messages in thread
From: Ron Madrid @ 2008-06-13 19:02 UTC (permalink / raw)
  To: Kumar Gala; +Cc: linuxppc-dev

So after I've built the kernel to include the dmaengine and fsldma drivers, my driver is allowed
to register its ISR via request_irq.  However, if these drivers are not installed then request_irq
fails in my driver.  So it seems that there is some other initialization happening before
request_irq is being called in fsldma and subsequently my driver.  Does anyone know what this is?

Ron
--- Kumar Gala <galak@kernel.crashing.org> wrote:

> The dmaengine provides a generic set of APIs w/a FSL dma backend.  It  
> might be the case that your need of dma doesnt fit into the current  
> set of APIs.
> 
> - k
> 
> On Jun 12, 2008, at 3:04 PM, Ron Madrid wrote:
> 
> > Well in that case wouldn't I need to use the fsldma driver?  Or is  
> > dmaengine a generic dma driver?
> >
> > Ron
> > --- Kumar Gala <galak@kernel.crashing.org> wrote:
> >
> >>
> >> On Jun 12, 2008, at 2:35 PM, Ron Madrid wrote:
> >>
> >>> I'm trying to write a driver that would make use of the DMA on the
> >>> MPC8313.  I'm attempting to
> >>> register the interrupt with request_irq but it is not passing.  Is
> >>> there something that I need to
> >>> do before I call request_irq, maybe in the dts or somewhere else?
> >>
> >>
> >> any reason you aren't using the dmaengine driver?
> >>
> >> - k
> >>
> 
> 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Using DMA interrupt on MPC8313
  2008-06-13 19:02       ` Ron Madrid
@ 2008-06-13 23:33         ` Kumar Gala
  2008-06-13 23:52           ` Ron Madrid
  0 siblings, 1 reply; 19+ messages in thread
From: Kumar Gala @ 2008-06-13 23:33 UTC (permalink / raw)
  To: Ron Madrid; +Cc: linuxppc-dev

That's a bit odd.  How is your driver getting the IRQ its requesting?   
Are you using the same .dts in both cases?

- k

On Jun 13, 2008, at 2:02 PM, Ron Madrid wrote:

> So after I've built the kernel to include the dmaengine and fsldma  
> drivers, my driver is allowed
> to register its ISR via request_irq.  However, if these drivers are  
> not installed then request_irq
> fails in my driver.  So it seems that there is some other  
> initialization happening before
> request_irq is being called in fsldma and subsequently my driver.   
> Does anyone know what this is?
>
> Ron
> --- Kumar Gala <galak@kernel.crashing.org> wrote:
>
>> The dmaengine provides a generic set of APIs w/a FSL dma backend.  It
>> might be the case that your need of dma doesnt fit into the current
>> set of APIs.
>>
>> - k
>>
>> On Jun 12, 2008, at 3:04 PM, Ron Madrid wrote:
>>
>>> Well in that case wouldn't I need to use the fsldma driver?  Or is
>>> dmaengine a generic dma driver?
>>>
>>> Ron
>>> --- Kumar Gala <galak@kernel.crashing.org> wrote:
>>>
>>>>
>>>> On Jun 12, 2008, at 2:35 PM, Ron Madrid wrote:
>>>>
>>>>> I'm trying to write a driver that would make use of the DMA on the
>>>>> MPC8313.  I'm attempting to
>>>>> register the interrupt with request_irq but it is not passing.  Is
>>>>> there something that I need to
>>>>> do before I call request_irq, maybe in the dts or somewhere else?
>>>>
>>>>
>>>> any reason you aren't using the dmaengine driver?
>>>>
>>>> - k
>>>>
>>
>>

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Using DMA interrupt on MPC8313
  2008-06-13 23:33         ` Kumar Gala
@ 2008-06-13 23:52           ` Ron Madrid
  2008-06-13 23:54             ` Timur Tabi
  2008-06-16 14:44             ` Kumar Gala
  0 siblings, 2 replies; 19+ messages in thread
From: Ron Madrid @ 2008-06-13 23:52 UTC (permalink / raw)
  To: Kumar Gala; +Cc: linuxppc-dev

I don't know why request_irq is succeeding when the fsldma and dmaengine drivers are installed. 
I'm using the same dts in both cases.

Ron
--- Kumar Gala <galak@kernel.crashing.org> wrote:

> That's a bit odd.  How is your driver getting the IRQ its requesting?   
> Are you using the same .dts in both cases?
> 
> - k
> 
> On Jun 13, 2008, at 2:02 PM, Ron Madrid wrote:
> 
> > So after I've built the kernel to include the dmaengine and fsldma  
> > drivers, my driver is allowed
> > to register its ISR via request_irq.  However, if these drivers are  
> > not installed then request_irq
> > fails in my driver.  So it seems that there is some other  
> > initialization happening before
> > request_irq is being called in fsldma and subsequently my driver.   
> > Does anyone know what this is?
> >
> > Ron
> > --- Kumar Gala <galak@kernel.crashing.org> wrote:
> >
> >> The dmaengine provides a generic set of APIs w/a FSL dma backend.  It
> >> might be the case that your need of dma doesnt fit into the current
> >> set of APIs.
> >>
> >> - k
> >>
> >> On Jun 12, 2008, at 3:04 PM, Ron Madrid wrote:
> >>
> >>> Well in that case wouldn't I need to use the fsldma driver?  Or is
> >>> dmaengine a generic dma driver?
> >>>
> >>> Ron
> >>> --- Kumar Gala <galak@kernel.crashing.org> wrote:
> >>>
> >>>>
> >>>> On Jun 12, 2008, at 2:35 PM, Ron Madrid wrote:
> >>>>
> >>>>> I'm trying to write a driver that would make use of the DMA on the
> >>>>> MPC8313.  I'm attempting to
> >>>>> register the interrupt with request_irq but it is not passing.  Is
> >>>>> there something that I need to
> >>>>> do before I call request_irq, maybe in the dts or somewhere else?
> >>>>
> >>>>
> >>>> any reason you aren't using the dmaengine driver?
> >>>>
> >>>> - k
> >>>>
> >>
> >>
> 
> 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Using DMA interrupt on MPC8313
  2008-06-13 23:52           ` Ron Madrid
@ 2008-06-13 23:54             ` Timur Tabi
  2008-06-14  0:19               ` Ron Madrid
  2008-06-16 14:44             ` Kumar Gala
  1 sibling, 1 reply; 19+ messages in thread
From: Timur Tabi @ 2008-06-13 23:54 UTC (permalink / raw)
  To: Ron Madrid; +Cc: linuxppc-dev

Ron Madrid wrote:
> I don't know why request_irq is succeeding when the fsldma and dmaengine drivers are installed. 
> I'm using the same dts in both cases.

At this point, my only suggestion is to debug the request_irq() call and 
see what exactly fails.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Using DMA interrupt on MPC8313
  2008-06-13 23:54             ` Timur Tabi
@ 2008-06-14  0:19               ` Ron Madrid
  2008-06-16 14:11                 ` Timur Tabi
  0 siblings, 1 reply; 19+ messages in thread
From: Ron Madrid @ 2008-06-14  0:19 UTC (permalink / raw)
  To: Timur Tabi; +Cc: linuxppc-dev

So are you implying that the request_irq function should work without any other initialization
function before it?

Ron
--- Timur Tabi <timur@freescale.com> wrote:

> Ron Madrid wrote:
> > I don't know why request_irq is succeeding when the fsldma and dmaengine drivers are
> installed. 
> > I'm using the same dts in both cases.
> 
> At this point, my only suggestion is to debug the request_irq() call and 
> see what exactly fails.
> 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Using DMA interrupt on MPC8313
  2008-06-14  0:19               ` Ron Madrid
@ 2008-06-16 14:11                 ` Timur Tabi
  0 siblings, 0 replies; 19+ messages in thread
From: Timur Tabi @ 2008-06-16 14:11 UTC (permalink / raw)
  To: Ron Madrid; +Cc: linuxppc-dev

Ron Madrid wrote:
> So are you implying that the request_irq function should work without any other initialization
> function before it?

No, I'm saying that you'll get a more accurate assessment of why it 
fails if you see where it returns an error code.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Using DMA interrupt on MPC8313
  2008-06-13 23:52           ` Ron Madrid
  2008-06-13 23:54             ` Timur Tabi
@ 2008-06-16 14:44             ` Kumar Gala
  2008-06-16 17:13               ` Ron Madrid
  1 sibling, 1 reply; 19+ messages in thread
From: Kumar Gala @ 2008-06-16 14:44 UTC (permalink / raw)
  To: Ron Madrid; +Cc: linuxppc-dev

What does your code actually look like.  In your driver how are you  
getting the IRQ value that you pass to request_irq?

- k

On Jun 13, 2008, at 6:52 PM, Ron Madrid wrote:

> I don't know why request_irq is succeeding when the fsldma and  
> dmaengine drivers are installed.
> I'm using the same dts in both cases.
>
> Ron
> --- Kumar Gala <galak@kernel.crashing.org> wrote:
>
>> That's a bit odd.  How is your driver getting the IRQ its requesting?
>> Are you using the same .dts in both cases?
>>
>> - k
>>
>> On Jun 13, 2008, at 2:02 PM, Ron Madrid wrote:
>>
>>> So after I've built the kernel to include the dmaengine and fsldma
>>> drivers, my driver is allowed
>>> to register its ISR via request_irq.  However, if these drivers are
>>> not installed then request_irq
>>> fails in my driver.  So it seems that there is some other
>>> initialization happening before
>>> request_irq is being called in fsldma and subsequently my driver.
>>> Does anyone know what this is?
>>>
>>> Ron
>>> --- Kumar Gala <galak@kernel.crashing.org> wrote:
>>>
>>>> The dmaengine provides a generic set of APIs w/a FSL dma  
>>>> backend.  It
>>>> might be the case that your need of dma doesnt fit into the current
>>>> set of APIs.
>>>>
>>>> - k
>>>>
>>>> On Jun 12, 2008, at 3:04 PM, Ron Madrid wrote:
>>>>
>>>>> Well in that case wouldn't I need to use the fsldma driver?  Or is
>>>>> dmaengine a generic dma driver?
>>>>>
>>>>> Ron
>>>>> --- Kumar Gala <galak@kernel.crashing.org> wrote:
>>>>>
>>>>>>
>>>>>> On Jun 12, 2008, at 2:35 PM, Ron Madrid wrote:
>>>>>>
>>>>>>> I'm trying to write a driver that would make use of the DMA on  
>>>>>>> the
>>>>>>> MPC8313.  I'm attempting to
>>>>>>> register the interrupt with request_irq but it is not  
>>>>>>> passing.  Is
>>>>>>> there something that I need to
>>>>>>> do before I call request_irq, maybe in the dts or somewhere  
>>>>>>> else?
>>>>>>
>>>>>>
>>>>>> any reason you aren't using the dmaengine driver?
>>>>>>
>>>>>> - k
>>>>>>
>>>>
>>>>
>>
>>

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Using DMA interrupt on MPC8313
  2008-06-16 14:44             ` Kumar Gala
@ 2008-06-16 17:13               ` Ron Madrid
  2008-06-16 17:32                 ` Scott Wood
  0 siblings, 1 reply; 19+ messages in thread
From: Ron Madrid @ 2008-06-16 17:13 UTC (permalink / raw)
  To: Kumar Gala; +Cc: linuxppc-dev


Here's my code.  There are a few other things that happen but they are inconsequential to this
problem.  I'm sure that the request_irq call is right, especially since it works if the fsldma
drivers are builtin to the kernel.  Also, the irq number 71 comes from the reference manual for
them MPC8313.  It is the internal interrupt for the DMA.  I'll do some more testing in a little
while to try to determine the cause of the error in request_irq.

	int result = 0;
	unsigned int firstminor = 0;
	dev_t dev;
	
	printk(KERN_ALERT "Hello World Driver!  Hi Ron2!\n");


	result |= alloc_chrdev_region(&dev, firstminor, 1, kModuleName);


	if(result < 0){

		printk("simpc: alloc_chrdev_region failed %u\n", result);

		return result;

	}

	mpc_major = MAJOR(dev);
	mpc_minor = MINOR(dev);


	printk(KERN_ALERT kModuleName " MAJOR NUM = %d\n",mpc_major);

	pdx.devno = MKDEV(mpc_major, mpc_minor);

	cdev_init(&pdx.cdev, &mpc_fops);
	pdx.cdev.owner = THIS_MODULE;
	pdx.cdev.ops = &mpc_fops;
	result = cdev_add(&pdx.cdev, pdx.devno, 1);

	if(result)
		printk(KERN_ALERT kModuleName "-init_module: Error %d adding pdx.cdev", result);

		
	printk(KERN_ALERT kModuleName "-SIMPC_open: Entering\n");

	pdx.irq = 71;



	printk(KERN_ALERT kModuleName "-SIMPC_open: IRQ = %d\n", pdx.irq);



	if (pdx.irq == 0){

		printk(kModuleName "-SIMPC_open: WARNING-cannot get IRQ\n");
		return 0;
	}


	if (request_irq(pdx.irq, SIMPC_isr, IRQF_SHARED, kModuleName, &pdx)){

		printk(kModuleName "-SIMPC_open: ERROR-Interrupt Request failed.\n"

			"    pdx.irq = %d, SIMPC_isr = 0x%x\n", 

			pdx.irq, (int)SIMPC_isr);



		pdx.irq = 0;

	}

	else

		printk(kModuleName "-SIMPC_open: found IRQ %d\n", pdx.irq);

--- Kumar Gala <galak@kernel.crashing.org> wrote:

> What does your code actually look like.  In your driver how are you  
> getting the IRQ value that you pass to request_irq?
> 
> - k
> 
> On Jun 13, 2008, at 6:52 PM, Ron Madrid wrote:
> 
> > I don't know why request_irq is succeeding when the fsldma and  
> > dmaengine drivers are installed.
> > I'm using the same dts in both cases.
> >
> > Ron
> > --- Kumar Gala <galak@kernel.crashing.org> wrote:
> >
> >> That's a bit odd.  How is your driver getting the IRQ its requesting?
> >> Are you using the same .dts in both cases?
> >>
> >> - k
> >>
> >> On Jun 13, 2008, at 2:02 PM, Ron Madrid wrote:
> >>
> >>> So after I've built the kernel to include the dmaengine and fsldma
> >>> drivers, my driver is allowed
> >>> to register its ISR via request_irq.  However, if these drivers are
> >>> not installed then request_irq
> >>> fails in my driver.  So it seems that there is some other
> >>> initialization happening before
> >>> request_irq is being called in fsldma and subsequently my driver.
> >>> Does anyone know what this is?
> >>>
> >>> Ron
> >>> --- Kumar Gala <galak@kernel.crashing.org> wrote:
> >>>
> >>>> The dmaengine provides a generic set of APIs w/a FSL dma  
> >>>> backend.  It
> >>>> might be the case that your need of dma doesnt fit into the current
> >>>> set of APIs.
> >>>>
> >>>> - k
> >>>>
> >>>> On Jun 12, 2008, at 3:04 PM, Ron Madrid wrote:
> >>>>
> >>>>> Well in that case wouldn't I need to use the fsldma driver?  Or is
> >>>>> dmaengine a generic dma driver?
> >>>>>
> >>>>> Ron
> >>>>> --- Kumar Gala <galak@kernel.crashing.org> wrote:
> >>>>>
> >>>>>>
> >>>>>> On Jun 12, 2008, at 2:35 PM, Ron Madrid wrote:
> >>>>>>
> >>>>>>> I'm trying to write a driver that would make use of the DMA on  
> >>>>>>> the
> >>>>>>> MPC8313.  I'm attempting to
> >>>>>>> register the interrupt with request_irq but it is not  
> >>>>>>> passing.  Is
> >>>>>>> there something that I need to
> >>>>>>> do before I call request_irq, maybe in the dts or somewhere  
> >>>>>>> else?
> >>>>>>
> >>>>>>
> >>>>>> any reason you aren't using the dmaengine driver?
> >>>>>>
> >>>>>> - k
> >>>>>>
> >>>>
> >>>>
> >>
> >>
> 
> 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Using DMA interrupt on MPC8313
  2008-06-16 17:13               ` Ron Madrid
@ 2008-06-16 17:32                 ` Scott Wood
  2008-06-16 18:07                   ` Ron Madrid
  0 siblings, 1 reply; 19+ messages in thread
From: Scott Wood @ 2008-06-16 17:32 UTC (permalink / raw)
  To: Ron Madrid; +Cc: linuxppc-dev

Ron Madrid wrote:
> Here's my code.  There are a few other things that happen but they are inconsequential to this
> problem.  I'm sure that the request_irq call is right, especially since it works if the fsldma
> drivers are builtin to the kernel.  Also, the irq number 71 comes from the reference manual for
> them MPC8313.  It is the internal interrupt for the DMA.  I'll do some more testing in a little
> while to try to determine the cause of the error in request_irq.

You cannot pass hardware IRQ numbers directly to request_irq() -- it has 
no idea which IRQ controller you're referring to (even if there happens 
to be only one on your board).

You should get the IRQ from the device tree, using 
irq_of_parse_and_map() on the device node for the DMA channel (see the 
mpc8377mds device tree for an example DMA node).

-Scott

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Using DMA interrupt on MPC8313
  2008-06-16 17:32                 ` Scott Wood
@ 2008-06-16 18:07                   ` Ron Madrid
  2008-06-16 18:11                     ` Timur Tabi
  2008-06-16 18:40                     ` Scott Wood
  0 siblings, 2 replies; 19+ messages in thread
From: Ron Madrid @ 2008-06-16 18:07 UTC (permalink / raw)
  To: Scott Wood; +Cc: linuxppc-dev

I don't see a "dma" node in the mpc8377mds.dts (2.6.25).  I found one in mpc8610_hpcd.dts and
modeled it after that.

		dma@82a8 {
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "fsl,elo-dma";
			cell-index = <0>;
			reg = <0x82a8 0x4>; /* DMA general status register */
			ranges = <0x0 0x8100 0x200>;

			dma-channel@0 {
				compatible = "fsl,elo-dma-channel";
				cell-index = <0>;
				reg = <0x0 0x80>;
				interrupt-parent = <&ipic>;
				interrupts = <71 0x8>;
			};
			dma-channel@1 {
				compatible = "fsl,elo-dma-channel";
				cell-index = <1>;
				reg = <0x80 0x80>;
				interrupt-parent = <&ipic>;
				interrupts = <71 0x8>;
			};
			dma-channel@2 {
				compatible = "fsl,elo-dma-channel";
				cell-index = <2>;
				reg = <0x100 0x80>;
				interrupt-parent = <&ipic>;
				interrupts = <71 0x8>;
			};
			dma-channel@3 {
				compatible = "fsl,elo-dma-channel";
				cell-index = <3>;
				reg = <0x180 0x80>;
				interrupt-parent = <&ipic>;
				interrupts = <71 0x8>;
			};
		};

--- Scott Wood <scottwood@freescale.com> wrote:

> Ron Madrid wrote:
> > Here's my code.  There are a few other things that happen but they are inconsequential to this
> > problem.  I'm sure that the request_irq call is right, especially since it works if the fsldma
> > drivers are builtin to the kernel.  Also, the irq number 71 comes from the reference manual
> for
> > them MPC8313.  It is the internal interrupt for the DMA.  I'll do some more testing in a
> little
> > while to try to determine the cause of the error in request_irq.
> 
> You cannot pass hardware IRQ numbers directly to request_irq() -- it has 
> no idea which IRQ controller you're referring to (even if there happens 
> to be only one on your board).
> 
> You should get the IRQ from the device tree, using 
> irq_of_parse_and_map() on the device node for the DMA channel (see the 
> mpc8377mds device tree for an example DMA node).
> 
> -Scott
> 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Using DMA interrupt on MPC8313
  2008-06-16 18:07                   ` Ron Madrid
@ 2008-06-16 18:11                     ` Timur Tabi
  2008-06-16 18:40                     ` Scott Wood
  1 sibling, 0 replies; 19+ messages in thread
From: Timur Tabi @ 2008-06-16 18:11 UTC (permalink / raw)
  To: Ron Madrid; +Cc: Scott Wood, linuxppc-dev

Ron Madrid wrote:
> I don't see a "dma" node in the mpc8377mds.dts (2.6.25).  I found one in mpc8610_hpcd.dts and
> modeled it after that.

The DMA hardware on the 8610 is not the same as the DMA hardware on 83xx chips.
 You should copy the DMA data from another 83xx DTS.

-- 
Timur Tabi
Linux kernel developer at Freescale

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Using DMA interrupt on MPC8313
  2008-06-16 18:07                   ` Ron Madrid
  2008-06-16 18:11                     ` Timur Tabi
@ 2008-06-16 18:40                     ` Scott Wood
  2008-06-16 19:10                       ` Ron Madrid
  1 sibling, 1 reply; 19+ messages in thread
From: Scott Wood @ 2008-06-16 18:40 UTC (permalink / raw)
  To: Ron Madrid; +Cc: linuxppc-dev

Ron Madrid wrote:
> I don't see a "dma" node in the mpc8377mds.dts (2.6.25).  I found one in mpc8610_hpcd.dts and
> modeled it after that.

Try head-of-tree.

> 		dma@82a8 {
> 			#address-cells = <1>;
> 			#size-cells = <1>;
> 			compatible = "fsl,elo-dma";
> 			cell-index = <0>;
> 			reg = <0x82a8 0x4>; /* DMA general status register */
> 			ranges = <0x0 0x8100 0x200>;

Should also put the interrupts in the dma node itself, so that the 
driver can register it once and use the shared status register (but 
don't remove it from the individual channels).

-Scott

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Using DMA interrupt on MPC8313
  2008-06-16 18:40                     ` Scott Wood
@ 2008-06-16 19:10                       ` Ron Madrid
  2008-06-24  5:54                         ` jumpingProgrammer
  0 siblings, 1 reply; 19+ messages in thread
From: Ron Madrid @ 2008-06-16 19:10 UTC (permalink / raw)
  To: Scott Wood; +Cc: linuxppc-dev

Thank you for the help (again).  I've got my driver registering the isr on it's own now.  In the
end the problem was the dts and also not using irq_of_parse_and_map.

Ron
--- Scott Wood <scottwood@freescale.com> wrote:

> Ron Madrid wrote:
> > I don't see a "dma" node in the mpc8377mds.dts (2.6.25).  I found one in mpc8610_hpcd.dts and
> > modeled it after that.
> 
> Try head-of-tree.
> 
> > 		dma@82a8 {
> > 			#address-cells = <1>;
> > 			#size-cells = <1>;
> > 			compatible = "fsl,elo-dma";
> > 			cell-index = <0>;
> > 			reg = <0x82a8 0x4>; /* DMA general status register */
> > 			ranges = <0x0 0x8100 0x200>;
> 
> Should also put the interrupts in the dma node itself, so that the 
> driver can register it once and use the shared status register (but 
> don't remove it from the individual channels).
> 
> -Scott
> 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Using DMA interrupt on MPC8313
  2008-06-16 19:10                       ` Ron Madrid
@ 2008-06-24  5:54                         ` jumpingProgrammer
  2008-06-24 18:04                           ` Scott Wood
  0 siblings, 1 reply; 19+ messages in thread
From: jumpingProgrammer @ 2008-06-24  5:54 UTC (permalink / raw)
  To: linuxppc-dev


I use this in 8313erdb.dts, but can not find DMA info in
/proc/interrupts.why?

dma@8030 { 
			#address-cells = <1>; 
			#size-cells = <1>; 
			compatible = "fsl,elo-dma"; 
			cell-index = <0>; 
			reg = <8030 2d0>; /* DMA general status register */ 
			ranges = <0 8100 200>; 

			dma-channel@0 { 
				compatible = "fsl,elo-dma-channel"; 
				cell-index = <0>; 
				reg = <0 80>; 
				interrupt-parent = <700>; 
				interrupts = <47 8>; 
			}; 
			dma-channel@1 { 
				compatible = "fsl,elo-dma-channel"; 
				cell-index = <1>; 
				reg = <80 80>; 
				interrupt-parent = <700>; 
				interrupts = <47 8>; 
			}; 
			dma-channel@2 { 
				compatible = "fsl,elo-dma-channel"; 
				cell-index = <2>; 
				reg = <100 80>; 
				interrupt-parent = <700>; 
				interrupts = <47 8>; 
			}; 
			dma-channel@3 { 
				compatible = "fsl,elo-dma-channel"; 
				cell-index = <3>; 
				reg = <180 80>; 
				interrupt-parent = <700>; 
				interrupts = <47 8>; 
			};
		}


_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev



-- 
View this message in context: http://www.nabble.com/Using-DMA-interrupt-on-MPC8313-tp17808164p18084260.html
Sent from the linuxppc-dev mailing list archive at Nabble.com.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Using DMA interrupt on MPC8313
  2008-06-24  5:54                         ` jumpingProgrammer
@ 2008-06-24 18:04                           ` Scott Wood
  0 siblings, 0 replies; 19+ messages in thread
From: Scott Wood @ 2008-06-24 18:04 UTC (permalink / raw)
  To: jumpingProgrammer; +Cc: linuxppc-dev

On Mon, Jun 23, 2008 at 10:54:28PM -0700, jumpingProgrammer wrote:
> 
> I use this in 8313erdb.dts, but can not find DMA info in
> /proc/interrupts.why?

Is the driver enabled, and did it call request_irq?

-Scott

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2008-06-24 18:05 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-06-12 19:35 Using DMA interrupt on MPC8313 Ron Madrid
2008-06-12 19:47 ` Kumar Gala
2008-06-12 20:04   ` Ron Madrid
2008-06-12 23:01     ` Kumar Gala
2008-06-13 19:02       ` Ron Madrid
2008-06-13 23:33         ` Kumar Gala
2008-06-13 23:52           ` Ron Madrid
2008-06-13 23:54             ` Timur Tabi
2008-06-14  0:19               ` Ron Madrid
2008-06-16 14:11                 ` Timur Tabi
2008-06-16 14:44             ` Kumar Gala
2008-06-16 17:13               ` Ron Madrid
2008-06-16 17:32                 ` Scott Wood
2008-06-16 18:07                   ` Ron Madrid
2008-06-16 18:11                     ` Timur Tabi
2008-06-16 18:40                     ` Scott Wood
2008-06-16 19:10                       ` Ron Madrid
2008-06-24  5:54                         ` jumpingProgrammer
2008-06-24 18:04                           ` Scott Wood

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).