summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Adolfsson <sadolfsson@google.com>2018-05-15 09:23:03 +0200
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2018-06-19 20:02:22 +0000
commit232fa097317830100e71d7a0371cad2a8f11624e (patch)
tree4054ec8ff3a6725f4e42ee6a6aca6d33f91e144e
parentb1c01e91c496a658845be22d28856fd07b9e5ae3 (diff)
downloadchrome-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.c6
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;