Hi Laurent
Thanks for your replying!
On 08/05/2014 10:05 AM, Laurent Pinchart wrote:
Hello,
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"
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