Lines Matching refs:fc

56 	struct flexcop_device *fc = dvbdmxfeed->demux->priv;  in flexcop_dvb_start_feed()  local
57 return flexcop_pid_feed_control(fc, dvbdmxfeed, 1); in flexcop_dvb_start_feed()
62 struct flexcop_device *fc = dvbdmxfeed->demux->priv; in flexcop_dvb_stop_feed() local
63 return flexcop_pid_feed_control(fc, dvbdmxfeed, 0); in flexcop_dvb_stop_feed()
66 static int flexcop_dvb_init(struct flexcop_device *fc) in flexcop_dvb_init() argument
68 int ret = dvb_register_adapter(&fc->dvb_adapter, in flexcop_dvb_init()
69 "FlexCop Digital TV device", fc->owner, in flexcop_dvb_init()
70 fc->dev, adapter_nr); in flexcop_dvb_init()
75 fc->dvb_adapter.priv = fc; in flexcop_dvb_init()
77 fc->demux.dmx.capabilities = (DMX_TS_FILTERING | DMX_SECTION_FILTERING in flexcop_dvb_init()
79 fc->demux.priv = fc; in flexcop_dvb_init()
80 fc->demux.filternum = fc->demux.feednum = FC_MAX_FEED; in flexcop_dvb_init()
81 fc->demux.start_feed = flexcop_dvb_start_feed; in flexcop_dvb_init()
82 fc->demux.stop_feed = flexcop_dvb_stop_feed; in flexcop_dvb_init()
83 fc->demux.write_to_decoder = NULL; in flexcop_dvb_init()
85 ret = dvb_dmx_init(&fc->demux); in flexcop_dvb_init()
91 fc->hw_frontend.source = DMX_FRONTEND_0; in flexcop_dvb_init()
93 fc->dmxdev.filternum = fc->demux.feednum; in flexcop_dvb_init()
94 fc->dmxdev.demux = &fc->demux.dmx; in flexcop_dvb_init()
95 fc->dmxdev.capabilities = 0; in flexcop_dvb_init()
96 ret = dvb_dmxdev_init(&fc->dmxdev, &fc->dvb_adapter); in flexcop_dvb_init()
102 ret = fc->demux.dmx.add_frontend(&fc->demux.dmx, &fc->hw_frontend); in flexcop_dvb_init()
108 fc->mem_frontend.source = DMX_MEMORY_FE; in flexcop_dvb_init()
109 ret = fc->demux.dmx.add_frontend(&fc->demux.dmx, &fc->mem_frontend); in flexcop_dvb_init()
115 ret = fc->demux.dmx.connect_frontend(&fc->demux.dmx, &fc->hw_frontend); in flexcop_dvb_init()
121 ret = dvb_net_init(&fc->dvb_adapter, &fc->dvbnet, &fc->demux.dmx); in flexcop_dvb_init()
127 fc->init_state |= FC_STATE_DVB_INIT; in flexcop_dvb_init()
131 fc->demux.dmx.disconnect_frontend(&fc->demux.dmx); in flexcop_dvb_init()
133 fc->demux.dmx.remove_frontend(&fc->demux.dmx, &fc->mem_frontend); in flexcop_dvb_init()
135 fc->demux.dmx.remove_frontend(&fc->demux.dmx, &fc->hw_frontend); in flexcop_dvb_init()
137 dvb_dmxdev_release(&fc->dmxdev); in flexcop_dvb_init()
139 dvb_dmx_release(&fc->demux); in flexcop_dvb_init()
141 dvb_unregister_adapter(&fc->dvb_adapter); in flexcop_dvb_init()
145 static void flexcop_dvb_exit(struct flexcop_device *fc) in flexcop_dvb_exit() argument
147 if (fc->init_state & FC_STATE_DVB_INIT) { in flexcop_dvb_exit()
148 dvb_net_release(&fc->dvbnet); in flexcop_dvb_exit()
150 fc->demux.dmx.close(&fc->demux.dmx); in flexcop_dvb_exit()
151 fc->demux.dmx.remove_frontend(&fc->demux.dmx, in flexcop_dvb_exit()
152 &fc->mem_frontend); in flexcop_dvb_exit()
153 fc->demux.dmx.remove_frontend(&fc->demux.dmx, in flexcop_dvb_exit()
154 &fc->hw_frontend); in flexcop_dvb_exit()
155 dvb_dmxdev_release(&fc->dmxdev); in flexcop_dvb_exit()
156 dvb_dmx_release(&fc->demux); in flexcop_dvb_exit()
157 dvb_unregister_adapter(&fc->dvb_adapter); in flexcop_dvb_exit()
160 fc->init_state &= ~FC_STATE_DVB_INIT; in flexcop_dvb_exit()
165 void flexcop_pass_dmx_data(struct flexcop_device *fc, u8 *buf, u32 len) in flexcop_pass_dmx_data() argument
167 dvb_dmx_swfilter(&fc->demux, buf, len); in flexcop_pass_dmx_data()
171 void flexcop_pass_dmx_packets(struct flexcop_device *fc, u8 *buf, u32 no) in flexcop_pass_dmx_packets() argument
173 dvb_dmx_swfilter_packets(&fc->demux, buf, no); in flexcop_pass_dmx_packets()
177 static void flexcop_reset(struct flexcop_device *fc) in flexcop_reset() argument
182 fc->write_ibi_reg(fc,ctrl_208,ibi_zero); in flexcop_reset()
195 fc->write_ibi_reg(fc,sw_reset_210,v210); in flexcop_reset()
200 v204 = fc->read_ibi_reg(fc,misc_204); in flexcop_reset()
202 fc->write_ibi_reg(fc,misc_204,v204); in flexcop_reset()
205 fc->write_ibi_reg(fc,misc_204,v204); in flexcop_reset()
208 void flexcop_reset_block_300(struct flexcop_device *fc) in flexcop_reset_block_300() argument
210 flexcop_ibi_value v208_save = fc->read_ibi_reg(fc, ctrl_208), in flexcop_reset_block_300()
211 v210 = fc->read_ibi_reg(fc, sw_reset_210); in flexcop_reset_block_300()
214 fc->write_ibi_reg(fc,ctrl_208,ibi_zero); in flexcop_reset_block_300()
219 fc->write_ibi_reg(fc,sw_reset_210,v210); in flexcop_reset_block_300()
220 fc->write_ibi_reg(fc,ctrl_208,v208_save); in flexcop_reset_block_300()
226 struct flexcop_device *fc = kzalloc(sizeof(struct flexcop_device), in flexcop_device_kmalloc() local
228 if (!fc) { in flexcop_device_kmalloc()
236 kfree(fc); in flexcop_device_kmalloc()
240 fc->bus_specific = bus; in flexcop_device_kmalloc()
242 return fc; in flexcop_device_kmalloc()
246 void flexcop_device_kfree(struct flexcop_device *fc) in flexcop_device_kfree() argument
248 kfree(fc->bus_specific); in flexcop_device_kfree()
249 kfree(fc); in flexcop_device_kfree()
253 int flexcop_device_initialize(struct flexcop_device *fc) in flexcop_device_initialize() argument
258 flexcop_reset(fc); in flexcop_device_initialize()
259 flexcop_determine_revision(fc); in flexcop_device_initialize()
260 flexcop_sram_init(fc); in flexcop_device_initialize()
261 flexcop_hw_filter_init(fc); in flexcop_device_initialize()
262 flexcop_smc_ctrl(fc, 0); in flexcop_device_initialize()
264 ret = flexcop_dvb_init(fc); in flexcop_device_initialize()
270 ret = flexcop_i2c_init(fc); in flexcop_device_initialize()
275 if (fc->get_mac_addr(fc, 0) == 0) { in flexcop_device_initialize()
276 u8 *b = fc->dvb_adapter.proposed_mac; in flexcop_device_initialize()
278 flexcop_set_mac_filter(fc,b); in flexcop_device_initialize()
279 flexcop_mac_filter_ctrl(fc,1); in flexcop_device_initialize()
283 ret = flexcop_frontend_init(fc); in flexcop_device_initialize()
287 flexcop_device_name(fc,"initialization of","complete"); in flexcop_device_initialize()
291 flexcop_device_exit(fc); in flexcop_device_initialize()
296 void flexcop_device_exit(struct flexcop_device *fc) in flexcop_device_exit() argument
298 flexcop_frontend_exit(fc); in flexcop_device_exit()
299 flexcop_i2c_exit(fc); in flexcop_device_exit()
300 flexcop_dvb_exit(fc); in flexcop_device_exit()