This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DRA744: GPIO6_11 IRQ trigger exception after Android Boot up (6AM1.3)

Part Number: DRA744

Hi ,

This is customer board , TP IRQ ( GPIO6_11 ) triggered level is set to "IRQ_TYPE_LEVEL_LOW" ,  it couldn't be triggered in normal after android boot completed .

But the IRQ can be triggered at follow operations  :

1. After kernel boot completed ,and before zygote service start up ,at this time ,IRQ can be triggered when touch the TP panel .

2. After zygote service start up , and send data to the console ( Uart for debug ) all the time . The IRQ will be triggered when touch the TP panel .

3. After zygote service start up , touch the TP panel ,the GPIO6_11 is confirmed has gone down from the oscilloscope . At this time ,the IRQ is not triggered .

    But after typed "cat /d/gpio" in the adb shell , the IRQ is triggered . And the  GPIO6_11 is low from the result of the command "cat /d/gpio" .

Here is the configuration about TP IRQ (GPIO6_11) :

DTS :

 978         atmel_mxt_ts@4a {
 979                         compatible ="atmel,maxtouch";
 980                         reg = <0x4a>;
 981                         interrupt-parent = <&gpio6>;
 982                         interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
 983
 984                         /* pins used by touchscreen */
 985                         pinctrl-names = "pmx_ts_active","pmx_ts_suspend","pmx_ts_release";
 986                         pinctrl-0 = <&ts_pins>;
 987                         pinctrl-1 = <&ts_suspend>;
 988                         pinctrl-2 = <&ts_release>;
 989                         atmel,reset-gpio = <&gpio6 10 0>;
 990                         //atmel,power-gpio = <&gpio5 17 0>;
 991                         atmel,irq-gpio = <&gpio6 11 IRQ_TYPE_LEVEL_LOW>;
 993
 994                         atmel,display-coords = <0 0 1920 1080>;
 995                         atmel,panel-coords = <0 0 1920 1080>;
 996                         /*atmel,i2c-pull-up;*/
 997                         atmel,no-force-update;
 998                 };

 

Driver to request the IRQ :

                                      request_threaded_irq(data->client->irq, NULL,
2118                                 mxt_interrupt,
2119                                 IRQ_TYPE_LEVEL_LOW | IRQF_ONESHOT,
2120                                 data->client->name, data);

 

Here is our analysis about this problem :

1. Check the crossbar configuration , GPIO6_IRQ_1 has mapped to the MPU . Pls refer the attachment for detail crossbar.txt.

| 137   | 0x4A002B4A |  29 | GPIO6_IRQ_1                        | GPIO6         | GPIO6 interrupt 1 

2.Check the interrupts registered by J6 , GPIO6_IRQ register in success .

root@jacinto6evm:/ # cat /proc/interrupts
cat /proc/interrupts
           CPU0       CPU1

........

202:        348          0      CBAR  29 Level     4805d000.gpio
214:        348          0  4805d000.gpio  11 Level     maxtouch

........

3.Check the mode of the PAD (AB4) which used as GPIO6_11 ,it has been set as input mode & pull down .

127|root@jacinto6evm:/ # omapconf read 0x4a003778
omapconf read 0x4a003778
0004000E

4. Kerenel Log is as follow ,Pls refer the attachment .kernel_log_for_GPIO6_11_IRQ_exception.txt

[   20.749966] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[   21.808446] omap-iommu 55082000.mmu: 55082000.mmu: version 2.1
[   23.590722] [baker][hdmi] omap_connector_get_modes
[   23.595678] [baker] hdmic_check_timings 170 ---
[   25.393383] init: Service 'bootanim' (pid 229) exited with status 0
[   27.358660] [baker] mxt_interrupt --
[   27.364895] [baker] mxt_interrupt --end
[   27.479665] [baker] mxt_interrupt --
[   27.485915] [baker] mxt_interrupt --end
[   31.233672] [baker] mxt_interrupt --
[   31.239893] [baker] mxt_interrupt --end
[   31.362664] [baker] mxt_interrupt --
[   31.368851] [baker] mxt_interrupt --end
[   36.013874] [baker] mxt_interrupt --
[   36.021809] [baker] mxt_interrupt --end
[   84.144215] [baker] mxt_interrupt --
[   84.150714] [baker] mxt_interrupt --end
[   93.590972] [baker] mxt_interrupt --

