From cef745a23a29aef8d06d4e2ea35a28ecdc13b5eb Mon Sep 17 00:00:00 2001 From: Algea Cao Date: Thu, 28 Dec 2017 16:22:45 +0800 Subject: [PATCH] media: cec: Add an interface for hdmi report HPD Add cec-notifier interface that hdmi can call it when HPD is occurred. Change-Id: I0087a879bf3ba65e300c3db3a67ddaa7e22f16ad Signed-off-by: Algea Cao --- drivers/media/cec/cec-adap.c | 3 +++ drivers/media/cec/cec-notifier.c | 9 +++++++++ include/media/cec-notifier.h | 3 +++ 3 files changed, 15 insertions(+) diff --git a/drivers/media/cec/cec-adap.c b/drivers/media/cec/cec-adap.c index 7afae2ee8012..da218401b8fa 100644 --- a/drivers/media/cec/cec-adap.c +++ b/drivers/media/cec/cec-adap.c @@ -179,6 +179,9 @@ void cec_queue_pin_hpd_event(struct cec_adapter *adap, bool is_high, ktime_t ts) }; struct cec_fh *fh; + /* hdmi HPD may occur before devnode is registered */ + if (!adap->devnode.registered) + return; mutex_lock(&adap->devnode.lock); list_for_each_entry(fh, &adap->devnode.fhs, list) cec_queue_event_fh(fh, &ev, ktime_to_ns(ts)); diff --git a/drivers/media/cec/cec-notifier.c b/drivers/media/cec/cec-notifier.c index 08b619d0ea1e..66e13aed2c25 100644 --- a/drivers/media/cec/cec-notifier.c +++ b/drivers/media/cec/cec-notifier.c @@ -113,6 +113,15 @@ void cec_notifier_set_phys_addr_from_edid(struct cec_notifier *n, } EXPORT_SYMBOL_GPL(cec_notifier_set_phys_addr_from_edid); +void cec_notifier_repo_cec_hpd(struct cec_notifier *n, + bool hpd_state, ktime_t ts) +{ + if (!n) + return; + cec_queue_pin_hpd_event(n->cec_adap, hpd_state, ts); +} +EXPORT_SYMBOL_GPL(cec_notifier_repo_cec_hpd); + void cec_notifier_register(struct cec_notifier *n, struct cec_adapter *adap, void (*callback)(struct cec_adapter *adap, u16 pa)) diff --git a/include/media/cec-notifier.h b/include/media/cec-notifier.h index ce237820f630..ca19a9305782 100644 --- a/include/media/cec-notifier.h +++ b/include/media/cec-notifier.h @@ -61,6 +61,9 @@ void cec_notifier_put(struct cec_notifier *n); */ void cec_notifier_set_phys_addr(struct cec_notifier *n, u16 pa); +void cec_notifier_repo_cec_hpd(struct cec_notifier *n, + bool hpd_state, ktime_t ts); + /** * cec_notifier_set_phys_addr_from_edid - set parse the PA from the EDID. * @n: the CEC notifier