diff options
Diffstat (limited to 'drivers/media/dvb/b2c2/flexcop.c')
-rw-r--r-- | drivers/media/dvb/b2c2/flexcop.c | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/drivers/media/dvb/b2c2/flexcop.c b/drivers/media/dvb/b2c2/flexcop.c index 8b5d14dd36e3..12873d435406 100644 --- a/drivers/media/dvb/b2c2/flexcop.c +++ b/drivers/media/dvb/b2c2/flexcop.c | |||
@@ -46,7 +46,7 @@ | |||
46 | 46 | ||
47 | int b2c2_flexcop_debug; | 47 | int b2c2_flexcop_debug; |
48 | module_param_named(debug, b2c2_flexcop_debug, int, 0644); | 48 | module_param_named(debug, b2c2_flexcop_debug, int, 0644); |
49 | MODULE_PARM_DESC(debug, "set debug level (1=info,2=tuner,4=i2c,8=ts,16=sram (|-able))." DEBSTATUS); | 49 | MODULE_PARM_DESC(debug, "set debug level (1=info,2=tuner,4=i2c,8=ts,16=sram,32=reg (|-able))." DEBSTATUS); |
50 | #undef DEBSTATUS | 50 | #undef DEBSTATUS |
51 | 51 | ||
52 | /* global zero for ibi values */ | 52 | /* global zero for ibi values */ |
@@ -173,9 +173,20 @@ static void flexcop_reset(struct flexcop_device *fc) | |||
173 | fc->write_ibi_reg(fc,ctrl_208,ibi_zero); | 173 | fc->write_ibi_reg(fc,ctrl_208,ibi_zero); |
174 | 174 | ||
175 | v210.raw = 0; | 175 | v210.raw = 0; |
176 | v210.sw_reset_210.reset_blocks = 0xff; | 176 | v210.sw_reset_210.reset_block_000 = 1; |
177 | v210.sw_reset_210.reset_block_100 = 1; | ||
178 | v210.sw_reset_210.reset_block_200 = 1; | ||
179 | v210.sw_reset_210.reset_block_300 = 1; | ||
180 | v210.sw_reset_210.reset_block_400 = 1; | ||
181 | v210.sw_reset_210.reset_block_500 = 1; | ||
182 | v210.sw_reset_210.reset_block_600 = 1; | ||
183 | v210.sw_reset_210.reset_block_700 = 1; | ||
177 | v210.sw_reset_210.Block_reset_enable = 0xb2; | 184 | v210.sw_reset_210.Block_reset_enable = 0xb2; |
185 | |||
186 | v210.sw_reset_210.Special_controls = 0xc259; | ||
187 | |||
178 | fc->write_ibi_reg(fc,sw_reset_210,v210); | 188 | fc->write_ibi_reg(fc,sw_reset_210,v210); |
189 | msleep(1); | ||
179 | 190 | ||
180 | /* reset the periphical devices */ | 191 | /* reset the periphical devices */ |
181 | 192 | ||
@@ -186,6 +197,25 @@ static void flexcop_reset(struct flexcop_device *fc) | |||
186 | fc->write_ibi_reg(fc,misc_204,v204); | 197 | fc->write_ibi_reg(fc,misc_204,v204); |
187 | } | 198 | } |
188 | 199 | ||
200 | void flexcop_reset_block_300(struct flexcop_device *fc) | ||
201 | { | ||
202 | flexcop_ibi_value v208_save = fc->read_ibi_reg(fc,ctrl_208), | ||
203 | v210 = fc->read_ibi_reg(fc,sw_reset_210); | ||
204 | |||
205 | deb_rdump("208: %08x, 210: %08x\n",v208_save.raw,v210.raw); | ||
206 | |||
207 | fc->write_ibi_reg(fc,ctrl_208,ibi_zero); | ||
208 | |||
209 | v210.sw_reset_210.reset_block_300 = 1; | ||
210 | v210.sw_reset_210.Block_reset_enable = 0xb2; | ||
211 | |||
212 | fc->write_ibi_reg(fc,sw_reset_210,v210); | ||
213 | msleep(1); | ||
214 | |||
215 | fc->write_ibi_reg(fc,ctrl_208,v208_save); | ||
216 | } | ||
217 | EXPORT_SYMBOL(flexcop_reset_block_300); | ||
218 | |||
189 | struct flexcop_device *flexcop_device_kmalloc(size_t bus_specific_len) | 219 | struct flexcop_device *flexcop_device_kmalloc(size_t bus_specific_len) |
190 | { | 220 | { |
191 | void *bus; | 221 | void *bus; |