Hi,
In my custom board, based on P2040rdb, tired to configure GPIO22/IRQ04 as an interrupt.
Kept RCW bit[373]= 0 and GPICR = 0x00000200 and EIVPR2 = 0x80080002 (it must rigger on high to low).
While inserting module im getting error,
genirq: Setting trigger mode 0 for irq22 failed ((mpc8xxx_irq_set_type+0x0/0xec)).
And not able to catch interrupt.
root@hmd-modem::~# cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3
16: 0 0 0 0 OpenPIC Edge mpic-error-int
22: 0 0 0 0 mpc8xxx-gpio Edge CYCLONE_GPIO_IRQ22
Pls let me know if i'm missing anything here.
Thanks in advance.
--
Gourav
You wrote:
> configure GPIO22/IRQ04 as an interrupt.
GPIO interrupts are jointly connected to the MPIC as internal interrupt 39 - refer to the QorIQ P2040 Reference Manual, Table 24-1. P2040 Internal Interrupt Assignments.
This means that you have to configure IIVPR39.
Hi ufedor,
Thanks for your response.
Can you pls explain how to configure i.e. which all registers need to be changed??
From hardware point of view you have to configure GPIMR = 0x00000200 and IIVPR39.
Consider that you have to properly declare the IRQ in the DTS.
Refer to /Documentation/powerpc/booting-without-of.txt for details. The value of the "interrupt" property is calculated by the following formula:
[DTS_interrupt_number] = ([EIVPR/IIVPR_addr] - [Interrupt_Source_Configuration_Registers_Base]) / 0x20
where [EIVPR/IIVPR_addr] is the address of the interrupt configuration registers of the IRQ being declared, [Interrupt_Source_Configuration_Registers_Base] is 0x5000 for P2040.
Hi,
Interrupt is getting triggered on GPIO-22, after doing following settings,
bit -22 is for GPIO-22
1) GPIER : 0x00000000
2) GPIMR : 0x00000200 bit-22=1 i.e. gpio-22 is non-masked, enabled
3) GPICR : 0x00011015 bit-22=0 i.e. interrupt can be triggered in high to low and low to high
4) IIVPR39(0xFE0506E0): 0x7261703D bit 8 =0, As per ref manual all internal interrupts will be active high.
But im getting interrupts in both the edges. Pls have a look in register settings.
Thanks,
Gourav
> 3) GPICR : 0x00011015 bit-22=0 i.e. interrupt can be triggered in high to low and low to high
Set the bit 22 to 1 - i.e.:
GPICR = 0x00011215
"1" menas interrupt will be triggered on high to low transaction but "IIVPR30" register tells all internal interrupts will be active high. What does it mean??
Anyways, I made bit 22 as 1 but still interrupts are triggering on both the edges.
Hi ufedor,
Waiting for your reply....
1) Use a debug mode to ensure that when GPICR[22]=1, the GPIER[22] is set only by high-to-low change on the port.
2) Ensure that GPIER[22] is cleared (by writing 1) in the interrupt handler.