From 232fa097317830100e71d7a0371cad2a8f11624e Mon Sep 17 00:00:00 2001 From: Stefan Adolfsson Date: Tue, 15 May 2018 09:23:03 +0200 Subject: 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 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 Reviewed-by: Randall Spangler Reviewed-by: Neil Armstrong Change-Id: I365151d11a0462e50e9274ace8ee35184e1433b8 Reviewed-on: https://chromium-review.googlesource.com/1064051 Tested-by: Stefan Adolfsson Reviewed-by: Daisuke Nojiri Commit-Queue: Stefan Adolfsson --- chip/npcx/cec.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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; -- cgit v1.2.1