};
static struct em28xx_reg_seq hauppauge_930c_gpio[] = {
-// xc5000 reset
{EM2874_R80_GPIO, 0x6f, 0xff, 10},
- {EM2874_R80_GPIO, 0x4f, 0xff, 10},
+ {EM2874_R80_GPIO, 0x4f, 0xff, 10}, /* xc5000 reset */
{EM2874_R80_GPIO, 0x6f, 0xff, 10},
{EM2874_R80_GPIO, 0x4f, 0xff, 10},
{ -1, -1, -1, -1},
.tuner_addr = 0x41,
.dvb_gpio = terratec_h5_digital, /* FIXME: probably wrong */
.tuner_gpio = terratec_h5_gpio,
+#else
+ .tuner_type = TUNER_ABSENT,
#endif
.i2c_speed = EM2874_I2C_SECONDARY_BUS_SELECT |
EM28XX_I2C_CLK_WAIT_ENABLE |
[EM2884_BOARD_HAUPPAUGE_WINTV_HVR_930C] = {
.name = "Hauppauge WinTV HVR 930C",
.has_dvb = 1,
-//#if 0
-// .tuner_type = TUNER_XC5000,
-// .tuner_addr = 0x41,
-// .dvb_gpio = hauppauge_930c_digital, /* FIXME: probably wrong */
+#if 0 /* FIXME: Add analog support */
+ .tuner_type = TUNER_XC5000,
+ .tuner_addr = 0x41,
+ .dvb_gpio = hauppauge_930c_digital,
.tuner_gpio = hauppauge_930c_gpio,
-//#endif
+#else
+ .tuner_type = TUNER_ABSENT,
+#endif
.i2c_speed = EM2874_I2C_SECONDARY_BUS_SELECT |
EM28XX_I2C_CLK_WAIT_ENABLE |
EM28XX_I2C_FREQ_400_KHZ,
int i;
struct em28xx_reg_seq hauppauge_hvr930c_init[] = {
- {EM2874_R80_GPIO, 0xff, 0xff, 101}, //11111111
-// {0xd , 0xff, 0xff, 101}, //11111111
- {EM2874_R80_GPIO, 0xfb, 0xff, 50}, //11111011 init bit 3
- {EM2874_R80_GPIO, 0xff, 0xff, 184}, //11111111
+ {EM2874_R80_GPIO, 0xff, 0xff, 0x65},
+ {EM2874_R80_GPIO, 0xfb, 0xff, 0x32},
+ {EM2874_R80_GPIO, 0xff, 0xff, 0xb8},
{ -1, -1, -1, -1},
};
struct em28xx_reg_seq hauppauge_hvr930c_end[] = {
- {EM2874_R80_GPIO, 0xef, 0xff, 1}, //11101111
- {EM2874_R80_GPIO, 0xaf, 0xff, 101}, //10101111 init bit 7
- {EM2874_R80_GPIO, 0xef, 0xff, 118}, //11101111
+ {EM2874_R80_GPIO, 0xef, 0xff, 0x01},
+ {EM2874_R80_GPIO, 0xaf, 0xff, 0x65},
+ {EM2874_R80_GPIO, 0xef, 0xff, 0x76},
+ {EM2874_R80_GPIO, 0xef, 0xff, 0x01},
+ {EM2874_R80_GPIO, 0xcf, 0xff, 0x0b},
+ {EM2874_R80_GPIO, 0xef, 0xff, 0x40},
+
+ {EM2874_R80_GPIO, 0xcf, 0xff, 0x65},
+ {EM2874_R80_GPIO, 0xef, 0xff, 0x65},
+ {EM2874_R80_GPIO, 0xcf, 0xff, 0x0b},
+ {EM2874_R80_GPIO, 0xef, 0xff, 0x65},
-
-//per il tuner?
- {EM2874_R80_GPIO, 0xef, 0xff, 1}, //11101111
- {EM2874_R80_GPIO, 0xcf, 0xff, 11}, //11001111 init bit 6
- {EM2874_R80_GPIO, 0xef, 0xff, 64}, //11101111
-
- {EM2874_R80_GPIO, 0xcf, 0xff, 101}, //11001111 init bit 6
- {EM2874_R80_GPIO, 0xef, 0xff, 101}, //11101111
- {EM2874_R80_GPIO, 0xcf, 0xff, 11}, //11001111 init bit 6
- {EM2874_R80_GPIO, 0xef, 0xff, 101}, //11101111
-
-// {EM2874_R80_GPIO, 0x6f, 0xff, 10}, //01101111
-// {EM2874_R80_GPIO, 0x6d, 0xff, 100}, //01101101 init bit 2
{ -1, -1, -1, -1},
};
- struct em28xx_reg_seq hauppauge_hvr930c_end2[] = {
-// {EM2874_R80_GPIO, 0x6f, 0xff, 124}, //01101111
-// {EM2874_R80_GPIO, 0x4f, 0xff, 11}, //01001111 init bit 6
-// {EM2874_R80_GPIO, 0x6f, 0xff, 1}, //01101111
-// {EM2874_R80_GPIO, 0x4f, 0xff, 10}, //01001111 init bit 6
-// {EM2874_R80_GPIO, 0x6f, 0xff, 100}, //01101111
-// {0xd , 0x42, 0xff, 101}, //11111111
- { -1, -1, -1, -1},
- };
struct {
unsigned char r[4];
int len;
em28xx_write_reg(dev, EM28XX_R06_I2C_CLK, 0x44);
msleep(30);
- em28xx_gpio_set(dev, hauppauge_hvr930c_end2);
- msleep(10);
em28xx_write_reg(dev, EM28XX_R06_I2C_CLK, 0x45);
msleep(10);
dvb->dont_attach_fe1 = 1;
- dvb->fe[0] = dvb_attach(drxk_attach, &hauppauge_930c_drxk, &dev->i2c_adap, &dvb->fe[1]);
+ dvb->fe[0] = dvb_attach(drxk_attach,
+ &hauppauge_930c_drxk, &dev->i2c_adap,
+ &dvb->fe[1]);
if (!dvb->fe[0]) {
result = -EINVAL;
goto out_free;
struct xc5000_config cfg;
memset(&cfg, 0, sizeof(cfg));
cfg.i2c_address = 0x61;
- //cfg.if_khz = 4570; //FIXME
- cfg.if_khz = 4000; //FIXME (should be ok) read from i2c traffic
+ cfg.if_khz = 4000;
if (dvb->fe[0]->ops.i2c_gate_ctrl)
dvb->fe[0]->ops.i2c_gate_ctrl(dvb->fe[0], 1);
- if (!dvb_attach(xc5000_attach, dvb->fe[0], &dev->i2c_adap, &cfg)) {
+ if (!dvb_attach(xc5000_attach, dvb->fe[0], &dev->i2c_adap,
+ &cfg)) {
result = -EINVAL;
goto out_free;
}
/* define general-purpose callback pointer */
dvb->fe[0]->callback = em28xx_tuner_callback;
if (dvb->fe[1])
- dvb->fe[1]->callback = em28xx_tuner_callback;
+ dvb->fe[1]->callback = em28xx_tuner_callback;
/* register everything */
result = em28xx_register_dvb(dvb, THIS_MODULE, dev, &dev->udev->dev);