include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit...
[safe/jmp/linux-2.6] / drivers / media / video / davinci / vpif_display.c
index 969d4b3..13c3a1b 100644 (file)
@@ -30,6 +30,7 @@
 #include <linux/platform_device.h>
 #include <linux/io.h>
 #include <linux/version.h>
+#include <linux/slab.h>
 
 #include <asm/irq.h>
 #include <asm/page.h>
@@ -683,7 +684,7 @@ static int vpif_release(struct file *filep)
 static int vpif_querycap(struct file *file, void  *priv,
                                struct v4l2_capability *cap)
 {
-       struct vpif_config *config = vpif_dev->platform_data;
+       struct vpif_display_config *config = vpif_dev->platform_data;
 
        cap->version = VPIF_DISPLAY_VERSION_CODE;
        cap->capabilities = V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_STREAMING;
@@ -1053,7 +1054,7 @@ static int vpif_streamon(struct file *file, void *priv,
        struct common_obj *common = &ch->common[VPIF_VIDEO_INDEX];
        struct channel_obj *oth_ch = vpif_obj.dev[!ch->channel_id];
        struct vpif_params *vpif = &ch->vpifparams;
-       struct vpif_config *vpif_config_data =
+       struct vpif_display_config *vpif_config_data =
                                        vpif_dev->platform_data;
        unsigned long addr = 0;
        int ret = 0;
@@ -1239,7 +1240,7 @@ static int vpif_enum_output(struct file *file, void *fh,
                                struct v4l2_output *output)
 {
 
-       struct vpif_config *config = vpif_dev->platform_data;
+       struct vpif_display_config *config = vpif_dev->platform_data;
 
        if (output->index >= config->output_count) {
                vpif_dbg(1, debug, "Invalid output index\n");
@@ -1347,7 +1348,6 @@ static const struct v4l2_file_operations vpif_fops = {
 static struct video_device vpif_video_template = {
        .name           = "vpif",
        .fops           = &vpif_fops,
-       .minor          = -1,
        .ioctl_ops      = &vpif_ioctl_ops,
        .tvnorms        = DM646X_V4L2_STD,
        .current_norm   = V4L2_STD_625_50,
@@ -1422,10 +1422,10 @@ vpif_init_free_channel_objects:
  */
 static __init int vpif_probe(struct platform_device *pdev)
 {
-       const struct subdev_info *subdevdata;
+       struct vpif_subdev_info *subdevdata;
+       struct vpif_display_config *config;
        int i, j = 0, k, q, m, err = 0;
        struct i2c_adapter *i2c_adap;
-       struct vpif_config *config;
        struct common_obj *common;
        struct channel_obj *ch;
        struct video_device *vfd;
@@ -1433,30 +1433,14 @@ static __init int vpif_probe(struct platform_device *pdev)
        int subdev_count;
 
        vpif_dev = &pdev->dev;
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!res) {
-               v4l2_err(vpif_dev->driver,
-                               "Error getting platform resource\n");
-               return -ENOENT;
-       }
 
-       if (!request_mem_region(res->start, res->end - res->start + 1,
-                                               vpif_dev->driver->name)) {
-               v4l2_err(vpif_dev->driver, "VPIF: failed request_mem_region\n");
-               return -ENXIO;
-       }
+       err = initialize_vpif();
 
-       vpif_base = ioremap_nocache(res->start, res->end - res->start + 1);
-       if (!vpif_base) {
-               v4l2_err(vpif_dev->driver, "Unable to ioremap VPIF reg\n");
-               err = -ENXIO;
-               goto resource_exit;
+       if (err) {
+               v4l2_err(vpif_dev->driver, "Error initializing vpif\n");
+               return err;
        }
 
-       vpif_base_addr_init(vpif_base);
-
-       initialize_vpif();
-
        err = v4l2_device_register(vpif_dev, &vpif_obj.v4l2_dev);
        if (err) {
                v4l2_err(vpif_dev->driver, "Error registering v4l2 device\n");
@@ -1489,7 +1473,7 @@ static __init int vpif_probe(struct platform_device *pdev)
                                video_device_release(ch->video_dev);
                        }
                        err = -ENOMEM;
-                       goto video_dev_alloc_exit;
+                       goto vpif_int_err;
                }
 
                /* Initialize field of video device */
@@ -1566,10 +1550,10 @@ static __init int vpif_probe(struct platform_device *pdev)
        }
 
        for (i = 0; i < subdev_count; i++) {
-               vpif_obj.sd[i] = v4l2_i2c_new_probed_subdev(&vpif_obj.v4l2_dev,
+               vpif_obj.sd[i] = v4l2_i2c_new_subdev_board(&vpif_obj.v4l2_dev,
                                                i2c_adap, subdevdata[i].name,
-                                               subdevdata[i].name,
-                                               &subdevdata[i].addr);
+                                               &subdevdata[i].board_info,
+                                               NULL);
                if (!vpif_obj.sd[i]) {
                        vpif_err("Error registering v4l2 subdevice\n");
                        goto probe_subdev_out;
@@ -1599,11 +1583,6 @@ vpif_int_err:
                res = platform_get_resource(pdev, IORESOURCE_IRQ, k-1);
                m = res->end;
        }
-video_dev_alloc_exit:
-       iounmap(vpif_base);
-resource_exit:
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       release_mem_region(res->start, res->end - res->start + 1);
 
        return err;
 }
@@ -1666,9 +1645,6 @@ static void vpif_cleanup(void)
                i++;
        }
 
-       iounmap(vpif_base);
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       release_mem_region(res->start, res->end - res->start + 1);
        platform_driver_unregister(&vpif_driver);
        kfree(vpif_obj.sd);
        for (i = 0; i < VPIF_DISPLAY_MAX_DEVICES; i++)