From patchwork Wed Jul 24 13:59:35 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrzej Pietrasiewicz X-Patchwork-Id: 11056917 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5BB7D14F6 for ; Wed, 24 Jul 2019 14:03:37 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 49F7C28774 for ; Wed, 24 Jul 2019 14:03:37 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3D0FC2881E; Wed, 24 Jul 2019 14:03:37 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id E5BE2287A4 for ; Wed, 24 Jul 2019 14:03:36 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 3A3106E57F; Wed, 24 Jul 2019 14:03:35 +0000 (UTC) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 20E666E56D; Wed, 24 Jul 2019 14:03:33 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: andrzej.p) with ESMTPSA id B7C2E26D598 From: Andrzej Pietrasiewicz To: dri-devel@lists.freedesktop.org Date: Wed, 24 Jul 2019 15:59:35 +0200 Message-Id: X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: Subject: [Intel-gfx] [PATCH v5 13/24] drm: zte: Provide ddc symlink in hdmi connector sysfs directory X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Y.C. Chen" , =?utf-8?q?Heiko_St=C3=BCbner?= , Sam Ravnborg , Neil Armstrong , David Airlie , Douglas Anderson , Andrzej Hajda , Laurent Pinchart , Benjamin Gaignard , kernel@collabora.com, Fabio Estevam , "David \(ChunMing\) Zhou" , linux-samsung-soc@vger.kernel.org, Joonyoung Shim , linux-rockchip@lists.infradead.org, Vincent Abriou , Krzysztof Kozlowski , Jonathan Hunter , Maxime Ripard , Chen-Yu Tsai , Kukjin Kim , NXP Linux Team , CK Hu , Dave Airlie , intel-gfx@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-tegra@vger.kernel.org, Philipp Zabel , Jonas Karlman , linux-arm-msm@vger.kernel.org, Sascha Hauer , Inki Dae , Alexios Zavras , Mamta Shukla , linux-mediatek@lists.infradead.org, Jyri Sarha , Matthias Brugger , Thomas Gleixner , Pengutronix Kernel Team , Allison Randal , linux-arm-kernel@lists.infradead.org, Jernej Skrabec , amd-gfx@lists.freedesktop.org, Tomi Valkeinen , Thomas Zimmermann , Seung-Woo Kim , Sandy Huang , linux-kernel@vger.kernel.org, Todor Tomov , Kyungmin Park , Huang Rui , Alex Deucher , Shawn Guo , =?utf-8?q?Christian_K=C3=B6nig?= , Gerd Hoffmann MIME-Version: 1.0 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" X-Virus-Scanned: ClamAV using ClamSMTP Use the ddc pointer provided by the generic connector. Signed-off-by: Andrzej Pietrasiewicz --- drivers/gpu/drm/zte/zx_hdmi.c | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/drivers/gpu/drm/zte/zx_hdmi.c b/drivers/gpu/drm/zte/zx_hdmi.c index a50f5a1f09b8..502d357b40a5 100644 --- a/drivers/gpu/drm/zte/zx_hdmi.c +++ b/drivers/gpu/drm/zte/zx_hdmi.c @@ -29,15 +29,11 @@ #define ZX_HDMI_INFOFRAME_SIZE 31 #define DDC_SEGMENT_ADDR 0x30 -struct zx_hdmi_i2c { - struct i2c_adapter adap; - struct mutex lock; -}; - struct zx_hdmi { struct drm_connector connector; struct drm_encoder encoder; - struct zx_hdmi_i2c *ddc; + /* protects ddc access */ + struct mutex ddc_lock; struct device *dev; struct drm_device *drm; void __iomem *mmio; @@ -264,7 +260,7 @@ static int zx_hdmi_connector_get_modes(struct drm_connector *connector) struct edid *edid; int ret; - edid = drm_get_edid(connector, &hdmi->ddc->adap); + edid = drm_get_edid(connector, connector->ddc); if (!edid) return 0; @@ -319,8 +315,10 @@ static int zx_hdmi_register(struct drm_device *drm, struct zx_hdmi *hdmi) hdmi->connector.polled = DRM_CONNECTOR_POLL_HPD; - drm_connector_init(drm, &hdmi->connector, &zx_hdmi_connector_funcs, - DRM_MODE_CONNECTOR_HDMIA); + drm_connector_init_with_ddc(drm, &hdmi->connector, + &zx_hdmi_connector_funcs, + DRM_MODE_CONNECTOR_HDMIA, + hdmi->connector.ddc); drm_connector_helper_add(&hdmi->connector, &zx_hdmi_connector_helper_funcs); @@ -562,10 +560,9 @@ static int zx_hdmi_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num) { struct zx_hdmi *hdmi = i2c_get_adapdata(adap); - struct zx_hdmi_i2c *ddc = hdmi->ddc; int i, ret = 0; - mutex_lock(&ddc->lock); + mutex_lock(&hdmi->ddc_lock); /* Enable DDC master access */ hdmi_writeb_mask(hdmi, TPI_DDC_MASTER_EN, HW_DDC_MASTER, HW_DDC_MASTER); @@ -590,7 +587,7 @@ static int zx_hdmi_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, /* Disable DDC master access */ hdmi_writeb_mask(hdmi, TPI_DDC_MASTER_EN, HW_DDC_MASTER, 0); - mutex_unlock(&ddc->lock); + mutex_unlock(&hdmi->ddc_lock); return ret; } @@ -608,17 +605,15 @@ static const struct i2c_algorithm zx_hdmi_algorithm = { static int zx_hdmi_ddc_register(struct zx_hdmi *hdmi) { struct i2c_adapter *adap; - struct zx_hdmi_i2c *ddc; int ret; - ddc = devm_kzalloc(hdmi->dev, sizeof(*ddc), GFP_KERNEL); - if (!ddc) + adap = devm_kzalloc(hdmi->dev, sizeof(*adap), GFP_KERNEL); + if (!adap) return -ENOMEM; - hdmi->ddc = ddc; - mutex_init(&ddc->lock); + hdmi->connector.ddc = adap; + mutex_init(&hdmi->ddc_lock); - adap = &ddc->adap; adap->owner = THIS_MODULE; adap->class = I2C_CLASS_DDC; adap->dev.parent = hdmi->dev;