This is an automatic generated email to let you know that the following patch were queued at the http://git.linuxtv.org/cgit.cgi/v4l-utils.git tree:
Subject: cec utils: support CEC_ADAP_G_CONNECTOR_INFO Author: Hans Verkuil <hverkuil-ci...@xs4all.nl> Date: Wed Oct 2 10:48:55 2019 +0200 Add support for this new CEC ioctl. Signed-off-by: Hans Verkuil <hverkuil-ci...@xs4all.nl> utils/cec-compliance/cec-compliance.cpp | 11 ++++++++--- utils/cec-ctl/cec-ctl.cpp | 14 ++++++++++---- utils/cec-follower/cec-follower.cpp | 8 +++++++- utils/common/cec-info.cpp | 18 +++++++++++++++++- utils/common/cec-info.h | 3 ++- 5 files changed, 44 insertions(+), 10 deletions(-) --- http://git.linuxtv.org/cgit.cgi/v4l-utils.git/commit/?id=2bce951d7b7b23a7bb1a24f962cd843c8a988c84 diff --git a/utils/cec-compliance/cec-compliance.cpp b/utils/cec-compliance/cec-compliance.cpp index faaaa4320587..47ed6744d959 100644 --- a/utils/cec-compliance/cec-compliance.cpp +++ b/utils/cec-compliance/cec-compliance.cpp @@ -1359,10 +1359,15 @@ int main(int argc, char **argv) } - if (options[OptSkipInfo]) + if (options[OptSkipInfo]) { printf("\n"); - else - cec_driver_info(caps, laddrs, node.phys_addr); + } else { + struct cec_connector_info conn_info = {}; + + doioctl(&node, CEC_ADAP_G_CONNECTOR_INFO, &conn_info); + + cec_driver_info(caps, laddrs, node.phys_addr, conn_info); + } bool missing_pa = node.phys_addr == CEC_PHYS_ADDR_INVALID && (node.caps & CEC_CAP_PHYS_ADDR); bool missing_la = laddrs.num_log_addrs == 0 && (node.caps & CEC_CAP_LOG_ADDRS); diff --git a/utils/cec-ctl/cec-ctl.cpp b/utils/cec-ctl/cec-ctl.cpp index 10cba50e0714..0e607e124f3e 100644 --- a/utils/cec-ctl/cec-ctl.cpp +++ b/utils/cec-ctl/cec-ctl.cpp @@ -951,10 +951,11 @@ static void log_event(struct cec_event &ev, bool show) case CEC_EVENT_STATE_CHANGE: pa = ev.state_change.phys_addr; if (show) - printf("Event: State Change: PA: %x.%x.%x.%x, LA mask: 0x%04x\n", + printf("Event: State Change: PA: %x.%x.%x.%x, LA mask: 0x%04x, Conn Info: %s\n", pa >> 12, (pa >> 8) & 0xf, (pa >> 4) & 0xf, pa & 0xf, - ev.state_change.log_addr_mask); + ev.state_change.log_addr_mask, + ev.state_change.have_conn_info ? "yes" : "no"); break; case CEC_EVENT_LOST_MSGS: if (show) @@ -2745,8 +2746,13 @@ int main(int argc, char **argv) phys_addrs[la] = (phys_addr << 8) | la; } - if (!options[OptSkipInfo]) - cec_driver_info(caps, laddrs, phys_addr); + if (!options[OptSkipInfo]) { + struct cec_connector_info conn_info = {}; + + doioctl(&node, CEC_ADAP_G_CONNECTOR_INFO, &conn_info); + + cec_driver_info(caps, laddrs, phys_addr, conn_info); + } if (node.num_log_addrs == 0) { if (options[OptMonitor] || options[OptMonitorAll] || diff --git a/utils/cec-follower/cec-follower.cpp b/utils/cec-follower/cec-follower.cpp index 4243fdd9cd63..789fef4a4125 100644 --- a/utils/cec-follower/cec-follower.cpp +++ b/utils/cec-follower/cec-follower.cpp @@ -443,7 +443,13 @@ int main(int argc, char **argv) node.cec_version = laddrs.cec_version; printf("\n"); - cec_driver_info(caps, laddrs, node.phys_addr); + + struct cec_connector_info conn_info = {}; + + doioctl(&node, CEC_ADAP_G_CONNECTOR_INFO, &conn_info); + + cec_driver_info(caps, laddrs, node.phys_addr, conn_info); + if (laddrs.cec_version >= CEC_OP_CEC_VERSION_2_0) { bool is_dev_feat = false; diff --git a/utils/common/cec-info.cpp b/utils/common/cec-info.cpp index 31fb09fd10de..7db1f51c8326 100644 --- a/utils/common/cec-info.cpp +++ b/utils/common/cec-info.cpp @@ -33,6 +33,8 @@ static std::string caps2s(unsigned caps) s += "\t\tNeeds HPD\n"; if (caps & CEC_CAP_MONITOR_PIN) s += "\t\tMonitor Pin\n"; + if (caps & CEC_CAP_CONNECTOR_INFO) + s += "\t\tConnector Info\n"; return s; } @@ -360,7 +362,8 @@ std::string status2s(const struct cec_msg &msg) } void cec_driver_info(const struct cec_caps &caps, - const struct cec_log_addrs &laddrs, __u16 phys_addr) + const struct cec_log_addrs &laddrs, __u16 phys_addr, + const struct cec_connector_info &conn_info) { printf("Driver Info:\n"); printf("\tDriver Name : %s\n", caps.driver); @@ -373,6 +376,19 @@ void cec_driver_info(const struct cec_caps &caps, caps.version & 0xff); printf("\tAvailable Logical Addresses: %u\n", caps.available_log_addrs); + switch (conn_info.type) { + case CEC_CONNECTOR_TYPE_NO_CONNECTOR: + printf("\tConnector Info : None\n"); + break; + case CEC_CONNECTOR_TYPE_DRM: + printf("\tDRM Connector Info : card %u, connector %u\n", + conn_info.drm.card_no, conn_info.drm.connector_id); + break; + default: + printf("\tConnector Info : Type %u\n", + conn_info.type); + break; + } printf("\tPhysical Address : %x.%x.%x.%x\n", cec_phys_addr_exp(phys_addr)); diff --git a/utils/common/cec-info.h b/utils/common/cec-info.h index e979b5abd9e5..3ad6eaf58989 100644 --- a/utils/common/cec-info.h +++ b/utils/common/cec-info.h @@ -24,7 +24,8 @@ std::string dev_feat2s(unsigned feat, const std::string &prefix); std::string status2s(const struct cec_msg &msg); void cec_driver_info(const struct cec_caps &caps, - const struct cec_log_addrs &laddrs, __u16 phys_addr); + const struct cec_log_addrs &laddrs, __u16 phys_addr, + const struct cec_connector_info &conn_info); std::string cec_device_find(const char *driver, const char *adapter); _______________________________________________ linuxtv-commits mailing list linuxtv-commits@linuxtv.org https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits