|
@@ -683,7 +683,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 +1053,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 +1239,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");
|
|
@@ -1422,7 +1422,8 @@ vpif_init_free_channel_objects:
|
|
|
*/
|
|
|
static __init int vpif_probe(struct platform_device *pdev)
|
|
|
{
|
|
|
- const struct vpif_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;
|
|
@@ -1433,30 +1434,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 +1474,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 +1551,10 @@ static __init int vpif_probe(struct platform_device *pdev)
|
|
|
}
|
|
|
|
|
|
for (i = 0; i < subdev_count; i++) {
|
|
|
- vpif_obj.sd[i] = v4l2_i2c_new_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,
|
|
|
- 0, I2C_ADDRS(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 +1584,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 +1646,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++)
|