diff options
Diffstat (limited to 'drivers/media/video/davinci/vpfe_capture.c')
| -rw-r--r-- | drivers/media/video/davinci/vpfe_capture.c | 38 |
1 files changed, 23 insertions, 15 deletions
diff --git a/drivers/media/video/davinci/vpfe_capture.c b/drivers/media/video/davinci/vpfe_capture.c index 7cf042f9b37..398dbe71cb8 100644 --- a/drivers/media/video/davinci/vpfe_capture.c +++ b/drivers/media/video/davinci/vpfe_capture.c | |||
| @@ -223,7 +223,6 @@ int vpfe_register_ccdc_device(struct ccdc_hw_device *dev) | |||
| 223 | BUG_ON(!dev->hw_ops.get_frame_format); | 223 | BUG_ON(!dev->hw_ops.get_frame_format); |
| 224 | BUG_ON(!dev->hw_ops.get_pixel_format); | 224 | BUG_ON(!dev->hw_ops.get_pixel_format); |
| 225 | BUG_ON(!dev->hw_ops.set_pixel_format); | 225 | BUG_ON(!dev->hw_ops.set_pixel_format); |
| 226 | BUG_ON(!dev->hw_ops.set_params); | ||
| 227 | BUG_ON(!dev->hw_ops.set_image_window); | 226 | BUG_ON(!dev->hw_ops.set_image_window); |
| 228 | BUG_ON(!dev->hw_ops.get_image_window); | 227 | BUG_ON(!dev->hw_ops.get_image_window); |
| 229 | BUG_ON(!dev->hw_ops.get_line_length); | 228 | BUG_ON(!dev->hw_ops.get_line_length); |
| @@ -1689,11 +1688,12 @@ static long vpfe_param_handler(struct file *file, void *priv, | |||
| 1689 | struct vpfe_device *vpfe_dev = video_drvdata(file); | 1688 | struct vpfe_device *vpfe_dev = video_drvdata(file); |
| 1690 | int ret = 0; | 1689 | int ret = 0; |
| 1691 | 1690 | ||
| 1692 | v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, "vpfe_param_handler\n"); | 1691 | v4l2_dbg(2, debug, &vpfe_dev->v4l2_dev, "vpfe_param_handler\n"); |
| 1693 | 1692 | ||
| 1694 | if (vpfe_dev->started) { | 1693 | if (vpfe_dev->started) { |
| 1695 | /* only allowed if streaming is not started */ | 1694 | /* only allowed if streaming is not started */ |
| 1696 | v4l2_err(&vpfe_dev->v4l2_dev, "device already started\n"); | 1695 | v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, |
| 1696 | "device already started\n"); | ||
| 1697 | return -EBUSY; | 1697 | return -EBUSY; |
| 1698 | } | 1698 | } |
| 1699 | 1699 | ||
| @@ -1705,16 +1705,23 @@ static long vpfe_param_handler(struct file *file, void *priv, | |||
| 1705 | case VPFE_CMD_S_CCDC_RAW_PARAMS: | 1705 | case VPFE_CMD_S_CCDC_RAW_PARAMS: |
| 1706 | v4l2_warn(&vpfe_dev->v4l2_dev, | 1706 | v4l2_warn(&vpfe_dev->v4l2_dev, |
| 1707 | "VPFE_CMD_S_CCDC_RAW_PARAMS: experimental ioctl\n"); | 1707 | "VPFE_CMD_S_CCDC_RAW_PARAMS: experimental ioctl\n"); |
| 1708 | ret = ccdc_dev->hw_ops.set_params(param); | 1708 | if (ccdc_dev->hw_ops.set_params) { |
| 1709 | if (ret) { | 1709 | ret = ccdc_dev->hw_ops.set_params(param); |
| 1710 | v4l2_err(&vpfe_dev->v4l2_dev, | 1710 | if (ret) { |
| 1711 | "Error in setting parameters in CCDC\n"); | 1711 | v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, |
| 1712 | goto unlock_out; | 1712 | "Error setting parameters in CCDC\n"); |
| 1713 | } | 1713 | goto unlock_out; |
| 1714 | if (vpfe_get_ccdc_image_format(vpfe_dev, &vpfe_dev->fmt) < 0) { | 1714 | } |
| 1715 | v4l2_err(&vpfe_dev->v4l2_dev, | 1715 | if (vpfe_get_ccdc_image_format(vpfe_dev, |
| 1716 | "Invalid image format at CCDC\n"); | 1716 | &vpfe_dev->fmt) < 0) { |
| 1717 | goto unlock_out; | 1717 | v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, |
| 1718 | "Invalid image format at CCDC\n"); | ||
| 1719 | goto unlock_out; | ||
| 1720 | } | ||
| 1721 | } else { | ||
| 1722 | ret = -EINVAL; | ||
| 1723 | v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, | ||
| 1724 | "VPFE_CMD_S_CCDC_RAW_PARAMS not supported\n"); | ||
| 1718 | } | 1725 | } |
| 1719 | break; | 1726 | break; |
| 1720 | default: | 1727 | default: |
| @@ -1830,7 +1837,7 @@ static __init int vpfe_probe(struct platform_device *pdev) | |||
| 1830 | if (NULL == ccdc_cfg) { | 1837 | if (NULL == ccdc_cfg) { |
| 1831 | v4l2_err(pdev->dev.driver, | 1838 | v4l2_err(pdev->dev.driver, |
| 1832 | "Memory allocation failed for ccdc_cfg\n"); | 1839 | "Memory allocation failed for ccdc_cfg\n"); |
| 1833 | goto probe_free_dev_mem; | 1840 | goto probe_free_lock; |
| 1834 | } | 1841 | } |
| 1835 | 1842 | ||
| 1836 | strncpy(ccdc_cfg->name, vpfe_cfg->ccdc, 32); | 1843 | strncpy(ccdc_cfg->name, vpfe_cfg->ccdc, 32); |
| @@ -1982,8 +1989,9 @@ probe_out_video_release: | |||
| 1982 | probe_out_release_irq: | 1989 | probe_out_release_irq: |
| 1983 | free_irq(vpfe_dev->ccdc_irq0, vpfe_dev); | 1990 | free_irq(vpfe_dev->ccdc_irq0, vpfe_dev); |
| 1984 | probe_free_ccdc_cfg_mem: | 1991 | probe_free_ccdc_cfg_mem: |
| 1985 | mutex_unlock(&ccdc_lock); | ||
| 1986 | kfree(ccdc_cfg); | 1992 | kfree(ccdc_cfg); |
| 1993 | probe_free_lock: | ||
| 1994 | mutex_unlock(&ccdc_lock); | ||
| 1987 | probe_free_dev_mem: | 1995 | probe_free_dev_mem: |
| 1988 | kfree(vpfe_dev); | 1996 | kfree(vpfe_dev); |
| 1989 | return ret; | 1997 | return ret; |
