Skip to contentSkip to conversation

External Interrupt

DISCUSSION Marco Stornelli 5 participants 9 messages Feb 1, 2008

lore
Share & tools
lore
#0 lore raw

Hi,

I used the linux kernel 2.6.10 with a processor MPC8548E. I wrote a driver for a device connected with the local bus. This device has an external interrupt. In the local bus driver I have used the macro MPC85xx_IRQ_EXT<X> to get the interrupt number and pass it to the driver and after that register the ISR. Now with a kernel 2.6.21 this macro isn't available because in the header file irq.h there is the option CONFIG_PPC_MERGE that disable those options. I think this problem is related to the migration of ppc code towards powerpc. I know that now there is the new device tree source file where I can add a device and its interrupt number but I think in this file I should describe only the platform device, and this device is not a platform device. Then, how can I get now this value? Is there some function to call? How can I perform this operation?

Thanks in advance.

Marco

#1 lore raw
Quoted 14 lines · Marco Stornelli

Hi,

I used the linux kernel 2.6.10 with a processor MPC8548E. I wrote a driver for a device connected with the local bus. This device has an external interrupt. In the local bus driver I have used the macro MPC85xx_IRQ_EXT<X> to get the interrupt number and pass it to the driver and after that register the ISR. Now with a kernel 2.6.21 this macro isn't available because in the header file irq.h there is the option CONFIG_PPC_MERGE that disable those options. I think this problem is related to the migration of ppc code towards powerpc. I know that now there is the new device tree source file where I can add a device and its interrupt number but I think in this file I should describe only the platform device, and this device is not a platform device.

How comes that it's not platform device if it hangs off the local bus?

Quoted 2 lines

Then, how can I get now this value? Is there some function to call? How can I perform this operation?

Probably irq_alloc_virt()...

#2 lore raw

Sergei Shtylyov ha scritto:

Quoted 16 lines
Quoted 14 lines · Marco Stornelli

Hi,

I used the linux kernel 2.6.10 with a processor MPC8548E. I wrote a driver for a device connected with the local bus. This device has an external interrupt. In the local bus driver I have used the macro MPC85xx_IRQ_EXT<X> to get the interrupt number and pass it to the driver and after that register the ISR. Now with a kernel 2.6.21 this macro isn't available because in the header file irq.h there is the option CONFIG_PPC_MERGE that disable those options. I think this problem is related to the migration of ppc code towards powerpc. I know that now there is the new device tree source file where I can add a device and its interrupt number but I think in this file I should describe only the platform device, and this device is not a platform device.

Quoted 1 line

How comes that it's not platform device if it hangs off the local bus?

In SoC system generally the platform device are (more or less) the microprocessor controller like i2c, pci, local bus itself and so on. I think is like if you consider a PCI board a platform device only because it hangs off the PCI link.

Quoted 6 lines
Quoted 3 lines

Then, how can I get now this value? Is there some function to call? How can I perform this operation?

Probably irq_alloc_virt()...

#3 lore raw
Quoted 13 lines · Marco Stornelli
Quoted 12 lines
Quoted 12 lines

I used the linux kernel 2.6.10 with a processor MPC8548E. I wrote a driver for a device connected with the local bus. This device has an external interrupt. In the local bus driver I have used the macro MPC85xx_IRQ_EXT<X> to get the interrupt number and pass it to the driver and after that register the ISR. Now with a kernel 2.6.21 this macro isn't available because in the header file irq.h there is the option CONFIG_PPC_MERGE that disable those options. I think this problem is related to the migration of ppc code towards powerpc. I know that now there is the new device tree source file where I can add a device and its interrupt number but I think in this file I should describe only the platform device, and this device is not a platform device.

Quoted 4 lines
Quoted 1 line

How comes that it's not platform device if it hangs off the local bus?

In SoC system generally the platform device are (more or less) the microprocessor controller like i2c, pci, local bus itself and so on.

That's SoC devices but the notion of the platform device is not limited to
SoC device only, rather to all the on-board devices.

Quoted 2 lines

I think is like if you consider a PCI board a platform device only because it hangs off the PCI link.

No. PCI devices are detectable/configurable by kernel -- even if they are
on-board chips, they can be found by PCI bus scan (and finally presented as the device nodes as well), while local bus devices (most probably) not. An example (that comes to mind) of a device hanging off the local bus and yet described by the device tree are the flash chips.

WBR, Sergei

#4 lore raw

Sergei Shtylyov ha scritto:

Quoted 23 lines
Quoted 13 lines · Marco Stornelli
Quoted 12 lines
Quoted 12 lines

I used the linux kernel 2.6.10 with a processor MPC8548E. I wrote a driver for a device connected with the local bus. This device has an external interrupt. In the local bus driver I have used the macro MPC85xx_IRQ_EXT<X> to get the interrupt number and pass it to the driver and after that register the ISR. Now with a kernel 2.6.21 this macro isn't available because in the header file irq.h there is the option CONFIG_PPC_MERGE that disable those options. I think this problem is related to the migration of ppc code towards powerpc. I know that now there is the new device tree source file where I can add a device and its interrupt number but I think in this file I should describe only the platform device, and this device is not a platform device.

