mirror of
https://github.com/torvalds/linux.git
synced 2026-06-08 22:52:35 +02:00
UPSTREAM: 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: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
(cherry picked from commit fc1ff45a07)
Change-Id: I301d15d4f7fd710ad8c532035492f7434a089fa7
Signed-off-by: Algea Cao <algea.cao@rock-chips.com>
This commit is contained in:
parent
b833ecb647
commit
497d8fb293
|
|
@ -87,6 +87,9 @@ EXPORT_SYMBOL_GPL(cec_notifier_put);
|
|||
|
||||
void cec_notifier_set_phys_addr(struct cec_notifier *n, u16 pa)
|
||||
{
|
||||
if (n == NULL)
|
||||
return;
|
||||
|
||||
mutex_lock(&n->lock);
|
||||
n->phys_addr = pa;
|
||||
if (n->callback)
|
||||
|
|
@ -100,6 +103,9 @@ void cec_notifier_set_phys_addr_from_edid(struct cec_notifier *n,
|
|||
{
|
||||
u16 pa = CEC_PHYS_ADDR_INVALID;
|
||||
|
||||
if (n == NULL)
|
||||
return;
|
||||
|
||||
if (edid && edid->extensions)
|
||||
pa = cec_get_edid_phys_addr((const u8 *)edid,
|
||||
EDID_LENGTH * (edid->extensions + 1), NULL);
|
||||
|
|
|
|||
|
|
@ -57,6 +57,7 @@ void cec_notifier_put(struct cec_notifier *n);
|
|||
* @pa: the 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);
|
||||
|
||||
|
|
@ -66,6 +67,7 @@ void cec_notifier_set_phys_addr(struct cec_notifier *n, u16 pa);
|
|||
* @edid: the struct edid pointer
|
||||
*
|
||||
* 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,
|
||||
const struct edid *edid);
|
||||
|
|
@ -108,4 +110,17 @@ static inline void cec_notifier_set_phys_addr_from_edid(struct cec_notifier *n,
|
|||
|
||||
#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
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user