media: cec: add support for 5V signal testing
Add support for the new 5V CEC events Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
这个提交包含在:
@@ -74,7 +74,7 @@ void cec_queue_event_fh(struct cec_fh *fh,
|
||||
const struct cec_event *new_ev, u64 ts)
|
||||
{
|
||||
static const u16 max_events[CEC_NUM_EVENTS] = {
|
||||
1, 1, 800, 800, 8, 8,
|
||||
1, 1, 800, 800, 8, 8, 8, 8
|
||||
};
|
||||
struct cec_event_entry *entry;
|
||||
unsigned int ev_idx = new_ev->event - 1;
|
||||
@@ -176,6 +176,22 @@ void cec_queue_pin_hpd_event(struct cec_adapter *adap, bool is_high, ktime_t ts)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(cec_queue_pin_hpd_event);
|
||||
|
||||
/* Notify userspace that the 5V pin changed state at the given time. */
|
||||
void cec_queue_pin_5v_event(struct cec_adapter *adap, bool is_high, ktime_t ts)
|
||||
{
|
||||
struct cec_event ev = {
|
||||
.event = is_high ? CEC_EVENT_PIN_5V_HIGH :
|
||||
CEC_EVENT_PIN_5V_LOW,
|
||||
};
|
||||
struct cec_fh *fh;
|
||||
|
||||
mutex_lock(&adap->devnode.lock);
|
||||
list_for_each_entry(fh, &adap->devnode.fhs, list)
|
||||
cec_queue_event_fh(fh, &ev, ktime_to_ns(ts));
|
||||
mutex_unlock(&adap->devnode.lock);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(cec_queue_pin_5v_event);
|
||||
|
||||
/*
|
||||
* Queue a new message for this filehandle.
|
||||
*
|
||||
|
@@ -579,6 +579,14 @@ static int cec_open(struct inode *inode, struct file *filp)
|
||||
cec_queue_event_fh(fh, &ev, 0);
|
||||
}
|
||||
}
|
||||
if (adap->pin && adap->pin->ops->read_5v) {
|
||||
err = adap->pin->ops->read_5v(adap);
|
||||
if (err >= 0) {
|
||||
ev.event = err ? CEC_EVENT_PIN_5V_HIGH :
|
||||
CEC_EVENT_PIN_5V_LOW;
|
||||
cec_queue_event_fh(fh, &ev, 0);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
list_add(&fh->list, &devnode->fhs);
|
||||
|
在新工单中引用
屏蔽一个用户