diff options
author | Stefan Adolfsson <sadolfsson@google.com> | 2018-05-15 09:23:03 +0200 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2018-06-19 20:02:22 +0000 |
commit | 232fa097317830100e71d7a0371cad2a8f11624e (patch) | |
tree | 4054ec8ff3a6725f4e42ee6a6aca6d33f91e144e | |
parent | b1c01e91c496a658845be22d28856fd07b9e5ae3 (diff) | |
download | chrome-ec-232fa097317830100e71d7a0371cad2a8f11624e.tar.gz |
npcx: CEC: Allow unregistration of logical address
The kernel CEC API unregisters logical address by setting it
to 255. From that point, we don't receive any direct messages
since a CEC address is only 4 bits on the bus.
Signed-off-by: Stefan Adolfsson <sadolfsson@chromium.org>
BUG=b:76467407
BRANCH=none
TEST=Verify that "cec-ctl --unregistered" sets logical address to
255.
Reviewed-on: https://chromium-review.googlesource.com/1059674
Reviewed-by: Stefan Adolfsson <sadolfsson@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
Change-Id: I365151d11a0462e50e9274ace8ee35184e1433b8
Reviewed-on: https://chromium-review.googlesource.com/1064051
Tested-by: Stefan Adolfsson <sadolfsson@chromium.org>
Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
Commit-Queue: Stefan Adolfsson <sadolfsson@chromium.org>
-rw-r--r-- | chip/npcx/cec.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/chip/npcx/cec.c b/chip/npcx/cec.c index da736edde8..540fa3c482 100644 --- a/chip/npcx/cec.c +++ b/chip/npcx/cec.c @@ -38,6 +38,9 @@ /* CEC broadcast address. Also the highest possible CEC address */ #define CEC_BROADCAST_ADDR 15 +/* Address to indicate that no logical address has been set */ +#define CEC_UNREGISTERED_ADDR 255 + /* * The CEC specification requires at least one and a maximum of * five resends attempts @@ -1045,7 +1048,8 @@ static int cec_set_enable(uint8_t enable) static int cec_set_logical_addr(uint8_t logical_addr) { - if (logical_addr >= CEC_BROADCAST_ADDR) + if (logical_addr >= CEC_BROADCAST_ADDR && + logical_addr != CEC_UNREGISTERED_ADDR) return EC_RES_INVALID_PARAM; cec_addr = logical_addr; |