Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab...
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 18 Jan 2012 20:53:54 +0000 (12:53 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 18 Jan 2012 20:53:54 +0000 (12:53 -0800)
* 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (57 commits)
  [media] as3645a: Fix compilation by including slab.h
  [media] s5p-fimc: Remove linux/version.h include from fimc-mdevice.c
  [media] s5p-mfc: Remove linux/version.h include from s5p_mfc.c
  [media] ds3000: using logical && instead of bitwise &
  [media] v4l2-ctrls: make control names consistent
  [media] DVB: dib0700, add support for Nova-TD LEDs
  [media] DVB: dib0700, add corrected Nova-TD frontend_attach
  [media] DVB: dib0700, separate stk7070pd initialization
  [media] DVB: dib0700, move Nova-TD Stick to a separate set
  [media] : add MODULE_FIRMWARE to dib0700
  [media] DVB-CORE: remove superfluous DTV_CMDs
  [media] s5p-jpeg: adapt to recent videobuf2 changes
  [media] s5p-g2d: fixed a bug in controls setting function
  [media] s5p-mfc: Fix volatile controls setup
  [media] drivers/media/video/s5p-mfc/s5p_mfc.c: adjust double test
  [media] drivers/media/video/s5p-fimc/fimc-capture.c: adjust double test
  [media] s5p-fimc: Fix incorrect control ID assignment
  [media] dvb_frontend: Don't call get_frontend() if idle
  [media] DocBook/dvbproperty.xml: Remove DTV_MODULATION from ISDB-T
  [media] DocBook/dvbproperty.xml: Fix ISDB-T delivery system parameters
  ...

1  2 
Documentation/feature-removal-schedule.txt
drivers/media/dvb/dvb-usb/anysee.c
drivers/media/dvb/dvb-usb/dib0700_core.c
drivers/media/video/cx231xx/cx231xx-cards.c
drivers/media/video/ivtv/ivtv-driver.c
drivers/media/video/omap/omap_vout.c
drivers/media/video/zoran/zoran_driver.c

index d725c0dfe032f0692ab9de9a4358dfdcdd711f39,fed5a34a727d4fd3247db0f187e1f9b7c68a46e2..1bea46a54b1ca252b5390c422f291dafe41a7c32
@@@ -85,6 -85,17 +85,6 @@@ Who: Robin Getz <rgetz@blackfin.uclinux
  
  ---------------------------
  
 -What: Deprecated snapshot ioctls
 -When: 2.6.36
 -
 -Why:  The ioctls in kernel/power/user.c were marked as deprecated long time
 -      ago. Now they notify users about that so that they need to replace
 -      their userspace. After some more time, remove them completely.
 -
 -Who:  Jiri Slaby <jirislaby@gmail.com>
 -
 ----------------------------
 -
  What: The ieee80211_regdom module parameter
  When: March 2010 / desktop catchup
  
@@@ -252,7 -263,8 +252,7 @@@ Who:       Ravikiran Thirumalai <kiran@scalex
  
  What: Code that is now under CONFIG_WIRELESS_EXT_SYSFS
        (in net/core/net-sysfs.c)
 -When: After the only user (hal) has seen a release with the patches
 -      for enough time, probably some time in 2010.
 +When: 3.5
  Why:  Over 1K .text/.data size reduction, data is available in other
        ways (ioctls)
  Who:  Johannes Berg <johannes@sipsolutions.net>
@@@ -350,6 -362,15 +350,6 @@@ Who:      anybody or Florian Mickler <flori
  
  ----------------------------
  
 -What: KVM paravirt mmu host support
 -When: January 2011
 -Why:  The paravirt mmu host support is slower than non-paravirt mmu, both
 -      on newer and older hardware.  It is already not exposed to the guest,
 -      and kept only for live migration purposes.
 -Who:  Avi Kivity <avi@redhat.com>
 -
 -----------------------------
 -
  What: iwlwifi 50XX module parameters
  When: 3.0
  Why:  The "..50" modules parameters were used to configure 5000 series and
@@@ -439,17 -460,6 +439,6 @@@ Who:      Jean Delvare <khali@linux-fr.org
  
  ----------------------------
  
- What: For VIDIOC_S_FREQUENCY the type field must match the device node's type.
-       If not, return -EINVAL.
- When: 3.2
- Why:  It makes no sense to switch the tuner to radio mode by calling
-       VIDIOC_S_FREQUENCY on a video node, or to switch the tuner to tv mode by
-       calling VIDIOC_S_FREQUENCY on a radio node. This is the first step of a
-       move to more consistent handling of tv and radio tuners.
- Who:  Hans Verkuil <hans.verkuil@cisco.com>
- ----------------------------
  What: Opening a radio device node will no longer automatically switch the
        tuner mode from tv to radio.
  When: 3.3
@@@ -479,20 -489,6 +468,20 @@@ Why:    In 3.0, we can now autodetect i
        information log when acer-wmi initial.
  Who:    Lee, Chun-Yi <jlee@novell.com>
  
 +---------------------------
 +
 +What: /sys/devices/platform/_UDC_/udc/_UDC_/is_dualspeed file and
 +      is_dualspeed line in /sys/devices/platform/ci13xxx_*/udc/device file.
 +When: 3.8
 +Why:  The is_dualspeed file is superseded by maximum_speed in the same
 +      directory and is_dualspeed line in device file is superseded by
 +      max_speed line in the same file.
 +
 +      The maximum_speed/max_speed specifies maximum speed supported by UDC.
 +      To check if dualspeeed is supported, check if the value is >= 3.
 +      Various possible speeds are defined in <linux/usb/ch9.h>.
 +Who:  Michal Nazarewicz <mina86@mina86.com>
 +
  ----------------------------
  
  What: The XFS nodelaylog mount option
@@@ -509,15 -505,3 +498,15 @@@ When:    3.
  Why:  The iwlagn module has been renamed iwlwifi.  The alias will be around
        for backward compatibility for several cycles and then dropped.
  Who:  Don Fry <donald.h.fry@intel.com>
 +
 +----------------------------
 +
 +What: pci_scan_bus_parented()
 +When: 3.5
 +Why:  The pci_scan_bus_parented() interface creates a new root bus.  The
 +      bus is created with default resources (ioport_resource and
 +      iomem_resource) that are always wrong, so we rely on arch code to
 +      correct them later.  Callers of pci_scan_bus_parented() should
 +      convert to using pci_scan_root_bus() so they can supply a list of
 +      bus resources when the bus is created.
 +Who:  Bjorn Helgaas <bhelgaas@google.com>
index d66192974d68a0a2de44fd41f156f7b6c9c90a85,ecc3addc77ec1c54230a5ccbe8c7ec0463995915..1455e2644ab5e4e08a0a5324a0d3e873b9941256
@@@ -877,24 -877,18 +877,18 @@@ static int anysee_frontend_attach(struc
        case ANYSEE_HW_508T2C: /* 20 */
                /* E7 T2C */
  
+               if (state->fe_id)
+                       break;
                /* enable DVB-T/T2/C demod on IOE[5] */
                ret = anysee_wr_reg_mask(adap->dev, REG_IOE, (1 << 5), 0x20);
                if (ret)
                        goto error;
  
-               if (state->fe_id == 0)  {
-                       /* DVB-T/T2 */
-                       adap->fe_adap[state->fe_id].fe =
-                               dvb_attach(cxd2820r_attach,
-                               &anysee_cxd2820r_config,
-                               &adap->dev->i2c_adap, NULL);
-               } else {
-                       /* DVB-C */
-                       adap->fe_adap[state->fe_id].fe =
-                               dvb_attach(cxd2820r_attach,
-                               &anysee_cxd2820r_config,
-                               &adap->dev->i2c_adap, adap->fe_adap[0].fe);
-               }
+               /* attach demod */
+               adap->fe_adap[state->fe_id].fe = dvb_attach(cxd2820r_attach,
+                               &anysee_cxd2820r_config, &adap->dev->i2c_adap,
+                               NULL);
  
                state->has_ci = true;
  
@@@ -1372,7 -1366,26 +1366,7 @@@ static struct usb_driver anysee_driver 
        .id_table   = anysee_table,
  };
  
 -/* module stuff */
 -static int __init anysee_module_init(void)
 -{
 -      int ret;
 -
 -      ret = usb_register(&anysee_driver);
 -      if (ret)
 -              err("%s: usb_register failed. Error number %d", __func__, ret);
 -
 -      return ret;
 -}
 -
 -static void __exit anysee_module_exit(void)
 -{
 -      /* deregister this driver from the USB subsystem */
 -      usb_deregister(&anysee_driver);
 -}
 -
 -module_init(anysee_module_init);
 -module_exit(anysee_module_exit);
 +module_usb_driver(anysee_driver);
  
  MODULE_AUTHOR("Antti Palosaari <crope@iki.fi>");
  MODULE_DESCRIPTION("Driver Anysee E30 DVB-C & DVB-T USB2.0");
index 206999476f028238c430797ba11b762b55dee379,2d259ca34b0511d1565ebd4119d59f47f0f3de30..070e82aa53f53248f33448d9e61d22b484e6b28a
@@@ -832,8 -832,29 +832,9 @@@ static struct usb_driver dib0700_drive
        .id_table   = dib0700_usb_id_table,
  };
  
 -/* module stuff */
 -static int __init dib0700_module_init(void)
 -{
 -      int result;
 -      info("loaded with support for %d different device-types", dib0700_device_count);
 -      if ((result = usb_register(&dib0700_driver))) {
 -              err("usb_register failed. Error number %d",result);
 -              return result;
 -      }
 -
 -      return 0;
 -}
 -
 -static void __exit dib0700_module_exit(void)
 -{
 -      /* deregister this driver from the USB subsystem */
 -      usb_deregister(&dib0700_driver);
 -}
 -
 -module_init (dib0700_module_init);
 -module_exit (dib0700_module_exit);
 +module_usb_driver(dib0700_driver);
  
