how to know the Interrupt/GPIO number for a specific pin in linux

21,491

The Embedded Linux you are using should have a GPIO driver that has #define statements for the GPIO pins. You can then get the IRQ number of the specific GPIO using something like:

irq_num = gpio_to_irq(S3C64XX_GPP(8));

The Linux GPIO lib support for that particular chip is available in the following file:

linux/arch/arm/mach-s3c6400/include/mach/gpio.h

There you will find all the #define statements for the various GPIO.

See the section on GPIO Conventions in their documentation:

http://www.kernel.org/doc/Documentation/gpio/gpio.txt

Share:
21,491
Abd elrahman Diab
Author by

Abd elrahman Diab

Updated on July 05, 2022

Comments

  • Abd elrahman Diab
    Abd elrahman Diab almost 2 years

    i'm doing a project in which i need to handle an interrupt in Linux.

    the board i'm using is an ARM9Board based on the s3c6410 MCU by Samsung (arm 11 processor) and it has the following I/O interface :

    enter image description here

    as the image shows i have EINTx pins for external interrupts and GPxx pins as GPIO pins and i don't mind using any of them but i don't have their numbers !

    For EINTx pins :

    when i call

    int request_irq(unsigned int irq, void (*handler)(int, struct pt_regs *), 
    unsigned long flags, const char *device); 
    

    i need the interrupt number to pass it as the first paramter of the function , so how can i get the irq number for example the EINT16 pin ?

    For GPxx pins : the same story as i need the GPIO pin nuumber to pass it to those functions

    int gpio_request(unsigned gpio, const char *label);
    int gpio_direction_input(unsigned gpio);
    int gpio_to_irq(unsigned gpio);
    

    i.e how do i know the GPIO number for the GPP8 pin ?

    i searched the board documents and datasheet but it doesn't contain anything about how to get those numbers , any idea or help on where to look ?

  • Abd elrahman Diab
    Abd elrahman Diab almost 12 years
    the kernel supplied with the board have a GPIO driver at /drivers/gpio but non of the c files there have a #define for the pins , and i found /include/linux/gpio.g but it contains only the declaration for functions like gpio_request and gpio_to_irq but no #define either
  • embedded.kyle
    embedded.kyle almost 12 years
    I've updated my answer with specific information regarding the distro supplied with that board.
  • Abd elrahman Diab
    Abd elrahman Diab almost 12 years
    wow, thank u very much sir .. i don't know what was their idea of burying this information that much deep in the kernel but i think i should do a much harder search next time :)
  • Sagar Jain
    Sagar Jain almost 10 years
    @embedded.kyle: How do I know the function similar to S3C64XX_GPP() for the board in.mouser.com/new/pandaboardorg/pandaboardES ?
  • embedded.kyle
    embedded.kyle almost 10 years
    @mps It really depends on which Linux distro you are using so you should refer to that distro's documentation. But in general, you should find the gpio.h file and that should tell you everything you need to know. I've also updated the link to gpio.txt since it was broken. That should also be of some use to you.
  • Sagar Jain
    Sagar Jain almost 10 years
    Thanks for the updated link. That's really helpful. I don't see any function similar to S3C64XX_GPP() in linux/gpio.h