[   93.598936] [baker] mxt_interrupt --end
shell@jacinto6evm:/ $
shell@jacinto6evm:/ $
shell@jacinto6evm:/ $
shell@jacinto6evm:/ $
shell@jacinto6evm:/ $
shell@jacinto6evm:/ $
shell@jacinto6evm:/ $
shell@jacinto6evm:/ $
shell@jacinto6evm:/ $
shell@jacinto6evm:/ $
shell@jacinto6evm:/ $
shell@jacinto6evm:/ $
shell@jacinto6evm:/ $
shell@jacinto6evm:/ $
shell@jacinto6evm:/ $
shell@jacinto6evm:/ $

///////////////////////////////////////////////////////////////////////////////////////

// After android boot completed , the IRQ is not triggered .
At this time ,I touch the Panel ,the GPIO6_11 goes down , but the IRQ is not Triggered .
And I typed the keypad with this console , it triggered as follow .

shell@jacinto6evm:/ $ [  106.533830] [baker] mxt_interrupt --
j[  106.544266] [baker] mxt_interrupt --end

 

 

We have ever tried to set the "Enable Wakeup" bit (1<<24) of the PAD AB4 ,but it couldn't be set . The register value is always 0x0004000E ,rather than 0x0104000E .

We tried to use other GPIOs IRQ  such as GPIO8_0 / GPIO2_1 , it got the same result .

We guess that CPU maybe sleep while touch the TP panel . Pls give us some comments to solve this problem .

 

Thanks .