+ MODULE_FIRMWARE("dvb-usb-dib0700-1.20.fw");
  MODULE_AUTHOR("Patrick Boettcher <pboettcher@dibcom.fr>");
  MODULE_DESCRIPTION("Driver for devices based on DiBcom DiB0700 - USB bridge");
  MODULE_VERSION("1.0");
index 919ed77b32f2dec7fc6e6b195a9722c6f77f6fbb,7d8edb4570655057252e82007dbda809b2f6a6e6..875a7ce947361ffb720ced4e811dd909cb03b15b
@@@ -1052,7 -1052,7 +1052,7 @@@ static int cx231xx_usb_probe(struct usb
        dev = kzalloc(sizeof(*dev), GFP_KERNEL);
        if (dev == NULL) {
                cx231xx_err(DRIVER_NAME ": out of memory!\n");
-               clear_bit(dev->devno, &cx231xx_devused);
+               clear_bit(nr, &cx231xx_devused);
                return -ENOMEM;
        }
  
@@@ -1379,4 -1379,26 +1379,4 @@@ static struct usb_driver cx231xx_usb_dr
        .id_table = cx231xx_id_table,
  };
  
 -static int __init cx231xx_module_init(void)
 -{
 -      int result;
 -
 -      printk(KERN_INFO DRIVER_NAME " v4l2 driver loaded.\n");
 -
 -      /* register this driver with the USB subsystem */
 -      result = usb_register(&cx231xx_usb_driver);
 -      if (result)
 -              cx231xx_err(DRIVER_NAME
 -                          " usb_register failed. Error number %d.\n", result);
 -
 -      return result;
 -}
 -
 -static void __exit cx231xx_module_exit(void)
 -{
 -      /* deregister this driver with the USB subsystem */
 -      usb_deregister(&cx231xx_usb_driver);
 -}
 -
 -module_init(cx231xx_module_init);
 -module_exit(cx231xx_module_exit);
 +module_usb_driver(cx231xx_usb_driver);