Quoted 4 lines
Quoted 1 line

How comes that it's not platform device if it hangs off the local bus?

In SoC system generally the platform device are (more or less) the microprocessor controller like i2c, pci, local bus itself and so on.

That's SoC devices but the notion of the platform device is not limited to
SoC device only, rather to all the on-board devices.

Quoted 8 lines
Quoted 2 lines

I think is like if you consider a PCI board a platform device only because it hangs off the PCI link.

No. PCI devices are detectable/configurable by kernel -- even if they are
on-board chips, they can be found by PCI bus scan (and finally presented as the device nodes as well), while local bus devices (most probably) not. An example (that comes to mind) of a device hanging off the local bus and yet described by the device tree are the flash chips.

Yes you are right. The local bus is like i2c, but I've never seen a device connected with i2c and described with a sub-node of i2c node in the dts file, however I think it's only philosophy, the most important thing is that there is a way to get the irq number :)

Thanks for your response.

Regards.

Marco

Quoted 8 lines

WBR, Sergei

_______________________________________________
Linuxppc-embedded mailing list
[email protected]
https://ozlabs.org/mailman/listinfo/linuxppc-embedded

#5 lore raw
Quoted 3 lines · Marco Stornelli

Yes you are right. The local bus is like i2c, but I've never seen a device connected with i2c and described with a sub-node of i2c node in the dts file,

Grep the dts directory for "rtc@68".

-Scott

#6 lore raw
Quoted 6 lines · Scott Wood
Quoted 3 lines · Marco Stornelli

Yes you are right. The local bus is like i2c, but I've never seen a device connected with i2c and described with a sub-node of i2c node in the dts file,

Grep the dts directory for "rtc@68".

But be sure to inspect /dts-v1/-ness too.

Yes, yes, yes. I have a typo fix coming... :-)

jdl

#7 lore raw
In reply to Marco Stornelli

Hello.

Quoted 4 lines · Marco Stornelli

I used the linux kernel 2.6.10 with a processor MPC8548E. I wrote a driver for a device connected with the local bus. This device has an external interrupt. In the local bus driver I have used the macro MPC85xx_IRQ_EXT<X> to get the interrupt number and pass it to the

Quoted 8 lines

driver and after that register the ISR. Now with a kernel 2.6.21 this macro isn't available because in the header file irq.h there is the option CONFIG_PPC_MERGE that disable those options. I think this problem is related to the migration of ppc code towards powerpc. I know that now there is the new device tree source file where I can add a device and its interrupt number but I think in this file I should describe only the platform device, and this device is not a platform device.

How comes that it's not platform device if it hangs off the local bus?

Quoted 2 lines

Then, how can I get now this value? Is there some function to call? How can I perform this operation?

Probably irq_alloc_virt()...

WBR, Sergei

#8 lore raw
In reply to Marco Stornelli

Marco,

ASFAIK there where some changes and you have to get the irq with = irq_create_mapping() or irq_of_parse_and_map()

Kindly regards

Hans
=20

Mit freundlichen Gr=FC=DFen

Hans Lehmann
Dipl.-Ing. Elektrotechnik

RITTER Elektronik GmbH
Leverkuser Strasse 65
D-42897 Remscheid

Tel. +49 (0) 2191 - 67 32 40
Fax +49 (0) 2191 - 67 14 29
Email [email protected]
Homepage www.ritter-elektronik.de

Gesch=E4ftsf=FChrer: Manfred A. Wagner, Dr. Uwe Baader Sitz der Gesellschaft: Oberhausen
HRB 17168 Duisburg USt-ID DE 814009849

-----Urspr=FCngliche Nachricht-----
Von: = linuxppc-embedded-bounces+hans.lehmann=3Dritter-elektronik.de@ozlabs.org = [mailto:linuxppc-embedded-bounces+hans.lehmann=3Dritter-elektronik.de@ozl= abs.org] Im Auftrag von Marco Stornelli
Gesendet: Freitag, 1. Februar 2008 09:11
An: Linuxppc Embedded Mailing List
Betreff: External Interrupt

Hi,

I used the linux kernel 2.6.10 with a processor MPC8548E. I wrote a = driver for a device connected with the local bus. This device has an = external interrupt. In the local bus driver I have used the macro = MPC85xx_IRQ_EXT<X> to get the interrupt number and pass it to the driver = and after that register the ISR. Now with a kernel 2.6.21 this macro = isn't available because in the header file irq.h there is the option = CONFIG_PPC_MERGE that disable those options. I think this problem is = related to the migration of ppc code towards powerpc. I know that now = there is the new device tree source file where I can add a device and = its interrupt number but I think in this file I should describe only = the platform device, and this device is not a platform device. Then, how = can I get now this value? Is there some function to call? How can I = perform this operation?

Thanks in advance.

Marco
_______________________________________________
Linuxppc-embedded mailing list
[email protected]
https://ozlabs.org/mailman/listinfo/linuxppc-embedded