Skip to contentSkip to conversation

GPIO-Rcar: Driver does not work after Unbind-rebind.

Bug カオ ミン ヒェップ 2 participants 3 messages Aug 1, 2014 – Aug 5, 2014

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Hello,

I tested gpio-rcar driver at Linux-upstream-v3.16-rc5 on Lager. When I tried to unbind and then rebind the device, error messages occur. Then gpio-rcar did not work and interrupt number did not count up any more.

The error messages is showed as below:
"irq 0, desc: ee005040, depth: 1, cou0 ->handle_irq(): c005eea0, handle_bad_irq+0x0/0x21c ->irq_data.chip(): c05de7f8, 0xc05de7f8
->action(): (null)
IRQ_NOPROBE set
IRQ_NOREQUEST set
irq 0, desc: ee005040, depth: 1, count: 0, unhandled: 0 ->handle_irq(): c005eea0, handle_bad_irq+0x0/0x21c ->irq_data.chip(): c05de7f8, 0xc05de7f8
->action(): (null)
IRQ_NOPROBE set
IRQ_NOREQUEST set"

Please see it and fix this bug.

Best regards,
JINSO/Cao Minh Hiep.

#1 lore raw

Hello,

Quoted 20 lines · On Friday 01 August 2014 16:14:27 カオ ミン ヒェップ wrote:

Hello,

I tested gpio-rcar driver at Linux-upstream-v3.16-rc5 on Lager. When I tried to unbind and then rebind the device, error messages occur. Then gpio-rcar did not work and interrupt number did not count up any more.

The error messages is showed as below:
"irq 0, desc: ee005040, depth: 1, cou0 ->handle_irq(): c005eea0, handle_bad_irq+0x0/0x21c ->irq_data.chip(): c05de7f8, 0xc05de7f8
->action(): (null)
IRQ_NOPROBE set
IRQ_NOREQUEST set
irq 0, desc: ee005040, depth: 1, count: 0, unhandled: 0 ->handle_irq(): c005eea0, handle_bad_irq+0x0/0x21c ->irq_data.chip(): c05de7f8, 0xc05de7f8
->action(): (null)
IRQ_NOPROBE set
IRQ_NOREQUEST set"

Quoted 1 line

Please see it and fix this bug.

Could you please detail the procedure to follow to reproduce the problem ?

Signature · 8 lines
Regards,

Laurent Pinchart

--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
#2 lore raw

Hi Laurent
Thanks for your replying!

Quoted 23 lines · Laurent Pinchart

Hello,

Quoted 20 lines · On Friday 01 August 2014 16:14:27 カオ ミン ヒェップ wrote:

Hello,

I tested gpio-rcar driver at Linux-upstream-v3.16-rc5 on Lager. When I tried to unbind and then rebind the device, error messages occur. Then gpio-rcar did not work and interrupt number did not count up any more.

The error messages is showed as below:
"irq 0, desc: ee005040, depth: 1, cou0 ->handle_irq(): c005eea0, handle_bad_irq+0x0/0x21c ->irq_data.chip(): c05de7f8, 0xc05de7f8
->action(): (null)
IRQ_NOPROBE set
IRQ_NOREQUEST set
irq 0, desc: ee005040, depth: 1, count: 0, unhandled: 0 ->handle_irq(): c005eea0, handle_bad_irq+0x0/0x21c ->irq_data.chip(): c05de7f8, 0xc05de7f8
->action(): (null)
IRQ_NOPROBE set
IRQ_NOREQUEST set"

Quoted 3 lines
Quoted 1 line

Please see it and fix this bug.

Could you please detail the procedure to follow to reproduce the problem ?

Below is the procedure to follow to reproduce the problem:

1. The first, confirms gpio device:

# cd /sys/bus/platform/drivers/gpio_rcar;find -type l
2. unbind the device:
# cd /sys/bus/platform/drivers/gpio_rcar; echo e6051000.gpio> unbind
3. Confirm unbind status:
#  cd /sys/bus/platform/drivers/gpio_rcar;  ls -d e6051000.gpio
4. rebind the device:
#  cd /sys/bus/platform/drivers/gpio_rcar; echo e6051000.gpio > bind
5. confirm bind status:
#  cd /sys/bus/platform/drivers/gpio_rcar;  ls -d e6051000.gpio
6.# cat /proc/interrupts | grep e6051000.gpio
7. Switch SW2 ON/OFF on the board to ensure that device works normally after rebinding.

