linux_dsm_epyc7002/drivers/gpu/drm/omapdrm/dss
Hans Verkuil df29c9db8a omapdrm/dss/hdmi4_cec: fix interrupt handling
The omap4 CEC hardware cannot tell a Nack from a Low Drive from an
Arbitration Lost error, so just report a Nack, which is almost
certainly the reason for the error anyway.

This also simplifies the implementation. The only three interrupts
that need to be enabled are:

Transmit Buffer Full/Empty Change event: triggered when the
transmit finished successfully and cleared the buffer.

Receiver FIFO Not Empty event: triggered when a message was received.

Frame Retransmit Count Exceeded event: triggered when a transmit
failed repeatedly, usually due to the message being Nacked. Other
reasons are possible (Low Drive, Arbitration Lost) but there is no
way to know. If this happens the TX buffer needs to be cleared
manually.

While testing various error conditions I noticed that the hardware
can receive messages up to 18 bytes in total, which exceeds the legal
maximum of 16. This could cause a buffer overflow, so we check for
this and constrain the size to 16 bytes.

The old incorrect interrupt handler could cause the CEC framework to
enter into a bad state because it mis-detected the "Start Bit Irregularity
event" as an ARB_LOST transmit error when it actually is a receive error
which should be ignored.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Reported-by: Henrik Austad <haustad@cisco.com>
Tested-by: Henrik Austad <haustad@cisco.com>
Tested-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2018-01-02 14:20:10 +02:00
..
base.c drm/omap: dss: Support for detecting display stack readiness 2017-04-03 12:36:40 +03:00
core.c drm/omap: rename omapdrm device back 2017-08-16 15:38:52 +03:00
dispc_coefs.c drm/omap: Do not include video/omapdss.h directly in drivers 2016-06-03 16:06:37 +03:00
dispc.c drm: omapdrm: Remove dss_features.h 2017-08-15 15:18:25 +03:00
dispc.h drm/omap: Rename enum omap_plane to enum omap_plane_id 2017-04-03 12:36:40 +03:00
display.c drm/omap: remove legacy get_resolution 2017-06-02 10:57:19 +03:00
dpi.c drm: omapdrm: Fix DPI on platforms using the DSI VDDS 2017-11-30 12:25:37 +02:00
dsi.c treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
dss-of.c drm: omap: use common OF graph helpers 2017-04-06 17:00:27 -04:00
dss.c drm: omapdrm: Remove dss_features.h 2017-08-15 15:18:25 +03:00
dss.h drm/omap: fix i886 work-around 2017-08-23 12:22:09 +03:00
hdmi4_cec.c omapdrm/dss/hdmi4_cec: fix interrupt handling 2018-01-02 14:20:10 +02:00
hdmi4_cec.h omapdrm: hdmi4_cec: add OMAP4 HDMI CEC support 2017-10-12 10:49:14 +03:00
hdmi4_core.c omapdrm: hdmi4: Correct the SoC revision matching 2017-11-30 12:25:37 +02:00
hdmi4_core.h omapdrm: hdmi4: make low-level functions available 2017-10-12 10:49:14 +03:00
hdmi4.c omapdrm: omapdss_hdmi_ops: add lost_hotplug op 2017-10-12 10:49:14 +03:00
hdmi5_core.c drm: omapdrm: Remove duplicate error messages when mapping memory 2017-06-02 10:57:09 +03:00
hdmi5_core.h drm/omap: move omapdss & displays under omapdrm 2015-12-29 11:07:48 +02:00
hdmi5.c drm: omapdrm: hdmi: Configure the PHY from the HDMI core version 2017-08-16 12:52:42 +03:00
hdmi_common.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
hdmi_phy.c drm: omapdrm: hdmi: Don't allocate PHY features dynamically 2017-08-16 12:52:42 +03:00
hdmi_pll.c drm: omapdrm: hdmi: Configure the PLL from the HDMI core version 2017-08-16 12:52:41 +03:00
hdmi_wp.c drm: omapdrm: hdmi: Replace OMAP SoC model check with HDMI xmit version 2017-08-16 12:52:41 +03:00
hdmi.h omapdrm: hdmi.h: extend hdmi_core_data with CEC fields 2017-10-12 10:49:14 +03:00
Kconfig omapdrm: hdmi4: hook up the HDMI CEC support 2017-10-12 10:49:14 +03:00
Makefile main drm pull request for v4.15 2017-11-15 20:42:10 -08:00
omapdss-boot-init.c drm: omapdrm: Use sizeof(*var) instead of sizeof(type) for structures 2016-12-19 11:25:05 +02:00
omapdss.h omapdrm: omapdss_hdmi_ops: add lost_hotplug op 2017-10-12 10:49:14 +03:00
output.c drm/omap: Remove unused omap_dss_find_output() function 2017-06-02 10:57:20 +03:00
pll.c drm/omap: fix i886 work-around 2017-08-23 12:22:09 +03:00
sdi.c drm/omap: sdi: remove legacy set_datapairs 2017-06-02 10:57:16 +03:00
venc.c drm/omap: fix analog tv-out modecheck 2017-08-23 12:22:08 +03:00
video-pll.c drm/omap: fix i886 work-around 2017-08-23 12:22:09 +03:00