All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthias Kaehlcke <mka@chromium.org>
To: Archit Taneja <architt@codeaurora.org>,
	Andrzej Hajda <a.hajda@samsung.com>,
	Laurent Pinchart <Laurent.pinchart@ideasonboard.com>,
	David Airlie <airlied@linux.ie>
Cc: Douglas Anderson <dianders@chromium.org>,
	Sean Paul <sean@poorly.run>, Matthias Kaehlcke <mka@chromium.org>,
	Neil Armstrong <narmstrong@baylibre.com>,
	Yakir Yang <kuankuan.y@gmail.com>,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	Tzung-Bi Shih <tzungbi@chromium.org>,
	Jerome Brunet <jbrunet@baylibre.com>,
	Jernej Skrabec <jernej.skrabec@siol.net>,
	Cheng-Yi Chiang <cychiang@chromium.org>
Subject: [PATCH v2] drm/bridge: dw-hdmi: Refuse DDC/CI transfers on the internal I2C controller
Date: Wed,  2 Oct 2019 12:44:06 -0700	[thread overview]
Message-ID: <20191002124354.v2.1.I709dfec496f5f0b44a7b61dcd4937924da8d8382@changeid> (raw)

The DDC/CI protocol involves sending a multi-byte request to the
display via I2C, which is typically followed by a multi-byte
response. The internal I2C controller only allows single byte
reads/writes or reads of 8 sequential bytes, hence DDC/CI is not
supported when the internal I2C controller is used. The I2C
transfers complete without errors, however the data in the response
is garbage. Abort transfers to/from slave address 0x37 (DDC) with
-EOPNOTSUPP, to make it evident that the communication is failing.

Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Sean Paul <sean@poorly.run>
Acked-by: Neil Armstrong <narmstrong@baylibre.com>
---
Sorry for the delay with sending v2, I completely forgot about this patch ...

Changes in v2:
- updated comment with 'TOFIX' entry as requested by Neil
- added Neil's 'Acked-by' tag

 drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
index 52d220a70362..ac24bceaf415 100644
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
@@ -41,6 +41,7 @@
 
 #include <media/cec-notifier.h>
 
+#define DDC_CI_ADDR		0x37
 #define DDC_SEGMENT_ADDR	0x30
 
 #define HDMI_EDID_LEN		512
@@ -439,6 +440,15 @@ static int dw_hdmi_i2c_xfer(struct i2c_adapter *adap,
 	u8 addr = msgs[0].addr;
 	int i, ret = 0;
 
+	if (addr == DDC_CI_ADDR)
+		/*
+		 * The internal I2C controller does not support the multi-byte
+		 * read and write operations needed for DDC/CI.
+		 * TOFIX: Blacklist the DDC/CI address until we filter out
+		 * unsupported I2C operations.
+		 */
+		return -EOPNOTSUPP;
+
 	dev_dbg(hdmi->dev, "xfer: num: %d, addr: %#x\n", num, addr);
 
 	for (i = 0; i < num; i++) {
-- 
2.23.0.444.g18eeb5a265-goog


             reply	other threads:[~2019-10-02 19:44 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-02 19:44 Matthias Kaehlcke [this message]
2019-10-07 11:54 ` [PATCH v2] drm/bridge: dw-hdmi: Refuse DDC/CI transfers on the internal I2C controller Neil Armstrong
2019-10-07 11:54   ` Neil Armstrong
  -- strict thread matches above, loose matches on Subject: below --
2019-07-22 18:19 Matthias Kaehlcke
2019-07-22 20:12 ` Doug Anderson
2019-07-22 20:54   ` Matthias Kaehlcke
2019-07-22 20:24 ` Sean Paul
2019-07-22 20:24   ` Sean Paul
2019-07-22 20:57   ` Doug Anderson
2019-07-22 21:02   ` Matthias Kaehlcke
2019-07-22 21:02     ` Matthias Kaehlcke
2019-07-25 17:49     ` Sean Paul
2019-07-30 13:38       ` Neil Armstrong
2019-07-30 16:14         ` Sean Paul
2019-07-31  7:38           ` Neil Armstrong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191002124354.v2.1.I709dfec496f5f0b44a7b61dcd4937924da8d8382@changeid \
    --to=mka@chromium.org \
    --cc=Laurent.pinchart@ideasonboard.com \
    --cc=a.hajda@samsung.com \
    --cc=airlied@linux.ie \
    --cc=architt@codeaurora.org \
    --cc=cychiang@chromium.org \
    --cc=dianders@chromium.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jbrunet@baylibre.com \
    --cc=jernej.skrabec@siol.net \
    --cc=kuankuan.y@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=narmstrong@baylibre.com \
    --cc=sean@poorly.run \
    --cc=tzungbi@chromium.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.