Skip to main content
SChen.11
Associate III
June 14, 2019
Solved

Can not use two irq for different driver

  • June 14, 2019
  • 2 replies
  • 2002 views

Hi, I use two touch panels, one is ft5306 and another is tsc2007. These are under same i2c bus, the i2c2 controller.The ft5306 use PG8 as interrupt line. The tsc2007 use PI8 as interrupt ine. Here is my dts code for these devices.

331 ft5x06: ft5x06@38 {
332 compatible = "edt,edt-ft5306";
333 reg = <0x38>;
334 interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
335 interrupt-parent = <&gpiog>;
336 interrupt-controller;
337 reset-gpios = <&gpiog 7 GPIO_ACTIVE_LOW>;
338 status = "okay";
339 };
 
362 tsc2007: tsc2007@48 {
363 compatible = "ti,tsc2007";
364 reg = <0x48>;
365 interrupt-parent = <&gpioi>;
366 interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
367 interrupt-controller;
368 gpios = <&gpioi 8 GPIO_ACTIVE_LOW>;
369 ti,x-plate-ohms = <660>;
370 wakeup-source;
371 };

When the linux system startup, the tsc2007 loaded and successful. But the ft5306 driver was error.

[ 6.996552] stm32mp157-pinctrl soc:pin-controller@50002000: irq line 8 already requested.
[ 7.038288] edt_ft5x06 0-0038: Unable to request touchscreen IRQ.
[ 7.076451] edt_ft5x06: probe of 0-0038 failed with error -16

It said the "irq line 8 already requested", but these devices use different IOs as interrupt. And I checked the /proc/interrupts file. The irq line 8 was requested by tsc2007. Now, I am confuse about the stm32gpio irq line. Because that two touchs dts code on other chip platform is works very well.

 71: 0 0 stm32-exti-h 19 Edge 5c004000.rtc:wakeup
 72: 0 0 stm32-exti-h 68 Edge m4@0
 73: 0 0 stm32gpio 8 Edge tsc2007

This topic has been closed for replies.
Best answer by PatrickF

Notice that EXTI can allocate interrupt of only one GPIO pin of same number regardless the GPIO port (see RM abstract below).

So, you cannot define EXTI8 to be from PG8 and PI8 at same time.

You should use another EXTIn channel and another PXn pin for the 2nd interrupt line (with n != 8).

 0690X000008ieSsQAI.png

2 replies

Uwe Bonnes
Chief
June 14, 2019

The EXTI controller on STM32 can only select one Pin per Pin number. As you need PG8 and PI8, this does not work. Interrupts on PG8 and PG8 will work as will PG8 and PI9.

PatrickF
PatrickFBest answer
Technical Moderator
June 14, 2019

Notice that EXTI can allocate interrupt of only one GPIO pin of same number regardless the GPIO port (see RM abstract below).

So, you cannot define EXTI8 to be from PG8 and PI8 at same time.

You should use another EXTIn channel and another PXn pin for the 2nd interrupt line (with n != 8).

 0690X000008ieSsQAI.png

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.NEW ! Sidekick STM32 AI agent, see here