I attached the detail log of two cases unbinding-rebinding e6051000.gpio and e6053000.gpio

# uname -a
Linux linaro-nano 3.16.0-rc5-00001-gf522b45 #1 SMP Tue Aug 5 10:25:16 JST 2014 armv7l armv7l armv7l GNU/Linux
# dmesg | grep gpio
gpio-regulator regulator@2: Could not obtain regulator setting GPIOs: -517
platform regulator@2: Driver gpio-regulator requests probe deferral
gpio-regulator regulator@4: Could not obtain regulator setting GPIOs: -517
platform regulator@4: Driver gpio-regulator requests probe deferral
gpio_rcar e6050000.gpio: Runtime PM disabled, clock forced on.
gpio_rcar e6050000.gpio: driving 32 GPIOs
gpio_rcar e6051000.gpio: Runtime PM disabled, clock forced on.
gpio_rcar e6051000.gpio: driving 32 GPIOs
gpio_rcar e6052000.gpio: Runtime PM disabled, clock forced on.
gpio_rcar e6052000.gpio: driving 32 GPIOs
gpio_rcar e6053000.gpio: Runtime PM disabled, clock forced on.
gpio_rcar e6053000.gpio: driving 32 GPIOs
gpio_rcar e6054000.gpio: Runtime PM disabled, clock forced on.
gpio_rcar e6054000.gpio: driving 32 GPIOs
gpio_rcar e6055000.gpio: Runtime PM disabled, clock forced on.
gpio_rcar e6055000.gpio: driving 32 GPIOs
input: gpio_keys as /devices/gpio_keys/input/input0
# cd /sys/bus/platform/drivers/gpio_rcar; ls -d e6051000.gpio
e6051000.gpio
# cd /sys/bus/platform/drivers/gpio_rcar; echo e6051000.gpio> unbind
root@linaro-nano:/sys/bus/platform/drivers/gpio_rcar# ls -d e6051000.gpio
ls: cannot access e6051000.gpio: No such file or directory
root@linaro-nano:/sys/bus/platform/drivers/gpio_rcar# ls /dev/input/event0                                   
ls: cannot access /dev/input/event0: No such file or directory

# cd /sys/bus/platform/drivers/gpio_rcar; echo e6051000.gpio > bind gpio_rcar e6051000.gpio: Runtime PM disabled, clock forced on. gpio_rcar e6051000.gpio: driving 32 GPIOs
# ls -d e6051000.gpio/drivers/gpio_rcar# cd /sys/bus/platform/drive e6051000.gpio

# cat /proc/interrupts | grep e6051000.gpio
 37:          0          0          0          0       GIC  37  e6051000.gpio
419:          0          0          0          0  e6051000.gpio  14  SW2-1
420:          0          0          0          0  e6051000.gpio  24  SW2-2
421:          0          0          0          0  e6051000.gpio  26  SW2-3
422:          0          0          0          0  e6051000.gpio  28  SW2-4

When switchs the SW2 ON/OFF, the error messages occur as below:

root@linaro-nano:/sys/bus/platform/drivers/gpio_rcar# irq 0, desc: eec05040, depth: 1, count: 0, unhandled: 0
->handle_irq():  c005fd0c, handle_bad_irq+0x0/0x21c
->irq_data.chip(): c05ec790, 0xc05ec790
->action():   (null)
   IRQ_NOPROBE set
 IRQ_NOREQUEST set
irq 0, desc: eec05040, depth: 1, count: 0, unhandled: 0
->handle_irq():  c005fd0c, handle_bad_irq+0x0/0x21c
->irq_data.chip(): c05ec790, 0xc05ec790
->action():   (null)
   IRQ_NOPROBE set
 IRQ_NOREQUEST set
irq 0, desc: eec05040, depth: 1, count: 0, unhandled: 0
->handle_irq():  c005fd0c, handle_bad_irq+0x0/0x21c
->irq_data.chip(): c05ec790, 0xc05ec790
->action():   (null)
   IRQ_NOPROBE set
 IRQ_NOREQUEST set
irq 0, desc: eec05040, depth: 1, count: 0, unhandled: 0
->handle_irq():  c005fd0c, handle_bad_irq+0x0/0x21c
->irq_data.chip(): c05ec790, 0xc05ec790
->action():   (null)
   IRQ_NOPROBE set
 IRQ_NOREQUEST set
irq 0, desc: eec05040, depth: 1, count: 0, unhandled: 0
->handle_irq():  c005fd0c, handle_bad_irq+0x0/0x21c
->irq_data.chip(): c05ec790, 0xc05ec790
->action():   (null)
   IRQ_NOPROBE set
 IRQ_NOREQUEST set
# uname -a
Linux linaro-nano 3.16.0-rc5-00001-gf522b45 #1 SMP Tue Aug 5 10:25:16 JST 2014 armv7l armv7l armv7l GNU/Linux
root@linaro-nano:~# cd /sys/bus/platform/drivers/gpio_rcar;find -type l
./e6051000.gpio
./e6053000.gpio
./e6055000.gpio
./e6050000.gpio
./e6052000.gpio
./e6054000.gpio
platform e6053000.gpio: Runtime PM disabled, clock forced off.

#echo e6053000.gpio> unbind

root@linaro-nano:/sys/bus/platform/drivers/gpio_rcar# ls -d e6053000.gpio
ls: cannot access e6053000.gpio: No such file or directory

#echo e6053000.gpio > bind
gpio_rcar e6053000.gpio: Runtime PM disabled, clock forced on. gpio_rcar e6053000.gpio: driving 32 GPIOs

root@linaro-nano:/sys/bus/platform/drivers/gpio_rcar# ls -d e6053000.gpio
e6053000.gpio
root@linaro-nano:~# cat /proc/interrupts | grep e6053000.gpio
 39:          0          0          0          0       GIC  39  e6053000.gpio

When Insert/remove mSD into/from SD0 and SD2 slot, the error messages occur as below:

root@linaro-nano:~# irq 0, desc: eec05040, depth: 1, count: 0, unhandled: 0
->handle_irq():  c005fd0c, handle_bad_irq+0x0/0x21c
->irq_data.chip(): c05ec790, 0xc05ec790
->action():   (null)
   IRQ_NOPROBE set
 IRQ_NOREQUEST set
irq 0, desc: eec05040, depth: 1, count: 0, unhandled: 0
->handle_irq():  c005fd0c, handle_bad_irq+0x0/0x21c
->irq_data.chip(): c05ec790, 0xc05ec790
->action():   (null)
   IRQ_NOPROBE set
 IRQ_NOREQUEST set
irq 0, desc: eec05040, depth: 1, count: 0, unhandled: 0
->handle_irq():  c005fd0c, handle_bad_irq+0x0/0x21c
->irq_data.chip(): c05ec790, 0xc05ec790
->action():   (null)
   IRQ_NOPROBE set
 IRQ_NOREQUEST set
irq 0, desc: eec05040, depth: 1, count: 0, unhandled: 0
->handle_irq():  c005fd0c, handle_bad_irq+0x0/0x21c
->irq_data.chip(): c05ec790, 0xc05ec790
->action():   (null)
   IRQ_NOPROBE set
 IRQ_NOREQUEST set
irq 0, desc: eec05040, depth: 1, count: 0, unhandled: 0
->handle_irq():  c005fd0c, handle_bad_irq+0x0/0x21c
->irq_data.chip(): c05ec790, 0xc05ec790
->action():   (null)
   IRQ_NOPROBE set
 IRQ_NOREQUEST set
irq 0, desc: eec05040, depth: 1, count: 0, unhandled: 0
->handle_irq():  c005fd0c, handle_bad_irq+0x0/0x21c
->irq_data.chip(): c05ec790, 0xc05ec790
->action():   (null)
   IRQ_NOPROBE set
 IRQ_NOREQUEST set
irq 0, desc: eec05040, depth: 1, count: 0, unhandled: 0
->handle_irq():  c005fd0c, handle_bad_irq+0x0/0x21c
->irq_data.chip(): c05ec790, 0xc05ec790
->action():   (null)
   IRQ_NOPROBE set
 IRQ_NOREQUEST set
irq 0, desc: eec05040, depth: 1, count: 0, unhandled: 0
->handle_irq():  c005fd0c, handle_bad_irq+0x0/0x21c
->irq_data.chip(): c05ec790, 0xc05ec790
->action():   (null)
   IRQ_NOPROBE set
 IRQ_NOREQUEST set
irq 0, desc: eec05040, depth: 1, count: 0, unhandled: 0
->handle_irq():  c005fd0c, handle_bad_irq+0x0/0x21c
->irq_data.chip(): c05ec790, 0xc05ec790
->action():   (null)
   IRQ_NOPROBE set
 IRQ_NOREQUEST set