[media] cec-core.rst: improve documentation

Improve the internal CEC documentation. In particular add a section
that specifies that transmit-related interrupts should be processed
before receive interrupts.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
Hans Verkuil 2016-11-09 06:00:53 -02:00 committed by Mauro Carvalho Chehab
parent e91b6006bf
commit e92ca73b70
1 changed files with 18 additions and 6 deletions

View File

@ -106,13 +106,13 @@ your driver:
int (*adap_log_addr)(struct cec_adapter *adap, u8 logical_addr); int (*adap_log_addr)(struct cec_adapter *adap, u8 logical_addr);
int (*adap_transmit)(struct cec_adapter *adap, u8 attempts, int (*adap_transmit)(struct cec_adapter *adap, u8 attempts,
u32 signal_free_time, struct cec_msg *msg); u32 signal_free_time, struct cec_msg *msg);
void (\*adap_log_status)(struct cec_adapter *adap); void (*adap_status)(struct cec_adapter *adap, struct seq_file *file);
/* High-level callbacks */ /* High-level callbacks */
... ...
}; };
The three low-level ops deal with various aspects of controlling the CEC adapter The five low-level ops deal with various aspects of controlling the CEC adapter
hardware: hardware:
@ -238,6 +238,18 @@ When a CEC message was received:
Speaks for itself. Speaks for itself.
Implementing the interrupt handler
----------------------------------
Typically the CEC hardware provides interrupts that signal when a transmit
finished and whether it was successful or not, and it provides and interrupt
when a CEC message was received.
The CEC driver should always process the transmit interrupts first before
handling the receive interrupt. The framework expects to see the cec_transmit_done
call before the cec_received_msg call, otherwise it can get confused if the
received message was in reply to the transmitted message.
Implementing the High-Level CEC Adapter Implementing the High-Level CEC Adapter
--------------------------------------- ---------------------------------------
@ -247,11 +259,11 @@ CEC protocol driven. The following high-level callbacks are available:
.. code-block:: none .. code-block:: none
struct cec_adap_ops { struct cec_adap_ops {
/\* Low-level callbacks \*/ /* Low-level callbacks */
... ...
/\* High-level CEC message callback \*/ /* High-level CEC message callback */
int (\*received)(struct cec_adapter \*adap, struct cec_msg \*msg); int (*received)(struct cec_adapter *adap, struct cec_msg *msg);
}; };
The received() callback allows the driver to optionally handle a newly The received() callback allows the driver to optionally handle a newly
@ -263,7 +275,7 @@ received CEC message
If the driver wants to process a CEC message, then it can implement this If the driver wants to process a CEC message, then it can implement this
callback. If it doesn't want to handle this message, then it should return callback. If it doesn't want to handle this message, then it should return
-ENOMSG, otherwise the CEC framework assumes it processed this message and -ENOMSG, otherwise the CEC framework assumes it processed this message and
it will not no anything with it. it will not do anything with it.
CEC framework functions CEC framework functions