# GPIO Interrupt

**URL:** <https://forums.developer.nvidia.com/t/gpio-interrupt/54897>\
**Category:** Jetson TX2\
**Created:** [November 6, 2017, 8:20am UTC](https://forums.developer.nvidia.com/t/gpio-interrupt/54897 "2017-11-06T08:20:35Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![spke12](https://developer.download.nvidia.com/images/forums/profile-default-devtalk-84.png) [@spke12](https://forums.developer.nvidia.com/u/spke12)\
**Post date:** [November 6, 2017, 8:20am UTC](https://forums.developer.nvidia.com/t/gpio-interrupt/54897/1 "2017-11-06T08:20:35Z")

</div>

Hi,

I’m a beginner to jetson tx2. I am reading signal from GPIO pin to detect edges in signal. I want to go with interrupts but I do not have any idea to lead it with c language. can any on e help me to go with interrupt in GPIO?

---

<div class="post-metadata">

**Author:** ![JerryChang](https://sea2.discourse-cdn.com/nvidia/user_avatar/forums.developer.nvidia.com/jerrychang/32/14043_2.png) [@JerryChang](https://forums.developer.nvidia.com/u/JerryChang)\
**Post date:** [November 6, 2017, 8:57am UTC](https://forums.developer.nvidia.com/t/gpio-interrupt/54897/2 "2017-11-06T08:57:48Z")

</div>

hello sanjeewaapp,

you’re able to access the kernel sources via Jetson Download Center.  
[url][https://developer.nvidia.com/embedded/dlc/l4t-sources-28-1[/url]](https://developer.nvidia.com/embedded/dlc/l4t-sources-28-1%5B/url%5D)

please check the tegra\_gpio\_readl() functions for more details.  
thanks

---

<div class="post-metadata">

**Author:** ![spke12](https://developer.download.nvidia.com/images/forums/profile-default-devtalk-84.png) [@spke12](https://forums.developer.nvidia.com/u/spke12)\
**Post date:** [November 6, 2017, 9:31am UTC](https://forums.developer.nvidia.com/t/gpio-interrupt/54897/3 "2017-11-06T09:31:22Z")

</div>

Hi Jerry,

Thanks for your reply. I’ll refer it. Where is it located?

---

<div class="post-metadata">

**Author:** ![JerryChang](https://sea2.discourse-cdn.com/nvidia/user_avatar/forums.developer.nvidia.com/jerrychang/32/14043_2.png) [@JerryChang](https://forums.developer.nvidia.com/u/JerryChang)\
**Post date:** [November 6, 2017, 10:34am UTC](https://forums.developer.nvidia.com/t/gpio-interrupt/54897/4 "2017-11-06T10:34:51Z")

</div>

hello sanjeewaapp,

you could check below for example,  
R28.1\_sources/kernel/kernel-4.4/drivers/gpio-tegra.c

---

<div class="post-metadata">

**Author:** ![spke12](https://developer.download.nvidia.com/images/forums/profile-default-devtalk-84.png) [@spke12](https://forums.developer.nvidia.com/u/spke12)\
**Post date:** [November 6, 2017, 10:36am UTC](https://forums.developer.nvidia.com/t/gpio-interrupt/54897/5 "2017-11-06T10:36:47Z")

</div>

Hi Jerry,

I got. Can I use it directly?

Thanks

---

<div class="post-metadata">

**Author:** ![kayccc](https://sea2.discourse-cdn.com/nvidia/user_avatar/forums.developer.nvidia.com/kayccc/32/14043_2.png) [@kayccc](https://forums.developer.nvidia.com/u/kayccc)\
**Post date:** [November 8, 2017, 8:48am UTC](https://forums.developer.nvidia.com/t/gpio-interrupt/54897/6 "2017-11-08T08:48:53Z")

</div>

Hi sanjeewaapp,

Have you tried the tegra\_gpio\_readl() function to get the result you want?  
Any further support required?

Thanks

---

<div class="post-metadata">

**Author:** ![spke12](https://developer.download.nvidia.com/images/forums/profile-default-devtalk-84.png) [@spke12](https://forums.developer.nvidia.com/u/spke12)\
**Post date:** [November 8, 2017, 12:57pm UTC](https://forums.developer.nvidia.com/t/gpio-interrupt/54897/7 "2017-11-08T12:57:08Z")

</div>

Hi kayccc,

I could not be able to figure it out. still I am searching a way to do it. Now I am looking to develop kernel module that can be used to interface GPIO. can you help me to figure it out readl() function?

Thanks

---

<div class="post-metadata">

**Author:** ![JerryChang](https://sea2.discourse-cdn.com/nvidia/user_avatar/forums.developer.nvidia.com/jerrychang/32/14043_2.png) [@JerryChang](https://forums.developer.nvidia.com/u/JerryChang)\
**Post date:** [November 23, 2017, 8:27am UTC](https://forums.developer.nvidia.com/t/gpio-interrupt/54897/8 "2017-11-23T08:27:39Z")

</div>

hello spke12,

you can refer to the tegra\_gpio\_readl() function to read the pin status, and implement your own interrupt function to handle that. thanks

---

<div class="post-metadata">

**Author:** ![spke12](https://developer.download.nvidia.com/images/forums/profile-default-devtalk-84.png) [@spke12](https://forums.developer.nvidia.com/u/spke12)\
**Post date:** [November 24, 2017, 5:20am UTC](https://forums.developer.nvidia.com/t/gpio-interrupt/54897/9 "2017-11-24T05:20:58Z")

</div>

hello Jerry,

You are saying that I have to implement my own kernel module aren’t you?

Thanks

---

<div class="post-metadata">

**Author:** ![JerryChang](https://sea2.discourse-cdn.com/nvidia/user_avatar/forums.developer.nvidia.com/jerrychang/32/14043_2.png) [@JerryChang](https://forums.developer.nvidia.com/u/JerryChang)\
**Post date:** [December 1, 2017, 3:13am UTC](https://forums.developer.nvidia.com/t/gpio-interrupt/54897/10 "2017-12-01T03:13:27Z")

</div>

hello spke12,

yes, please refer to that function and implement your own interrupt function.  
thanks

---

<div class="post-metadata">

**Author:** ![wuyankun1986](https://developer.download.nvidia.com/images/forums/profile-default-devtalk-84.png) [@wuyankun1986](https://forums.developer.nvidia.com/u/wuyankun1986)\
**Post date:** [December 1, 2017, 12:35pm UTC](https://forums.developer.nvidia.com/t/gpio-interrupt/54897/11 "2017-12-01T12:35:57Z")

</div>

Hello JerryChang,

we want to use the gpio pin as interrupt, just like spke12’s case.

I had saw the source code:  
R28.1\_sources/kernel/kernel-4.4/drivers/goio/gpio-tegra.c

And I also find some information in the /proc/interrupts.

256 tegra-gpio 125 Edge sdhci.cd

I had read the sourcecode:  
R28.1\_sources/kernel/kernel-4.4/drivers/mmc/host/sdhci-tegra.c

the cd detect pin is GPIO3\_PP.05 and the device tree is  
cd-gpios = \<&tegra\_main\_gpio TEGRA\_MAIN\_GPIO(P,5) 0\>

but in the sourcecode of sdhci-tegra.c

a.plat-\>cd\_gpio = of\_get\_named\_gpio(np, “cd-gpios”, 0);  
b.gpio\_is\_valid(plat-\>cd\_gpio)  
c.tegra\_host-\>cd\_irq = gpio\_to\_irq(plat-\>cd\_gpio);

d.disable\_irq\_wake(tegra\_host-\>cd\_irq);  
e.enable\_irq\_wake(tegra\_host-\>cd\_irq);

then I try to find something like “request\_irq or request\_gpio\_irq”

there is nothing here.

I don’t understand, how to bind the irq number to the interrupt respond server.

thanks.

---

<div class="post-metadata">

**Author:** ![JerryChang](https://sea2.discourse-cdn.com/nvidia/user_avatar/forums.developer.nvidia.com/jerrychang/32/14043_2.png) [@JerryChang](https://forums.developer.nvidia.com/u/JerryChang)\
**Post date:** [December 5, 2017, 8:52am UTC](https://forums.developer.nvidia.com/t/gpio-interrupt/54897/12 "2017-12-05T08:52:23Z")

</div>

hello wuyankun1986,

> > _I don’t understand, how to bind the irq number to the interrupt respond server._  
> > please refer to this function for more details,  
> > thanks

r28.1\_sources/kernel/kernel-4.4/drivers/gpio/gpiolib.c

```auto
int gpiod_to_irq(const struct gpio_desc *desc)
{
         struct gpio_chip *chip;
         int offset;

         if (!desc)
                 return -EINVAL;
         chip = desc->chip;
         offset = gpio_chip_hwgpio(desc);
         return chip->to_irq ? chip->to_irq(chip, offset) : -ENXIO;
}
EXPORT_SYMBOL_GPL(gpiod_to_irq);

```

---

<div class="post-metadata">

**Author:** ![nadeemm](https://sea2.discourse-cdn.com/nvidia/user_avatar/forums.developer.nvidia.com/nadeemm/32/367020_2.png) [@nadeemm](https://forums.developer.nvidia.com/u/nadeemm)\
**Post date:** [October 18, 2021, 6:27pm UTC](https://forums.developer.nvidia.com/t/gpio-interrupt/54897/13 "2021-10-18T18:27:35Z")

</div>

Closed on October 18, 2021, 6:27pm UTC


