diff options
author | Hans Verkuil <hverkuil@xs4all.nl> | 2017-07-15 08:32:56 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@s-opensource.com> | 2017-07-26 05:46:44 -0400 |
commit | fc1ff45a07abf240aa0c6586c11465c86c8cab8d (patch) | |
tree | 0eba84919fe75c472cb44ad97159f5c8b502190d | |
parent | 9b7c0c476f66ee212925c801c4141fdd83b7336d (diff) |
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>
-rw-r--r-- | drivers/media/cec/cec-notifier.c | 6 | ||||
-rw-r--r-- | include/media/cec-notifier.h | 15 |
2 files changed, 21 insertions, 0 deletions
diff --git a/drivers/media/cec/cec-notifier.c b/drivers/media/cec/cec-notifier.c index 74dc1c32080e..08b619d0ea1e 100644 --- a/drivers/media/cec/cec-notifier.c +++ b/drivers/media/cec/cec-notifier.c | |||
@@ -87,6 +87,9 @@ EXPORT_SYMBOL_GPL(cec_notifier_put); | |||
87 | 87 | ||
88 | void cec_notifier_set_phys_addr(struct cec_notifier *n, u16 pa) | 88 | void cec_notifier_set_phys_addr(struct cec_notifier *n, u16 pa) |
89 | { | 89 | { |
90 | if (n == NULL) | ||
91 | return; | ||
92 | |||
90 | mutex_lock(&n->lock); | 93 | mutex_lock(&n->lock); |
91 | n->phys_addr = pa; | 94 | n->phys_addr = pa; |
92 | if (n->callback) | 95 | if (n->callback) |
@@ -100,6 +103,9 @@ void cec_notifier_set_phys_addr_from_edid(struct cec_notifier *n, | |||
100 | { | 103 | { |
101 | u16 pa = CEC_PHYS_ADDR_INVALID; | 104 | u16 pa = CEC_PHYS_ADDR_INVALID; |
102 | 105 | ||
106 | if (n == NULL) | ||
107 | return; | ||
108 | |||
103 | if (edid && edid->extensions) | 109 | if (edid && edid->extensions) |
104 | pa = cec_get_edid_phys_addr((const u8 *)edid, | 110 | pa = cec_get_edid_phys_addr((const u8 *)edid, |
105 | EDID_LENGTH * (edid->extensions + 1), NULL); | 111 | EDID_LENGTH * (edid->extensions + 1), NULL); |
diff --git a/include/media/cec-notifier.h b/include/media/cec-notifier.h index 298f996969df..a4f7429c4ae5 100644 --- a/include/media/cec-notifier.h +++ b/include/media/cec-notifier.h | |||
@@ -57,6 +57,7 @@ void cec_notifier_put(struct cec_notifier *n); | |||
57 | * @pa: the CEC physical address | 57 | * @pa: the CEC physical address |
58 | * | 58 | * |
59 | * Set a new CEC physical address. | 59 | * Set a new CEC physical address. |
60 | * Does nothing if @n == NULL. | ||
60 | */ | 61 | */ |
61 | void cec_notifier_set_phys_addr(struct cec_notifier *n, u16 pa); | 62 | void cec_notifier_set_phys_addr(struct cec_notifier *n, u16 pa); |
62 | 63 | ||
@@ -66,6 +67,7 @@ void cec_notifier_set_phys_addr(struct cec_notifier *n, u16 pa); | |||
66 | * @edid: the struct edid pointer | 67 | * @edid: the struct edid pointer |
67 | * | 68 | * |
68 | * Parses the EDID to obtain the new CEC physical address and set it. | 69 | * Parses the EDID to obtain the new CEC physical address and set it. |
70 | * Does nothing if @n == NULL. | ||
69 | */ | 71 | */ |
70 | void cec_notifier_set_phys_addr_from_edid(struct cec_notifier *n, | 72 | void cec_notifier_set_phys_addr_from_edid(struct cec_notifier *n, |
71 | const struct edid *edid); | 73 | const struct edid *edid); |
@@ -118,4 +120,17 @@ static inline void cec_notifier_unregister(struct cec_notifier *n) | |||
118 | 120 | ||
119 | #endif | 121 | #endif |
120 | 122 | ||
123 | /** | ||
124 | * cec_notifier_phys_addr_invalidate() - set the physical address to INVALID | ||
125 | * | ||
126 | * @n: the CEC notifier | ||
127 | * | ||
128 | * This is a simple helper function to invalidate the physical | ||
129 | * address. Does nothing if @n == NULL. | ||
130 | */ | ||
131 | static inline void cec_notifier_phys_addr_invalidate(struct cec_notifier *n) | ||
132 | { | ||
133 | cec_notifier_set_phys_addr(n, CEC_PHYS_ADDR_INVALID); | ||
134 | } | ||
135 | |||
121 | #endif | 136 | #endif |