Received: by 2002:a25:824b:0:0:0:0:0 with SMTP id d11csp1337024ybn; Wed, 2 Oct 2019 14:37:03 -0700 (PDT) X-Google-Smtp-Source: APXvYqyKaWE2JtUnJQmF8b6+zZGHpOKINpvNVV2ELti3NbhO0N3Jqkq5VLmOcsa8SYc4yF7dwST9 X-Received: by 2002:a17:906:2ccc:: with SMTP id r12mr4993879ejr.219.1570052223283; Wed, 02 Oct 2019 14:37:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570052223; cv=none; d=google.com; s=arc-20160816; b=HezxeC5Y8ewr8EnvDQOXElTo9R8+l3AixnESpAknAiV2RJ1bFnN/zvnGFXt2gN27gL CVtNB2ui5KJCjukcFY2efQTVVYK2mMabhRqOJfeq0MHFu2Lo6g5e0riapHr/+EaYkDpw Mjpf9qlM3hwCcG9DO244ZQ32Tf/exoGNKHvlTjzQSccrLIFOZVDAz10f2aLzD9fztIDz TdoVPbDefODS5UINxTVk976UpTUizAxzb7fsxf6jzYnB6gtRfE5FqxRKPMKG1qJo6vnm cZ2x0PEKaKg8RnIWrrTYRL5dmbP1I6WN3eZapM9pNzxNLdG6EyL+v4Wem1Bi5xw16vm3 ylng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=5RG+TGpIbWGK66ii3aX/c/mLwtrL9t7Co+9YPIDroe0=; b=nq6kJ2pRlyZmp8fhaLy1SVs22Lq5RcK6a8N1O+PQMU0Xxx4vZq+OplKnC15qqU4Dlg /L6w3mGPoR13FGPbbcLHRtcxhU2SEx24I7KPFVlGB+5MsqtI+e1dt0boy+HCFHLB/OEY sGc0ve+R2JixJssRygHjsn4cDelguGVZ+52Dw8Hf5yT6F9aFf3AAnjjhu50hYgy1tvYn WPV5bV2MG7Wk2RiunI3qxcgkZsvQRQDcesvq6ehtCgwKF8WDrsL6LczOFxSZvl5uy1c0 qB5Ld18RTgeHPZgJE15FXMm52JzgV09z4EErFZlXSyR8+KQFaAErp02jUJsjLrZ+/IZH PuFg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=BDeT9Q2r; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s54si252505edm.215.2019.10.02.14.36.39; Wed, 02 Oct 2019 14:37:03 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=BDeT9Q2r; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727657AbfJBToQ (ORCPT + 99 others); Wed, 2 Oct 2019 15:44:16 -0400 Received: from mail-pg1-f194.google.com ([209.85.215.194]:41472 "EHLO mail-pg1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727257AbfJBToP (ORCPT ); Wed, 2 Oct 2019 15:44:15 -0400 Received: by mail-pg1-f194.google.com with SMTP id s1so120892pgv.8 for ; Wed, 02 Oct 2019 12:44:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=5RG+TGpIbWGK66ii3aX/c/mLwtrL9t7Co+9YPIDroe0=; b=BDeT9Q2rS460oUk++puZT/bURg9A9s+tehyWG6BTR4fBXjpn6dnc+y/qwlxbuUmlDM EXy+7jMvhu5+8Eg5lHgfSj6UqA8SYT8vNKZQLBcRyAfLAJN6KXBB3/xFFn4vg88dzkEa 7hB0jLtDHVB7YYKgwEl5/peZADD5F5ENUBB5k= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=5RG+TGpIbWGK66ii3aX/c/mLwtrL9t7Co+9YPIDroe0=; b=jDguDDir7gndmgnDhL1YpkHRAVdVojWeh2G9K+RnSivlBXNTKocPQbShCuMtoZz+ay 00/8mJssOtsI4rgsI3gMJfd+Yop3cmg5FEnRSn+oyN2fFe1AuKl+UUNTMXisdoESJBJH 9IeGIZiyrZq8Xm0optlKLHuNQuHtLePdAbFMGzH5p8hilSa+Gz3m/lfddp2E0mZHDQ7P CtCoX8Q/IFe/hAXKCZv/UdwPCA7Y6kNsw+CCtbhOy7W3VJNAcuzAznBeKTDpNPEbaxrL VJgKBYTRc9kwOTPxpAF9v5DvIY8MtGF7fJ5OCxx9Fk7ibXR+p/l4kLOyg+fA6NZNfY9W CoPA== X-Gm-Message-State: APjAAAU1sngPiIvJbjOjikmKFJ1NHrsa3V9iH5QEqguRpnXacEREXiND Tn/a1yESmTdJy7D7b5yF762Vmg== X-Received: by 2002:a63:6803:: with SMTP id d3mr5361330pgc.183.1570045453990; Wed, 02 Oct 2019 12:44:13 -0700 (PDT) Received: from localhost ([2620:15c:202:1:4fff:7a6b:a335:8fde]) by smtp.gmail.com with ESMTPSA id b4sm68127pju.16.2019.10.02.12.44.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 02 Oct 2019 12:44:13 -0700 (PDT) From: Matthias Kaehlcke To: Archit Taneja , Andrzej Hajda , Laurent Pinchart , David Airlie Cc: Douglas Anderson , Sean Paul , Matthias Kaehlcke , Neil Armstrong , Yakir Yang , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Tzung-Bi Shih , Jerome Brunet , Jernej Skrabec , Cheng-Yi Chiang 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 Message-Id: <20191002124354.v2.1.I709dfec496f5f0b44a7b61dcd4937924da8d8382@changeid> X-Mailer: git-send-email 2.23.0.444.g18eeb5a265-goog MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 Reviewed-by: Douglas Anderson Reviewed-by: Sean Paul Acked-by: Neil Armstrong --- 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 +#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