drivers/media/cec/usb/pulse8/pulse8-cec.c
232
static int pulse8_send_and_wait_once(struct pulse8 *pulse8,
drivers/media/cec/usb/pulse8/pulse8-cec.c
239
dev_info(pulse8->dev, "transmit %s: %*ph\n",
drivers/media/cec/usb/pulse8/pulse8-cec.c
241
init_completion(&pulse8->cmd_done);
drivers/media/cec/usb/pulse8/pulse8-cec.c
243
err = pulse8_send(pulse8->serio, cmd, cmd_len);
drivers/media/cec/usb/pulse8/pulse8-cec.c
247
if (!wait_for_completion_timeout(&pulse8->cmd_done, HZ))
drivers/media/cec/usb/pulse8/pulse8-cec.c
249
if ((pulse8->data[0] & 0x3f) == MSGCODE_COMMAND_REJECTED &&
drivers/media/cec/usb/pulse8/pulse8-cec.c
255
((pulse8->data[0] & 0x3f) != response || pulse8->len < size + 1)) {
drivers/media/cec/usb/pulse8/pulse8-cec.c
256
dev_info(pulse8->dev, "transmit %s failed with %s\n",
drivers/media/cec/usb/pulse8/pulse8-cec.c
258
pulse8_msgname(pulse8->data[0]));
drivers/media/cec/usb/pulse8/pulse8-cec.c
264
static int pulse8_send_and_wait(struct pulse8 *pulse8,
drivers/media/cec/usb/pulse8/pulse8-cec.c
270
err = pulse8_send_and_wait_once(pulse8, cmd, cmd_len, response, size);
drivers/media/cec/usb/pulse8/pulse8-cec.c
276
err = pulse8_send_and_wait_once(pulse8, cmd_sc, 2,
drivers/media/cec/usb/pulse8/pulse8-cec.c
279
err = pulse8_send_and_wait_once(pulse8, cmd, cmd_len,
drivers/media/cec/usb/pulse8/pulse8-cec.c
286
struct pulse8 *pulse8 = container_of(work, struct pulse8, tx_work);
drivers/media/cec/usb/pulse8/pulse8-cec.c
287
struct cec_msg *msg = &pulse8->tx_msg;
drivers/media/cec/usb/pulse8/pulse8-cec.c
295
mutex_lock(&pulse8->lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
297
cmd[1] = pulse8->tx_signal_free_time;
drivers/media/cec/usb/pulse8/pulse8-cec.c
298
err = pulse8_send_and_wait(pulse8, cmd, 2,
drivers/media/cec/usb/pulse8/pulse8-cec.c
302
pulse8->tx_msg_is_bcast = cec_msg_is_broadcast(msg);
drivers/media/cec/usb/pulse8/pulse8-cec.c
304
err = pulse8_send_and_wait(pulse8, cmd, 2,
drivers/media/cec/usb/pulse8/pulse8-cec.c
309
err = pulse8_send_and_wait(pulse8, cmd, 2,
drivers/media/cec/usb/pulse8/pulse8-cec.c
316
err = pulse8_send_and_wait(pulse8, cmd, 2,
drivers/media/cec/usb/pulse8/pulse8-cec.c
321
dev_info(pulse8->dev, "%s(0x%02x) failed with error %d for msg %*ph\n",
drivers/media/cec/usb/pulse8/pulse8-cec.c
325
mutex_unlock(&pulse8->lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
327
cec_transmit_attempt_done(pulse8->adap, CEC_TX_STATUS_ERROR);
drivers/media/cec/usb/pulse8/pulse8-cec.c
332
struct pulse8 *pulse8 =
drivers/media/cec/usb/pulse8/pulse8-cec.c
333
container_of(work, struct pulse8, irq_work);
drivers/media/cec/usb/pulse8/pulse8-cec.c
337
spin_lock_irqsave(&pulse8->msg_lock, flags);
drivers/media/cec/usb/pulse8/pulse8-cec.c
338
while (pulse8->rx_msg_num) {
drivers/media/cec/usb/pulse8/pulse8-cec.c
339
spin_unlock_irqrestore(&pulse8->msg_lock, flags);
drivers/media/cec/usb/pulse8/pulse8-cec.c
341
dev_info(pulse8->dev, "adap received %*ph\n",
drivers/media/cec/usb/pulse8/pulse8-cec.c
342
pulse8->rx_msg[pulse8->rx_msg_cur_idx].len,
drivers/media/cec/usb/pulse8/pulse8-cec.c
343
pulse8->rx_msg[pulse8->rx_msg_cur_idx].msg);
drivers/media/cec/usb/pulse8/pulse8-cec.c
344
cec_received_msg(pulse8->adap,
drivers/media/cec/usb/pulse8/pulse8-cec.c
345
&pulse8->rx_msg[pulse8->rx_msg_cur_idx]);
drivers/media/cec/usb/pulse8/pulse8-cec.c
346
spin_lock_irqsave(&pulse8->msg_lock, flags);
drivers/media/cec/usb/pulse8/pulse8-cec.c
347
if (pulse8->rx_msg_num)
drivers/media/cec/usb/pulse8/pulse8-cec.c
348
pulse8->rx_msg_num--;
drivers/media/cec/usb/pulse8/pulse8-cec.c
349
pulse8->rx_msg_cur_idx =
drivers/media/cec/usb/pulse8/pulse8-cec.c
350
(pulse8->rx_msg_cur_idx + 1) % NUM_MSGS;
drivers/media/cec/usb/pulse8/pulse8-cec.c
352
spin_unlock_irqrestore(&pulse8->msg_lock, flags);
drivers/media/cec/usb/pulse8/pulse8-cec.c
354
mutex_lock(&pulse8->lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
355
status = pulse8->tx_done_status;
drivers/media/cec/usb/pulse8/pulse8-cec.c
356
pulse8->tx_done_status = 0;
drivers/media/cec/usb/pulse8/pulse8-cec.c
357
mutex_unlock(&pulse8->lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
359
cec_transmit_attempt_done(pulse8->adap, status);
drivers/media/cec/usb/pulse8/pulse8-cec.c
365
struct pulse8 *pulse8 = serio_get_drvdata(serio);
drivers/media/cec/usb/pulse8/pulse8-cec.c
369
if (!pulse8->started && data != MSGSTART)
drivers/media/cec/usb/pulse8/pulse8-cec.c
372
pulse8->escape = true;
drivers/media/cec/usb/pulse8/pulse8-cec.c
375
if (pulse8->escape) {
drivers/media/cec/usb/pulse8/pulse8-cec.c
377
pulse8->escape = false;
drivers/media/cec/usb/pulse8/pulse8-cec.c
379
u8 msgcode = pulse8->buf[0];
drivers/media/cec/usb/pulse8/pulse8-cec.c
382
dev_info(pulse8->dev, "received %s: %*ph\n",
drivers/media/cec/usb/pulse8/pulse8-cec.c
384
pulse8->idx, pulse8->buf);
drivers/media/cec/usb/pulse8/pulse8-cec.c
392
pulse8->new_rx_msg_len = 1;
drivers/media/cec/usb/pulse8/pulse8-cec.c
393
pulse8->new_rx_msg[0] = pulse8->buf[1];
drivers/media/cec/usb/pulse8/pulse8-cec.c
398
if (pulse8->new_rx_msg_len < CEC_MAX_MSG_SIZE)
drivers/media/cec/usb/pulse8/pulse8-cec.c
399
pulse8->new_rx_msg[pulse8->new_rx_msg_len++] =
drivers/media/cec/usb/pulse8/pulse8-cec.c
400
pulse8->buf[1];
drivers/media/cec/usb/pulse8/pulse8-cec.c
404
spin_lock_irqsave(&pulse8->msg_lock, irq_flags);
drivers/media/cec/usb/pulse8/pulse8-cec.c
405
idx = (pulse8->rx_msg_cur_idx + pulse8->rx_msg_num) %
drivers/media/cec/usb/pulse8/pulse8-cec.c
407
if (pulse8->rx_msg_num == NUM_MSGS) {
drivers/media/cec/usb/pulse8/pulse8-cec.c
408
dev_warn(pulse8->dev,
drivers/media/cec/usb/pulse8/pulse8-cec.c
410
pulse8->new_rx_msg_len,
drivers/media/cec/usb/pulse8/pulse8-cec.c
411
pulse8->new_rx_msg);
drivers/media/cec/usb/pulse8/pulse8-cec.c
412
spin_unlock_irqrestore(&pulse8->msg_lock,
drivers/media/cec/usb/pulse8/pulse8-cec.c
414
pulse8->new_rx_msg_len = 0;
drivers/media/cec/usb/pulse8/pulse8-cec.c
417
pulse8->rx_msg_num++;
drivers/media/cec/usb/pulse8/pulse8-cec.c
418
memcpy(pulse8->rx_msg[idx].msg, pulse8->new_rx_msg,
drivers/media/cec/usb/pulse8/pulse8-cec.c
419
pulse8->new_rx_msg_len);
drivers/media/cec/usb/pulse8/pulse8-cec.c
420
pulse8->rx_msg[idx].len = pulse8->new_rx_msg_len;
drivers/media/cec/usb/pulse8/pulse8-cec.c
421
spin_unlock_irqrestore(&pulse8->msg_lock, irq_flags);
drivers/media/cec/usb/pulse8/pulse8-cec.c
422
schedule_work(&pulse8->irq_work);
drivers/media/cec/usb/pulse8/pulse8-cec.c
423
pulse8->new_rx_msg_len = 0;
drivers/media/cec/usb/pulse8/pulse8-cec.c
426
WARN_ON(pulse8->tx_done_status);
drivers/media/cec/usb/pulse8/pulse8-cec.c
427
pulse8->tx_done_status = CEC_TX_STATUS_OK;
drivers/media/cec/usb/pulse8/pulse8-cec.c
428
schedule_work(&pulse8->irq_work);
drivers/media/cec/usb/pulse8/pulse8-cec.c
435
if (pulse8->tx_msg_is_bcast)
drivers/media/cec/usb/pulse8/pulse8-cec.c
437
WARN_ON(pulse8->tx_done_status);
drivers/media/cec/usb/pulse8/pulse8-cec.c
438
pulse8->tx_done_status = CEC_TX_STATUS_NACK;
drivers/media/cec/usb/pulse8/pulse8-cec.c
439
schedule_work(&pulse8->irq_work);
drivers/media/cec/usb/pulse8/pulse8-cec.c
444
WARN_ON(pulse8->tx_done_status);
drivers/media/cec/usb/pulse8/pulse8-cec.c
445
pulse8->tx_done_status = CEC_TX_STATUS_ERROR;
drivers/media/cec/usb/pulse8/pulse8-cec.c
446
schedule_work(&pulse8->irq_work);
drivers/media/cec/usb/pulse8/pulse8-cec.c
452
pulse8->new_rx_msg_len = 0;
drivers/media/cec/usb/pulse8/pulse8-cec.c
457
if (pulse8->idx == 0)
drivers/media/cec/usb/pulse8/pulse8-cec.c
459
memcpy(pulse8->data, pulse8->buf, pulse8->idx);
drivers/media/cec/usb/pulse8/pulse8-cec.c
460
pulse8->len = pulse8->idx;
drivers/media/cec/usb/pulse8/pulse8-cec.c
461
complete(&pulse8->cmd_done);
drivers/media/cec/usb/pulse8/pulse8-cec.c
464
pulse8->idx = 0;
drivers/media/cec/usb/pulse8/pulse8-cec.c
465
pulse8->started = false;
drivers/media/cec/usb/pulse8/pulse8-cec.c
468
pulse8->idx = 0;
drivers/media/cec/usb/pulse8/pulse8-cec.c
469
pulse8->started = true;
drivers/media/cec/usb/pulse8/pulse8-cec.c
473
if (pulse8->idx >= DATA_SIZE) {
drivers/media/cec/usb/pulse8/pulse8-cec.c
474
dev_dbg(pulse8->dev,
drivers/media/cec/usb/pulse8/pulse8-cec.c
475
"throwing away %d bytes of garbage\n", pulse8->idx);
drivers/media/cec/usb/pulse8/pulse8-cec.c
476
pulse8->idx = 0;
drivers/media/cec/usb/pulse8/pulse8-cec.c
478
pulse8->buf[pulse8->idx++] = data;
drivers/media/cec/usb/pulse8/pulse8-cec.c
484
struct pulse8 *pulse8 = cec_get_drvdata(adap);
drivers/media/cec/usb/pulse8/pulse8-cec.c
488
mutex_lock(&pulse8->lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
491
err = pulse8_send_and_wait(pulse8, cmd, 2,
drivers/media/cec/usb/pulse8/pulse8-cec.c
494
pulse8->rx_msg_num = 0;
drivers/media/cec/usb/pulse8/pulse8-cec.c
495
pulse8->tx_done_status = 0;
drivers/media/cec/usb/pulse8/pulse8-cec.c
497
mutex_unlock(&pulse8->lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
503
struct pulse8 *pulse8 = cec_get_drvdata(adap);
drivers/media/cec/usb/pulse8/pulse8-cec.c
509
mutex_lock(&pulse8->lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
515
err = pulse8_send_and_wait(pulse8, cmd, 3,
drivers/media/cec/usb/pulse8/pulse8-cec.c
517
if ((err && mask != 0) || pulse8->restoring_config)
drivers/media/cec/usb/pulse8/pulse8-cec.c
522
err = pulse8_send_and_wait(pulse8, cmd, 2,
drivers/media/cec/usb/pulse8/pulse8-cec.c
526
pulse8->autonomous = cmd[1];
drivers/media/cec/usb/pulse8/pulse8-cec.c
532
err = pulse8_send_and_wait(pulse8, cmd, 2,
drivers/media/cec/usb/pulse8/pulse8-cec.c
566
err = pulse8_send_and_wait(pulse8, cmd, 3,
drivers/media/cec/usb/pulse8/pulse8-cec.c
573
err = pulse8_send_and_wait(pulse8, cmd, 2,
drivers/media/cec/usb/pulse8/pulse8-cec.c
581
err = pulse8_send_and_wait(pulse8, cmd, 3,
drivers/media/cec/usb/pulse8/pulse8-cec.c
586
if (pulse8->vers < 10) {
drivers/media/cec/usb/pulse8/pulse8-cec.c
589
err = pulse8_send_and_wait(pulse8, cmd, 2,
drivers/media/cec/usb/pulse8/pulse8-cec.c
608
err = pulse8_send_and_wait(pulse8, cmd, 1 + osd_len,
drivers/media/cec/usb/pulse8/pulse8-cec.c
615
if (pulse8->restoring_config)
drivers/media/cec/usb/pulse8/pulse8-cec.c
616
pulse8->restoring_config = false;
drivers/media/cec/usb/pulse8/pulse8-cec.c
618
pulse8->config_pending = true;
drivers/media/cec/usb/pulse8/pulse8-cec.c
619
mutex_unlock(&pulse8->lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
626
struct pulse8 *pulse8 = cec_get_drvdata(adap);
drivers/media/cec/usb/pulse8/pulse8-cec.c
628
pulse8->tx_msg = *msg;
drivers/media/cec/usb/pulse8/pulse8-cec.c
630
dev_info(pulse8->dev, "adap transmit %*ph\n",
drivers/media/cec/usb/pulse8/pulse8-cec.c
632
pulse8->tx_signal_free_time = signal_free_time;
drivers/media/cec/usb/pulse8/pulse8-cec.c
633
schedule_work(&pulse8->tx_work);
drivers/media/cec/usb/pulse8/pulse8-cec.c
639
struct pulse8 *pulse8 = cec_get_drvdata(adap);
drivers/media/cec/usb/pulse8/pulse8-cec.c
641
cancel_delayed_work_sync(&pulse8->ping_eeprom_work);
drivers/media/cec/usb/pulse8/pulse8-cec.c
642
cancel_work_sync(&pulse8->irq_work);
drivers/media/cec/usb/pulse8/pulse8-cec.c
643
cancel_work_sync(&pulse8->tx_work);
drivers/media/cec/usb/pulse8/pulse8-cec.c
644
kfree(pulse8);
drivers/media/cec/usb/pulse8/pulse8-cec.c
656
struct pulse8 *pulse8 = serio_get_drvdata(serio);
drivers/media/cec/usb/pulse8/pulse8-cec.c
658
cec_unregister_adapter(pulse8->adap);
drivers/media/cec/usb/pulse8/pulse8-cec.c
663
static int pulse8_setup(struct pulse8 *pulse8, struct serio *serio,
drivers/media/cec/usb/pulse8/pulse8-cec.c
666
u8 *data = pulse8->data + 1;
drivers/media/cec/usb/pulse8/pulse8-cec.c
671
pulse8->vers = 0;
drivers/media/cec/usb/pulse8/pulse8-cec.c
674
err = pulse8_send_and_wait(pulse8, cmd, 1, cmd[0], 2);
drivers/media/cec/usb/pulse8/pulse8-cec.c
677
pulse8->vers = (data[0] << 8) | data[1];
drivers/media/cec/usb/pulse8/pulse8-cec.c
678
dev_info(pulse8->dev, "Firmware version %04x\n", pulse8->vers);
drivers/media/cec/usb/pulse8/pulse8-cec.c
679
if (pulse8->vers < 2) {
drivers/media/cec/usb/pulse8/pulse8-cec.c
685
err = pulse8_send_and_wait(pulse8, cmd, 1, cmd[0], 4);
drivers/media/cec/usb/pulse8/pulse8-cec.c
689
dev_info(pulse8->dev, "Firmware build date %ptT\n", &date);
drivers/media/cec/usb/pulse8/pulse8-cec.c
691
dev_dbg(pulse8->dev, "Persistent config:\n");
drivers/media/cec/usb/pulse8/pulse8-cec.c
693
err = pulse8_send_and_wait(pulse8, cmd, 1, cmd[0], 1);
drivers/media/cec/usb/pulse8/pulse8-cec.c
696
pulse8->autonomous = data[0];
drivers/media/cec/usb/pulse8/pulse8-cec.c
697
dev_dbg(pulse8->dev, "Autonomous mode: %s",
drivers/media/cec/usb/pulse8/pulse8-cec.c
700
if (pulse8->vers >= 10) {
drivers/media/cec/usb/pulse8/pulse8-cec.c
702
err = pulse8_send_and_wait(pulse8, cmd, 1, cmd[0], 1);
drivers/media/cec/usb/pulse8/pulse8-cec.c
704
dev_dbg(pulse8->dev, "Auto Power On: %s",
drivers/media/cec/usb/pulse8/pulse8-cec.c
709
err = pulse8_send_and_wait(pulse8, cmd, 1, cmd[0], 1);
drivers/media/cec/usb/pulse8/pulse8-cec.c
713
dev_dbg(pulse8->dev, "Primary device type: %d\n", data[0]);
drivers/media/cec/usb/pulse8/pulse8-cec.c
746
dev_info(pulse8->dev, "Unknown Primary Device Type: %d\n",
drivers/media/cec/usb/pulse8/pulse8-cec.c
752
err = pulse8_send_and_wait(pulse8, cmd, 1, cmd[0], 2);
drivers/media/cec/usb/pulse8/pulse8-cec.c
756
dev_dbg(pulse8->dev, "Logical address ACK mask: %x\n",
drivers/media/cec/usb/pulse8/pulse8-cec.c
762
err = pulse8_send_and_wait(pulse8, cmd, 1, cmd[0], 1);
drivers/media/cec/usb/pulse8/pulse8-cec.c
766
dev_dbg(pulse8->dev, "Physical address: %x.%x.%x.%x\n",
drivers/media/cec/usb/pulse8/pulse8-cec.c
770
if (pulse8->vers < 10) {
drivers/media/cec/usb/pulse8/pulse8-cec.c
772
err = pulse8_send_and_wait(pulse8, cmd, 1, cmd[0], 1);
drivers/media/cec/usb/pulse8/pulse8-cec.c
776
dev_dbg(pulse8->dev, "CEC version: %d\n", log_addrs->cec_version);
drivers/media/cec/usb/pulse8/pulse8-cec.c
780
err = pulse8_send_and_wait(pulse8, cmd, 1, cmd[0], 0);
drivers/media/cec/usb/pulse8/pulse8-cec.c
784
dev_dbg(pulse8->dev, "OSD name: %s\n", log_addrs->osd_name);
drivers/media/cec/usb/pulse8/pulse8-cec.c
789
static int pulse8_apply_persistent_config(struct pulse8 *pulse8,
drivers/media/cec/usb/pulse8/pulse8-cec.c
795
err = cec_s_log_addrs(pulse8->adap, log_addrs, false);
drivers/media/cec/usb/pulse8/pulse8-cec.c
799
cec_s_phys_addr(pulse8->adap, pa, false);
drivers/media/cec/usb/pulse8/pulse8-cec.c
806
struct pulse8 *pulse8 =
drivers/media/cec/usb/pulse8/pulse8-cec.c
807
container_of(work, struct pulse8, ping_eeprom_work.work);
drivers/media/cec/usb/pulse8/pulse8-cec.c
810
mutex_lock(&pulse8->lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
812
if (pulse8_send_and_wait(pulse8, &cmd, 1,
drivers/media/cec/usb/pulse8/pulse8-cec.c
814
dev_warn(pulse8->dev, "failed to ping EEPROM\n");
drivers/media/cec/usb/pulse8/pulse8-cec.c
818
if (pulse8->vers < 2)
drivers/media/cec/usb/pulse8/pulse8-cec.c
821
if (pulse8->config_pending && persistent_config) {
drivers/media/cec/usb/pulse8/pulse8-cec.c
822
dev_dbg(pulse8->dev, "writing pending config to EEPROM\n");
drivers/media/cec/usb/pulse8/pulse8-cec.c
824
if (pulse8_send_and_wait(pulse8, &cmd, 1,
drivers/media/cec/usb/pulse8/pulse8-cec.c
826
dev_info(pulse8->dev, "failed to write pending config to EEPROM\n");
drivers/media/cec/usb/pulse8/pulse8-cec.c
828
pulse8->config_pending = false;
drivers/media/cec/usb/pulse8/pulse8-cec.c
831
schedule_delayed_work(&pulse8->ping_eeprom_work, PING_PERIOD);
drivers/media/cec/usb/pulse8/pulse8-cec.c
832
mutex_unlock(&pulse8->lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
838
struct pulse8 *pulse8;
drivers/media/cec/usb/pulse8/pulse8-cec.c
843
pulse8 = kzalloc_obj(*pulse8);
drivers/media/cec/usb/pulse8/pulse8-cec.c
845
if (!pulse8)
drivers/media/cec/usb/pulse8/pulse8-cec.c
848
pulse8->serio = serio;
drivers/media/cec/usb/pulse8/pulse8-cec.c
849
pulse8->adap = cec_allocate_adapter(&pulse8_cec_adap_ops, pulse8,
drivers/media/cec/usb/pulse8/pulse8-cec.c
851
err = PTR_ERR_OR_ZERO(pulse8->adap);
drivers/media/cec/usb/pulse8/pulse8-cec.c
853
kfree(pulse8);
drivers/media/cec/usb/pulse8/pulse8-cec.c
857
pulse8->dev = &serio->dev;
drivers/media/cec/usb/pulse8/pulse8-cec.c
858
serio_set_drvdata(serio, pulse8);
drivers/media/cec/usb/pulse8/pulse8-cec.c
859
INIT_WORK(&pulse8->irq_work, pulse8_irq_work_handler);
drivers/media/cec/usb/pulse8/pulse8-cec.c
860
INIT_WORK(&pulse8->tx_work, pulse8_tx_work_handler);
drivers/media/cec/usb/pulse8/pulse8-cec.c
861
INIT_DELAYED_WORK(&pulse8->ping_eeprom_work,
drivers/media/cec/usb/pulse8/pulse8-cec.c
863
mutex_init(&pulse8->lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
864
spin_lock_init(&pulse8->msg_lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
865
pulse8->config_pending = false;
drivers/media/cec/usb/pulse8/pulse8-cec.c
871
err = pulse8_setup(pulse8, serio, &log_addrs, &pa);
drivers/media/cec/usb/pulse8/pulse8-cec.c
875
err = cec_register_adapter(pulse8->adap, &serio->dev);
drivers/media/cec/usb/pulse8/pulse8-cec.c
879
pulse8->dev = &pulse8->adap->devnode.dev;
drivers/media/cec/usb/pulse8/pulse8-cec.c
881
if (persistent_config && pulse8->autonomous) {
drivers/media/cec/usb/pulse8/pulse8-cec.c
882
err = pulse8_apply_persistent_config(pulse8, &log_addrs, pa);
drivers/media/cec/usb/pulse8/pulse8-cec.c
885
pulse8->restoring_config = true;
drivers/media/cec/usb/pulse8/pulse8-cec.c
888
schedule_delayed_work(&pulse8->ping_eeprom_work, PING_PERIOD);
drivers/media/cec/usb/pulse8/pulse8-cec.c
893
pulse8->serio = NULL;
drivers/media/cec/usb/pulse8/pulse8-cec.c
897
cec_delete_adapter(pulse8->adap);