]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
media: cec: call enable_adap on s_log_addrs
authorHans Verkuil <hverkuil-cisco@xs4all.nl>
Thu, 3 Mar 2022 13:55:08 +0000 (13:55 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 16 Jun 2024 11:39:44 +0000 (13:39 +0200)
commit6f6340dbe60b6d2083a6936a1d07cad4a8efe963
treeb06c85efb636102a9c6279846ae7608976f6d71b
parentf0266ee4cd03e776c14fe310eed965c5612daa56
media: cec: call enable_adap on s_log_addrs

[ Upstream commit 3813c932ed970dd4f413498ccecb03c73c4f1784 ]

Don't enable/disable the adapter if the first fh is opened or the
last fh is closed, instead do this when the adapter is configured
or unconfigured, and also when we enter Monitor All or Monitor Pin
mode for the first time or we exit the Monitor All/Pin mode for the
last time.

However, if needs_hpd is true, then do this when the physical
address is set or cleared: in that case the adapter typically is
powered by the HPD, so it really is disabled when the HPD is low.
This case (needs_hpd is true) was already handled in this way, so
this wasn't changed.

The problem with the old behavior was that if the HPD goes low when
no fh is open, and a transmit was in progress, then the adapter would
be disabled, typically stopping the transmit immediately which
leaves a partial message on the bus, which isn't nice and can confuse
some adapters.

It makes much more sense to disable it only when the adapter is
unconfigured and we're not monitoring the bus, since then you really
won't be using it anymore.

To keep track of this store a CEC activation count and call adap_enable
only when it goes from 0 to 1 or back to 0.

Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Stable-dep-of: 47c82aac10a6 ("media: cec: core: avoid recursive cec_claim_log_addrs")
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/media/cec/core/cec-adap.c
drivers/media/cec/core/cec-api.c
include/media/cec.h