aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video')
-rw-r--r--drivers/media/video/au0828/au0828-cards.c7
-rw-r--r--drivers/media/video/c-qcam.c2
-rw-r--r--drivers/media/video/cs5345.c2
-rw-r--r--drivers/media/video/cs53l32a.c2
-rw-r--r--drivers/media/video/cx18/cx18-driver.c2
-rw-r--r--drivers/media/video/cx231xx/cx231xx-cards.c24
-rw-r--r--drivers/media/video/cx25821/cx25821-alsa.c2
-rw-r--r--drivers/media/video/cx88/cx88-alsa.c2
-rw-r--r--drivers/media/video/davinci/vpif.h1
-rw-r--r--drivers/media/video/davinci/vpif_capture.h2
-rw-r--r--drivers/media/video/davinci/vpif_display.h1
-rw-r--r--drivers/media/video/em28xx/em28xx-cards.c24
-rw-r--r--drivers/media/video/et61x251/et61x251_core.c29
-rw-r--r--drivers/media/video/gspca/benq.c13
-rw-r--r--drivers/media/video/gspca/conex.c13
-rw-r--r--drivers/media/video/gspca/cpia1.c13
-rw-r--r--drivers/media/video/gspca/etoms.c14
-rw-r--r--drivers/media/video/gspca/finepix.c14
-rw-r--r--drivers/media/video/gspca/gl860/gl860.c17
-rw-r--r--drivers/media/video/gspca/gspca.c6
-rw-r--r--drivers/media/video/gspca/jeilinj.c14
-rw-r--r--drivers/media/video/gspca/kinect.c14
-rw-r--r--drivers/media/video/gspca/konica.c13
-rw-r--r--drivers/media/video/gspca/m5602/m5602_core.c18
-rw-r--r--drivers/media/video/gspca/m5602/m5602_mt9m111.h2
-rw-r--r--drivers/media/video/gspca/m5602/m5602_ov7660.h2
-rw-r--r--drivers/media/video/gspca/m5602/m5602_ov9650.h2
-rw-r--r--drivers/media/video/gspca/m5602/m5602_po1030.h2
-rw-r--r--drivers/media/video/gspca/m5602/m5602_s5k4aa.h2
-rw-r--r--drivers/media/video/gspca/m5602/m5602_s5k83a.h2
-rw-r--r--drivers/media/video/gspca/mars.c13
-rw-r--r--drivers/media/video/gspca/mr97310a.c13
-rw-r--r--drivers/media/video/gspca/nw80x.c13
-rw-r--r--drivers/media/video/gspca/ov519.c13
-rw-r--r--drivers/media/video/gspca/ov534.c14
-rw-r--r--drivers/media/video/gspca/ov534_9.c14
-rw-r--r--drivers/media/video/gspca/pac207.c13
-rw-r--r--drivers/media/video/gspca/pac7302.c13
-rw-r--r--drivers/media/video/gspca/pac7311.c13
-rw-r--r--drivers/media/video/gspca/se401.c13
-rw-r--r--drivers/media/video/gspca/sn9c2028.c14
-rw-r--r--drivers/media/video/gspca/sn9c20x.c13
-rw-r--r--drivers/media/video/gspca/sonixb.c13
-rw-r--r--drivers/media/video/gspca/sonixj.c13
-rw-r--r--drivers/media/video/gspca/spca1528.c13
-rw-r--r--drivers/media/video/gspca/spca500.c13
-rw-r--r--drivers/media/video/gspca/spca501.c13
-rw-r--r--drivers/media/video/gspca/spca505.c13
-rw-r--r--drivers/media/video/gspca/spca506.c19
-rw-r--r--drivers/media/video/gspca/spca508.c13
-rw-r--r--drivers/media/video/gspca/spca561.c13
-rw-r--r--drivers/media/video/gspca/sq905.c14
-rw-r--r--drivers/media/video/gspca/sq905c.c14
-rw-r--r--drivers/media/video/gspca/sq930x.c13
-rw-r--r--drivers/media/video/gspca/stk014.c13
-rw-r--r--drivers/media/video/gspca/stv0680.c13
-rw-r--r--drivers/media/video/gspca/stv06xx/stv06xx.c17
-rw-r--r--drivers/media/video/gspca/sunplus.c13
-rw-r--r--drivers/media/video/gspca/t613.c13
-rw-r--r--drivers/media/video/gspca/topro.c13
-rw-r--r--drivers/media/video/gspca/tv8532.c14
-rw-r--r--drivers/media/video/gspca/vc032x.c13
-rw-r--r--drivers/media/video/gspca/vicam.c14
-rw-r--r--drivers/media/video/gspca/xirlink_cit.c13
-rw-r--r--drivers/media/video/gspca/zc3xx.c13
-rw-r--r--drivers/media/video/hdpvr/hdpvr-core.c23
-rw-r--r--drivers/media/video/ivtv/ivtv-driver.c2
-rw-r--r--drivers/media/video/ivtv/ivtvfb.c2
-rw-r--r--drivers/media/video/m5mols/m5mols.h2
-rw-r--r--drivers/media/video/m5mols/m5mols_core.c22
-rw-r--r--drivers/media/video/marvell-ccic/mcam-core.c6
-rw-r--r--drivers/media/video/msp3400-driver.c6
-rw-r--r--drivers/media/video/msp3400-driver.h6
-rw-r--r--drivers/media/video/mt9m111.c1
-rw-r--r--drivers/media/video/mt9t112.c4
-rw-r--r--drivers/media/video/omap/omap_vout.c48
-rw-r--r--drivers/media/video/omap/omap_vout_vrfb.c2
-rw-r--r--drivers/media/video/omap1_camera.c1
-rw-r--r--drivers/media/video/omap24xxcam-dma.c2
-rw-r--r--drivers/media/video/omap3isp/isp.c30
-rw-r--r--drivers/media/video/omap3isp/isp.h2
-rw-r--r--drivers/media/video/omap3isp/ispccdc.c20
-rw-r--r--drivers/media/video/omap3isp/ispstat.c10
-rw-r--r--drivers/media/video/omap3isp/ispvideo.c5
-rw-r--r--drivers/media/video/ov6650.c2
-rw-r--r--drivers/media/video/ov7670.c2
-rw-r--r--drivers/media/video/s2255drv.c20
-rw-r--r--drivers/media/video/s5p-fimc/fimc-capture.c14
-rw-r--r--drivers/media/video/s5p-fimc/fimc-core.c24
-rw-r--r--drivers/media/video/s5p-fimc/fimc-core.h2
-rw-r--r--drivers/media/video/s5p-fimc/fimc-mdevice.c43
-rw-r--r--drivers/media/video/s5p-fimc/fimc-reg.c15
-rw-r--r--drivers/media/video/s5p-mfc/s5p_mfc_enc.c2
-rw-r--r--drivers/media/video/s5p-tv/mixer_video.c1
-rw-r--r--drivers/media/video/saa7115.c2
-rw-r--r--drivers/media/video/sh_mobile_ceu_camera.c34
-rw-r--r--drivers/media/video/sh_mobile_csi2.c4
-rw-r--r--drivers/media/video/sn9c102/sn9c102_core.c29
-rw-r--r--drivers/media/video/soc_camera.c3
-rw-r--r--drivers/media/video/stk-webcam.c27
-rw-r--r--drivers/media/video/tm6000/tm6000-alsa.c2
-rw-r--r--drivers/media/video/tm6000/tm6000-cards.c26
-rw-r--r--drivers/media/video/tvp514x.c2
-rw-r--r--drivers/media/video/tvp7002.c2
-rw-r--r--drivers/media/video/upd64083.c2
-rw-r--r--drivers/media/video/via-camera.c4
-rw-r--r--drivers/media/video/zoran/zoran_device.c2
-rw-r--r--drivers/media/video/zoran/zoran_driver.c2
-rw-r--r--drivers/media/video/zoran/zr36060.c2
-rw-r--r--drivers/media/video/zr364xx.c23
110 files changed, 268 insertions, 950 deletions
diff --git a/drivers/media/video/au0828/au0828-cards.c b/drivers/media/video/au0828/au0828-cards.c
index 39fc923fc46..1c6015a04f9 100644
--- a/drivers/media/video/au0828/au0828-cards.c
+++ b/drivers/media/video/au0828/au0828-cards.c
@@ -162,11 +162,14 @@ static void hauppauge_eeprom(struct au0828_dev *dev, u8 *eeprom_data)
162 switch (tv.model) { 162 switch (tv.model) {
163 case 72000: /* WinTV-HVR950q (Retail, IR, ATSC/QAM */ 163 case 72000: /* WinTV-HVR950q (Retail, IR, ATSC/QAM */
164 case 72001: /* WinTV-HVR950q (Retail, IR, ATSC/QAM and analog video */ 164 case 72001: /* WinTV-HVR950q (Retail, IR, ATSC/QAM and analog video */
165 case 72101: /* WinTV-HVR950q (Retail, IR, ATSC/QAM and analog video */
166 case 72201: /* WinTV-HVR950q (OEM, IR, ATSC/QAM and analog video */
165 case 72211: /* WinTV-HVR950q (OEM, IR, ATSC/QAM and analog video */ 167 case 72211: /* WinTV-HVR950q (OEM, IR, ATSC/QAM and analog video */
166 case 72221: /* WinTV-HVR950q (OEM, IR, ATSC/QAM and analog video */ 168 case 72221: /* WinTV-HVR950q (OEM, IR, ATSC/QAM and analog video */
167 case 72231: /* WinTV-HVR950q (OEM, IR, ATSC/QAM and analog video */ 169 case 72231: /* WinTV-HVR950q (OEM, IR, ATSC/QAM and analog video */
168 case 72241: /* WinTV-HVR950q (OEM, No IR, ATSC/QAM and analog video */ 170 case 72241: /* WinTV-HVR950q (OEM, No IR, ATSC/QAM and analog video */
169 case 72251: /* WinTV-HVR950q (Retail, IR, ATSC/QAM and analog video */ 171 case 72251: /* WinTV-HVR950q (Retail, IR, ATSC/QAM and analog video */
172 case 72261: /* WinTV-HVR950q (OEM, IR, ATSC/QAM and analog video */
170 case 72301: /* WinTV-HVR850 (Retail, IR, ATSC and analog video */ 173 case 72301: /* WinTV-HVR850 (Retail, IR, ATSC and analog video */
171 case 72500: /* WinTV-HVR950q (OEM, No IR, ATSC/QAM */ 174 case 72500: /* WinTV-HVR950q (OEM, No IR, ATSC/QAM */
172 break; 175 break;
@@ -324,6 +327,10 @@ struct usb_device_id au0828_usb_id_table[] = {
324 .driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q_MXL }, 327 .driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q_MXL },
325 { USB_DEVICE(0x2040, 0x8200), 328 { USB_DEVICE(0x2040, 0x8200),
326 .driver_info = AU0828_BOARD_HAUPPAUGE_WOODBURY }, 329 .driver_info = AU0828_BOARD_HAUPPAUGE_WOODBURY },
330 { USB_DEVICE(0x2040, 0x7260),
331 .driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q },
332 { USB_DEVICE(0x2040, 0x7213),
333 .driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q },
327 { }, 334 { },
328}; 335};
329 336
diff --git a/drivers/media/video/c-qcam.c b/drivers/media/video/c-qcam.c
index cd8ff047318..fda32f52554 100644
--- a/drivers/media/video/c-qcam.c
+++ b/drivers/media/video/c-qcam.c
@@ -72,7 +72,7 @@ struct qcam {
72 72
73static int parport[MAX_CAMS] = { [1 ... MAX_CAMS-1] = -1 }; 73static int parport[MAX_CAMS] = { [1 ... MAX_CAMS-1] = -1 };
74static int probe = 2; 74static int probe = 2;
75static int force_rgb; 75static bool force_rgb;
76static int video_nr = -1; 76static int video_nr = -1;
77 77
78/* FIXME: parport=auto would never have worked, surely? --RR */ 78/* FIXME: parport=auto would never have worked, surely? --RR */
diff --git a/drivers/media/video/cs5345.c b/drivers/media/video/cs5345.c
index 5909f2557ab..1d64af9adf7 100644
--- a/drivers/media/video/cs5345.c
+++ b/drivers/media/video/cs5345.c
@@ -31,7 +31,7 @@ MODULE_DESCRIPTION("i2c device driver for cs5345 Audio ADC");
31MODULE_AUTHOR("Hans Verkuil"); 31MODULE_AUTHOR("Hans Verkuil");
32MODULE_LICENSE("GPL"); 32MODULE_LICENSE("GPL");
33 33
34static int debug; 34static bool debug;
35 35
36module_param(debug, bool, 0644); 36module_param(debug, bool, 0644);
37 37
diff --git a/drivers/media/video/cs53l32a.c b/drivers/media/video/cs53l32a.c
index d93e5ab45fd..51c5b9ad67d 100644
--- a/drivers/media/video/cs53l32a.c
+++ b/drivers/media/video/cs53l32a.c
@@ -35,7 +35,7 @@ MODULE_DESCRIPTION("i2c device driver for cs53l32a Audio ADC");
35MODULE_AUTHOR("Martin Vaughan"); 35MODULE_AUTHOR("Martin Vaughan");
36MODULE_LICENSE("GPL"); 36MODULE_LICENSE("GPL");
37 37
38static int debug; 38static bool debug;
39 39
40module_param(debug, bool, 0644); 40module_param(debug, bool, 0644);
41 41
diff --git a/drivers/media/video/cx18/cx18-driver.c b/drivers/media/video/cx18/cx18-driver.c
index c6ff32a6137..349bd9c2aff 100644
--- a/drivers/media/video/cx18/cx18-driver.c
+++ b/drivers/media/video/cx18/cx18-driver.c
@@ -75,7 +75,7 @@ static int radio[CX18_MAX_CARDS] = { -1, -1, -1, -1, -1, -1, -1, -1,
75 -1, -1, -1, -1, -1, -1, -1, -1 }; 75 -1, -1, -1, -1, -1, -1, -1, -1 };
76static unsigned cardtype_c = 1; 76static unsigned cardtype_c = 1;
77static unsigned tuner_c = 1; 77static unsigned tuner_c = 1;
78static unsigned radio_c = 1; 78static bool radio_c = 1;
79static char pal[] = "--"; 79static char pal[] = "--";
80static char secam[] = "--"; 80static char secam[] = "--";
81static char ntsc[] = "-"; 81static char ntsc[] = "-";
diff --git a/drivers/media/video/cx231xx/cx231xx-cards.c b/drivers/media/video/cx231xx/cx231xx-cards.c
index 53dae2a8272..60b021e7986 100644
--- a/drivers/media/video/cx231xx/cx231xx-cards.c
+++ b/drivers/media/video/cx231xx/cx231xx-cards.c
@@ -1385,26 +1385,4 @@ static struct usb_driver cx231xx_usb_driver = {
1385 .id_table = cx231xx_id_table, 1385 .id_table = cx231xx_id_table,
1386}; 1386};
1387 1387
1388static int __init cx231xx_module_init(void) 1388module_usb_driver(cx231xx_usb_driver);
1389{
1390 int result;
1391
1392 printk(KERN_INFO DRIVER_NAME " v4l2 driver loaded.\n");
1393
1394 /* register this driver with the USB subsystem */
1395 result = usb_register(&cx231xx_usb_driver);
1396 if (result)
1397 cx231xx_err(DRIVER_NAME
1398 " usb_register failed. Error number %d.\n", result);
1399
1400 return result;
1401}
1402
1403static void __exit cx231xx_module_exit(void)
1404{
1405 /* deregister this driver with the USB subsystem */
1406 usb_deregister(&cx231xx_usb_driver);
1407}
1408
1409module_init(cx231xx_module_init);
1410module_exit(cx231xx_module_exit);
diff --git a/drivers/media/video/cx25821/cx25821-alsa.c b/drivers/media/video/cx25821/cx25821-alsa.c
index 09e99de5fd2..58be4f3bb3c 100644
--- a/drivers/media/video/cx25821/cx25821-alsa.c
+++ b/drivers/media/video/cx25821/cx25821-alsa.c
@@ -102,7 +102,7 @@ struct cx25821_audio_dev {
102 102
103static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */ 103static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */
104static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */ 104static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */
105static int enable[SNDRV_CARDS] = { 1, [1 ... (SNDRV_CARDS - 1)] = 1 }; 105static bool enable[SNDRV_CARDS] = { 1, [1 ... (SNDRV_CARDS - 1)] = 1 };
106 106
107module_param_array(enable, bool, NULL, 0444); 107module_param_array(enable, bool, NULL, 0444);
108MODULE_PARM_DESC(enable, "Enable cx25821 soundcard. default enabled."); 108MODULE_PARM_DESC(enable, "Enable cx25821 soundcard. default enabled.");
diff --git a/drivers/media/video/cx88/cx88-alsa.c b/drivers/media/video/cx88/cx88-alsa.c
index 68d1240f493..04bf6627d36 100644
--- a/drivers/media/video/cx88/cx88-alsa.c
+++ b/drivers/media/video/cx88/cx88-alsa.c
@@ -96,7 +96,7 @@ typedef struct cx88_audio_dev snd_cx88_card_t;
96 96
97static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */ 97static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */
98static const char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */ 98static const char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */
99static int enable[SNDRV_CARDS] = {1, [1 ... (SNDRV_CARDS - 1)] = 1}; 99static bool enable[SNDRV_CARDS] = {1, [1 ... (SNDRV_CARDS - 1)] = 1};
100 100
101module_param_array(enable, bool, NULL, 0444); 101module_param_array(enable, bool, NULL, 0444);
102MODULE_PARM_DESC(enable, "Enable cx88x soundcard. default enabled."); 102MODULE_PARM_DESC(enable, "Enable cx88x soundcard. default enabled.");
diff --git a/drivers/media/video/davinci/vpif.h b/drivers/media/video/davinci/vpif.h
index 10550bd93b0..25036cb11be 100644
--- a/drivers/media/video/davinci/vpif.h
+++ b/drivers/media/video/davinci/vpif.h
@@ -20,6 +20,7 @@
20#include <linux/videodev2.h> 20#include <linux/videodev2.h>
21#include <mach/hardware.h> 21#include <mach/hardware.h>
22#include <mach/dm646x.h> 22#include <mach/dm646x.h>
23#include <media/davinci/vpif_types.h>
23 24
24/* Maximum channel allowed */ 25/* Maximum channel allowed */
25#define VPIF_NUM_CHANNELS (4) 26#define VPIF_NUM_CHANNELS (4)
diff --git a/drivers/media/video/davinci/vpif_capture.h b/drivers/media/video/davinci/vpif_capture.h
index 064550f5ce4..a693d4ebda5 100644
--- a/drivers/media/video/davinci/vpif_capture.h
+++ b/drivers/media/video/davinci/vpif_capture.h
@@ -27,7 +27,7 @@
27#include <media/v4l2-device.h> 27#include <media/v4l2-device.h>
28#include <media/videobuf-core.h> 28#include <media/videobuf-core.h>
29#include <media/videobuf-dma-contig.h> 29#include <media/videobuf-dma-contig.h>
30#include <mach/dm646x.h> 30#include <media/davinci/vpif_types.h>
31 31
32#include "vpif.h" 32#include "vpif.h"
33 33
diff --git a/drivers/media/video/davinci/vpif_display.h b/drivers/media/video/davinci/vpif_display.h
index 5d1936dafed..56879d1a068 100644
--- a/drivers/media/video/davinci/vpif_display.h
+++ b/drivers/media/video/davinci/vpif_display.h
@@ -22,6 +22,7 @@
22#include <media/v4l2-device.h> 22#include <media/v4l2-device.h>
23#include <media/videobuf-core.h> 23#include <media/videobuf-core.h>
24#include <media/videobuf-dma-contig.h> 24#include <media/videobuf-dma-contig.h>
25#include <media/davinci/vpif_types.h>
25 26
26#include "vpif.h" 27#include "vpif.h"
27 28
diff --git a/drivers/media/video/em28xx/em28xx-cards.c b/drivers/media/video/em28xx/em28xx-cards.c
index 9b747c266af..93807dcf944 100644
--- a/drivers/media/video/em28xx/em28xx-cards.c
+++ b/drivers/media/video/em28xx/em28xx-cards.c
@@ -3325,26 +3325,4 @@ static struct usb_driver em28xx_usb_driver = {
3325 .id_table = em28xx_id_table, 3325 .id_table = em28xx_id_table,
3326}; 3326};
3327 3327
3328static int __init em28xx_module_init(void) 3328module_usb_driver(em28xx_usb_driver);
3329{
3330 int result;
3331
3332 /* register this driver with the USB subsystem */
3333 result = usb_register(&em28xx_usb_driver);
3334 if (result)
3335 em28xx_err(DRIVER_NAME
3336 " usb_register failed. Error number %d.\n", result);
3337
3338 printk(KERN_INFO DRIVER_NAME " driver loaded\n");
3339
3340 return result;
3341}
3342
3343static void __exit em28xx_module_exit(void)
3344{
3345 /* deregister this driver with the USB subsystem */
3346 usb_deregister(&em28xx_usb_driver);
3347}
3348
3349module_init(em28xx_module_init);
3350module_exit(em28xx_module_exit);
diff --git a/drivers/media/video/et61x251/et61x251_core.c b/drivers/media/video/et61x251/et61x251_core.c
index d3777c86e1d..5539f09440a 100644
--- a/drivers/media/video/et61x251/et61x251_core.c
+++ b/drivers/media/video/et61x251/et61x251_core.c
@@ -76,8 +76,8 @@ MODULE_PARM_DESC(video_nr,
76 "\none and for every other camera." 76 "\none and for every other camera."
77 "\n"); 77 "\n");
78 78
79static short force_munmap[] = {[0 ... ET61X251_MAX_DEVICES-1] = 79static bool force_munmap[] = {[0 ... ET61X251_MAX_DEVICES-1] =
80 ET61X251_FORCE_MUNMAP}; 80 ET61X251_FORCE_MUNMAP};
81module_param_array(force_munmap, bool, NULL, 0444); 81module_param_array(force_munmap, bool, NULL, 0444);
82MODULE_PARM_DESC(force_munmap, 82MODULE_PARM_DESC(force_munmap,
83 "\n<0|1[,...]> Force the application to unmap previously" 83 "\n<0|1[,...]> Force the application to unmap previously"
@@ -2680,27 +2680,4 @@ static struct usb_driver et61x251_usb_driver = {
2680 .disconnect = et61x251_usb_disconnect, 2680 .disconnect = et61x251_usb_disconnect,
2681}; 2681};
2682 2682
2683/*****************************************************************************/ 2683module_usb_driver(et61x251_usb_driver);
2684
2685static int __init et61x251_module_init(void)
2686{
2687 int err = 0;
2688
2689 KDBG(2, ET61X251_MODULE_NAME " v" ET61X251_MODULE_VERSION);
2690 KDBG(3, ET61X251_MODULE_AUTHOR);
2691
2692 if ((err = usb_register(&et61x251_usb_driver)))
2693 KDBG(1, "usb_register() failed");
2694
2695 return err;
2696}
2697
2698
2699static void __exit et61x251_module_exit(void)
2700{
2701 usb_deregister(&et61x251_usb_driver);
2702}
2703
2704
2705module_init(et61x251_module_init);
2706module_exit(et61x251_module_exit);
diff --git a/drivers/media/video/gspca/benq.c b/drivers/media/video/gspca/benq.c
index 6ae26160b81..636627b57dc 100644
--- a/drivers/media/video/gspca/benq.c
+++ b/drivers/media/video/gspca/benq.c
@@ -288,15 +288,4 @@ static struct usb_driver sd_driver = {
288#endif 288#endif
289}; 289};
290 290
291/* -- module insert / remove -- */ 291module_usb_driver(sd_driver);
292static int __init sd_mod_init(void)
293{
294 return usb_register(&sd_driver);
295}
296static void __exit sd_mod_exit(void)
297{
298 usb_deregister(&sd_driver);
299}
300
301module_init(sd_mod_init);
302module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/conex.c b/drivers/media/video/gspca/conex.c
index 4c56dbef6d9..ea17b5d94ea 100644
--- a/drivers/media/video/gspca/conex.c
+++ b/drivers/media/video/gspca/conex.c
@@ -1067,15 +1067,4 @@ static struct usb_driver sd_driver = {
1067#endif 1067#endif
1068}; 1068};
1069 1069
1070/* -- module insert / remove -- */ 1070module_usb_driver(sd_driver);
1071static int __init sd_mod_init(void)
1072{
1073 return usb_register(&sd_driver);
1074}
1075static void __exit sd_mod_exit(void)
1076{
1077 usb_deregister(&sd_driver);
1078}
1079
1080module_init(sd_mod_init);
1081module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/cpia1.c b/drivers/media/video/gspca/cpia1.c
index f9b86b2484b..8f33bbd091a 100644
--- a/drivers/media/video/gspca/cpia1.c
+++ b/drivers/media/video/gspca/cpia1.c
@@ -2132,15 +2132,4 @@ static struct usb_driver sd_driver = {
2132#endif 2132#endif
2133}; 2133};
2134 2134
2135/* -- module insert / remove -- */ 2135module_usb_driver(sd_driver);
2136static int __init sd_mod_init(void)
2137{
2138 return usb_register(&sd_driver);
2139}
2140static void __exit sd_mod_exit(void)
2141{
2142 usb_deregister(&sd_driver);
2143}
2144
2145module_init(sd_mod_init);
2146module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/etoms.c b/drivers/media/video/gspca/etoms.c
index 0357d6d461d..81a4adbd9f7 100644
--- a/drivers/media/video/gspca/etoms.c
+++ b/drivers/media/video/gspca/etoms.c
@@ -895,16 +895,4 @@ static struct usb_driver sd_driver = {
895#endif 895#endif
896}; 896};
897 897
898/* -- module insert / remove -- */ 898module_usb_driver(sd_driver);
899static int __init sd_mod_init(void)
900{
901 return usb_register(&sd_driver);
902}
903
904static void __exit sd_mod_exit(void)
905{
906 usb_deregister(&sd_driver);
907}
908
909module_init(sd_mod_init);
910module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/finepix.c b/drivers/media/video/gspca/finepix.c
index ea48200fd3a..0107513cd72 100644
--- a/drivers/media/video/gspca/finepix.c
+++ b/drivers/media/video/gspca/finepix.c
@@ -290,16 +290,4 @@ static struct usb_driver sd_driver = {
290#endif 290#endif
291}; 291};
292 292
293/* -- module insert / remove -- */ 293module_usb_driver(sd_driver);
294static int __init sd_mod_init(void)
295{
296 return usb_register(&sd_driver);
297}
298
299static void __exit sd_mod_exit(void)
300{
301 usb_deregister(&sd_driver);
302}
303
304module_init(sd_mod_init);
305module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/gl860/gl860.c b/drivers/media/video/gspca/gl860/gl860.c
index 2ced3b73994..a8f54c20e58 100644
--- a/drivers/media/video/gspca/gl860/gl860.c
+++ b/drivers/media/video/gspca/gl860/gl860.c
@@ -524,22 +524,7 @@ static struct usb_driver sd_driver = {
524 524
525/*====================== Init and Exit module functions ====================*/ 525/*====================== Init and Exit module functions ====================*/
526 526
527static int __init sd_mod_init(void) 527module_usb_driver(sd_driver);
528{
529 PDEBUG(D_PROBE, "driver startup - version %s", DRIVER_VERSION);
530
531 if (usb_register(&sd_driver) < 0)
532 return -1;
533 return 0;
534}
535
536static void __exit sd_mod_exit(void)
537{
538 usb_deregister(&sd_driver);
539}
540
541module_init(sd_mod_init);
542module_exit(sd_mod_exit);
543 528
544/*==========================================================================*/ 529/*==========================================================================*/
545 530
diff --git a/drivers/media/video/gspca/gspca.c b/drivers/media/video/gspca/gspca.c
index 881e04c7ffe..2ca10dfec91 100644
--- a/drivers/media/video/gspca/gspca.c
+++ b/drivers/media/video/gspca/gspca.c
@@ -838,13 +838,13 @@ static int gspca_init_transfer(struct gspca_dev *gspca_dev)
838 gspca_dev->usb_err = 0; 838 gspca_dev->usb_err = 0;
839 839
840 /* do the specific subdriver stuff before endpoint selection */ 840 /* do the specific subdriver stuff before endpoint selection */
841 gspca_dev->alt = 0; 841 intf = usb_ifnum_to_if(gspca_dev->dev, gspca_dev->iface);
842 gspca_dev->alt = gspca_dev->cam.bulk ? intf->num_altsetting : 0;
842 if (gspca_dev->sd_desc->isoc_init) { 843 if (gspca_dev->sd_desc->isoc_init) {
843 ret = gspca_dev->sd_desc->isoc_init(gspca_dev); 844 ret = gspca_dev->sd_desc->isoc_init(gspca_dev);
844 if (ret < 0) 845 if (ret < 0)
845 goto unlock; 846 goto unlock;
846 } 847 }
847 intf = usb_ifnum_to_if(gspca_dev->dev, gspca_dev->iface);
848 xfer = gspca_dev->cam.bulk ? USB_ENDPOINT_XFER_BULK 848 xfer = gspca_dev->cam.bulk ? USB_ENDPOINT_XFER_BULK
849 : USB_ENDPOINT_XFER_ISOC; 849 : USB_ENDPOINT_XFER_ISOC;
850 850
@@ -957,7 +957,7 @@ retry:
957 ret = -EIO; 957 ret = -EIO;
958 goto out; 958 goto out;
959 } 959 }
960 alt = ep_tb[--alt_idx].alt; 960 gspca_dev->alt = ep_tb[--alt_idx].alt;
961 } 961 }
962 } 962 }
963out: 963out:
diff --git a/drivers/media/video/gspca/jeilinj.c b/drivers/media/video/gspca/jeilinj.c
index 8e3dabe3007..5ab3f7e1276 100644
--- a/drivers/media/video/gspca/jeilinj.c
+++ b/drivers/media/video/gspca/jeilinj.c
@@ -582,16 +582,4 @@ static struct usb_driver sd_driver = {
582#endif 582#endif
583}; 583};
584 584
585/* -- module insert / remove -- */ 585module_usb_driver(sd_driver);
586static int __init sd_mod_init(void)
587{
588 return usb_register(&sd_driver);
589}
590
591static void __exit sd_mod_exit(void)
592{
593 usb_deregister(&sd_driver);
594}
595
596module_init(sd_mod_init);
597module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/kinect.c b/drivers/media/video/gspca/kinect.c
index 4fe51fda80f..e8e8f2fe916 100644
--- a/drivers/media/video/gspca/kinect.c
+++ b/drivers/media/video/gspca/kinect.c
@@ -413,16 +413,4 @@ static struct usb_driver sd_driver = {
413#endif 413#endif
414}; 414};
415 415
416/* -- module insert / remove -- */ 416module_usb_driver(sd_driver);
417static int __init sd_mod_init(void)
418{
419 return usb_register(&sd_driver);
420}
421
422static void __exit sd_mod_exit(void)
423{
424 usb_deregister(&sd_driver);
425}
426
427module_init(sd_mod_init);
428module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/konica.c b/drivers/media/video/gspca/konica.c
index f3f7fe0ec4b..b1da7f4096c 100644
--- a/drivers/media/video/gspca/konica.c
+++ b/drivers/media/video/gspca/konica.c
@@ -634,15 +634,4 @@ static struct usb_driver sd_driver = {
634#endif 634#endif
635}; 635};
636 636
637/* -- module insert / remove -- */ 637module_usb_driver(sd_driver);
638static int __init sd_mod_init(void)
639{
640 return usb_register(&sd_driver);
641}
642static void __exit sd_mod_exit(void)
643{
644 usb_deregister(&sd_driver);
645}
646
647module_init(sd_mod_init);
648module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/m5602/m5602_core.c b/drivers/media/video/gspca/m5602/m5602_core.c
index 67533e5582a..0c449367543 100644
--- a/drivers/media/video/gspca/m5602/m5602_core.c
+++ b/drivers/media/video/gspca/m5602/m5602_core.c
@@ -27,8 +27,8 @@
27 27
28/* Kernel module parameters */ 28/* Kernel module parameters */
29int force_sensor; 29int force_sensor;
30static int dump_bridge; 30static bool dump_bridge;
31int dump_sensor; 31bool dump_sensor;
32 32
33static const struct usb_device_id m5602_table[] = { 33static const struct usb_device_id m5602_table[] = {
34 {USB_DEVICE(0x0402, 0x5602)}, 34 {USB_DEVICE(0x0402, 0x5602)},
@@ -404,19 +404,7 @@ static struct usb_driver sd_driver = {
404 .disconnect = m5602_disconnect 404 .disconnect = m5602_disconnect
405}; 405};
406 406
407/* -- module insert / remove -- */ 407module_usb_driver(sd_driver);
408static int __init mod_m5602_init(void)
409{
410 return usb_register(&sd_driver);
411}
412
413static void __exit mod_m5602_exit(void)
414{
415 usb_deregister(&sd_driver);
416}
417
418module_init(mod_m5602_init);
419module_exit(mod_m5602_exit);
420 408
421MODULE_AUTHOR(DRIVER_AUTHOR); 409MODULE_AUTHOR(DRIVER_AUTHOR);
422MODULE_DESCRIPTION(DRIVER_DESC); 410MODULE_DESCRIPTION(DRIVER_DESC);
diff --git a/drivers/media/video/gspca/m5602/m5602_mt9m111.h b/drivers/media/video/gspca/m5602/m5602_mt9m111.h
index b1f0c492036..8c672b5c8c6 100644
--- a/drivers/media/video/gspca/m5602/m5602_mt9m111.h
+++ b/drivers/media/video/gspca/m5602/m5602_mt9m111.h
@@ -106,7 +106,7 @@
106 106
107/* Kernel module parameters */ 107/* Kernel module parameters */
108extern int force_sensor; 108extern int force_sensor;
109extern int dump_sensor; 109extern bool dump_sensor;
110 110
111int mt9m111_probe(struct sd *sd); 111int mt9m111_probe(struct sd *sd);
112int mt9m111_init(struct sd *sd); 112int mt9m111_init(struct sd *sd);
diff --git a/drivers/media/video/gspca/m5602/m5602_ov7660.h b/drivers/media/video/gspca/m5602/m5602_ov7660.h
index 2efd607987e..2b6a13b508f 100644
--- a/drivers/media/video/gspca/m5602/m5602_ov7660.h
+++ b/drivers/media/video/gspca/m5602/m5602_ov7660.h
@@ -86,7 +86,7 @@
86 86
87/* Kernel module parameters */ 87/* Kernel module parameters */
88extern int force_sensor; 88extern int force_sensor;
89extern int dump_sensor; 89extern bool dump_sensor;
90 90
91int ov7660_probe(struct sd *sd); 91int ov7660_probe(struct sd *sd);
92int ov7660_init(struct sd *sd); 92int ov7660_init(struct sd *sd);
diff --git a/drivers/media/video/gspca/m5602/m5602_ov9650.h b/drivers/media/video/gspca/m5602/m5602_ov9650.h
index da9a129b739..f7aa5bf6898 100644
--- a/drivers/media/video/gspca/m5602/m5602_ov9650.h
+++ b/drivers/media/video/gspca/m5602/m5602_ov9650.h
@@ -135,7 +135,7 @@
135 135
136/* Kernel module parameters */ 136/* Kernel module parameters */
137extern int force_sensor; 137extern int force_sensor;
138extern int dump_sensor; 138extern bool dump_sensor;
139 139
140int ov9650_probe(struct sd *sd); 140int ov9650_probe(struct sd *sd);
141int ov9650_init(struct sd *sd); 141int ov9650_init(struct sd *sd);
diff --git a/drivers/media/video/gspca/m5602/m5602_po1030.h b/drivers/media/video/gspca/m5602/m5602_po1030.h
index 33835959639..81a2bcb88fe 100644
--- a/drivers/media/video/gspca/m5602/m5602_po1030.h
+++ b/drivers/media/video/gspca/m5602/m5602_po1030.h
@@ -147,7 +147,7 @@
147 147
148/* Kernel module parameters */ 148/* Kernel module parameters */
149extern int force_sensor; 149extern int force_sensor;
150extern int dump_sensor; 150extern bool dump_sensor;
151 151
152int po1030_probe(struct sd *sd); 152int po1030_probe(struct sd *sd);
153int po1030_init(struct sd *sd); 153int po1030_init(struct sd *sd);
diff --git a/drivers/media/video/gspca/m5602/m5602_s5k4aa.h b/drivers/media/video/gspca/m5602/m5602_s5k4aa.h
index 8cc7a3f6da7..8e0035e731c 100644
--- a/drivers/media/video/gspca/m5602/m5602_s5k4aa.h
+++ b/drivers/media/video/gspca/m5602/m5602_s5k4aa.h
@@ -65,7 +65,7 @@
65 65
66/* Kernel module parameters */ 66/* Kernel module parameters */
67extern int force_sensor; 67extern int force_sensor;
68extern int dump_sensor; 68extern bool dump_sensor;
69 69
70int s5k4aa_probe(struct sd *sd); 70int s5k4aa_probe(struct sd *sd);
71int s5k4aa_init(struct sd *sd); 71int s5k4aa_init(struct sd *sd);
diff --git a/drivers/media/video/gspca/m5602/m5602_s5k83a.h b/drivers/media/video/gspca/m5602/m5602_s5k83a.h
index 80a63a236e2..79952247b53 100644
--- a/drivers/media/video/gspca/m5602/m5602_s5k83a.h
+++ b/drivers/media/video/gspca/m5602/m5602_s5k83a.h
@@ -41,7 +41,7 @@
41 41
42/* Kernel module parameters */ 42/* Kernel module parameters */
43extern int force_sensor; 43extern int force_sensor;
44extern int dump_sensor; 44extern bool dump_sensor;
45 45
46int s5k83a_probe(struct sd *sd); 46int s5k83a_probe(struct sd *sd);
47int s5k83a_init(struct sd *sd); 47int s5k83a_init(struct sd *sd);
diff --git a/drivers/media/video/gspca/mars.c b/drivers/media/video/gspca/mars.c
index ef45fa57575..5c2ea05c46b 100644
--- a/drivers/media/video/gspca/mars.c
+++ b/drivers/media/video/gspca/mars.c
@@ -517,15 +517,4 @@ static struct usb_driver sd_driver = {
517#endif 517#endif
518}; 518};
519 519
520/* -- module insert / remove -- */ 520module_usb_driver(sd_driver);
521static int __init sd_mod_init(void)
522{
523 return usb_register(&sd_driver);
524}
525static void __exit sd_mod_exit(void)
526{
527 usb_deregister(&sd_driver);
528}
529
530module_init(sd_mod_init);
531module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/mr97310a.c b/drivers/media/video/gspca/mr97310a.c
index 473e813b680..d73e5bd3dbf 100644
--- a/drivers/media/video/gspca/mr97310a.c
+++ b/drivers/media/video/gspca/mr97310a.c
@@ -1259,15 +1259,4 @@ static struct usb_driver sd_driver = {
1259#endif 1259#endif
1260}; 1260};
1261 1261
1262/* -- module insert / remove -- */ 1262module_usb_driver(sd_driver);
1263static int __init sd_mod_init(void)
1264{
1265 return usb_register(&sd_driver);
1266}
1267static void __exit sd_mod_exit(void)
1268{
1269 usb_deregister(&sd_driver);
1270}
1271
1272module_init(sd_mod_init);
1273module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/nw80x.c b/drivers/media/video/gspca/nw80x.c
index 7681814e594..d4bec932177 100644
--- a/drivers/media/video/gspca/nw80x.c
+++ b/drivers/media/video/gspca/nw80x.c
@@ -2118,18 +2118,7 @@ static struct usb_driver sd_driver = {
2118#endif 2118#endif
2119}; 2119};
2120 2120
2121/* -- module insert / remove -- */ 2121module_usb_driver(sd_driver);
2122static int __init sd_mod_init(void)
2123{
2124 return usb_register(&sd_driver);
2125}
2126static void __exit sd_mod_exit(void)
2127{
2128 usb_deregister(&sd_driver);
2129}
2130
2131module_init(sd_mod_init);
2132module_exit(sd_mod_exit);
2133 2122
2134module_param(webcam, int, 0644); 2123module_param(webcam, int, 0644);
2135MODULE_PARM_DESC(webcam, 2124MODULE_PARM_DESC(webcam,
diff --git a/drivers/media/video/gspca/ov519.c b/drivers/media/video/gspca/ov519.c
index 6a01b35a947..08b8ce1dee1 100644
--- a/drivers/media/video/gspca/ov519.c
+++ b/drivers/media/video/gspca/ov519.c
@@ -5056,18 +5056,7 @@ static struct usb_driver sd_driver = {
5056#endif 5056#endif
5057}; 5057};
5058 5058
5059/* -- module insert / remove -- */ 5059module_usb_driver(sd_driver);
5060static int __init sd_mod_init(void)
5061{
5062 return usb_register(&sd_driver);
5063}
5064static void __exit sd_mod_exit(void)
5065{
5066 usb_deregister(&sd_driver);
5067}
5068
5069module_init(sd_mod_init);
5070module_exit(sd_mod_exit);
5071 5060
5072module_param(frame_rate, int, 0644); 5061module_param(frame_rate, int, 0644);
5073MODULE_PARM_DESC(frame_rate, "Frame rate (5, 10, 15, 20 or 30 fps)"); 5062MODULE_PARM_DESC(frame_rate, "Frame rate (5, 10, 15, 20 or 30 fps)");
diff --git a/drivers/media/video/gspca/ov534.c b/drivers/media/video/gspca/ov534.c
index 76907eced4a..04753391de3 100644
--- a/drivers/media/video/gspca/ov534.c
+++ b/drivers/media/video/gspca/ov534.c
@@ -1533,16 +1533,4 @@ static struct usb_driver sd_driver = {
1533#endif 1533#endif
1534}; 1534};
1535 1535
1536/* -- module insert / remove -- */ 1536module_usb_driver(sd_driver);
1537static int __init sd_mod_init(void)
1538{
1539 return usb_register(&sd_driver);
1540}
1541
1542static void __exit sd_mod_exit(void)
1543{
1544 usb_deregister(&sd_driver);
1545}
1546
1547module_init(sd_mod_init);
1548module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/ov534_9.c b/drivers/media/video/gspca/ov534_9.c
index b3b1ea60a84..f30060d5063 100644
--- a/drivers/media/video/gspca/ov534_9.c
+++ b/drivers/media/video/gspca/ov534_9.c
@@ -1432,16 +1432,4 @@ static struct usb_driver sd_driver = {
1432#endif 1432#endif
1433}; 1433};
1434 1434
1435/* -- module insert / remove -- */ 1435module_usb_driver(sd_driver);
1436static int __init sd_mod_init(void)
1437{
1438 return usb_register(&sd_driver);
1439}
1440
1441static void __exit sd_mod_exit(void)
1442{
1443 usb_deregister(&sd_driver);
1444}
1445
1446module_init(sd_mod_init);
1447module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/pac207.c b/drivers/media/video/gspca/pac207.c
index 1600df152fd..ece8b1e82a1 100644
--- a/drivers/media/video/gspca/pac207.c
+++ b/drivers/media/video/gspca/pac207.c
@@ -569,15 +569,4 @@ static struct usb_driver sd_driver = {
569#endif 569#endif
570}; 570};
571 571
572/* -- module insert / remove -- */ 572module_usb_driver(sd_driver);
573static int __init sd_mod_init(void)
574{
575 return usb_register(&sd_driver);
576}
577static void __exit sd_mod_exit(void)
578{
579 usb_deregister(&sd_driver);
580}
581
582module_init(sd_mod_init);
583module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/pac7302.c b/drivers/media/video/gspca/pac7302.c
index 1c44f78ff9e..2811195258c 100644
--- a/drivers/media/video/gspca/pac7302.c
+++ b/drivers/media/video/gspca/pac7302.c
@@ -1220,15 +1220,4 @@ static struct usb_driver sd_driver = {
1220#endif 1220#endif
1221}; 1221};
1222 1222
1223/* -- module insert / remove -- */ 1223module_usb_driver(sd_driver);
1224static int __init sd_mod_init(void)
1225{
1226 return usb_register(&sd_driver);
1227}
1228static void __exit sd_mod_exit(void)
1229{
1230 usb_deregister(&sd_driver);
1231}
1232
1233module_init(sd_mod_init);
1234module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/pac7311.c b/drivers/media/video/gspca/pac7311.c
index 7509d05dc06..1ac111176ff 100644
--- a/drivers/media/video/gspca/pac7311.c
+++ b/drivers/media/video/gspca/pac7311.c
@@ -868,15 +868,4 @@ static struct usb_driver sd_driver = {
868#endif 868#endif
869}; 869};
870 870
871/* -- module insert / remove -- */ 871module_usb_driver(sd_driver);
872static int __init sd_mod_init(void)
873{
874 return usb_register(&sd_driver);
875}
876static void __exit sd_mod_exit(void)
877{
878 usb_deregister(&sd_driver);
879}
880
881module_init(sd_mod_init);
882module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/se401.c b/drivers/media/video/gspca/se401.c
index 3b71bbcd977..1494e1829d3 100644
--- a/drivers/media/video/gspca/se401.c
+++ b/drivers/media/video/gspca/se401.c
@@ -766,15 +766,4 @@ static struct usb_driver sd_driver = {
766 .post_reset = sd_post_reset, 766 .post_reset = sd_post_reset,
767}; 767};
768 768
769/* -- module insert / remove -- */ 769module_usb_driver(sd_driver);
770static int __init sd_mod_init(void)
771{
772 return usb_register(&sd_driver);
773}
774static void __exit sd_mod_exit(void)
775{
776 usb_deregister(&sd_driver);
777}
778
779module_init(sd_mod_init);
780module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/sn9c2028.c b/drivers/media/video/gspca/sn9c2028.c
index 48aae3926a3..478533cb115 100644
--- a/drivers/media/video/gspca/sn9c2028.c
+++ b/drivers/media/video/gspca/sn9c2028.c
@@ -737,16 +737,4 @@ static struct usb_driver sd_driver = {
737#endif 737#endif
738}; 738};
739 739
740/* -- module insert / remove -- */ 740module_usb_driver(sd_driver);
741static int __init sd_mod_init(void)
742{
743 return usb_register(&sd_driver);
744}
745
746static void __exit sd_mod_exit(void)
747{
748 usb_deregister(&sd_driver);
749}
750
751module_init(sd_mod_init);
752module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/sn9c20x.c b/drivers/media/video/gspca/sn9c20x.c
index 86e07a139a1..33cabc342dc 100644
--- a/drivers/media/video/gspca/sn9c20x.c
+++ b/drivers/media/video/gspca/sn9c20x.c
@@ -2554,15 +2554,4 @@ static struct usb_driver sd_driver = {
2554#endif 2554#endif
2555}; 2555};
2556 2556
2557/* -- module insert / remove -- */ 2557module_usb_driver(sd_driver);
2558static int __init sd_mod_init(void)
2559{
2560 return usb_register(&sd_driver);
2561}
2562static void __exit sd_mod_exit(void)
2563{
2564 usb_deregister(&sd_driver);
2565}
2566
2567module_init(sd_mod_init);
2568module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/sonixb.c b/drivers/media/video/gspca/sonixb.c
index 146b459b08d..ddb392dc4f2 100644
--- a/drivers/media/video/gspca/sonixb.c
+++ b/drivers/media/video/gspca/sonixb.c
@@ -1527,15 +1527,4 @@ static struct usb_driver sd_driver = {
1527#endif 1527#endif
1528}; 1528};
1529 1529
1530/* -- module insert / remove -- */ 1530module_usb_driver(sd_driver);
1531static int __init sd_mod_init(void)
1532{
1533 return usb_register(&sd_driver);
1534}
1535static void __exit sd_mod_exit(void)
1536{
1537 usb_deregister(&sd_driver);
1538}
1539
1540module_init(sd_mod_init);
1541module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/sonixj.c b/drivers/media/video/gspca/sonixj.c
index c746bf19ca1..afa3186b803 100644
--- a/drivers/media/video/gspca/sonixj.c
+++ b/drivers/media/video/gspca/sonixj.c
@@ -3104,15 +3104,4 @@ static struct usb_driver sd_driver = {
3104#endif 3104#endif
3105}; 3105};
3106 3106
3107/* -- module insert / remove -- */ 3107module_usb_driver(sd_driver);
3108static int __init sd_mod_init(void)
3109{
3110 return usb_register(&sd_driver);
3111}
3112static void __exit sd_mod_exit(void)
3113{
3114 usb_deregister(&sd_driver);
3115}
3116
3117module_init(sd_mod_init);
3118module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/spca1528.c b/drivers/media/video/gspca/spca1528.c
index 695673106e7..070b9c33b51 100644
--- a/drivers/media/video/gspca/spca1528.c
+++ b/drivers/media/video/gspca/spca1528.c
@@ -590,15 +590,4 @@ static struct usb_driver sd_driver = {
590#endif 590#endif
591}; 591};
592 592
593/* -- module insert / remove -- */ 593module_usb_driver(sd_driver);
594static int __init sd_mod_init(void)
595{
596 return usb_register(&sd_driver);
597}
598static void __exit sd_mod_exit(void)
599{
600 usb_deregister(&sd_driver);
601}
602
603module_init(sd_mod_init);
604module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/spca500.c b/drivers/media/video/gspca/spca500.c
index bb82c94ece1..103984708c7 100644
--- a/drivers/media/video/gspca/spca500.c
+++ b/drivers/media/video/gspca/spca500.c
@@ -1092,15 +1092,4 @@ static struct usb_driver sd_driver = {
1092#endif 1092#endif
1093}; 1093};
1094 1094
1095/* -- module insert / remove -- */ 1095module_usb_driver(sd_driver);
1096static int __init sd_mod_init(void)
1097{
1098 return usb_register(&sd_driver);
1099}
1100static void __exit sd_mod_exit(void)
1101{
1102 usb_deregister(&sd_driver);
1103}
1104
1105module_init(sd_mod_init);
1106module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/spca501.c b/drivers/media/video/gspca/spca501.c
index 7aaac72aee9..9c16821addd 100644
--- a/drivers/media/video/gspca/spca501.c
+++ b/drivers/media/video/gspca/spca501.c
@@ -2188,15 +2188,4 @@ static struct usb_driver sd_driver = {
2188#endif 2188#endif
2189}; 2189};
2190 2190
2191/* -- module insert / remove -- */ 2191module_usb_driver(sd_driver);
2192static int __init sd_mod_init(void)
2193{
2194 return usb_register(&sd_driver);
2195}
2196static void __exit sd_mod_exit(void)
2197{
2198 usb_deregister(&sd_driver);
2199}
2200
2201module_init(sd_mod_init);
2202module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/spca505.c b/drivers/media/video/gspca/spca505.c
index 16722dc6039..1320f35e39f 100644
--- a/drivers/media/video/gspca/spca505.c
+++ b/drivers/media/video/gspca/spca505.c
@@ -815,15 +815,4 @@ static struct usb_driver sd_driver = {
815#endif 815#endif
816}; 816};
817 817
818/* -- module insert / remove -- */ 818module_usb_driver(sd_driver);
819static int __init sd_mod_init(void)
820{
821 return usb_register(&sd_driver);
822}
823static void __exit sd_mod_exit(void)
824{
825 usb_deregister(&sd_driver);
826}
827
828module_init(sd_mod_init);
829module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/spca506.c b/drivers/media/video/gspca/spca506.c
index 89fec4c500a..54eed87672d 100644
--- a/drivers/media/video/gspca/spca506.c
+++ b/drivers/media/video/gspca/spca506.c
@@ -714,21 +714,4 @@ static struct usb_driver sd_driver = {
714#endif 714#endif
715}; 715};
716 716
717/* -- module insert / remove -- */ 717module_usb_driver(sd_driver);
718static int __init sd_mod_init(void)
719{
720 int ret;
721 ret = usb_register(&sd_driver);
722 if (ret < 0)
723 return ret;
724 PDEBUG(D_PROBE, "registered");
725 return 0;
726}
727static void __exit sd_mod_exit(void)
728{
729 usb_deregister(&sd_driver);
730 PDEBUG(D_PROBE, "deregistered");
731}
732
733module_init(sd_mod_init);
734module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/spca508.c b/drivers/media/video/gspca/spca508.c
index a44fe3d2596..df4e1699646 100644
--- a/drivers/media/video/gspca/spca508.c
+++ b/drivers/media/video/gspca/spca508.c
@@ -1544,15 +1544,4 @@ static struct usb_driver sd_driver = {
1544#endif 1544#endif
1545}; 1545};
1546 1546
1547/* -- module insert / remove -- */ 1547module_usb_driver(sd_driver);
1548static int __init sd_mod_init(void)
1549{
1550 return usb_register(&sd_driver);
1551}
1552static void __exit sd_mod_exit(void)
1553{
1554 usb_deregister(&sd_driver);
1555}
1556
1557module_init(sd_mod_init);
1558module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/spca561.c b/drivers/media/video/gspca/spca561.c
index c82fd53cef9..259a0c73c66 100644
--- a/drivers/media/video/gspca/spca561.c
+++ b/drivers/media/video/gspca/spca561.c
@@ -1106,15 +1106,4 @@ static struct usb_driver sd_driver = {
1106#endif 1106#endif
1107}; 1107};
1108 1108
1109/* -- module insert / remove -- */ 1109module_usb_driver(sd_driver);
1110static int __init sd_mod_init(void)
1111{
1112 return usb_register(&sd_driver);
1113}
1114static void __exit sd_mod_exit(void)
1115{
1116 usb_deregister(&sd_driver);
1117}
1118
1119module_init(sd_mod_init);
1120module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/sq905.c b/drivers/media/video/gspca/sq905.c
index df805f79828..2fe3c29bd6b 100644
--- a/drivers/media/video/gspca/sq905.c
+++ b/drivers/media/video/gspca/sq905.c
@@ -432,16 +432,4 @@ static struct usb_driver sd_driver = {
432#endif 432#endif
433}; 433};
434 434
435/* -- module insert / remove -- */ 435module_usb_driver(sd_driver);
436static int __init sd_mod_init(void)
437{
438 return usb_register(&sd_driver);
439}
440
441static void __exit sd_mod_exit(void)
442{
443 usb_deregister(&sd_driver);
444}
445
446module_init(sd_mod_init);
447module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/sq905c.c b/drivers/media/video/gspca/sq905c.c
index c2c056056e0..ae783634712 100644
--- a/drivers/media/video/gspca/sq905c.c
+++ b/drivers/media/video/gspca/sq905c.c
@@ -339,16 +339,4 @@ static struct usb_driver sd_driver = {
339#endif 339#endif
340}; 340};
341 341
342/* -- module insert / remove -- */ 342module_usb_driver(sd_driver);
343static int __init sd_mod_init(void)
344{
345 return usb_register(&sd_driver);
346}
347
348static void __exit sd_mod_exit(void)
349{
350 usb_deregister(&sd_driver);
351}
352
353module_init(sd_mod_init);
354module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/sq930x.c b/drivers/media/video/gspca/sq930x.c
index e4255b4905e..1a8ba9b3550 100644
--- a/drivers/media/video/gspca/sq930x.c
+++ b/drivers/media/video/gspca/sq930x.c
@@ -1197,15 +1197,4 @@ static struct usb_driver sd_driver = {
1197#endif 1197#endif
1198}; 1198};
1199 1199
1200/* -- module insert / remove -- */ 1200module_usb_driver(sd_driver);
1201static int __init sd_mod_init(void)
1202{
1203 return usb_register(&sd_driver);
1204}
1205static void __exit sd_mod_exit(void)
1206{
1207 usb_deregister(&sd_driver);
1208}
1209
1210module_init(sd_mod_init);
1211module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/stk014.c b/drivers/media/video/gspca/stk014.c
index 42a7a28a6c8..4ae7cc8f463 100644
--- a/drivers/media/video/gspca/stk014.c
+++ b/drivers/media/video/gspca/stk014.c
@@ -519,15 +519,4 @@ static struct usb_driver sd_driver = {
519#endif 519#endif
520}; 520};
521 521
522/* -- module insert / remove -- */ 522module_usb_driver(sd_driver);
523static int __init sd_mod_init(void)
524{
525 return usb_register(&sd_driver);
526}
527static void __exit sd_mod_exit(void)
528{
529 usb_deregister(&sd_driver);
530}
531
532module_init(sd_mod_init);
533module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/stv0680.c b/drivers/media/video/gspca/stv0680.c
index 4dcc7e37f9f..461ed645f30 100644
--- a/drivers/media/video/gspca/stv0680.c
+++ b/drivers/media/video/gspca/stv0680.c
@@ -355,15 +355,4 @@ static struct usb_driver sd_driver = {
355#endif 355#endif
356}; 356};
357 357
358/* -- module insert / remove -- */ 358module_usb_driver(sd_driver);
359static int __init sd_mod_init(void)
360{
361 return usb_register(&sd_driver);
362}
363static void __exit sd_mod_exit(void)
364{
365 usb_deregister(&sd_driver);
366}
367
368module_init(sd_mod_init);
369module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/stv06xx/stv06xx.c b/drivers/media/video/gspca/stv06xx/stv06xx.c
index b1fca7db101..6f878f6c6e9 100644
--- a/drivers/media/video/gspca/stv06xx/stv06xx.c
+++ b/drivers/media/video/gspca/stv06xx/stv06xx.c
@@ -36,8 +36,8 @@ MODULE_AUTHOR("Erik Andrén");
36MODULE_DESCRIPTION("STV06XX USB Camera Driver"); 36MODULE_DESCRIPTION("STV06XX USB Camera Driver");
37MODULE_LICENSE("GPL"); 37MODULE_LICENSE("GPL");
38 38
39static int dump_bridge; 39static bool dump_bridge;
40static int dump_sensor; 40static bool dump_sensor;
41 41
42int stv06xx_write_bridge(struct sd *sd, u16 address, u16 i2c_data) 42int stv06xx_write_bridge(struct sd *sd, u16 address, u16 i2c_data)
43{ 43{
@@ -612,18 +612,7 @@ static struct usb_driver sd_driver = {
612#endif 612#endif
613}; 613};
614 614
615/* -- module insert / remove -- */ 615module_usb_driver(sd_driver);
616static int __init sd_mod_init(void)
617{
618 return usb_register(&sd_driver);
619}
620static void __exit sd_mod_exit(void)
621{
622 usb_deregister(&sd_driver);
623}
624
625module_init(sd_mod_init);
626module_exit(sd_mod_exit);
627 616
628module_param(dump_bridge, bool, S_IRUGO | S_IWUSR); 617module_param(dump_bridge, bool, S_IRUGO | S_IWUSR);
629MODULE_PARM_DESC(dump_bridge, "Dumps all usb bridge registers at startup"); 618MODULE_PARM_DESC(dump_bridge, "Dumps all usb bridge registers at startup");
diff --git a/drivers/media/video/gspca/sunplus.c b/drivers/media/video/gspca/sunplus.c
index c8909772435..c80f0c0c75b 100644
--- a/drivers/media/video/gspca/sunplus.c
+++ b/drivers/media/video/gspca/sunplus.c
@@ -1211,15 +1211,4 @@ static struct usb_driver sd_driver = {
1211#endif 1211#endif
1212}; 1212};
1213 1213
1214/* -- module insert / remove -- */ 1214module_usb_driver(sd_driver);
1215static int __init sd_mod_init(void)
1216{
1217 return usb_register(&sd_driver);
1218}
1219static void __exit sd_mod_exit(void)
1220{
1221 usb_deregister(&sd_driver);
1222}
1223
1224module_init(sd_mod_init);
1225module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/t613.c b/drivers/media/video/gspca/t613.c
index 90f0877eb59..ea44deb66af 100644
--- a/drivers/media/video/gspca/t613.c
+++ b/drivers/media/video/gspca/t613.c
@@ -1438,15 +1438,4 @@ static struct usb_driver sd_driver = {
1438#endif 1438#endif
1439}; 1439};
1440 1440
1441/* -- module insert / remove -- */ 1441module_usb_driver(sd_driver);
1442static int __init sd_mod_init(void)
1443{
1444 return usb_register(&sd_driver);
1445}
1446static void __exit sd_mod_exit(void)
1447{
1448 usb_deregister(&sd_driver);
1449}
1450
1451module_init(sd_mod_init);
1452module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/topro.c b/drivers/media/video/gspca/topro.c
index 29596c59837..b2695b1dc60 100644
--- a/drivers/media/video/gspca/topro.c
+++ b/drivers/media/video/gspca/topro.c
@@ -4971,18 +4971,7 @@ static struct usb_driver sd_driver = {
4971#endif 4971#endif
4972}; 4972};
4973 4973
4974/* -- module insert / remove -- */ 4974module_usb_driver(sd_driver);
4975static int __init sd_mod_init(void)
4976{
4977 return usb_register(&sd_driver);
4978}
4979static void __exit sd_mod_exit(void)
4980{
4981 usb_deregister(&sd_driver);
4982}
4983
4984module_init(sd_mod_init);
4985module_exit(sd_mod_exit);
4986 4975
4987module_param(force_sensor, int, 0644); 4976module_param(force_sensor, int, 0644);
4988MODULE_PARM_DESC(force_sensor, 4977MODULE_PARM_DESC(force_sensor,
diff --git a/drivers/media/video/gspca/tv8532.c b/drivers/media/video/gspca/tv8532.c
index 933ef2ca658..c8922c5ffbf 100644
--- a/drivers/media/video/gspca/tv8532.c
+++ b/drivers/media/video/gspca/tv8532.c
@@ -418,16 +418,4 @@ static struct usb_driver sd_driver = {
418#endif 418#endif
419}; 419};
420 420
421/* -- module insert / remove -- */ 421module_usb_driver(sd_driver);
422static int __init sd_mod_init(void)
423{
424 return usb_register(&sd_driver);
425}
426
427static void __exit sd_mod_exit(void)
428{
429 usb_deregister(&sd_driver);
430}
431
432module_init(sd_mod_init);
433module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/vc032x.c b/drivers/media/video/gspca/vc032x.c
index 7ee2c8271dc..208f6b2d512 100644
--- a/drivers/media/video/gspca/vc032x.c
+++ b/drivers/media/video/gspca/vc032x.c
@@ -4230,15 +4230,4 @@ static struct usb_driver sd_driver = {
4230#endif 4230#endif
4231}; 4231};
4232 4232
4233/* -- module insert / remove -- */ 4233module_usb_driver(sd_driver);
4234static int __init sd_mod_init(void)
4235{
4236 return usb_register(&sd_driver);
4237}
4238static void __exit sd_mod_exit(void)
4239{
4240 usb_deregister(&sd_driver);
4241}
4242
4243module_init(sd_mod_init);
4244module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/vicam.c b/drivers/media/video/gspca/vicam.c
index 81dd4c99d02..d12ea1518ac 100644
--- a/drivers/media/video/gspca/vicam.c
+++ b/drivers/media/video/gspca/vicam.c
@@ -368,16 +368,4 @@ static struct usb_driver sd_driver = {
368#endif 368#endif
369}; 369};
370 370
371/* -- module insert / remove -- */ 371module_usb_driver(sd_driver);
372static int __init sd_mod_init(void)
373{
374 return usb_register(&sd_driver);
375}
376
377static void __exit sd_mod_exit(void)
378{
379 usb_deregister(&sd_driver);
380}
381
382module_init(sd_mod_init);
383module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/xirlink_cit.c b/drivers/media/video/gspca/xirlink_cit.c
index 3aed42acdb5..fbb6ed25ec3 100644
--- a/drivers/media/video/gspca/xirlink_cit.c
+++ b/drivers/media/video/gspca/xirlink_cit.c
@@ -3325,15 +3325,4 @@ static struct usb_driver sd_driver = {
3325#endif 3325#endif
3326}; 3326};
3327 3327
3328/* -- module insert / remove -- */ 3328module_usb_driver(sd_driver);
3329static int __init sd_mod_init(void)
3330{
3331 return usb_register(&sd_driver);
3332}
3333static void __exit sd_mod_exit(void)
3334{
3335 usb_deregister(&sd_driver);
3336}
3337
3338module_init(sd_mod_init);
3339module_exit(sd_mod_exit);
diff --git a/drivers/media/video/gspca/zc3xx.c b/drivers/media/video/gspca/zc3xx.c
index 30ea1e47949..0202fead6b9 100644
--- a/drivers/media/video/gspca/zc3xx.c
+++ b/drivers/media/video/gspca/zc3xx.c
@@ -7050,18 +7050,7 @@ static struct usb_driver sd_driver = {
7050#endif 7050#endif
7051}; 7051};
7052 7052
7053static int __init sd_mod_init(void) 7053module_usb_driver(sd_driver);
7054{
7055 return usb_register(&sd_driver);
7056}
7057
7058static void __exit sd_mod_exit(void)
7059{
7060 usb_deregister(&sd_driver);
7061}
7062
7063module_init(sd_mod_init);
7064module_exit(sd_mod_exit);
7065 7054
7066module_param(force_sensor, int, 0644); 7055module_param(force_sensor, int, 0644);
7067MODULE_PARM_DESC(force_sensor, 7056MODULE_PARM_DESC(force_sensor,
diff --git a/drivers/media/video/hdpvr/hdpvr-core.c b/drivers/media/video/hdpvr/hdpvr-core.c
index 441dacf642b..e5eb56a5b61 100644
--- a/drivers/media/video/hdpvr/hdpvr-core.c
+++ b/drivers/media/video/hdpvr/hdpvr-core.c
@@ -49,7 +49,7 @@ module_param(default_audio_input, uint, S_IRUGO|S_IWUSR);
49MODULE_PARM_DESC(default_audio_input, "default audio input: 0=RCA back / " 49MODULE_PARM_DESC(default_audio_input, "default audio input: 0=RCA back / "
50 "1=RCA front / 2=S/PDIF"); 50 "1=RCA front / 2=S/PDIF");
51 51
52static int boost_audio; 52static bool boost_audio;
53module_param(boost_audio, bool, S_IRUGO|S_IWUSR); 53module_param(boost_audio, bool, S_IRUGO|S_IWUSR);
54MODULE_PARM_DESC(boost_audio, "boost the audio signal"); 54MODULE_PARM_DESC(boost_audio, "boost the audio signal");
55 55
@@ -452,26 +452,7 @@ static struct usb_driver hdpvr_usb_driver = {
452 .id_table = hdpvr_table, 452 .id_table = hdpvr_table,
453}; 453};
454 454
455static int __init hdpvr_init(void) 455module_usb_driver(hdpvr_usb_driver);
456{
457 int result;
458
459 /* register this driver with the USB subsystem */
460 result = usb_register(&hdpvr_usb_driver);
461 if (result)
462 err("usb_register failed. Error number %d", result);
463
464 return result;
465}
466
467static void __exit hdpvr_exit(void)
468{
469 /* deregister this driver with the USB subsystem */
470 usb_deregister(&hdpvr_usb_driver);
471}
472
473module_init(hdpvr_init);
474module_exit(hdpvr_exit);
475 456
476MODULE_LICENSE("GPL"); 457MODULE_LICENSE("GPL");
477MODULE_VERSION("0.2.1"); 458MODULE_VERSION("0.2.1");
diff --git a/drivers/media/video/ivtv/ivtv-driver.c b/drivers/media/video/ivtv/ivtv-driver.c
index 41108a9a195..544af91cbdc 100644
--- a/drivers/media/video/ivtv/ivtv-driver.c
+++ b/drivers/media/video/ivtv/ivtv-driver.c
@@ -99,7 +99,7 @@ static int i2c_clock_period[IVTV_MAX_CARDS] = { -1, -1, -1, -1, -1, -1, -1, -1,
99 99
100static unsigned int cardtype_c = 1; 100static unsigned int cardtype_c = 1;
101static unsigned int tuner_c = 1; 101static unsigned int tuner_c = 1;
102static unsigned int radio_c = 1; 102static bool radio_c = 1;
103static unsigned int i2c_clock_period_c = 1; 103static unsigned int i2c_clock_period_c = 1;
104static char pal[] = "---"; 104static char pal[] = "---";
105static char secam[] = "--"; 105static char secam[] = "--";
diff --git a/drivers/media/video/ivtv/ivtvfb.c b/drivers/media/video/ivtv/ivtvfb.c
index 6b7c9c82333..d0fbfcf7133 100644
--- a/drivers/media/video/ivtv/ivtvfb.c
+++ b/drivers/media/video/ivtv/ivtvfb.c
@@ -58,7 +58,7 @@
58/* card parameters */ 58/* card parameters */
59static int ivtvfb_card_id = -1; 59static int ivtvfb_card_id = -1;
60static int ivtvfb_debug = 0; 60static int ivtvfb_debug = 0;
61static int osd_laced; 61static bool osd_laced;
62static int osd_depth; 62static int osd_depth;
63static int osd_upper; 63static int osd_upper;
64static int osd_left; 64static int osd_left;
diff --git a/drivers/media/video/m5mols/m5mols.h b/drivers/media/video/m5mols/m5mols.h
index 89d09a8914f..82c8817bd32 100644
--- a/drivers/media/video/m5mols/m5mols.h
+++ b/drivers/media/video/m5mols/m5mols.h
@@ -162,7 +162,6 @@ struct m5mols_version {
162 * @pad: media pad 162 * @pad: media pad
163 * @ffmt: current fmt according to resolution type 163 * @ffmt: current fmt according to resolution type
164 * @res_type: current resolution type 164 * @res_type: current resolution type
165 * @code: current code
166 * @irq_waitq: waitqueue for the capture 165 * @irq_waitq: waitqueue for the capture
167 * @work_irq: workqueue for the IRQ 166 * @work_irq: workqueue for the IRQ
168 * @flags: state variable for the interrupt handler 167 * @flags: state variable for the interrupt handler
@@ -192,7 +191,6 @@ struct m5mols_info {
192 struct media_pad pad; 191 struct media_pad pad;
193 struct v4l2_mbus_framefmt ffmt[M5MOLS_RESTYPE_MAX]; 192 struct v4l2_mbus_framefmt ffmt[M5MOLS_RESTYPE_MAX];
194 int res_type; 193 int res_type;
195 enum v4l2_mbus_pixelcode code;
196 wait_queue_head_t irq_waitq; 194 wait_queue_head_t irq_waitq;
197 struct work_struct work_irq; 195 struct work_struct work_irq;
198 unsigned long flags; 196 unsigned long flags;
diff --git a/drivers/media/video/m5mols/m5mols_core.c b/drivers/media/video/m5mols/m5mols_core.c
index 05ab3700647..e0f09e53180 100644
--- a/drivers/media/video/m5mols/m5mols_core.c
+++ b/drivers/media/video/m5mols/m5mols_core.c
@@ -334,7 +334,7 @@ int m5mols_mode(struct m5mols_info *info, u8 mode)
334 int ret = -EINVAL; 334 int ret = -EINVAL;
335 u8 reg; 335 u8 reg;
336 336
337 if (mode < REG_PARAMETER && mode > REG_CAPTURE) 337 if (mode < REG_PARAMETER || mode > REG_CAPTURE)
338 return ret; 338 return ret;
339 339
340 ret = m5mols_read_u8(sd, SYSTEM_SYSMODE, &reg); 340 ret = m5mols_read_u8(sd, SYSTEM_SYSMODE, &reg);
@@ -511,9 +511,6 @@ static int m5mols_get_fmt(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh,
511 struct m5mols_info *info = to_m5mols(sd); 511 struct m5mols_info *info = to_m5mols(sd);
512 struct v4l2_mbus_framefmt *format; 512 struct v4l2_mbus_framefmt *format;
513 513
514 if (fmt->pad != 0)
515 return -EINVAL;
516
517 format = __find_format(info, fh, fmt->which, info->res_type); 514 format = __find_format(info, fh, fmt->which, info->res_type);
518 if (!format) 515 if (!format)
519 return -EINVAL; 516 return -EINVAL;
@@ -532,9 +529,6 @@ static int m5mols_set_fmt(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh,
532 u32 resolution = 0; 529 u32 resolution = 0;
533 int ret; 530 int ret;
534 531
535 if (fmt->pad != 0)
536 return -EINVAL;
537
538 ret = __find_resolution(sd, format, &type, &resolution); 532 ret = __find_resolution(sd, format, &type, &resolution);
539 if (ret < 0) 533 if (ret < 0)
540 return ret; 534 return ret;
@@ -543,13 +537,14 @@ static int m5mols_set_fmt(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh,
543 if (!sfmt) 537 if (!sfmt)
544 return 0; 538 return 0;
545 539
546 *sfmt = m5mols_default_ffmt[type]; 540
547 sfmt->width = format->width; 541 format->code = m5mols_default_ffmt[type].code;
548 sfmt->height = format->height; 542 format->colorspace = V4L2_COLORSPACE_JPEG;
543 format->field = V4L2_FIELD_NONE;
549 544
550 if (fmt->which == V4L2_SUBDEV_FORMAT_ACTIVE) { 545 if (fmt->which == V4L2_SUBDEV_FORMAT_ACTIVE) {
546 *sfmt = *format;
551 info->resolution = resolution; 547 info->resolution = resolution;
552 info->code = format->code;
553 info->res_type = type; 548 info->res_type = type;
554 } 549 }
555 550
@@ -626,13 +621,14 @@ static int m5mols_start_monitor(struct m5mols_info *info)
626static int m5mols_s_stream(struct v4l2_subdev *sd, int enable) 621static int m5mols_s_stream(struct v4l2_subdev *sd, int enable)
627{ 622{
628 struct m5mols_info *info = to_m5mols(sd); 623 struct m5mols_info *info = to_m5mols(sd);
624 u32 code = info->ffmt[info->res_type].code;
629 625
630 if (enable) { 626 if (enable) {
631 int ret = -EINVAL; 627 int ret = -EINVAL;
632 628
633 if (is_code(info->code, M5MOLS_RESTYPE_MONITOR)) 629 if (is_code(code, M5MOLS_RESTYPE_MONITOR))
634 ret = m5mols_start_monitor(info); 630 ret = m5mols_start_monitor(info);
635 if (is_code(info->code, M5MOLS_RESTYPE_CAPTURE)) 631 if (is_code(code, M5MOLS_RESTYPE_CAPTURE))
636 ret = m5mols_start_capture(info); 632 ret = m5mols_start_capture(info);
637 633
638 return ret; 634 return ret;
diff --git a/drivers/media/video/marvell-ccic/mcam-core.c b/drivers/media/video/marvell-ccic/mcam-core.c
index 80ec64d2d6d..2c8fc0f6d69 100644
--- a/drivers/media/video/marvell-ccic/mcam-core.c
+++ b/drivers/media/video/marvell-ccic/mcam-core.c
@@ -51,7 +51,7 @@ static int delivered;
51 * sense. 51 * sense.
52 */ 52 */
53 53
54static int alloc_bufs_at_read; 54static bool alloc_bufs_at_read;
55module_param(alloc_bufs_at_read, bool, 0444); 55module_param(alloc_bufs_at_read, bool, 0444);
56MODULE_PARM_DESC(alloc_bufs_at_read, 56MODULE_PARM_DESC(alloc_bufs_at_read,
57 "Non-zero value causes DMA buffers to be allocated when the " 57 "Non-zero value causes DMA buffers to be allocated when the "
@@ -73,11 +73,11 @@ MODULE_PARM_DESC(dma_buf_size,
73 "parameters require larger buffers, an attempt to reallocate " 73 "parameters require larger buffers, an attempt to reallocate "
74 "will be made."); 74 "will be made.");
75#else /* MCAM_MODE_VMALLOC */ 75#else /* MCAM_MODE_VMALLOC */
76static const int alloc_bufs_at_read = 0; 76static const bool alloc_bufs_at_read = 0;
77static const int n_dma_bufs = 3; /* Used by S/G_PARM */ 77static const int n_dma_bufs = 3; /* Used by S/G_PARM */
78#endif /* MCAM_MODE_VMALLOC */ 78#endif /* MCAM_MODE_VMALLOC */
79 79
80static int flip; 80static bool flip;
81module_param(flip, bool, 0444); 81module_param(flip, bool, 0444);
82MODULE_PARM_DESC(flip, 82MODULE_PARM_DESC(flip,
83 "If set, the sensor will be instructed to flip the image " 83 "If set, the sensor will be instructed to flip the image "
diff --git a/drivers/media/video/msp3400-driver.c b/drivers/media/video/msp3400-driver.c
index d0f53885728..d7cd0f633f6 100644
--- a/drivers/media/video/msp3400-driver.c
+++ b/drivers/media/video/msp3400-driver.c
@@ -69,12 +69,12 @@ MODULE_LICENSE("GPL");
69/* module parameters */ 69/* module parameters */
70static int opmode = OPMODE_AUTO; 70static int opmode = OPMODE_AUTO;
71int msp_debug; /* msp_debug output */ 71int msp_debug; /* msp_debug output */
72int msp_once; /* no continuous stereo monitoring */ 72bool msp_once; /* no continuous stereo monitoring */
73int msp_amsound; /* hard-wire AM sound at 6.5 Hz (france), 73bool msp_amsound; /* hard-wire AM sound at 6.5 Hz (france),
74 the autoscan seems work well only with FM... */ 74 the autoscan seems work well only with FM... */
75int msp_standard = 1; /* Override auto detect of audio msp_standard, 75int msp_standard = 1; /* Override auto detect of audio msp_standard,
76 if needed. */ 76 if needed. */
77int msp_dolby; 77bool msp_dolby;
78 78
79int msp_stereo_thresh = 0x190; /* a2 threshold for stereo/bilingual 79int msp_stereo_thresh = 0x190; /* a2 threshold for stereo/bilingual
80 (msp34xxg only) 0x00a0-0x03c0 */ 80 (msp34xxg only) 0x00a0-0x03c0 */
diff --git a/drivers/media/video/msp3400-driver.h b/drivers/media/video/msp3400-driver.h
index 831e8db4368..fbe5e0715f9 100644
--- a/drivers/media/video/msp3400-driver.h
+++ b/drivers/media/video/msp3400-driver.h
@@ -44,10 +44,10 @@
44 44
45/* module parameters */ 45/* module parameters */
46extern int msp_debug; 46extern int msp_debug;
47extern int msp_once; 47extern bool msp_once;
48extern int msp_amsound; 48extern bool msp_amsound;
49extern int msp_standard; 49extern int msp_standard;
50extern int msp_dolby; 50extern bool msp_dolby;
51extern int msp_stereo_thresh; 51extern int msp_stereo_thresh;
52 52
53struct msp_state { 53struct msp_state {
diff --git a/drivers/media/video/mt9m111.c b/drivers/media/video/mt9m111.c
index cf2c0fb95f2..398f96ffd35 100644
--- a/drivers/media/video/mt9m111.c
+++ b/drivers/media/video/mt9m111.c
@@ -955,6 +955,7 @@ static int mt9m111_probe(struct i2c_client *client,
955 mt9m111->rect.height = MT9M111_MAX_HEIGHT; 955 mt9m111->rect.height = MT9M111_MAX_HEIGHT;
956 mt9m111->fmt = &mt9m111_colour_fmts[0]; 956 mt9m111->fmt = &mt9m111_colour_fmts[0];
957 mt9m111->lastpage = -1; 957 mt9m111->lastpage = -1;
958 mutex_init(&mt9m111->power_lock);
958 959
959 ret = mt9m111_video_probe(client); 960 ret = mt9m111_video_probe(client);
960 if (ret) { 961 if (ret) {
diff --git a/drivers/media/video/mt9t112.c b/drivers/media/video/mt9t112.c
index 32114a3c0ca..7b34b11daf2 100644
--- a/drivers/media/video/mt9t112.c
+++ b/drivers/media/video/mt9t112.c
@@ -1083,8 +1083,10 @@ static int mt9t112_probe(struct i2c_client *client,
1083 v4l2_i2c_subdev_init(&priv->subdev, client, &mt9t112_subdev_ops); 1083 v4l2_i2c_subdev_init(&priv->subdev, client, &mt9t112_subdev_ops);
1084 1084
1085 ret = mt9t112_camera_probe(client); 1085 ret = mt9t112_camera_probe(client);
1086 if (ret) 1086 if (ret) {
1087 kfree(priv); 1087 kfree(priv);
1088 return ret;
1089 }
1088 1090
1089 /* Cannot fail: using the default supported pixel code */ 1091 /* Cannot fail: using the default supported pixel code */
1090 mt9t112_set_params(priv, &rect, V4L2_MBUS_FMT_UYVY8_2X8); 1092 mt9t112_set_params(priv, &rect, V4L2_MBUS_FMT_UYVY8_2X8);
diff --git a/drivers/media/video/omap/omap_vout.c b/drivers/media/video/omap/omap_vout.c
index 9c5c19f142d..a378c2ce127 100644
--- a/drivers/media/video/omap/omap_vout.c
+++ b/drivers/media/video/omap/omap_vout.c
@@ -38,6 +38,7 @@
38#include <linux/irq.h> 38#include <linux/irq.h>
39#include <linux/videodev2.h> 39#include <linux/videodev2.h>
40#include <linux/dma-mapping.h> 40#include <linux/dma-mapping.h>
41#include <linux/slab.h>
41 42
42#include <media/videobuf-dma-contig.h> 43#include <media/videobuf-dma-contig.h>
43#include <media/v4l2-device.h> 44#include <media/v4l2-device.h>
@@ -69,9 +70,9 @@ static u32 video1_numbuffers = 3;
69static u32 video2_numbuffers = 3; 70static u32 video2_numbuffers = 3;
70static u32 video1_bufsize = OMAP_VOUT_MAX_BUF_SIZE; 71static u32 video1_bufsize = OMAP_VOUT_MAX_BUF_SIZE;
71static u32 video2_bufsize = OMAP_VOUT_MAX_BUF_SIZE; 72static u32 video2_bufsize = OMAP_VOUT_MAX_BUF_SIZE;
72static u32 vid1_static_vrfb_alloc; 73static bool vid1_static_vrfb_alloc;
73static u32 vid2_static_vrfb_alloc; 74static bool vid2_static_vrfb_alloc;
74static int debug; 75static bool debug;
75 76
76/* Module parameters */ 77/* Module parameters */
77module_param(video1_numbuffers, uint, S_IRUGO); 78module_param(video1_numbuffers, uint, S_IRUGO);
@@ -423,7 +424,7 @@ static int omapvid_setup_overlay(struct omap_vout_device *vout,
423 "%s enable=%d addr=%x width=%d\n height=%d color_mode=%d\n" 424 "%s enable=%d addr=%x width=%d\n height=%d color_mode=%d\n"
424 "rotation=%d mirror=%d posx=%d posy=%d out_width = %d \n" 425 "rotation=%d mirror=%d posx=%d posy=%d out_width = %d \n"
425 "out_height=%d rotation_type=%d screen_width=%d\n", 426 "out_height=%d rotation_type=%d screen_width=%d\n",
426 __func__, info.enabled, info.paddr, info.width, info.height, 427 __func__, ovl->is_enabled(ovl), info.paddr, info.width, info.height,
427 info.color_mode, info.rotation, info.mirror, info.pos_x, 428 info.color_mode, info.rotation, info.mirror, info.pos_x,
428 info.pos_y, info.out_width, info.out_height, info.rotation_type, 429 info.pos_y, info.out_width, info.out_height, info.rotation_type,
429 info.screen_width); 430 info.screen_width);
@@ -942,12 +943,8 @@ static int omap_vout_release(struct file *file)
942 /* Disable all the overlay managers connected with this interface */ 943 /* Disable all the overlay managers connected with this interface */
943 for (i = 0; i < ovid->num_overlays; i++) { 944 for (i = 0; i < ovid->num_overlays; i++) {
944 struct omap_overlay *ovl = ovid->overlays[i]; 945 struct omap_overlay *ovl = ovid->overlays[i];
945 if (ovl->manager && ovl->manager->device) { 946 if (ovl->manager && ovl->manager->device)
946 struct omap_overlay_info info; 947 ovl->disable(ovl);
947 ovl->get_overlay_info(ovl, &info);
948 info.enabled = 0;
949 ovl->set_overlay_info(ovl, &info);
950 }
951 } 948 }
952 /* Turn off the pipeline */ 949 /* Turn off the pipeline */
953 ret = omapvid_apply_changes(vout); 950 ret = omapvid_apply_changes(vout);
@@ -1667,7 +1664,6 @@ static int vidioc_streamon(struct file *file, void *fh, enum v4l2_buf_type i)
1667 if (ovl->manager && ovl->manager->device) { 1664 if (ovl->manager && ovl->manager->device) {
1668 struct omap_overlay_info info; 1665 struct omap_overlay_info info;
1669 ovl->get_overlay_info(ovl, &info); 1666 ovl->get_overlay_info(ovl, &info);
1670 info.enabled = 1;
1671 info.paddr = addr; 1667 info.paddr = addr;
1672 if (ovl->set_overlay_info(ovl, &info)) { 1668 if (ovl->set_overlay_info(ovl, &info)) {
1673 ret = -EINVAL; 1669 ret = -EINVAL;
@@ -1686,6 +1682,16 @@ static int vidioc_streamon(struct file *file, void *fh, enum v4l2_buf_type i)
1686 if (ret) 1682 if (ret)
1687 v4l2_err(&vout->vid_dev->v4l2_dev, "failed to change mode\n"); 1683 v4l2_err(&vout->vid_dev->v4l2_dev, "failed to change mode\n");
1688 1684
1685 for (j = 0; j < ovid->num_overlays; j++) {
1686 struct omap_overlay *ovl = ovid->overlays[j];
1687
1688 if (ovl->manager && ovl->manager->device) {
1689 ret = ovl->enable(ovl);
1690 if (ret)
1691 goto streamon_err1;
1692 }
1693 }
1694
1689 ret = 0; 1695 ret = 0;
1690 1696
1691streamon_err1: 1697streamon_err1:
@@ -1715,16 +1721,8 @@ static int vidioc_streamoff(struct file *file, void *fh, enum v4l2_buf_type i)
1715 for (j = 0; j < ovid->num_overlays; j++) { 1721 for (j = 0; j < ovid->num_overlays; j++) {
1716 struct omap_overlay *ovl = ovid->overlays[j]; 1722 struct omap_overlay *ovl = ovid->overlays[j];
1717 1723
1718 if (ovl->manager && ovl->manager->device) { 1724 if (ovl->manager && ovl->manager->device)
1719 struct omap_overlay_info info; 1725 ovl->disable(ovl);
1720
1721 ovl->get_overlay_info(ovl, &info);
1722 info.enabled = 0;
1723 ret = ovl->set_overlay_info(ovl, &info);
1724 if (ret)
1725 v4l2_err(&vout->vid_dev->v4l2_dev,
1726 "failed to update overlay info in streamoff\n");
1727 }
1728 } 1726 }
1729 1727
1730 /* Turn of the pipeline */ 1728 /* Turn of the pipeline */
@@ -2169,6 +2167,14 @@ static int __init omap_vout_probe(struct platform_device *pdev)
2169 vid_dev->num_displays = 0; 2167 vid_dev->num_displays = 0;
2170 for_each_dss_dev(dssdev) { 2168 for_each_dss_dev(dssdev) {
2171 omap_dss_get_device(dssdev); 2169 omap_dss_get_device(dssdev);
2170
2171 if (!dssdev->driver) {
2172 dev_warn(&pdev->dev, "no driver for display: %s\n",
2173 dssdev->name);
2174 omap_dss_put_device(dssdev);
2175 continue;
2176 }
2177
2172 vid_dev->displays[vid_dev->num_displays++] = dssdev; 2178 vid_dev->displays[vid_dev->num_displays++] = dssdev;
2173 } 2179 }
2174 2180
diff --git a/drivers/media/video/omap/omap_vout_vrfb.c b/drivers/media/video/omap/omap_vout_vrfb.c
index ebebcac4922..4be26abf6ce 100644
--- a/drivers/media/video/omap/omap_vout_vrfb.c
+++ b/drivers/media/video/omap/omap_vout_vrfb.c
@@ -84,7 +84,7 @@ void omap_vout_free_vrfb_buffers(struct omap_vout_device *vout)
84} 84}
85 85
86int omap_vout_setup_vrfb_bufs(struct platform_device *pdev, int vid_num, 86int omap_vout_setup_vrfb_bufs(struct platform_device *pdev, int vid_num,
87 u32 static_vrfb_allocation) 87 bool static_vrfb_allocation)
88{ 88{
89 int ret = 0, i, j; 89 int ret = 0, i, j;
90 struct omap_vout_device *vout; 90 struct omap_vout_device *vout;
diff --git a/drivers/media/video/omap1_camera.c b/drivers/media/video/omap1_camera.c
index e87ae2f634b..6a6cf388bae 100644
--- a/drivers/media/video/omap1_camera.c
+++ b/drivers/media/video/omap1_camera.c
@@ -24,6 +24,7 @@
24#include <linux/clk.h> 24#include <linux/clk.h>
25#include <linux/dma-mapping.h> 25#include <linux/dma-mapping.h>
26#include <linux/interrupt.h> 26#include <linux/interrupt.h>
27#include <linux/module.h>
27#include <linux/platform_device.h> 28#include <linux/platform_device.h>
28#include <linux/slab.h> 29#include <linux/slab.h>
29 30
diff --git a/drivers/media/video/omap24xxcam-dma.c b/drivers/media/video/omap24xxcam-dma.c
index 1d54b86c936..3ea38a8def8 100644
--- a/drivers/media/video/omap24xxcam-dma.c
+++ b/drivers/media/video/omap24xxcam-dma.c
@@ -506,7 +506,7 @@ int omap24xxcam_sgdma_queue(struct omap24xxcam_sgdma *sgdma,
506 unsigned long flags; 506 unsigned long flags;
507 struct sgdma_state *sg_state; 507 struct sgdma_state *sg_state;
508 508
509 if ((sglen < 0) || ((sglen > 0) & !sglist)) 509 if ((sglen < 0) || ((sglen > 0) && !sglist))
510 return -EINVAL; 510 return -EINVAL;
511 511
512 spin_lock_irqsave(&sgdma->lock, flags); 512 spin_lock_irqsave(&sgdma->lock, flags);
diff --git a/drivers/media/video/omap3isp/isp.c b/drivers/media/video/omap3isp/isp.c
index b818cacf420..d4c48ef227f 100644
--- a/drivers/media/video/omap3isp/isp.c
+++ b/drivers/media/video/omap3isp/isp.c
@@ -80,13 +80,6 @@
80#include "isph3a.h" 80#include "isph3a.h"
81#include "isphist.h" 81#include "isphist.h"
82 82
83/*
84 * this is provided as an interim solution until omap3isp doesn't need
85 * any omap-specific iommu API
86 */
87#define to_iommu(dev) \
88 (struct omap_iommu *)platform_get_drvdata(to_platform_device(dev))
89
90static unsigned int autoidle; 83static unsigned int autoidle;
91module_param(autoidle, int, 0444); 84module_param(autoidle, int, 0444);
92MODULE_PARM_DESC(autoidle, "Enable OMAP3ISP AUTOIDLE support"); 85MODULE_PARM_DESC(autoidle, "Enable OMAP3ISP AUTOIDLE support");
@@ -1114,8 +1107,7 @@ isp_restore_context(struct isp_device *isp, struct isp_reg *reg_list)
1114static void isp_save_ctx(struct isp_device *isp) 1107static void isp_save_ctx(struct isp_device *isp)
1115{ 1108{
1116 isp_save_context(isp, isp_reg_list); 1109 isp_save_context(isp, isp_reg_list);
1117 if (isp->iommu) 1110 omap_iommu_save_ctx(isp->dev);
1118 omap_iommu_save_ctx(isp->iommu);
1119} 1111}
1120 1112
1121/* 1113/*
@@ -1128,8 +1120,7 @@ static void isp_save_ctx(struct isp_device *isp)
1128static void isp_restore_ctx(struct isp_device *isp) 1120static void isp_restore_ctx(struct isp_device *isp)
1129{ 1121{
1130 isp_restore_context(isp, isp_reg_list); 1122 isp_restore_context(isp, isp_reg_list);
1131 if (isp->iommu) 1123 omap_iommu_restore_ctx(isp->dev);
1132 omap_iommu_restore_ctx(isp->iommu);
1133 omap3isp_ccdc_restore_context(isp); 1124 omap3isp_ccdc_restore_context(isp);
1134 omap3isp_preview_restore_context(isp); 1125 omap3isp_preview_restore_context(isp);
1135} 1126}
@@ -1983,7 +1974,7 @@ static int isp_remove(struct platform_device *pdev)
1983 isp_cleanup_modules(isp); 1974 isp_cleanup_modules(isp);
1984 1975
1985 omap3isp_get(isp); 1976 omap3isp_get(isp);
1986 iommu_detach_device(isp->domain, isp->iommu_dev); 1977 iommu_detach_device(isp->domain, &pdev->dev);
1987 iommu_domain_free(isp->domain); 1978 iommu_domain_free(isp->domain);
1988 omap3isp_put(isp); 1979 omap3isp_put(isp);
1989 1980
@@ -2131,17 +2122,6 @@ static int isp_probe(struct platform_device *pdev)
2131 } 2122 }
2132 } 2123 }
2133 2124
2134 /* IOMMU */
2135 isp->iommu_dev = omap_find_iommu_device("isp");
2136 if (!isp->iommu_dev) {
2137 dev_err(isp->dev, "omap_find_iommu_device failed\n");
2138 ret = -ENODEV;
2139 goto error_isp;
2140 }
2141
2142 /* to be removed once iommu migration is complete */
2143 isp->iommu = to_iommu(isp->iommu_dev);
2144
2145 isp->domain = iommu_domain_alloc(pdev->dev.bus); 2125 isp->domain = iommu_domain_alloc(pdev->dev.bus);
2146 if (!isp->domain) { 2126 if (!isp->domain) {
2147 dev_err(isp->dev, "can't alloc iommu domain\n"); 2127 dev_err(isp->dev, "can't alloc iommu domain\n");
@@ -2149,7 +2129,7 @@ static int isp_probe(struct platform_device *pdev)
2149 goto error_isp; 2129 goto error_isp;
2150 } 2130 }
2151 2131
2152 ret = iommu_attach_device(isp->domain, isp->iommu_dev); 2132 ret = iommu_attach_device(isp->domain, &pdev->dev);
2153 if (ret) { 2133 if (ret) {
2154 dev_err(&pdev->dev, "can't attach iommu device: %d\n", ret); 2134 dev_err(&pdev->dev, "can't attach iommu device: %d\n", ret);
2155 goto free_domain; 2135 goto free_domain;
@@ -2188,7 +2168,7 @@ error_modules:
2188error_irq: 2168error_irq:
2189 free_irq(isp->irq_num, isp); 2169 free_irq(isp->irq_num, isp);
2190detach_dev: 2170detach_dev:
2191 iommu_detach_device(isp->domain, isp->iommu_dev); 2171 iommu_detach_device(isp->domain, &pdev->dev);
2192free_domain: 2172free_domain:
2193 iommu_domain_free(isp->domain); 2173 iommu_domain_free(isp->domain);
2194error_isp: 2174error_isp:
diff --git a/drivers/media/video/omap3isp/isp.h b/drivers/media/video/omap3isp/isp.h
index 705946ef4d6..d96603eb0d1 100644
--- a/drivers/media/video/omap3isp/isp.h
+++ b/drivers/media/video/omap3isp/isp.h
@@ -212,9 +212,7 @@ struct isp_device {
212 unsigned int sbl_resources; 212 unsigned int sbl_resources;
213 unsigned int subclk_resources; 213 unsigned int subclk_resources;
214 214
215 struct omap_iommu *iommu;
216 struct iommu_domain *domain; 215 struct iommu_domain *domain;
217 struct device *iommu_dev;
218 216
219 struct isp_platform_callback platform_cb; 217 struct isp_platform_callback platform_cb;
220}; 218};
diff --git a/drivers/media/video/omap3isp/ispccdc.c b/drivers/media/video/omap3isp/ispccdc.c
index b0b0fa5a357..d341ba12593 100644
--- a/drivers/media/video/omap3isp/ispccdc.c
+++ b/drivers/media/video/omap3isp/ispccdc.c
@@ -366,7 +366,7 @@ static void ccdc_lsc_free_request(struct isp_ccdc_device *ccdc,
366 dma_unmap_sg(isp->dev, req->iovm->sgt->sgl, 366 dma_unmap_sg(isp->dev, req->iovm->sgt->sgl,
367 req->iovm->sgt->nents, DMA_TO_DEVICE); 367 req->iovm->sgt->nents, DMA_TO_DEVICE);
368 if (req->table) 368 if (req->table)
369 omap_iommu_vfree(isp->domain, isp->iommu, req->table); 369 omap_iommu_vfree(isp->domain, isp->dev, req->table);
370 kfree(req); 370 kfree(req);
371} 371}
372 372
@@ -438,7 +438,7 @@ static int ccdc_lsc_config(struct isp_ccdc_device *ccdc,
438 438
439 req->enable = 1; 439 req->enable = 1;
440 440
441 req->table = omap_iommu_vmalloc(isp->domain, isp->iommu, 0, 441 req->table = omap_iommu_vmalloc(isp->domain, isp->dev, 0,
442 req->config.size, IOMMU_FLAG); 442 req->config.size, IOMMU_FLAG);
443 if (IS_ERR_VALUE(req->table)) { 443 if (IS_ERR_VALUE(req->table)) {
444 req->table = 0; 444 req->table = 0;
@@ -446,7 +446,7 @@ static int ccdc_lsc_config(struct isp_ccdc_device *ccdc,
446 goto done; 446 goto done;
447 } 447 }
448 448
449 req->iovm = omap_find_iovm_area(isp->iommu, req->table); 449 req->iovm = omap_find_iovm_area(isp->dev, req->table);
450 if (req->iovm == NULL) { 450 if (req->iovm == NULL) {
451 ret = -ENOMEM; 451 ret = -ENOMEM;
452 goto done; 452 goto done;
@@ -462,7 +462,7 @@ static int ccdc_lsc_config(struct isp_ccdc_device *ccdc,
462 dma_sync_sg_for_cpu(isp->dev, req->iovm->sgt->sgl, 462 dma_sync_sg_for_cpu(isp->dev, req->iovm->sgt->sgl,
463 req->iovm->sgt->nents, DMA_TO_DEVICE); 463 req->iovm->sgt->nents, DMA_TO_DEVICE);
464 464
465 table = omap_da_to_va(isp->iommu, req->table); 465 table = omap_da_to_va(isp->dev, req->table);
466 if (copy_from_user(table, config->lsc, req->config.size)) { 466 if (copy_from_user(table, config->lsc, req->config.size)) {
467 ret = -EFAULT; 467 ret = -EFAULT;
468 goto done; 468 goto done;
@@ -734,15 +734,15 @@ static int ccdc_config(struct isp_ccdc_device *ccdc,
734 * already done by omap_iommu_vmalloc(). 734 * already done by omap_iommu_vmalloc().
735 */ 735 */
736 size = ccdc->fpc.fpnum * 4; 736 size = ccdc->fpc.fpnum * 4;
737 table_new = omap_iommu_vmalloc(isp->domain, isp->iommu, 737 table_new = omap_iommu_vmalloc(isp->domain, isp->dev,
738 0, size, IOMMU_FLAG); 738 0, size, IOMMU_FLAG);
739 if (IS_ERR_VALUE(table_new)) 739 if (IS_ERR_VALUE(table_new))
740 return -ENOMEM; 740 return -ENOMEM;
741 741
742 if (copy_from_user(omap_da_to_va(isp->iommu, table_new), 742 if (copy_from_user(omap_da_to_va(isp->dev, table_new),
743 (__force void __user *) 743 (__force void __user *)
744 ccdc->fpc.fpcaddr, size)) { 744 ccdc->fpc.fpcaddr, size)) {
745 omap_iommu_vfree(isp->domain, isp->iommu, 745 omap_iommu_vfree(isp->domain, isp->dev,
746 table_new); 746 table_new);
747 return -EFAULT; 747 return -EFAULT;
748 } 748 }
@@ -753,7 +753,7 @@ static int ccdc_config(struct isp_ccdc_device *ccdc,
753 753
754 ccdc_configure_fpc(ccdc); 754 ccdc_configure_fpc(ccdc);
755 if (table_old != 0) 755 if (table_old != 0)
756 omap_iommu_vfree(isp->domain, isp->iommu, table_old); 756 omap_iommu_vfree(isp->domain, isp->dev, table_old);
757 } 757 }
758 758
759 return ccdc_lsc_config(ccdc, ccdc_struct); 759 return ccdc_lsc_config(ccdc, ccdc_struct);
@@ -1408,7 +1408,7 @@ static void ccdc_hs_vs_isr(struct isp_ccdc_device *ccdc)
1408{ 1408{
1409 struct isp_pipeline *pipe = 1409 struct isp_pipeline *pipe =
1410 to_isp_pipeline(&ccdc->video_out.video.entity); 1410 to_isp_pipeline(&ccdc->video_out.video.entity);
1411 struct video_device *vdev = &ccdc->subdev.devnode; 1411 struct video_device *vdev = ccdc->subdev.devnode;
1412 struct v4l2_event event; 1412 struct v4l2_event event;
1413 1413
1414 memset(&event, 0, sizeof(event)); 1414 memset(&event, 0, sizeof(event));
@@ -2309,7 +2309,7 @@ void omap3isp_ccdc_cleanup(struct isp_device *isp)
2309 ccdc_lsc_free_queue(ccdc, &ccdc->lsc.free_queue); 2309 ccdc_lsc_free_queue(ccdc, &ccdc->lsc.free_queue);
2310 2310
2311 if (ccdc->fpc.fpcaddr != 0) 2311 if (ccdc->fpc.fpcaddr != 0)
2312 omap_iommu_vfree(isp->domain, isp->iommu, ccdc->fpc.fpcaddr); 2312 omap_iommu_vfree(isp->domain, isp->dev, ccdc->fpc.fpcaddr);
2313 2313
2314 mutex_destroy(&ccdc->ioctl_lock); 2314 mutex_destroy(&ccdc->ioctl_lock);
2315} 2315}
diff --git a/drivers/media/video/omap3isp/ispstat.c b/drivers/media/video/omap3isp/ispstat.c
index 68d539456c5..11871ecc6d2 100644
--- a/drivers/media/video/omap3isp/ispstat.c
+++ b/drivers/media/video/omap3isp/ispstat.c
@@ -366,7 +366,7 @@ static void isp_stat_bufs_free(struct ispstat *stat)
366 dma_unmap_sg(isp->dev, buf->iovm->sgt->sgl, 366 dma_unmap_sg(isp->dev, buf->iovm->sgt->sgl,
367 buf->iovm->sgt->nents, 367 buf->iovm->sgt->nents,
368 DMA_FROM_DEVICE); 368 DMA_FROM_DEVICE);
369 omap_iommu_vfree(isp->domain, isp->iommu, 369 omap_iommu_vfree(isp->domain, isp->dev,
370 buf->iommu_addr); 370 buf->iommu_addr);
371 } else { 371 } else {
372 if (!buf->virt_addr) 372 if (!buf->virt_addr)
@@ -400,7 +400,7 @@ static int isp_stat_bufs_alloc_iommu(struct ispstat *stat, unsigned int size)
400 struct iovm_struct *iovm; 400 struct iovm_struct *iovm;
401 401
402 WARN_ON(buf->dma_addr); 402 WARN_ON(buf->dma_addr);
403 buf->iommu_addr = omap_iommu_vmalloc(isp->domain, isp->iommu, 0, 403 buf->iommu_addr = omap_iommu_vmalloc(isp->domain, isp->dev, 0,
404 size, IOMMU_FLAG); 404 size, IOMMU_FLAG);
405 if (IS_ERR((void *)buf->iommu_addr)) { 405 if (IS_ERR((void *)buf->iommu_addr)) {
406 dev_err(stat->isp->dev, 406 dev_err(stat->isp->dev,
@@ -410,7 +410,7 @@ static int isp_stat_bufs_alloc_iommu(struct ispstat *stat, unsigned int size)
410 return -ENOMEM; 410 return -ENOMEM;
411 } 411 }
412 412
413 iovm = omap_find_iovm_area(isp->iommu, buf->iommu_addr); 413 iovm = omap_find_iovm_area(isp->dev, buf->iommu_addr);
414 if (!iovm || 414 if (!iovm ||
415 !dma_map_sg(isp->dev, iovm->sgt->sgl, iovm->sgt->nents, 415 !dma_map_sg(isp->dev, iovm->sgt->sgl, iovm->sgt->nents,
416 DMA_FROM_DEVICE)) { 416 DMA_FROM_DEVICE)) {
@@ -419,7 +419,7 @@ static int isp_stat_bufs_alloc_iommu(struct ispstat *stat, unsigned int size)
419 } 419 }
420 buf->iovm = iovm; 420 buf->iovm = iovm;
421 421
422 buf->virt_addr = omap_da_to_va(stat->isp->iommu, 422 buf->virt_addr = omap_da_to_va(stat->isp->dev,
423 (u32)buf->iommu_addr); 423 (u32)buf->iommu_addr);
424 buf->empty = 1; 424 buf->empty = 1;
425 dev_dbg(stat->isp->dev, "%s: buffer[%d] allocated." 425 dev_dbg(stat->isp->dev, "%s: buffer[%d] allocated."
@@ -496,7 +496,7 @@ static int isp_stat_bufs_alloc(struct ispstat *stat, u32 size)
496 496
497static void isp_stat_queue_event(struct ispstat *stat, int err) 497static void isp_stat_queue_event(struct ispstat *stat, int err)
498{ 498{
499 struct video_device *vdev = &stat->subdev.devnode; 499 struct video_device *vdev = stat->subdev.devnode;
500 struct v4l2_event event; 500 struct v4l2_event event;
501 struct omap3isp_stat_event_status *status = (void *)event.u.data; 501 struct omap3isp_stat_event_status *status = (void *)event.u.data;
502 502
diff --git a/drivers/media/video/omap3isp/ispvideo.c b/drivers/media/video/omap3isp/ispvideo.c
index d1000723c5a..bd3aebafafa 100644
--- a/drivers/media/video/omap3isp/ispvideo.c
+++ b/drivers/media/video/omap3isp/ispvideo.c
@@ -26,6 +26,7 @@
26#include <asm/cacheflush.h> 26#include <asm/cacheflush.h>
27#include <linux/clk.h> 27#include <linux/clk.h>
28#include <linux/mm.h> 28#include <linux/mm.h>
29#include <linux/module.h>
29#include <linux/pagemap.h> 30#include <linux/pagemap.h>
30#include <linux/scatterlist.h> 31#include <linux/scatterlist.h>
31#include <linux/sched.h> 32#include <linux/sched.h>
@@ -452,7 +453,7 @@ ispmmu_vmap(struct isp_device *isp, const struct scatterlist *sglist, int sglen)
452 sgt->nents = sglen; 453 sgt->nents = sglen;
453 sgt->orig_nents = sglen; 454 sgt->orig_nents = sglen;
454 455
455 da = omap_iommu_vmap(isp->domain, isp->iommu, 0, sgt, IOMMU_FLAG); 456 da = omap_iommu_vmap(isp->domain, isp->dev, 0, sgt, IOMMU_FLAG);
456 if (IS_ERR_VALUE(da)) 457 if (IS_ERR_VALUE(da))
457 kfree(sgt); 458 kfree(sgt);
458 459
@@ -468,7 +469,7 @@ static void ispmmu_vunmap(struct isp_device *isp, dma_addr_t da)
468{ 469{
469 struct sg_table *sgt; 470 struct sg_table *sgt;
470 471
471 sgt = omap_iommu_vunmap(isp->domain, isp->iommu, (u32)da); 472 sgt = omap_iommu_vunmap(isp->domain, isp->dev, (u32)da);
472 kfree(sgt); 473 kfree(sgt);
473} 474}
474 475
diff --git a/drivers/media/video/ov6650.c b/drivers/media/video/ov6650.c
index 9f2d26b1d4c..6806345ec2f 100644
--- a/drivers/media/video/ov6650.c
+++ b/drivers/media/video/ov6650.c
@@ -540,7 +540,7 @@ static u8 to_clkrc(struct v4l2_fract *timeperframe,
540static int ov6650_s_fmt(struct v4l2_subdev *sd, struct v4l2_mbus_framefmt *mf) 540static int ov6650_s_fmt(struct v4l2_subdev *sd, struct v4l2_mbus_framefmt *mf)
541{ 541{
542 struct i2c_client *client = v4l2_get_subdevdata(sd); 542 struct i2c_client *client = v4l2_get_subdevdata(sd);
543 struct soc_camera_device *icd = (struct soc_camera_device *)sd->grp_id; 543 struct soc_camera_device *icd = v4l2_get_subdev_hostdata(sd);
544 struct soc_camera_sense *sense = icd->sense; 544 struct soc_camera_sense *sense = icd->sense;
545 struct ov6650 *priv = to_ov6650(client); 545 struct ov6650 *priv = to_ov6650(client);
546 bool half_scale = !is_unscaled_ok(mf->width, mf->height, &priv->rect); 546 bool half_scale = !is_unscaled_ok(mf->width, mf->height, &priv->rect);
diff --git a/drivers/media/video/ov7670.c b/drivers/media/video/ov7670.c
index 8aa05853128..6a564964853 100644
--- a/drivers/media/video/ov7670.c
+++ b/drivers/media/video/ov7670.c
@@ -25,7 +25,7 @@ MODULE_AUTHOR("Jonathan Corbet <corbet@lwn.net>");
25MODULE_DESCRIPTION("A low-level driver for OmniVision ov7670 sensors"); 25MODULE_DESCRIPTION("A low-level driver for OmniVision ov7670 sensors");
26MODULE_LICENSE("GPL"); 26MODULE_LICENSE("GPL");
27 27
28static int debug; 28static bool debug;
29module_param(debug, bool, 0644); 29module_param(debug, bool, 0644);
30MODULE_PARM_DESC(debug, "Debug level (0-1)"); 30MODULE_PARM_DESC(debug, "Debug level (0-1)");
31 31
diff --git a/drivers/media/video/s2255drv.c b/drivers/media/video/s2255drv.c
index 803c9c82e49..c1bef618766 100644
--- a/drivers/media/video/s2255drv.c
+++ b/drivers/media/video/s2255drv.c
@@ -2682,25 +2682,7 @@ static struct usb_driver s2255_driver = {
2682 .id_table = s2255_table, 2682 .id_table = s2255_table,
2683}; 2683};
2684 2684
2685static int __init usb_s2255_init(void) 2685module_usb_driver(s2255_driver);
2686{
2687 int result;
2688 /* register this driver with the USB subsystem */
2689 result = usb_register(&s2255_driver);
2690 if (result)
2691 pr_err(KBUILD_MODNAME
2692 ": usb_register failed. Error number %d\n", result);
2693 dprintk(2, "%s\n", __func__);
2694 return result;
2695}
2696
2697static void __exit usb_s2255_exit(void)
2698{
2699 usb_deregister(&s2255_driver);
2700}
2701
2702module_init(usb_s2255_init);
2703module_exit(usb_s2255_exit);
2704 2686
2705MODULE_DESCRIPTION("Sensoray 2255 Video for Linux driver"); 2687MODULE_DESCRIPTION("Sensoray 2255 Video for Linux driver");
2706MODULE_AUTHOR("Dean Anderson (Sensoray Company Inc.)"); 2688MODULE_AUTHOR("Dean Anderson (Sensoray Company Inc.)");
diff --git a/drivers/media/video/s5p-fimc/fimc-capture.c b/drivers/media/video/s5p-fimc/fimc-capture.c
index c8d91b0cd9b..2cc3b916672 100644
--- a/drivers/media/video/s5p-fimc/fimc-capture.c
+++ b/drivers/media/video/s5p-fimc/fimc-capture.c
@@ -98,6 +98,10 @@ static int fimc_capture_state_cleanup(struct fimc_dev *fimc, bool suspend)
98 vb2_buffer_done(&buf->vb, VB2_BUF_STATE_ERROR); 98 vb2_buffer_done(&buf->vb, VB2_BUF_STATE_ERROR);
99 } 99 }
100 set_bit(ST_CAPT_SUSPENDED, &fimc->state); 100 set_bit(ST_CAPT_SUSPENDED, &fimc->state);
101
102 fimc_hw_reset(fimc);
103 cap->buf_index = 0;
104
101 spin_unlock_irqrestore(&fimc->slock, flags); 105 spin_unlock_irqrestore(&fimc->slock, flags);
102 106
103 if (streaming) 107 if (streaming)
@@ -137,7 +141,7 @@ int fimc_capture_config_update(struct fimc_ctx *ctx)
137 struct fimc_dev *fimc = ctx->fimc_dev; 141 struct fimc_dev *fimc = ctx->fimc_dev;
138 int ret; 142 int ret;
139 143
140 if (test_bit(ST_CAPT_APPLY_CFG, &fimc->state)) 144 if (!test_bit(ST_CAPT_APPLY_CFG, &fimc->state))
141 return 0; 145 return 0;
142 146
143 spin_lock(&ctx->slock); 147 spin_lock(&ctx->slock);
@@ -150,7 +154,7 @@ int fimc_capture_config_update(struct fimc_ctx *ctx)
150 fimc_hw_set_rotation(ctx); 154 fimc_hw_set_rotation(ctx);
151 fimc_prepare_dma_offset(ctx, &ctx->d_frame); 155 fimc_prepare_dma_offset(ctx, &ctx->d_frame);
152 fimc_hw_set_out_dma(ctx); 156 fimc_hw_set_out_dma(ctx);
153 set_bit(ST_CAPT_APPLY_CFG, &fimc->state); 157 clear_bit(ST_CAPT_APPLY_CFG, &fimc->state);
154 } 158 }
155 spin_unlock(&ctx->slock); 159 spin_unlock(&ctx->slock);
156 return ret; 160 return ret;
@@ -164,7 +168,6 @@ static int start_streaming(struct vb2_queue *q, unsigned int count)
164 int min_bufs; 168 int min_bufs;
165 int ret; 169 int ret;
166 170
167 fimc_hw_reset(fimc);
168 vid_cap->frame_count = 0; 171 vid_cap->frame_count = 0;
169 172
170 ret = fimc_init_capture(fimc); 173 ret = fimc_init_capture(fimc);
@@ -523,7 +526,7 @@ static struct fimc_fmt *fimc_capture_try_format(struct fimc_ctx *ctx,
523 max_w = rotation ? pl->out_rot_en_w : pl->out_rot_dis_w; 526 max_w = rotation ? pl->out_rot_en_w : pl->out_rot_dis_w;
524 min_w = ctx->state & FIMC_DST_CROP ? dst->width : var->min_out_pixsize; 527 min_w = ctx->state & FIMC_DST_CROP ? dst->width : var->min_out_pixsize;
525 min_h = ctx->state & FIMC_DST_CROP ? dst->height : var->min_out_pixsize; 528 min_h = ctx->state & FIMC_DST_CROP ? dst->height : var->min_out_pixsize;
526 if (fimc->id == 1 && var->pix_hoff) 529 if (var->min_vsize_align == 1 && !rotation)
527 align_h = fimc_fmt_is_rgb(ffmt->color) ? 0 : 1; 530 align_h = fimc_fmt_is_rgb(ffmt->color) ? 0 : 1;
528 531
529 depth = fimc_get_format_depth(ffmt); 532 depth = fimc_get_format_depth(ffmt);
@@ -1239,6 +1242,7 @@ static int fimc_subdev_set_fmt(struct v4l2_subdev *sd,
1239 1242
1240 mutex_lock(&fimc->lock); 1243 mutex_lock(&fimc->lock);
1241 set_frame_bounds(ff, mf->width, mf->height); 1244 set_frame_bounds(ff, mf->width, mf->height);
1245 fimc->vid_cap.mf = *mf;
1242 ff->fmt = ffmt; 1246 ff->fmt = ffmt;
1243 1247
1244 /* Reset the crop rectangle if required. */ 1248 /* Reset the crop rectangle if required. */
@@ -1375,7 +1379,7 @@ static void fimc_destroy_capture_subdev(struct fimc_dev *fimc)
1375 media_entity_cleanup(&sd->entity); 1379 media_entity_cleanup(&sd->entity);
1376 v4l2_device_unregister_subdev(sd); 1380 v4l2_device_unregister_subdev(sd);
1377 kfree(sd); 1381 kfree(sd);
1378 sd = NULL; 1382 fimc->vid_cap.subdev = NULL;
1379} 1383}
1380 1384
1381/* Set default format at the sensor and host interface */ 1385/* Set default format at the sensor and host interface */
diff --git a/drivers/media/video/s5p-fimc/fimc-core.c b/drivers/media/video/s5p-fimc/fimc-core.c
index 19ca6db38b2..07c6254faee 100644
--- a/drivers/media/video/s5p-fimc/fimc-core.c
+++ b/drivers/media/video/s5p-fimc/fimc-core.c
@@ -37,7 +37,7 @@ static char *fimc_clocks[MAX_FIMC_CLOCKS] = {
37static struct fimc_fmt fimc_formats[] = { 37static struct fimc_fmt fimc_formats[] = {
38 { 38 {
39 .name = "RGB565", 39 .name = "RGB565",
40 .fourcc = V4L2_PIX_FMT_RGB565X, 40 .fourcc = V4L2_PIX_FMT_RGB565,
41 .depth = { 16 }, 41 .depth = { 16 },
42 .color = S5P_FIMC_RGB565, 42 .color = S5P_FIMC_RGB565,
43 .memplanes = 1, 43 .memplanes = 1,
@@ -1038,12 +1038,11 @@ static int fimc_try_fmt_mplane(struct fimc_ctx *ctx, struct v4l2_format *f)
1038 mod_x = 6; /* 64 x 32 pixels tile */ 1038 mod_x = 6; /* 64 x 32 pixels tile */
1039 mod_y = 5; 1039 mod_y = 5;
1040 } else { 1040 } else {
1041 if (fimc->id == 1 && variant->pix_hoff) 1041 if (variant->min_vsize_align == 1)
1042 mod_y = fimc_fmt_is_rgb(fmt->color) ? 0 : 1; 1042 mod_y = fimc_fmt_is_rgb(fmt->color) ? 0 : 1;
1043 else 1043 else
1044 mod_y = mod_x; 1044 mod_y = ffs(variant->min_vsize_align) - 1;
1045 } 1045 }
1046 dbg("mod_x: %d, mod_y: %d, max_w: %d", mod_x, mod_y, max_w);
1047 1046
1048 v4l_bound_align_image(&pix->width, 16, max_w, mod_x, 1047 v4l_bound_align_image(&pix->width, 16, max_w, mod_x,
1049 &pix->height, 8, variant->pix_limit->scaler_dis_w, mod_y, 0); 1048 &pix->height, 8, variant->pix_limit->scaler_dis_w, mod_y, 0);
@@ -1226,10 +1225,10 @@ static int fimc_m2m_try_crop(struct fimc_ctx *ctx, struct v4l2_crop *cr)
1226 fimc->variant->min_inp_pixsize : fimc->variant->min_out_pixsize; 1225 fimc->variant->min_inp_pixsize : fimc->variant->min_out_pixsize;
1227 1226
1228 /* Get pixel alignment constraints. */ 1227 /* Get pixel alignment constraints. */
1229 if (fimc->id == 1 && fimc->variant->pix_hoff) 1228 if (fimc->variant->min_vsize_align == 1)
1230 halign = fimc_fmt_is_rgb(f->fmt->color) ? 0 : 1; 1229 halign = fimc_fmt_is_rgb(f->fmt->color) ? 0 : 1;
1231 else 1230 else
1232 halign = ffs(min_size) - 1; 1231 halign = ffs(fimc->variant->min_vsize_align) - 1;
1233 1232
1234 for (i = 0; i < f->fmt->colplanes; i++) 1233 for (i = 0; i < f->fmt->colplanes; i++)
1235 depth += f->fmt->depth[i]; 1234 depth += f->fmt->depth[i];
@@ -1615,7 +1614,6 @@ static int fimc_probe(struct platform_device *pdev)
1615 pdata = pdev->dev.platform_data; 1614 pdata = pdev->dev.platform_data;
1616 fimc->pdata = pdata; 1615 fimc->pdata = pdata;
1617 1616
1618 set_bit(ST_LPM, &fimc->state);
1619 1617
1620 init_waitqueue_head(&fimc->irq_queue); 1618 init_waitqueue_head(&fimc->irq_queue);
1621 spin_lock_init(&fimc->slock); 1619 spin_lock_init(&fimc->slock);
@@ -1707,8 +1705,6 @@ static int fimc_runtime_resume(struct device *dev)
1707 /* Enable clocks and perform basic initalization */ 1705 /* Enable clocks and perform basic initalization */
1708 clk_enable(fimc->clock[CLK_GATE]); 1706 clk_enable(fimc->clock[CLK_GATE]);
1709 fimc_hw_reset(fimc); 1707 fimc_hw_reset(fimc);
1710 if (fimc->variant->out_buf_count > 4)
1711 fimc_hw_set_dma_seq(fimc, 0xF);
1712 1708
1713 /* Resume the capture or mem-to-mem device */ 1709 /* Resume the capture or mem-to-mem device */
1714 if (fimc_capture_busy(fimc)) 1710 if (fimc_capture_busy(fimc))
@@ -1750,8 +1746,6 @@ static int fimc_resume(struct device *dev)
1750 return 0; 1746 return 0;
1751 } 1747 }
1752 fimc_hw_reset(fimc); 1748 fimc_hw_reset(fimc);
1753 if (fimc->variant->out_buf_count > 4)
1754 fimc_hw_set_dma_seq(fimc, 0xF);
1755 spin_unlock_irqrestore(&fimc->slock, flags); 1749 spin_unlock_irqrestore(&fimc->slock, flags);
1756 1750
1757 if (fimc_capture_busy(fimc)) 1751 if (fimc_capture_busy(fimc))
@@ -1780,7 +1774,6 @@ static int __devexit fimc_remove(struct platform_device *pdev)
1780 struct fimc_dev *fimc = platform_get_drvdata(pdev); 1774 struct fimc_dev *fimc = platform_get_drvdata(pdev);
1781 1775
1782 pm_runtime_disable(&pdev->dev); 1776 pm_runtime_disable(&pdev->dev);
1783 fimc_runtime_suspend(&pdev->dev);
1784 pm_runtime_set_suspended(&pdev->dev); 1777 pm_runtime_set_suspended(&pdev->dev);
1785 1778
1786 vb2_dma_contig_cleanup_ctx(fimc->alloc_ctx); 1779 vb2_dma_contig_cleanup_ctx(fimc->alloc_ctx);
@@ -1840,6 +1833,7 @@ static struct samsung_fimc_variant fimc0_variant_s5p = {
1840 .min_inp_pixsize = 16, 1833 .min_inp_pixsize = 16,
1841 .min_out_pixsize = 16, 1834 .min_out_pixsize = 16,
1842 .hor_offs_align = 8, 1835 .hor_offs_align = 8,
1836 .min_vsize_align = 16,
1843 .out_buf_count = 4, 1837 .out_buf_count = 4,
1844 .pix_limit = &s5p_pix_limit[0], 1838 .pix_limit = &s5p_pix_limit[0],
1845}; 1839};
@@ -1849,6 +1843,7 @@ static struct samsung_fimc_variant fimc2_variant_s5p = {
1849 .min_inp_pixsize = 16, 1843 .min_inp_pixsize = 16,
1850 .min_out_pixsize = 16, 1844 .min_out_pixsize = 16,
1851 .hor_offs_align = 8, 1845 .hor_offs_align = 8,
1846 .min_vsize_align = 16,
1852 .out_buf_count = 4, 1847 .out_buf_count = 4,
1853 .pix_limit = &s5p_pix_limit[1], 1848 .pix_limit = &s5p_pix_limit[1],
1854}; 1849};
@@ -1861,6 +1856,7 @@ static struct samsung_fimc_variant fimc0_variant_s5pv210 = {
1861 .min_inp_pixsize = 16, 1856 .min_inp_pixsize = 16,
1862 .min_out_pixsize = 16, 1857 .min_out_pixsize = 16,
1863 .hor_offs_align = 8, 1858 .hor_offs_align = 8,
1859 .min_vsize_align = 16,
1864 .out_buf_count = 4, 1860 .out_buf_count = 4,
1865 .pix_limit = &s5p_pix_limit[1], 1861 .pix_limit = &s5p_pix_limit[1],
1866}; 1862};
@@ -1874,6 +1870,7 @@ static struct samsung_fimc_variant fimc1_variant_s5pv210 = {
1874 .min_inp_pixsize = 16, 1870 .min_inp_pixsize = 16,
1875 .min_out_pixsize = 16, 1871 .min_out_pixsize = 16,
1876 .hor_offs_align = 1, 1872 .hor_offs_align = 1,
1873 .min_vsize_align = 1,
1877 .out_buf_count = 4, 1874 .out_buf_count = 4,
1878 .pix_limit = &s5p_pix_limit[2], 1875 .pix_limit = &s5p_pix_limit[2],
1879}; 1876};
@@ -1884,6 +1881,7 @@ static struct samsung_fimc_variant fimc2_variant_s5pv210 = {
1884 .min_inp_pixsize = 16, 1881 .min_inp_pixsize = 16,
1885 .min_out_pixsize = 16, 1882 .min_out_pixsize = 16,
1886 .hor_offs_align = 8, 1883 .hor_offs_align = 8,
1884 .min_vsize_align = 16,
1887 .out_buf_count = 4, 1885 .out_buf_count = 4,
1888 .pix_limit = &s5p_pix_limit[2], 1886 .pix_limit = &s5p_pix_limit[2],
1889}; 1887};
@@ -1898,6 +1896,7 @@ static struct samsung_fimc_variant fimc0_variant_exynos4 = {
1898 .min_inp_pixsize = 16, 1896 .min_inp_pixsize = 16,
1899 .min_out_pixsize = 16, 1897 .min_out_pixsize = 16,
1900 .hor_offs_align = 2, 1898 .hor_offs_align = 2,
1899 .min_vsize_align = 1,
1901 .out_buf_count = 32, 1900 .out_buf_count = 32,
1902 .pix_limit = &s5p_pix_limit[1], 1901 .pix_limit = &s5p_pix_limit[1],
1903}; 1902};
@@ -1910,6 +1909,7 @@ static struct samsung_fimc_variant fimc3_variant_exynos4 = {
1910 .min_inp_pixsize = 16, 1909 .min_inp_pixsize = 16,
1911 .min_out_pixsize = 16, 1910 .min_out_pixsize = 16,
1912 .hor_offs_align = 2, 1911 .hor_offs_align = 2,
1912 .min_vsize_align = 1,
1913 .out_buf_count = 32, 1913 .out_buf_count = 32,
1914 .pix_limit = &s5p_pix_limit[3], 1914 .pix_limit = &s5p_pix_limit[3],
1915}; 1915};
diff --git a/drivers/media/video/s5p-fimc/fimc-core.h b/drivers/media/video/s5p-fimc/fimc-core.h
index a6936dad5b1..c7f01c47b20 100644
--- a/drivers/media/video/s5p-fimc/fimc-core.h
+++ b/drivers/media/video/s5p-fimc/fimc-core.h
@@ -377,6 +377,7 @@ struct fimc_pix_limit {
377 * @min_inp_pixsize: minimum input pixel size 377 * @min_inp_pixsize: minimum input pixel size
378 * @min_out_pixsize: minimum output pixel size 378 * @min_out_pixsize: minimum output pixel size
379 * @hor_offs_align: horizontal pixel offset aligment 379 * @hor_offs_align: horizontal pixel offset aligment
380 * @min_vsize_align: minimum vertical pixel size alignment
380 * @out_buf_count: the number of buffers in output DMA sequence 381 * @out_buf_count: the number of buffers in output DMA sequence
381 */ 382 */
382struct samsung_fimc_variant { 383struct samsung_fimc_variant {
@@ -390,6 +391,7 @@ struct samsung_fimc_variant {
390 u16 min_inp_pixsize; 391 u16 min_inp_pixsize;
391 u16 min_out_pixsize; 392 u16 min_out_pixsize;
392 u16 hor_offs_align; 393 u16 hor_offs_align;
394 u16 min_vsize_align;
393 u16 out_buf_count; 395 u16 out_buf_count;
394}; 396};
395 397
diff --git a/drivers/media/video/s5p-fimc/fimc-mdevice.c b/drivers/media/video/s5p-fimc/fimc-mdevice.c
index cc337b1de91..615c862f036 100644
--- a/drivers/media/video/s5p-fimc/fimc-mdevice.c
+++ b/drivers/media/video/s5p-fimc/fimc-mdevice.c
@@ -220,6 +220,7 @@ static struct v4l2_subdev *fimc_md_register_sensor(struct fimc_md *fmd,
220 sd = v4l2_i2c_new_subdev_board(&fmd->v4l2_dev, adapter, 220 sd = v4l2_i2c_new_subdev_board(&fmd->v4l2_dev, adapter,
221 s_info->pdata->board_info, NULL); 221 s_info->pdata->board_info, NULL);
222 if (IS_ERR_OR_NULL(sd)) { 222 if (IS_ERR_OR_NULL(sd)) {
223 i2c_put_adapter(adapter);
223 v4l2_err(&fmd->v4l2_dev, "Failed to acquire subdev\n"); 224 v4l2_err(&fmd->v4l2_dev, "Failed to acquire subdev\n");
224 return NULL; 225 return NULL;
225 } 226 }
@@ -234,12 +235,15 @@ static struct v4l2_subdev *fimc_md_register_sensor(struct fimc_md *fmd,
234static void fimc_md_unregister_sensor(struct v4l2_subdev *sd) 235static void fimc_md_unregister_sensor(struct v4l2_subdev *sd)
235{ 236{
236 struct i2c_client *client = v4l2_get_subdevdata(sd); 237 struct i2c_client *client = v4l2_get_subdevdata(sd);
238 struct i2c_adapter *adapter;
237 239
238 if (!client) 240 if (!client)
239 return; 241 return;
240 v4l2_device_unregister_subdev(sd); 242 v4l2_device_unregister_subdev(sd);
243 adapter = client->adapter;
241 i2c_unregister_device(client); 244 i2c_unregister_device(client);
242 i2c_put_adapter(client->adapter); 245 if (adapter)
246 i2c_put_adapter(adapter);
243} 247}
244 248
245static int fimc_md_register_sensor_entities(struct fimc_md *fmd) 249static int fimc_md_register_sensor_entities(struct fimc_md *fmd)
@@ -381,20 +385,28 @@ static void fimc_md_unregister_entities(struct fimc_md *fmd)
381 385
382static int fimc_md_register_video_nodes(struct fimc_md *fmd) 386static int fimc_md_register_video_nodes(struct fimc_md *fmd)
383{ 387{
388 struct video_device *vdev;
384 int i, ret = 0; 389 int i, ret = 0;
385 390
386 for (i = 0; i < FIMC_MAX_DEVS && !ret; i++) { 391 for (i = 0; i < FIMC_MAX_DEVS && !ret; i++) {
387 if (!fmd->fimc[i]) 392 if (!fmd->fimc[i])
388 continue; 393 continue;
389 394
390 if (fmd->fimc[i]->m2m.vfd) 395 vdev = fmd->fimc[i]->m2m.vfd;
391 ret = video_register_device(fmd->fimc[i]->m2m.vfd, 396 if (vdev) {
392 VFL_TYPE_GRABBER, -1); 397 ret = video_register_device(vdev, VFL_TYPE_GRABBER, -1);
393 if (ret) 398 if (ret)
394 break; 399 break;
395 if (fmd->fimc[i]->vid_cap.vfd) 400 v4l2_info(&fmd->v4l2_dev, "Registered %s as /dev/%s\n",
396 ret = video_register_device(fmd->fimc[i]->vid_cap.vfd, 401 vdev->name, video_device_node_name(vdev));
397 VFL_TYPE_GRABBER, -1); 402 }
403
404 vdev = fmd->fimc[i]->vid_cap.vfd;
405 if (vdev == NULL)
406 continue;
407 ret = video_register_device(vdev, VFL_TYPE_GRABBER, -1);
408 v4l2_info(&fmd->v4l2_dev, "Registered %s as /dev/%s\n",
409 vdev->name, video_device_node_name(vdev));
398 } 410 }
399 411
400 return ret; 412 return ret;
@@ -502,7 +514,7 @@ static int fimc_md_create_links(struct fimc_md *fmd)
502 if (WARN(csis == NULL, 514 if (WARN(csis == NULL,
503 "MIPI-CSI interface specified " 515 "MIPI-CSI interface specified "
504 "but s5p-csis module is not loaded!\n")) 516 "but s5p-csis module is not loaded!\n"))
505 continue; 517 return -EINVAL;
506 518
507 ret = media_entity_create_link(&sensor->entity, 0, 519 ret = media_entity_create_link(&sensor->entity, 0,
508 &csis->entity, CSIS_PAD_SINK, 520 &csis->entity, CSIS_PAD_SINK,
@@ -742,9 +754,6 @@ static int __devinit fimc_md_probe(struct platform_device *pdev)
742 struct fimc_md *fmd; 754 struct fimc_md *fmd;
743 int ret; 755 int ret;
744 756
745 if (WARN(!pdev->dev.platform_data, "Platform data not specified!\n"))
746 return -EINVAL;
747
748 fmd = kzalloc(sizeof(struct fimc_md), GFP_KERNEL); 757 fmd = kzalloc(sizeof(struct fimc_md), GFP_KERNEL);
749 if (!fmd) 758 if (!fmd)
750 return -ENOMEM; 759 return -ENOMEM;
@@ -782,9 +791,11 @@ static int __devinit fimc_md_probe(struct platform_device *pdev)
782 if (ret) 791 if (ret)
783 goto err3; 792 goto err3;
784 793
785 ret = fimc_md_register_sensor_entities(fmd); 794 if (pdev->dev.platform_data) {
786 if (ret) 795 ret = fimc_md_register_sensor_entities(fmd);
787 goto err3; 796 if (ret)
797 goto err3;
798 }
788 ret = fimc_md_create_links(fmd); 799 ret = fimc_md_create_links(fmd);
789 if (ret) 800 if (ret)
790 goto err3; 801 goto err3;
diff --git a/drivers/media/video/s5p-fimc/fimc-reg.c b/drivers/media/video/s5p-fimc/fimc-reg.c
index 20e664e3416..44f5c2d1920 100644
--- a/drivers/media/video/s5p-fimc/fimc-reg.c
+++ b/drivers/media/video/s5p-fimc/fimc-reg.c
@@ -35,6 +35,9 @@ void fimc_hw_reset(struct fimc_dev *dev)
35 cfg = readl(dev->regs + S5P_CIGCTRL); 35 cfg = readl(dev->regs + S5P_CIGCTRL);
36 cfg &= ~S5P_CIGCTRL_SWRST; 36 cfg &= ~S5P_CIGCTRL_SWRST;
37 writel(cfg, dev->regs + S5P_CIGCTRL); 37 writel(cfg, dev->regs + S5P_CIGCTRL);
38
39 if (dev->variant->out_buf_count > 4)
40 fimc_hw_set_dma_seq(dev, 0xF);
38} 41}
39 42
40static u32 fimc_hw_get_in_flip(struct fimc_ctx *ctx) 43static u32 fimc_hw_get_in_flip(struct fimc_ctx *ctx)
@@ -251,7 +254,14 @@ static void fimc_hw_set_scaler(struct fimc_ctx *ctx)
251 struct fimc_scaler *sc = &ctx->scaler; 254 struct fimc_scaler *sc = &ctx->scaler;
252 struct fimc_frame *src_frame = &ctx->s_frame; 255 struct fimc_frame *src_frame = &ctx->s_frame;
253 struct fimc_frame *dst_frame = &ctx->d_frame; 256 struct fimc_frame *dst_frame = &ctx->d_frame;
254 u32 cfg = 0; 257
258 u32 cfg = readl(dev->regs + S5P_CISCCTRL);
259
260 cfg &= ~(S5P_CISCCTRL_CSCR2Y_WIDE | S5P_CISCCTRL_CSCY2R_WIDE |
261 S5P_CISCCTRL_SCALEUP_H | S5P_CISCCTRL_SCALEUP_V |
262 S5P_CISCCTRL_SCALERBYPASS | S5P_CISCCTRL_ONE2ONE |
263 S5P_CISCCTRL_INRGB_FMT_MASK | S5P_CISCCTRL_OUTRGB_FMT_MASK |
264 S5P_CISCCTRL_INTERLACE | S5P_CISCCTRL_RGB_EXT);
255 265
256 if (!(ctx->flags & FIMC_COLOR_RANGE_NARROW)) 266 if (!(ctx->flags & FIMC_COLOR_RANGE_NARROW))
257 cfg |= (S5P_CISCCTRL_CSCR2Y_WIDE | S5P_CISCCTRL_CSCY2R_WIDE); 267 cfg |= (S5P_CISCCTRL_CSCR2Y_WIDE | S5P_CISCCTRL_CSCY2R_WIDE);
@@ -308,9 +318,9 @@ void fimc_hw_set_mainscaler(struct fimc_ctx *ctx)
308 fimc_hw_set_scaler(ctx); 318 fimc_hw_set_scaler(ctx);
309 319
310 cfg = readl(dev->regs + S5P_CISCCTRL); 320 cfg = readl(dev->regs + S5P_CISCCTRL);
321 cfg &= ~(S5P_CISCCTRL_MHRATIO_MASK | S5P_CISCCTRL_MVRATIO_MASK);
311 322
312 if (variant->has_mainscaler_ext) { 323 if (variant->has_mainscaler_ext) {
313 cfg &= ~(S5P_CISCCTRL_MHRATIO_MASK | S5P_CISCCTRL_MVRATIO_MASK);
314 cfg |= S5P_CISCCTRL_MHRATIO_EXT(sc->main_hratio); 324 cfg |= S5P_CISCCTRL_MHRATIO_EXT(sc->main_hratio);
315 cfg |= S5P_CISCCTRL_MVRATIO_EXT(sc->main_vratio); 325 cfg |= S5P_CISCCTRL_MVRATIO_EXT(sc->main_vratio);
316 writel(cfg, dev->regs + S5P_CISCCTRL); 326 writel(cfg, dev->regs + S5P_CISCCTRL);
@@ -323,7 +333,6 @@ void fimc_hw_set_mainscaler(struct fimc_ctx *ctx)
323 cfg |= S5P_CIEXTEN_MVRATIO_EXT(sc->main_vratio); 333 cfg |= S5P_CIEXTEN_MVRATIO_EXT(sc->main_vratio);
324 writel(cfg, dev->regs + S5P_CIEXTEN); 334 writel(cfg, dev->regs + S5P_CIEXTEN);
325 } else { 335 } else {
326 cfg &= ~(S5P_CISCCTRL_MHRATIO_MASK | S5P_CISCCTRL_MVRATIO_MASK);
327 cfg |= S5P_CISCCTRL_MHRATIO(sc->main_hratio); 336 cfg |= S5P_CISCCTRL_MHRATIO(sc->main_hratio);
328 cfg |= S5P_CISCCTRL_MVRATIO(sc->main_vratio); 337 cfg |= S5P_CISCCTRL_MVRATIO(sc->main_vratio);
329 writel(cfg, dev->regs + S5P_CISCCTRL); 338 writel(cfg, dev->regs + S5P_CISCCTRL);
diff --git a/drivers/media/video/s5p-mfc/s5p_mfc_enc.c b/drivers/media/video/s5p-mfc/s5p_mfc_enc.c
index 1e8cdb77d4b..dff9dc79879 100644
--- a/drivers/media/video/s5p-mfc/s5p_mfc_enc.c
+++ b/drivers/media/video/s5p-mfc/s5p_mfc_enc.c
@@ -61,7 +61,7 @@ static struct s5p_mfc_fmt formats[] = {
61 .num_planes = 1, 61 .num_planes = 1,
62 }, 62 },
63 { 63 {
64 .name = "H264 Encoded Stream", 64 .name = "H263 Encoded Stream",
65 .fourcc = V4L2_PIX_FMT_H263, 65 .fourcc = V4L2_PIX_FMT_H263,
66 .codec_mode = S5P_FIMV_CODEC_H263_ENC, 66 .codec_mode = S5P_FIMV_CODEC_H263_ENC,
67 .type = MFC_FMT_ENC, 67 .type = MFC_FMT_ENC,
diff --git a/drivers/media/video/s5p-tv/mixer_video.c b/drivers/media/video/s5p-tv/mixer_video.c
index e16d3a4bc1d..b47d0c06ecf 100644
--- a/drivers/media/video/s5p-tv/mixer_video.c
+++ b/drivers/media/video/s5p-tv/mixer_video.c
@@ -16,6 +16,7 @@
16#include <media/v4l2-ioctl.h> 16#include <media/v4l2-ioctl.h>
17#include <linux/videodev2.h> 17#include <linux/videodev2.h>
18#include <linux/mm.h> 18#include <linux/mm.h>
19#include <linux/module.h>
19#include <linux/version.h> 20#include <linux/version.h>
20#include <linux/timer.h> 21#include <linux/timer.h>
21#include <media/videobuf2-dma-contig.h> 22#include <media/videobuf2-dma-contig.h>
diff --git a/drivers/media/video/saa7115.c b/drivers/media/video/saa7115.c
index 5cfdbc78b91..0ef5484696b 100644
--- a/drivers/media/video/saa7115.c
+++ b/drivers/media/video/saa7115.c
@@ -57,7 +57,7 @@ MODULE_AUTHOR( "Maxim Yevtyushkin, Kevin Thayer, Chris Kennedy, "
57 "Hans Verkuil, Mauro Carvalho Chehab"); 57 "Hans Verkuil, Mauro Carvalho Chehab");
58MODULE_LICENSE("GPL"); 58MODULE_LICENSE("GPL");
59 59
60static int debug; 60static bool debug;
61module_param(debug, bool, 0644); 61module_param(debug, bool, 0644);
62 62
63MODULE_PARM_DESC(debug, "Debug level (0-1)"); 63MODULE_PARM_DESC(debug, "Debug level (0-1)");
diff --git a/drivers/media/video/sh_mobile_ceu_camera.c b/drivers/media/video/sh_mobile_ceu_camera.c
index f390682629c..c51decfcae1 100644
--- a/drivers/media/video/sh_mobile_ceu_camera.c
+++ b/drivers/media/video/sh_mobile_ceu_camera.c
@@ -566,8 +566,10 @@ static int sh_mobile_ceu_add_device(struct soc_camera_device *icd)
566 ret = sh_mobile_ceu_soft_reset(pcdev); 566 ret = sh_mobile_ceu_soft_reset(pcdev);
567 567
568 csi2_sd = find_csi2(pcdev); 568 csi2_sd = find_csi2(pcdev);
569 if (csi2_sd) 569 if (csi2_sd) {
570 csi2_sd->grp_id = (long)icd; 570 csi2_sd->grp_id = soc_camera_grp_id(icd);
571 v4l2_set_subdev_hostdata(csi2_sd, icd);
572 }
571 573
572 ret = v4l2_subdev_call(csi2_sd, core, s_power, 1); 574 ret = v4l2_subdev_call(csi2_sd, core, s_power, 1);
573 if (ret < 0 && ret != -ENOIOCTLCMD && ret != -ENODEV) { 575 if (ret < 0 && ret != -ENOIOCTLCMD && ret != -ENODEV) {
@@ -768,7 +770,7 @@ static struct v4l2_subdev *find_bus_subdev(struct sh_mobile_ceu_dev *pcdev,
768{ 770{
769 if (pcdev->csi2_pdev) { 771 if (pcdev->csi2_pdev) {
770 struct v4l2_subdev *csi2_sd = find_csi2(pcdev); 772 struct v4l2_subdev *csi2_sd = find_csi2(pcdev);
771 if (csi2_sd && csi2_sd->grp_id == (u32)icd) 773 if (csi2_sd && csi2_sd->grp_id == soc_camera_grp_id(icd))
772 return csi2_sd; 774 return csi2_sd;
773 } 775 }
774 776
@@ -1089,8 +1091,9 @@ static int sh_mobile_ceu_get_formats(struct soc_camera_device *icd, unsigned int
1089 /* Try 2560x1920, 1280x960, 640x480, 320x240 */ 1091 /* Try 2560x1920, 1280x960, 640x480, 320x240 */
1090 mf.width = 2560 >> shift; 1092 mf.width = 2560 >> shift;
1091 mf.height = 1920 >> shift; 1093 mf.height = 1920 >> shift;
1092 ret = v4l2_device_call_until_err(sd->v4l2_dev, (long)icd, video, 1094 ret = v4l2_device_call_until_err(sd->v4l2_dev,
1093 s_mbus_fmt, &mf); 1095 soc_camera_grp_id(icd), video,
1096 s_mbus_fmt, &mf);
1094 if (ret < 0) 1097 if (ret < 0)
1095 return ret; 1098 return ret;
1096 shift++; 1099 shift++;
@@ -1389,7 +1392,8 @@ static int client_s_fmt(struct soc_camera_device *icd,
1389 bool ceu_1to1; 1392 bool ceu_1to1;
1390 int ret; 1393 int ret;
1391 1394
1392 ret = v4l2_device_call_until_err(sd->v4l2_dev, (long)icd, video, 1395 ret = v4l2_device_call_until_err(sd->v4l2_dev,
1396 soc_camera_grp_id(icd), video,
1393 s_mbus_fmt, mf); 1397 s_mbus_fmt, mf);
1394 if (ret < 0) 1398 if (ret < 0)
1395 return ret; 1399 return ret;
@@ -1426,8 +1430,9 @@ static int client_s_fmt(struct soc_camera_device *icd,
1426 tmp_h = min(2 * tmp_h, max_height); 1430 tmp_h = min(2 * tmp_h, max_height);
1427 mf->width = tmp_w; 1431 mf->width = tmp_w;
1428 mf->height = tmp_h; 1432 mf->height = tmp_h;
1429 ret = v4l2_device_call_until_err(sd->v4l2_dev, (long)icd, video, 1433 ret = v4l2_device_call_until_err(sd->v4l2_dev,
1430 s_mbus_fmt, mf); 1434 soc_camera_grp_id(icd), video,
1435 s_mbus_fmt, mf);
1431 dev_geo(dev, "Camera scaled to %ux%u\n", 1436 dev_geo(dev, "Camera scaled to %ux%u\n",
1432 mf->width, mf->height); 1437 mf->width, mf->height);
1433 if (ret < 0) { 1438 if (ret < 0) {
@@ -1580,8 +1585,9 @@ static int sh_mobile_ceu_set_crop(struct soc_camera_device *icd,
1580 } 1585 }
1581 1586
1582 if (interm_width < icd->user_width || interm_height < icd->user_height) { 1587 if (interm_width < icd->user_width || interm_height < icd->user_height) {
1583 ret = v4l2_device_call_until_err(sd->v4l2_dev, (int)icd, video, 1588 ret = v4l2_device_call_until_err(sd->v4l2_dev,
1584 s_mbus_fmt, &mf); 1589 soc_camera_grp_id(icd), video,
1590 s_mbus_fmt, &mf);
1585 if (ret < 0) 1591 if (ret < 0)
1586 return ret; 1592 return ret;
1587 1593
@@ -1867,7 +1873,8 @@ static int sh_mobile_ceu_try_fmt(struct soc_camera_device *icd,
1867 mf.code = xlate->code; 1873 mf.code = xlate->code;
1868 mf.colorspace = pix->colorspace; 1874 mf.colorspace = pix->colorspace;
1869 1875
1870 ret = v4l2_device_call_until_err(sd->v4l2_dev, (long)icd, video, try_mbus_fmt, &mf); 1876 ret = v4l2_device_call_until_err(sd->v4l2_dev, soc_camera_grp_id(icd),
1877 video, try_mbus_fmt, &mf);
1871 if (ret < 0) 1878 if (ret < 0)
1872 return ret; 1879 return ret;
1873 1880
@@ -1891,8 +1898,9 @@ static int sh_mobile_ceu_try_fmt(struct soc_camera_device *icd,
1891 */ 1898 */
1892 mf.width = 2560; 1899 mf.width = 2560;
1893 mf.height = 1920; 1900 mf.height = 1920;
1894 ret = v4l2_device_call_until_err(sd->v4l2_dev, (long)icd, video, 1901 ret = v4l2_device_call_until_err(sd->v4l2_dev,
1895 try_mbus_fmt, &mf); 1902 soc_camera_grp_id(icd), video,
1903 try_mbus_fmt, &mf);
1896 if (ret < 0) { 1904 if (ret < 0) {
1897 /* Shouldn't actually happen... */ 1905 /* Shouldn't actually happen... */
1898 dev_err(icd->parent, 1906 dev_err(icd->parent,
diff --git a/drivers/media/video/sh_mobile_csi2.c b/drivers/media/video/sh_mobile_csi2.c
index ea4f0473ed3..8a652b53ff7 100644
--- a/drivers/media/video/sh_mobile_csi2.c
+++ b/drivers/media/video/sh_mobile_csi2.c
@@ -143,7 +143,7 @@ static int sh_csi2_s_mbus_config(struct v4l2_subdev *sd,
143 const struct v4l2_mbus_config *cfg) 143 const struct v4l2_mbus_config *cfg)
144{ 144{
145 struct sh_csi2 *priv = container_of(sd, struct sh_csi2, subdev); 145 struct sh_csi2 *priv = container_of(sd, struct sh_csi2, subdev);
146 struct soc_camera_device *icd = (struct soc_camera_device *)sd->grp_id; 146 struct soc_camera_device *icd = v4l2_get_subdev_hostdata(sd);
147 struct v4l2_subdev *client_sd = soc_camera_to_subdev(icd); 147 struct v4l2_subdev *client_sd = soc_camera_to_subdev(icd);
148 struct v4l2_mbus_config client_cfg = {.type = V4L2_MBUS_CSI2, 148 struct v4l2_mbus_config client_cfg = {.type = V4L2_MBUS_CSI2,
149 .flags = priv->mipi_flags}; 149 .flags = priv->mipi_flags};
@@ -202,7 +202,7 @@ static void sh_csi2_hwinit(struct sh_csi2 *priv)
202static int sh_csi2_client_connect(struct sh_csi2 *priv) 202static int sh_csi2_client_connect(struct sh_csi2 *priv)
203{ 203{
204 struct sh_csi2_pdata *pdata = priv->pdev->dev.platform_data; 204 struct sh_csi2_pdata *pdata = priv->pdev->dev.platform_data;
205 struct soc_camera_device *icd = (struct soc_camera_device *)priv->subdev.grp_id; 205 struct soc_camera_device *icd = v4l2_get_subdev_hostdata(&priv->subdev);
206 struct v4l2_subdev *client_sd = soc_camera_to_subdev(icd); 206 struct v4l2_subdev *client_sd = soc_camera_to_subdev(icd);
207 struct device *dev = v4l2_get_subdevdata(&priv->subdev); 207 struct device *dev = v4l2_get_subdevdata(&priv->subdev);
208 struct v4l2_mbus_config cfg; 208 struct v4l2_mbus_config cfg;
diff --git a/drivers/media/video/sn9c102/sn9c102_core.c b/drivers/media/video/sn9c102/sn9c102_core.c
index 16cb07c5c27..c2882fa5be8 100644
--- a/drivers/media/video/sn9c102/sn9c102_core.c
+++ b/drivers/media/video/sn9c102/sn9c102_core.c
@@ -75,8 +75,8 @@ MODULE_PARM_DESC(video_nr,
75 "\none and for every other camera." 75 "\none and for every other camera."
76 "\n"); 76 "\n");
77 77
78static short force_munmap[] = {[0 ... SN9C102_MAX_DEVICES-1] = 78static bool force_munmap[] = {[0 ... SN9C102_MAX_DEVICES-1] =
79 SN9C102_FORCE_MUNMAP}; 79 SN9C102_FORCE_MUNMAP};
80module_param_array(force_munmap, bool, NULL, 0444); 80module_param_array(force_munmap, bool, NULL, 0444);
81MODULE_PARM_DESC(force_munmap, 81MODULE_PARM_DESC(force_munmap,
82 " <0|1[,...]>" 82 " <0|1[,...]>"
@@ -3420,27 +3420,4 @@ static struct usb_driver sn9c102_usb_driver = {
3420 .disconnect = sn9c102_usb_disconnect, 3420 .disconnect = sn9c102_usb_disconnect,
3421}; 3421};
3422 3422
3423/*****************************************************************************/ 3423module_usb_driver(sn9c102_usb_driver);
3424
3425static int __init sn9c102_module_init(void)
3426{
3427 int err = 0;
3428
3429 KDBG(2, SN9C102_MODULE_NAME " v" SN9C102_MODULE_VERSION);
3430 KDBG(3, SN9C102_MODULE_AUTHOR);
3431
3432 if ((err = usb_register(&sn9c102_usb_driver)))
3433 KDBG(1, "usb_register() failed");
3434
3435 return err;
3436}
3437
3438
3439static void __exit sn9c102_module_exit(void)
3440{
3441 usb_deregister(&sn9c102_usb_driver);
3442}
3443
3444
3445module_init(sn9c102_module_init);
3446module_exit(sn9c102_module_exit);
diff --git a/drivers/media/video/soc_camera.c b/drivers/media/video/soc_camera.c
index b72580c3895..62e4312515c 100644
--- a/drivers/media/video/soc_camera.c
+++ b/drivers/media/video/soc_camera.c
@@ -1103,7 +1103,8 @@ static int soc_camera_probe(struct soc_camera_device *icd)
1103 } 1103 }
1104 1104
1105 sd = soc_camera_to_subdev(icd); 1105 sd = soc_camera_to_subdev(icd);
1106 sd->grp_id = (long)icd; 1106 sd->grp_id = soc_camera_grp_id(icd);
1107 v4l2_set_subdev_hostdata(sd, icd);
1107 1108
1108 if (v4l2_ctrl_add_handler(&icd->ctrl_handler, sd->ctrl_handler)) 1109 if (v4l2_ctrl_add_handler(&icd->ctrl_handler, sd->ctrl_handler))
1109 goto ectrl; 1110 goto ectrl;
diff --git a/drivers/media/video/stk-webcam.c b/drivers/media/video/stk-webcam.c
index cbc105f975d..3c61aec517a 100644
--- a/drivers/media/video/stk-webcam.c
+++ b/drivers/media/video/stk-webcam.c
@@ -38,11 +38,11 @@
38#include "stk-webcam.h" 38#include "stk-webcam.h"
39 39
40 40
41static int hflip = 1; 41static bool hflip = 1;
42module_param(hflip, bool, 0444); 42module_param(hflip, bool, 0444);
43MODULE_PARM_DESC(hflip, "Horizontal image flip (mirror). Defaults to 1"); 43MODULE_PARM_DESC(hflip, "Horizontal image flip (mirror). Defaults to 1");
44 44
45static int vflip = 1; 45static bool vflip = 1;
46module_param(vflip, bool, 0444); 46module_param(vflip, bool, 0444);
47MODULE_PARM_DESC(vflip, "Vertical image flip. Defaults to 1"); 47MODULE_PARM_DESC(vflip, "Vertical image flip. Defaults to 1");
48 48
@@ -1377,25 +1377,4 @@ static struct usb_driver stk_camera_driver = {
1377#endif 1377#endif
1378}; 1378};
1379 1379
1380 1380module_usb_driver(stk_camera_driver);
1381static int __init stk_camera_init(void)
1382{
1383 int result;
1384
1385 result = usb_register(&stk_camera_driver);
1386 if (result)
1387 STK_ERROR("usb_register failed ! Error number %d\n", result);
1388
1389
1390 return result;
1391}
1392
1393static void __exit stk_camera_exit(void)
1394{
1395 usb_deregister(&stk_camera_driver);
1396}
1397
1398module_init(stk_camera_init);
1399module_exit(stk_camera_exit);
1400
1401
diff --git a/drivers/media/video/tm6000/tm6000-alsa.c b/drivers/media/video/tm6000/tm6000-alsa.c
index 7d675c72fd4..bb2047c1035 100644
--- a/drivers/media/video/tm6000/tm6000-alsa.c
+++ b/drivers/media/video/tm6000/tm6000-alsa.c
@@ -42,7 +42,7 @@
42 42
43static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */ 43static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */
44 44
45static int enable[SNDRV_CARDS] = {1, [1 ... (SNDRV_CARDS - 1)] = 1}; 45static bool enable[SNDRV_CARDS] = {1, [1 ... (SNDRV_CARDS - 1)] = 1};
46 46
47module_param_array(enable, bool, NULL, 0444); 47module_param_array(enable, bool, NULL, 0444);
48MODULE_PARM_DESC(enable, "Enable tm6000x soundcard. default enabled."); 48MODULE_PARM_DESC(enable, "Enable tm6000x soundcard. default enabled.");
diff --git a/drivers/media/video/tm6000/tm6000-cards.c b/drivers/media/video/tm6000/tm6000-cards.c
index ec2578a0fdf..ff939bc0e0b 100644
--- a/drivers/media/video/tm6000/tm6000-cards.c
+++ b/drivers/media/video/tm6000/tm6000-cards.c
@@ -1371,31 +1371,7 @@ static struct usb_driver tm6000_usb_driver = {
1371 .id_table = tm6000_id_table, 1371 .id_table = tm6000_id_table,
1372}; 1372};
1373 1373
1374static int __init tm6000_module_init(void) 1374module_usb_driver(tm6000_usb_driver);
1375{
1376 int result;
1377
1378 printk(KERN_INFO "tm6000" " v4l2 driver version %d.%d.%d loaded\n",
1379 (TM6000_VERSION >> 16) & 0xff,
1380 (TM6000_VERSION >> 8) & 0xff, TM6000_VERSION & 0xff);
1381
1382 /* register this driver with the USB subsystem */
1383 result = usb_register(&tm6000_usb_driver);
1384 if (result)
1385 printk(KERN_ERR "tm6000"
1386 " usb_register failed. Error number %d.\n", result);
1387
1388 return result;
1389}
1390
1391static void __exit tm6000_module_exit(void)
1392{
1393 /* deregister at USB subsystem */
1394 usb_deregister(&tm6000_usb_driver);
1395}
1396
1397module_init(tm6000_module_init);
1398module_exit(tm6000_module_exit);
1399 1375
1400MODULE_DESCRIPTION("Trident TVMaster TM5600/TM6000/TM6010 USB2 adapter"); 1376MODULE_DESCRIPTION("Trident TVMaster TM5600/TM6000/TM6010 USB2 adapter");
1401MODULE_AUTHOR("Mauro Carvalho Chehab"); 1377MODULE_AUTHOR("Mauro Carvalho Chehab");
diff --git a/drivers/media/video/tvp514x.c b/drivers/media/video/tvp514x.c
index 926f0393115..dd26cacd055 100644
--- a/drivers/media/video/tvp514x.c
+++ b/drivers/media/video/tvp514x.c
@@ -52,7 +52,7 @@
52#define LOCK_RETRY_DELAY (200) 52#define LOCK_RETRY_DELAY (200)
53 53
54/* Debug functions */ 54/* Debug functions */
55static int debug; 55static bool debug;
56module_param(debug, bool, 0644); 56module_param(debug, bool, 0644);
57MODULE_PARM_DESC(debug, "Debug level (0-1)"); 57MODULE_PARM_DESC(debug, "Debug level (0-1)");
58 58
diff --git a/drivers/media/video/tvp7002.c b/drivers/media/video/tvp7002.c
index 7875e80cb2f..236c559d5f5 100644
--- a/drivers/media/video/tvp7002.c
+++ b/drivers/media/video/tvp7002.c
@@ -63,7 +63,7 @@ MODULE_LICENSE("GPL");
63#define TVP7002_CL_MASK 0x0f 63#define TVP7002_CL_MASK 0x0f
64 64
65/* Debug functions */ 65/* Debug functions */
66static int debug; 66static bool debug;
67module_param(debug, bool, 0644); 67module_param(debug, bool, 0644);
68MODULE_PARM_DESC(debug, "Debug level (0-2)"); 68MODULE_PARM_DESC(debug, "Debug level (0-2)");
69 69
diff --git a/drivers/media/video/upd64083.c b/drivers/media/video/upd64083.c
index 9bbe61700fd..65d065aa609 100644
--- a/drivers/media/video/upd64083.c
+++ b/drivers/media/video/upd64083.c
@@ -34,7 +34,7 @@ MODULE_DESCRIPTION("uPD64083 driver");
34MODULE_AUTHOR("T. Adachi, Takeru KOMORIYA, Hans Verkuil"); 34MODULE_AUTHOR("T. Adachi, Takeru KOMORIYA, Hans Verkuil");
35MODULE_LICENSE("GPL"); 35MODULE_LICENSE("GPL");
36 36
37static int debug; 37static bool debug;
38module_param(debug, bool, 0644); 38module_param(debug, bool, 0644);
39 39
40MODULE_PARM_DESC(debug, "Debug level (0-1)"); 40MODULE_PARM_DESC(debug, "Debug level (0-1)");
diff --git a/drivers/media/video/via-camera.c b/drivers/media/video/via-camera.c
index cbf13d09b4a..bfae41ba53c 100644
--- a/drivers/media/video/via-camera.c
+++ b/drivers/media/video/via-camera.c
@@ -34,13 +34,13 @@ MODULE_AUTHOR("Jonathan Corbet <corbet@lwn.net>");
34MODULE_DESCRIPTION("VIA framebuffer-based camera controller driver"); 34MODULE_DESCRIPTION("VIA framebuffer-based camera controller driver");
35MODULE_LICENSE("GPL"); 35MODULE_LICENSE("GPL");
36 36
37static int flip_image; 37static bool flip_image;
38module_param(flip_image, bool, 0444); 38module_param(flip_image, bool, 0444);
39MODULE_PARM_DESC(flip_image, 39MODULE_PARM_DESC(flip_image,
40 "If set, the sensor will be instructed to flip the image " 40 "If set, the sensor will be instructed to flip the image "
41 "vertically."); 41 "vertically.");
42 42
43static int override_serial; 43static bool override_serial;
44module_param(override_serial, bool, 0444); 44module_param(override_serial, bool, 0444);
45MODULE_PARM_DESC(override_serial, 45MODULE_PARM_DESC(override_serial,
46 "The camera driver will normally refuse to load if " 46 "The camera driver will normally refuse to load if "
diff --git a/drivers/media/video/zoran/zoran_device.c b/drivers/media/video/zoran/zoran_device.c
index e8a27844bf3..e86173bd132 100644
--- a/drivers/media/video/zoran/zoran_device.c
+++ b/drivers/media/video/zoran/zoran_device.c
@@ -57,7 +57,7 @@
57 ZR36057_ISR_GIRQ1 | \ 57 ZR36057_ISR_GIRQ1 | \
58 ZR36057_ISR_JPEGRepIRQ ) 58 ZR36057_ISR_JPEGRepIRQ )
59 59
60static int lml33dpath; /* default = 0 60static bool lml33dpath; /* default = 0
61 * 1 will use digital path in capture 61 * 1 will use digital path in capture
62 * mode instead of analog. It can be 62 * mode instead of analog. It can be
63 * used for picture adjustments using 63 * used for picture adjustments using
diff --git a/drivers/media/video/zoran/zoran_driver.c b/drivers/media/video/zoran/zoran_driver.c
index d4d05d2ace6..f6d26419445 100644
--- a/drivers/media/video/zoran/zoran_driver.c
+++ b/drivers/media/video/zoran/zoran_driver.c
@@ -1550,7 +1550,7 @@ static int zoran_enum_fmt(struct zoran *zr, struct v4l2_fmtdesc *fmt, int flag)
1550 if (zoran_formats[i].flags & flag && num++ == fmt->index) { 1550 if (zoran_formats[i].flags & flag && num++ == fmt->index) {
1551 strncpy(fmt->description, zoran_formats[i].name, 1551 strncpy(fmt->description, zoran_formats[i].name,
1552 sizeof(fmt->description) - 1); 1552 sizeof(fmt->description) - 1);
1553 /* fmt struct pre-zeroed, so adding '\0' not neeed */ 1553 /* fmt struct pre-zeroed, so adding '\0' not needed */
1554 fmt->pixelformat = zoran_formats[i].fourcc; 1554 fmt->pixelformat = zoran_formats[i].fourcc;
1555 if (zoran_formats[i].flags & ZORAN_FORMAT_COMPRESSED) 1555 if (zoran_formats[i].flags & ZORAN_FORMAT_COMPRESSED)
1556 fmt->flags |= V4L2_FMT_FLAG_COMPRESSED; 1556 fmt->flags |= V4L2_FMT_FLAG_COMPRESSED;
diff --git a/drivers/media/video/zoran/zr36060.c b/drivers/media/video/zoran/zr36060.c
index 5e4f57cbf31..f08546fe223 100644
--- a/drivers/media/video/zoran/zr36060.c
+++ b/drivers/media/video/zoran/zr36060.c
@@ -50,7 +50,7 @@
50/* amount of chips attached via this driver */ 50/* amount of chips attached via this driver */
51static int zr36060_codecs; 51static int zr36060_codecs;
52 52
53static int low_bitrate; 53static bool low_bitrate;
54module_param(low_bitrate, bool, 0); 54module_param(low_bitrate, bool, 0);
55MODULE_PARM_DESC(low_bitrate, "Buz compatibility option, halves bitrate"); 55MODULE_PARM_DESC(low_bitrate, "Buz compatibility option, halves bitrate");
56 56
diff --git a/drivers/media/video/zr364xx.c b/drivers/media/video/zr364xx.c
index e78cf94f491..cd2e39fc4bf 100644
--- a/drivers/media/video/zr364xx.c
+++ b/drivers/media/video/zr364xx.c
@@ -1695,28 +1695,7 @@ static struct usb_driver zr364xx_driver = {
1695 .id_table = device_table 1695 .id_table = device_table
1696}; 1696};
1697 1697
1698 1698module_usb_driver(zr364xx_driver);
1699static int __init zr364xx_init(void)
1700{
1701 int retval;
1702 retval = usb_register(&zr364xx_driver);
1703 if (retval)
1704 printk(KERN_ERR KBUILD_MODNAME ": usb_register failed!\n");
1705 else
1706 printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_DESC "\n");
1707 return retval;
1708}
1709
1710
1711static void __exit zr364xx_exit(void)
1712{
1713 printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_DESC " module unloaded\n");
1714 usb_deregister(&zr364xx_driver);
1715}
1716
1717
1718module_init(zr364xx_init);
1719module_exit(zr364xx_exit);
1720 1699
1721MODULE_AUTHOR(DRIVER_AUTHOR); 1700MODULE_AUTHOR(DRIVER_AUTHOR);
1722MODULE_DESCRIPTION(DRIVER_DESC); 1701MODULE_DESCRIPTION(DRIVER_DESC);