@@ -35,7 +35,6 @@
#include <media/v4l2-common.h>
#include "go7007-priv.h"
-#include "wis-i2c.h"
/*
* Wait for an interrupt to be delivered from the GO7007SB and return
@@ -191,51 +190,20 @@
* Attempt to instantiate an I2C client by ID, probably loading a module.
*/
static int init_i2c_module(struct i2c_adapter *adapter, const char *type,
- int id, int addr)
+ int addr)
{
struct go7007 *go = i2c_get_adapdata(adapter);
struct v4l2_device *v4l2_dev = &go->v4l2_dev;
- char *modname;
- switch (id) {
- case I2C_DRIVERID_WIS_SAA7115:
- modname = "wis-saa7115";
- break;
- case I2C_DRIVERID_WIS_SAA7113:
- modname = "wis-saa7113";
- break;
- case I2C_DRIVERID_WIS_UDA1342:
- modname = "wis-uda1342";
- break;
- case I2C_DRIVERID_WIS_SONY_TUNER:
- modname = "wis-sony-tuner";
- break;
- case I2C_DRIVERID_WIS_TW9903:
- modname = "wis-tw9903";
- break;
- case I2C_DRIVERID_WIS_TW2804:
- modname = "wis-tw2804";
- break;
- case I2C_DRIVERID_WIS_OV7640:
- modname = "wis-ov7640";
- break;
- case I2C_DRIVERID_S2250:
- modname = "s2250";
- break;
- default:
- modname = NULL;
- break;
- }
-
- if (v4l2_i2c_new_subdev(v4l2_dev, adapter, modname, type, addr, NULL))
+ if (v4l2_i2c_new_subdev(v4l2_dev, adapter, type, type, addr, NULL))
return 0;
- if (modname != NULL)
+ if (type != NULL)
printk(KERN_INFO
- "go7007: probing for module %s failed\n", modname);
+ "go7007: probing for module %s failed\n", type);
else
printk(KERN_INFO
- "go7007: sensor %u seems to be unsupported!\n", id);
+ "go7007: sensor seems to be unsupported!\n");
return -1;
}
@@ -274,11 +242,16 @@
for (i = 0; i < go->board_info->num_i2c_devs; ++i)
init_i2c_module(&go->i2c_adapter,
go->board_info->i2c_devs[i].type,
- go->board_info->i2c_devs[i].id,
go->board_info->i2c_devs[i].addr);
- if (go->board_id == GO7007_BOARDID_ADLINK_MPG24)
- i2c_clients_command(&go->i2c_adapter,
- DECODER_SET_CHANNEL, &go->channel_number);
+ if (go->board_id == GO7007_BOARDID_ADLINK_MPG24) {
+ int channel = go->channel_number;
+ struct v4l2_priv_tun_config config = {
+ .tuner = go->tuner_type,
+ .priv = &channel,
+ };
+ v4l2_device_call_all(&go->v4l2_dev, 0, tuner, s_config,
+ &config);
+ }
}
if (go->board_info->flags & GO7007_BOARD_HAS_AUDIO) {
go->audio_enabled = 1;
@@ -90,7 +90,6 @@
int num_i2c_devs;
struct {
const char *type;
- int id;
int addr;
} i2c_devs[4];
int num_inputs;
@@ -288,3 +287,14 @@
/* snd-go7007.c */
int go7007_snd_init(struct go7007 *go);
int go7007_snd_remove(struct go7007 *go);
+
+/* Flag to indicate that the client needs to be accessed with SCCB semantics */
+/* We re-use the I2C_M_TEN value so the flag passes through the masks in the
+ * core I2C code. Major kludge, but the I2C layer ain't exactly flexible. */
+#define I2C_CLIENT_SCCB 0x10
+
+/* Sony tuner types */
+
+#define TUNER_SONY_BTF_PG472Z 200
+#define TUNER_SONY_BTF_PK467Z 201
+#define TUNER_SONY_BTF_PB463Z 202
@@ -29,7 +29,6 @@
#include <media/tvaudio.h>
#include "go7007-priv.h"
-#include "wis-i2c.h"
static unsigned int assume_endura;
module_param(assume_endura, int, 0644);
@@ -92,8 +91,7 @@
.num_i2c_devs = 1,
.i2c_devs = {
{
- .type = "wis_saa7115",
- .id = I2C_DRIVERID_WIS_SAA7115,
+ .type = "saa7115",
.addr = 0x20,
},
},
@@ -129,8 +127,7 @@
.num_i2c_devs = 1,
.i2c_devs = {
{
- .type = "wis_saa7113",
- .id = I2C_DRIVERID_WIS_SAA7113,
+ .type = "saa7115",
.addr = 0x25,
},
},
@@ -167,8 +164,7 @@
.num_i2c_devs = 1,
.i2c_devs = {
{
- .type = "wis_saa7115",
- .id = I2C_DRIVERID_WIS_SAA7115,
+ .type = "saa7115",
.addr = 0x20,
},
},
@@ -213,18 +209,15 @@
.num_i2c_devs = 3,
.i2c_devs = {
{
- .type = "wis_saa7115",
- .id = I2C_DRIVERID_WIS_SAA7115,
+ .type = "saa7115",
.addr = 0x20,
},
{
.type = "wis_uda1342",
- .id = I2C_DRIVERID_WIS_UDA1342,
.addr = 0x1a,
},
{
.type = "wis_sony_tuner",
- .id = I2C_DRIVERID_WIS_SONY_TUNER,
.addr = 0x60,
},
},
@@ -272,7 +265,6 @@
.i2c_devs = {
{
.type = "wis_ov7640",
- .id = I2C_DRIVERID_WIS_OV7640,
.addr = 0x21,
},
},
@@ -305,7 +297,6 @@
.i2c_devs = {
{
.type = "wis_tw9903",
- .id = I2C_DRIVERID_WIS_TW9903,
.addr = 0x44,
},
},
@@ -394,8 +385,7 @@
.num_i2c_devs = 1,
.i2c_devs = {
{
- .type = "wis_twTW2804",
- .id = I2C_DRIVERID_WIS_TW2804,
+ .type = "wis_tw2804",
.addr = 0x00, /* yes, really */
},
},
@@ -426,7 +416,6 @@
.i2c_devs = {
{
.type = "s2250",
- .id = I2C_DRIVERID_S2250,
.addr = 0x43,
},
},
@@ -25,11 +25,6 @@
#define I2C_DRIVERID_WIS_TW2804 0xf0f6
#define I2C_DRIVERID_S2250 0xf0f7
-/* Flag to indicate that the client needs to be accessed with SCCB semantics */
-/* We re-use the I2C_M_TEN value so the flag passes through the masks in the
- * core I2C code. Major kludge, but the I2C layer ain't exactly flexible. */
-#define I2C_CLIENT_SCCB 0x10
-
/* Definitions for new video decoder commands */
struct video_decoder_resolution {
@@ -38,10 +33,4 @@
};
#define DECODER_SET_RESOLUTION _IOW('d', 200, struct video_decoder_resolution)
-#define DECODER_SET_CHANNEL _IOW('d', 201, int)
-
-/* Sony tuner types */
-
-#define TUNER_SONY_BTF_PG472Z 200
-#define TUNER_SONY_BTF_PK467Z 201
-#define TUNER_SONY_BTF_PB463Z 202
+#define DECODER_SET_CHANNEL _IOW('d', 201, int)
@@ -20,7 +20,7 @@
#include <linux/i2c.h>
#include <linux/videodev2.h>
-#include "wis-i2c.h"
+#include "go7007-priv.h"
struct wis_ov7640 {
int brightness;
@@ -23,7 +23,7 @@
#include <media/v4l2-common.h>
#include <media/v4l2-ioctl.h>
-#include "wis-i2c.h"
+#include "go7007-priv.h"
/* #define MPX_DEBUG */