From 47fb8f9a084e8244f49c7934ec6f5e1e7f000b62 Mon Sep 17 00:00:00 2001 From: Portisch Date: Tue, 22 Oct 2019 08:46:08 +0200 Subject: BACKPORT: g12a/b: CEC_OC_ACTIVE_SOURCE: ignore phy address if broadcast Change-Id: Ib4937aa2b02d25824faaff7770d515884632686c --- arch/arm/cpu/armv8/g12a/firmware/scp_task/hdmi_cec_arc.c | 4 ++-- arch/arm/cpu/armv8/g12b/firmware/scp_task/hdmi_cec_arc.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/arm/cpu/armv8/g12a/firmware/scp_task/hdmi_cec_arc.c b/arch/arm/cpu/armv8/g12a/firmware/scp_task/hdmi_cec_arc.c index 498436a717..d3c7ba52aa 100644 --- a/arch/arm/cpu/armv8/g12a/firmware/scp_task/hdmi_cec_arc.c +++ b/arch/arm/cpu/armv8/g12a/firmware/scp_task/hdmi_cec_arc.c @@ -614,7 +614,7 @@ static unsigned int cec_handle_message(void) dest = cec_msg.buf[cec_msg.rx_read_pos].msg[0] & 0xf; if (((hdmi_cec_func_config >> CEC_FUNC_MASK) & 0x1) && ((hdmi_cec_func_config >> AUTO_POWER_ON_MASK) & 0x1) && - (dest == CEC_TV_ADDR)) { + (source == CEC_TV_ADDR)) { /* request active source needed */ phy_addr = 0xffff; cec_msg.cec_power = 0x1; @@ -630,7 +630,7 @@ static unsigned int cec_handle_message(void) (cec_msg.buf[cec_msg.rx_read_pos].msg[3] << 0); if (((hdmi_cec_func_config >> CEC_FUNC_MASK) & 0x1) && ((hdmi_cec_func_config >> AUTO_POWER_ON_MASK) & 0x1) && - (dest == CEC_TV_ADDR && check_addr(phy_addr))) { + (source == CEC_TV_ADDR && (dest == CEC_BROADCAST_ADDR || check_addr(phy_addr)))) { cec_msg.cec_power = 0x1; wake = (phy_addr << 0) | (source << 16); diff --git a/arch/arm/cpu/armv8/g12b/firmware/scp_task/hdmi_cec_arc.c b/arch/arm/cpu/armv8/g12b/firmware/scp_task/hdmi_cec_arc.c index 498436a717..d3c7ba52aa 100644 --- a/arch/arm/cpu/armv8/g12b/firmware/scp_task/hdmi_cec_arc.c +++ b/arch/arm/cpu/armv8/g12b/firmware/scp_task/hdmi_cec_arc.c @@ -614,7 +614,7 @@ static unsigned int cec_handle_message(void) dest = cec_msg.buf[cec_msg.rx_read_pos].msg[0] & 0xf; if (((hdmi_cec_func_config >> CEC_FUNC_MASK) & 0x1) && ((hdmi_cec_func_config >> AUTO_POWER_ON_MASK) & 0x1) && - (dest == CEC_TV_ADDR)) { + (source == CEC_TV_ADDR)) { /* request active source needed */ phy_addr = 0xffff; cec_msg.cec_power = 0x1; @@ -630,7 +630,7 @@ static unsigned int cec_handle_message(void) (cec_msg.buf[cec_msg.rx_read_pos].msg[3] << 0); if (((hdmi_cec_func_config >> CEC_FUNC_MASK) & 0x1) && ((hdmi_cec_func_config >> AUTO_POWER_ON_MASK) & 0x1) && - (dest == CEC_TV_ADDR && check_addr(phy_addr))) { + (source == CEC_TV_ADDR && (dest == CEC_BROADCAST_ADDR || check_addr(phy_addr)))) { cec_msg.cec_power = 0x1; wake = (phy_addr << 0) | (source << 16); -- cgit v1.2.1