From bf0e651045d9772b330c08c596e37f08effa0a06 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 a7ea27d2aa8e..d892f98b0b13 100644 --- a/drivers/media/cec/cec-adap.c +++ b/drivers/media/cec/cec-adap.c @@ -169,6 +169,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 dd2078b27a41..c0fb7bb9e744 100644 --- a/drivers/media/cec/cec-notifier.c +++ b/drivers/media/cec/cec-notifier.c @@ -106,6 +106,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 814eeef35a5c..71666ec2e96b 100644 --- a/include/media/cec-notifier.h +++ b/include/media/cec-notifier.h @@ -52,6 +52,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