GPIO-Rcar: Driver does not work after Unbind-rebind.
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.
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_NOPROBEset
IRQ_NOREQUESTset
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_NOPROBEset
IRQ_NOREQUESTset"
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
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_NOPROBEset
IRQ_NOREQUESTset
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_NOPROBEset
IRQ_NOREQUESTset"
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 > bindgpio_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