diff options
author | Muralidharan Karicheri <m-karicheri2@ti.com> | 2010-03-18 10:44:12 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-05-06 18:19:05 -0400 |
commit | 6a4f0623a4ebe46c743d213db808067553953913 (patch) | |
tree | 5d8d1e2ef9ef873274f533d6cda5704d8d6022b2 | |
parent | f8f73d01a31488ec8e923b2148043579d43d0378 (diff) |
V4L/DVB: V4L - vpfe capture - fix for kernel crash
As part of upstream merge, set_params() function was removed from isif.c.
This requires removal of BUG_ON() and check for set_params ptr in
vpfe_capture.c. Without this kernel crash dump is seen while bootup on DM365
Also made following changes:-
1) converted error messages to debug messages since it is not right to flood
the console with error messages for user mistakes.
2) returns -EINVAL if ioctl is not supported
Signed-off-by: Muralidharan Karicheri <m-karicheri2@ti.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r-- | drivers/media/video/davinci/vpfe_capture.c | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/drivers/media/video/davinci/vpfe_capture.c b/drivers/media/video/davinci/vpfe_capture.c index 55128644b5d7..398dbe71cb82 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: |