Hi Guennadi,
I am working on adding v4l-asyn for capture and display device..
Here is my hw details:--
1: The capture device has two subdevs tvp514x @0x5c and tvp514x @0x5d.
2: The display device has a one subdev adv7343 @0x2a.
Note:- I have added async support for all the subdevices and the
capture and display driver too
Test Case:-
1: I have v4l2_async_notifier_register() for both capture and
display driver, as of now I have built
the subdevices as module. when board is up, I insert the
tvp514x subdevices and the capture
driver gets intialized (/dev/video0 & /dev/video1) nodes get
created, now I do insmod on the other
subdevice adv7343, the bound callback is called in capture
driver, but whereas this should have been
called in the display driver.
2: When I build the subdevices as part of uImage I hit a crash.
Attached is the crash log.
3: When I just build and use either the capture/display driver and
their respective subdevices only every thing works fine.
Regards,
--Prabhakar
Unable to handle kernel paging request at virtual address 001000f4
pgd = c0004000
[001000f4] *pgd=00000000
Internal error: Oops: 5 [#1] PREEMPT ARM
Modules linked in:
CPU: 0 Not tainted (3.8.0-rc4-00368-ge58e48d-dirty #69)
PC is at v4l2_async_belongs.clone.2+0x50/0xb4
LR is at v4l2_async_notifier_register+0xc0/0x134
pc : [<c020bd6c>] lr : [<c020bfe0>] psr: a0000013
sp : c702de50 ip : c04519f0 fp : 00000001
r10: c0451970 r9 : c0410550 r8 : c04519e4
r7 : c7127aa0 r6 : c7127aa8 r5 : c04519e4 r4 : 001000f4
r3 : c042934c r2 : c702c000 r1 : c7127aa8 r0 : c04519e4
Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
Control: 0005317f Table: c0004000 DAC: 00000017
Process swapper (pid: 1, stack limit = 0xc702c1b8)
Stack: (0xc702de50 to 0xc702e000)
de40: c04519e4 c042934c c042934c c020bfe0
de60: c0414068 c0414038 c04519d4 c0451970 00000001 c03f367c c0394b38 c70da828
de80: 00000000 00000000 c0451970 00000000 00000001 c0451270 00000001 c0410560
dea0: 00000000 c042f7f0 c04034b0 c03df1fc 00000000 c01d6fe4 c01d6fd0 c01d5a80
dec0: c0410560 c042f7f0 c0410594 00000000 00000000 c01d5d9c c042f7f0 c01d5d10
dee0: 00000000 c01d4354 c7027058 c7058330 c042f7f0 c04272f0 c71b6d20 c01d53ac
df00: c0375568 c02dff0c c042f7f0 c042f9c0 c702c000 00000000 00000000 c04034b0
df20: c03df1fc c01d62e4 00000000 c03fba24 c042f9c0 c702c000 00000000 c03f32f4
df40: c03df1fc c00087f8 00000000 c054753d c04166d8 c03fba20 c03fba24 00000006
df60: c03fba04 c042f9c0 00000053 c03df1fc 00000000 c03df8a4 00000006 00000006
df80: c03df1fc c0041b80 00000000 c02de254 00000000 00000000 00000000 00000000
dfa0: 00000000 c02de25c 00000000 c00094b0 00000000 00000000 00000000 00000000
dfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
dfe0: 00000000 00000000 00000000 00000000 00000013 00000000 00ff0002 002000ff
[<c020bd6c>] (v4l2_async_belongs.clone.2+0x50/0xb4) from [<c020bfe0>]
(v4l2_async_notifier_register+0xc0/0x134)
[<c020bfe0>] (v4l2_async_notifier_register+0xc0/0x134) from [<c03f367c>]
(vpif_probe+0x37c/0x4d0)
[<c03f367c>] (vpif_probe+0x37c/0x4d0) from [<c01d6fe4>]
(platform_drv_probe+0x14/0x18)
[<c01d6fe4>] (platform_drv_probe+0x14/0x18) from [<c01d5a80>]
(really_probe+0x68/0x1fc)
[<c01d5a80>] (really_probe+0x68/0x1fc) from [<c01d5d9c>]
(__driver_attach+0x8c/0x90)
[<c01d5d9c>] (__driver_attach+0x8c/0x90) from [<c01d4354>]
(bus_for_each_dev+0x54/0x7c)
[<c01d4354>] (bus_for_each_dev+0x54/0x7c) from [<c01d53ac>]
(bus_add_driver+0x1d0/0x2a0)
[<c01d53ac>] (bus_add_driver+0x1d0/0x2a0) from [<c01d62e4>]
(driver_register+0x78/0x190)
[<c01d62e4>] (driver_register+0x78/0x190) from [<c00087f8>]
(do_one_initcall+0x30/0x16c)
[<c00087f8>] (do_one_initcall+0x30/0x16c) from [<c03df8a4>]
(kernel_init_freeable+0xec/0x1b4)
[<c03df8a4>] (kernel_init_freeable+0xec/0x1b4) from [<c02de25c>]
(kernel_init+0x8/0xe4)
[<c02de25c>] (kernel_init+0x8/0xe4) from [<c00094b0>] (ret_from_fork+0x14/0x24)
Code: e594000c e240400c e1550004 0a00000f (e5942000)
---[ end trace 0de51fa202389da8 ]---
Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b