提交 fc1ff45a 编写于 作者: H Hans Verkuil 提交者: Mauro Carvalho Chehab

media: cec-notifier: small improvements

Allow calling cec_notifier_set_phys_addr and
cec_notifier_set_phys_addr_from_edid with a NULL notifier, in which
case these functions do nothing.

Add a cec_notifier_phys_addr_invalidate helper function (the notifier
equivalent of cec_phys_addr_invalidate).

These changes simplify drm CEC driver support.
Signed-off-by: NHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: NMauro Carvalho Chehab <mchehab@s-opensource.com>
上级 9b7c0c47
...@@ -87,6 +87,9 @@ EXPORT_SYMBOL_GPL(cec_notifier_put); ...@@ -87,6 +87,9 @@ EXPORT_SYMBOL_GPL(cec_notifier_put);
void cec_notifier_set_phys_addr(struct cec_notifier *n, u16 pa) void cec_notifier_set_phys_addr(struct cec_notifier *n, u16 pa)
{ {
if (n == NULL)
return;
mutex_lock(&n->lock); mutex_lock(&n->lock);
n->phys_addr = pa; n->phys_addr = pa;
if (n->callback) if (n->callback)
...@@ -100,6 +103,9 @@ void cec_notifier_set_phys_addr_from_edid(struct cec_notifier *n, ...@@ -100,6 +103,9 @@ void cec_notifier_set_phys_addr_from_edid(struct cec_notifier *n,
{ {
u16 pa = CEC_PHYS_ADDR_INVALID; u16 pa = CEC_PHYS_ADDR_INVALID;
if (n == NULL)
return;
if (edid && edid->extensions) if (edid && edid->extensions)
pa = cec_get_edid_phys_addr((const u8 *)edid, pa = cec_get_edid_phys_addr((const u8 *)edid,
EDID_LENGTH * (edid->extensions + 1), NULL); EDID_LENGTH * (edid->extensions + 1), NULL);
......
...@@ -57,6 +57,7 @@ void cec_notifier_put(struct cec_notifier *n); ...@@ -57,6 +57,7 @@ void cec_notifier_put(struct cec_notifier *n);
* @pa: the CEC physical address * @pa: the CEC physical address
* *
* Set a new CEC physical address. * Set a new CEC physical address.
* Does nothing if @n == NULL.
*/ */
void cec_notifier_set_phys_addr(struct cec_notifier *n, u16 pa); void cec_notifier_set_phys_addr(struct cec_notifier *n, u16 pa);
...@@ -66,6 +67,7 @@ void cec_notifier_set_phys_addr(struct cec_notifier *n, u16 pa); ...@@ -66,6 +67,7 @@ void cec_notifier_set_phys_addr(struct cec_notifier *n, u16 pa);
* @edid: the struct edid pointer * @edid: the struct edid pointer
* *
* Parses the EDID to obtain the new CEC physical address and set it. * Parses the EDID to obtain the new CEC physical address and set it.
* Does nothing if @n == NULL.
*/ */
void cec_notifier_set_phys_addr_from_edid(struct cec_notifier *n, void cec_notifier_set_phys_addr_from_edid(struct cec_notifier *n,
const struct edid *edid); const struct edid *edid);
...@@ -118,4 +120,17 @@ static inline void cec_notifier_unregister(struct cec_notifier *n) ...@@ -118,4 +120,17 @@ static inline void cec_notifier_unregister(struct cec_notifier *n)
#endif #endif
/**
* cec_notifier_phys_addr_invalidate() - set the physical address to INVALID
*
* @n: the CEC notifier
*
* This is a simple helper function to invalidate the physical
* address. Does nothing if @n == NULL.
*/
static inline void cec_notifier_phys_addr_invalidate(struct cec_notifier *n)
{
cec_notifier_set_phys_addr(n, CEC_PHYS_ADDR_INVALID);
}
#endif #endif
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册