Hello,

 

We are trying to implement an interrupt. The interrupt run ok but if we want
to unload and reload the module our system crashes:

 

Exit module output:

<3>Trying to free already-free IRQ 71

 

Init module output:

<3>IRQ handler type mismatch for IRQ 71

current handler: MYMODULE

 

 

This is part of the code:

 

Dts:

            [EMAIL PROTECTED] {

                  device_type = "mydev";

                  compatible = "mymodule";

                  reg = <8030 300>;

                  interrupts = <47 8>;

                  interrupt-parent = <700>;

            };

 

Global variable:

      unsigned int dev_id=MKDEV(MYDEV_MAJOR,0);

      struct device_node* dev_node;

      int irq_id;

 

 

Init_module:

 

// Find device node in device tree

      dev_node = of_find_node_by_type(NULL, "mydev");

      if (!dev_node)

      {

            printk(KERN_ALERT "\n\tERROR: No device found in device
tree\n");

            goto init_find_node_error;

      }

// Get and map irq number from device tree

      irq_id = irq_of_parse_and_map(dev_node, 0);

      if (irq_id == NO_IRQ)

      {

            printk(KERN_ALERT "\n\tERROR: irq_of_parse_and_map failed\n");

            goto init_parse_map_irq_error;

      }

// Request irq

      if (request_irq(irq_id, interrupt_handler, 0, "MYMODULE", &dev_id))

      {

            printk (KERN_ALERT "\n\tERROR: request irq\n");

            goto init_request_irq_error;

      }

 

Exit_module:

      free_irq(irq_id,NULL);

      of_node_put(dev_node);

 

Could you please help us with this?

 

Regards,

Medina

 

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

Reply via email to