index 544af91cbdc1b0fb9962d6550cb9c4892299a74b,461ae449cb433423ec64d9ed4bc13f5cb04903fe..3949b7dc2368370ebe6d28f15b3b83bc2999babe
@@@ -99,7 -99,7 +99,7 @@@ static int i2c_clock_period[IVTV_MAX_CA
  
  static unsigned int cardtype_c = 1;
  static unsigned int tuner_c = 1;
 -static unsigned int radio_c = 1;
 +static bool radio_c = 1;
  static unsigned int i2c_clock_period_c = 1;
  static char pal[] = "---";
  static char secam[] = "--";
@@@ -731,9 -731,6 +731,6 @@@ static int __devinit ivtv_init_struct1(
  
        init_kthread_work(&itv->irq_work, ivtv_irq_work_handler);
  
-       /* start counting open_id at 1 */
-       itv->open_id = 1;
        /* Initial settings */
        itv->cxhdl.port = CX2341X_PORT_MEMORY;
        itv->cxhdl.capabilities = CX2341X_CAP_HAS_SLICED_VBI;
index a277f95091ef2b481b369dca5cacc30cbf04afe4,1e7c0d6205e64ce6819dbc078d898b848b1230e5..1fb7d5bd5ec26a3f8955e8a6cdc3e7a6cd3841f9
@@@ -70,9 -70,9 +70,9 @@@ static u32 video1_numbuffers = 3
  static u32 video2_numbuffers = 3;
  static u32 video1_bufsize = OMAP_VOUT_MAX_BUF_SIZE;
  static u32 video2_bufsize = OMAP_VOUT_MAX_BUF_SIZE;
 -static u32 vid1_static_vrfb_alloc;
 -static u32 vid2_static_vrfb_alloc;
 -static int debug;
 +static bool vid1_static_vrfb_alloc;
 +static bool vid2_static_vrfb_alloc;
 +static bool debug;
  
  /* Module parameters */
  module_param(video1_numbuffers, uint, S_IRUGO);
@@@ -424,7 -424,7 +424,7 @@@ static int omapvid_setup_overlay(struc
                "%s enable=%d addr=%x width=%d\n height=%d color_mode=%d\n"
                "rotation=%d mirror=%d posx=%d posy=%d out_width = %d \n"
                "out_height=%d rotation_type=%d screen_width=%d\n",
 -              __func__, info.enabled, info.paddr, info.width, info.height,
 +              __func__, ovl->is_enabled(ovl), info.paddr, info.width, info.height,
                info.color_mode, info.rotation, info.mirror, info.pos_x,
                info.pos_y, info.out_width, info.out_height, info.rotation_type,
                info.screen_width);
@@@ -948,8 -948,12 +948,8 @@@ static int omap_vout_release(struct fil
        /* Disable all the overlay managers connected with this interface */
        for (i = 0; i < ovid->num_overlays; i++) {
                struct omap_overlay *ovl = ovid->overlays[i];
 -              if (ovl->manager && ovl->manager->device) {
 -                      struct omap_overlay_info info;
 -                      ovl->get_overlay_info(ovl, &info);
 -                      info.enabled = 0;
 -                      ovl->set_overlay_info(ovl, &info);
 -              }
 +              if (ovl->manager && ovl->manager->device)
 +                      ovl->disable(ovl);
        }
        /* Turn off the pipeline */
        ret = omapvid_apply_changes(vout);
@@@ -1042,7 -1046,8 +1042,8 @@@ static int vidioc_querycap(struct file 
        strlcpy(cap->driver, VOUT_NAME, sizeof(cap->driver));
        strlcpy(cap->card, vout->vfd->name, sizeof(cap->card));
        cap->bus_info[0] = '\0';
-       cap->capabilities = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_OUTPUT;
+       cap->capabilities = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_OUTPUT |
+               V4L2_CAP_VIDEO_OUTPUT_OVERLAY;
  
        return 0;
  }
@@@ -1669,6 -1674,7 +1670,6 @@@ static int vidioc_streamon(struct file 
                if (ovl->manager && ovl->manager->device) {
                        struct omap_overlay_info info;
                        ovl->get_overlay_info(ovl, &info);
 -                      info.enabled = 1;
                        info.paddr = addr;
                        if (ovl->set_overlay_info(ovl, &info)) {
                                ret = -EINVAL;
        if (ret)
                v4l2_err(&vout->vid_dev->v4l2_dev, "failed to change mode\n");
  
 +      for (j = 0; j < ovid->num_overlays; j++) {
 +              struct omap_overlay *ovl = ovid->overlays[j];
 +
 +              if (ovl->manager && ovl->manager->device) {
 +                      ret = ovl->enable(ovl);
 +                      if (ret)
 +                              goto streamon_err1;
 +              }
 +      }
 +
        ret = 0;
  
  streamon_err1:
@@@ -1726,8 -1722,16 +1727,8 @@@ static int vidioc_streamoff(struct fil
        for (j = 0; j < ovid->num_overlays; j++) {
                struct omap_overlay *ovl = ovid->overlays[j];
  
 -              if (ovl->manager && ovl->manager->device) {
 -                      struct omap_overlay_info info;
 -
 -                      ovl->get_overlay_info(ovl, &info);
 -                      info.enabled = 0;
 -                      ret = ovl->set_overlay_info(ovl, &info);
 -                      if (ret)
 -                              v4l2_err(&vout->vid_dev->v4l2_dev,
 -                              "failed to update overlay info in streamoff\n");
 -              }
 +              if (ovl->manager && ovl->manager->device)
 +                      ovl->disable(ovl);
        }
  
        /* Turn of the pipeline */
@@@ -1825,7 -1829,9 +1826,9 @@@ static int vidioc_g_fbuf(struct file *f
        ovid = &vout->vid_info;
        ovl = ovid->overlays[0];
  
-       a->flags = 0x0;
+       /* The video overlay must stay within the framebuffer and can't be
+          positioned independently. */
+       a->flags = V4L2_FBUF_FLAG_OVERLAY;
        a->capability = V4L2_FBUF_CAP_LOCAL_ALPHA | V4L2_FBUF_CAP_CHROMAKEY
                | V4L2_FBUF_CAP_SRC_CHROMAKEY;
  
index f6d26419445ee8728367fe925ed3f80d2d484092,f7d236a2402aeecd493f0a17562cee7b20e0a838..4c09ab781ec3a3cbf503f2626c64b449e94dabf3
@@@ -1550,7 -1550,7 +1550,7 @@@ static int zoran_enum_fmt(struct zoran 
                if (zoran_formats[i].flags & flag && num++ == fmt->index) {
                        strncpy(fmt->description, zoran_formats[i].name,
                                sizeof(fmt->description) - 1);
 -                      /* fmt struct pre-zeroed, so adding '\0' not neeed */
 +                      /* fmt struct pre-zeroed, so adding '\0' not needed */
                        fmt->pixelformat = zoran_formats[i].fourcc;
                        if (zoran_formats[i].flags & ZORAN_FORMAT_COMPRESSED)
                                fmt->flags |= V4L2_FMT_FLAG_COMPRESSED;
@@@ -1958,7 -1958,6 +1958,6 @@@ static int zoran_g_fbuf(struct file *fi
        mutex_unlock(&zr->resource_lock);
        fb->fmt.colorspace = V4L2_COLORSPACE_SRGB;
        fb->fmt.field = V4L2_FIELD_INTERLACED;
-       fb->flags = V4L2_FBUF_FLAG_OVERLAY;
        fb->capability = V4L2_FBUF_CAP_LIST_CLIPPING;
  
        return 0;