Symbol: extron
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1018
return extron_send_and_wait(port->extron, port, cmd, NULL);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1028
dev_info(port->extron->dev, "unconfigured port %d (%s)\n",
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1030
port->extron->splitter.is_standby ? "Off" : "On");
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1042
dev_info(port->extron->dev, "configured port %d (%s)\n",
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1044
port->extron->splitter.is_standby ? "Off" : "On");
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1059
input_adap = port->extron->ports[port->extron->num_out_ports]->adap;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1074
port->extron->ports[port->extron->num_out_ports]->adap);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1112
pwr_state[port->extron->splitter.is_standby]);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1146
struct extron *extron = port->extron;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1150
extron->unit_name, extron->unit_type);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1152
'6' + extron->num_out_ports / 2, extron->num_out_ports);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1154
extron->unit_fw_version, extron->unit_cec_engine_version);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1155
if (extron->hpd_never_low)
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1167
pwr_state[extron->splitter.is_standby]);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1172
extron_adap_status_port(extron->ports[extron->num_out_ports], file);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1175
for (i = 0; i < extron->num_out_ports; i++)
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1176
extron_adap_status_port(extron->ports[i], file);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1351
struct extron *extron = serio_get_drvdata(serio);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1354
kthread_stop(extron->kthread_setup);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1356
for (p = 0; p < extron->num_ports; p++) {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1357
struct extron_port *port = extron->ports[p];
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1364
cancel_delayed_work_sync(&extron->work_update_edid);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1365
for (p = 0; p < extron->num_ports; p++) {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1366
struct extron_port *port = extron->ports[p];
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1387
complete(&extron->edid_completion);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1389
for (p = 0; p < extron->num_ports; p++) {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1390
struct extron_port *port = extron->ports[p];
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1398
mutex_destroy(&extron->edid_lock);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1399
mutex_destroy(&extron->serio_lock);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1400
extron->serio = NULL;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1405
static int extron_setup(struct extron *extron)
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1407
struct serio *serio = extron->serio;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1409
u8 *reply = extron->reply;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1418
extron_send_and_wait(extron, NULL, "WI1*0CCEC", NULL);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1419
extron_send_and_wait(extron, NULL, "WO0*CCEC", NULL);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1422
err = extron_send_and_wait(extron, NULL, "N", "Pno");
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1425
dev_info(extron->dev, "Unit part number: %s\n", reply + 3);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1429
dev_err(extron->dev, "Unsupported model\n");
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1433
extron->num_out_ports = 2 * (reply[9] - '6');
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1434
extron->splitter.num_out_ports = extron->num_out_ports;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1435
extron->splitter.ports = extron->splitter_ports;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1436
extron->splitter.dev = extron->dev;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1437
extron->num_in_ports = 1;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1438
extron->num_ports = extron->num_out_ports + extron->num_in_ports;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1439
dev_info(extron->dev, "Unit output ports: %d\n", extron->num_out_ports);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1440
dev_info(extron->dev, "Unit input ports: %d\n", extron->num_in_ports);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1442
err = extron_send_and_wait(extron, NULL, "W CN", "Ipn ");
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1445
dev_info(extron->dev, "Unit name: %s\n", reply + 4);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1446
strscpy(extron->unit_name, reply + 4, sizeof(extron->unit_name));
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1448
err = extron_send_and_wait(extron, NULL, "*Q", "Bld");
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1451
dev_info(extron->dev, "Unit FW Version: %s\n", reply + 3);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1452
strscpy(extron->unit_fw_version, reply + 3,
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1453
sizeof(extron->unit_fw_version));
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1456
dev_err(extron->dev,
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1461
err = extron_send_and_wait(extron, NULL, "2i", "Inf02*");
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1464
dev_info(extron->dev, "Unit Type: %s\n", reply + 6);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1465
strscpy(extron->unit_type, reply + 6, sizeof(extron->unit_type));
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1467
err = extron_send_and_wait(extron, NULL, "39Q", "Ver39*");
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1470
dev_info(extron->dev, "CEC Engine Version: %s\n", reply + 6);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1471
strscpy(extron->unit_cec_engine_version, reply + 6,
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1472
sizeof(extron->unit_cec_engine_version));
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1475
err = extron_send_and_wait(extron, NULL, "WI1*0CCEC", "CcecI1*");
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1478
err = extron_send_and_wait(extron, NULL, "WO0*CCEC", "CcecO0");
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1482
extron->hpd_never_low = hpd_never_low;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1486
dev_info(extron->dev, "Always keep input HPD high\n");
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1488
dev_info(extron->dev, "Pull input HPD low if all output HPDs are low\n");
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1489
extron_send_and_wait(extron, NULL, "W1ihpd", "Ihpd1");
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1492
for (p = 0; p < extron->num_ports; p++) {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1504
port->extron = extron;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1505
port->is_input = p >= extron->num_out_ports;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1507
port->port.port = 1 + (port->is_input ? p - extron->num_out_ports : p);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1508
port->port.splitter = &extron->splitter;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1514
port->dev = extron->dev;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1527
port->vdev.v4l2_dev = &extron->v4l2_dev;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1559
extron->ports[p] = port;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1560
extron->splitter_ports[p] = &port->port;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1566
err = extron_send_and_wait(extron, NULL, "WI1*20CCEC", "CcecI1*");
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1570
err = extron_send_and_wait(extron, NULL, "WO20*CCEC", "CcecO20");
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1575
err = extron_send_and_wait(extron, NULL, "WI1*15LCEC", "LcecI1*15");
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1579
for (p = 0; p < extron->num_out_ports; p++) {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1585
err = extron_send_and_wait(extron, extron->ports[p], cmd, resp);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1594
extron->is_ready = true;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1597
err = extron_send_and_wait(extron, NULL, "WHDCP", "Hdcp");
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1601
return extron_send_and_wait(extron, NULL, "WLS", "Sig");
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1606
struct extron *extron = _extron;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1616
err = extron_send_and_wait(extron, NULL, "W3CV", "Vrb3");
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1636
err = extron_setup(extron);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1640
for (p = 0; p < extron->num_ports; p++) {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1643
port = extron->ports[p];
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1648
v4l2_err(&extron->v4l2_dev, "Failed to register video device\n");
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1652
err = cec_register_adapter(port->adap, extron->dev);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1707
port = extron->ports[extron->num_out_ports];
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1710
if (hpd_never_low != extron->hpd_never_low) {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1716
dev_info(extron->dev, "Always keep input HPD high\n");
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1717
extron_send_and_wait(extron, NULL, "W0ihpd", "Ihpd0");
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1719
dev_info(extron->dev, "Pull input HPD low if all output HPDs are low\n");
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1720
extron_send_and_wait(extron, NULL, "W1ihpd", "Ihpd1");
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1722
extron->hpd_never_low = hpd_never_low;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1725
cec_splitter_poll(&extron->splitter, port->adap, debug) &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1731
cancel_delayed_work_sync(&extron->work_update_edid);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1732
schedule_delayed_work(&extron->work_update_edid,
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1739
extron->is_ready = false;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1740
for (p = 0; p < extron->num_ports; p++) {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1741
struct extron_port *port = extron->ports[p];
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1751
cancel_delayed_work_sync(&extron->work_update_edid);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1752
complete(&extron->edid_completion);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1753
dev_err(extron->dev, "Setup failed with error %d\n", err);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1761
struct extron *extron;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1772
extron = kzalloc_obj(*extron);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1774
if (!extron)
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1777
extron->serio = serio;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1778
extron->dev = &serio->dev;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1779
mutex_init(&extron->serio_lock);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1780
mutex_init(&extron->edid_lock);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1781
INIT_DELAYED_WORK(&extron->work_update_edid, update_edid_work);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1783
err = v4l2_device_register(extron->dev, &extron->v4l2_dev);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1791
serio_set_drvdata(serio, extron);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1792
init_completion(&extron->edid_completion);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1794
extron->kthread_setup = kthread_run(extron_setup_thread, extron,
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1796
if (!IS_ERR(extron->kthread_setup))
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1799
dev_err(extron->dev, "kthread_run() failed\n");
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1800
err = PTR_ERR(extron->kthread_setup);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1802
extron->serio = NULL;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1806
v4l2_device_unregister(&extron->v4l2_dev);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1808
mutex_destroy(&extron->edid_lock);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1809
mutex_destroy(&extron->serio_lock);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
1810
kfree(extron);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
194
static int extron_send_and_wait_len(struct extron *extron, struct extron_port *port,
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
203
dev_info(extron->dev, "transmit %s (response: %s)\n",
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
206
dev_info(extron->dev, "transmit %s\n", cmd);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
209
mutex_lock(&extron->serio_lock);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
215
init_completion(&extron->cmd_done);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
216
extron->cmd_error = 0;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
217
extron->response = response;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
219
err = extron_send_len(extron->serio, cmd, bin, len);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
222
!wait_for_completion_timeout(port ? &port->cmd_done : &extron->cmd_done, timeout)) {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
223
dev_info(extron->dev, "transmit %s failed with %s (expected: %s)\n",
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
224
cmd, extron->reply, response);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
228
if (!err && response && (port ? port->cmd_error : extron->cmd_error)) {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
229
dev_info(extron->dev, "transmit %s failed with E%02u (expected: %s)\n",
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
230
cmd, port ? port->cmd_error : extron->cmd_error, response);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
234
extron->cmd_error = 0;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
240
extron->response = NULL;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
241
mutex_unlock(&extron->serio_lock);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
245
static int extron_send_and_wait(struct extron *extron, struct extron_port *port,
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
248
return extron_send_and_wait_len(extron, port, cmd, NULL, 0, response);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
425
extron_set_edid_string(port->edid_tmp + 0x5f, port->extron->unit_name);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
447
struct extron *extron = port->extron;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
454
if (mutex_lock_interruptible(&extron->edid_lock))
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
462
ret = extron_send_and_wait_len(port->extron, port, "W+UF256,in.bin",
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
467
ret = extron_send_and_wait(port->extron, port, "WI1,in.binEDID",
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
475
mutex_unlock(&extron->edid_lock);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
481
mutex_unlock(&extron->edid_lock);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
487
struct extron *extron = container_of(w, struct extron,
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
489
struct extron_port *in = extron->ports[extron->num_out_ports];
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
500
for (out = 0; has_4kp60 && out < extron->num_out_ports; out++) {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
501
p = extron->ports[out];
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
509
for (out = 0; has_4kp30 && out < extron->num_out_ports; out++)
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
510
if (extron->ports[out]->read_edid)
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
511
has_4kp30 = extron->ports[out]->has_4kp30;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
513
for (out = 0; has_qy && out < extron->num_out_ports; out++)
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
514
if (extron->ports[out]->read_edid)
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
515
has_qy = extron->ports[out]->has_qy;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
517
for (out = 0; has_qs && out < extron->num_out_ports; out++)
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
518
if (extron->ports[out]->read_edid)
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
519
has_qs = extron->ports[out]->has_qs;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
537
extron_write_edid(extron->ports[extron->num_out_ports],
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
544
struct extron *extron = port->extron;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
548
idx = port->port.port + (port->is_input ? 0 : extron->num_in_ports);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
551
if (mutex_lock_interruptible(&extron->edid_lock))
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
555
extron->edid_bytes_read = 0;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
556
extron->edid_port = port;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
561
extron->edid_reading = true;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
563
if (!extron_send_and_wait(extron, port, cmd, reply))
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
564
wait_for_completion_killable_timeout(&extron->edid_completion,
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
573
extron->edid_reading = false;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
575
mutex_unlock(&extron->edid_lock);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
576
cancel_delayed_work_sync(&extron->work_update_edid);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
578
schedule_delayed_work(&extron->work_update_edid,
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
586
struct extron *extron = port->extron;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
638
if (extron->edid_reading && !has_edid &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
639
extron->edid_port == port)
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
640
extron->edid_reading = false;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
642
} else if (!extron->edid_reading || extron->edid_port != port) {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
691
dev_info(port->extron->dev, "malformed msg received: '%s'\n", data);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
713
static void extron_process_signal_change(struct extron *extron, const char *data)
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
717
extron_port_signal_change(extron->ports[extron->num_out_ports],
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
719
for (i = 0; i < extron->num_out_ports; i++)
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
720
extron_port_signal_change(extron->ports[i],
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
743
static void extron_process_edid_change(struct extron *extron, const char *data)
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
751
if (!extron->is_ready)
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
754
for (i = 0; i < extron->num_out_ports; i++)
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
755
extron_port_edid_change(extron->ports[i],
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
806
struct extron *extron = port ? port->extron : NULL;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
808
if (!port || port != extron->edid_port)
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
810
while (extron->edid_bytes_read < sizeof(port->edid) && *hex) {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
811
int err = hex2bin(&port->edid[extron->edid_bytes_read], hex, 1);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
814
extron->edid_reading = false;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
815
complete(&extron->edid_completion);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
818
extron->edid_bytes_read++;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
821
if (extron->edid_bytes_read == 128 &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
825
extron->edid_reading = false;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
826
complete(&extron->edid_completion);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
828
if (extron->edid_bytes_read < sizeof(port->edid))
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
832
extron->edid_reading = false;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
833
complete(&extron->edid_completion);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
839
struct extron *extron = serio_get_drvdata(serio);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
845
if (extron->idx == 0)
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
847
memcpy(extron->data, extron->buf, extron->idx);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
848
extron->len = extron->idx;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
849
extron->data[extron->len] = 0;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
851
dev_info(extron->dev, "received %s\n", extron->data);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
852
extron->idx = 0;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
853
if (!memcmp(extron->data, "Sig", 3) &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
854
extron->data[4] == '*') {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
855
extron_process_signal_change(extron, extron->data + 3);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
856
} else if (!memcmp(extron->data, "Hdcp", 4) &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
857
extron->data[5] == '*') {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
858
extron_process_edid_change(extron, extron->data + 4);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
859
} else if (!memcmp(extron->data, "DcecI", 5) &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
860
extron->data[5] >= '1' &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
861
extron->data[5] < '1' + extron->num_in_ports) {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
862
unsigned int p = extron->data[5] - '1';
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
864
p += extron->num_out_ports;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
865
extron_process_tx_done(extron->ports[p],
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
866
extron->data[extron->len - 1]);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
867
} else if (!memcmp(extron->data, "Ceci", 4) &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
868
extron->data[4] >= '1' &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
869
extron->data[4] < '1' + extron->num_in_ports &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
870
extron->data[5] == '*') {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
871
unsigned int p = extron->data[4] - '1';
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
873
p += extron->num_out_ports;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
874
extron_process_received(extron->ports[p],
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
875
extron->data + 6);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
876
} else if (!memcmp(extron->data, "DcecO", 5) &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
877
extron->data[5] >= '1' &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
878
extron->data[5] < '1' + extron->num_out_ports) {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
879
unsigned int p = extron->data[5] - '1';
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
881
extron_process_tx_done(extron->ports[p],
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
882
extron->data[extron->len - 1]);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
883
} else if (!memcmp(extron->data, "Ceco", 4) &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
884
extron->data[4] >= '1' &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
885
extron->data[4] < '1' + extron->num_out_ports &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
886
extron->data[5] == '*') {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
887
unsigned int p = extron->data[4] - '1';
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
889
extron_process_received(extron->ports[p],
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
890
extron->data + 6);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
891
} else if (!memcmp(extron->data, "Pceco", 5) &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
892
extron->data[5] >= '1' &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
893
extron->data[5] < '1' + extron->num_out_ports) {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
894
unsigned int p = extron->data[5] - '1';
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
897
if (sscanf(extron->data + 7, "%%%02x%%%02x",
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
899
extron_phys_addr_change(extron->ports[p],
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
901
} else if (!memcmp(extron->data, "Pceci", 5) &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
902
extron->data[5] >= '1' &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
903
extron->data[5] < '1' + extron->num_in_ports) {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
904
unsigned int p = extron->data[5] - '1';
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
907
p += extron->num_out_ports;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
908
if (sscanf(extron->data + 7, "%%%02x%%%02x",
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
910
extron_phys_addr_change(extron->ports[p],
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
912
} else if (!memcmp(extron->data, "EdidR", 5) &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
913
extron->data[5] >= '1' &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
914
extron->data[5] < '1' + extron->num_ports &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
915
extron->data[6] == '*') {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
916
unsigned int p = extron->data[5] - '1';
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
921
p = extron->num_out_ports;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
922
extron_add_edid(extron->ports[p], extron->data + 7);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
923
} else if (extron->edid_reading && extron->len == 32 &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
924
extron->edid_port) {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
925
extron_add_edid(extron->edid_port, extron->data);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
929
if (extron->response &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
930
!strncmp(extron->response, extron->data,
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
931
strlen(extron->response)))
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
934
for (p = 0; !found_response && p < extron->num_ports; p++) {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
935
port = extron->ports[p];
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
937
!strncmp(port->response, extron->data,
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
942
if (!found_response && extron->response &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
943
extron->data[0] == 'E' &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
944
isdigit(extron->data[1]) &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
945
isdigit(extron->data[2]) &&
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
946
!extron->data[3]) {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
947
extron->cmd_error = (extron->data[1] - '0') * 10 +
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
948
extron->data[2] - '0';
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
949
extron->response = NULL;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
950
complete(&extron->cmd_done);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
956
memcpy(extron->reply, extron->data, extron->len);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
957
extron->reply[extron->len] = 0;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
959
extron->response = NULL;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
960
complete(&extron->cmd_done);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
968
if (extron->idx >= DATA_SIZE - 1) {
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
969
dev_info(extron->dev,
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
970
"throwing away %d bytes of garbage\n", extron->idx);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
971
extron->idx = 0;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
973
extron->buf[extron->idx++] = (char)data;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c
998
err = extron_send_and_wait(port->extron, port, cmd, resp);
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.h
34
struct extron;
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.h
52
struct extron *extron;