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>
This commit is contained in:
Родитель
9b7c0c476f
Коммит
fc1ff45a07
|
@ -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);
|
||||
|
@ -118,4 +120,17 @@ static inline void cec_notifier_unregister(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
|
||||
|
|
Загрузка…
Ссылка в новой задаче