Symbol: ch7322
drivers/media/cec/i2c/ch7322.c
165
static int ch7322_send_message(struct ch7322 *ch7322, const struct cec_msg *msg)
drivers/media/cec/i2c/ch7322.c
172
WARN_ON(!mutex_is_locked(&ch7322->mutex));
drivers/media/cec/i2c/ch7322.c
177
ret = regmap_read(ch7322->regmap, CH7322_WRITE, &val);
drivers/media/cec/i2c/ch7322.c
187
ch7322->tx_flags = CH7322_TX_FLAG_NACK | CH7322_TX_FLAG_RETRY;
drivers/media/cec/i2c/ch7322.c
189
ch7322->tx_flags = CH7322_TX_FLAG_NACK;
drivers/media/cec/i2c/ch7322.c
191
ch7322->tx_flags = CH7322_TX_FLAG_RETRY;
drivers/media/cec/i2c/ch7322.c
194
ret = regmap_write(ch7322->regmap, CH7322_WRITE, len - 1);
drivers/media/cec/i2c/ch7322.c
199
ret = regmap_write(ch7322->regmap,
drivers/media/cec/i2c/ch7322.c
208
static int ch7322_receive_message(struct ch7322 *ch7322, struct cec_msg *msg)
drivers/media/cec/i2c/ch7322.c
214
WARN_ON(!mutex_is_locked(&ch7322->mutex));
drivers/media/cec/i2c/ch7322.c
216
ret = regmap_read(ch7322->regmap, CH7322_READ, &val);
drivers/media/cec/i2c/ch7322.c
228
ret = regmap_read(ch7322->regmap, CH7322_RDBUF + i, &val);
drivers/media/cec/i2c/ch7322.c
237
static void ch7322_tx_done(struct ch7322 *ch7322)
drivers/media/cec/i2c/ch7322.c
243
mutex_lock(&ch7322->mutex);
drivers/media/cec/i2c/ch7322.c
244
ret = regmap_read(ch7322->regmap, CH7322_WRITE, &val);
drivers/media/cec/i2c/ch7322.c
245
flags = ch7322->tx_flags;
drivers/media/cec/i2c/ch7322.c
246
mutex_unlock(&ch7322->mutex);
drivers/media/cec/i2c/ch7322.c
267
cec_transmit_attempt_done(ch7322->cec, status);
drivers/media/cec/i2c/ch7322.c
270
static void ch7322_rx_done(struct ch7322 *ch7322)
drivers/media/cec/i2c/ch7322.c
275
mutex_lock(&ch7322->mutex);
drivers/media/cec/i2c/ch7322.c
276
ret = ch7322_receive_message(ch7322, &msg);
drivers/media/cec/i2c/ch7322.c
277
mutex_unlock(&ch7322->mutex);
drivers/media/cec/i2c/ch7322.c
280
dev_err(&ch7322->i2c->dev, "cec receive error: %d\n", ret);
drivers/media/cec/i2c/ch7322.c
282
cec_received_msg(ch7322->cec, &msg);
drivers/media/cec/i2c/ch7322.c
290
static void ch7322_phys_addr(struct ch7322 *ch7322)
drivers/media/cec/i2c/ch7322.c
295
mutex_lock(&ch7322->mutex);
drivers/media/cec/i2c/ch7322.c
296
ret |= regmap_read(ch7322->regmap, CH7322_PARH, &pah);
drivers/media/cec/i2c/ch7322.c
297
ret |= regmap_read(ch7322->regmap, CH7322_PARL, &pal);
drivers/media/cec/i2c/ch7322.c
298
mutex_unlock(&ch7322->mutex);
drivers/media/cec/i2c/ch7322.c
301
dev_err(&ch7322->i2c->dev, "phys addr error\n");
drivers/media/cec/i2c/ch7322.c
303
cec_s_phys_addr(ch7322->cec, pal | (pah << 8), false);
drivers/media/cec/i2c/ch7322.c
308
struct ch7322 *ch7322 = dev;
drivers/media/cec/i2c/ch7322.c
311
mutex_lock(&ch7322->mutex);
drivers/media/cec/i2c/ch7322.c
312
regmap_read(ch7322->regmap, CH7322_INTDATA, &data);
drivers/media/cec/i2c/ch7322.c
313
regmap_write(ch7322->regmap, CH7322_INTDATA, data);
drivers/media/cec/i2c/ch7322.c
314
mutex_unlock(&ch7322->mutex);
drivers/media/cec/i2c/ch7322.c
317
cec_phys_addr_invalidate(ch7322->cec);
drivers/media/cec/i2c/ch7322.c
320
ch7322_tx_done(ch7322);
drivers/media/cec/i2c/ch7322.c
323
ch7322_rx_done(ch7322);
drivers/media/cec/i2c/ch7322.c
326
ch7322_phys_addr(ch7322);
drivers/media/cec/i2c/ch7322.c
329
dev_dbg(&ch7322->i2c->dev, "unknown error\n");
drivers/media/cec/i2c/ch7322.c
342
struct ch7322 *ch7322 = cec_get_drvdata(adap);
drivers/media/cec/i2c/ch7322.c
345
mutex_lock(&ch7322->mutex);
drivers/media/cec/i2c/ch7322.c
346
ret = regmap_update_bits(ch7322->regmap, CH7322_ADDLW,
drivers/media/cec/i2c/ch7322.c
348
mutex_unlock(&ch7322->mutex);
drivers/media/cec/i2c/ch7322.c
356
struct ch7322 *ch7322 = cec_get_drvdata(adap);
drivers/media/cec/i2c/ch7322.c
359
mutex_lock(&ch7322->mutex);
drivers/media/cec/i2c/ch7322.c
360
ret = ch7322_send_message(ch7322, msg);
drivers/media/cec/i2c/ch7322.c
361
mutex_unlock(&ch7322->mutex);
drivers/media/cec/i2c/ch7322.c
451
struct ch7322 *ch7322;
drivers/media/cec/i2c/ch7322.c
464
ch7322 = devm_kzalloc(&client->dev, sizeof(*ch7322), GFP_KERNEL);
drivers/media/cec/i2c/ch7322.c
465
if (!ch7322)
drivers/media/cec/i2c/ch7322.c
468
ch7322->regmap = devm_regmap_init_i2c(client, &ch7322_regmap);
drivers/media/cec/i2c/ch7322.c
469
if (IS_ERR(ch7322->regmap))
drivers/media/cec/i2c/ch7322.c
470
return PTR_ERR(ch7322->regmap);
drivers/media/cec/i2c/ch7322.c
472
ret = regmap_read(ch7322->regmap, CH7322_DID, &val);
drivers/media/cec/i2c/ch7322.c
479
mutex_init(&ch7322->mutex);
drivers/media/cec/i2c/ch7322.c
480
ch7322->i2c = client;
drivers/media/cec/i2c/ch7322.c
481
ch7322->tx_flags = 0;
drivers/media/cec/i2c/ch7322.c
483
i2c_set_clientdata(client, ch7322);
drivers/media/cec/i2c/ch7322.c
486
ret = regmap_write(ch7322->regmap, CH7322_MODE, CH7322_MODE_SW);
drivers/media/cec/i2c/ch7322.c
491
ret = regmap_update_bits(ch7322->regmap, CH7322_CTL,
drivers/media/cec/i2c/ch7322.c
496
ch7322->cec = cec_allocate_adapter(&ch7322_cec_adap_ops, ch7322,
drivers/media/cec/i2c/ch7322.c
500
if (IS_ERR(ch7322->cec)) {
drivers/media/cec/i2c/ch7322.c
501
ret = PTR_ERR(ch7322->cec);
drivers/media/cec/i2c/ch7322.c
505
ch7322->cec->adap_controls_phys_addr = true;
drivers/media/cec/i2c/ch7322.c
510
ch7322->cec);
drivers/media/cec/i2c/ch7322.c
518
ret = regmap_write(ch7322->regmap, CH7322_CFG1, 0);
drivers/media/cec/i2c/ch7322.c
521
ret = regmap_write(ch7322->regmap, CH7322_INTCTL, CH7322_INTCTL_INTPB);
drivers/media/cec/i2c/ch7322.c
524
ret = regmap_write(ch7322->regmap, CH7322_INTDATA, 0xff);
drivers/media/cec/i2c/ch7322.c
529
ret = regmap_read(ch7322->regmap, CH7322_ADDLR, &val);
drivers/media/cec/i2c/ch7322.c
533
ch7322_phys_addr(ch7322);
drivers/media/cec/i2c/ch7322.c
538
client->name, ch7322);
drivers/media/cec/i2c/ch7322.c
543
mutex_lock(&ch7322->mutex);
drivers/media/cec/i2c/ch7322.c
544
ret = regmap_write(ch7322->regmap, CH7322_INTCTL, 0xff);
drivers/media/cec/i2c/ch7322.c
545
mutex_unlock(&ch7322->mutex);
drivers/media/cec/i2c/ch7322.c
550
ret = cec_register_adapter(ch7322->cec, &client->dev);
drivers/media/cec/i2c/ch7322.c
560
cec_notifier_cec_adap_unregister(notifier, ch7322->cec);
drivers/media/cec/i2c/ch7322.c
562
cec_delete_adapter(ch7322->cec);
drivers/media/cec/i2c/ch7322.c
564
mutex_destroy(&ch7322->mutex);
drivers/media/cec/i2c/ch7322.c
570
struct ch7322 *ch7322 = i2c_get_clientdata(client);
drivers/media/cec/i2c/ch7322.c
573
mutex_lock(&ch7322->mutex);
drivers/media/cec/i2c/ch7322.c
574
regmap_write(ch7322->regmap, CH7322_INTCTL, CH7322_INTCTL_INTPB);
drivers/media/cec/i2c/ch7322.c
575
mutex_unlock(&ch7322->mutex);
drivers/media/cec/i2c/ch7322.c
577
cec_unregister_adapter(ch7322->cec);
drivers/media/cec/i2c/ch7322.c
578
mutex_destroy(&ch7322->mutex);