Guennadi, On Fri, Mar 22, 2013 at 11:02 AM, Prabhakar Lad <prabhakar.csengg@xxxxxxxxx> wrote: > Guennadi, > > On Sun, Feb 3, 2013 at 2:32 AM, Guennadi Liakhovetski > <g.liakhovetski@xxxxxx> wrote: >> On Wed, 30 Jan 2013, Prabhakar Lad wrote: >> >>> 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. >> >> This certainly _should_ not happen. Your subdevice driver should call >> v4l2_async_subdev_bound(), which will walk the notifier list and check, >> which of them this subdevice matches. I'm afraid you'll have to debug your >> set up to see why the wrong notifier matches. >> >>> 2: When I build the subdevices as part of uImage I hit a crash. >>> Attached is the crash log. >> >> The crash happens in v4l2_async_notifier_register() when a newly >> registered notifier walks the list of _already_ successfully probed >> subdevices. Then I'm not exactly sure where the actual crash happens, one >> of the possibilities is if the match_i2c() function is called for an >> invalid or unbound i2c device. You'll have to debug this too. >> > Trying to debug, I see that list_for_each_entry() in v4l2_async_belongs() > is picking up some invalid entry which is causing it to crash! > Here is the case when this happens may be you can try it out on your side, I have single subdev (say A) element in the asd array which is for the capture driver. and I have two subdevs (say B and C) which support asynchronous probing, which is required for the display driver. I have built only the capture driver and not the display driver as part of uImage, and I also build subdevs A, B, C as part of uImage. Note the the subdevs as are i2c based and is registered via i2c_register_board_info() , ie probe of A, B, C get called. Here is when the crash happens. The other case is when the crash doesn’t happen is if I have more than one element in asd array strange! or if I don’t build B and C as part of uImage. Regards, --Prabhakar > Cheers, > --Prabhakar > >> Thanks >> Guennadi >> >>> 3: When I just build and use either the capture/display driver and >>> their respective subdevices only every thing works fine. >>> >>> Regards, >>> --Prabhakar >>> >> >> --- >> Guennadi Liakhovetski, Ph.D. >> Freelance Open-Source Software Developer >> http://www.open-technology.de/ -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html