media: cec-pin: add 'received' callback
Drivers that use the CEC pin framework have no way of processing messages themselves by providing the 'received' callback. This is present in cec_ops, but not in cec_pin_ops. Add support for this callback. Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
This commit is contained in:
parent
65d270acb2
commit
69e3235d58
|
@ -1279,6 +1279,15 @@ static void cec_pin_adap_free(struct cec_adapter *adap)
|
|||
kfree(pin);
|
||||
}
|
||||
|
||||
static int cec_pin_received(struct cec_adapter *adap, struct cec_msg *msg)
|
||||
{
|
||||
struct cec_pin *pin = adap->pin;
|
||||
|
||||
if (pin->ops->received)
|
||||
return pin->ops->received(adap, msg);
|
||||
return -ENOMSG;
|
||||
}
|
||||
|
||||
void cec_pin_changed(struct cec_adapter *adap, bool value)
|
||||
{
|
||||
struct cec_pin *pin = adap->pin;
|
||||
|
@ -1301,6 +1310,7 @@ static const struct cec_adap_ops cec_pin_adap_ops = {
|
|||
.error_inj_parse_line = cec_pin_error_inj_parse_line,
|
||||
.error_inj_show = cec_pin_error_inj_show,
|
||||
#endif
|
||||
.received = cec_pin_received,
|
||||
};
|
||||
|
||||
struct cec_adapter *cec_pin_allocate_adapter(const struct cec_pin_ops *pin_ops,
|
||||
|
|
|
@ -29,8 +29,11 @@
|
|||
* an error if negative. If NULL or -ENOTTY is returned,
|
||||
* then this is not supported.
|
||||
*
|
||||
* These operations are used by the cec pin framework to manipulate
|
||||
* the CEC pin.
|
||||
* @received: optional. High-level CEC message callback. Allows the driver
|
||||
* to process CEC messages.
|
||||
*
|
||||
* These operations (except for the @received op) are used by the
|
||||
* cec pin framework to manipulate the CEC pin.
|
||||
*/
|
||||
struct cec_pin_ops {
|
||||
bool (*read)(struct cec_adapter *adap);
|
||||
|
@ -42,6 +45,9 @@ struct cec_pin_ops {
|
|||
void (*status)(struct cec_adapter *adap, struct seq_file *file);
|
||||
int (*read_hpd)(struct cec_adapter *adap);
|
||||
int (*read_5v)(struct cec_adapter *adap);
|
||||
|
||||
/* High-level CEC message callback */
|
||||
int (*received)(struct cec_adapter *adap, struct cec_msg *msg);
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue