-------------------------------------------------------------------------------
Readme for Linux device driver for the OmniVision OV511 USB to camera bridge IC
-------------------------------------------------------------------------------

Copyright (C) 1999 Mark McClelland (mmcclelland@delphi.com)
All rights reserved.

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; version 2 of the License.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA


VERSION: 0.99.01 (19991215)

REQUIRED KERNEL VERSION: 2.3.31

INTRODUCTION:

This is a preliminary version of my OV511 Linux device driver. At the moment,
it does not do much more than detect the chip and initialize it. As trivial
as this sounds, it represents many hours of my work. Since OmniVision refused
to release the full specs to me, I had to write code to probe out the register
read/write commands. Some code is in place to allow a frame to be grabbed, but
it is nowhere near complete and crashed my system the last time I tried it.

WHAT YOU NEED:

- The kernel specified above under "REQUIRED KERNEL VERSION".

- The standard kernel build tools (make, gcc, etc...)

- If you want to help with the development, get the chip's specification docs at
  http://www.ovt.com/omniusbp.html

HOW TO BUILD IT:

Just put the files in whatever directory you like and run "make". I currently
#include the necessary usb.h file with an absolute pathname (/usr/src/linux/drivers/usb/), so you don't need to build it from there, but you
DO need to eitherhave your kernel's USB source in that directory or change
ov511.c to reflect a different path.

If you make useful modifications to the code, please send me a patch and I will
try to integrate your changes into the next release.

WHAT NEEDS TO BE DONE:

In short, a lot. Much of the code was copied straight from the CPiA driver and
may not completely apply to the OV511. Yes, I admit it, I was trying for a cheap
hack solution.

Right now, the most important thing is to get the driver to detect all of the
particular models of cameras out there (they each have their own supposedly 
unique ID number which should be reported to you on the kernel's console if your
camera is not yet supported.) If you have an unsupported camera, please send
me the model, manufacturer and ID number and I will add it to the detection code.
In the meantime, you can add to the code yourself in the function ov511_probe().

Of nearly equal importance is to get the isochronous code working so that we can
start grabbing frames. Last time I tried creating a device node and reading from
it, it OOPS'd and AIEE'd somewhere in the interrupt handler. (Make sure you do a
sync before trying this!!)

Support for specific CCD's will have to be implemented as well (such as the
OV7610.) This will likely require code to support the I2C bus and/or parallel
bus features of the OV511. I am neither a hardware engineer nor an I2C expert,
so I will need some help with this.

The rest of the work will involve implementing support for all the different
resolutions, color depths, etc. Also, while support for the OV511's proprietary
lossy compression is apparently not necessary (the code currently disables it,)
it would be a nice addition as it improves performance quite a bit. OmniVision
wouldn't tell me how the algorithm works, so we can't really work on that yet.
Please kindly inform OmniVision that you would like them to release their
specifications to the Linux community.

HOW TO CONTACT ME:

You can email me at mmcclelland@delphi.com . Please prefix the subject line
with "OV511: " so that I am certain to notice your message.

LICENSE:

The code in this archive is released under the GPL, version 2. Please see the
file "COPYING" for the full license. 

DISCLAIMER:

This is a preliminary release and it is very likely that it will crash your
system HARD, possibly causing permanent damage to your software and/or hardware.
I accept no responsibility for any damage or losses incurred as a result of this
software. I hereby warrant myself to be free from claims of such damages and
losses, incidental or otherwise. No warranty of any kind is expressed or implied.
Use at your own risk.

CREDITS:

The code is based in no small part on the CPiA driver by Johannes Erdfelt,
Randy Dunlap, and others. Big thanks to them for their pioneering work on that
and the USB stack. 
