linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* mpc5200 arch=powerpc kernel=2.6.24: how do I request external IRQ0-3?
@ 2008-04-25 16:14 Mike Timmons
  2008-04-27  1:58 ` mtwallet
  0 siblings, 1 reply; 3+ messages in thread
From: Mike Timmons @ 2008-04-25 16:14 UTC (permalink / raw)
  To: linuxppc-embedded

[-- Attachment #1: Type: text/plain, Size: 1117 bytes --]

I am confused on a very simple subject: requesting an external IRQ from
a custom driver I'm writing  for a lite5200b-based board running kernel
2.6.24, arch=powerpc. 

 

With the old arch=ppc I saw reference to MPC52xx_IRQ3 and such. I don't
see reference to specific IRQs under the powerpc arch. I am starting to
better understand the dts scheme for peripheral interrupts, but I am
hung-up on the seemingly simple task of requesting an external IRQ and
registering a callback from my driver:

 

request_irq(  virtual_irq_number_for_IRQ3_that_I_don't_know_right_now,
&my_callback, flags, name, dev)

 

For this to work do I need to create a child node in the dts that
specifies interrupts = <1 3 2> for IRQ3?  Must the IRQ I'm requesting be
associated with the dev argument to request_irq via the dts?

 

I just think I'm missing something very obvious as regards using
IRQ[0-3] on the mpc52xx. The DTS makes sens to me for peripheral
interrupts getting associated with their respective peripherals, but
when I want any old driver to use IRQ0-3 How do I request it?

 

Thanks.


[-- Attachment #2: Type: text/html, Size: 3511 bytes --]

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

* Re: mpc5200 arch=powerpc kernel=2.6.24: how do I request external IRQ0-3?
  2008-04-25 16:14 mpc5200 arch=powerpc kernel=2.6.24: how do I request external IRQ0-3? Mike Timmons
@ 2008-04-27  1:58 ` mtwallet
  2008-04-27  5:01   ` Grant Likely
  0 siblings, 1 reply; 3+ messages in thread
From: mtwallet @ 2008-04-27  1:58 UTC (permalink / raw)
  To: linuxppc-embedded


I got something working. I created a "device" child in the DTS file and used
th platform driver subsystem to register my module and get the virtual IRQ
as derived from the interrupt triplet-style spec in the dts file.

I'm still not real content as my child is nested with the SOC peripherals,
but this is more of a style/readability hang-up for me, for now. At least
now I can get the virtual irq by registering a platform driver, requesting
the irq number, and successfully requesting the irq.

I welcome any advice if I have used the dts file in an unintended fashion,
but it feels like the right place to specify a "device", even if all the
device embodies is an IRQ. Newbie conceptual difficulty overcome.



mtwallet wrote:
> 
> I am confused on a very simple subject: requesting an external IRQ from
> a custom driver I'm writing  for a lite5200b-based board running kernel
> 2.6.24, arch=powerpc. 
> 
>  
> 
> With the old arch=ppc I saw reference to MPC52xx_IRQ3 and such. I don't
> see reference to specific IRQs under the powerpc arch. I am starting to
> better understand the dts scheme for peripheral interrupts, but I am
> hung-up on the seemingly simple task of requesting an external IRQ and
> registering a callback from my driver:
> 
>  
> 
> request_irq(  virtual_irq_number_for_IRQ3_that_I_don't_know_right_now,
> &my_callback, flags, name, dev)
> 
>  
> 
> For this to work do I need to create a child node in the dts that
> specifies interrupts = <1 3 2> for IRQ3?  Must the IRQ I'm requesting be
> associated with the dev argument to request_irq via the dts?
> 
>  
> 
> I just think I'm missing something very obvious as regards using
> IRQ[0-3] on the mpc52xx. The DTS makes sens to me for peripheral
> interrupts getting associated with their respective peripherals, but
> when I want any old driver to use IRQ0-3 How do I request it?
> 
>  
> 
> Thanks.
> 
> 
> _______________________________________________
> Linuxppc-embedded mailing list
> Linuxppc-embedded@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
> 

-- 
View this message in context: http://www.nabble.com/mpc5200-arch%3Dpowerpc-kernel%3D2.6.24%3A-how-do-I-request-external-IRQ0-3--tp16900805p16918127.html
Sent from the linuxppc-embedded mailing list archive at Nabble.com.

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

* Re: mpc5200 arch=powerpc kernel=2.6.24: how do I request external IRQ0-3?
  2008-04-27  1:58 ` mtwallet
@ 2008-04-27  5:01   ` Grant Likely
  0 siblings, 0 replies; 3+ messages in thread
From: Grant Likely @ 2008-04-27  5:01 UTC (permalink / raw)
  To: mtwallet; +Cc: linuxppc-embedded

On Sat, Apr 26, 2008 at 7:58 PM, mtwallet <mike_timmons@trimble.com> wrote:
>
>  I got something working. I created a "device" child in the DTS file and used
>  th platform driver subsystem to register my module and get the virtual IRQ
>  as derived from the interrupt triplet-style spec in the dts file.

Sorry I didn't get back to you right away.  Yes, the best/right thing
to do is put a node in your device tree to capture the interrupt and
other interfaces to your custom device.

You should consider using the of_platform infrastructure for
registering your device.  Your driver code can extract its register
locations and interrupts directly from a device tree node.  For an
example, look at the ulite_of_probe and ulite_of_driver in
driver/serial/uartlite.c.

>  I'm still not real content as my child is nested with the SOC peripherals,
>  but this is more of a style/readability hang-up for me, for now. At least
>  now I can get the virtual irq by registering a platform driver, requesting
>  the irq number, and successfully requesting the irq.
>
>  I welcome any advice if I have used the dts file in an unintended fashion,
>  but it feels like the right place to specify a "device", even if all the
>  device embodies is an IRQ. Newbie conceptual difficulty overcome.

Your part of the way there.  Your node should be a child of the device
that it is connected to.  Is it attached to the local bus?  or i2c?
It should have a "compatible" property so that your device driver can
find it (in the form 'compatible = "<manufacturer>,<device>";').  It
should have both an 'interrupt-parent' and an 'interrupts' property
for specifying the interrupt.  If the device is addressable, it should
have a 'reg' property.

You're right that it shouldn't be mixed in with the SoC nodes because
that doesn't accurately describe your platform.  But, it is perfectly
fine for it to be a child of one of the SoC nodes (for example if it
is attached to one of the i2c busses).

Cheers,
g.

-- 
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.

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

end of thread, other threads:[~2008-04-27  5:01 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-25 16:14 mpc5200 arch=powerpc kernel=2.6.24: how do I request external IRQ0-3? Mike Timmons
2008-04-27  1:58 ` mtwallet
2008-04-27  5:01   ` Grant Likely

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).