Lines Matching refs:fc
10 static int flexcop_i2c_operation(struct flexcop_device *fc, in flexcop_i2c_operation() argument
19 fc->write_ibi_reg(fc, tw_sm_c_100, ibi_zero); in flexcop_i2c_operation()
20 fc->write_ibi_reg(fc, tw_sm_c_100, *r100); /* initiating i2c operation */ in flexcop_i2c_operation()
23 r = fc->read_ibi_reg(fc, tw_sm_c_100); in flexcop_i2c_operation()
58 if (i2c->fc->dev_type == FC_SKY_REV27) in flexcop_i2c_read4()
61 ret = flexcop_i2c_operation(i2c->fc, &r100); in flexcop_i2c_read4()
65 ret = flexcop_i2c_operation(i2c->fc, &r100); in flexcop_i2c_read4()
75 r104 = i2c->fc->read_ibi_reg(i2c->fc, tw_sm_c_104); in flexcop_i2c_read4()
86 static int flexcop_i2c_write4(struct flexcop_device *fc, in flexcop_i2c_write4() argument
102 fc->write_ibi_reg(fc, tw_sm_c_104, r104); in flexcop_i2c_write4()
103 return flexcop_i2c_operation(fc, &r100); in flexcop_i2c_write4()
150 ret = flexcop_i2c_write4(i2c->fc, r100, buf); in flexcop_i2c_request()
188 if (mutex_lock_interruptible(&i2c->fc->i2c_mutex)) in flexcop_master_xfer()
194 ret = i2c->fc->i2c_request(i2c, FC_READ, msgs[i].addr, in flexcop_master_xfer()
199 ret = i2c->fc->i2c_request(i2c, FC_WRITE, msgs[i].addr, in flexcop_master_xfer()
208 mutex_unlock(&i2c->fc->i2c_mutex); in flexcop_master_xfer()
225 int flexcop_i2c_init(struct flexcop_device *fc) in flexcop_i2c_init() argument
228 mutex_init(&fc->i2c_mutex); in flexcop_i2c_init()
230 fc->fc_i2c_adap[0].fc = fc; in flexcop_i2c_init()
231 fc->fc_i2c_adap[1].fc = fc; in flexcop_i2c_init()
232 fc->fc_i2c_adap[2].fc = fc; in flexcop_i2c_init()
233 fc->fc_i2c_adap[0].port = FC_I2C_PORT_DEMOD; in flexcop_i2c_init()
234 fc->fc_i2c_adap[1].port = FC_I2C_PORT_EEPROM; in flexcop_i2c_init()
235 fc->fc_i2c_adap[2].port = FC_I2C_PORT_TUNER; in flexcop_i2c_init()
237 strlcpy(fc->fc_i2c_adap[0].i2c_adap.name, "B2C2 FlexCop I2C to demod", in flexcop_i2c_init()
238 sizeof(fc->fc_i2c_adap[0].i2c_adap.name)); in flexcop_i2c_init()
239 strlcpy(fc->fc_i2c_adap[1].i2c_adap.name, "B2C2 FlexCop I2C to eeprom", in flexcop_i2c_init()
240 sizeof(fc->fc_i2c_adap[1].i2c_adap.name)); in flexcop_i2c_init()
241 strlcpy(fc->fc_i2c_adap[2].i2c_adap.name, "B2C2 FlexCop I2C to tuner", in flexcop_i2c_init()
242 sizeof(fc->fc_i2c_adap[2].i2c_adap.name)); in flexcop_i2c_init()
244 i2c_set_adapdata(&fc->fc_i2c_adap[0].i2c_adap, &fc->fc_i2c_adap[0]); in flexcop_i2c_init()
245 i2c_set_adapdata(&fc->fc_i2c_adap[1].i2c_adap, &fc->fc_i2c_adap[1]); in flexcop_i2c_init()
246 i2c_set_adapdata(&fc->fc_i2c_adap[2].i2c_adap, &fc->fc_i2c_adap[2]); in flexcop_i2c_init()
248 fc->fc_i2c_adap[0].i2c_adap.algo = in flexcop_i2c_init()
249 fc->fc_i2c_adap[1].i2c_adap.algo = in flexcop_i2c_init()
250 fc->fc_i2c_adap[2].i2c_adap.algo = &flexcop_algo; in flexcop_i2c_init()
251 fc->fc_i2c_adap[0].i2c_adap.algo_data = in flexcop_i2c_init()
252 fc->fc_i2c_adap[1].i2c_adap.algo_data = in flexcop_i2c_init()
253 fc->fc_i2c_adap[2].i2c_adap.algo_data = NULL; in flexcop_i2c_init()
254 fc->fc_i2c_adap[0].i2c_adap.dev.parent = in flexcop_i2c_init()
255 fc->fc_i2c_adap[1].i2c_adap.dev.parent = in flexcop_i2c_init()
256 fc->fc_i2c_adap[2].i2c_adap.dev.parent = fc->dev; in flexcop_i2c_init()
258 ret = i2c_add_adapter(&fc->fc_i2c_adap[0].i2c_adap); in flexcop_i2c_init()
262 ret = i2c_add_adapter(&fc->fc_i2c_adap[1].i2c_adap); in flexcop_i2c_init()
266 ret = i2c_add_adapter(&fc->fc_i2c_adap[2].i2c_adap); in flexcop_i2c_init()
270 fc->init_state |= FC_STATE_I2C_INIT; in flexcop_i2c_init()
274 i2c_del_adapter(&fc->fc_i2c_adap[1].i2c_adap); in flexcop_i2c_init()
276 i2c_del_adapter(&fc->fc_i2c_adap[0].i2c_adap); in flexcop_i2c_init()
280 void flexcop_i2c_exit(struct flexcop_device *fc) in flexcop_i2c_exit() argument
282 if (fc->init_state & FC_STATE_I2C_INIT) { in flexcop_i2c_exit()
283 i2c_del_adapter(&fc->fc_i2c_adap[2].i2c_adap); in flexcop_i2c_exit()
284 i2c_del_adapter(&fc->fc_i2c_adap[1].i2c_adap); in flexcop_i2c_exit()
285 i2c_del_adapter(&fc->fc_i2c_adap[0].i2c_adap); in flexcop_i2c_exit()
287 fc->init_state &= ~FC_STATE_I2C_INIT; in flexcop_i2c_exit()