// Baker

 

  • Hi ,
    Here is the GPIO6 Register dump ,the configuration is correct .

    root@jacinto6evm:/ # omapconf dump 0x4805D000 0x4805D194
    omapconf dump 0x4805D000 0x4805D194
    |----------------------------|
    | Address (hex) | Data (hex) |
    |----------------------------|
    | 0x4805D000 | 0x50602001 |
    | 0x4805D004 | 0x00000000 |
    | 0x4805D008 | 0x00000000 |
    | 0x4805D00C | 0x00000000 |
    | 0x4805D010 | 0x0000001D |
    | 0x4805D014 | 0x00000000 |
    | 0x4805D018 | 0x00000000 |
    | 0x4805D01C | 0x00000000 |
    | 0x4805D020 | 0x00000000 |
    | 0x4805D024 | 0x00000000 |
    | 0x4805D028 | 0x00000000 |
    | 0x4805D02C | 0x00000000 |
    | 0x4805D030 | 0x00000000 |
    | 0x4805D034 | 0x00000800 |
    | 0x4805D038 | 0x00000000 |
    | 0x4805D03C | 0x00000800 |
    | 0x4805D040 | 0x00000000 |
    | 0x4805D044 | 0x00000800 |
    | 0x4805D048 | 0x00000000 |
    | 0x4805D04C | 0x00000000 |
    | 0x4805D050 | 0x00000000 |
    | 0x4805D054 | 0x00000000 |
    | 0x4805D058 | 0x00000000 |
    | 0x4805D05C | 0x00000000 |
    | 0x4805D060 | 0x00000000 |
    | 0x4805D064 | 0x00000000 |
    | 0x4805D068 | 0x00000000 |
    | 0x4805D06C | 0x00000000 |
    | 0x4805D070 | 0x00000000 |
    | 0x4805D074 | 0x00000000 |
    | 0x4805D078 | 0x00000000 |
    | 0x4805D07C | 0x00000000 |
    | 0x4805D080 | 0x00000000 |
    | 0x4805D084 | 0x00000000 |
    | 0x4805D088 | 0x00000000 |
    | 0x4805D08C | 0x00000000 |
    | 0x4805D090 | 0x00000000 |
    | 0x4805D094 | 0x00000000 |
    | 0x4805D098 | 0x00000000 |
    | 0x4805D09C | 0x00000000 |
    | 0x4805D0A0 | 0x00000000 |
    | 0x4805D0A4 | 0x00000000 |
    | 0x4805D0A8 | 0x00000000 |
    | 0x4805D0AC | 0x00000000 |
    | 0x4805D0B0 | 0x00000000 |
    | 0x4805D0B4 | 0x00000000 |
    | 0x4805D0B8 | 0x00000000 |
    | 0x4805D0BC | 0x00000000 |
    | 0x4805D0C0 | 0x00000000 |
    | 0x4805D0C4 | 0x00000000 |
    | 0x4805D0C8 | 0x00000000 |
    | 0x4805D0CC | 0x00000000 |
    | 0x4805D0D0 | 0x00000000 |
    | 0x4805D0D4 | 0x00000000 |
    | 0x4805D0D8 | 0x00000000 |
    | 0x4805D0DC | 0x00000000 |
    | 0x4805D0E0 | 0x00000000 |
    | 0x4805D0E4 | 0x00000000 |
    | 0x4805D0E8 | 0x00000000 |
    | 0x4805D0EC | 0x00000000 |
    | 0x4805D0F0 | 0x00000000 |
    | 0x4805D0F4 | 0x00000000 |
    | 0x4805D0F8 | 0x00000000 |
    | 0x4805D0FC | 0x00000000 |
    | 0x4805D100 | 0x00000000 |
    | 0x4805D104 | 0x00000000 |
    | 0x4805D108 | 0x00000000 |
    | 0x4805D10C | 0x00000000 |
    | 0x4805D110 | 0x00000000 |
    | 0x4805D114 | 0x00000001 |
    | 0x4805D118 | 0x00000000 |
    | 0x4805D11C | 0x00000000 |
    | 0x4805D120 | 0x00000000 |
    | 0x4805D124 | 0x00000000 |
    | 0x4805D128 | 0x00000000 |
    | 0x4805D12C | 0x00000000 |
    | 0x4805D130 | 0x00000002 |
    | 0x4805D134 | 0xFFFFFBFF |
    | 0x4805D138 | 0xFFE17C00 |
    | 0x4805D13C | 0x00000400 |
    | 0x4805D140 | 0x00000800 |
    | 0x4805D144 | 0x00000000 |
    | 0x4805D148 | 0x00000000 |
    | 0x4805D14C | 0x00000000 |
    | 0x4805D150 | 0x00000000 |
    | 0x4805D154 | 0x00000000 |
    | 0x4805D158 | 0x00000000 |
    | 0x4805D15C | 0x00000000 |
    | 0x4805D160 | 0x00000000 |
    | 0x4805D164 | 0x00000000 |
    | 0x4805D168 | 0x00000000 |
    | 0x4805D16C | 0x00000000 |
    | 0x4805D170 | 0x00000000 |
    | 0x4805D174 | 0x00000000 |
    | 0x4805D178 | 0x00000000 |
    | 0x4805D17C | 0x00000000 |
    | 0x4805D180 | 0x00000000 |
    | 0x4805D184 | 0x00000000 |
    | 0x4805D188 | 0x00000000 |
    | 0x4805D18C | 0x00000000 |
    | 0x4805D190 | 0x00000400 |
    | 0x4805D194 | 0x00000400 |
    |----------------------------|
  • Hi Baker,

    I have forwarded your question to a GPIO expert for comment.

    Regards,
    Yordan
  • Hi Baker,

    Does zygote itself has any significance (I don't think so), or it's just for timing info when the GPIO stops working?
    If you do "stop" command in Android, it kills zygote. Does the GPIO work after that?

    Regards,
    Vishal

  • One more question.
    After Android boot is complete, if you do "getevent" command and tap the screen, do you see any events?

  • Hi Vishal ,
    About zygote ,it is just timing info when the GPIO stops working , nothing special .

    After do "stop" command ,It will disable the IRQ . GPIO could not work after that .

    root@jacinto6evm:/sys/devices/platform/44000000.ocp/4805d000.gpio/gpio/gpiochip160/device # stop
    [ 915.528203] init: no such service 'zygote_secondary'
    [ 915.533440] init: Service 'zygote' is being killed...
    [ 915.554421] init: Service 'surfaceflinger' is being killed...
    [ 915.566738] init: Service 'netd' is being killed...
    root@jacinto6evm:/sys/devices/platform/44000000.ocp/4805d000.gpio/gpio/gpiochip160/device # [ 915.577375] init: Service 'netd' (pid 176) killed by signal 9
    [ 915.586341] init: Service 'netd' (pid 176) killing any children in process group
    [ 915.595599] init: Service 'zygote' (pid 184) killed by signal 9
    [ 915.601578] init: Service 'zygote' (pid 184) killing any children in process group
    [ 915.609874] init: Untracked pid 937 killed by signal 9
    [ 915.695546] init: Service 'surfaceflinger' (pid 160) killed by signal 9
    [ 915.702232] init: Service 'surfaceflinger' (pid 160) killing any children in process group
    [ 915.814810] init: Untracked pid 777 killed by signal 9
    [ 915.820122] mtp_release
    [ 915.824845] init: Untracked pid 556 killed by signal 9
    [ 915.830276] init: Untracked pid 567 killed by signal 9
    [ 915.835777] init: Untracked pid 767 killed by signal 9
    [ 915.841110] init: Untracked pid 818 killed by signal 9
    [ 915.846505] init: Untracked pid 902 killed by signal 9
    [ 915.851825] init: Untracked pid 923 killed by signal 9
    [ 915.857363] init: Untracked pid 993 killed by signal 9
    [ 915.862677] init: Untracked pid 1023 killed by signal 9
    [ 915.868145] init: Untracked pid 1032 killed by signal 9
    [ 915.873806] init: Untracked pid 1057 killed by signal 9
    [ 915.879215] init: Untracked pid 1073 killed by signal 9
    [ 915.884963] init: Untracked pid 1086 killed by signal 9
    [ 915.890419] init: Untracked pid 1105 killed by signal 9
    [ 915.896126] init: Untracked pid 1125 killed by signal 9
    [ 915.901534] init: Untracked pid 1160 killed by signal 9
    [ 915.912878] init: Untracked pid 784 killed by signal 9
    [ 915.951178] init: Untracked pid 550 killed by signal 9
    [ 916.043583] [baker]mxt_stop 3595 disable irq 214 ///////////////////////


    Thanks .
    // Baker
  • Hi Vishal ,

    No events happen after the operations "getevent and tap the screen" .

    Thanks.
    // Baker
  • Hi Baker,

    Do you have a ".idc" file for touchscreen under /system/usr/idc/ folder of Android?
    On J6 EVM, we have EP05120M09.idc file under /system/usr/idc/, Also below lines are seen in logcat showing the registration of input device with Android.

    01-01 00:00:12.111   483   526 I EventHub: New device: id=2, fd=76, path='/dev/input/event0', name='EP05120M09', classes=0x14, configuration='/system/usr/idc/EP05120M09.idc', keyLayout='', keyCharacterMap='', builtinKeyboard=false, wakeMechanism=EPOLLWAKEUP, usingClockIoctl=true
    01-01 00:00:12.196   483   526 I InputReader:   Touch device 'EP05120M09' could not query the properties of its associated display.  The device will be inoperable until the display size becomes available.
    01-01 00:00:12.196   483   526 I InputReader: Device added: id=2, name='EP05120M09', sources=0x00001002
    01-01 00:00:12.197   483   526 I InputReader: Device reconfigured: id=2, name='EP05120M09', size 1920x1200, orientation 0, mode 1, display id 0


    Regards,
    Vishal