Lines Matching refs:fc

47 	struct flexcop_device *fc = dvbdmxfeed->demux->priv;
48 return flexcop_pid_feed_control(fc, dvbdmxfeed, 1);
53 struct flexcop_device *fc = dvbdmxfeed->demux->priv;
54 return flexcop_pid_feed_control(fc, dvbdmxfeed, 0);
57 static int flexcop_dvb_init(struct flexcop_device *fc)
59 int ret = dvb_register_adapter(&fc->dvb_adapter,
60 "FlexCop Digital TV device", fc->owner,
61 fc->dev, adapter_nr);
66 fc->dvb_adapter.priv = fc;
68 fc->demux.dmx.capabilities = (DMX_TS_FILTERING | DMX_SECTION_FILTERING
70 fc->demux.priv = fc;
71 fc->demux.filternum = fc->demux.feednum = FC_MAX_FEED;
72 fc->demux.start_feed = flexcop_dvb_start_feed;
73 fc->demux.stop_feed = flexcop_dvb_stop_feed;
74 fc->demux.write_to_decoder = NULL;
76 ret = dvb_dmx_init(&fc->demux);
82 fc->hw_frontend.source = DMX_FRONTEND_0;
84 fc->dmxdev.filternum = fc->demux.feednum;
85 fc->dmxdev.demux = &fc->demux.dmx;
86 fc->dmxdev.capabilities = 0;
87 ret = dvb_dmxdev_init(&fc->dmxdev, &fc->dvb_adapter);
93 ret = fc->demux.dmx.add_frontend(&fc->demux.dmx, &fc->hw_frontend);
99 fc->mem_frontend.source = DMX_MEMORY_FE;
100 ret = fc->demux.dmx.add_frontend(&fc->demux.dmx, &fc->mem_frontend);
106 ret = fc->demux.dmx.connect_frontend(&fc->demux.dmx, &fc->hw_frontend);
112 ret = dvb_net_init(&fc->dvb_adapter, &fc->dvbnet, &fc->demux.dmx);
118 fc->init_state |= FC_STATE_DVB_INIT;
122 fc->demux.dmx.disconnect_frontend(&fc->demux.dmx);
124 fc->demux.dmx.remove_frontend(&fc->demux.dmx, &fc->mem_frontend);
126 fc->demux.dmx.remove_frontend(&fc->demux.dmx, &fc->hw_frontend);
128 dvb_dmxdev_release(&fc->dmxdev);
130 dvb_dmx_release(&fc->demux);
132 dvb_unregister_adapter(&fc->dvb_adapter);
136 static void flexcop_dvb_exit(struct flexcop_device *fc)
138 if (fc->init_state & FC_STATE_DVB_INIT) {
139 dvb_net_release(&fc->dvbnet);
141 fc->demux.dmx.close(&fc->demux.dmx);
142 fc->demux.dmx.remove_frontend(&fc->demux.dmx,
143 &fc->mem_frontend);
144 fc->demux.dmx.remove_frontend(&fc->demux.dmx,
145 &fc->hw_frontend);
146 dvb_dmxdev_release(&fc->dmxdev);
147 dvb_dmx_release(&fc->demux);
148 dvb_unregister_adapter(&fc->dvb_adapter);
151 fc->init_state &= ~FC_STATE_DVB_INIT;
156 void flexcop_pass_dmx_data(struct flexcop_device *fc, u8 *buf, u32 len)
158 dvb_dmx_swfilter(&fc->demux, buf, len);
162 void flexcop_pass_dmx_packets(struct flexcop_device *fc, u8 *buf, u32 no)
164 dvb_dmx_swfilter_packets(&fc->demux, buf, no);
168 static void flexcop_reset(struct flexcop_device *fc)
173 fc->write_ibi_reg(fc,ctrl_208,ibi_zero);
186 fc->write_ibi_reg(fc,sw_reset_210,v210);
191 v204 = fc->read_ibi_reg(fc,misc_204);
193 fc->write_ibi_reg(fc,misc_204,v204);
196 fc->write_ibi_reg(fc,misc_204,v204);
199 void flexcop_reset_block_300(struct flexcop_device *fc)
201 flexcop_ibi_value v208_save = fc->read_ibi_reg(fc, ctrl_208),
202 v210 = fc->read_ibi_reg(fc, sw_reset_210);
205 fc->write_ibi_reg(fc,ctrl_208,ibi_zero);
210 fc->write_ibi_reg(fc,sw_reset_210,v210);
211 fc->write_ibi_reg(fc,ctrl_208,v208_save);
217 struct flexcop_device *fc = kzalloc(sizeof(struct flexcop_device),
219 if (!fc) {
227 kfree(fc);
231 fc->bus_specific = bus;
233 return fc;
237 void flexcop_device_kfree(struct flexcop_device *fc)
239 kfree(fc->bus_specific);
240 kfree(fc);
244 int flexcop_device_initialize(struct flexcop_device *fc)
249 flexcop_reset(fc);
250 flexcop_determine_revision(fc);
251 flexcop_sram_init(fc);
252 flexcop_hw_filter_init(fc);
253 flexcop_smc_ctrl(fc, 0);
255 ret = flexcop_dvb_init(fc);
261 ret = flexcop_i2c_init(fc);
266 if (fc->get_mac_addr(fc, 0) == 0) {
267 u8 *b = fc->dvb_adapter.proposed_mac;
269 flexcop_set_mac_filter(fc,b);
270 flexcop_mac_filter_ctrl(fc,1);
274 ret = flexcop_frontend_init(fc);
278 flexcop_device_name(fc,"initialization of","complete");
282 flexcop_device_exit(fc);
287 void flexcop_device_exit(struct flexcop_device *fc)
289 flexcop_frontend_exit(fc);
290 flexcop_i2c_exit(fc);
291 flexcop_dvb_exit(fc);