diff options
| -rw-r--r-- | drivers/media/video/dpc7146.c | 58 | ||||
| -rw-r--r-- | drivers/media/video/hexium_gemini.c | 10 | ||||
| -rw-r--r-- | drivers/media/video/hexium_orion.c | 18 | ||||
| -rw-r--r-- | drivers/media/video/mxb.c | 146 | ||||
| -rw-r--r-- | drivers/media/video/mxb.h | 2 | ||||
| -rw-r--r-- | drivers/media/video/tda9840.c | 3 | ||||
| -rw-r--r-- | drivers/media/video/tea6415c.c | 5 | ||||
| -rw-r--r-- | drivers/media/video/tea6420.c | 5 | 
8 files changed, 125 insertions, 122 deletions
diff --git a/drivers/media/video/dpc7146.c b/drivers/media/video/dpc7146.c index 2831bdd12057..0fcc935828f8 100644 --- a/drivers/media/video/dpc7146.c +++ b/drivers/media/video/dpc7146.c  | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | /* | 1 | /* | 
| 2 | dpc7146.c - v4l2 driver for the dpc7146 demonstration board | 2 | dpc7146.c - v4l2 driver for the dpc7146 demonstration board | 
| 3 | 3 | ||
| 4 | Copyright (C) 2000-2003 Michael Hunold <michael@mihu.de> | 4 | Copyright (C) 2000-2003 Michael Hunold <michael@mihu.de> | 
| 5 | 5 | ||
| 6 | This program is free software; you can redistribute it and/or modify | 6 | This program is free software; you can redistribute it and/or modify | 
| @@ -52,7 +52,7 @@ | |||
| 52 | #define SAA711X_DECODED_BYTES_OF_TS_2 0x1C | 52 | #define SAA711X_DECODED_BYTES_OF_TS_2 0x1C | 
| 53 | #define SAA711X_STATUS_BYTE 0x1F | 53 | #define SAA711X_STATUS_BYTE 0x1F | 
| 54 | 54 | ||
| 55 | #define DPC_BOARD_CAN_DO_VBI(dev) (dev->revision != 0) | 55 | #define DPC_BOARD_CAN_DO_VBI(dev) (dev->revision != 0) | 
| 56 | 56 | ||
| 57 | static int debug = 0; | 57 | static int debug = 0; | 
| 58 | module_param(debug, int, 0); | 58 | module_param(debug, int, 0); | 
| @@ -81,16 +81,16 @@ struct dpc | |||
| 81 | struct video_device *video_dev; | 81 | struct video_device *video_dev; | 
| 82 | struct video_device *vbi_dev; | 82 | struct video_device *vbi_dev; | 
| 83 | 83 | ||
| 84 | struct i2c_adapter i2c_adapter; | 84 | struct i2c_adapter i2c_adapter; | 
| 85 | struct i2c_client *saa7111a; | 85 | struct i2c_client *saa7111a; | 
| 86 | 86 | ||
| 87 | int cur_input; /* current input */ | 87 | int cur_input; /* current input */ | 
| 88 | }; | 88 | }; | 
| 89 | 89 | ||
| 90 | /* fixme: add vbi stuff here */ | 90 | /* fixme: add vbi stuff here */ | 
| 91 | static int dpc_probe(struct saa7146_dev* dev) | 91 | static int dpc_probe(struct saa7146_dev* dev) | 
| 92 | { | 92 | { | 
| 93 | struct dpc* dpc = NULL; | 93 | struct dpc* dpc = NULL; | 
| 94 | struct i2c_client *client; | 94 | struct i2c_client *client; | 
| 95 | struct list_head *item; | 95 | struct list_head *item; | 
| 96 | 96 | ||
| @@ -118,20 +118,20 @@ static int dpc_probe(struct saa7146_dev* dev) | |||
| 118 | /* loop through all i2c-devices on the bus and look who is there */ | 118 | /* loop through all i2c-devices on the bus and look who is there */ | 
| 119 | list_for_each(item,&dpc->i2c_adapter.clients) { | 119 | list_for_each(item,&dpc->i2c_adapter.clients) { | 
| 120 | client = list_entry(item, struct i2c_client, list); | 120 | client = list_entry(item, struct i2c_client, list); | 
| 121 | if( I2C_SAA7111A == client->addr ) | 121 | if( I2C_SAA7111A == client->addr ) | 
| 122 | dpc->saa7111a = client; | 122 | dpc->saa7111a = client; | 
| 123 | } | 123 | } | 
| 124 | 124 | ||
| 125 | /* check if all devices are present */ | 125 | /* check if all devices are present */ | 
| 126 | if( 0 == dpc->saa7111a ) { | 126 | if( 0 == dpc->saa7111a ) { | 
| 127 | DEB_D(("dpc_v4l2.o: dpc_attach failed for this device.\n")); | 127 | DEB_D(("dpc_v4l2.o: dpc_attach failed for this device.\n")); | 
| 128 | i2c_del_adapter(&dpc->i2c_adapter); | 128 | i2c_del_adapter(&dpc->i2c_adapter); | 
| 129 | kfree(dpc); | 129 | kfree(dpc); | 
| 130 | return -ENODEV; | 130 | return -ENODEV; | 
| 131 | } | 131 | } | 
| 132 | 132 | ||
| 133 | /* all devices are present, probe was successful */ | 133 | /* all devices are present, probe was successful */ | 
| 134 | DEB_D(("dpc_v4l2.o: dpc_probe succeeded for this device.\n")); | 134 | DEB_D(("dpc_v4l2.o: dpc_probe succeeded for this device.\n")); | 
| 135 | 135 | ||
| 136 | /* we store the pointer in our private data field */ | 136 | /* we store the pointer in our private data field */ | 
| 137 | dev->ext_priv = dpc; | 137 | dev->ext_priv = dpc; | 
| @@ -182,7 +182,7 @@ static struct saa7146_ext_vv vv_data; | |||
| 182 | static int dpc_attach(struct saa7146_dev* dev, struct saa7146_pci_extension_data *info) | 182 | static int dpc_attach(struct saa7146_dev* dev, struct saa7146_pci_extension_data *info) | 
| 183 | { | 183 | { | 
| 184 | struct dpc* dpc = (struct dpc*)dev->ext_priv; | 184 | struct dpc* dpc = (struct dpc*)dev->ext_priv; | 
| 185 | 185 | ||
| 186 | DEB_D(("dpc_v4l2.o: dpc_attach called.\n")); | 186 | DEB_D(("dpc_v4l2.o: dpc_attach called.\n")); | 
| 187 | 187 | ||
| 188 | /* checking for i2c-devices can be omitted here, because we | 188 | /* checking for i2c-devices can be omitted here, because we | 
| @@ -193,7 +193,7 @@ static int dpc_attach(struct saa7146_dev* dev, struct saa7146_pci_extension_data | |||
| 193 | ERR(("cannot register capture v4l2 device. skipping.\n")); | 193 | ERR(("cannot register capture v4l2 device. skipping.\n")); | 
| 194 | return -1; | 194 | return -1; | 
| 195 | } | 195 | } | 
| 196 | 196 | ||
| 197 | /* initialization stuff (vbi) (only for revision > 0 and for extensions which want it)*/ | 197 | /* initialization stuff (vbi) (only for revision > 0 and for extensions which want it)*/ | 
| 198 | if( 0 != DPC_BOARD_CAN_DO_VBI(dev)) { | 198 | if( 0 != DPC_BOARD_CAN_DO_VBI(dev)) { | 
| 199 | if( 0 != saa7146_register_device(&dpc->vbi_dev, dev, "dpc", VFL_TYPE_VBI)) { | 199 | if( 0 != saa7146_register_device(&dpc->vbi_dev, dev, "dpc", VFL_TYPE_VBI)) { | 
| @@ -205,18 +205,18 @@ static int dpc_attach(struct saa7146_dev* dev, struct saa7146_pci_extension_data | |||
| 205 | 205 | ||
| 206 | printk("dpc: found 'dpc7146 demonstration board'-%d.\n",dpc_num); | 206 | printk("dpc: found 'dpc7146 demonstration board'-%d.\n",dpc_num); | 
| 207 | dpc_num++; | 207 | dpc_num++; | 
| 208 | 208 | ||
| 209 | /* the rest */ | 209 | /* the rest */ | 
| 210 | dpc->cur_input = 0; | 210 | dpc->cur_input = 0; | 
| 211 | dpc_init_done(dev); | 211 | dpc_init_done(dev); | 
| 212 | 212 | ||
| 213 | return 0; | 213 | return 0; | 
| 214 | } | 214 | } | 
| 215 | 215 | ||
| 216 | static int dpc_detach(struct saa7146_dev* dev) | 216 | static int dpc_detach(struct saa7146_dev* dev) | 
| 217 | { | 217 | { | 
| 218 | struct dpc* dpc = (struct dpc*)dev->ext_priv; | 218 | struct dpc* dpc = (struct dpc*)dev->ext_priv; | 
| 219 | 219 | ||
| 220 | DEB_EE(("dev:%p\n",dev)); | 220 | DEB_EE(("dev:%p\n",dev)); | 
| 221 | 221 | ||
| 222 | i2c_release_client(dpc->saa7111a); | 222 | i2c_release_client(dpc->saa7111a); | 
| @@ -238,25 +238,25 @@ static int dpc_detach(struct saa7146_dev* dev) | |||
| 238 | int dpc_vbi_bypass(struct saa7146_dev* dev) | 238 | int dpc_vbi_bypass(struct saa7146_dev* dev) | 
| 239 | { | 239 | { | 
| 240 | struct dpc* dpc = (struct dpc*)dev->ext_priv; | 240 | struct dpc* dpc = (struct dpc*)dev->ext_priv; | 
| 241 | 241 | ||
| 242 | int i = 1; | 242 | int i = 1; | 
| 243 | 243 | ||
| 244 | /* switch bypass in saa7111a */ | 244 | /* switch bypass in saa7111a */ | 
| 245 | if ( 0 != dpc->saa7111a->driver->command(dpc->saa7111a,SAA711X_VBI_BYPASS, &i)) { | 245 | if ( 0 != dpc->saa7111a->driver->command(dpc->saa7111a,SAA711X_VBI_BYPASS, &i)) { | 
| 246 | printk("dpc_v4l2.o: VBI_BYPASS: could not address saa7111a.\n"); | 246 | printk("dpc_v4l2.o: VBI_BYPASS: could not address saa7111a.\n"); | 
| 247 | return -1; | 247 | return -1; | 
| 248 | } | 248 | } | 
| 249 | 249 | ||
| 250 | return 0; | 250 | return 0; | 
| 251 | } | 251 | } | 
| 252 | #endif | 252 | #endif | 
| 253 | 253 | ||
| 254 | static int dpc_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | 254 | static int dpc_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | 
| 255 | { | 255 | { | 
| 256 | struct saa7146_dev *dev = fh->dev; | 256 | struct saa7146_dev *dev = fh->dev; | 
| 257 | struct dpc* dpc = (struct dpc*)dev->ext_priv; | 257 | struct dpc* dpc = (struct dpc*)dev->ext_priv; | 
| 258 | /* | 258 | /* | 
| 259 | struct saa7146_vv *vv = dev->vv_data; | 259 | struct saa7146_vv *vv = dev->vv_data; | 
| 260 | */ | 260 | */ | 
| 261 | switch(cmd) | 261 | switch(cmd) | 
| 262 | { | 262 | { | 
| @@ -264,11 +264,11 @@ static int dpc_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | |||
| 264 | { | 264 | { | 
| 265 | struct v4l2_input *i = arg; | 265 | struct v4l2_input *i = arg; | 
| 266 | DEB_EE(("VIDIOC_ENUMINPUT %d.\n",i->index)); | 266 | DEB_EE(("VIDIOC_ENUMINPUT %d.\n",i->index)); | 
| 267 | 267 | ||
| 268 | if( i->index < 0 || i->index >= DPC_INPUTS) { | 268 | if( i->index < 0 || i->index >= DPC_INPUTS) { | 
| 269 | return -EINVAL; | 269 | return -EINVAL; | 
| 270 | } | 270 | } | 
| 271 | 271 | ||
| 272 | memcpy(i, &dpc_inputs[i->index], sizeof(struct v4l2_input)); | 272 | memcpy(i, &dpc_inputs[i->index], sizeof(struct v4l2_input)); | 
| 273 | 273 | ||
| 274 | DEB_D(("dpc_v4l2.o: v4l2_ioctl: VIDIOC_ENUMINPUT %d.\n",i->index)); | 274 | DEB_D(("dpc_v4l2.o: v4l2_ioctl: VIDIOC_ENUMINPUT %d.\n",i->index)); | 
| @@ -289,13 +289,13 @@ static int dpc_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | |||
| 289 | if (input < 0 || input >= DPC_INPUTS) { | 289 | if (input < 0 || input >= DPC_INPUTS) { | 
| 290 | return -EINVAL; | 290 | return -EINVAL; | 
| 291 | } | 291 | } | 
| 292 | 292 | ||
| 293 | dpc->cur_input = input; | 293 | dpc->cur_input = input; | 
| 294 | 294 | ||
| 295 | /* fixme: switch input here, switch audio, too! */ | 295 | /* fixme: switch input here, switch audio, too! */ | 
| 296 | // saa7146_set_hps_source_and_sync(dev, input_port_selection[input].hps_source, input_port_selection[input].hps_sync); | 296 | // saa7146_set_hps_source_and_sync(dev, input_port_selection[input].hps_source, input_port_selection[input].hps_sync); | 
| 297 | printk("dpc_v4l2.o: VIDIOC_S_INPUT: fixme switch input.\n"); | 297 | printk("dpc_v4l2.o: VIDIOC_S_INPUT: fixme switch input.\n"); | 
| 298 | 298 | ||
| 299 | return 0; | 299 | return 0; | 
| 300 | } | 300 | } | 
| 301 | default: | 301 | default: | 
| @@ -334,8 +334,8 @@ static struct saa7146_standard standard[] = { | |||
| 334 | static struct saa7146_extension extension; | 334 | static struct saa7146_extension extension; | 
| 335 | 335 | ||
| 336 | static struct saa7146_pci_extension_data dpc = { | 336 | static struct saa7146_pci_extension_data dpc = { | 
| 337 | .ext_priv = "Multimedia eXtension Board", | 337 | .ext_priv = "Multimedia eXtension Board", | 
| 338 | .ext = &extension, | 338 | .ext = &extension, | 
| 339 | }; | 339 | }; | 
| 340 | 340 | ||
| 341 | static struct pci_device_id pci_tbl[] = { | 341 | static struct pci_device_id pci_tbl[] = { | 
| @@ -357,7 +357,7 @@ static struct saa7146_ext_vv vv_data = { | |||
| 357 | .capabilities = V4L2_CAP_VBI_CAPTURE, | 357 | .capabilities = V4L2_CAP_VBI_CAPTURE, | 
| 358 | .stds = &standard[0], | 358 | .stds = &standard[0], | 
| 359 | .num_stds = sizeof(standard)/sizeof(struct saa7146_standard), | 359 | .num_stds = sizeof(standard)/sizeof(struct saa7146_standard), | 
| 360 | .std_callback = &std_callback, | 360 | .std_callback = &std_callback, | 
| 361 | .ioctls = &ioctls[0], | 361 | .ioctls = &ioctls[0], | 
| 362 | .ioctl = dpc_ioctl, | 362 | .ioctl = dpc_ioctl, | 
| 363 | }; | 363 | }; | 
| @@ -365,7 +365,7 @@ static struct saa7146_ext_vv vv_data = { | |||
| 365 | static struct saa7146_extension extension = { | 365 | static struct saa7146_extension extension = { | 
| 366 | .name = "dpc7146 demonstration board", | 366 | .name = "dpc7146 demonstration board", | 
| 367 | .flags = SAA7146_USE_I2C_IRQ, | 367 | .flags = SAA7146_USE_I2C_IRQ, | 
| 368 | 368 | ||
| 369 | .pci_tbl = &pci_tbl[0], | 369 | .pci_tbl = &pci_tbl[0], | 
| 370 | .module = THIS_MODULE, | 370 | .module = THIS_MODULE, | 
| 371 | 371 | ||
| @@ -375,7 +375,7 @@ static struct saa7146_extension extension = { | |||
| 375 | 375 | ||
| 376 | .irq_mask = 0, | 376 | .irq_mask = 0, | 
| 377 | .irq_func = NULL, | 377 | .irq_func = NULL, | 
| 378 | }; | 378 | }; | 
| 379 | 379 | ||
| 380 | static int __init dpc_init_module(void) | 380 | static int __init dpc_init_module(void) | 
| 381 | { | 381 | { | 
| @@ -383,7 +383,7 @@ static int __init dpc_init_module(void) | |||
| 383 | DEB_S(("failed to register extension.\n")); | 383 | DEB_S(("failed to register extension.\n")); | 
| 384 | return -ENODEV; | 384 | return -ENODEV; | 
| 385 | } | 385 | } | 
| 386 | 386 | ||
| 387 | return 0; | 387 | return 0; | 
| 388 | } | 388 | } | 
| 389 | 389 | ||
diff --git a/drivers/media/video/hexium_gemini.c b/drivers/media/video/hexium_gemini.c index e7bbeb11553d..c7fed3405655 100644 --- a/drivers/media/video/hexium_gemini.c +++ b/drivers/media/video/hexium_gemini.c  | |||
| @@ -1,9 +1,9 @@ | |||
| 1 | /* | 1 | /* | 
| 2 | hexium_gemini.c - v4l2 driver for Hexium Gemini frame grabber cards | 2 | hexium_gemini.c - v4l2 driver for Hexium Gemini frame grabber cards | 
| 3 | 3 | ||
| 4 | Visit http://www.mihu.de/linux/saa7146/ and follow the link | 4 | Visit http://www.mihu.de/linux/saa7146/ and follow the link | 
| 5 | to "hexium" for further details about this card. | 5 | to "hexium" for further details about this card. | 
| 6 | 6 | ||
| 7 | Copyright (C) 2003 Michael Hunold <michael@mihu.de> | 7 | Copyright (C) 2003 Michael Hunold <michael@mihu.de> | 
| 8 | 8 | ||
| 9 | This program is free software; you can redistribute it and/or modify | 9 | This program is free software; you can redistribute it and/or modify | 
| @@ -81,7 +81,7 @@ struct hexium | |||
| 81 | 81 | ||
| 82 | struct video_device *video_dev; | 82 | struct video_device *video_dev; | 
| 83 | struct i2c_adapter i2c_adapter; | 83 | struct i2c_adapter i2c_adapter; | 
| 84 | 84 | ||
| 85 | int cur_input; /* current input */ | 85 | int cur_input; /* current input */ | 
| 86 | v4l2_std_id cur_std; /* current standard */ | 86 | v4l2_std_id cur_std; /* current standard */ | 
| 87 | int cur_bw; /* current black/white status */ | 87 | int cur_bw; /* current black/white status */ | 
| @@ -174,7 +174,7 @@ static struct saa7146_standard hexium_standards[] = { | |||
| 174 | .h_offset = 1, .h_pixels = 720, | 174 | .h_offset = 1, .h_pixels = 720, | 
| 175 | .v_max_out = 576, .h_max_out = 768, | 175 | .v_max_out = 576, .h_max_out = 768, | 
| 176 | } | 176 | } | 
| 177 | }; | 177 | }; | 
| 178 | 178 | ||
| 179 | /* bring hardware to a sane state. this has to be done, just in case someone | 179 | /* bring hardware to a sane state. this has to be done, just in case someone | 
| 180 | wants to capture from this device before it has been properly initialized. | 180 | wants to capture from this device before it has been properly initialized. | 
| @@ -311,7 +311,7 @@ static int hexium_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | |||
| 311 | struct saa7146_dev *dev = fh->dev; | 311 | struct saa7146_dev *dev = fh->dev; | 
| 312 | struct hexium *hexium = (struct hexium *) dev->ext_priv; | 312 | struct hexium *hexium = (struct hexium *) dev->ext_priv; | 
| 313 | /* | 313 | /* | 
| 314 | struct saa7146_vv *vv = dev->vv_data; | 314 | struct saa7146_vv *vv = dev->vv_data; | 
| 315 | */ | 315 | */ | 
| 316 | switch (cmd) { | 316 | switch (cmd) { | 
| 317 | case VIDIOC_ENUMINPUT: | 317 | case VIDIOC_ENUMINPUT: | 
diff --git a/drivers/media/video/hexium_orion.c b/drivers/media/video/hexium_orion.c index aad4a18aafd6..137c4736da04 100644 --- a/drivers/media/video/hexium_orion.c +++ b/drivers/media/video/hexium_orion.c  | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | 3 | ||
| 4 | Visit http://www.mihu.de/linux/saa7146/ and follow the link | 4 | Visit http://www.mihu.de/linux/saa7146/ and follow the link | 
| 5 | to "hexium" for further details about this card. | 5 | to "hexium" for further details about this card. | 
| 6 | 6 | ||
| 7 | Copyright (C) 2003 Michael Hunold <michael@mihu.de> | 7 | Copyright (C) 2003 Michael Hunold <michael@mihu.de> | 
| 8 | 8 | ||
| 9 | This program is free software; you can redistribute it and/or modify | 9 | This program is free software; you can redistribute it and/or modify | 
| @@ -69,7 +69,7 @@ struct hexium | |||
| 69 | { | 69 | { | 
| 70 | int type; | 70 | int type; | 
| 71 | struct video_device *video_dev; | 71 | struct video_device *video_dev; | 
| 72 | struct i2c_adapter i2c_adapter; | 72 | struct i2c_adapter i2c_adapter; | 
| 73 | 73 | ||
| 74 | int cur_input; /* current input */ | 74 | int cur_input; /* current input */ | 
| 75 | }; | 75 | }; | 
| @@ -86,7 +86,7 @@ static u8 hexium_saa7110[53]={ | |||
| 86 | }; | 86 | }; | 
| 87 | 87 | ||
| 88 | static struct { | 88 | static struct { | 
| 89 | struct hexium_data data[8]; | 89 | struct hexium_data data[8]; | 
| 90 | } hexium_input_select[] = { | 90 | } hexium_input_select[] = { | 
| 91 | { | 91 | { | 
| 92 | { /* cvbs 1 */ | 92 | { /* cvbs 1 */ | 
| @@ -153,7 +153,7 @@ static struct { | |||
| 153 | { 0x30, 0x60 }, | 153 | { 0x30, 0x60 }, | 
| 154 | { 0x31, 0xB5 }, // ?? | 154 | { 0x31, 0xB5 }, // ?? | 
| 155 | { 0x21, 0x03 }, | 155 | { 0x21, 0x03 }, | 
| 156 | } | 156 | } | 
| 157 | }, { | 157 | }, { | 
| 158 | { /* y/c 1 */ | 158 | { /* y/c 1 */ | 
| 159 | { 0x06, 0x80 }, | 159 | { 0x06, 0x80 }, | 
| @@ -187,7 +187,7 @@ static struct { | |||
| 187 | { 0x31, 0x75 }, | 187 | { 0x31, 0x75 }, | 
| 188 | { 0x21, 0x21 }, | 188 | { 0x21, 0x21 }, | 
| 189 | } | 189 | } | 
| 190 | } | 190 | } | 
| 191 | }; | 191 | }; | 
| 192 | 192 | ||
| 193 | static struct saa7146_standard hexium_standards[] = { | 193 | static struct saa7146_standard hexium_standards[] = { | 
| @@ -207,7 +207,7 @@ static struct saa7146_standard hexium_standards[] = { | |||
| 207 | .h_offset = 1, .h_pixels = 720, | 207 | .h_offset = 1, .h_pixels = 720, | 
| 208 | .v_max_out = 576, .h_max_out = 768, | 208 | .v_max_out = 576, .h_max_out = 768, | 
| 209 | } | 209 | } | 
| 210 | }; | 210 | }; | 
| 211 | 211 | ||
| 212 | /* this is only called for old HV-PCI6/Orion cards | 212 | /* this is only called for old HV-PCI6/Orion cards | 
| 213 | without eeprom */ | 213 | without eeprom */ | 
| @@ -272,7 +272,7 @@ static int hexium_probe(struct saa7146_dev *dev) | |||
| 272 | return 0; | 272 | return 0; | 
| 273 | } | 273 | } | 
| 274 | 274 | ||
| 275 | /* check if this is an old hexium Orion card by looking at | 275 | /* check if this is an old hexium Orion card by looking at | 
| 276 | a saa7110 at address 0x4e */ | 276 | a saa7110 at address 0x4e */ | 
| 277 | if (0 == (err = i2c_smbus_xfer(&hexium->i2c_adapter, 0x4e, 0, I2C_SMBUS_READ, 0x00, I2C_SMBUS_BYTE_DATA, &data))) { | 277 | if (0 == (err = i2c_smbus_xfer(&hexium->i2c_adapter, 0x4e, 0, I2C_SMBUS_READ, 0x00, I2C_SMBUS_BYTE_DATA, &data))) { | 
| 278 | printk("hexium_orion: device is a Hexium HV-PCI6/Orion (old).\n"); | 278 | printk("hexium_orion: device is a Hexium HV-PCI6/Orion (old).\n"); | 
| @@ -314,7 +314,7 @@ static int hexium_set_input(struct hexium *hexium, int input) | |||
| 314 | { | 314 | { | 
| 315 | union i2c_smbus_data data; | 315 | union i2c_smbus_data data; | 
| 316 | int i = 0; | 316 | int i = 0; | 
| 317 | 317 | ||
| 318 | DEB_D((".\n")); | 318 | DEB_D((".\n")); | 
| 319 | 319 | ||
| 320 | for (i = 0; i < 8; i++) { | 320 | for (i = 0; i < 8; i++) { | 
| @@ -375,7 +375,7 @@ static int hexium_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | |||
| 375 | struct saa7146_dev *dev = fh->dev; | 375 | struct saa7146_dev *dev = fh->dev; | 
| 376 | struct hexium *hexium = (struct hexium *) dev->ext_priv; | 376 | struct hexium *hexium = (struct hexium *) dev->ext_priv; | 
| 377 | /* | 377 | /* | 
| 378 | struct saa7146_vv *vv = dev->vv_data; | 378 | struct saa7146_vv *vv = dev->vv_data; | 
| 379 | */ | 379 | */ | 
| 380 | switch (cmd) { | 380 | switch (cmd) { | 
| 381 | case VIDIOC_ENUMINPUT: | 381 | case VIDIOC_ENUMINPUT: | 
diff --git a/drivers/media/video/mxb.c b/drivers/media/video/mxb.c index 2f154f415bca..eb3b31867494 100644 --- a/drivers/media/video/mxb.c +++ b/drivers/media/video/mxb.c  | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | /* | 1 | /* | 
| 2 | mxb - v4l2 driver for the Multimedia eXtension Board | 2 | mxb - v4l2 driver for the Multimedia eXtension Board | 
| 3 | 3 | ||
| 4 | Copyright (C) 1998-2006 Michael Hunold <michael@mihu.de> | 4 | Copyright (C) 1998-2006 Michael Hunold <michael@mihu.de> | 
| 5 | 5 | ||
| 6 | Visit http://www.mihu.de/linux/saa7146/mxb/ | 6 | Visit http://www.mihu.de/linux/saa7146/mxb/ | 
| 7 | for further details about this card. | 7 | for further details about this card. | 
| 8 | 8 | ||
| 9 | This program is free software; you can redistribute it and/or modify | 9 | This program is free software; you can redistribute it and/or modify | 
| 10 | it under the terms of the GNU General Public License as published by | 10 | it under the terms of the GNU General Public License as published by | 
| 11 | the Free Software Foundation; either version 2 of the License, or | 11 | the Free Software Foundation; either version 2 of the License, or | 
| @@ -35,12 +35,12 @@ | |||
| 35 | 35 | ||
| 36 | #define I2C_SAA7111 0x24 | 36 | #define I2C_SAA7111 0x24 | 
| 37 | 37 | ||
| 38 | #define MXB_BOARD_CAN_DO_VBI(dev) (dev->revision != 0) | 38 | #define MXB_BOARD_CAN_DO_VBI(dev) (dev->revision != 0) | 
| 39 | 39 | ||
| 40 | /* global variable */ | 40 | /* global variable */ | 
| 41 | static int mxb_num = 0; | 41 | static int mxb_num = 0; | 
| 42 | 42 | ||
| 43 | /* initial frequence the tuner will be tuned to. | 43 | /* initial frequence the tuner will be tuned to. | 
| 44 | in verden (lower saxony, germany) 4148 is a | 44 | in verden (lower saxony, germany) 4148 is a | 
| 45 | channel called "phoenix" */ | 45 | channel called "phoenix" */ | 
| 46 | static int freq = 4148; | 46 | static int freq = 4148; | 
| @@ -55,7 +55,7 @@ MODULE_PARM_DESC(debug, "Turn on/off device debugging (default:off)."); | |||
| 55 | enum { TUNER, AUX1, AUX3, AUX3_YC }; | 55 | enum { TUNER, AUX1, AUX3, AUX3_YC }; | 
| 56 | 56 | ||
| 57 | static struct v4l2_input mxb_inputs[MXB_INPUTS] = { | 57 | static struct v4l2_input mxb_inputs[MXB_INPUTS] = { | 
| 58 | { TUNER, "Tuner", V4L2_INPUT_TYPE_TUNER, 1, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, | 58 | { TUNER, "Tuner", V4L2_INPUT_TYPE_TUNER, 1, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, | 
| 59 | { AUX1, "AUX1", V4L2_INPUT_TYPE_CAMERA, 2, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, | 59 | { AUX1, "AUX1", V4L2_INPUT_TYPE_CAMERA, 2, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, | 
| 60 | { AUX3, "AUX3 Composite", V4L2_INPUT_TYPE_CAMERA, 4, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, | 60 | { AUX3, "AUX3 Composite", V4L2_INPUT_TYPE_CAMERA, 4, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, | 
| 61 | { AUX3_YC, "AUX3 S-Video", V4L2_INPUT_TYPE_CAMERA, 4, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, | 61 | { AUX3_YC, "AUX3 S-Video", V4L2_INPUT_TYPE_CAMERA, 4, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, | 
| @@ -66,7 +66,7 @@ static struct v4l2_input mxb_inputs[MXB_INPUTS] = { | |||
| 66 | static struct { | 66 | static struct { | 
| 67 | int hps_source; | 67 | int hps_source; | 
| 68 | int hps_sync; | 68 | int hps_sync; | 
| 69 | } input_port_selection[MXB_INPUTS] = { | 69 | } input_port_selection[MXB_INPUTS] = { | 
| 70 | { SAA7146_HPS_SOURCE_PORT_A, SAA7146_HPS_SYNC_PORT_A }, | 70 | { SAA7146_HPS_SOURCE_PORT_A, SAA7146_HPS_SYNC_PORT_A }, | 
| 71 | { SAA7146_HPS_SOURCE_PORT_A, SAA7146_HPS_SYNC_PORT_A }, | 71 | { SAA7146_HPS_SOURCE_PORT_A, SAA7146_HPS_SYNC_PORT_A }, | 
| 72 | { SAA7146_HPS_SOURCE_PORT_A, SAA7146_HPS_SYNC_PORT_A }, | 72 | { SAA7146_HPS_SOURCE_PORT_A, SAA7146_HPS_SYNC_PORT_A }, | 
| @@ -81,7 +81,7 @@ static int video_audio_connect[MXB_INPUTS] = | |||
| 81 | /* these are the necessary input-output-pins for bringing one audio source | 81 | /* these are the necessary input-output-pins for bringing one audio source | 
| 82 | (see above) to the CD-output */ | 82 | (see above) to the CD-output */ | 
| 83 | static struct tea6420_multiplex TEA6420_cd[MXB_AUDIOS+1][2] = | 83 | static struct tea6420_multiplex TEA6420_cd[MXB_AUDIOS+1][2] = | 
| 84 | { | 84 | { | 
| 85 | {{1,1,0},{1,1,0}}, /* Tuner */ | 85 | {{1,1,0},{1,1,0}}, /* Tuner */ | 
| 86 | {{5,1,0},{6,1,0}}, /* AUX 1 */ | 86 | {{5,1,0},{6,1,0}}, /* AUX 1 */ | 
| 87 | {{4,1,0},{6,1,0}}, /* AUX 2 */ | 87 | {{4,1,0},{6,1,0}}, /* AUX 2 */ | 
| @@ -122,8 +122,8 @@ static struct saa7146_extension_ioctls ioctls[] = { | |||
| 122 | { VIDIOC_S_FREQUENCY, SAA7146_EXCLUSIVE }, | 122 | { VIDIOC_S_FREQUENCY, SAA7146_EXCLUSIVE }, | 
| 123 | { VIDIOC_G_AUDIO, SAA7146_EXCLUSIVE }, | 123 | { VIDIOC_G_AUDIO, SAA7146_EXCLUSIVE }, | 
| 124 | { VIDIOC_S_AUDIO, SAA7146_EXCLUSIVE }, | 124 | { VIDIOC_S_AUDIO, SAA7146_EXCLUSIVE }, | 
| 125 | { MXB_S_AUDIO_CD, SAA7146_EXCLUSIVE }, /* custom control */ | 125 | { MXB_S_AUDIO_CD, SAA7146_EXCLUSIVE }, /* custom control */ | 
| 126 | { MXB_S_AUDIO_LINE, SAA7146_EXCLUSIVE }, /* custom control */ | 126 | { MXB_S_AUDIO_LINE, SAA7146_EXCLUSIVE }, /* custom control */ | 
| 127 | { 0, 0 } | 127 | { 0, 0 } | 
| 128 | }; | 128 | }; | 
| 129 | 129 | ||
| @@ -132,7 +132,7 @@ struct mxb | |||
| 132 | struct video_device *video_dev; | 132 | struct video_device *video_dev; | 
| 133 | struct video_device *vbi_dev; | 133 | struct video_device *vbi_dev; | 
| 134 | 134 | ||
| 135 | struct i2c_adapter i2c_adapter; | 135 | struct i2c_adapter i2c_adapter; | 
| 136 | 136 | ||
| 137 | struct i2c_client* saa7111a; | 137 | struct i2c_client* saa7111a; | 
| 138 | struct i2c_client* tda9840; | 138 | struct i2c_client* tda9840; | 
| @@ -200,15 +200,15 @@ static int mxb_probe(struct saa7146_dev* dev) | |||
| 200 | client = list_entry(item, struct i2c_client, list); | 200 | client = list_entry(item, struct i2c_client, list); | 
| 201 | if( I2C_TEA6420_1 == client->addr ) | 201 | if( I2C_TEA6420_1 == client->addr ) | 
| 202 | mxb->tea6420_1 = client; | 202 | mxb->tea6420_1 = client; | 
| 203 | if( I2C_TEA6420_2 == client->addr ) | 203 | if( I2C_TEA6420_2 == client->addr ) | 
| 204 | mxb->tea6420_2 = client; | 204 | mxb->tea6420_2 = client; | 
| 205 | if( I2C_TEA6415C_2 == client->addr ) | 205 | if( I2C_TEA6415C_2 == client->addr ) | 
| 206 | mxb->tea6415c = client; | 206 | mxb->tea6415c = client; | 
| 207 | if( I2C_TDA9840 == client->addr ) | 207 | if( I2C_TDA9840 == client->addr ) | 
| 208 | mxb->tda9840 = client; | 208 | mxb->tda9840 = client; | 
| 209 | if( I2C_SAA7111 == client->addr ) | 209 | if( I2C_SAA7111 == client->addr ) | 
| 210 | mxb->saa7111a = client; | 210 | mxb->saa7111a = client; | 
| 211 | if( 0x60 == client->addr ) | 211 | if( 0x60 == client->addr ) | 
| 212 | mxb->tuner = client; | 212 | mxb->tuner = client; | 
| 213 | } | 213 | } | 
| 214 | 214 | ||
| @@ -222,7 +222,7 @@ static int mxb_probe(struct saa7146_dev* dev) | |||
| 222 | return -ENODEV; | 222 | return -ENODEV; | 
| 223 | } | 223 | } | 
| 224 | 224 | ||
| 225 | /* all devices are present, probe was successful */ | 225 | /* all devices are present, probe was successful */ | 
| 226 | 226 | ||
| 227 | /* we store the pointer in our private data field */ | 227 | /* we store the pointer in our private data field */ | 
| 228 | dev->ext_priv = mxb; | 228 | dev->ext_priv = mxb; | 
| @@ -230,7 +230,7 @@ static int mxb_probe(struct saa7146_dev* dev) | |||
| 230 | return 0; | 230 | return 0; | 
| 231 | } | 231 | } | 
| 232 | 232 | ||
| 233 | /* some init data for the saa7740, the so-called 'sound arena module'. | 233 | /* some init data for the saa7740, the so-called 'sound arena module'. | 
| 234 | there are no specs available, so we simply use some init values */ | 234 | there are no specs available, so we simply use some init values */ | 
| 235 | static struct { | 235 | static struct { | 
| 236 | int length; | 236 | int length; | 
| @@ -330,7 +330,7 @@ static int mxb_init_done(struct saa7146_dev* dev) | |||
| 330 | v4l2_std_id std = V4L2_STD_PAL_BG; | 330 | v4l2_std_id std = V4L2_STD_PAL_BG; | 
| 331 | 331 | ||
| 332 | int i = 0, err = 0; | 332 | int i = 0, err = 0; | 
| 333 | struct tea6415c_multiplex vm; | 333 | struct tea6415c_multiplex vm; | 
| 334 | 334 | ||
| 335 | /* select video mode in saa7111a */ | 335 | /* select video mode in saa7111a */ | 
| 336 | i = VIDEO_MODE_PAL; | 336 | i = VIDEO_MODE_PAL; | 
| @@ -380,16 +380,16 @@ static int mxb_init_done(struct saa7146_dev* dev) | |||
| 380 | vm.in = 3; | 380 | vm.in = 3; | 
| 381 | vm.out = 13; | 381 | vm.out = 13; | 
| 382 | mxb->tea6415c->driver->command(mxb->tea6415c,TEA6415C_SWITCH, &vm); | 382 | mxb->tea6415c->driver->command(mxb->tea6415c,TEA6415C_SWITCH, &vm); | 
| 383 | 383 | ||
| 384 | /* the rest for mxb */ | 384 | /* the rest for mxb */ | 
| 385 | mxb->cur_input = 0; | 385 | mxb->cur_input = 0; | 
| 386 | mxb->cur_mute = 1; | 386 | mxb->cur_mute = 1; | 
| 387 | 387 | ||
| 388 | mxb->cur_mode = V4L2_TUNER_MODE_STEREO; | 388 | mxb->cur_mode = V4L2_TUNER_MODE_STEREO; | 
| 389 | mxb->tda9840->driver->command(mxb->tda9840, TDA9840_SWITCH, &mxb->cur_mode); | 389 | mxb->tda9840->driver->command(mxb->tda9840, TDA9840_SWITCH, &mxb->cur_mode); | 
| 390 | 390 | ||
| 391 | /* check if the saa7740 (aka 'sound arena module') is present | 391 | /* check if the saa7740 (aka 'sound arena module') is present | 
| 392 | on the mxb. if so, we must initialize it. due to lack of | 392 | on the mxb. if so, we must initialize it. due to lack of | 
| 393 | informations about the saa7740, the values were reverse | 393 | informations about the saa7740, the values were reverse | 
| 394 | engineered. */ | 394 | engineered. */ | 
| 395 | msg.addr = 0x1b; | 395 | msg.addr = 0x1b; | 
| @@ -409,7 +409,7 @@ static int mxb_init_done(struct saa7146_dev* dev) | |||
| 409 | break; | 409 | break; | 
| 410 | } | 410 | } | 
| 411 | 411 | ||
| 412 | msg.len = mxb_saa7740_init[i].length; | 412 | msg.len = mxb_saa7740_init[i].length; | 
| 413 | msg.buf = &mxb_saa7740_init[i].data[0]; | 413 | msg.buf = &mxb_saa7740_init[i].data[0]; | 
| 414 | if( 1 != (err = i2c_transfer(&mxb->i2c_adapter, &msg, 1))) { | 414 | if( 1 != (err = i2c_transfer(&mxb->i2c_adapter, &msg, 1))) { | 
| 415 | DEB_D(("failed to initialize 'sound arena module'.\n")); | 415 | DEB_D(("failed to initialize 'sound arena module'.\n")); | 
| @@ -418,12 +418,12 @@ static int mxb_init_done(struct saa7146_dev* dev) | |||
| 418 | } | 418 | } | 
| 419 | INFO(("'sound arena module' detected.\n")); | 419 | INFO(("'sound arena module' detected.\n")); | 
| 420 | } | 420 | } | 
| 421 | err: | 421 | err: | 
| 422 | /* the rest for saa7146: you should definitely set some basic values | 422 | /* the rest for saa7146: you should definitely set some basic values | 
| 423 | for the input-port handling of the saa7146. */ | 423 | for the input-port handling of the saa7146. */ | 
| 424 | 424 | ||
| 425 | /* ext->saa has been filled by the core driver */ | 425 | /* ext->saa has been filled by the core driver */ | 
| 426 | 426 | ||
| 427 | /* some stuff is done via variables */ | 427 | /* some stuff is done via variables */ | 
| 428 | saa7146_set_hps_source_and_sync(dev, input_port_selection[mxb->cur_input].hps_source, input_port_selection[mxb->cur_input].hps_sync); | 428 | saa7146_set_hps_source_and_sync(dev, input_port_selection[mxb->cur_input].hps_source, input_port_selection[mxb->cur_input].hps_sync); | 
| 429 | 429 | ||
| @@ -431,7 +431,7 @@ err: | |||
| 431 | 431 | ||
| 432 | /* this is ugly, but because of the fact that this is completely | 432 | /* this is ugly, but because of the fact that this is completely | 
| 433 | hardware dependend, it should be done directly... */ | 433 | hardware dependend, it should be done directly... */ | 
| 434 | saa7146_write(dev, DD1_STREAM_B, 0x00000000); | 434 | saa7146_write(dev, DD1_STREAM_B, 0x00000000); | 
| 435 | saa7146_write(dev, DD1_INIT, 0x02000200); | 435 | saa7146_write(dev, DD1_INIT, 0x02000200); | 
| 436 | saa7146_write(dev, MC2, (MASK_09 | MASK_25 | MASK_10 | MASK_26)); | 436 | saa7146_write(dev, MC2, (MASK_09 | MASK_25 | MASK_10 | MASK_26)); | 
| 437 | 437 | ||
| @@ -453,7 +453,7 @@ static struct saa7146_ext_vv vv_data; | |||
| 453 | static int mxb_attach(struct saa7146_dev* dev, struct saa7146_pci_extension_data *info) | 453 | static int mxb_attach(struct saa7146_dev* dev, struct saa7146_pci_extension_data *info) | 
| 454 | { | 454 | { | 
| 455 | struct mxb* mxb = (struct mxb*)dev->ext_priv; | 455 | struct mxb* mxb = (struct mxb*)dev->ext_priv; | 
| 456 | 456 | ||
| 457 | DEB_EE(("dev:%p\n",dev)); | 457 | DEB_EE(("dev:%p\n",dev)); | 
| 458 | 458 | ||
| 459 | /* checking for i2c-devices can be omitted here, because we | 459 | /* checking for i2c-devices can be omitted here, because we | 
| @@ -464,7 +464,7 @@ static int mxb_attach(struct saa7146_dev* dev, struct saa7146_pci_extension_data | |||
| 464 | ERR(("cannot register capture v4l2 device. skipping.\n")); | 464 | ERR(("cannot register capture v4l2 device. skipping.\n")); | 
| 465 | return -1; | 465 | return -1; | 
| 466 | } | 466 | } | 
| 467 | 467 | ||
| 468 | /* initialization stuff (vbi) (only for revision > 0 and for extensions which want it)*/ | 468 | /* initialization stuff (vbi) (only for revision > 0 and for extensions which want it)*/ | 
| 469 | if( 0 != MXB_BOARD_CAN_DO_VBI(dev)) { | 469 | if( 0 != MXB_BOARD_CAN_DO_VBI(dev)) { | 
| 470 | if( 0 != saa7146_register_device(&mxb->vbi_dev, dev, "mxb", VFL_TYPE_VBI)) { | 470 | if( 0 != saa7146_register_device(&mxb->vbi_dev, dev, "mxb", VFL_TYPE_VBI)) { | 
| @@ -513,17 +513,17 @@ static int mxb_detach(struct saa7146_dev* dev) | |||
| 513 | return 0; | 513 | return 0; | 
| 514 | } | 514 | } | 
| 515 | 515 | ||
| 516 | static int mxb_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | 516 | static int mxb_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | 
| 517 | { | 517 | { | 
| 518 | struct saa7146_dev *dev = fh->dev; | 518 | struct saa7146_dev *dev = fh->dev; | 
| 519 | struct mxb* mxb = (struct mxb*)dev->ext_priv; | 519 | struct mxb* mxb = (struct mxb*)dev->ext_priv; | 
| 520 | struct saa7146_vv *vv = dev->vv_data; | 520 | struct saa7146_vv *vv = dev->vv_data; | 
| 521 | 521 | ||
| 522 | switch(cmd) { | 522 | switch(cmd) { | 
| 523 | case VIDIOC_ENUMINPUT: | 523 | case VIDIOC_ENUMINPUT: | 
| 524 | { | 524 | { | 
| 525 | struct v4l2_input *i = arg; | 525 | struct v4l2_input *i = arg; | 
| 526 | 526 | ||
| 527 | DEB_EE(("VIDIOC_ENUMINPUT %d.\n",i->index)); | 527 | DEB_EE(("VIDIOC_ENUMINPUT %d.\n",i->index)); | 
| 528 | if( i->index < 0 || i->index >= MXB_INPUTS) { | 528 | if( i->index < 0 || i->index >= MXB_INPUTS) { | 
| 529 | return -EINVAL; | 529 | return -EINVAL; | 
| @@ -559,11 +559,11 @@ static int mxb_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | |||
| 559 | break; | 559 | break; | 
| 560 | } | 560 | } | 
| 561 | } | 561 | } | 
| 562 | 562 | ||
| 563 | if( i < 0 ) { | 563 | if( i < 0 ) { | 
| 564 | return -EAGAIN; | 564 | return -EAGAIN; | 
| 565 | } | 565 | } | 
| 566 | 566 | ||
| 567 | switch (vc->id ) { | 567 | switch (vc->id ) { | 
| 568 | case V4L2_CID_AUDIO_MUTE: { | 568 | case V4L2_CID_AUDIO_MUTE: { | 
| 569 | vc->value = mxb->cur_mute; | 569 | vc->value = mxb->cur_mute; | 
| @@ -571,7 +571,7 @@ static int mxb_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | |||
| 571 | return 0; | 571 | return 0; | 
| 572 | } | 572 | } | 
| 573 | } | 573 | } | 
| 574 | 574 | ||
| 575 | DEB_EE(("VIDIOC_G_CTRL V4L2_CID_AUDIO_MUTE:%d.\n",vc->value)); | 575 | DEB_EE(("VIDIOC_G_CTRL V4L2_CID_AUDIO_MUTE:%d.\n",vc->value)); | 
| 576 | return 0; | 576 | return 0; | 
| 577 | } | 577 | } | 
| @@ -580,17 +580,17 @@ static int mxb_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | |||
| 580 | { | 580 | { | 
| 581 | struct v4l2_control *vc = arg; | 581 | struct v4l2_control *vc = arg; | 
| 582 | int i = 0; | 582 | int i = 0; | 
| 583 | 583 | ||
| 584 | for (i = MAXCONTROLS - 1; i >= 0; i--) { | 584 | for (i = MAXCONTROLS - 1; i >= 0; i--) { | 
| 585 | if (mxb_controls[i].id == vc->id) { | 585 | if (mxb_controls[i].id == vc->id) { | 
| 586 | break; | 586 | break; | 
| 587 | } | 587 | } | 
| 588 | } | 588 | } | 
| 589 | 589 | ||
| 590 | if( i < 0 ) { | 590 | if( i < 0 ) { | 
| 591 | return -EAGAIN; | 591 | return -EAGAIN; | 
| 592 | } | 592 | } | 
| 593 | 593 | ||
| 594 | switch (vc->id ) { | 594 | switch (vc->id ) { | 
| 595 | case V4L2_CID_AUDIO_MUTE: { | 595 | case V4L2_CID_AUDIO_MUTE: { | 
| 596 | mxb->cur_mute = vc->value; | 596 | mxb->cur_mute = vc->value; | 
| @@ -614,12 +614,12 @@ static int mxb_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | |||
| 614 | *input = mxb->cur_input; | 614 | *input = mxb->cur_input; | 
| 615 | 615 | ||
| 616 | DEB_EE(("VIDIOC_G_INPUT %d.\n",*input)); | 616 | DEB_EE(("VIDIOC_G_INPUT %d.\n",*input)); | 
| 617 | return 0; | 617 | return 0; | 
| 618 | } | 618 | } | 
| 619 | case VIDIOC_S_INPUT: | 619 | case VIDIOC_S_INPUT: | 
| 620 | { | 620 | { | 
| 621 | int input = *(int *)arg; | 621 | int input = *(int *)arg; | 
| 622 | struct tea6415c_multiplex vm; | 622 | struct tea6415c_multiplex vm; | 
| 623 | int i = 0; | 623 | int i = 0; | 
| 624 | 624 | ||
| 625 | DEB_EE(("VIDIOC_S_INPUT %d.\n",input)); | 625 | DEB_EE(("VIDIOC_S_INPUT %d.\n",input)); | 
| @@ -627,34 +627,34 @@ static int mxb_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | |||
| 627 | if (input < 0 || input >= MXB_INPUTS) { | 627 | if (input < 0 || input >= MXB_INPUTS) { | 
| 628 | return -EINVAL; | 628 | return -EINVAL; | 
| 629 | } | 629 | } | 
| 630 | 630 | ||
| 631 | /* fixme: locke das setzen des inputs mit hilfe des mutexes | 631 | /* fixme: locke das setzen des inputs mit hilfe des mutexes | 
| 632 | mutex_lock(&dev->lock); | 632 | mutex_lock(&dev->lock); | 
| 633 | video_mux(dev,*i); | 633 | video_mux(dev,*i); | 
| 634 | mutex_unlock(&dev->lock); | 634 | mutex_unlock(&dev->lock); | 
| 635 | */ | 635 | */ | 
| 636 | 636 | ||
| 637 | /* fixme: check if streaming capture | 637 | /* fixme: check if streaming capture | 
| 638 | if ( 0 != dev->streaming ) { | 638 | if ( 0 != dev->streaming ) { | 
| 639 | DEB_D(("VIDIOC_S_INPUT illegal while streaming.\n")); | 639 | DEB_D(("VIDIOC_S_INPUT illegal while streaming.\n")); | 
| 640 | return -EPERM; | 640 | return -EPERM; | 
| 641 | } | 641 | } | 
| 642 | */ | 642 | */ | 
| 643 | 643 | ||
| 644 | mxb->cur_input = input; | 644 | mxb->cur_input = input; | 
| 645 | 645 | ||
| 646 | saa7146_set_hps_source_and_sync(dev, input_port_selection[input].hps_source, input_port_selection[input].hps_sync); | 646 | saa7146_set_hps_source_and_sync(dev, input_port_selection[input].hps_source, input_port_selection[input].hps_sync); | 
| 647 | 647 | ||
| 648 | /* prepare switching of tea6415c and saa7111a; | 648 | /* prepare switching of tea6415c and saa7111a; | 
| 649 | have a look at the 'background'-file for further informations */ | 649 | have a look at the 'background'-file for further informations */ | 
| 650 | switch( input ) { | 650 | switch( input ) { | 
| 651 | 651 | ||
| 652 | case TUNER: | 652 | case TUNER: | 
| 653 | { | 653 | { | 
| 654 | i = 0; | 654 | i = 0; | 
| 655 | vm.in = 3; | 655 | vm.in = 3; | 
| 656 | vm.out = 17; | 656 | vm.out = 17; | 
| 657 | 657 | ||
| 658 | if ( 0 != mxb->tea6415c->driver->command(mxb->tea6415c,TEA6415C_SWITCH, &vm)) { | 658 | if ( 0 != mxb->tea6415c->driver->command(mxb->tea6415c,TEA6415C_SWITCH, &vm)) { | 
| 659 | printk("VIDIOC_S_INPUT: could not address tea6415c #1\n"); | 659 | printk("VIDIOC_S_INPUT: could not address tea6415c #1\n"); | 
| 660 | return -EFAULT; | 660 | return -EFAULT; | 
| @@ -662,7 +662,7 @@ static int mxb_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | |||
| 662 | /* connect tuner-output always to multicable */ | 662 | /* connect tuner-output always to multicable */ | 
| 663 | vm.in = 3; | 663 | vm.in = 3; | 
| 664 | vm.out = 13; | 664 | vm.out = 13; | 
| 665 | break; | 665 | break; | 
| 666 | } | 666 | } | 
| 667 | case AUX3_YC: | 667 | case AUX3_YC: | 
| 668 | { | 668 | { | 
| @@ -703,11 +703,11 @@ static int mxb_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | |||
| 703 | break; | 703 | break; | 
| 704 | } | 704 | } | 
| 705 | } | 705 | } | 
| 706 | 706 | ||
| 707 | /* switch video in saa7111a */ | 707 | /* switch video in saa7111a */ | 
| 708 | if ( 0 != mxb->saa7111a->driver->command(mxb->saa7111a,DECODER_SET_INPUT, &i)) { | 708 | if ( 0 != mxb->saa7111a->driver->command(mxb->saa7111a,DECODER_SET_INPUT, &i)) { | 
| 709 | printk("VIDIOC_S_INPUT: could not address saa7111a #1.\n"); | 709 | printk("VIDIOC_S_INPUT: could not address saa7111a #1.\n"); | 
| 710 | } | 710 | } | 
| 711 | 711 | ||
| 712 | /* switch the audio-source only if necessary */ | 712 | /* switch the audio-source only if necessary */ | 
| 713 | if( 0 == mxb->cur_mute ) { | 713 | if( 0 == mxb->cur_mute ) { | 
| @@ -738,11 +738,11 @@ static int mxb_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | |||
| 738 | t->rangehigh = 13684; /* 855.25 MHz / 62.5 kHz = 13684 */ | 738 | t->rangehigh = 13684; /* 855.25 MHz / 62.5 kHz = 13684 */ | 
| 739 | /* FIXME: add the real signal strength here */ | 739 | /* FIXME: add the real signal strength here */ | 
| 740 | t->signal = 0xffff; | 740 | t->signal = 0xffff; | 
| 741 | t->afc = 0; | 741 | t->afc = 0; | 
| 742 | 742 | ||
| 743 | mxb->tda9840->driver->command(mxb->tda9840,TDA9840_DETECT, &byte); | 743 | mxb->tda9840->driver->command(mxb->tda9840,TDA9840_DETECT, &byte); | 
| 744 | t->audmode = mxb->cur_mode; | 744 | t->audmode = mxb->cur_mode; | 
| 745 | 745 | ||
| 746 | if( byte < 0 ) { | 746 | if( byte < 0 ) { | 
| 747 | t->rxsubchans = V4L2_TUNER_SUB_MONO; | 747 | t->rxsubchans = V4L2_TUNER_SUB_MONO; | 
| 748 | } else { | 748 | } else { | 
| @@ -777,12 +777,12 @@ static int mxb_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | |||
| 777 | struct v4l2_tuner *t = arg; | 777 | struct v4l2_tuner *t = arg; | 
| 778 | int result = 0; | 778 | int result = 0; | 
| 779 | int byte = 0; | 779 | int byte = 0; | 
| 780 | 780 | ||
| 781 | if( 0 != t->index ) { | 781 | if( 0 != t->index ) { | 
| 782 | DEB_D(("VIDIOC_S_TUNER: channel %d does not have a tuner attached.\n",t->index)); | 782 | DEB_D(("VIDIOC_S_TUNER: channel %d does not have a tuner attached.\n",t->index)); | 
| 783 | return -EINVAL; | 783 | return -EINVAL; | 
| 784 | } | 784 | } | 
| 785 | 785 | ||
| 786 | switch(t->audmode) { | 786 | switch(t->audmode) { | 
| 787 | case V4L2_TUNER_MODE_STEREO: { | 787 | case V4L2_TUNER_MODE_STEREO: { | 
| 788 | mxb->cur_mode = V4L2_TUNER_MODE_STEREO; | 788 | mxb->cur_mode = V4L2_TUNER_MODE_STEREO; | 
| @@ -813,7 +813,7 @@ static int mxb_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | |||
| 813 | if( 0 != (result = mxb->tda9840->driver->command(mxb->tda9840, TDA9840_SWITCH, &byte))) { | 813 | if( 0 != (result = mxb->tda9840->driver->command(mxb->tda9840, TDA9840_SWITCH, &byte))) { | 
| 814 | printk("VIDIOC_S_TUNER error. result:%d, byte:%d\n",result,byte); | 814 | printk("VIDIOC_S_TUNER error. result:%d, byte:%d\n",result,byte); | 
| 815 | } | 815 | } | 
| 816 | 816 | ||
| 817 | return 0; | 817 | return 0; | 
| 818 | } | 818 | } | 
| 819 | case VIDIOC_G_FREQUENCY: | 819 | case VIDIOC_G_FREQUENCY: | 
| @@ -839,7 +839,7 @@ static int mxb_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | |||
| 839 | 839 | ||
| 840 | if (V4L2_TUNER_ANALOG_TV != f->type) | 840 | if (V4L2_TUNER_ANALOG_TV != f->type) | 
| 841 | return -EINVAL; | 841 | return -EINVAL; | 
| 842 | 842 | ||
| 843 | if(0 != mxb->cur_input) { | 843 | if(0 != mxb->cur_input) { | 
| 844 | DEB_D(("VIDIOC_S_FREQ: channel %d does not have a tuner!\n",mxb->cur_input)); | 844 | DEB_D(("VIDIOC_S_FREQ: channel %d does not have a tuner!\n",mxb->cur_input)); | 
| 845 | return -EINVAL; | 845 | return -EINVAL; | 
| @@ -848,7 +848,7 @@ static int mxb_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | |||
| 848 | mxb->cur_freq = *f; | 848 | mxb->cur_freq = *f; | 
| 849 | DEB_EE(("VIDIOC_S_FREQUENCY: freq:0x%08x.\n", mxb->cur_freq.frequency)); | 849 | DEB_EE(("VIDIOC_S_FREQUENCY: freq:0x%08x.\n", mxb->cur_freq.frequency)); | 
| 850 | 850 | ||
| 851 | /* tune in desired frequency */ | 851 | /* tune in desired frequency */ | 
| 852 | mxb->tuner->driver->command(mxb->tuner, VIDIOC_S_FREQUENCY, &mxb->cur_freq); | 852 | mxb->tuner->driver->command(mxb->tuner, VIDIOC_S_FREQUENCY, &mxb->cur_freq); | 
| 853 | 853 | ||
| 854 | /* hack: changing the frequency should invalidate the vbi-counter (=> alevt) */ | 854 | /* hack: changing the frequency should invalidate the vbi-counter (=> alevt) */ | 
| @@ -861,12 +861,12 @@ static int mxb_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | |||
| 861 | case MXB_S_AUDIO_CD: | 861 | case MXB_S_AUDIO_CD: | 
| 862 | { | 862 | { | 
| 863 | int i = *(int*)arg; | 863 | int i = *(int*)arg; | 
| 864 | 864 | ||
| 865 | if( i < 0 || i >= MXB_AUDIOS ) { | 865 | if( i < 0 || i >= MXB_AUDIOS ) { | 
| 866 | DEB_D(("illegal argument to MXB_S_AUDIO_CD: i:%d.\n",i)); | 866 | DEB_D(("illegal argument to MXB_S_AUDIO_CD: i:%d.\n",i)); | 
| 867 | return -EINVAL; | 867 | return -EINVAL; | 
| 868 | } | 868 | } | 
| 869 | 869 | ||
| 870 | DEB_EE(("MXB_S_AUDIO_CD: i:%d.\n",i)); | 870 | DEB_EE(("MXB_S_AUDIO_CD: i:%d.\n",i)); | 
| 871 | 871 | ||
| 872 | mxb->tea6420_1->driver->command(mxb->tea6420_1,TEA6420_SWITCH, &TEA6420_cd[i][0]); | 872 | mxb->tea6420_1->driver->command(mxb->tea6420_1,TEA6420_SWITCH, &TEA6420_cd[i][0]); | 
| @@ -877,12 +877,12 @@ static int mxb_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | |||
| 877 | case MXB_S_AUDIO_LINE: | 877 | case MXB_S_AUDIO_LINE: | 
| 878 | { | 878 | { | 
| 879 | int i = *(int*)arg; | 879 | int i = *(int*)arg; | 
| 880 | 880 | ||
| 881 | if( i < 0 || i >= MXB_AUDIOS ) { | 881 | if( i < 0 || i >= MXB_AUDIOS ) { | 
| 882 | DEB_D(("illegal argument to MXB_S_AUDIO_LINE: i:%d.\n",i)); | 882 | DEB_D(("illegal argument to MXB_S_AUDIO_LINE: i:%d.\n",i)); | 
| 883 | return -EINVAL; | 883 | return -EINVAL; | 
| 884 | } | 884 | } | 
| 885 | 885 | ||
| 886 | DEB_EE(("MXB_S_AUDIO_LINE: i:%d.\n",i)); | 886 | DEB_EE(("MXB_S_AUDIO_LINE: i:%d.\n",i)); | 
| 887 | mxb->tea6420_1->driver->command(mxb->tea6420_1,TEA6420_SWITCH, &TEA6420_line[i][0]); | 887 | mxb->tea6420_1->driver->command(mxb->tea6420_1,TEA6420_SWITCH, &TEA6420_line[i][0]); | 
| 888 | mxb->tea6420_2->driver->command(mxb->tea6420_2,TEA6420_SWITCH, &TEA6420_line[i][1]); | 888 | mxb->tea6420_2->driver->command(mxb->tea6420_2,TEA6420_SWITCH, &TEA6420_line[i][1]); | 
| @@ -894,13 +894,13 @@ static int mxb_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | |||
| 894 | struct v4l2_audio *a = arg; | 894 | struct v4l2_audio *a = arg; | 
| 895 | 895 | ||
| 896 | if( a->index < 0 || a->index > MXB_INPUTS ) { | 896 | if( a->index < 0 || a->index > MXB_INPUTS ) { | 
| 897 | DEB_D(("VIDIOC_G_AUDIO %d out of range.\n",a->index)); | 897 | DEB_D(("VIDIOC_G_AUDIO %d out of range.\n",a->index)); | 
| 898 | return -EINVAL; | 898 | return -EINVAL; | 
| 899 | } | 899 | } | 
| 900 | 900 | ||
| 901 | DEB_EE(("VIDIOC_G_AUDIO %d.\n",a->index)); | 901 | DEB_EE(("VIDIOC_G_AUDIO %d.\n",a->index)); | 
| 902 | memcpy(a, &mxb_audios[video_audio_connect[mxb->cur_input]], sizeof(struct v4l2_audio)); | 902 | memcpy(a, &mxb_audios[video_audio_connect[mxb->cur_input]], sizeof(struct v4l2_audio)); | 
| 903 | 903 | ||
| 904 | return 0; | 904 | return 0; | 
| 905 | } | 905 | } | 
| 906 | case VIDIOC_S_AUDIO: | 906 | case VIDIOC_S_AUDIO: | 
| @@ -908,7 +908,7 @@ static int mxb_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | |||
| 908 | struct v4l2_audio *a = arg; | 908 | struct v4l2_audio *a = arg; | 
| 909 | DEB_D(("VIDIOC_S_AUDIO %d.\n",a->index)); | 909 | DEB_D(("VIDIOC_S_AUDIO %d.\n",a->index)); | 
| 910 | return 0; | 910 | return 0; | 
| 911 | } | 911 | } | 
| 912 | default: | 912 | default: | 
| 913 | /* | 913 | /* | 
| 914 | DEB2(printk("does not handle this ioctl.\n")); | 914 | DEB2(printk("does not handle this ioctl.\n")); | 
| @@ -928,7 +928,7 @@ static int std_callback(struct saa7146_dev* dev, struct saa7146_standard *std) | |||
| 928 | v4l2_std_id std = V4L2_STD_PAL_I; | 928 | v4l2_std_id std = V4L2_STD_PAL_I; | 
| 929 | DEB_D(("VIDIOC_S_STD: setting mxb for PAL_I.\n")); | 929 | DEB_D(("VIDIOC_S_STD: setting mxb for PAL_I.\n")); | 
| 930 | /* set the 7146 gpio register -- I don't know what this does exactly */ | 930 | /* set the 7146 gpio register -- I don't know what this does exactly */ | 
| 931 | saa7146_write(dev, GPIO_CTRL, 0x00404050); | 931 | saa7146_write(dev, GPIO_CTRL, 0x00404050); | 
| 932 | /* unset the 7111 gpio register -- I don't know what this does exactly */ | 932 | /* unset the 7111 gpio register -- I don't know what this does exactly */ | 
| 933 | mxb->saa7111a->driver->command(mxb->saa7111a,DECODER_SET_GPIO, &zero); | 933 | mxb->saa7111a->driver->command(mxb->saa7111a,DECODER_SET_GPIO, &zero); | 
| 934 | mxb->tuner->driver->command(mxb->tuner, VIDIOC_S_STD, &std); | 934 | mxb->tuner->driver->command(mxb->tuner, VIDIOC_S_STD, &std); | 
| @@ -936,7 +936,7 @@ static int std_callback(struct saa7146_dev* dev, struct saa7146_standard *std) | |||
| 936 | v4l2_std_id std = V4L2_STD_PAL_BG; | 936 | v4l2_std_id std = V4L2_STD_PAL_BG; | 
| 937 | DEB_D(("VIDIOC_S_STD: setting mxb for PAL/NTSC/SECAM.\n")); | 937 | DEB_D(("VIDIOC_S_STD: setting mxb for PAL/NTSC/SECAM.\n")); | 
| 938 | /* set the 7146 gpio register -- I don't know what this does exactly */ | 938 | /* set the 7146 gpio register -- I don't know what this does exactly */ | 
| 939 | saa7146_write(dev, GPIO_CTRL, 0x00404050); | 939 | saa7146_write(dev, GPIO_CTRL, 0x00404050); | 
| 940 | /* set the 7111 gpio register -- I don't know what this does exactly */ | 940 | /* set the 7111 gpio register -- I don't know what this does exactly */ | 
| 941 | mxb->saa7111a->driver->command(mxb->saa7111a,DECODER_SET_GPIO, &one); | 941 | mxb->saa7111a->driver->command(mxb->saa7111a,DECODER_SET_GPIO, &one); | 
| 942 | mxb->tuner->driver->command(mxb->tuner, VIDIOC_S_STD, &std); | 942 | mxb->tuner->driver->command(mxb->tuner, VIDIOC_S_STD, &std); | 
| @@ -969,8 +969,8 @@ static struct saa7146_standard standard[] = { | |||
| 969 | }; | 969 | }; | 
| 970 | 970 | ||
| 971 | static struct saa7146_pci_extension_data mxb = { | 971 | static struct saa7146_pci_extension_data mxb = { | 
| 972 | .ext_priv = "Multimedia eXtension Board", | 972 | .ext_priv = "Multimedia eXtension Board", | 
| 973 | .ext = &extension, | 973 | .ext = &extension, | 
| 974 | }; | 974 | }; | 
| 975 | 975 | ||
| 976 | static struct pci_device_id pci_tbl[] = { | 976 | static struct pci_device_id pci_tbl[] = { | 
| @@ -992,7 +992,7 @@ static struct saa7146_ext_vv vv_data = { | |||
| 992 | .capabilities = V4L2_CAP_TUNER | V4L2_CAP_VBI_CAPTURE, | 992 | .capabilities = V4L2_CAP_TUNER | V4L2_CAP_VBI_CAPTURE, | 
| 993 | .stds = &standard[0], | 993 | .stds = &standard[0], | 
| 994 | .num_stds = sizeof(standard)/sizeof(struct saa7146_standard), | 994 | .num_stds = sizeof(standard)/sizeof(struct saa7146_standard), | 
| 995 | .std_callback = &std_callback, | 995 | .std_callback = &std_callback, | 
| 996 | .ioctls = &ioctls[0], | 996 | .ioctls = &ioctls[0], | 
| 997 | .ioctl = mxb_ioctl, | 997 | .ioctl = mxb_ioctl, | 
| 998 | }; | 998 | }; | 
| @@ -1000,7 +1000,7 @@ static struct saa7146_ext_vv vv_data = { | |||
| 1000 | static struct saa7146_extension extension = { | 1000 | static struct saa7146_extension extension = { | 
| 1001 | .name = MXB_IDENTIFIER, | 1001 | .name = MXB_IDENTIFIER, | 
| 1002 | .flags = SAA7146_USE_I2C_IRQ, | 1002 | .flags = SAA7146_USE_I2C_IRQ, | 
| 1003 | 1003 | ||
| 1004 | .pci_tbl = &pci_tbl[0], | 1004 | .pci_tbl = &pci_tbl[0], | 
| 1005 | .module = THIS_MODULE, | 1005 | .module = THIS_MODULE, | 
| 1006 | 1006 | ||
| @@ -1010,7 +1010,7 @@ static struct saa7146_extension extension = { | |||
| 1010 | 1010 | ||
| 1011 | .irq_mask = 0, | 1011 | .irq_mask = 0, | 
| 1012 | .irq_func = NULL, | 1012 | .irq_func = NULL, | 
| 1013 | }; | 1013 | }; | 
| 1014 | 1014 | ||
| 1015 | static int __init mxb_init_module(void) | 1015 | static int __init mxb_init_module(void) | 
| 1016 | { | 1016 | { | 
| @@ -1018,7 +1018,7 @@ static int __init mxb_init_module(void) | |||
| 1018 | DEB_S(("failed to register extension.\n")); | 1018 | DEB_S(("failed to register extension.\n")); | 
| 1019 | return -ENODEV; | 1019 | return -ENODEV; | 
| 1020 | } | 1020 | } | 
| 1021 | 1021 | ||
| 1022 | return 0; | 1022 | return 0; | 
| 1023 | } | 1023 | } | 
| 1024 | 1024 | ||
diff --git a/drivers/media/video/mxb.h b/drivers/media/video/mxb.h index 2332ed5f7c6b..400a57ba62ec 100644 --- a/drivers/media/video/mxb.h +++ b/drivers/media/video/mxb.h  | |||
| @@ -38,5 +38,5 @@ static struct v4l2_audio mxb_audios[MXB_AUDIOS] = { | |||
| 38 | .name = "CD-ROM (X10)", | 38 | .name = "CD-ROM (X10)", | 
| 39 | .capability = V4L2_AUDCAP_STEREO, | 39 | .capability = V4L2_AUDCAP_STEREO, | 
| 40 | } | 40 | } | 
| 41 | }; | 41 | }; | 
| 42 | #endif | 42 | #endif | 
diff --git a/drivers/media/video/tda9840.c b/drivers/media/video/tda9840.c index ed4c04119ccc..0243700f58ae 100644 --- a/drivers/media/video/tda9840.c +++ b/drivers/media/video/tda9840.c  | |||
| @@ -24,6 +24,7 @@ | |||
| 24 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 24 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 
| 25 | */ | 25 | */ | 
| 26 | 26 | ||
| 27 | |||
| 27 | #include <linux/module.h> | 28 | #include <linux/module.h> | 
| 28 | #include <linux/ioctl.h> | 29 | #include <linux/ioctl.h> | 
| 29 | #include <linux/i2c.h> | 30 | #include <linux/i2c.h> | 
| @@ -222,7 +223,7 @@ static int detach(struct i2c_client *client) | |||
| 222 | 223 | ||
| 223 | static struct i2c_driver driver = { | 224 | static struct i2c_driver driver = { | 
| 224 | .driver = { | 225 | .driver = { | 
| 225 | .name = "tda9840", | 226 | .name = "tda9840", | 
| 226 | }, | 227 | }, | 
| 227 | .id = I2C_DRIVERID_TDA9840, | 228 | .id = I2C_DRIVERID_TDA9840, | 
| 228 | .attach_adapter = attach, | 229 | .attach_adapter = attach, | 
diff --git a/drivers/media/video/tea6415c.c b/drivers/media/video/tea6415c.c index bb35844e3842..774ed0dbc56d 100644 --- a/drivers/media/video/tea6415c.c +++ b/drivers/media/video/tea6415c.c  | |||
| @@ -26,6 +26,7 @@ | |||
| 26 | Foundation, Inc., 675 Mvss Ave, Cambridge, MA 02139, USA. | 26 | Foundation, Inc., 675 Mvss Ave, Cambridge, MA 02139, USA. | 
| 27 | */ | 27 | */ | 
| 28 | 28 | ||
| 29 | |||
| 29 | #include <linux/module.h> | 30 | #include <linux/module.h> | 
| 30 | #include <linux/ioctl.h> | 31 | #include <linux/ioctl.h> | 
| 31 | #include <linux/i2c.h> | 32 | #include <linux/i2c.h> | 
| @@ -107,7 +108,7 @@ static int switch_matrix(struct i2c_client *client, int i, int o) | |||
| 107 | { | 108 | { | 
| 108 | u8 byte = 0; | 109 | u8 byte = 0; | 
| 109 | int ret; | 110 | int ret; | 
| 110 | 111 | ||
| 111 | dprintk("adr:0x%02x, i:%d, o:%d\n", client->addr, i, o); | 112 | dprintk("adr:0x%02x, i:%d, o:%d\n", client->addr, i, o); | 
| 112 | 113 | ||
| 113 | /* check if the pins are valid */ | 114 | /* check if the pins are valid */ | 
| @@ -191,7 +192,7 @@ static int command(struct i2c_client *client, unsigned int cmd, void *arg) | |||
| 191 | 192 | ||
| 192 | static struct i2c_driver driver = { | 193 | static struct i2c_driver driver = { | 
| 193 | .driver = { | 194 | .driver = { | 
| 194 | .name = "tea6415c", | 195 | .name = "tea6415c", | 
| 195 | }, | 196 | }, | 
| 196 | .id = I2C_DRIVERID_TEA6415C, | 197 | .id = I2C_DRIVERID_TEA6415C, | 
| 197 | .attach_adapter = attach, | 198 | .attach_adapter = attach, | 
diff --git a/drivers/media/video/tea6420.c b/drivers/media/video/tea6420.c index 4dcba5a4fff0..ad7d2872cfbf 100644 --- a/drivers/media/video/tea6420.c +++ b/drivers/media/video/tea6420.c  | |||
| @@ -26,6 +26,7 @@ | |||
| 26 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 26 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 
| 27 | */ | 27 | */ | 
| 28 | 28 | ||
| 29 | |||
| 29 | #include <linux/module.h> | 30 | #include <linux/module.h> | 
| 30 | #include <linux/ioctl.h> | 31 | #include <linux/ioctl.h> | 
| 31 | #include <linux/i2c.h> | 32 | #include <linux/i2c.h> | 
| @@ -83,7 +84,7 @@ static int tea6420_switch(struct i2c_client *client, int i, int o, int g) | |||
| 83 | dprintk("i2c_smbus_write_byte() failed, ret:%d\n", ret); | 84 | dprintk("i2c_smbus_write_byte() failed, ret:%d\n", ret); | 
| 84 | return -EIO; | 85 | return -EIO; | 
| 85 | } | 86 | } | 
| 86 | 87 | ||
| 87 | return 0; | 88 | return 0; | 
| 88 | } | 89 | } | 
| 89 | 90 | ||
| @@ -167,7 +168,7 @@ static int command(struct i2c_client *client, unsigned int cmd, void *arg) | |||
| 167 | 168 | ||
| 168 | static struct i2c_driver driver = { | 169 | static struct i2c_driver driver = { | 
| 169 | .driver = { | 170 | .driver = { | 
| 170 | .name = "tea6420", | 171 | .name = "tea6420", | 
| 171 | }, | 172 | }, | 
| 172 | .id = I2C_DRIVERID_TEA6420, | 173 | .id = I2C_DRIVERID_TEA6420, | 
| 173 | .attach_adapter = attach, | 174 | .attach_adapter = attach, | 
