28 Jul, 2011

36 commits

  • This is an initial driver release for the Omnivision 5642 CMOS sensor.

    Signed-off-by: Bastian Hecht
    Signed-off-by: Guennadi Liakhovetski
    Signed-off-by: Mauro Carvalho Chehab

    Bastian Hecht
     
  • Now that v4l2 subdevices have got their own device objects, having
    one more device in soc-camera clients became redundant and confusing.
    This patch removes those devices and the soc-camera bus, they used to
    reside on.

    Signed-off-by: Guennadi Liakhovetski
    Acked-by: Paul Mundt
    Signed-off-by: Mauro Carvalho Chehab

    Guennadi Liakhovetski
     
  • The soc-camera bus is now completely local again.

    Signed-off-by: Guennadi Liakhovetski
    Signed-off-by: Mauro Carvalho Chehab

    Guennadi Liakhovetski
     
  • This moves us one more step closer to eliminating the soc-camera bus
    and devices on it. Besides, as a side effect, CSI-2 runtime PM on
    sh-mobile secomes finer grained now: we only have to power on the
    interface, when the device nodes are open.

    Signed-off-by: Guennadi Liakhovetski
    Acked-by: Paul Mundt
    Signed-off-by: Mauro Carvalho Chehab

    Guennadi Liakhovetski
     
  • Add media bus configuration types and two subdev operations to get
    supported mediabus configurations and to set a specific configuration.
    Subdevs can support several configurations, e.g., they can send video data
    on 1 or several lanes, can be configured to use a specific CSI-2 channel,
    in such cases subdevice drivers return bitmasks with all respective bits
    set. When a set-configuration operation is called, it has to specify a
    non-ambiguous configuration.

    Signed-off-by: Stanimir Varbanov
    Signed-off-by: Guennadi Liakhovetski
    Signed-off-by: Mauro Carvalho Chehab

    Guennadi Liakhovetski
     
  • soc-camera host drivers shall be implementing their PM, using standard
    kernel methods, soc-camera specific hooks can die.

    Signed-off-by: Guennadi Liakhovetski
    Signed-off-by: Mauro Carvalho Chehab

    Guennadi Liakhovetski
     
  • Callback is used to acquire current analog TV standard from a subdev.
    It is used to avoid keeping current standard in top-level driver.

    Signed-off-by: Tomasz Stanislawski
    Signed-off-by: Kyungmin Park
    Signed-off-by: Mauro Carvalho Chehab

    Tomasz Stanislawski
     
  • Callback is used to acquire current digital video preset from a subdev.
    It is used to avoid keeping dv preset in top-level driver.

    Signed-off-by: Tomasz Stanislawski
    Signed-off-by: Kyungmin Park
    Signed-off-by: Mauro Carvalho Chehab

    Tomasz Stanislawski
     
  • Callback is used to acquire TV norms supported by a subdev.
    It is used to avoid having standards in top-level driver.

    Signed-off-by: Tomasz Stanislawski
    Signed-off-by: Kyungmin Park
    Reviewed-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Tomasz Stanislawski
     
  • This is a custom IR protocol decoder, for the RC-6-ish protocol used by
    the Microsoft Remote Keyboard, apparently developed internally at
    Microsoft, and officially dubbed MCIR-2, per their March 2011 remote and
    transceiver requirements and specifications document, which also touches
    on this IR keyboard/mouse device.

    Its a standard keyboard with embedded thumb stick mouse pointer and
    mouse buttons, along with a number of media keys. The media keys are
    standard RC-6, identical to the signals from the stock MCE remotes, and
    will be handled as such. The keyboard and mouse signals will be decoded
    and delivered to the system by an input device registered specifically
    by this driver.

    Successfully tested with multiple mceusb-driven transceivers, as well as
    with fintek-cir and redrat3 hardware. Essentially, any raw IR hardware
    with enough sampling resolution should be able to use this decoder,
    nothing about it is at all receiver-hardware-specific.

    This work is inspired by lirc_mod_mce:

    The documentation there and code aided in understanding and decoding the
    protocol, but the bulk of the code is actually borrowed more from the
    existing in-kernel decoders than anything. I did recycle the keyboard
    keycode table, a few defines, and some of the keyboard and mouse data
    parsing bits from lirc_mod_mce though.

    Special thanks to James Meyer for providing the hardware, and being
    patient with me as I took forever to get around to writing this.

    callback routine to ensure we don't get any stuck keys, and used
    symbolic names for the keytable. Also cc'ing Florian this time, who I
    believe is the original mod-mce author...

    CC: Florian Demski
    Signed-off-by: Jarod Wilson
    Signed-off-by: Mauro Carvalho Chehab

    Jarod Wilson
     
  • This patch adds the driver for the adp1653 LED flash controller. This
    controller supports a high power led in flash and torch modes and an
    indicator light, sometimes also called privacy light.

    The adp1653 is used on the Nokia N900.

    Signed-off-by: Sakari Ailus
    Signed-off-by: Tuukka Toivonen
    Signed-off-by: Laurent Pinchart
    Signed-off-by: David Cohen
    Acked-by: Laurent Pinchart
    Signed-off-by: Mauro Carvalho Chehab

    Sakari Ailus
     
  • It's getting confusing who is linking to what, so add an overview at
    the start of the header.

    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     
  • Thanks to Laurent Pinchart .

    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     
  • The implementation of VIDIOC_G/S/TRY_EXT_CTRLS in the control framework has
    to figure out which controls in the control list belong to the same cluster.
    Since controls belonging to the same cluster need to be handled as a unit,
    this is important information.

    It did that by going over the controls in the list and for each control that
    belonged to a multi-control cluster it would walk the remainder of the list
    to try and find controls that belong to that same cluster.

    This approach has two disadvantages:

    1) it was a potentially quadratic algorithm (although highly unlikely that
    it would ever be that bad in practice).
    2) it took place with the control handler's lock held.

    Since we want to make it possible in the future to change control values
    from interrupt context, doing a lot of work while holding a lock is not a
    good idea.

    In the new code the algorithm is no longer quadratic but linear in the
    number of controls in the list. Also, it now can be done beforehand.

    Another change that was made was to so the try and set at the same time.
    Before when S_TRY_EXT_CTRLS was called it would 'try' the controls first,
    and then it would 'set' them. The idea was that any 'try' errors would
    prevent the 'set' from happening, thus avoiding having partially set
    control lists.

    However, this caused more problems than it solved because between the 'try'
    and the 'set' changes might have happened, so it had to try a second time,
    and since actual controls with a try_ctrl op are very rare (and those that
    we have just adjust values and do not return an error), I've decided to
    drop that two-stage approach and just combine try and set.

    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     
  • When the event queue for a subscribed event is full, then the oldest
    event is dropped. It would be nice if the contents of that oldest
    event could be merged with the next-oldest. That way no information is
    lost, only intermediate steps are lost.

    This patch adds optional replace() (called when only one kevent was allocated)
    and merge() (called when more than one kevent was allocated) callbacks that
    will be called to do this job.

    These two callbacks are implemented for the V4L2_EVENT_CTRL event.

    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     
  • The driver had to decide how many events to allocate when the v4l2_fh struct
    was created. It was possible to add more events afterwards, but there was no
    way to ensure that you wouldn't miss important events if the event queue
    would fill up for that filehandle.

    In addition, once there were no more free events, any new events were simply
    dropped on the floor.

    For the control event in particular this made life very difficult since
    control status/value changes could just be missed if the number of allocated
    events and the speed at which the application read events was too low to keep
    up with the number of generated events. The application would have no idea
    what the latest state was for a control since it could have missed the latest
    control change.

    So this patch makes some major changes in how events are allocated. Instead
    of allocating events per-filehandle they are now allocated when subscribing an
    event. So for that particular event type N events (determined by the driver)
    are allocated. Those events are reserved for that particular event type.
    This ensures that you will not miss events for a particular type altogether.

    In addition, if there are N events in use and a new event is raised, then
    the oldest event is dropped and the new one is added. So the latest event
    is always available.

    This can be further improved by adding the ability to merge the state of
    two events together, ensuring that no data is lost at all. This will be
    added in the next patch.

    This also makes it possible to allow the user to determine the number of
    events that will be allocated. This is not implemented at the moment, but
    would be trivial.

    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     
  • The v4l2_ctrl_fh struct connected v4l2_ctrl with v4l2_fh so the control
    would know which filehandles subscribed to it. However, it is much easier
    to use struct v4l2_subscribed_event directly for that and get rid of that
    intermediate struct.

    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     
  • Drivers that supported events used to be rare, but now that controls can also
    raise events this will become much more common since almost all drivers have
    controls.

    This means that keeping struct v4l2_events as a separate struct make no more
    sense. Merging it into struct v4l2_fh simplifies things substantially as it
    is now an integral part of the filehandle struct.

    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     
  • This patch is to enable Atmel Image Sensor Interface (ISI) driver support.

    Signed-off-by: Josh Wu
    Acked-by: Jean-Christophe PLAGNIOL-VILLARD
    Signed-off-by: Guennadi Liakhovetski
    Signed-off-by: Mauro Carvalho Chehab

    Josh Wu
     
  • This patch removes .enum_input(), .suspend() and .resume() soc-camera
    client operations.

    Functionality, provided by .enum_input(), if needed, can be implemented
    using the v4l2-subdev API.

    As for .suspend() and .resume(), the only client driver, implementing
    these methods has been mt9m111, and the only host driver, using them
    has been pxa-camera. Now that both those drivers have been converted
    to the standard subdev .s_power() operation, .suspend() and .resume()
    can be removed.

    Signed-off-by: Guennadi Liakhovetski
    Signed-off-by: Mauro Carvalho Chehab

    Guennadi Liakhovetski
     
  • SOCAM_MIPI_[1234]LANE flags are not board-specific sensor flags, they
    are bus configuration flags.

    Signed-off-by: Guennadi Liakhovetski
    Signed-off-by: Mauro Carvalho Chehab

    Guennadi Liakhovetski
     
  • Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     
  • Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     
  • Whenever a control changes value or state an event is sent to anyone
    that subscribed to it.

    This functionality is useful for control panels but also for applications
    that need to wait for (usually status) controls to change value.

    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     
  • When an application changes a control you want to generate an event.
    However, you want to avoid sending such an event back to the application
    (file handle) that caused the change.

    Add the filehandle to the various set control functions.

    The filehandle isn't used yet, but the control event patches will need
    this.

    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     
  • It is a bit tricky to handle autogain/gain type scenerios correctly. Such
    controls need to be clustered and the V4L2_CTRL_FLAG_UPDATE should be set on
    the autofoo controls. In addition, the manual controls should be marked
    inactive when the automatic mode is on, and active when the manual mode is on.
    This also requires specialized volatile handling.

    The chances of drivers doing all these things correctly are pretty remote.
    So a new v4l2_ctrl_auto_cluster function was added that takes care of these
    issues.

    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     
  • This is required to implement control events and is also needed to allow
    for per-filehandle control handlers.

    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     
  • This patch adds the VENC or the Video encoder, which is responsible
    for the blending of all source planes and timing generation for Video
    modes like NTSC, PAL and other digital outputs. the VENC implementation
    currently supports COMPOSITE and COMPONENT outputs and NTSC and PAL
    resolutions through the analog DACs. The venc block is implemented
    as a subdevice, allowing for additional external and internal encoders
    of other kind to plug-in.

    Signed-off-by: Manjunath Hadli
    Acked-by: Muralidharan Karicheri
    Acked-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Manjunath Hadli
     
  • This patch implements the functionality of the OSD block
    of the VPBE. The OSD in total supports 4 planes or Video
    sources - 2 mainly RGB and 2 Video. The patch implements general
    handling of all the planes, with specific emphasis on the Video
    plane capabilities as the Video planes are supported through the
    V4L2 driver.

    Signed-off-by: Manjunath Hadli
    Acked-by: Muralidharan Karicheri
    Acked-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Manjunath Hadli
     
  • This patch implements the core functionality of the display driver,
    mainly controlling the VENC and other encoders, and acting as
    the one point interface for the main V4L2 driver. This implements
    the core of each of the V4L2 IOCTLs.

    Signed-off-by: Manjunath Hadli
    Acked-by: Muralidharan Karicheri
    Acked-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Manjunath Hadli
     
  • This is the display driver for Texas Instruments's DM644X family
    SoC. This patch contains the main implementation of the driver with the
    V4L2 interface. The driver implements the streaming model with
    support for both kernel allocated buffers and user pointers. It also
    implements all of the necessary IOCTLs necessary and supported by the
    video display device.

    Signed-off-by: Manjunath Hadli
    Acked-by: Muralidharan Karicheri
    Acked-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Manjunath Hadli
     
  • This patch simplifies the platform data slightly, by removing
    unused elements.

    Signed-off-by: Richard Röjfors
    Signed-off-by: Mauro Carvalho Chehab

    Richard Röjfors
     
  • Now we have a camera working over the marvell cam controller core. It
    works like the cafe driver and has all the same limitations, contiguous DMA
    only being one of them. But it's a start.

    Signed-off-by: Jonathan Corbet
    Signed-off-by: Mauro Carvalho Chehab

    Jonathan Corbet
     
  • This driver will soon become a family of drivers, so let's give it its own
    place to live. This move requires putting ov7670.h into include/media, but
    there are no code changes.

    Cc: Daniel Drake
    Signed-off-by: Jonathan Corbet
    Signed-off-by: Mauro Carvalho Chehab

    Jonathan Corbet
     
  • Durations can never be negative, so it makes sense to consistently use
    unsigned int for LIRC transmission. Contrary to the initial impression,
    this shouldn't actually change the userspace API.

    Signed-off-by: David Härdeman
    Signed-off-by: Mauro Carvalho Chehab

    David Härdeman
     
  • This is initial code written by Davide Ferri for the PCTV 340e, including
    a new xc4000 driver. I am checking in all the code unmodified, and making
    no assertions about its quality (other than confirming it compiles).

    [mchehab@redhat.com: rebased on the top of the current tree]
    Signed-off-by: Devin Heitmueller
    Signed-off-by: Davide Ferri
    Cc: Patrick Boettcher
    Signed-off-by: Mauro Carvalho Chehab

    Davide Ferri
     

08 Jul, 2011

2 commits


11 Jun, 2011

2 commits

  • Signed-off-by: HeungJun, Kim
    Signed-off-by: Kyungmin Park
    Signed-off-by: Mauro Carvalho Chehab

    HeungJun, Kim
     
  • Store the cdev pointer in struct irctl, allocated dynamically as needed,
    rather than having a static array. At the same time, recycle some of the
    saved memory to nudge the maximum number of lirc devices supported up a
    ways -- its not that uncommon these days, now that we have the rc-core
    lirc bridge driver, to see a system with at least 4 raw IR receivers.
    (consider a mythtv backend with several video capture devices and the
    possible need for IR transmit hardware).

    Signed-off-by: Jarod Wilson
    Signed-off-by: Mauro Carvalho Chehab

    Jarod Wilson