aboutsummaryrefslogtreecommitdiffstats
path: root/sys/linux/dev_cec.txt
blob: c8a47e5e6cceb77588252b97e0b882a32d70eea1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# Copyright 2024 syzkaller project authors. All rights reserved.
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.

include <uapi/asm/ioctl.h>
include <uapi/linux/cec.h>

resource fd_cec[fd]

syz_open_dev$cec(dev ptr[in, string["/dev/cec#"]], id proc[0, 1], flags flags[open_flags]) fd_cec

ioctl$CEC_ADAP_G_CAPS(fd fd_cec, cmd const[CEC_ADAP_G_CAPS], arg ptr[out, cec_caps])
ioctl$CEC_ADAP_G_PHYS_ADDR(fd fd_cec, cmd const[CEC_ADAP_G_PHYS_ADDR], arg ptr[out, int16])
ioctl$CEC_ADAP_S_PHYS_ADDR(fd fd_cec, cmd const[CEC_ADAP_S_PHYS_ADDR], arg ptr[in, int16])
ioctl$CEC_ADAP_G_LOG_ADDRS(fd fd_cec, cmd const[CEC_ADAP_G_LOG_ADDRS], arg ptr[out, cec_log_addrs])
ioctl$CEC_ADAP_S_LOG_ADDRS(fd fd_cec, cmd const[CEC_ADAP_S_LOG_ADDRS], arg ptr[inout, cec_log_addrs])
ioctl$CEC_ADAP_G_CONNECTOR_INFO(fd fd_cec, cmd const[CEC_ADAP_G_CONNECTOR_INFO], arg ptr[out, cec_connector_info])
ioctl$CEC_TRANSMIT(fd fd_cec, cmd const[CEC_TRANSMIT], arg ptr[inout, cec_msg])
ioctl$CEC_RECEIVE(fd fd_cec, cmd const[CEC_RECEIVE], arg ptr[inout, cec_msg])
ioctl$CEC_DQEVENT(fd fd_cec, cmd const[CEC_DQEVENT], arg ptr[out, cec_event])
ioctl$CEC_G_MODE(fd fd_cec, cmd const[CEC_G_MODE], arg ptr[out, int32])
ioctl$CEC_S_MODE(fd fd_cec, cmd const[CEC_S_MODE], arg ptr[in, int32])

cec_caps {
	driver			array[int8, 32]
	name			array[int8, 32]
	available_log_addrs	int32
	capabilities		int32
	version			int32
}

cec_log_addrs {
	log_addr		array[int8, CEC_MAX_LOG_ADDRS]
	log_addr_mask		int16
	cec_version		int8
	num_log_addrs		int8
	vendor_id		int32
	flags			int32
	osd_name		array[int8, 15]
	primary_device_type	array[int8, CEC_MAX_LOG_ADDRS]
	log_addr_type		array[int8, CEC_MAX_LOG_ADDRS]
	all_device_types	array[int8, CEC_MAX_LOG_ADDRS]
	features		array[array[int8, 12], CEC_MAX_LOG_ADDRS]
}

cec_connector_info {
	type	int32
	u	cec_connector_info_union
}

cec_msg {
	tx_ts			int64
	rx_ts			int64
	len			int32
	timeout			int32
	sequence		int32
	flags			int32
	msg			array[int8, CEC_MAX_MSG_SIZE]
	reply			int8
	rx_status		int8
	tx_status		int8
	tx_arb_lost_cnt		int8
	tx_nack_cnt		int8
	tx_low_drive_cnt	int8
	tx_error_cnt		int8
}

cec_event {
	ts	int64
	event	int32
	flags	int32
	union	cec_event_union
}

cec_connector_info_union [
	drm	cec_drm_connector_info
	raw	array[int32, 16]
]

cec_event_union [
	state_change	cec_event_state_change
	lost_msgs	cec_event_lost_msgs
	raw		array[int32, 16]
]

cec_drm_connector_info {
	card_no		int32
	connector_id	drm_connector_id
}

cec_event_state_change {
	phys_addr	int16
	log_addr_mask	int16
	have_conn_info	int16
}

cec_event_lost_msgs {
	lost_msgs	int32
}