aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/platform/omap3isp
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-04-04 12:50:07 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-04-04 12:50:07 -0400
commit3c83e61e67256e0bb08c46cc2db43b58fd617251 (patch)
tree0233e1e04e6449c60b01ff5dea8bea85bcf22f08 /drivers/media/platform/omap3isp
parent4a4389abdd9822fdf3cc2ac6ed87eb811fd43acc (diff)
parenta83b93a7480441a47856dc9104bea970e84cda87 (diff)
Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media updates from Mauro Carvalho Chehab: "The main set of series of patches for media subsystem, including: - document RC sysfs class - added an API to setup scancode to allow waking up systems using the Remote Controller - add API for SDR devices. Drivers are still on staging - some API improvements for getting EDID data from media inputs/outputs - new DVB frontend driver for drx-j (ATSC) - one driver (it913x/it9137) got removed, in favor of an improvement on another driver (af9035) - added a skeleton V4L2 PCI driver at documentation - added a dual flash driver (lm3646) - added a new IR driver (img-ir) - added an IR scancode decoder for the Sharp protocol - some improvements at the usbtv driver, to allow its core to be reused. - added a new SDR driver (rtl2832u_sdr) - added a new tuner driver (msi001) - several improvements at em28xx driver to fix PM support, device removal and to split the V4L2 specific bits into a separate sub-driver - one driver got converted to videobuf2 (s2255drv) - the e4000 tuner driver now follows an improved binding model - some fixes at V4L2 compat32 code - several fixes and enhancements at videobuf2 code - some cleanups at V4L2 API documentation - usual driver enhancements, new board additions and misc fixups" [ NOTE! This merge effective drops commit 4329b93b283c ("of: Reduce indentation in of_graph_get_next_endpoint"). The of_graph_get_next_endpoint() function was moved and renamed by commit fd9fdb78a9bf ("[media] of: move graph helpers from drivers/media/v4l2-core to drivers/of"). It was originally called v4l2_of_get_next_endpoint() and lived in the file drivers/media/v4l2-core/v4l2-of.c. In that original location, it was then fixed to support empty port nodes by commit b9db140c1e46 ("[media] v4l: of: Support empty port nodes"), and that commit clashes badly with the dropped "Reduce intendation" commit. I had to choose one or the other, and decided that the "Support empty port nodes" commit was more important ] * 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (426 commits) [media] em28xx-dvb: fix PCTV 461e tuner I2C binding Revert "[media] em28xx-dvb: fix PCTV 461e tuner I2C binding" [media] em28xx: fix PCTV 290e LNA oops [media] em28xx-dvb: fix PCTV 461e tuner I2C binding [media] m88ds3103: fix bug on .set_tone() [media] saa7134: fix WARN_ON during resume [media] v4l2-dv-timings: add module name, description, license [media] videodev2.h: add parenthesis around macro arguments [media] saa6752hs: depends on CRC32 [media] si4713: fix Kconfig dependencies [media] Sensoray 2255 uses videobuf2 [media] adv7180: free an interrupt on failure paths in init_device() [media] e4000: make VIDEO_V4L2 dependency optional [media] af9033: Don't export functions for the hardware filter [media] af9035: use af9033 PID filters [media] af9033: implement PID filter [media] rtl2832_sdr: do not use dynamic stack allocation [media] e4000: fix 32-bit build error [media] em28xx-audio: make sure audio is unmuted on open() [media] DocBook media: v4l2_format_sdr was renamed to v4l2_sdr_format ...
Diffstat (limited to 'drivers/media/platform/omap3isp')
-rw-r--r--drivers/media/platform/omap3isp/isp.c7
-rw-r--r--drivers/media/platform/omap3isp/isp.h12
-rw-r--r--drivers/media/platform/omap3isp/ispccdc.c10
-rw-r--r--drivers/media/platform/omap3isp/ispccdc.h6
-rw-r--r--drivers/media/platform/omap3isp/ispccp2.c6
-rw-r--r--drivers/media/platform/omap3isp/isphist.c4
-rw-r--r--drivers/media/platform/omap3isp/isppreview.c22
-rw-r--r--drivers/media/platform/omap3isp/ispqueue.c2
-rw-r--r--drivers/media/platform/omap3isp/ispresizer.c6
-rw-r--r--drivers/media/platform/omap3isp/ispresizer.h4
-rw-r--r--drivers/media/platform/omap3isp/ispstat.c4
-rw-r--r--drivers/media/platform/omap3isp/ispvideo.c12
12 files changed, 50 insertions, 45 deletions
diff --git a/drivers/media/platform/omap3isp/isp.c b/drivers/media/platform/omap3isp/isp.c
index 5807185262fe..06a0df434249 100644
--- a/drivers/media/platform/omap3isp/isp.c
+++ b/drivers/media/platform/omap3isp/isp.c
@@ -391,7 +391,7 @@ static void isp_disable_interrupts(struct isp_device *isp)
391 * @isp: OMAP3 ISP device 391 * @isp: OMAP3 ISP device
392 * @idle: Consider idle state. 392 * @idle: Consider idle state.
393 * 393 *
394 * Set the power settings for the ISP and SBL bus and cConfigure the HS/VS 394 * Set the power settings for the ISP and SBL bus and configure the HS/VS
395 * interrupt source. 395 * interrupt source.
396 * 396 *
397 * We need to configure the HS/VS interrupt source before interrupts get 397 * We need to configure the HS/VS interrupt source before interrupts get
@@ -588,9 +588,6 @@ static void isp_isr_sbl(struct isp_device *isp)
588 * @_isp: Pointer to the OMAP3 ISP device 588 * @_isp: Pointer to the OMAP3 ISP device
589 * 589 *
590 * Handles the corresponding callback if plugged in. 590 * Handles the corresponding callback if plugged in.
591 *
592 * Returns IRQ_HANDLED when IRQ was correctly handled, or IRQ_NONE when the
593 * IRQ wasn't handled.
594 */ 591 */
595static irqreturn_t isp_isr(int irq, void *_isp) 592static irqreturn_t isp_isr(int irq, void *_isp)
596{ 593{
@@ -1420,7 +1417,7 @@ int omap3isp_module_sync_idle(struct media_entity *me, wait_queue_head_t *wait,
1420} 1417}
1421 1418
1422/* 1419/*
1423 * omap3isp_module_sync_is_stopped - Helper to verify if module was stopping 1420 * omap3isp_module_sync_is_stopping - Helper to verify if module was stopping
1424 * @wait: ISP submodule's wait queue for streamoff/interrupt synchronization 1421 * @wait: ISP submodule's wait queue for streamoff/interrupt synchronization
1425 * @stopping: flag which tells module wants to stop 1422 * @stopping: flag which tells module wants to stop
1426 * 1423 *
diff --git a/drivers/media/platform/omap3isp/isp.h b/drivers/media/platform/omap3isp/isp.h
index 081f5ec5a663..6d5e69711907 100644
--- a/drivers/media/platform/omap3isp/isp.h
+++ b/drivers/media/platform/omap3isp/isp.h
@@ -265,7 +265,7 @@ void omap3isp_unregister_entities(struct platform_device *pdev);
265 265
266/* 266/*
267 * isp_reg_readl - Read value of an OMAP3 ISP register 267 * isp_reg_readl - Read value of an OMAP3 ISP register
268 * @dev: Device pointer specific to the OMAP3 ISP. 268 * @isp: Device pointer specific to the OMAP3 ISP.
269 * @isp_mmio_range: Range to which the register offset refers to. 269 * @isp_mmio_range: Range to which the register offset refers to.
270 * @reg_offset: Register offset to read from. 270 * @reg_offset: Register offset to read from.
271 * 271 *
@@ -280,7 +280,7 @@ u32 isp_reg_readl(struct isp_device *isp, enum isp_mem_resources isp_mmio_range,
280 280
281/* 281/*
282 * isp_reg_writel - Write value to an OMAP3 ISP register 282 * isp_reg_writel - Write value to an OMAP3 ISP register
283 * @dev: Device pointer specific to the OMAP3 ISP. 283 * @isp: Device pointer specific to the OMAP3 ISP.
284 * @reg_value: 32 bit value to write to the register. 284 * @reg_value: 32 bit value to write to the register.
285 * @isp_mmio_range: Range to which the register offset refers to. 285 * @isp_mmio_range: Range to which the register offset refers to.
286 * @reg_offset: Register offset to write into. 286 * @reg_offset: Register offset to write into.
@@ -293,8 +293,8 @@ void isp_reg_writel(struct isp_device *isp, u32 reg_value,
293} 293}
294 294
295/* 295/*
296 * isp_reg_and - Clear individual bits in an OMAP3 ISP register 296 * isp_reg_clr - Clear individual bits in an OMAP3 ISP register
297 * @dev: Device pointer specific to the OMAP3 ISP. 297 * @isp: Device pointer specific to the OMAP3 ISP.
298 * @mmio_range: Range to which the register offset refers to. 298 * @mmio_range: Range to which the register offset refers to.
299 * @reg: Register offset to work on. 299 * @reg: Register offset to work on.
300 * @clr_bits: 32 bit value which would be cleared in the register. 300 * @clr_bits: 32 bit value which would be cleared in the register.
@@ -310,7 +310,7 @@ void isp_reg_clr(struct isp_device *isp, enum isp_mem_resources mmio_range,
310 310
311/* 311/*
312 * isp_reg_set - Set individual bits in an OMAP3 ISP register 312 * isp_reg_set - Set individual bits in an OMAP3 ISP register
313 * @dev: Device pointer specific to the OMAP3 ISP. 313 * @isp: Device pointer specific to the OMAP3 ISP.
314 * @mmio_range: Range to which the register offset refers to. 314 * @mmio_range: Range to which the register offset refers to.
315 * @reg: Register offset to work on. 315 * @reg: Register offset to work on.
316 * @set_bits: 32 bit value which would be set in the register. 316 * @set_bits: 32 bit value which would be set in the register.
@@ -326,7 +326,7 @@ void isp_reg_set(struct isp_device *isp, enum isp_mem_resources mmio_range,
326 326
327/* 327/*
328 * isp_reg_clr_set - Clear and set invidial bits in an OMAP3 ISP register 328 * isp_reg_clr_set - Clear and set invidial bits in an OMAP3 ISP register
329 * @dev: Device pointer specific to the OMAP3 ISP. 329 * @isp: Device pointer specific to the OMAP3 ISP.
330 * @mmio_range: Range to which the register offset refers to. 330 * @mmio_range: Range to which the register offset refers to.
331 * @reg: Register offset to work on. 331 * @reg: Register offset to work on.
332 * @clr_bits: 32 bit value which would be cleared in the register. 332 * @clr_bits: 32 bit value which would be cleared in the register.
diff --git a/drivers/media/platform/omap3isp/ispccdc.c b/drivers/media/platform/omap3isp/ispccdc.c
index 5db2c88b9ad8..4d920c800ff5 100644
--- a/drivers/media/platform/omap3isp/ispccdc.c
+++ b/drivers/media/platform/omap3isp/ispccdc.c
@@ -293,7 +293,7 @@ static int __ccdc_lsc_enable(struct isp_ccdc_device *ccdc, int enable)
293 isp_reg_clr(isp, OMAP3_ISP_IOMEM_CCDC, 293 isp_reg_clr(isp, OMAP3_ISP_IOMEM_CCDC,
294 ISPCCDC_LSC_CONFIG, ISPCCDC_LSC_ENABLE); 294 ISPCCDC_LSC_CONFIG, ISPCCDC_LSC_ENABLE);
295 ccdc->lsc.state = LSC_STATE_STOPPED; 295 ccdc->lsc.state = LSC_STATE_STOPPED;
296 dev_warn(to_device(ccdc), "LSC prefecth timeout\n"); 296 dev_warn(to_device(ccdc), "LSC prefetch timeout\n");
297 return -ETIMEDOUT; 297 return -ETIMEDOUT;
298 } 298 }
299 ccdc->lsc.state = LSC_STATE_RUNNING; 299 ccdc->lsc.state = LSC_STATE_RUNNING;
@@ -674,7 +674,7 @@ static void ccdc_config_imgattr(struct isp_ccdc_device *ccdc, u32 colptn)
674/* 674/*
675 * ccdc_config - Set CCDC configuration from userspace 675 * ccdc_config - Set CCDC configuration from userspace
676 * @ccdc: Pointer to ISP CCDC device. 676 * @ccdc: Pointer to ISP CCDC device.
677 * @userspace_add: Structure containing CCDC configuration sent from userspace. 677 * @ccdc_struct: Structure containing CCDC configuration sent from userspace.
678 * 678 *
679 * Returns 0 if successful, -EINVAL if the pointer to the configuration 679 * Returns 0 if successful, -EINVAL if the pointer to the configuration
680 * structure is null, or the copy_from_user function fails to copy user space 680 * structure is null, or the copy_from_user function fails to copy user space
@@ -793,7 +793,7 @@ static void ccdc_apply_controls(struct isp_ccdc_device *ccdc)
793 793
794/* 794/*
795 * omap3isp_ccdc_restore_context - Restore values of the CCDC module registers 795 * omap3isp_ccdc_restore_context - Restore values of the CCDC module registers
796 * @dev: Pointer to ISP device 796 * @isp: Pointer to ISP device
797 */ 797 */
798void omap3isp_ccdc_restore_context(struct isp_device *isp) 798void omap3isp_ccdc_restore_context(struct isp_device *isp)
799{ 799{
@@ -2525,7 +2525,7 @@ error_video:
2525 2525
2526/* 2526/*
2527 * omap3isp_ccdc_init - CCDC module initialization. 2527 * omap3isp_ccdc_init - CCDC module initialization.
2528 * @dev: Device pointer specific to the OMAP3 ISP. 2528 * @isp: Device pointer specific to the OMAP3 ISP.
2529 * 2529 *
2530 * TODO: Get the initialisation values from platform data. 2530 * TODO: Get the initialisation values from platform data.
2531 * 2531 *
@@ -2564,7 +2564,7 @@ int omap3isp_ccdc_init(struct isp_device *isp)
2564 2564
2565/* 2565/*
2566 * omap3isp_ccdc_cleanup - CCDC module cleanup. 2566 * omap3isp_ccdc_cleanup - CCDC module cleanup.
2567 * @dev: Device pointer specific to the OMAP3 ISP. 2567 * @isp: Device pointer specific to the OMAP3 ISP.
2568 */ 2568 */
2569void omap3isp_ccdc_cleanup(struct isp_device *isp) 2569void omap3isp_ccdc_cleanup(struct isp_device *isp)
2570{ 2570{
diff --git a/drivers/media/platform/omap3isp/ispccdc.h b/drivers/media/platform/omap3isp/ispccdc.h
index a5da9e19edbf..9d24e4107864 100644
--- a/drivers/media/platform/omap3isp/ispccdc.h
+++ b/drivers/media/platform/omap3isp/ispccdc.h
@@ -63,12 +63,6 @@ struct ispccdc_lsc_config_req {
63 63
64/* 64/*
65 * ispccdc_lsc - CCDC LSC parameters 65 * ispccdc_lsc - CCDC LSC parameters
66 * @update_config: Set when user changes config
67 * @request_enable: Whether LSC is requested to be enabled
68 * @config: LSC config set by user
69 * @update_table: Set when user provides a new LSC table to table_new
70 * @table_new: LSC table set by user, ISP address
71 * @table_inuse: LSC table currently in use, ISP address
72 */ 66 */
73struct ispccdc_lsc { 67struct ispccdc_lsc {
74 enum ispccdc_lsc_state state; 68 enum ispccdc_lsc_state state;
diff --git a/drivers/media/platform/omap3isp/ispccp2.c b/drivers/media/platform/omap3isp/ispccp2.c
index e84fe0543e47..b30b67d22a58 100644
--- a/drivers/media/platform/omap3isp/ispccp2.c
+++ b/drivers/media/platform/omap3isp/ispccp2.c
@@ -211,7 +211,7 @@ static void ccp2_mem_enable(struct isp_ccp2_device *ccp2, u8 enable)
211/* 211/*
212 * ccp2_phyif_config - Initialize CCP2 phy interface config 212 * ccp2_phyif_config - Initialize CCP2 phy interface config
213 * @ccp2: Pointer to ISP CCP2 device 213 * @ccp2: Pointer to ISP CCP2 device
214 * @config: CCP2 platform data 214 * @pdata: CCP2 platform data
215 * 215 *
216 * Configure the CCP2 physical interface module from platform data. 216 * Configure the CCP2 physical interface module from platform data.
217 * 217 *
@@ -518,7 +518,7 @@ static void ccp2_mem_configure(struct isp_ccp2_device *ccp2,
518 ISPCCP2_LCM_IRQSTATUS_EOF_IRQ, 518 ISPCCP2_LCM_IRQSTATUS_EOF_IRQ,
519 OMAP3_ISP_IOMEM_CCP2, ISPCCP2_LCM_IRQSTATUS); 519 OMAP3_ISP_IOMEM_CCP2, ISPCCP2_LCM_IRQSTATUS);
520 520
521 /* Enable LCM interupts */ 521 /* Enable LCM interrupts */
522 isp_reg_set(isp, OMAP3_ISP_IOMEM_CCP2, ISPCCP2_LCM_IRQENABLE, 522 isp_reg_set(isp, OMAP3_ISP_IOMEM_CCP2, ISPCCP2_LCM_IRQENABLE,
523 ISPCCP2_LCM_IRQSTATUS_EOF_IRQ | 523 ISPCCP2_LCM_IRQSTATUS_EOF_IRQ |
524 ISPCCP2_LCM_IRQSTATUS_OCPERROR_IRQ); 524 ISPCCP2_LCM_IRQSTATUS_OCPERROR_IRQ);
@@ -1096,7 +1096,7 @@ static int ccp2_init_entities(struct isp_ccp2_device *ccp2)
1096 * implementation we use a fixed 32 bytes alignment regardless of the 1096 * implementation we use a fixed 32 bytes alignment regardless of the
1097 * input format and width. If strict 128 bits alignment support is 1097 * input format and width. If strict 128 bits alignment support is
1098 * required ispvideo will need to be made aware of this special dual 1098 * required ispvideo will need to be made aware of this special dual
1099 * alignement requirements. 1099 * alignment requirements.
1100 */ 1100 */
1101 ccp2->video_in.type = V4L2_BUF_TYPE_VIDEO_OUTPUT; 1101 ccp2->video_in.type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
1102 ccp2->video_in.bpl_alignment = 32; 1102 ccp2->video_in.bpl_alignment = 32;
diff --git a/drivers/media/platform/omap3isp/isphist.c b/drivers/media/platform/omap3isp/isphist.c
index e070c24048ef..06a5f8164eaa 100644
--- a/drivers/media/platform/omap3isp/isphist.c
+++ b/drivers/media/platform/omap3isp/isphist.c
@@ -299,7 +299,7 @@ static u32 hist_get_buf_size(struct omap3isp_hist_config *conf)
299 299
300/* 300/*
301 * hist_validate_params - Helper function to check user given params. 301 * hist_validate_params - Helper function to check user given params.
302 * @user_cfg: Pointer to user configuration structure. 302 * @new_conf: Pointer to user configuration structure.
303 * 303 *
304 * Returns 0 on success configuration. 304 * Returns 0 on success configuration.
305 */ 305 */
@@ -351,7 +351,7 @@ static int hist_validate_params(struct ispstat *hist, void *new_conf)
351 351
352 buf_size = hist_get_buf_size(user_cfg); 352 buf_size = hist_get_buf_size(user_cfg);
353 if (buf_size > user_cfg->buf_size) 353 if (buf_size > user_cfg->buf_size)
354 /* User's buf_size request wasn't enoght */ 354 /* User's buf_size request wasn't enough */
355 user_cfg->buf_size = buf_size; 355 user_cfg->buf_size = buf_size;
356 else if (user_cfg->buf_size > OMAP3ISP_HIST_MAX_BUF_SIZE) 356 else if (user_cfg->buf_size > OMAP3ISP_HIST_MAX_BUF_SIZE)
357 user_cfg->buf_size = OMAP3ISP_HIST_MAX_BUF_SIZE; 357 user_cfg->buf_size = OMAP3ISP_HIST_MAX_BUF_SIZE;
diff --git a/drivers/media/platform/omap3isp/isppreview.c b/drivers/media/platform/omap3isp/isppreview.c
index 1c776c1186f1..395b2b068c75 100644
--- a/drivers/media/platform/omap3isp/isppreview.c
+++ b/drivers/media/platform/omap3isp/isppreview.c
@@ -122,7 +122,7 @@ static struct omap3isp_prev_csc flr_prev_csc = {
122#define PREV_MAX_OUT_WIDTH_REV_15 4096 122#define PREV_MAX_OUT_WIDTH_REV_15 4096
123 123
124/* 124/*
125 * Coeficient Tables for the submodules in Preview. 125 * Coefficient Tables for the submodules in Preview.
126 * Array is initialised with the values from.the tables text file. 126 * Array is initialised with the values from.the tables text file.
127 */ 127 */
128 128
@@ -971,7 +971,8 @@ static void preview_setup_hw(struct isp_prev_device *prev, u32 update,
971 971
972/* 972/*
973 * preview_config_ycpos - Configure byte layout of YUV image. 973 * preview_config_ycpos - Configure byte layout of YUV image.
974 * @mode: Indicates the required byte layout. 974 * @prev: pointer to previewer private structure
975 * @pixelcode: pixel code
975 */ 976 */
976static void 977static void
977preview_config_ycpos(struct isp_prev_device *prev, 978preview_config_ycpos(struct isp_prev_device *prev,
@@ -1079,6 +1080,7 @@ static void preview_config_input_format(struct isp_prev_device *prev,
1079 */ 1080 */
1080static void preview_config_input_size(struct isp_prev_device *prev, u32 active) 1081static void preview_config_input_size(struct isp_prev_device *prev, u32 active)
1081{ 1082{
1083 const struct v4l2_mbus_framefmt *format = &prev->formats[PREV_PAD_SINK];
1082 struct isp_device *isp = to_isp_device(prev); 1084 struct isp_device *isp = to_isp_device(prev);
1083 unsigned int sph = prev->crop.left; 1085 unsigned int sph = prev->crop.left;
1084 unsigned int eph = prev->crop.left + prev->crop.width - 1; 1086 unsigned int eph = prev->crop.left + prev->crop.width - 1;
@@ -1086,6 +1088,14 @@ static void preview_config_input_size(struct isp_prev_device *prev, u32 active)
1086 unsigned int elv = prev->crop.top + prev->crop.height - 1; 1088 unsigned int elv = prev->crop.top + prev->crop.height - 1;
1087 u32 features; 1089 u32 features;
1088 1090
1091 if (format->code != V4L2_MBUS_FMT_Y8_1X8 &&
1092 format->code != V4L2_MBUS_FMT_Y10_1X10) {
1093 sph -= 2;
1094 eph += 2;
1095 slv -= 2;
1096 elv += 2;
1097 }
1098
1089 features = (prev->params.params[0].features & active) 1099 features = (prev->params.params[0].features & active)
1090 | (prev->params.params[1].features & ~active); 1100 | (prev->params.params[1].features & ~active);
1091 1101
@@ -1363,8 +1373,8 @@ static void preview_init_params(struct isp_prev_device *prev)
1363} 1373}
1364 1374
1365/* 1375/*
1366 * preview_max_out_width - Handle previewer hardware ouput limitations 1376 * preview_max_out_width - Handle previewer hardware output limitations
1367 * @isp_revision : ISP revision 1377 * @prev: pointer to previewer private structure
1368 * returns maximum width output for current isp revision 1378 * returns maximum width output for current isp revision
1369 */ 1379 */
1370static unsigned int preview_max_out_width(struct isp_prev_device *prev) 1380static unsigned int preview_max_out_width(struct isp_prev_device *prev)
@@ -1610,7 +1620,7 @@ static const struct v4l2_ctrl_ops preview_ctrl_ops = {
1610 1620
1611/* 1621/*
1612 * preview_ioctl - Handle preview module private ioctl's 1622 * preview_ioctl - Handle preview module private ioctl's
1613 * @prev: pointer to preview context structure 1623 * @sd: pointer to v4l2 subdev structure
1614 * @cmd: configuration command 1624 * @cmd: configuration command
1615 * @arg: configuration argument 1625 * @arg: configuration argument
1616 * return -EINVAL or zero on success 1626 * return -EINVAL or zero on success
@@ -2341,7 +2351,7 @@ error_video_in:
2341 2351
2342/* 2352/*
2343 * omap3isp_preview_init - Previewer initialization. 2353 * omap3isp_preview_init - Previewer initialization.
2344 * @dev : Pointer to ISP device 2354 * @isp : Pointer to ISP device
2345 * return -ENOMEM or zero on success 2355 * return -ENOMEM or zero on success
2346 */ 2356 */
2347int omap3isp_preview_init(struct isp_device *isp) 2357int omap3isp_preview_init(struct isp_device *isp)
diff --git a/drivers/media/platform/omap3isp/ispqueue.c b/drivers/media/platform/omap3isp/ispqueue.c
index 5f0f8fab1d17..a5e65858e799 100644
--- a/drivers/media/platform/omap3isp/ispqueue.c
+++ b/drivers/media/platform/omap3isp/ispqueue.c
@@ -597,7 +597,7 @@ static int isp_video_buffer_wait(struct isp_video_buffer *buf, int nonblocking)
597 * isp_video_queue_free - Free video buffers memory 597 * isp_video_queue_free - Free video buffers memory
598 * 598 *
599 * Buffers can only be freed if the queue isn't streaming and if no buffer is 599 * Buffers can only be freed if the queue isn't streaming and if no buffer is
600 * mapped to userspace. Return -EBUSY if those conditions aren't statisfied. 600 * mapped to userspace. Return -EBUSY if those conditions aren't satisfied.
601 * 601 *
602 * This function must be called with the queue lock held. 602 * This function must be called with the queue lock held.
603 */ 603 */
diff --git a/drivers/media/platform/omap3isp/ispresizer.c b/drivers/media/platform/omap3isp/ispresizer.c
index 0d36b8bc9f98..86369df81d74 100644
--- a/drivers/media/platform/omap3isp/ispresizer.c
+++ b/drivers/media/platform/omap3isp/ispresizer.c
@@ -206,7 +206,7 @@ static void resizer_set_bilinear(struct isp_res_device *res,
206/* 206/*
207 * resizer_set_ycpos - Luminance and chrominance order 207 * resizer_set_ycpos - Luminance and chrominance order
208 * @res: Device context. 208 * @res: Device context.
209 * @order: order type. 209 * @pixelcode: pixel code.
210 */ 210 */
211static void resizer_set_ycpos(struct isp_res_device *res, 211static void resizer_set_ycpos(struct isp_res_device *res,
212 enum v4l2_mbus_pixelcode pixelcode) 212 enum v4l2_mbus_pixelcode pixelcode)
@@ -918,8 +918,8 @@ static void resizer_calc_ratios(struct isp_res_device *res,
918/* 918/*
919 * resizer_set_crop_params - Setup hardware with cropping parameters 919 * resizer_set_crop_params - Setup hardware with cropping parameters
920 * @res : resizer private structure 920 * @res : resizer private structure
921 * @crop_rect : current crop rectangle 921 * @input : format on sink pad
922 * @ratio : resizer ratios 922 * @output : format on source pad
923 * return none 923 * return none
924 */ 924 */
925static void resizer_set_crop_params(struct isp_res_device *res, 925static void resizer_set_crop_params(struct isp_res_device *res,
diff --git a/drivers/media/platform/omap3isp/ispresizer.h b/drivers/media/platform/omap3isp/ispresizer.h
index 70c1c0e1bbdf..9b01e9047c15 100644
--- a/drivers/media/platform/omap3isp/ispresizer.h
+++ b/drivers/media/platform/omap3isp/ispresizer.h
@@ -30,12 +30,12 @@
30#include <linux/types.h> 30#include <linux/types.h>
31 31
32/* 32/*
33 * Constants for filter coefficents count 33 * Constants for filter coefficients count
34 */ 34 */
35#define COEFF_CNT 32 35#define COEFF_CNT 32
36 36
37/* 37/*
38 * struct isprsz_coef - Structure for resizer filter coeffcients. 38 * struct isprsz_coef - Structure for resizer filter coefficients.
39 * @h_filter_coef_4tap: Horizontal filter coefficients for 8-phase/4-tap 39 * @h_filter_coef_4tap: Horizontal filter coefficients for 8-phase/4-tap
40 * mode (.5x-4x) 40 * mode (.5x-4x)
41 * @v_filter_coef_4tap: Vertical filter coefficients for 8-phase/4-tap 41 * @v_filter_coef_4tap: Vertical filter coefficients for 8-phase/4-tap
diff --git a/drivers/media/platform/omap3isp/ispstat.c b/drivers/media/platform/omap3isp/ispstat.c
index a75407c3a726..5707f85c4cc4 100644
--- a/drivers/media/platform/omap3isp/ispstat.c
+++ b/drivers/media/platform/omap3isp/ispstat.c
@@ -144,7 +144,7 @@ static int isp_stat_buf_check_magic(struct ispstat *stat,
144 for (w = buf->virt_addr + buf_size, end = w + MAGIC_SIZE; 144 for (w = buf->virt_addr + buf_size, end = w + MAGIC_SIZE;
145 w < end; w++) { 145 w < end; w++) {
146 if (unlikely(*w != MAGIC_NUM)) { 146 if (unlikely(*w != MAGIC_NUM)) {
147 dev_dbg(stat->isp->dev, "%s: endding magic check does " 147 dev_dbg(stat->isp->dev, "%s: ending magic check does "
148 "not match.\n", stat->subdev.name); 148 "not match.\n", stat->subdev.name);
149 return -EINVAL; 149 return -EINVAL;
150 } 150 }
@@ -841,7 +841,7 @@ int omap3isp_stat_s_stream(struct v4l2_subdev *subdev, int enable)
841 if (enable) { 841 if (enable) {
842 /* 842 /*
843 * Only set enable PCR bit if the module was previously 843 * Only set enable PCR bit if the module was previously
844 * enabled through ioct. 844 * enabled through ioctl.
845 */ 845 */
846 isp_stat_try_enable(stat); 846 isp_stat_try_enable(stat);
847 } else { 847 } else {
diff --git a/drivers/media/platform/omap3isp/ispvideo.c b/drivers/media/platform/omap3isp/ispvideo.c
index 856fdf554035..85b4036ba5e4 100644
--- a/drivers/media/platform/omap3isp/ispvideo.c
+++ b/drivers/media/platform/omap3isp/ispvideo.c
@@ -333,7 +333,7 @@ isp_video_check_format(struct isp_video *video, struct isp_video_fh *vfh)
333 333
334/* 334/*
335 * ispmmu_vmap - Wrapper for Virtual memory mapping of a scatter gather list 335 * ispmmu_vmap - Wrapper for Virtual memory mapping of a scatter gather list
336 * @dev: Device pointer specific to the OMAP3 ISP. 336 * @isp: Device pointer specific to the OMAP3 ISP.
337 * @sglist: Pointer to source Scatter gather list to allocate. 337 * @sglist: Pointer to source Scatter gather list to allocate.
338 * @sglen: Number of elements of the scatter-gatter list. 338 * @sglen: Number of elements of the scatter-gatter list.
339 * 339 *
@@ -363,7 +363,7 @@ ispmmu_vmap(struct isp_device *isp, const struct scatterlist *sglist, int sglen)
363 363
364/* 364/*
365 * ispmmu_vunmap - Unmap a device address from the ISP MMU 365 * ispmmu_vunmap - Unmap a device address from the ISP MMU
366 * @dev: Device pointer specific to the OMAP3 ISP. 366 * @isp: Device pointer specific to the OMAP3 ISP.
367 * @da: Device address generated from a ispmmu_vmap call. 367 * @da: Device address generated from a ispmmu_vmap call.
368 */ 368 */
369static void ispmmu_vunmap(struct isp_device *isp, dma_addr_t da) 369static void ispmmu_vunmap(struct isp_device *isp, dma_addr_t da)
@@ -886,7 +886,11 @@ static int isp_video_check_external_subdevs(struct isp_video *video,
886 struct v4l2_ext_controls ctrls; 886 struct v4l2_ext_controls ctrls;
887 struct v4l2_ext_control ctrl; 887 struct v4l2_ext_control ctrl;
888 unsigned int i; 888 unsigned int i;
889 int ret = 0; 889 int ret;
890
891 /* Memory-to-memory pipelines have no external subdev. */
892 if (pipe->input != NULL)
893 return 0;
890 894
891 for (i = 0; i < ARRAY_SIZE(ents); i++) { 895 for (i = 0; i < ARRAY_SIZE(ents); i++) {
892 /* Is the entity part of the pipeline? */ 896 /* Is the entity part of the pipeline? */
@@ -905,7 +909,7 @@ static int isp_video_check_external_subdevs(struct isp_video *video,
905 909
906 if (!source) { 910 if (!source) {
907 dev_warn(isp->dev, "can't find source, failing now\n"); 911 dev_warn(isp->dev, "can't find source, failing now\n");
908 return ret; 912 return -EINVAL;
909 } 913 }
910 914
911 if (media_entity_type(source) != MEDIA_ENT_T_V4L2_SUBDEV) 915 if (media_entity_type(source) != MEDIA_ENT_T_V4L2_SUBDEV)