• Home
  • Raw
  • Download

Lines Matching +full:auto +full:- +full:i2c

7  * DVB-S2 CI card (cimax2) with following copyrights:
29 struct i2c_client *client = s->client; in sp2_read_i2c()
30 struct i2c_adapter *adap = client->adapter; in sp2_read_i2c()
33 .addr = client->addr, in sp2_read_i2c()
38 .addr = client->addr, in sp2_read_i2c()
48 dev_err(&client->dev, "i2c read error, reg = 0x%02x, status = %d\n", in sp2_read_i2c()
53 return -EIO; in sp2_read_i2c()
56 dev_dbg(&s->client->dev, "addr=0x%04x, reg = 0x%02x, data = %02x\n", in sp2_read_i2c()
57 client->addr, reg, buf[0]); in sp2_read_i2c()
66 struct i2c_client *client = s->client; in sp2_write_i2c()
67 struct i2c_adapter *adap = client->adapter; in sp2_write_i2c()
69 .addr = client->addr, in sp2_write_i2c()
76 dev_err(&client->dev, "i2c wr reg=%02x: len=%d is too big!\n", in sp2_write_i2c()
78 return -EINVAL; in sp2_write_i2c()
87 dev_err(&client->dev, "i2c write error, reg = 0x%02x, status = %d\n", in sp2_write_i2c()
92 return -EIO; in sp2_write_i2c()
95 dev_dbg(&s->client->dev, "addr=0x%04x, reg = 0x%02x, data = %*ph\n", in sp2_write_i2c()
96 client->addr, reg, len, buf); in sp2_write_i2c()
104 struct sp2 *s = en50221->data; in sp2_ci_op_cam()
107 int (*ci_op_cam)(void*, u8, int, u8, int*) = s->ci_control; in sp2_ci_op_cam()
110 return -EINVAL; in sp2_ci_op_cam()
116 if (s->module_access_type != acs) { in sp2_ci_op_cam()
130 s->module_access_type = acs; in sp2_ci_op_cam()
134 ret = ci_op_cam(s->priv, read, addr, data, &mem); in sp2_ci_op_cam()
136 dev_err(&s->client->dev, "callback not defined"); in sp2_ci_op_cam()
137 return -EINVAL; in sp2_ci_op_cam()
143 dev_dbg(&s->client->dev, "%s: slot=%d, addr=0x%04x, %s, data=%x", in sp2_ci_op_cam()
185 struct sp2 *s = en50221->data; in sp2_ci_slot_reset()
189 dev_dbg(&s->client->dev, "slot: %d\n", slot); in sp2_ci_slot_reset()
192 return -EINVAL; in sp2_ci_slot_reset()
217 struct sp2 *s = en50221->data; in sp2_ci_slot_shutdown()
219 dev_dbg(&s->client->dev, "slot:%d\n", slot); in sp2_ci_slot_shutdown()
227 struct sp2 *s = en50221->data; in sp2_ci_slot_ts_enable()
230 dev_dbg(&s->client->dev, "slot:%d\n", slot); in sp2_ci_slot_ts_enable()
233 return -EINVAL; in sp2_ci_slot_ts_enable()
245 struct sp2 *s = en50221->data; in sp2_ci_poll_slot_status()
249 dev_dbg(&s->client->dev, "slot:%d open:%d\n", slot, open); in sp2_ci_poll_slot_status()
252 * CAM module INSERT/REMOVE processing. Slow operation because of i2c in sp2_ci_poll_slot_status()
255 if (time_after(jiffies, s->next_status_checked_time)) { in sp2_ci_poll_slot_status()
257 s->next_status_checked_time = jiffies + msecs_to_jiffies(1000); in sp2_ci_poll_slot_status()
263 s->status = DVB_CA_EN50221_POLL_CAM_PRESENT | in sp2_ci_poll_slot_status()
266 s->status = 0; in sp2_ci_poll_slot_status()
269 return s->status; in sp2_ci_poll_slot_status()
278 0x00, /* auto select mask high A */ in sp2_init()
279 0x00, /* auto select mask low A */ in sp2_init()
280 0x00, /* auto select pattern high A */ in sp2_init()
281 0x00, /* auto select pattern low A */ in sp2_init()
287 0x00, /* auto select mask high B */ in sp2_init()
288 0x00, /* auto select mask low B */ in sp2_init()
289 0x00, /* auto select pattern high B */ in sp2_init()
290 0x00, /* auto select pattern low B */ in sp2_init()
295 0x00, /* auto select mask high Ext */ in sp2_init()
296 0x00, /* auto select mask low Ext */ in sp2_init()
297 0x00, /* auto select pattern high Ext */ in sp2_init()
298 0x00, /* auto select pattern low Ext */ in sp2_init()
300 0x02, /* destination - module A */ in sp2_init()
305 0x05, /* EXTINT=active-high, INT=push-pull */ in sp2_init()
313 dev_dbg(&s->client->dev, "\n"); in sp2_init()
315 s->ca.owner = THIS_MODULE; in sp2_init()
316 s->ca.read_attribute_mem = sp2_ci_read_attribute_mem; in sp2_init()
317 s->ca.write_attribute_mem = sp2_ci_write_attribute_mem; in sp2_init()
318 s->ca.read_cam_control = sp2_ci_read_cam_control; in sp2_init()
319 s->ca.write_cam_control = sp2_ci_write_cam_control; in sp2_init()
320 s->ca.slot_reset = sp2_ci_slot_reset; in sp2_init()
321 s->ca.slot_shutdown = sp2_ci_slot_shutdown; in sp2_init()
322 s->ca.slot_ts_enable = sp2_ci_slot_ts_enable; in sp2_init()
323 s->ca.poll_slot_status = sp2_ci_poll_slot_status; in sp2_init()
324 s->ca.data = s; in sp2_init()
325 s->module_access_type = 0; in sp2_init()
343 ret = dvb_ca_en50221_init(s->dvb_adap, &s->ca, 0, 1); in sp2_init()
350 dev_dbg(&s->client->dev, "init failed=%d\n", ret); in sp2_init()
358 dev_dbg(&client->dev, "\n"); in sp2_exit()
367 if (!s->ca.data) in sp2_exit()
370 dvb_ca_en50221_release(&s->ca); in sp2_exit()
378 struct sp2_config *cfg = client->dev.platform_data; in sp2_probe()
382 dev_dbg(&client->dev, "\n"); in sp2_probe()
386 ret = -ENOMEM; in sp2_probe()
390 s->client = client; in sp2_probe()
391 s->dvb_adap = cfg->dvb_adap; in sp2_probe()
392 s->priv = cfg->priv; in sp2_probe()
393 s->ci_control = cfg->ci_control; in sp2_probe()
401 dev_info(&s->client->dev, "CIMaX SP2 successfully attached\n"); in sp2_probe()
404 dev_dbg(&client->dev, "init failed=%d\n", ret); in sp2_probe()
414 dev_dbg(&client->dev, "\n"); in sp2_remove()
424 MODULE_DEVICE_TABLE(i2c, sp2_id);