Hi All,
I'm a Linux enthusiast / developer. Lately I'm mainly active doing development for Fedora and writing kernel drivers (and as my day job I'm a lecturer in Computer Science).
Fedora has a policy of not shipping a heavily patched kernel, but instead tries to work with upstream to get any needed patches integrated. This policy extends to not shipping any addon drivers, but rather working to get drivers integrated upstream.
As such I've decided to start spending my spare time on getting more and better usb webcam support integrated upstream (for non usb video class devices). I wanted to have something to show, so I've gone to the store, bought a couple of webcams and started hacking and learning.
2 days ago I have finished my first pretty clean, standalone v4l2 webcam driver for Pixart pac207 webcams.
In the beginning I modelled this driver after the zc301 and sn9c102 driver which are currently already in the mainline kernel, using the memory management and other structure from these drivers and filling in the hardware dependent parts with the pac207 code from the out of tree gpsca driver.
During the development I kept the buffer management from the zc301 driver, but modelled the rest of the driver more and more after gspca. For example don't start the iso stream on device open and throw away iso packets received before the stream-on ioctl, but instead start and stop the stream as needed.
This has resulted in what I consider a nice and clean pac207 driver. But when I finished it I noticed that a lot of code in their was generic code for any simple usb webcam.
Since I plan to write standalone v4l2 drivers for mainline inclusion for other simple usb webcams I spend the last 2 days splitting the code of my pac207 driver into a generic usbvideo2 core (the kernel already has usbvideo, which has a number of v4l1 drivers) and a camera specific pac207 driver which builds on top of the usbvideo2 core.
So I've ended up with a model very much like gspca, but then not one large monolithic kernel module, but a more modular design with an core kernel module with (hopefully) generic code for simple usb webcam's, and a per usb controller chip type specific module (currently only one for pac207 controllers), and ofcourse very important this is code for v4l2 drivers, whereas the current gspca is v4l1.
I just recently (today) learned that there is work underway to make a v4l2 version of gspca by Jean-François Moine: http://moinejf.free.fr/ ), I hope that we can work together somehow on getting support for all the webcam's supported in gscpa integrated into the mainline kernel with a v4l2 interface.
I'll be sending 2 seperate mails one with my standalone pac207 driver, and one with the usbvideo2 core and a pac207 driver using this core, I'll include Makefiles for out of tree building with both of them so that interested people can test them.
I'm currently posting these as .c files for easy reading and compilation / testing, but I still hope to get a lot of feedback / a thorough review, esp of the core <-> pac207 split version as I hope to submit that as a patch for mainline inclusion soon.
Thanks & Regards,
Hans
Le vendredi 28 mars 2008 22:44, Hans de Goede a écrit :
Hi All,
I'm a Linux enthusiast / developer. Lately I'm mainly active doing development for Fedora and writing kernel drivers (and as my day job I'm a lecturer in Computer Science).
Fedora has a policy of not shipping a heavily patched kernel, but instead tries to work with upstream to get any needed patches integrated. This policy extends to not shipping any addon drivers, but rather working to get drivers integrated upstream.
As such I've decided to start spending my spare time on getting more and better usb webcam support integrated upstream (for non usb video class devices). I wanted to have something to show, so I've gone to the store, bought a couple of webcams and started hacking and learning.
2 days ago I have finished my first pretty clean, standalone v4l2 webcam driver for Pixart pac207 webcams.
In the beginning I modelled this driver after the zc301 and sn9c102 driver which are currently already in the mainline kernel, using the memory management and other structure from these drivers and filling in the hardware dependent parts with the pac207 code from the out of tree gpsca driver.
During the development I kept the buffer management from the zc301 driver, but modelled the rest of the driver more and more after gspca. For example don't start the iso stream on device open and throw away iso packets received before the stream-on ioctl, but instead start and stop the stream as needed.
This has resulted in what I consider a nice and clean pac207 driver. But when I finished it I noticed that a lot of code in their was generic code for any simple usb webcam.
Since I plan to write standalone v4l2 drivers for mainline inclusion for other simple usb webcams I spend the last 2 days splitting the code of my pac207 driver into a generic usbvideo2 core (the kernel already has usbvideo, which has a number of v4l1 drivers) and a camera specific pac207 driver which builds on top of the usbvideo2 core.
So I've ended up with a model very much like gspca, but then not one large monolithic kernel module, but a more modular design with an core kernel module with (hopefully) generic code for simple usb webcam's, and a per usb controller chip type specific module (currently only one for pac207 controllers), and ofcourse very important this is code for v4l2 drivers, whereas the current gspca is v4l1.
I just recently (today) learned that there is work underway to make a v4l2 version of gspca by Jean-François Moine: http://moinejf.free.fr/ ), I hope that we can work together somehow on getting support for all the webcam's supported in gscpa integrated into the mainline kernel with a v4l2 interface.
I'll be sending 2 seperate mails one with my standalone pac207 driver, and one with the usbvideo2 core and a pac207 driver using this core, I'll include Makefiles for out of tree building with both of them so that interested people can test them.
I'm currently posting these as .c files for easy reading and compilation / testing, but I still hope to get a lot of feedback / a thorough review, esp of the core <-> pac207 split version as I hope to submit that as a patch for mainline inclusion soon.
Thanks & Regards,
Hans
Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplac e _______________________________________________ Spca50x-devs mailing list Spca50x-devs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/spca50x-devs
Hans, I don't understand why you start this work without asking the gspca maintener ? Jean-Francois is working on the gspca_core driver for v4l2, you should help if you want.The pac207 maintener is Thomas, feel free to contact the spca50x-devel mailing list. If you have times you can try to implement the sn9c201 sn9c202 from Sonix, there is only a proprietary driver available at the moment ;-) regards
Hi Michel,
Michel Xhaard wrote:
Hans, I don't understand why you start this work without asking the gspca maintener ?
As I wrote I wanted to have something to show before announcing my plans, I don't like doing hot air only announcements. Also these last few weeks have been very usefull for me to learn a lot of new things (sofar I've only been writing hwmon device drivers, which are much simpler then usb webcam drivers).
Jean-Francois is working on the gspca_core driver for v4l2, you should help if you want.
I've already send a private mail to him (this evening) to try and coordinate our work.
Regards,
Hans
On 03/28/2008 05:44 PM, Hans de Goede wrote:
Hi All,
I'm a Linux enthusiast / developer. Lately I'm mainly active doing development for Fedora and writing kernel drivers (and as my day job I'm a lecturer in Computer Science).
Fedora has a policy of not shipping a heavily patched kernel, but instead tries to work with upstream to get any needed patches integrated. This policy extends to not shipping any addon drivers, but rather working to get drivers integrated upstream.
As such I've decided to start spending my spare time on getting more and better usb webcam support integrated upstream (for non usb video class devices). I wanted to have something to show, so I've gone to the store, bought a couple of webcams and started hacking and learning.
There is a partially completed driver for an Acer webcam here:
https://sourceforge.net/projects/m560x-driver/
And I have the hardware...
On Fri, 28 Mar 2008 22:44:15 +0100, Hans de Goede j.w.r.degoede@hhs.nl wrote:
As such I've decided to start spending my spare time on getting more and better usb webcam support integrated upstream (for non usb video class devices). I wanted to have something to show, so I've gone to the store, bought a couple of webcams and started hacking and learning.
I'm very happy someone found time to do this.
Since I plan to write standalone v4l2 drivers for mainline inclusion for other simple usb webcams I spend the last 2 days splitting the code of my pac207 driver into a generic usbvideo2 core (the kernel already has usbvideo, which has a number of v4l1 drivers) and a camera specific pac207 driver which builds on top of the usbvideo2 core.
Very interesting.
I'm currently posting these as .c files for easy reading and compilation / testing, but I still hope to get a lot of feedback / a thorough review, esp of the core <-> pac207 split version as I hope to submit that as a patch for mainline inclusion soon.
I see your patches in the mailbox and I'll have a look.
-- Pete
kernel@lists.fedoraproject.org