Lines Matching +full:full +full:- +full:custom

1 .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
9 has low-level support for the CEC bus. Most hardware today will have
10 high-level CEC support where the hardware deals with driving the CEC bus,
15 What makes doing this so interesting is that since we have full control
19 Currently only the cec-gpio driver (when the CEC line is directly
20 connected to a pull-up GPIO line) and the AllWinner A10/A20 drm driver
25 now an ``error-inj`` file.
32 With ``cat error-inj`` you can see both the possible commands and the current
35 $ cat /sys/kernel/debug/cec/cec0/error-inj
38 # rx-clear clear all rx error injections
39 # tx-clear clear all tx error injections
41 # <op> rx-clear clear all rx error injections for <op>
42 # <op> tx-clear clear all tx error injections for <op>
45 # <op>[,<mode>] rx-nack NACK the message instead of sending an ACK
46 # <op>[,<mode>] rx-low-drive <bit> force a low-drive condition at this bit position
47 # <op>[,<mode>] rx-add-byte add a spurious byte to the received CEC message
48 # <op>[,<mode>] rx-remove-byte remove the last byte from the received CEC message
49 # any[,<mode>] rx-arb-lost [<poll>] generate a POLL message to trigger an arbitration lost
52 # tx-ignore-nack-until-eom ignore early NACKs until EOM
53 # tx-custom-low-usecs <usecs> define the 'low' time for the custom pulse
54 # tx-custom-high-usecs <usecs> define the 'high' time for the custom pulse
55 # tx-custom-pulse transmit the custom pulse once the bus is idle
58 # <op>[,<mode>] tx-no-eom don't set the EOM bit
59 # <op>[,<mode>] tx-early-eom set the EOM bit one byte too soon
60 # <op>[,<mode>] tx-add-bytes <num> append <num> (1-255) spurious bytes to the message
61 # <op>[,<mode>] tx-remove-byte drop the last byte from the message
62 # <op>[,<mode>] tx-short-bit <bit> make this bit shorter than allowed
63 # <op>[,<mode>] tx-long-bit <bit> make this bit longer than allowed
64 # <op>[,<mode>] tx-custom-bit <bit> send the custom pulse instead of this bit
65 # <op>[,<mode>] tx-short-start send a start pulse that's too short
66 # <op>[,<mode>] tx-long-start send a start pulse that's too long
67 # <op>[,<mode>] tx-custom-start send the custom pulse instead of the start pulse
68 # <op>[,<mode>] tx-last-bit <bit> stop sending after this bit
69 # <op>[,<mode>] tx-low-drive <bit> force a low-drive condition at this bit position
71 # <op> CEC message opcode (0-255) or 'any'
73 # <bit> CEC message bit (0-159)
74 # 10 bits per 'byte': bits 0-7: data, bit 8: EOM, bit 9: ACK
75 # <poll> CEC poll message used to test arbitration lost (0x00-0xff, default 0x0f)
76 # <usecs> microseconds (0-10000000, default 1000)
80 You can write error injection commands to ``error-inj`` using
81 ``echo 'cmd' >error-inj`` or ``cat cmd.txt >error-inj``. The ``cat error-inj``
83 and use it as an input to ``error-inj`` later.
86 ------------
95 to create custom pulses on the CEC bus.
105 So '``any rx-nack``' will NACK the next received CEC message,
106 '``any,always rx-nack``' will NACK all received CEC messages and
107 '``0x82,toggle rx-nack``' will only NACK if an Active Source message was
111 is cleared automatically, so ``once`` is a one-time deal.
113 All combinations of ``<op>`` and error injection commands can co-exist. So
116 0x9e tx-add-bytes 1
117 0x9e tx-early-eom
118 0x9f tx-add-bytes 2
119 any rx-nack
126 0x9e tx-add-bytes 1
127 0x9e tx-add-bytes 2
132 ----------------------
137 ``rx-clear``
140 ``tx-clear``
146 ``<op> rx-clear``
149 ``<op> tx-clear``
153 ----------------
155 ``<op>[,<mode>] rx-nack``
160 ``<op>[,<mode>] rx-low-drive <bit>``
169 ``<op>[,<mode>] rx-add-byte``
172 the high-level protocol since spurious bytes should be ignored.
174 ``<op>[,<mode>] rx-remove-byte``
176 was at least 2 bytes long. This is useful to test the high-level
179 ``<op>[,<mode>] rx-arb-lost <poll>``
197 -----------------
199 ``tx-ignore-nack-until-eom``
202 specification also allows that the full message is transmitted and only
210 ``<op>[,<mode>] tx-no-eom``
212 (End-Of-Message) bit set. With this command the transmit will just stop
214 handles this case. Normally receivers have a time-out after which
217 ``<op>[,<mode>] tx-early-eom``
219 of two bytes or more. The EOM bit will be set for the second-to-last byte
225 ``<op>[,<mode>] tx-add-bytes <num>``
226 Append ``<num>`` (1-255) spurious bytes to the message. The extra bytes
229 the full message received by the remote CEC adapter is
236 ``<op>[,<mode>] tx-remove-byte``
240 ``<op>[,<mode>] tx-short-bit <bit>``
253 sees a too-short 0 bit.
255 ``<op>[,<mode>] tx-long-bit <bit>``
271 sees a too-long 0 bit.
273 ``<op>[,<mode>] tx-short-start``
280 ``<op>[,<mode>] tx-long-start``
292 ``<op>[,<mode>] tx-last-bit <bit>``
299 ``<op>[,<mode>] tx-low-drive <bit>``
304 positions 0-3 the receiver can interpret this as an Arbitration Lost
307 Custom Pulses
308 -------------
310 ``tx-custom-low-usecs <usecs>``
311 This defines the duration in microseconds that the custom pulse pulls
314 ``tx-custom-high-usecs <usecs>``
315 This defines the duration in microseconds that the custom pulse keeps the
317 The default is 1000 microseconds. The total period of the custom pulse is
318 ``tx-custom-low-usecs + tx-custom-high-usecs``.
320 ``<op>[,<mode>] tx-custom-bit <bit>``
321 Send the custom bit instead of a regular data bit. The bit position cannot
325 ``<op>[,<mode>] tx-custom-start``
326 Send the custom bit instead of a regular start bit.
328 ``tx-custom-pulse``
329 Transmit a single custom pulse as soon as the CEC bus is idle.