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