diff options
-rw-r--r-- | drivers/media/video/cx88/cx88-dvb.c | 3 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-vp3054-i2c.c | 16 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88.h | 6 |
3 files changed, 15 insertions, 10 deletions
diff --git a/drivers/media/video/cx88/cx88-dvb.c b/drivers/media/video/cx88/cx88-dvb.c index d16e5c6d21c0..fce19caf9d04 100644 --- a/drivers/media/video/cx88/cx88-dvb.c +++ b/drivers/media/video/cx88/cx88-dvb.c | |||
@@ -475,8 +475,9 @@ static int dvb_register(struct cx8802_dev *dev) | |||
475 | break; | 475 | break; |
476 | case CX88_BOARD_DNTV_LIVE_DVB_T_PRO: | 476 | case CX88_BOARD_DNTV_LIVE_DVB_T_PRO: |
477 | #if defined(CONFIG_VIDEO_CX88_VP3054) || (defined(CONFIG_VIDEO_CX88_VP3054_MODULE) && defined(MODULE)) | 477 | #if defined(CONFIG_VIDEO_CX88_VP3054) || (defined(CONFIG_VIDEO_CX88_VP3054_MODULE) && defined(MODULE)) |
478 | /* MT352 is on a secondary I2C bus made from some GPIO lines */ | ||
478 | dev->dvb.frontend = dvb_attach(mt352_attach, &dntv_live_dvbt_pro_config, | 479 | dev->dvb.frontend = dvb_attach(mt352_attach, &dntv_live_dvbt_pro_config, |
479 | &((struct vp3054_i2c_state *)dev->card_priv)->adap); | 480 | &dev->vp3054->adap); |
480 | if (dev->dvb.frontend != NULL) { | 481 | if (dev->dvb.frontend != NULL) { |
481 | dvb_attach(dvb_pll_attach, dev->dvb.frontend, 0x61, | 482 | dvb_attach(dvb_pll_attach, dev->dvb.frontend, 0x61, |
482 | &dev->core->i2c_adap, DVB_PLL_FMD1216ME); | 483 | &dev->core->i2c_adap, DVB_PLL_FMD1216ME); |
diff --git a/drivers/media/video/cx88/cx88-vp3054-i2c.c b/drivers/media/video/cx88/cx88-vp3054-i2c.c index 77c37889232b..6ce5af488471 100644 --- a/drivers/media/video/cx88/cx88-vp3054-i2c.c +++ b/drivers/media/video/cx88/cx88-vp3054-i2c.c | |||
@@ -41,7 +41,7 @@ static void vp3054_bit_setscl(void *data, int state) | |||
41 | { | 41 | { |
42 | struct cx8802_dev *dev = data; | 42 | struct cx8802_dev *dev = data; |
43 | struct cx88_core *core = dev->core; | 43 | struct cx88_core *core = dev->core; |
44 | struct vp3054_i2c_state *vp3054_i2c = dev->card_priv; | 44 | struct vp3054_i2c_state *vp3054_i2c = dev->vp3054; |
45 | 45 | ||
46 | if (state) { | 46 | if (state) { |
47 | vp3054_i2c->state |= 0x0001; /* SCL high */ | 47 | vp3054_i2c->state |= 0x0001; /* SCL high */ |
@@ -58,7 +58,7 @@ static void vp3054_bit_setsda(void *data, int state) | |||
58 | { | 58 | { |
59 | struct cx8802_dev *dev = data; | 59 | struct cx8802_dev *dev = data; |
60 | struct cx88_core *core = dev->core; | 60 | struct cx88_core *core = dev->core; |
61 | struct vp3054_i2c_state *vp3054_i2c = dev->card_priv; | 61 | struct vp3054_i2c_state *vp3054_i2c = dev->vp3054; |
62 | 62 | ||
63 | if (state) { | 63 | if (state) { |
64 | vp3054_i2c->state |= 0x0002; /* SDA high */ | 64 | vp3054_i2c->state |= 0x0002; /* SDA high */ |
@@ -113,10 +113,10 @@ int vp3054_i2c_probe(struct cx8802_dev *dev) | |||
113 | if (core->boardnr != CX88_BOARD_DNTV_LIVE_DVB_T_PRO) | 113 | if (core->boardnr != CX88_BOARD_DNTV_LIVE_DVB_T_PRO) |
114 | return 0; | 114 | return 0; |
115 | 115 | ||
116 | dev->card_priv = kzalloc(sizeof(*vp3054_i2c), GFP_KERNEL); | 116 | vp3054_i2c = kzalloc(sizeof(*vp3054_i2c), GFP_KERNEL); |
117 | if (dev->card_priv == NULL) | 117 | if (vp3054_i2c == NULL) |
118 | return -ENOMEM; | 118 | return -ENOMEM; |
119 | vp3054_i2c = dev->card_priv; | 119 | dev->vp3054 = vp3054_i2c; |
120 | 120 | ||
121 | memcpy(&vp3054_i2c->algo, &vp3054_i2c_algo_template, | 121 | memcpy(&vp3054_i2c->algo, &vp3054_i2c_algo_template, |
122 | sizeof(vp3054_i2c->algo)); | 122 | sizeof(vp3054_i2c->algo)); |
@@ -139,8 +139,8 @@ int vp3054_i2c_probe(struct cx8802_dev *dev) | |||
139 | if (0 != rc) { | 139 | if (0 != rc) { |
140 | printk("%s: vp3054_i2c register FAILED\n", core->name); | 140 | printk("%s: vp3054_i2c register FAILED\n", core->name); |
141 | 141 | ||
142 | kfree(dev->card_priv); | 142 | kfree(dev->vp3054); |
143 | dev->card_priv = NULL; | 143 | dev->vp3054 = NULL; |
144 | } | 144 | } |
145 | 145 | ||
146 | return rc; | 146 | return rc; |
@@ -148,7 +148,7 @@ int vp3054_i2c_probe(struct cx8802_dev *dev) | |||
148 | 148 | ||
149 | void vp3054_i2c_remove(struct cx8802_dev *dev) | 149 | void vp3054_i2c_remove(struct cx8802_dev *dev) |
150 | { | 150 | { |
151 | struct vp3054_i2c_state *vp3054_i2c = dev->card_priv; | 151 | struct vp3054_i2c_state *vp3054_i2c = dev->vp3054; |
152 | 152 | ||
153 | if (vp3054_i2c == NULL || | 153 | if (vp3054_i2c == NULL || |
154 | dev->core->boardnr != CX88_BOARD_DNTV_LIVE_DVB_T_PRO) | 154 | dev->core->boardnr != CX88_BOARD_DNTV_LIVE_DVB_T_PRO) |
diff --git a/drivers/media/video/cx88/cx88.h b/drivers/media/video/cx88/cx88.h index 43ba75ba94b4..2e0911bad43a 100644 --- a/drivers/media/video/cx88/cx88.h +++ b/drivers/media/video/cx88/cx88.h | |||
@@ -467,8 +467,12 @@ struct cx8802_dev { | |||
467 | #if defined(CONFIG_VIDEO_CX88_DVB) || defined(CONFIG_VIDEO_CX88_DVB_MODULE) | 467 | #if defined(CONFIG_VIDEO_CX88_DVB) || defined(CONFIG_VIDEO_CX88_DVB_MODULE) |
468 | /* for dvb only */ | 468 | /* for dvb only */ |
469 | struct videobuf_dvb dvb; | 469 | struct videobuf_dvb dvb; |
470 | #endif | ||
470 | 471 | ||
471 | void *card_priv; | 472 | #if defined(CONFIG_VIDEO_CX88_VP3054) || \ |
473 | defined(CONFIG_VIDEO_CX88_VP3054_MODULE) | ||
474 | /* For VP3045 secondary I2C bus support */ | ||
475 | struct vp3054_i2c_state *vp3054; | ||
472 | #endif | 476 | #endif |
473 | /* for switching modulation types */ | 477 | /* for switching modulation types */ |
474 | unsigned char ts_gen_cntrl; | 478 | unsigned char ts_gen_cntrl; |