Re: [GIT PULL FOR v3.10] vb2 enhancement + solo6x10 driver overhaul

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I'm canceling this pull request for now. Bluecherry have their own driver
which of course diverged from ours and I want to investigate how best to bring
the two together again.

I will make a new pull request with just the two vb2 patches.

Regards,

	Hans

On Fri March 8 2013 14:06:19 Hans Verkuil wrote:
> Hi Mauro,
> 
> This patch series adds the gfp_flags field to vb2 in order to be able to
> use GFP_DMA or __GFP_DMA32 for PCI drivers like the solo that can only do
> 32-bit DMA. This is a temporary fix, Marek is working on a better solution,
> but that won't happen during this kernel cycle. It's blocking work Federico
> and myself are doing though, so he is OK with this going in and he'll adapt
> it later. It's an internal API only and easy enough to change later.
> 
> The second vb2 patch silences some debug messages that the dma-sg allocator
> kept sending out every time a buffer was allocated or freed. Only do that
> if the debug option is set. Those messages really started to annoy me.
> 
> The remainder are the solo6x10 patches, overhauling that driver into a sane
> state. It is now actually usable, although there are still a few issues that
> need to be resolved before it can be moved out of staging.
> 
> It has been tested with my Bluecherry BC-04120A MPEG4 4 port video encoder/decoder
> card, generously provided by Bluecherry about two years ago.
> 
> The patch series in this pull request is almost unchanged from the version
> posted earlier:
> 
> http://comments.gmane.org/gmane.linux.drivers.video-input-infrastructure/61275
> 
> Only the last patch is new. There I rename most of the sources to give them
> a proper solo6x10- prefix. That patch has no other changes.
> 
> Remaining open issues:
> 
> 1) Most importantly, the video from video0 is broken: it is supposed to be
>    either one of the four inputs or a 2x2 image of all four inputs, instead I
>    always get the first video line of the input repeated for the whole image.
> 
>    I have no idea why and it would be very nice if someone from Bluecherry
>    can look at this. I do not see anything wrong in the DMA code, so it is
>    a mystery to me. I'm beginning to wonder if you are actually supposed to
>    be able to DMA from video0!
> 
> 2) I couldn't get it to work on a big-endian system. I keep getting
>    SOLO_PCI_ERR_P2M_DESC errors, but I see nothing wrong with the DMA
>    descriptor. Perhaps if someone with a solo datasheet can tell me the
>    possible causes of that error interrupt I might be able to figure it
>    out. It's just the DMA setup that does something wrong, the rest seems
>    fine.
> 
> 3) What is the meaning of this snippet of code in v4l2-enc.c?
> 
>         if (pix->priv)
>                 solo_enc->type = SOLO_ENC_TYPE_EXT;
> 
>    I've commented it out since it is completely undocumented and no driver
>    should assume that priv is non-zero anymore, precisely because of issues
>    like this. Ismael, do you know what the difference is between SOLO_ENC_TYPE_STD
>    and SOLO_ENC_TYPE_EXT?
> 
>    Update: I now know what this is, but this will require some research to get
>    this to work. Basically you can get two encoded streams out of the box: each
>    with different encoder settings (e.g. high and low bitrates). With the priv
>    field you would select which you set up. But this probably should be implemented
>    with an extra video node.
> 
> 4) There is a custom extension for motion detection. I left that part unchanged
>    as it doesn't look too bad, but I am unable to test it properly. I've
>    ordered a suitable CCTV camera from dealextreme, but that will take a few
>    weeks before I have it (dx.com is cheap, but delivery is quite slow). I'd
>    like to experiment a bit with this.
> 
> 5) The tw28* 'drivers' should really be split off as subdevice drivers, but
>    unfortunately I don't have a datasheet for the tw2815 (I found one for the
>    tw2864 though). If I ever get hold of a datasheet, then creating subdev
>    drivers for this would be nice.
> 
>    Update: I have now have a tw2815 datasheet.
> 
> 6) The kernel threads really should be replaced by workqueues.
> 
> So there is still work to be done, but at least the driver is in a much better
> state.
> 
> Regards,
> 
> 	Hans
> 
> 
> 
> The following changes since commit 457ba4ce4f435d0b4dd82a0acc6c796e541a2ea7:
> 
>   [media] bttv: move fini_bttv_i2c() from bttv-input.c to bttv-i2c.c (2013-03-05 17:11:12 -0300)
> 
> are available in the git repository at:
> 
>   git://linuxtv.org/hverkuil/media_tree.git solo
> 
> for you to fetch changes up to a3998bd98e5e68e303ddaf560bd621241c232449:
> 
>   solo6x10: add a proper solo6x10- prefix to the sources. (2013-03-08 13:41:01 +0100)
> 
> ----------------------------------------------------------------
> Hans Verkuil (21):
>       videobuf2: add gfp_flags.
>       vb2-dma-sg: add debug module option.
>       solo6x10: fix querycap.
>       solo6x10: add v4l2_device.
>       solo6x10: add control framework.
>       solo6x10: fix scheduling while atomic error.
>       solo6x10: fix various format-related compliancy issues.
>       solo6x10: add support for prio and control event handling.
>       solo6x10: move global fields in solo_enc_fh to solo_enc_dev.
>       solo6x10: move global fields in solo_dev_fh to solo_dev.
>       solo6x10: add missing size-- to enc_write_sg.
>       solo6x10: rename the spinlock 'lock' to 'slock'.
>       solo6x10: convert encoder nodes to vb2.
>       solo6x10: convert the display node to vb2.
>       solo6x10: use monotonic timestamps.
>       solo6x10: drop video_type and add proper s_std support.
>       solo6x10: update buffer flags to fix clash with existing flags.
>       solo6x10: use correct __GFP_DMA32 flags.
>       solo6x10: small big-endian fix.
>       solo6x10: also stop DMA if the SOLO_PCI_ERR_P2M_DESC is raised.
>       solo6x10: add a proper solo6x10- prefix to the sources.
> 
>  drivers/media/v4l2-core/videobuf2-core.c                           |    2 +-
>  drivers/media/v4l2-core/videobuf2-dma-contig.c                     |    5 +-
>  drivers/media/v4l2-core/videobuf2-dma-sg.c                         |   22 +-
>  drivers/media/v4l2-core/videobuf2-vmalloc.c                        |    4 +-
>  drivers/staging/media/solo6x10/Kconfig                             |    2 +-
>  drivers/staging/media/solo6x10/Makefile                            |    4 +-
>  drivers/staging/media/solo6x10/{core.c => solo6x10-core.c}         |   10 +-
>  drivers/staging/media/solo6x10/{disp.c => solo6x10-disp.c}         |   10 +-
>  drivers/staging/media/solo6x10/{enc.c => solo6x10-enc.c}           |    6 +-
>  drivers/staging/media/solo6x10/{g723.c => solo6x10-g723.c}         |    2 +-
>  drivers/staging/media/solo6x10/{gpio.c => solo6x10-gpio.c}         |    0
>  drivers/staging/media/solo6x10/{i2c.c => solo6x10-i2c.c}           |    0
>  drivers/staging/media/solo6x10/{offsets.h => solo6x10-offsets.h}   |    0
>  drivers/staging/media/solo6x10/{osd-font.h => solo6x10-osd-font.h} |    0
>  drivers/staging/media/solo6x10/{p2m.c => solo6x10-p2m.c}           |    8 +-
>  drivers/staging/media/solo6x10/{registers.h => solo6x10-regs.h}    |    2 +-
>  drivers/staging/media/solo6x10/{tw28.c => solo6x10-tw28.c}         |   14 +-
>  drivers/staging/media/solo6x10/{tw28.h => solo6x10-tw28.h}         |    1 +
>  drivers/staging/media/solo6x10/{v4l2-enc.c => solo6x10-v4l2-enc.c} | 1024 ++++++++++++++++--------------------------------
>  drivers/staging/media/solo6x10/{v4l2.c => solo6x10-v4l2.c}         |  583 +++++++++++----------------
>  drivers/staging/media/solo6x10/solo6x10.h                          |   52 ++-
>  include/media/videobuf2-core.h                                     |   10 +-
>  22 files changed, 664 insertions(+), 1097 deletions(-)
>  rename drivers/staging/media/solo6x10/{core.c => solo6x10-core.c} (96%)
>  rename drivers/staging/media/solo6x10/{disp.c => solo6x10-disp.c} (96%)
>  rename drivers/staging/media/solo6x10/{enc.c => solo6x10-enc.c} (97%)
>  rename drivers/staging/media/solo6x10/{g723.c => solo6x10-g723.c} (99%)
>  rename drivers/staging/media/solo6x10/{gpio.c => solo6x10-gpio.c} (100%)
>  rename drivers/staging/media/solo6x10/{i2c.c => solo6x10-i2c.c} (100%)
>  rename drivers/staging/media/solo6x10/{offsets.h => solo6x10-offsets.h} (100%)
>  rename drivers/staging/media/solo6x10/{osd-font.h => solo6x10-osd-font.h} (100%)
>  rename drivers/staging/media/solo6x10/{p2m.c => solo6x10-p2m.c} (96%)
>  rename drivers/staging/media/solo6x10/{registers.h => solo6x10-regs.h} (99%)
>  rename drivers/staging/media/solo6x10/{tw28.c => solo6x10-tw28.c} (99%)
>  rename drivers/staging/media/solo6x10/{tw28.h => solo6x10-tw28.h} (97%)
>  rename drivers/staging/media/solo6x10/{v4l2-enc.c => solo6x10-v4l2-enc.c} (63%)
>  rename drivers/staging/media/solo6x10/{v4l2.c => solo6x10-v4l2.c} (56%)
> --
> 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
> 
--
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


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux