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
238
if (!pulse8->serio)
drivers/media/cec/usb/pulse8/pulse8-cec.c
242
dev_info(pulse8->dev, "transmit %s: %*ph\n",
drivers/media/cec/usb/pulse8/pulse8-cec.c
244
init_completion(&pulse8->cmd_done);
drivers/media/cec/usb/pulse8/pulse8-cec.c
246
err = pulse8_send(pulse8->serio, cmd, cmd_len);
drivers/media/cec/usb/pulse8/pulse8-cec.c
250
if (!wait_for_completion_timeout(&pulse8->cmd_done, HZ))
drivers/media/cec/usb/pulse8/pulse8-cec.c
252
if ((pulse8->data[0] & 0x3f) == MSGCODE_COMMAND_REJECTED &&
drivers/media/cec/usb/pulse8/pulse8-cec.c
258
((pulse8->data[0] & 0x3f) != response || pulse8->len < size + 1)) {
drivers/media/cec/usb/pulse8/pulse8-cec.c
259
dev_info(pulse8->dev, "transmit %s failed with %s\n",
drivers/media/cec/usb/pulse8/pulse8-cec.c
261
pulse8_msgname(pulse8->data[0]));
drivers/media/cec/usb/pulse8/pulse8-cec.c
267
static int pulse8_send_and_wait(struct pulse8 *pulse8,
drivers/media/cec/usb/pulse8/pulse8-cec.c
273
err = pulse8_send_and_wait_once(pulse8, cmd, cmd_len, response, size);
drivers/media/cec/usb/pulse8/pulse8-cec.c
279
err = pulse8_send_and_wait_once(pulse8, cmd_sc, 2,
drivers/media/cec/usb/pulse8/pulse8-cec.c
282
err = pulse8_send_and_wait_once(pulse8, cmd, cmd_len,
drivers/media/cec/usb/pulse8/pulse8-cec.c
289
struct pulse8 *pulse8 = container_of(work, struct pulse8, tx_work);
drivers/media/cec/usb/pulse8/pulse8-cec.c
290
struct cec_msg *msg = &pulse8->tx_msg;
drivers/media/cec/usb/pulse8/pulse8-cec.c
298
mutex_lock(&pulse8->lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
300
cmd[1] = pulse8->tx_signal_free_time;
drivers/media/cec/usb/pulse8/pulse8-cec.c
301
err = pulse8_send_and_wait(pulse8, cmd, 2,
drivers/media/cec/usb/pulse8/pulse8-cec.c
305
pulse8->tx_msg_is_bcast = cec_msg_is_broadcast(msg);
drivers/media/cec/usb/pulse8/pulse8-cec.c
307
err = pulse8_send_and_wait(pulse8, cmd, 2,
drivers/media/cec/usb/pulse8/pulse8-cec.c
312
err = pulse8_send_and_wait(pulse8, cmd, 2,
drivers/media/cec/usb/pulse8/pulse8-cec.c
319
err = pulse8_send_and_wait(pulse8, cmd, 2,
drivers/media/cec/usb/pulse8/pulse8-cec.c
324
dev_info(pulse8->dev, "%s(0x%02x) failed with error %d for msg %*ph\n",
drivers/media/cec/usb/pulse8/pulse8-cec.c
328
mutex_unlock(&pulse8->lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
330
cec_transmit_attempt_done(pulse8->adap, CEC_TX_STATUS_ERROR);
drivers/media/cec/usb/pulse8/pulse8-cec.c
335
struct pulse8 *pulse8 =
drivers/media/cec/usb/pulse8/pulse8-cec.c
336
container_of(work, struct pulse8, irq_work);
drivers/media/cec/usb/pulse8/pulse8-cec.c
340
spin_lock_irqsave(&pulse8->msg_lock, flags);
drivers/media/cec/usb/pulse8/pulse8-cec.c
341
while (pulse8->rx_msg_num) {
drivers/media/cec/usb/pulse8/pulse8-cec.c
342
spin_unlock_irqrestore(&pulse8->msg_lock, flags);
drivers/media/cec/usb/pulse8/pulse8-cec.c
344
dev_info(pulse8->dev, "adap received %*ph\n",
drivers/media/cec/usb/pulse8/pulse8-cec.c
345
pulse8->rx_msg[pulse8->rx_msg_cur_idx].len,
drivers/media/cec/usb/pulse8/pulse8-cec.c
346
pulse8->rx_msg[pulse8->rx_msg_cur_idx].msg);
drivers/media/cec/usb/pulse8/pulse8-cec.c
347
cec_received_msg(pulse8->adap,
drivers/media/cec/usb/pulse8/pulse8-cec.c
348
&pulse8->rx_msg[pulse8->rx_msg_cur_idx]);
drivers/media/cec/usb/pulse8/pulse8-cec.c
349
spin_lock_irqsave(&pulse8->msg_lock, flags);
drivers/media/cec/usb/pulse8/pulse8-cec.c
350
if (pulse8->rx_msg_num)
drivers/media/cec/usb/pulse8/pulse8-cec.c
351
pulse8->rx_msg_num--;
drivers/media/cec/usb/pulse8/pulse8-cec.c
352
pulse8->rx_msg_cur_idx =
drivers/media/cec/usb/pulse8/pulse8-cec.c
353
(pulse8->rx_msg_cur_idx + 1) % NUM_MSGS;
drivers/media/cec/usb/pulse8/pulse8-cec.c
355
spin_unlock_irqrestore(&pulse8->msg_lock, flags);
drivers/media/cec/usb/pulse8/pulse8-cec.c
357
mutex_lock(&pulse8->lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
358
status = pulse8->tx_done_status;
drivers/media/cec/usb/pulse8/pulse8-cec.c
359
pulse8->tx_done_status = 0;
drivers/media/cec/usb/pulse8/pulse8-cec.c
360
mutex_unlock(&pulse8->lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
362
cec_transmit_attempt_done(pulse8->adap, status);
drivers/media/cec/usb/pulse8/pulse8-cec.c
368
struct pulse8 *pulse8 = serio_get_drvdata(serio);
drivers/media/cec/usb/pulse8/pulse8-cec.c
372
if (!pulse8->started && data != MSGSTART)
drivers/media/cec/usb/pulse8/pulse8-cec.c
375
pulse8->escape = true;
drivers/media/cec/usb/pulse8/pulse8-cec.c
378
if (pulse8->escape) {
drivers/media/cec/usb/pulse8/pulse8-cec.c
380
pulse8->escape = false;
drivers/media/cec/usb/pulse8/pulse8-cec.c
382
u8 msgcode = pulse8->buf[0];
drivers/media/cec/usb/pulse8/pulse8-cec.c
385
dev_info(pulse8->dev, "received %s: %*ph\n",
drivers/media/cec/usb/pulse8/pulse8-cec.c
387
pulse8->idx, pulse8->buf);
drivers/media/cec/usb/pulse8/pulse8-cec.c
395
pulse8->new_rx_msg_len = 1;
drivers/media/cec/usb/pulse8/pulse8-cec.c
396
pulse8->new_rx_msg[0] = pulse8->buf[1];
drivers/media/cec/usb/pulse8/pulse8-cec.c
401
if (pulse8->new_rx_msg_len < CEC_MAX_MSG_SIZE)
drivers/media/cec/usb/pulse8/pulse8-cec.c
402
pulse8->new_rx_msg[pulse8->new_rx_msg_len++] =
drivers/media/cec/usb/pulse8/pulse8-cec.c
403
pulse8->buf[1];
drivers/media/cec/usb/pulse8/pulse8-cec.c
407
spin_lock_irqsave(&pulse8->msg_lock, irq_flags);
drivers/media/cec/usb/pulse8/pulse8-cec.c
408
idx = (pulse8->rx_msg_cur_idx + pulse8->rx_msg_num) %
drivers/media/cec/usb/pulse8/pulse8-cec.c
410
if (pulse8->rx_msg_num == NUM_MSGS) {
drivers/media/cec/usb/pulse8/pulse8-cec.c
411
dev_warn(pulse8->dev,
drivers/media/cec/usb/pulse8/pulse8-cec.c
413
pulse8->new_rx_msg_len,
drivers/media/cec/usb/pulse8/pulse8-cec.c
414
pulse8->new_rx_msg);
drivers/media/cec/usb/pulse8/pulse8-cec.c
415
spin_unlock_irqrestore(&pulse8->msg_lock,
drivers/media/cec/usb/pulse8/pulse8-cec.c
417
pulse8->new_rx_msg_len = 0;
drivers/media/cec/usb/pulse8/pulse8-cec.c
420
pulse8->rx_msg_num++;
drivers/media/cec/usb/pulse8/pulse8-cec.c
421
memcpy(pulse8->rx_msg[idx].msg, pulse8->new_rx_msg,
drivers/media/cec/usb/pulse8/pulse8-cec.c
422
pulse8->new_rx_msg_len);
drivers/media/cec/usb/pulse8/pulse8-cec.c
423
pulse8->rx_msg[idx].len = pulse8->new_rx_msg_len;
drivers/media/cec/usb/pulse8/pulse8-cec.c
424
spin_unlock_irqrestore(&pulse8->msg_lock, irq_flags);
drivers/media/cec/usb/pulse8/pulse8-cec.c
425
schedule_work(&pulse8->irq_work);
drivers/media/cec/usb/pulse8/pulse8-cec.c
426
pulse8->new_rx_msg_len = 0;
drivers/media/cec/usb/pulse8/pulse8-cec.c
429
WARN_ON(pulse8->tx_done_status);
drivers/media/cec/usb/pulse8/pulse8-cec.c
430
pulse8->tx_done_status = CEC_TX_STATUS_OK;
drivers/media/cec/usb/pulse8/pulse8-cec.c
431
schedule_work(&pulse8->irq_work);
drivers/media/cec/usb/pulse8/pulse8-cec.c
438
if (pulse8->tx_msg_is_bcast)
drivers/media/cec/usb/pulse8/pulse8-cec.c
440
WARN_ON(pulse8->tx_done_status);
drivers/media/cec/usb/pulse8/pulse8-cec.c
441
pulse8->tx_done_status = CEC_TX_STATUS_NACK;
drivers/media/cec/usb/pulse8/pulse8-cec.c
442
schedule_work(&pulse8->irq_work);
drivers/media/cec/usb/pulse8/pulse8-cec.c
447
WARN_ON(pulse8->tx_done_status);
drivers/media/cec/usb/pulse8/pulse8-cec.c
448
pulse8->tx_done_status = CEC_TX_STATUS_ERROR;
drivers/media/cec/usb/pulse8/pulse8-cec.c
449
schedule_work(&pulse8->irq_work);
drivers/media/cec/usb/pulse8/pulse8-cec.c
455
pulse8->new_rx_msg_len = 0;
drivers/media/cec/usb/pulse8/pulse8-cec.c
460
if (pulse8->idx == 0)
drivers/media/cec/usb/pulse8/pulse8-cec.c
462
memcpy(pulse8->data, pulse8->buf, pulse8->idx);
drivers/media/cec/usb/pulse8/pulse8-cec.c
463
pulse8->len = pulse8->idx;
drivers/media/cec/usb/pulse8/pulse8-cec.c
464
complete(&pulse8->cmd_done);
drivers/media/cec/usb/pulse8/pulse8-cec.c
467
pulse8->idx = 0;
drivers/media/cec/usb/pulse8/pulse8-cec.c
468
pulse8->started = false;
drivers/media/cec/usb/pulse8/pulse8-cec.c
471
pulse8->idx = 0;
drivers/media/cec/usb/pulse8/pulse8-cec.c
472
pulse8->started = true;
drivers/media/cec/usb/pulse8/pulse8-cec.c
476
if (pulse8->idx >= DATA_SIZE) {
drivers/media/cec/usb/pulse8/pulse8-cec.c
477
dev_dbg(pulse8->dev,
drivers/media/cec/usb/pulse8/pulse8-cec.c
478
"throwing away %d bytes of garbage\n", pulse8->idx);
drivers/media/cec/usb/pulse8/pulse8-cec.c
479
pulse8->idx = 0;
drivers/media/cec/usb/pulse8/pulse8-cec.c
481
pulse8->buf[pulse8->idx++] = data;
drivers/media/cec/usb/pulse8/pulse8-cec.c
487
struct pulse8 *pulse8 = cec_get_drvdata(adap);
drivers/media/cec/usb/pulse8/pulse8-cec.c
491
mutex_lock(&pulse8->lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
494
err = pulse8_send_and_wait(pulse8, cmd, 2,
drivers/media/cec/usb/pulse8/pulse8-cec.c
497
pulse8->rx_msg_num = 0;
drivers/media/cec/usb/pulse8/pulse8-cec.c
498
pulse8->tx_done_status = 0;
drivers/media/cec/usb/pulse8/pulse8-cec.c
500
mutex_unlock(&pulse8->lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
506
struct pulse8 *pulse8 = cec_get_drvdata(adap);
drivers/media/cec/usb/pulse8/pulse8-cec.c
512
mutex_lock(&pulse8->lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
518
err = pulse8_send_and_wait(pulse8, cmd, 3,
drivers/media/cec/usb/pulse8/pulse8-cec.c
520
if ((err && mask != 0) || pulse8->restoring_config)
drivers/media/cec/usb/pulse8/pulse8-cec.c
525
err = pulse8_send_and_wait(pulse8, cmd, 2,
drivers/media/cec/usb/pulse8/pulse8-cec.c
529
pulse8->autonomous = cmd[1];
drivers/media/cec/usb/pulse8/pulse8-cec.c
535
err = pulse8_send_and_wait(pulse8, cmd, 2,
drivers/media/cec/usb/pulse8/pulse8-cec.c
569
err = pulse8_send_and_wait(pulse8, cmd, 3,
drivers/media/cec/usb/pulse8/pulse8-cec.c
576
err = pulse8_send_and_wait(pulse8, cmd, 2,
drivers/media/cec/usb/pulse8/pulse8-cec.c
584
err = pulse8_send_and_wait(pulse8, cmd, 3,
drivers/media/cec/usb/pulse8/pulse8-cec.c
589
if (pulse8->vers < 10) {
drivers/media/cec/usb/pulse8/pulse8-cec.c
592
err = pulse8_send_and_wait(pulse8, cmd, 2,
drivers/media/cec/usb/pulse8/pulse8-cec.c
611
err = pulse8_send_and_wait(pulse8, cmd, 1 + osd_len,
drivers/media/cec/usb/pulse8/pulse8-cec.c
618
if (pulse8->restoring_config)
drivers/media/cec/usb/pulse8/pulse8-cec.c
619
pulse8->restoring_config = false;
drivers/media/cec/usb/pulse8/pulse8-cec.c
621
pulse8->config_pending = true;
drivers/media/cec/usb/pulse8/pulse8-cec.c
622
mutex_unlock(&pulse8->lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
629
struct pulse8 *pulse8 = cec_get_drvdata(adap);
drivers/media/cec/usb/pulse8/pulse8-cec.c
631
pulse8->tx_msg = *msg;
drivers/media/cec/usb/pulse8/pulse8-cec.c
633
dev_info(pulse8->dev, "adap transmit %*ph\n",
drivers/media/cec/usb/pulse8/pulse8-cec.c
635
pulse8->tx_signal_free_time = signal_free_time;
drivers/media/cec/usb/pulse8/pulse8-cec.c
636
schedule_work(&pulse8->tx_work);
drivers/media/cec/usb/pulse8/pulse8-cec.c
642
struct pulse8 *pulse8 = cec_get_drvdata(adap);
drivers/media/cec/usb/pulse8/pulse8-cec.c
644
cancel_delayed_work_sync(&pulse8->ping_eeprom_work);
drivers/media/cec/usb/pulse8/pulse8-cec.c
645
cancel_work_sync(&pulse8->irq_work);
drivers/media/cec/usb/pulse8/pulse8-cec.c
646
cancel_work_sync(&pulse8->tx_work);
drivers/media/cec/usb/pulse8/pulse8-cec.c
647
kfree(pulse8);
drivers/media/cec/usb/pulse8/pulse8-cec.c
659
struct pulse8 *pulse8 = serio_get_drvdata(serio);
drivers/media/cec/usb/pulse8/pulse8-cec.c
661
cancel_delayed_work_sync(&pulse8->ping_eeprom_work);
drivers/media/cec/usb/pulse8/pulse8-cec.c
662
mutex_lock(&pulse8->lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
663
pulse8->serio = NULL;
drivers/media/cec/usb/pulse8/pulse8-cec.c
664
mutex_unlock(&pulse8->lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
665
cec_unregister_adapter(pulse8->adap);
drivers/media/cec/usb/pulse8/pulse8-cec.c
670
static int pulse8_setup(struct pulse8 *pulse8, struct serio *serio,
drivers/media/cec/usb/pulse8/pulse8-cec.c
673
u8 *data = pulse8->data + 1;
drivers/media/cec/usb/pulse8/pulse8-cec.c
678
pulse8->vers = 0;
drivers/media/cec/usb/pulse8/pulse8-cec.c
681
err = pulse8_send_and_wait(pulse8, cmd, 1, cmd[0], 2);
drivers/media/cec/usb/pulse8/pulse8-cec.c
684
pulse8->vers = (data[0] << 8) | data[1];
drivers/media/cec/usb/pulse8/pulse8-cec.c
685
dev_info(pulse8->dev, "Firmware version %04x\n", pulse8->vers);
drivers/media/cec/usb/pulse8/pulse8-cec.c
686
if (pulse8->vers < 2) {
drivers/media/cec/usb/pulse8/pulse8-cec.c
692
err = pulse8_send_and_wait(pulse8, cmd, 1, cmd[0], 4);
drivers/media/cec/usb/pulse8/pulse8-cec.c
696
dev_info(pulse8->dev, "Firmware build date %ptT\n", &date);
drivers/media/cec/usb/pulse8/pulse8-cec.c
698
dev_dbg(pulse8->dev, "Persistent config:\n");
drivers/media/cec/usb/pulse8/pulse8-cec.c
700
err = pulse8_send_and_wait(pulse8, cmd, 1, cmd[0], 1);
drivers/media/cec/usb/pulse8/pulse8-cec.c
703
pulse8->autonomous = data[0];
drivers/media/cec/usb/pulse8/pulse8-cec.c
704
dev_dbg(pulse8->dev, "Autonomous mode: %s",
drivers/media/cec/usb/pulse8/pulse8-cec.c
707
if (pulse8->vers >= 10) {
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
711
dev_dbg(pulse8->dev, "Auto Power On: %s",
drivers/media/cec/usb/pulse8/pulse8-cec.c
716
err = pulse8_send_and_wait(pulse8, cmd, 1, cmd[0], 1);
drivers/media/cec/usb/pulse8/pulse8-cec.c
720
dev_dbg(pulse8->dev, "Primary device type: %d\n", data[0]);
drivers/media/cec/usb/pulse8/pulse8-cec.c
753
dev_info(pulse8->dev, "Unknown Primary Device Type: %d\n",
drivers/media/cec/usb/pulse8/pulse8-cec.c
759
err = pulse8_send_and_wait(pulse8, cmd, 1, cmd[0], 2);
drivers/media/cec/usb/pulse8/pulse8-cec.c
763
dev_dbg(pulse8->dev, "Logical address ACK mask: %x\n",
drivers/media/cec/usb/pulse8/pulse8-cec.c
769
err = pulse8_send_and_wait(pulse8, cmd, 1, cmd[0], 1);
drivers/media/cec/usb/pulse8/pulse8-cec.c
773
dev_dbg(pulse8->dev, "Physical address: %x.%x.%x.%x\n",
drivers/media/cec/usb/pulse8/pulse8-cec.c
777
if (pulse8->vers < 10) {
drivers/media/cec/usb/pulse8/pulse8-cec.c
779
err = pulse8_send_and_wait(pulse8, cmd, 1, cmd[0], 1);
drivers/media/cec/usb/pulse8/pulse8-cec.c
783
dev_dbg(pulse8->dev, "CEC version: %d\n", log_addrs->cec_version);
drivers/media/cec/usb/pulse8/pulse8-cec.c
787
err = pulse8_send_and_wait(pulse8, cmd, 1, cmd[0], 0);
drivers/media/cec/usb/pulse8/pulse8-cec.c
791
dev_dbg(pulse8->dev, "OSD name: %s\n", log_addrs->osd_name);
drivers/media/cec/usb/pulse8/pulse8-cec.c
796
static int pulse8_apply_persistent_config(struct pulse8 *pulse8,
drivers/media/cec/usb/pulse8/pulse8-cec.c
802
err = cec_s_log_addrs(pulse8->adap, log_addrs, false);
drivers/media/cec/usb/pulse8/pulse8-cec.c
806
cec_s_phys_addr(pulse8->adap, pa, false);
drivers/media/cec/usb/pulse8/pulse8-cec.c
813
struct pulse8 *pulse8 =
drivers/media/cec/usb/pulse8/pulse8-cec.c
814
container_of(work, struct pulse8, ping_eeprom_work.work);
drivers/media/cec/usb/pulse8/pulse8-cec.c
817
mutex_lock(&pulse8->lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
819
if (pulse8_send_and_wait(pulse8, &cmd, 1,
drivers/media/cec/usb/pulse8/pulse8-cec.c
821
dev_warn(pulse8->dev, "failed to ping EEPROM\n");
drivers/media/cec/usb/pulse8/pulse8-cec.c
825
if (pulse8->vers < 2)
drivers/media/cec/usb/pulse8/pulse8-cec.c
828
if (pulse8->config_pending && persistent_config) {
drivers/media/cec/usb/pulse8/pulse8-cec.c
829
dev_dbg(pulse8->dev, "writing pending config to EEPROM\n");
drivers/media/cec/usb/pulse8/pulse8-cec.c
831
if (pulse8_send_and_wait(pulse8, &cmd, 1,
drivers/media/cec/usb/pulse8/pulse8-cec.c
833
dev_info(pulse8->dev, "failed to write pending config to EEPROM\n");
drivers/media/cec/usb/pulse8/pulse8-cec.c
835
pulse8->config_pending = false;
drivers/media/cec/usb/pulse8/pulse8-cec.c
838
schedule_delayed_work(&pulse8->ping_eeprom_work, PING_PERIOD);
drivers/media/cec/usb/pulse8/pulse8-cec.c
839
mutex_unlock(&pulse8->lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
845
struct pulse8 *pulse8;
drivers/media/cec/usb/pulse8/pulse8-cec.c
850
pulse8 = kzalloc_obj(*pulse8);
drivers/media/cec/usb/pulse8/pulse8-cec.c
852
if (!pulse8)
drivers/media/cec/usb/pulse8/pulse8-cec.c
855
pulse8->serio = serio;
drivers/media/cec/usb/pulse8/pulse8-cec.c
856
pulse8->adap = cec_allocate_adapter(&pulse8_cec_adap_ops, pulse8,
drivers/media/cec/usb/pulse8/pulse8-cec.c
858
err = PTR_ERR_OR_ZERO(pulse8->adap);
drivers/media/cec/usb/pulse8/pulse8-cec.c
860
kfree(pulse8);
drivers/media/cec/usb/pulse8/pulse8-cec.c
864
pulse8->dev = &serio->dev;
drivers/media/cec/usb/pulse8/pulse8-cec.c
865
serio_set_drvdata(serio, pulse8);
drivers/media/cec/usb/pulse8/pulse8-cec.c
866
INIT_WORK(&pulse8->irq_work, pulse8_irq_work_handler);
drivers/media/cec/usb/pulse8/pulse8-cec.c
867
INIT_WORK(&pulse8->tx_work, pulse8_tx_work_handler);
drivers/media/cec/usb/pulse8/pulse8-cec.c
868
INIT_DELAYED_WORK(&pulse8->ping_eeprom_work,
drivers/media/cec/usb/pulse8/pulse8-cec.c
870
mutex_init(&pulse8->lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
871
spin_lock_init(&pulse8->msg_lock);
drivers/media/cec/usb/pulse8/pulse8-cec.c
872
pulse8->config_pending = false;
drivers/media/cec/usb/pulse8/pulse8-cec.c
878
err = pulse8_setup(pulse8, serio, &log_addrs, &pa);
drivers/media/cec/usb/pulse8/pulse8-cec.c
882
err = cec_register_adapter(pulse8->adap, &serio->dev);
drivers/media/cec/usb/pulse8/pulse8-cec.c
886
pulse8->dev = &pulse8->adap->devnode.dev;
drivers/media/cec/usb/pulse8/pulse8-cec.c
888
if (persistent_config && pulse8->autonomous) {
drivers/media/cec/usb/pulse8/pulse8-cec.c
889
err = pulse8_apply_persistent_config(pulse8, &log_addrs, pa);
drivers/media/cec/usb/pulse8/pulse8-cec.c
892
pulse8->restoring_config = true;
drivers/media/cec/usb/pulse8/pulse8-cec.c
895
schedule_delayed_work(&pulse8->ping_eeprom_work, PING_PERIOD);
drivers/media/cec/usb/pulse8/pulse8-cec.c
900
pulse8->serio = NULL;
drivers/media/cec/usb/pulse8/pulse8-cec.c
904
cec_delete_adapter(pulse8->adap);