All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 00/23] Associate ddc adapters with connectors
@ 2019-07-11 11:26 Andrzej Pietrasiewicz
  2019-07-11 11:26 ` [PATCH v4 01/23] drm: Include ddc adapter pointer in struct drm_connector Andrzej Pietrasiewicz
                   ` (17 more replies)
  0 siblings, 18 replies; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-11 11:26 UTC (permalink / raw)
  To: dri-devel
  Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
	Maxime Ripard, Douglas Anderson, Andrzej Hajda, Laurent Pinchart,
	Benjamin Gaignard, kernel, Fabio Estevam, David (ChunMing) Zhou,
	linux-samsung-soc, linux-rockchip, Joonyoung Shim,
	Oleksandr Andrushchenko, Vincent Abriou, Krzysztof Kozlowski,
	Jonathan Hunter, David Airlie, Chen-Yu Tsai, Kukjin Kim

It is difficult for a user to know which of the i2c adapters is for which
drm connector. This series addresses this problem.

The idea is to have a symbolic link in connector's sysfs directory, e.g.:

ls -l /sys/class/drm/card0-HDMI-A-1/ddc
lrwxrwxrwx 1 root root 0 Jun 24 10:42 /sys/class/drm/card0-HDMI-A-1/ddc \
	-> ../../../../soc/13880000.i2c/i2c-2

The user then knows that their card0-HDMI-A-1 uses i2c-2 and can e.g. run
ddcutil:

ddcutil -b 2 getvcp 0x10
VCP code 0x10 (Brightness                    ): current value =    90, max value =   100

The first patch in the series adds struct i2c_adapter pointer to struct
drm_connector. If the field is used by a particular driver, then an
appropriate symbolic link is created by the generic code, which is also added
by this patch.

The next 22 patches is an example of how to convert a driver to this new scheme.

v1..v2:

- used fixed name "ddc" for the symbolic link in order to make it easy for
userspace to find the i2c adapter

v2..v3:

- converted as many drivers as possible.

v3..v4:

- added Reviewed-by for patch 01/23
- moved "ddc" field assignment to before drm_connector_init() is called
in msm, vc4, sti, mgag200, ast, amdgpu, radeon
- simplified the code in amdgpu and radeon at the expense of some lines
exceeding 80 characters as per Alex Deucher's suggestion
- added i915

TODO: nouveau, gma500, omapdrm, panel-simple - if applicable.
Other drivers are either already converted or don't mention neither
"ddc" nor "i2c_adapter".

Andrzej Pietrasiewicz (23):
  drm: Include ddc adapter pointer in struct drm_connector
  drm/exynos: Provide ddc symlink in connector's sysfs
  drm: rockchip: Provide ddc symlink in rk3066_hdmi sysfs directory
  drm: rockchip: Provide ddc symlink in inno_hdmi sysfs directory
  drm/msm/hdmi: Provide ddc symlink in hdmi connector sysfs directory
  drm/sun4i: hdmi: Provide ddc symlink in sun4i hdmi connector sysfs
    directory
  drm/mediatek: Provide ddc symlink in hdmi connector sysfs directory
  drm/tegra: Provide ddc symlink in output connector sysfs directory
  drm/imx: imx-ldb: Provide ddc symlink in connector's sysfs
  drm/imx: imx-tve: Provide ddc symlink in connector's sysfs
  drm/vc4: Provide ddc symlink in connector sysfs directory
  drm: zte: Provide ddc symlink in hdmi connector sysfs directory
  drm: zte: Provide ddc symlink in vga connector sysfs directory
  drm/tilcdc: Provide ddc symlink in connector sysfs directory
  drm: sti: Provide ddc symlink in hdmi connector sysfs directory
  drm/mgag200: Provide ddc symlink in connector sysfs directory
  drm/ast: Provide ddc symlink in connector sysfs directory
  drm/bridge: dumb-vga-dac: Provide ddc symlink in connector sysfs
    directory
  drm/bridge: dw-hdmi: Provide ddc symlink in connector sysfs directory
  drm/bridge: ti-tfp410: Provide ddc symlink in connector sysfs
    directory
  drm/amdgpu: Provide ddc symlink in connector sysfs directory
  drm/radeon: Provide ddc symlink in connector sysfs directory
  drm/i915: Provide ddc symlink in hdmi connector sysfs directory

 .../gpu/drm/amd/amdgpu/amdgpu_connectors.c    | 56 ++++++++-----
 drivers/gpu/drm/ast/ast_mode.c                |  9 ++-
 drivers/gpu/drm/bridge/dumb-vga-dac.c         | 19 +++--
 drivers/gpu/drm/bridge/synopsys/dw-hdmi.c     | 40 +++++-----
 drivers/gpu/drm/bridge/ti-tfp410.c            | 19 +++--
 drivers/gpu/drm/drm_sysfs.c                   |  7 ++
 drivers/gpu/drm/exynos/exynos_hdmi.c          | 11 ++-
 drivers/gpu/drm/i915/display/intel_hdmi.c     |  5 +-
 drivers/gpu/drm/imx/imx-ldb.c                 | 13 ++-
 drivers/gpu/drm/imx/imx-tve.c                 |  8 +-
 drivers/gpu/drm/mediatek/mtk_hdmi.c           |  9 +--
 drivers/gpu/drm/mgag200/mgag200_mode.c        |  9 ++-
 drivers/gpu/drm/msm/hdmi/hdmi_connector.c     |  1 +
 drivers/gpu/drm/radeon/radeon_connectors.c    | 80 ++++++++++++-------
 drivers/gpu/drm/rockchip/inno_hdmi.c          | 17 ++--
 drivers/gpu/drm/rockchip/rk3066_hdmi.c        | 17 ++--
 drivers/gpu/drm/sti/sti_hdmi.c                |  1 +
 drivers/gpu/drm/sun4i/sun4i_hdmi.h            |  1 -
 drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c        | 14 ++--
 drivers/gpu/drm/tegra/drm.h                   |  1 -
 drivers/gpu/drm/tegra/output.c                | 12 +--
 drivers/gpu/drm/tegra/sor.c                   |  6 +-
 drivers/gpu/drm/tilcdc/tilcdc_tfp410.c        |  1 +
 drivers/gpu/drm/vc4/vc4_hdmi.c                | 21 ++---
 drivers/gpu/drm/zte/zx_hdmi.c                 | 25 +++---
 drivers/gpu/drm/zte/zx_vga.c                  | 25 +++---
 include/drm/drm_connector.h                   | 11 +++
 27 files changed, 240 insertions(+), 198 deletions(-)

-- 
2.17.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 65+ messages in thread

* [PATCH v4 01/23] drm: Include ddc adapter pointer in struct drm_connector
  2019-07-11 11:26 [PATCH v4 00/23] Associate ddc adapters with connectors Andrzej Pietrasiewicz
@ 2019-07-11 11:26 ` Andrzej Pietrasiewicz
  2019-07-11 12:00   ` Ville Syrjälä
                     ` (2 more replies)
  2019-07-11 11:26 ` [PATCH v4 02/23] drm/exynos: Provide ddc symlink in connector's sysfs Andrzej Pietrasiewicz
                   ` (16 subsequent siblings)
  17 siblings, 3 replies; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-11 11:26 UTC (permalink / raw)
  To: dri-devel
  Cc: Sam Ravnborg, Neil Armstrong, Maxime Ripard, Liviu Dudau,
	Douglas Anderson, Thierry Reding, Laurent Pinchart, kernel,
	linux-samsung-soc, linux-rockchip, Vincent Abriou,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie, intel-gfx, freedreno,
	linux-tegra, Jonas Karlman, linux-arm-msm, Mamta Shukla,
	linux-mediatek

Add generic code which creates symbolic links in sysfs, pointing to ddc
interface used by a particular video output. For example:

ls -l /sys/class/drm/card0-HDMI-A-1/ddc
lrwxrwxrwx 1 root root 0 Jun 24 10:42 /sys/class/drm/card0-HDMI-A-1/ddc \
	-> ../../../../soc/13880000.i2c/i2c-2

This makes it easy for user to associate a display with its ddc adapter
and use e.g. ddcutil to control the chosen monitor.

This patch adds an i2c_adapter pointer to struct drm_connector. Particular
drivers can then use it instead of using their own private instance. If a
connector contains a ddc, then create a symbolic link in sysfs.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com>
---
 drivers/gpu/drm/drm_sysfs.c |  7 +++++++
 include/drm/drm_connector.h | 11 +++++++++++
 2 files changed, 18 insertions(+)

diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c
index ad10810bc972..26d359b39785 100644
--- a/drivers/gpu/drm/drm_sysfs.c
+++ b/drivers/gpu/drm/drm_sysfs.c
@@ -294,6 +294,9 @@ int drm_sysfs_connector_add(struct drm_connector *connector)
 	/* Let userspace know we have a new connector */
 	drm_sysfs_hotplug_event(dev);
 
+	if (connector->ddc)
+		return sysfs_create_link(&connector->kdev->kobj,
+				 &connector->ddc->dev.kobj, "ddc");
 	return 0;
 }
 
@@ -301,6 +304,10 @@ void drm_sysfs_connector_remove(struct drm_connector *connector)
 {
 	if (!connector->kdev)
 		return;
+
+	if (connector->ddc)
+		sysfs_remove_link(&connector->kdev->kobj, "ddc");
+
 	DRM_DEBUG("removing \"%s\" from sysfs\n",
 		  connector->name);
 
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index ca745d9feaf5..1ad3d1d54ba7 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -23,6 +23,7 @@
 #ifndef __DRM_CONNECTOR_H__
 #define __DRM_CONNECTOR_H__
 
+#include <linux/i2c.h>
 #include <linux/list.h>
 #include <linux/llist.h>
 #include <linux/ctype.h>
@@ -1308,6 +1309,16 @@ struct drm_connector {
 	 * [0]: progressive, [1]: interlaced
 	 */
 	int audio_latency[2];
+
+	/**
+	 * @ddc: associated ddc adapter.
+	 * A connector usually has its associated ddc adapter. If a driver uses
+	 * this field, then an appropriate symbolic link is created in connector
+	 * sysfs directory to make it easy for the user to tell which i2c
+	 * adapter is for a particular display.
+	 */
+	struct i2c_adapter *ddc;
+
 	/**
 	 * @null_edid_counter: track sinks that give us all zeros for the EDID.
 	 * Needed to workaround some HW bugs where we get all 0s
-- 
2.17.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 65+ messages in thread

* [PATCH v4 02/23] drm/exynos: Provide ddc symlink in connector's sysfs
  2019-07-11 11:26 [PATCH v4 00/23] Associate ddc adapters with connectors Andrzej Pietrasiewicz
  2019-07-11 11:26 ` [PATCH v4 01/23] drm: Include ddc adapter pointer in struct drm_connector Andrzej Pietrasiewicz
@ 2019-07-11 11:26 ` Andrzej Pietrasiewicz
  2019-07-11 11:26 ` [PATCH v4 03/23] drm: rockchip: Provide ddc symlink in rk3066_hdmi sysfs directory Andrzej Pietrasiewicz
                   ` (15 subsequent siblings)
  17 siblings, 0 replies; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-11 11:26 UTC (permalink / raw)
  To: dri-devel
  Cc: Sam Ravnborg, Neil Armstrong, Maxime Ripard, Douglas Anderson,
	Thierry Reding, Laurent Pinchart, kernel, linux-samsung-soc,
	linux-rockchip, Vincent Abriou, Krzysztof Kozlowski,
	Jonathan Hunter, David Airlie, Chen-Yu Tsai, Kukjin Kim,
	NXP Linux Team, Dave Airlie, intel-gfx, freedreno, linux-tegra,
	Jonas Karlman, linux-arm-msm, Mamta Shukla, linux-mediatek,
	Jyri Sarha

Switch to using the ddc provided by the generic connector.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
---
 drivers/gpu/drm/exynos/exynos_hdmi.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c
index bc1565f1822a..b4332dae6ed5 100644
--- a/drivers/gpu/drm/exynos/exynos_hdmi.c
+++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
@@ -125,7 +125,6 @@ struct hdmi_context {
 	void __iomem			*regs;
 	void __iomem			*regs_hdmiphy;
 	struct i2c_client		*hdmiphy_port;
-	struct i2c_adapter		*ddc_adpt;
 	struct gpio_desc		*hpd_gpio;
 	int				irq;
 	struct regmap			*pmureg;
@@ -871,10 +870,10 @@ static int hdmi_get_modes(struct drm_connector *connector)
 	struct edid *edid;
 	int ret;
 
-	if (!hdata->ddc_adpt)
+	if (!connector->ddc)
 		return -ENODEV;
 
-	edid = drm_get_edid(connector, hdata->ddc_adpt);
+	edid = drm_get_edid(connector, connector->ddc);
 	if (!edid)
 		return -ENODEV;
 
@@ -1892,7 +1891,7 @@ static int hdmi_get_ddc_adapter(struct hdmi_context *hdata)
 		return -EPROBE_DEFER;
 	}
 
-	hdata->ddc_adpt = adpt;
+	hdata->connector.ddc = adpt;
 
 	return 0;
 }
@@ -2044,7 +2043,7 @@ static int hdmi_probe(struct platform_device *pdev)
 	if (hdata->regs_hdmiphy)
 		iounmap(hdata->regs_hdmiphy);
 err_ddc:
-	put_device(&hdata->ddc_adpt->dev);
+	put_device(&hdata->connector.ddc->dev);
 
 	return ret;
 }
@@ -2071,7 +2070,7 @@ static int hdmi_remove(struct platform_device *pdev)
 	if (hdata->regs_hdmiphy)
 		iounmap(hdata->regs_hdmiphy);
 
-	put_device(&hdata->ddc_adpt->dev);
+	put_device(&hdata->connector.ddc->dev);
 
 	mutex_destroy(&hdata->mutex);
 
-- 
2.17.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 65+ messages in thread

* [PATCH v4 03/23] drm: rockchip: Provide ddc symlink in rk3066_hdmi sysfs directory
  2019-07-11 11:26 [PATCH v4 00/23] Associate ddc adapters with connectors Andrzej Pietrasiewicz
  2019-07-11 11:26 ` [PATCH v4 01/23] drm: Include ddc adapter pointer in struct drm_connector Andrzej Pietrasiewicz
  2019-07-11 11:26 ` [PATCH v4 02/23] drm/exynos: Provide ddc symlink in connector's sysfs Andrzej Pietrasiewicz
@ 2019-07-11 11:26 ` Andrzej Pietrasiewicz
  2019-07-11 11:26 ` [PATCH v4 06/23] drm/sun4i: hdmi: Provide ddc symlink in sun4i hdmi connector " Andrzej Pietrasiewicz
                   ` (14 subsequent siblings)
  17 siblings, 0 replies; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-11 11:26 UTC (permalink / raw)
  To: dri-devel
  Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
	Maxime Ripard, Douglas Anderson, Andrzej Hajda, Laurent Pinchart,
	Benjamin Gaignard, kernel, Fabio Estevam, David (ChunMing) Zhou,
	linux-samsung-soc, Joonyoung Shim, linux-rockchip,
	Vincent Abriou, Krzysztof Kozlowski, Jonathan Hunter,
	David Airlie, Chen-Yu Tsai, Kukjin Kim, NXP Linux Team, CK Hu

Use the ddc pointer provided by the generic connector.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
---
 drivers/gpu/drm/rockchip/rk3066_hdmi.c | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/rockchip/rk3066_hdmi.c b/drivers/gpu/drm/rockchip/rk3066_hdmi.c
index 85fc5f01f761..1f3e630ecdab 100644
--- a/drivers/gpu/drm/rockchip/rk3066_hdmi.c
+++ b/drivers/gpu/drm/rockchip/rk3066_hdmi.c
@@ -49,7 +49,6 @@ struct rk3066_hdmi {
 	struct drm_encoder encoder;
 
 	struct rk3066_hdmi_i2c *i2c;
-	struct i2c_adapter *ddc;
 
 	unsigned int tmdsclk;
 
@@ -470,10 +469,10 @@ static int rk3066_hdmi_connector_get_modes(struct drm_connector *connector)
 	struct edid *edid;
 	int ret = 0;
 
-	if (!hdmi->ddc)
+	if (!connector->ddc)
 		return 0;
 
-	edid = drm_get_edid(connector, hdmi->ddc);
+	edid = drm_get_edid(connector, connector->ddc);
 	if (edid) {
 		hdmi->hdmi_data.sink_is_hdmi = drm_detect_hdmi_monitor(edid);
 		drm_connector_update_edid_property(connector, edid);
@@ -789,10 +788,10 @@ static int rk3066_hdmi_bind(struct device *dev, struct device *master,
 	/* internal hclk = hdmi_hclk / 25 */
 	hdmi_writeb(hdmi, HDMI_INTERNAL_CLK_DIVIDER, 25);
 
-	hdmi->ddc = rk3066_hdmi_i2c_adapter(hdmi);
-	if (IS_ERR(hdmi->ddc)) {
-		ret = PTR_ERR(hdmi->ddc);
-		hdmi->ddc = NULL;
+	hdmi->connector.ddc = rk3066_hdmi_i2c_adapter(hdmi);
+	if (IS_ERR(hdmi->connector.ddc)) {
+		ret = PTR_ERR(hdmi->connector.ddc);
+		hdmi->connector.ddc = NULL;
 		goto err_disable_hclk;
 	}
 
@@ -824,7 +823,7 @@ static int rk3066_hdmi_bind(struct device *dev, struct device *master,
 	hdmi->connector.funcs->destroy(&hdmi->connector);
 	hdmi->encoder.funcs->destroy(&hdmi->encoder);
 err_disable_i2c:
-	i2c_put_adapter(hdmi->ddc);
+	i2c_put_adapter(hdmi->connector.ddc);
 err_disable_hclk:
 	clk_disable_unprepare(hdmi->hclk);
 
@@ -839,7 +838,7 @@ static void rk3066_hdmi_unbind(struct device *dev, struct device *master,
 	hdmi->connector.funcs->destroy(&hdmi->connector);
 	hdmi->encoder.funcs->destroy(&hdmi->encoder);
 
-	i2c_put_adapter(hdmi->ddc);
+	i2c_put_adapter(hdmi->connector.ddc);
 	clk_disable_unprepare(hdmi->hclk);
 }
 
-- 
2.17.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 65+ messages in thread

* [PATCH v4 04/23] drm: rockchip: Provide ddc symlink in inno_hdmi sysfs directory
       [not found] ` <cover.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
@ 2019-07-11 11:26   ` Andrzej Pietrasiewicz
  2019-07-11 11:26   ` [PATCH v4 05/23] drm/msm/hdmi: Provide ddc symlink in hdmi connector " Andrzej Pietrasiewicz
                     ` (6 subsequent siblings)
  7 siblings, 0 replies; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-11 11:26 UTC (permalink / raw)
  To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
	Maxime Ripard, Ramalingam C, Joonas Lahtinen, Liviu Dudau,
	Douglas Anderson, Andrzej Hajda, Thierry Reding,
	Laurent Pinchart, Benjamin Gaignard,
	kernel-ZGY8ohtN/8qB+jHODAdFcQ, Fabio Estevam,
	Ville Syrjälä,
	David (ChunMing) Zhou, linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA,
	Joonyoung Shim, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	Vincent Abriou

Use the ddc pointer provided by the generic connector.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
---
 drivers/gpu/drm/rockchip/inno_hdmi.c | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/rockchip/inno_hdmi.c b/drivers/gpu/drm/rockchip/inno_hdmi.c
index f8ca98d294d0..d64b119c2649 100644
--- a/drivers/gpu/drm/rockchip/inno_hdmi.c
+++ b/drivers/gpu/drm/rockchip/inno_hdmi.c
@@ -59,7 +59,6 @@ struct inno_hdmi {
 	struct drm_encoder	encoder;
 
 	struct inno_hdmi_i2c *i2c;
-	struct i2c_adapter *ddc;
 
 	unsigned int tmds_rate;
 
@@ -552,10 +551,10 @@ static int inno_hdmi_connector_get_modes(struct drm_connector *connector)
 	struct edid *edid;
 	int ret = 0;
 
-	if (!hdmi->ddc)
+	if (!hdmi->connector.ddc)
 		return 0;
 
-	edid = drm_get_edid(connector, hdmi->ddc);
+	edid = drm_get_edid(connector, hdmi->connector.ddc);
 	if (edid) {
 		hdmi->hdmi_data.sink_is_hdmi = drm_detect_hdmi_monitor(edid);
 		hdmi->hdmi_data.sink_has_audio = drm_detect_monitor_audio(edid);
@@ -850,10 +849,10 @@ static int inno_hdmi_bind(struct device *dev, struct device *master,
 
 	inno_hdmi_reset(hdmi);
 
-	hdmi->ddc = inno_hdmi_i2c_adapter(hdmi);
-	if (IS_ERR(hdmi->ddc)) {
-		ret = PTR_ERR(hdmi->ddc);
-		hdmi->ddc = NULL;
+	hdmi->connector.ddc = inno_hdmi_i2c_adapter(hdmi);
+	if (IS_ERR(hdmi->connector.ddc)) {
+		ret = PTR_ERR(hdmi->connector.ddc);
+		hdmi->connector.ddc = NULL;
 		goto err_disable_clk;
 	}
 
@@ -886,7 +885,7 @@ static int inno_hdmi_bind(struct device *dev, struct device *master,
 	hdmi->connector.funcs->destroy(&hdmi->connector);
 	hdmi->encoder.funcs->destroy(&hdmi->encoder);
 err_put_adapter:
-	i2c_put_adapter(hdmi->ddc);
+	i2c_put_adapter(hdmi->connector.ddc);
 err_disable_clk:
 	clk_disable_unprepare(hdmi->pclk);
 	return ret;
@@ -900,7 +899,7 @@ static void inno_hdmi_unbind(struct device *dev, struct device *master,
 	hdmi->connector.funcs->destroy(&hdmi->connector);
 	hdmi->encoder.funcs->destroy(&hdmi->encoder);
 
-	i2c_put_adapter(hdmi->ddc);
+	i2c_put_adapter(hdmi->connector.ddc);
 	clk_disable_unprepare(hdmi->pclk);
 }
 
-- 
2.17.1

_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

^ permalink raw reply related	[flat|nested] 65+ messages in thread

* [PATCH v4 05/23] drm/msm/hdmi: Provide ddc symlink in hdmi connector sysfs directory
       [not found] ` <cover.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
  2019-07-11 11:26   ` [PATCH v4 04/23] drm: rockchip: Provide ddc symlink in inno_hdmi " Andrzej Pietrasiewicz
@ 2019-07-11 11:26   ` Andrzej Pietrasiewicz
  2019-07-11 11:26   ` [PATCH v4 15/23] drm: sti: " Andrzej Pietrasiewicz
                     ` (5 subsequent siblings)
  7 siblings, 0 replies; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-11 11:26 UTC (permalink / raw)
  To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
	Maxime Ripard, Ramalingam C, Joonas Lahtinen, Douglas Anderson,
	Andrzej Hajda, Thierry Reding, Laurent Pinchart,
	Benjamin Gaignard, kernel-ZGY8ohtN/8qB+jHODAdFcQ, Fabio Estevam,
	Ville Syrjälä,
	David (ChunMing) Zhou, linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA,
	Joonyoung Shim, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	Vincent Abriou, Rob Clark

Use the ddc pointer provided by the generic connector.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
---
 drivers/gpu/drm/msm/hdmi/hdmi_connector.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_connector.c b/drivers/gpu/drm/msm/hdmi/hdmi_connector.c
index 07b4cb877d82..6f33d5e43dd2 100644
--- a/drivers/gpu/drm/msm/hdmi/hdmi_connector.c
+++ b/drivers/gpu/drm/msm/hdmi/hdmi_connector.c
@@ -450,6 +450,7 @@ struct drm_connector *msm_hdmi_connector_init(struct hdmi *hdmi)
 
 	connector = &hdmi_connector->base;
 
+	connector->ddc = hdmi->i2c;
 	drm_connector_init(hdmi->dev, connector, &hdmi_connector_funcs,
 			DRM_MODE_CONNECTOR_HDMIA);
 	drm_connector_helper_add(connector, &msm_hdmi_connector_helper_funcs);
-- 
2.17.1

_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

^ permalink raw reply related	[flat|nested] 65+ messages in thread

* [PATCH v4 06/23] drm/sun4i: hdmi: Provide ddc symlink in sun4i hdmi connector sysfs directory
  2019-07-11 11:26 [PATCH v4 00/23] Associate ddc adapters with connectors Andrzej Pietrasiewicz
                   ` (2 preceding siblings ...)
  2019-07-11 11:26 ` [PATCH v4 03/23] drm: rockchip: Provide ddc symlink in rk3066_hdmi sysfs directory Andrzej Pietrasiewicz
@ 2019-07-11 11:26 ` Andrzej Pietrasiewicz
  2019-07-11 11:26 ` [PATCH v4 07/23] drm/mediatek: Provide ddc symlink in " Andrzej Pietrasiewicz
                   ` (13 subsequent siblings)
  17 siblings, 0 replies; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-11 11:26 UTC (permalink / raw)
  To: dri-devel
  Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
	Maxime Ripard, Douglas Anderson, Andrzej Hajda, Laurent Pinchart,
	Benjamin Gaignard, kernel, Fabio Estevam, David (ChunMing) Zhou,
	linux-samsung-soc, Joonyoung Shim, linux-rockchip,
	Vincent Abriou, Krzysztof Kozlowski, Jonathan Hunter,
	David Airlie, Chen-Yu Tsai, Kukjin Kim, NXP Linux Team, CK Hu

Use the ddc pointer provided by the generic connector.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
---
 drivers/gpu/drm/sun4i/sun4i_hdmi.h     |  1 -
 drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c | 14 +++++++-------
 2 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/sun4i/sun4i_hdmi.h b/drivers/gpu/drm/sun4i/sun4i_hdmi.h
index 7ad3f06c127e..1649273b1493 100644
--- a/drivers/gpu/drm/sun4i/sun4i_hdmi.h
+++ b/drivers/gpu/drm/sun4i/sun4i_hdmi.h
@@ -265,7 +265,6 @@ struct sun4i_hdmi {
 	struct clk		*tmds_clk;
 
 	struct i2c_adapter	*i2c;
-	struct i2c_adapter	*ddc_i2c;
 
 	/* Regmap fields for I2C adapter */
 	struct regmap_field	*field_ddc_en;
diff --git a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
index 9c3f99339b82..250bec00dc35 100644
--- a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
+++ b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
@@ -213,7 +213,7 @@ static int sun4i_hdmi_get_modes(struct drm_connector *connector)
 	struct edid *edid;
 	int ret;
 
-	edid = drm_get_edid(connector, hdmi->ddc_i2c ?: hdmi->i2c);
+	edid = drm_get_edid(connector, connector->ddc ?: hdmi->i2c);
 	if (!edid)
 		return 0;
 
@@ -598,11 +598,11 @@ static int sun4i_hdmi_bind(struct device *dev, struct device *master,
 		goto err_disable_mod_clk;
 	}
 
-	hdmi->ddc_i2c = sun4i_hdmi_get_ddc(dev);
-	if (IS_ERR(hdmi->ddc_i2c)) {
-		ret = PTR_ERR(hdmi->ddc_i2c);
+	hdmi->connector.ddc = sun4i_hdmi_get_ddc(dev);
+	if (IS_ERR(hdmi->connector.ddc)) {
+		ret = PTR_ERR(hdmi->connector.ddc);
 		if (ret == -ENODEV)
-			hdmi->ddc_i2c = NULL;
+			hdmi->connector.ddc = NULL;
 		else
 			goto err_del_i2c_adapter;
 	}
@@ -663,7 +663,7 @@ static int sun4i_hdmi_bind(struct device *dev, struct device *master,
 	cec_delete_adapter(hdmi->cec_adap);
 	drm_encoder_cleanup(&hdmi->encoder);
 err_put_ddc_i2c:
-	i2c_put_adapter(hdmi->ddc_i2c);
+	i2c_put_adapter(hdmi->connector.ddc);
 err_del_i2c_adapter:
 	i2c_del_adapter(hdmi->i2c);
 err_disable_mod_clk:
@@ -684,7 +684,7 @@ static void sun4i_hdmi_unbind(struct device *dev, struct device *master,
 	drm_connector_cleanup(&hdmi->connector);
 	drm_encoder_cleanup(&hdmi->encoder);
 	i2c_del_adapter(hdmi->i2c);
-	i2c_put_adapter(hdmi->ddc_i2c);
+	i2c_put_adapter(hdmi->connector.ddc);
 	clk_disable_unprepare(hdmi->mod_clk);
 	clk_disable_unprepare(hdmi->bus_clk);
 }
-- 
2.17.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 65+ messages in thread

* [PATCH v4 07/23] drm/mediatek: Provide ddc symlink in hdmi connector sysfs directory
  2019-07-11 11:26 [PATCH v4 00/23] Associate ddc adapters with connectors Andrzej Pietrasiewicz
                   ` (3 preceding siblings ...)
  2019-07-11 11:26 ` [PATCH v4 06/23] drm/sun4i: hdmi: Provide ddc symlink in sun4i hdmi connector " Andrzej Pietrasiewicz
@ 2019-07-11 11:26 ` Andrzej Pietrasiewicz
  2019-07-11 11:26 ` [PATCH v4 08/23] drm/tegra: Provide ddc symlink in output " Andrzej Pietrasiewicz
                   ` (12 subsequent siblings)
  17 siblings, 0 replies; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-11 11:26 UTC (permalink / raw)
  To: dri-devel
  Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
	Maxime Ripard, Douglas Anderson, Andrzej Hajda, Laurent Pinchart,
	Benjamin Gaignard, kernel, Fabio Estevam, David (ChunMing) Zhou,
	linux-samsung-soc, Joonyoung Shim, linux-rockchip,
	Vincent Abriou, Krzysztof Kozlowski, Jonathan Hunter,
	David Airlie, Chen-Yu Tsai, Kukjin Kim, NXP Linux Team, CK Hu

Use the ddc pointer provided by the generic connector.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
---
 drivers/gpu/drm/mediatek/mtk_hdmi.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c
index 5d6a9f094df5..6c5321dcc4b8 100644
--- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
+++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
@@ -146,7 +146,6 @@ struct mtk_hdmi {
 	struct device *dev;
 	struct phy *phy;
 	struct device *cec_dev;
-	struct i2c_adapter *ddc_adpt;
 	struct clk *clk[MTK_HDMI_CLK_COUNT];
 	struct drm_display_mode mode;
 	bool dvi_mode;
@@ -1213,10 +1212,10 @@ static int mtk_hdmi_conn_get_modes(struct drm_connector *conn)
 	struct edid *edid;
 	int ret;
 
-	if (!hdmi->ddc_adpt)
+	if (!conn->ddc)
 		return -ENODEV;
 
-	edid = drm_get_edid(conn, hdmi->ddc_adpt);
+	edid = drm_get_edid(conn, conn->ddc);
 	if (!edid)
 		return -ENODEV;
 
@@ -1509,9 +1508,9 @@ static int mtk_hdmi_dt_parse_pdata(struct mtk_hdmi *hdmi,
 	}
 	of_node_put(remote);
 
-	hdmi->ddc_adpt = of_find_i2c_adapter_by_node(i2c_np);
+	hdmi->conn.ddc = of_find_i2c_adapter_by_node(i2c_np);
 	of_node_put(i2c_np);
-	if (!hdmi->ddc_adpt) {
+	if (!hdmi->conn.ddc) {
 		dev_err(dev, "Failed to get ddc i2c adapter by node\n");
 		return -EINVAL;
 	}
-- 
2.17.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 65+ messages in thread

* [PATCH v4 08/23] drm/tegra: Provide ddc symlink in output connector sysfs directory
  2019-07-11 11:26 [PATCH v4 00/23] Associate ddc adapters with connectors Andrzej Pietrasiewicz
                   ` (4 preceding siblings ...)
  2019-07-11 11:26 ` [PATCH v4 07/23] drm/mediatek: Provide ddc symlink in " Andrzej Pietrasiewicz
@ 2019-07-11 11:26 ` Andrzej Pietrasiewicz
  2019-07-11 11:26 ` [PATCH v4 09/23] drm/imx: imx-ldb: Provide ddc symlink in connector's sysfs Andrzej Pietrasiewicz
                   ` (11 subsequent siblings)
  17 siblings, 0 replies; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-11 11:26 UTC (permalink / raw)
  To: dri-devel
  Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
	Maxime Ripard, Douglas Anderson, Andrzej Hajda, Laurent Pinchart,
	Benjamin Gaignard, kernel, Fabio Estevam, David (ChunMing) Zhou,
	linux-samsung-soc, Joonyoung Shim, linux-rockchip,
	Vincent Abriou, Krzysztof Kozlowski, Jonathan Hunter,
	David Airlie, Chen-Yu Tsai, Kukjin Kim, NXP Linux Team, CK Hu

Use the ddc pointer provided by the generic connector.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
---
 drivers/gpu/drm/tegra/drm.h    |  1 -
 drivers/gpu/drm/tegra/output.c | 12 ++++++------
 drivers/gpu/drm/tegra/sor.c    |  6 +++---
 3 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/tegra/drm.h b/drivers/gpu/drm/tegra/drm.h
index 86daa19fcf24..9bf72bcd3ec1 100644
--- a/drivers/gpu/drm/tegra/drm.h
+++ b/drivers/gpu/drm/tegra/drm.h
@@ -120,7 +120,6 @@ struct tegra_output {
 	struct device *dev;
 
 	struct drm_panel *panel;
-	struct i2c_adapter *ddc;
 	const struct edid *edid;
 	struct cec_notifier *cec;
 	unsigned int hpd_irq;
diff --git a/drivers/gpu/drm/tegra/output.c b/drivers/gpu/drm/tegra/output.c
index 274cb955e2e1..0b5037a29c63 100644
--- a/drivers/gpu/drm/tegra/output.c
+++ b/drivers/gpu/drm/tegra/output.c
@@ -30,8 +30,8 @@ int tegra_output_connector_get_modes(struct drm_connector *connector)
 
 	if (output->edid)
 		edid = kmemdup(output->edid, sizeof(*edid), GFP_KERNEL);
-	else if (output->ddc)
-		edid = drm_get_edid(connector, output->ddc);
+	else if (connector->ddc)
+		edid = drm_get_edid(connector, connector->ddc);
 
 	cec_notifier_set_phys_addr_from_edid(output->cec, edid);
 	drm_connector_update_edid_property(connector, edid);
@@ -111,8 +111,8 @@ int tegra_output_probe(struct tegra_output *output)
 
 	ddc = of_parse_phandle(output->of_node, "nvidia,ddc-i2c-bus", 0);
 	if (ddc) {
-		output->ddc = of_find_i2c_adapter_by_node(ddc);
-		if (!output->ddc) {
+		output->connector.ddc = of_find_i2c_adapter_by_node(ddc);
+		if (!output->connector.ddc) {
 			err = -EPROBE_DEFER;
 			of_node_put(ddc);
 			return err;
@@ -174,8 +174,8 @@ void tegra_output_remove(struct tegra_output *output)
 	if (output->hpd_gpio)
 		free_irq(output->hpd_irq, output);
 
-	if (output->ddc)
-		put_device(&output->ddc->dev);
+	if (output->connector.ddc)
+		put_device(&output->connector.ddc->dev);
 }
 
 int tegra_output_init(struct drm_device *drm, struct tegra_output *output)
diff --git a/drivers/gpu/drm/tegra/sor.c b/drivers/gpu/drm/tegra/sor.c
index 4ffe3794e6d3..77e61f98de07 100644
--- a/drivers/gpu/drm/tegra/sor.c
+++ b/drivers/gpu/drm/tegra/sor.c
@@ -2311,7 +2311,7 @@ static void tegra_sor_hdmi_disable_scrambling(struct tegra_sor *sor)
 
 static void tegra_sor_hdmi_scdc_disable(struct tegra_sor *sor)
 {
-	struct i2c_adapter *ddc = sor->output.ddc;
+	struct i2c_adapter *ddc = sor->output.connector.ddc;
 
 	drm_scdc_set_high_tmds_clock_ratio(ddc, false);
 	drm_scdc_set_scrambling(ddc, false);
@@ -2339,7 +2339,7 @@ static void tegra_sor_hdmi_enable_scrambling(struct tegra_sor *sor)
 
 static void tegra_sor_hdmi_scdc_enable(struct tegra_sor *sor)
 {
-	struct i2c_adapter *ddc = sor->output.ddc;
+	struct i2c_adapter *ddc = sor->output.connector.ddc;
 
 	drm_scdc_set_high_tmds_clock_ratio(ddc, true);
 	drm_scdc_set_scrambling(ddc, true);
@@ -2350,7 +2350,7 @@ static void tegra_sor_hdmi_scdc_enable(struct tegra_sor *sor)
 static void tegra_sor_hdmi_scdc_work(struct work_struct *work)
 {
 	struct tegra_sor *sor = container_of(work, struct tegra_sor, scdc.work);
-	struct i2c_adapter *ddc = sor->output.ddc;
+	struct i2c_adapter *ddc = sor->output.connector.ddc;
 
 	if (!drm_scdc_get_scrambling_status(ddc)) {
 		DRM_DEBUG_KMS("SCDC not scrambled\n");
-- 
2.17.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 65+ messages in thread

* [PATCH v4 09/23] drm/imx: imx-ldb: Provide ddc symlink in connector's sysfs
  2019-07-11 11:26 [PATCH v4 00/23] Associate ddc adapters with connectors Andrzej Pietrasiewicz
                   ` (5 preceding siblings ...)
  2019-07-11 11:26 ` [PATCH v4 08/23] drm/tegra: Provide ddc symlink in output " Andrzej Pietrasiewicz
@ 2019-07-11 11:26 ` Andrzej Pietrasiewicz
  2019-07-11 11:26 ` [PATCH v4 10/23] drm/imx: imx-tve: " Andrzej Pietrasiewicz
                   ` (10 subsequent siblings)
  17 siblings, 0 replies; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-11 11:26 UTC (permalink / raw)
  To: dri-devel
  Cc: Sam Ravnborg, Neil Armstrong, Maxime Ripard, Liviu Dudau,
	Douglas Anderson, Thierry Reding, Laurent Pinchart, kernel,
	linux-samsung-soc, linux-rockchip, Vincent Abriou,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie, intel-gfx, freedreno,
	linux-tegra, Jonas Karlman, linux-arm-msm, Mamta Shukla,
	linux-mediatek

Use the ddc pointer provided by the generic connector.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
---
 drivers/gpu/drm/imx/imx-ldb.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/imx/imx-ldb.c b/drivers/gpu/drm/imx/imx-ldb.c
index 383733302280..44fdb264339e 100644
--- a/drivers/gpu/drm/imx/imx-ldb.c
+++ b/drivers/gpu/drm/imx/imx-ldb.c
@@ -55,7 +55,6 @@ struct imx_ldb_channel {
 	struct drm_bridge *bridge;
 
 	struct device_node *child;
-	struct i2c_adapter *ddc;
 	int chno;
 	void *edid;
 	int edid_len;
@@ -131,8 +130,8 @@ static int imx_ldb_connector_get_modes(struct drm_connector *connector)
 			return num_modes;
 	}
 
-	if (!imx_ldb_ch->edid && imx_ldb_ch->ddc)
-		imx_ldb_ch->edid = drm_get_edid(connector, imx_ldb_ch->ddc);
+	if (!imx_ldb_ch->edid && connector->ddc)
+		imx_ldb_ch->edid = drm_get_edid(connector, connector->ddc);
 
 	if (imx_ldb_ch->edid) {
 		drm_connector_update_edid_property(connector,
@@ -550,15 +549,15 @@ static int imx_ldb_panel_ddc(struct device *dev,
 
 	ddc_node = of_parse_phandle(child, "ddc-i2c-bus", 0);
 	if (ddc_node) {
-		channel->ddc = of_find_i2c_adapter_by_node(ddc_node);
+		channel->connector.ddc = of_find_i2c_adapter_by_node(ddc_node);
 		of_node_put(ddc_node);
-		if (!channel->ddc) {
+		if (!channel->connector.ddc) {
 			dev_warn(dev, "failed to get ddc i2c adapter\n");
 			return -EPROBE_DEFER;
 		}
 	}
 
-	if (!channel->ddc) {
+	if (!channel->connector.ddc) {
 		/* if no DDC available, fallback to hardcoded EDID */
 		dev_dbg(dev, "no ddc available\n");
 
@@ -725,7 +724,7 @@ static void imx_ldb_unbind(struct device *dev, struct device *master,
 			drm_panel_detach(channel->panel);
 
 		kfree(channel->edid);
-		i2c_put_adapter(channel->ddc);
+		i2c_put_adapter(channel->connector.ddc);
 	}
 }
 
-- 
2.17.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 65+ messages in thread

* [PATCH v4 10/23] drm/imx: imx-tve: Provide ddc symlink in connector's sysfs
  2019-07-11 11:26 [PATCH v4 00/23] Associate ddc adapters with connectors Andrzej Pietrasiewicz
                   ` (6 preceding siblings ...)
  2019-07-11 11:26 ` [PATCH v4 09/23] drm/imx: imx-ldb: Provide ddc symlink in connector's sysfs Andrzej Pietrasiewicz
@ 2019-07-11 11:26 ` Andrzej Pietrasiewicz
  2019-07-11 11:26 ` [PATCH v4 11/23] drm/vc4: Provide ddc symlink in connector sysfs directory Andrzej Pietrasiewicz
                   ` (9 subsequent siblings)
  17 siblings, 0 replies; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-11 11:26 UTC (permalink / raw)
  To: dri-devel
  Cc: Sam Ravnborg, Neil Armstrong, Maxime Ripard, Douglas Anderson,
	Thierry Reding, Laurent Pinchart, kernel, linux-samsung-soc,
	linux-rockchip, Vincent Abriou, Krzysztof Kozlowski,
	Jonathan Hunter, David Airlie, Chen-Yu Tsai, Kukjin Kim,
	NXP Linux Team, Dave Airlie, intel-gfx, freedreno, linux-tegra,
	Jonas Karlman, linux-arm-msm, Mamta Shukla, linux-mediatek,
	Jyri Sarha

Use the ddc pointer provided by the generic connector.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
---
 drivers/gpu/drm/imx/imx-tve.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/imx/imx-tve.c b/drivers/gpu/drm/imx/imx-tve.c
index e725af8a0025..b8bee4e1f169 100644
--- a/drivers/gpu/drm/imx/imx-tve.c
+++ b/drivers/gpu/drm/imx/imx-tve.c
@@ -109,7 +109,6 @@ struct imx_tve {
 
 	struct regmap *regmap;
 	struct regulator *dac_reg;
-	struct i2c_adapter *ddc;
 	struct clk *clk;
 	struct clk *di_sel_clk;
 	struct clk_hw clk_hw_di;
@@ -218,14 +217,13 @@ static int tve_setup_vga(struct imx_tve *tve)
 
 static int imx_tve_connector_get_modes(struct drm_connector *connector)
 {
-	struct imx_tve *tve = con_to_tve(connector);
 	struct edid *edid;
 	int ret = 0;
 
-	if (!tve->ddc)
+	if (!connector->ddc)
 		return 0;
 
-	edid = drm_get_edid(connector, tve->ddc);
+	edid = drm_get_edid(connector, connector->ddc);
 	if (edid) {
 		drm_connector_update_edid_property(connector, edid);
 		ret = drm_add_edid_modes(connector, edid);
@@ -551,7 +549,7 @@ static int imx_tve_bind(struct device *dev, struct device *master, void *data)
 
 	ddc_node = of_parse_phandle(np, "ddc-i2c-bus", 0);
 	if (ddc_node) {
-		tve->ddc = of_find_i2c_adapter_by_node(ddc_node);
+		tve->connector.ddc = of_find_i2c_adapter_by_node(ddc_node);
 		of_node_put(ddc_node);
 	}
 
-- 
2.17.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 65+ messages in thread

* [PATCH v4 11/23] drm/vc4: Provide ddc symlink in connector sysfs directory
  2019-07-11 11:26 [PATCH v4 00/23] Associate ddc adapters with connectors Andrzej Pietrasiewicz
                   ` (7 preceding siblings ...)
  2019-07-11 11:26 ` [PATCH v4 10/23] drm/imx: imx-tve: " Andrzej Pietrasiewicz
@ 2019-07-11 11:26 ` Andrzej Pietrasiewicz
  2019-07-11 11:26 ` [PATCH v4 12/23] drm: zte: Provide ddc symlink in hdmi " Andrzej Pietrasiewicz
                   ` (8 subsequent siblings)
  17 siblings, 0 replies; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-11 11:26 UTC (permalink / raw)
  To: dri-devel
  Cc: Sam Ravnborg, Neil Armstrong, Maxime Ripard, Douglas Anderson,
	Thierry Reding, Laurent Pinchart, kernel, linux-samsung-soc,
	linux-rockchip, Vincent Abriou, Krzysztof Kozlowski,
	Jonathan Hunter, David Airlie, Chen-Yu Tsai, Kukjin Kim,
	NXP Linux Team, Dave Airlie, intel-gfx, freedreno, linux-tegra,
	Jonas Karlman, linux-arm-msm, Mamta Shukla, linux-mediatek,
	Jyri Sarha

Use the ddc pointer provided by the generic connector.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
---
 drivers/gpu/drm/vc4/vc4_hdmi.c | 21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
index ee7d4e7b0ee3..abacd48a1462 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -76,7 +76,6 @@ struct vc4_hdmi {
 
 	struct vc4_hdmi_audio audio;
 
-	struct i2c_adapter *ddc;
 	void __iomem *hdmicore_regs;
 	void __iomem *hd_regs;
 	int hpd_gpio;
@@ -207,7 +206,7 @@ vc4_hdmi_connector_detect(struct drm_connector *connector, bool force)
 		return connector_status_disconnected;
 	}
 
-	if (drm_probe_ddc(vc4->hdmi->ddc))
+	if (drm_probe_ddc(connector->ddc))
 		return connector_status_connected;
 
 	if (HDMI_READ(VC4_HDMI_HOTPLUG) & VC4_HDMI_HOTPLUG_CONNECTED)
@@ -233,7 +232,7 @@ static int vc4_hdmi_connector_get_modes(struct drm_connector *connector)
 	int ret = 0;
 	struct edid *edid;
 
-	edid = drm_get_edid(connector, vc4->hdmi->ddc);
+	edid = drm_get_edid(connector, connector->ddc);
 	cec_s_phys_addr_from_edid(vc4->hdmi->cec_adap, edid);
 	if (!edid)
 		return -ENODEV;
@@ -267,7 +266,8 @@ static const struct drm_connector_helper_funcs vc4_hdmi_connector_helper_funcs =
 };
 
 static struct drm_connector *vc4_hdmi_connector_init(struct drm_device *dev,
-						     struct drm_encoder *encoder)
+						     struct drm_encoder *encoder,
+						     struct i2c_adapter *ddc)
 {
 	struct drm_connector *connector;
 	struct vc4_hdmi_connector *hdmi_connector;
@@ -280,6 +280,7 @@ static struct drm_connector *vc4_hdmi_connector_init(struct drm_device *dev,
 	connector = &hdmi_connector->base;
 
 	hdmi_connector->encoder = encoder;
+	connector->ddc = ddc;
 
 	drm_connector_init(dev, connector, &vc4_hdmi_connector_funcs,
 			   DRM_MODE_CONNECTOR_HDMIA);
@@ -1291,6 +1292,7 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data)
 	struct vc4_hdmi *hdmi;
 	struct vc4_hdmi_encoder *vc4_hdmi_encoder;
 	struct device_node *ddc_node;
+	struct i2c_adapter *ddc;
 	u32 value;
 	int ret;
 
@@ -1338,9 +1340,9 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data)
 		return -ENODEV;
 	}
 
-	hdmi->ddc = of_find_i2c_adapter_by_node(ddc_node);
+	ddc = of_find_i2c_adapter_by_node(ddc_node);
 	of_node_put(ddc_node);
-	if (!hdmi->ddc) {
+	if (ddc) {
 		DRM_DEBUG("Failed to get ddc i2c adapter by node\n");
 		return -EPROBE_DEFER;
 	}
@@ -1395,7 +1397,7 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data)
 			 DRM_MODE_ENCODER_TMDS, NULL);
 	drm_encoder_helper_add(hdmi->encoder, &vc4_hdmi_encoder_helper_funcs);
 
-	hdmi->connector = vc4_hdmi_connector_init(drm, hdmi->encoder);
+	hdmi->connector = vc4_hdmi_connector_init(drm, hdmi->encoder, ddc);
 	if (IS_ERR(hdmi->connector)) {
 		ret = PTR_ERR(hdmi->connector);
 		goto err_destroy_encoder;
@@ -1452,7 +1454,7 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data)
 	clk_disable_unprepare(hdmi->hsm_clock);
 	pm_runtime_disable(dev);
 err_put_i2c:
-	put_device(&hdmi->ddc->dev);
+	put_device(&ddc->dev);
 
 	return ret;
 }
@@ -1463,6 +1465,7 @@ static void vc4_hdmi_unbind(struct device *dev, struct device *master,
 	struct drm_device *drm = dev_get_drvdata(master);
 	struct vc4_dev *vc4 = drm->dev_private;
 	struct vc4_hdmi *hdmi = vc4->hdmi;
+	struct i2c_adapter *ddc = hdmi->connector->ddc;
 
 	cec_unregister_adapter(hdmi->cec_adap);
 	vc4_hdmi_connector_destroy(hdmi->connector);
@@ -1471,7 +1474,7 @@ static void vc4_hdmi_unbind(struct device *dev, struct device *master,
 	clk_disable_unprepare(hdmi->hsm_clock);
 	pm_runtime_disable(dev);
 
-	put_device(&hdmi->ddc->dev);
+	put_device(&ddc->dev);
 
 	vc4->hdmi = NULL;
 }
-- 
2.17.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 65+ messages in thread

* [PATCH v4 12/23] drm: zte: Provide ddc symlink in hdmi connector sysfs directory
  2019-07-11 11:26 [PATCH v4 00/23] Associate ddc adapters with connectors Andrzej Pietrasiewicz
                   ` (8 preceding siblings ...)
  2019-07-11 11:26 ` [PATCH v4 11/23] drm/vc4: Provide ddc symlink in connector sysfs directory Andrzej Pietrasiewicz
@ 2019-07-11 11:26 ` Andrzej Pietrasiewicz
  2019-07-23  5:58   ` Shawn Guo
  2019-07-11 11:26 ` [PATCH v4 13/23] drm: zte: Provide ddc symlink in vga " Andrzej Pietrasiewicz
                   ` (7 subsequent siblings)
  17 siblings, 1 reply; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-11 11:26 UTC (permalink / raw)
  To: dri-devel
  Cc: Sam Ravnborg, Neil Armstrong, Maxime Ripard, Douglas Anderson,
	Thierry Reding, Laurent Pinchart, kernel, linux-samsung-soc,
	linux-rockchip, Vincent Abriou, Krzysztof Kozlowski,
	Jonathan Hunter, David Airlie, Chen-Yu Tsai, Kukjin Kim,
	NXP Linux Team, Dave Airlie, intel-gfx, freedreno, linux-tegra,
	Jonas Karlman, linux-arm-msm, Mamta Shukla, linux-mediatek,
	Jyri Sarha

Use the ddc pointer provided by the generic connector.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
---
 drivers/gpu/drm/zte/zx_hdmi.c | 25 +++++++++----------------
 1 file changed, 9 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/zte/zx_hdmi.c b/drivers/gpu/drm/zte/zx_hdmi.c
index bfe918b27c5c..862a855ea14a 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;
 
@@ -562,10 +558,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 +585,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 +603,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;
-- 
2.17.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 65+ messages in thread

* [PATCH v4 13/23] drm: zte: Provide ddc symlink in vga connector sysfs directory
  2019-07-11 11:26 [PATCH v4 00/23] Associate ddc adapters with connectors Andrzej Pietrasiewicz
                   ` (9 preceding siblings ...)
  2019-07-11 11:26 ` [PATCH v4 12/23] drm: zte: Provide ddc symlink in hdmi " Andrzej Pietrasiewicz
@ 2019-07-11 11:26 ` Andrzej Pietrasiewicz
       [not found]   ` <9cdd2fc46dbcb6b596786e5a12b7176c77a38d78.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
  2019-07-11 11:26 ` [PATCH v4 14/23] drm/tilcdc: Provide ddc symlink in " Andrzej Pietrasiewicz
                   ` (6 subsequent siblings)
  17 siblings, 1 reply; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-11 11:26 UTC (permalink / raw)
  To: dri-devel
  Cc: Sam Ravnborg, Neil Armstrong, Maxime Ripard, Liviu Dudau,
	Douglas Anderson, Thierry Reding, Laurent Pinchart, kernel,
	linux-samsung-soc, linux-rockchip, Vincent Abriou,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie, intel-gfx, freedreno,
	linux-tegra, Jonas Karlman, linux-arm-msm, Mamta Shukla,
	linux-mediatek

Use the ddc pointer provided by the generic connector.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
---
 drivers/gpu/drm/zte/zx_vga.c | 25 +++++++++----------------
 1 file changed, 9 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/zte/zx_vga.c b/drivers/gpu/drm/zte/zx_vga.c
index 1634a08707fb..a3a4d6982888 100644
--- a/drivers/gpu/drm/zte/zx_vga.c
+++ b/drivers/gpu/drm/zte/zx_vga.c
@@ -23,15 +23,11 @@ struct zx_vga_pwrctrl {
 	u32 mask;
 };
 
-struct zx_vga_i2c {
-	struct i2c_adapter adap;
-	struct mutex lock;
-};
-
 struct zx_vga {
 	struct drm_connector connector;
 	struct drm_encoder encoder;
-	struct zx_vga_i2c *ddc;
+	/* protects ddc access */
+	struct mutex ddc_lock;
 	struct device *dev;
 	void __iomem *mmio;
 	struct clk *i2c_wclk;
@@ -86,7 +82,7 @@ static int zx_vga_connector_get_modes(struct drm_connector *connector)
 	 */
 	zx_writel(vga->mmio + VGA_AUTO_DETECT_SEL, 0);
 
-	edid = drm_get_edid(connector, &vga->ddc->adap);
+	edid = drm_get_edid(connector, connector->ddc);
 	if (!edid) {
 		/*
 		 * If EDID reading fails, we set the device state into
@@ -282,11 +278,10 @@ static int zx_vga_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs,
 			   int num)
 {
 	struct zx_vga *vga = i2c_get_adapdata(adap);
-	struct zx_vga_i2c *ddc = vga->ddc;
 	int ret = 0;
 	int i;
 
-	mutex_lock(&ddc->lock);
+	mutex_lock(&vga->ddc_lock);
 
 	for (i = 0; i < num; i++) {
 		if (msgs[i].flags & I2C_M_RD)
@@ -301,7 +296,7 @@ static int zx_vga_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs,
 	if (!ret)
 		ret = num;
 
-	mutex_unlock(&ddc->lock);
+	mutex_unlock(&vga->ddc_lock);
 
 	return ret;
 }
@@ -320,17 +315,15 @@ static int zx_vga_ddc_register(struct zx_vga *vga)
 {
 	struct device *dev = vga->dev;
 	struct i2c_adapter *adap;
-	struct zx_vga_i2c *ddc;
 	int ret;
 
-	ddc = devm_kzalloc(dev, sizeof(*ddc), GFP_KERNEL);
-	if (!ddc)
+	adap = devm_kzalloc(dev, sizeof(*adap), GFP_KERNEL);
+	if (!adap)
 		return -ENOMEM;
 
-	vga->ddc = ddc;
-	mutex_init(&ddc->lock);
+	vga->connector.ddc = adap;
+	mutex_init(&vga->ddc_lock);
 
-	adap = &ddc->adap;
 	adap->owner = THIS_MODULE;
 	adap->class = I2C_CLASS_DDC;
 	adap->dev.parent = dev;
-- 
2.17.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 65+ messages in thread

* [PATCH v4 14/23] drm/tilcdc: Provide ddc symlink in connector sysfs directory
  2019-07-11 11:26 [PATCH v4 00/23] Associate ddc adapters with connectors Andrzej Pietrasiewicz
                   ` (10 preceding siblings ...)
  2019-07-11 11:26 ` [PATCH v4 13/23] drm: zte: Provide ddc symlink in vga " Andrzej Pietrasiewicz
@ 2019-07-11 11:26 ` Andrzej Pietrasiewicz
       [not found]   ` <d1d415022c598fb7acd033f0f322dd67250adaa9.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
  2019-07-11 11:26 ` [PATCH v4 19/23] drm/bridge: dw-hdmi: " Andrzej Pietrasiewicz
                   ` (5 subsequent siblings)
  17 siblings, 1 reply; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-11 11:26 UTC (permalink / raw)
  To: dri-devel
  Cc: Sam Ravnborg, Neil Armstrong, Maxime Ripard, Douglas Anderson,
	Thierry Reding, Laurent Pinchart, kernel, linux-samsung-soc,
	linux-rockchip, Vincent Abriou, Krzysztof Kozlowski,
	Jonathan Hunter, David Airlie, Chen-Yu Tsai, Kukjin Kim,
	NXP Linux Team, Dave Airlie, intel-gfx, freedreno, linux-tegra,
	Jonas Karlman, linux-arm-msm, Alexios Zavras, Mamta Shukla,
	linux-m

Use the ddc pointer provided by the generic connector.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
---
 drivers/gpu/drm/tilcdc/tilcdc_tfp410.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
index 62d014c20988..c373edb95666 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
@@ -219,6 +219,7 @@ static struct drm_connector *tfp410_connector_create(struct drm_device *dev,
 	tfp410_connector->mod = mod;
 
 	connector = &tfp410_connector->base;
+	connector->ddc = mod->i2c;
 
 	drm_connector_init(dev, connector, &tfp410_connector_funcs,
 			DRM_MODE_CONNECTOR_DVID);
-- 
2.17.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 65+ messages in thread

* [PATCH v4 15/23] drm: sti: Provide ddc symlink in hdmi connector sysfs directory
       [not found] ` <cover.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
  2019-07-11 11:26   ` [PATCH v4 04/23] drm: rockchip: Provide ddc symlink in inno_hdmi " Andrzej Pietrasiewicz
  2019-07-11 11:26   ` [PATCH v4 05/23] drm/msm/hdmi: Provide ddc symlink in hdmi connector " Andrzej Pietrasiewicz
@ 2019-07-11 11:26   ` Andrzej Pietrasiewicz
       [not found]     ` <86afdc0bca6939901870176dcf55f279f7b10a08.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
  2019-07-11 11:26   ` [PATCH v4 16/23] drm/mgag200: Provide ddc symlink in " Andrzej Pietrasiewicz
                     ` (4 subsequent siblings)
  7 siblings, 1 reply; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-11 11:26 UTC (permalink / raw)
  To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
	Maxime Ripard, Ramalingam C, Joonas Lahtinen, Liviu Dudau,
	Douglas Anderson, Andrzej Hajda, Thierry Reding,
	Laurent Pinchart, Benjamin Gaignard,
	kernel-ZGY8ohtN/8qB+jHODAdFcQ, Fabio Estevam,
	Ville Syrjälä,
	David (ChunMing) Zhou, linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA,
	Joonyoung Shim, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	Vincent Abriou

Use the ddc pointer provided by the generic connector.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
---
 drivers/gpu/drm/sti/sti_hdmi.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/sti/sti_hdmi.c b/drivers/gpu/drm/sti/sti_hdmi.c
index f03d617edc4c..90f8db63c095 100644
--- a/drivers/gpu/drm/sti/sti_hdmi.c
+++ b/drivers/gpu/drm/sti/sti_hdmi.c
@@ -1279,6 +1279,7 @@ static int sti_hdmi_bind(struct device *dev, struct device *master, void *data)
 	drm_bridge_attach(encoder, bridge, NULL);
 
 	connector->encoder = encoder;
+	drm_connector->ddc = hdmi->ddc_adapt;
 
 	drm_connector = (struct drm_connector *)connector;
 
-- 
2.17.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 65+ messages in thread

* [PATCH v4 16/23] drm/mgag200: Provide ddc symlink in connector sysfs directory
       [not found] ` <cover.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
                     ` (2 preceding siblings ...)
  2019-07-11 11:26   ` [PATCH v4 15/23] drm: sti: " Andrzej Pietrasiewicz
@ 2019-07-11 11:26   ` Andrzej Pietrasiewicz
  2019-07-11 17:26     ` Thomas Zimmermann
  2019-07-23  9:07       ` Sam Ravnborg
  2019-07-11 11:26   ` [PATCH v4 17/23] drm/ast: " Andrzej Pietrasiewicz
                     ` (3 subsequent siblings)
  7 siblings, 2 replies; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-11 11:26 UTC (permalink / raw)
  To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
	Maxime Ripard, Ramalingam C, Joonas Lahtinen, Douglas Anderson,
	Andrzej Hajda, Thierry Reding, Laurent Pinchart,
	Benjamin Gaignard, kernel-ZGY8ohtN/8qB+jHODAdFcQ, Fabio Estevam,
	Ville Syrjälä,
	David (ChunMing) Zhou, linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA,
	Joonyoung Shim, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	Vincent Abriou, Rob Clark

Use the ddc pointer provided by the generic connector.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
---
 drivers/gpu/drm/mgag200/mgag200_mode.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c b/drivers/gpu/drm/mgag200/mgag200_mode.c
index a25054015e8c..8fb9444b2142 100644
--- a/drivers/gpu/drm/mgag200/mgag200_mode.c
+++ b/drivers/gpu/drm/mgag200/mgag200_mode.c
@@ -1703,6 +1703,11 @@ static struct drm_connector *mga_vga_init(struct drm_device *dev)
 		return NULL;
 
 	connector = &mga_connector->base;
+	mga_connector->i2c = mgag200_i2c_create(dev);
+	if (!mga_connector->i2c)
+		DRM_ERROR("failed to add ddc bus\n");
+
+	connector->ddc = &mga_connector->i2c->adapter;
 
 	drm_connector_init(dev, connector,
 			   &mga_vga_connector_funcs, DRM_MODE_CONNECTOR_VGA);
@@ -1711,10 +1716,6 @@ static struct drm_connector *mga_vga_init(struct drm_device *dev)
 
 	drm_connector_register(connector);
 
-	mga_connector->i2c = mgag200_i2c_create(dev);
-	if (!mga_connector->i2c)
-		DRM_ERROR("failed to add ddc bus\n");
-
 	return connector;
 }
 
-- 
2.17.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 65+ messages in thread

* [PATCH v4 17/23] drm/ast: Provide ddc symlink in connector sysfs directory
       [not found] ` <cover.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
                     ` (3 preceding siblings ...)
  2019-07-11 11:26   ` [PATCH v4 16/23] drm/mgag200: Provide ddc symlink in " Andrzej Pietrasiewicz
@ 2019-07-11 11:26   ` Andrzej Pietrasiewicz
  2019-07-11 17:27     ` Thomas Zimmermann
  2019-07-23  9:09       ` Sam Ravnborg
  2019-07-11 11:26   ` [PATCH v4 18/23] drm/bridge: dumb-vga-dac: " Andrzej Pietrasiewicz
                     ` (2 subsequent siblings)
  7 siblings, 2 replies; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-11 11:26 UTC (permalink / raw)
  To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
	Maxime Ripard, Ramalingam C, Joonas Lahtinen, Liviu Dudau,
	Douglas Anderson, Andrzej Hajda, Thierry Reding,
	Laurent Pinchart, Benjamin Gaignard,
	kernel-ZGY8ohtN/8qB+jHODAdFcQ, Fabio Estevam,
	Ville Syrjälä,
	David (ChunMing) Zhou, linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA,
	Joonyoung Shim, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	Vincent Abriou

Use the ddc pointer provided by the generic connector.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
---
 drivers/gpu/drm/ast/ast_mode.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
index ffccbef962a4..1ca9bc4aa3bb 100644
--- a/drivers/gpu/drm/ast/ast_mode.c
+++ b/drivers/gpu/drm/ast/ast_mode.c
@@ -890,6 +890,11 @@ static int ast_connector_init(struct drm_device *dev)
 		return -ENOMEM;
 
 	connector = &ast_connector->base;
+	ast_connector->i2c = ast_i2c_create(dev);
+	if (!ast_connector->i2c)
+		DRM_ERROR("failed to add ddc bus for connector\n");
+
+	connector->ddc = &ast_connector->i2c->adapter;
 	drm_connector_init(dev, connector, &ast_connector_funcs, DRM_MODE_CONNECTOR_VGA);
 
 	drm_connector_helper_add(connector, &ast_connector_helper_funcs);
@@ -904,10 +909,6 @@ static int ast_connector_init(struct drm_device *dev)
 	encoder = list_first_entry(&dev->mode_config.encoder_list, struct drm_encoder, head);
 	drm_connector_attach_encoder(connector, encoder);
 
-	ast_connector->i2c = ast_i2c_create(dev);
-	if (!ast_connector->i2c)
-		DRM_ERROR("failed to add ddc bus for connector\n");
-
 	return 0;
 }
 
-- 
2.17.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 65+ messages in thread

* [PATCH v4 18/23] drm/bridge: dumb-vga-dac: Provide ddc symlink in connector sysfs directory
       [not found] ` <cover.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
                     ` (4 preceding siblings ...)
  2019-07-11 11:26   ` [PATCH v4 17/23] drm/ast: " Andrzej Pietrasiewicz
@ 2019-07-11 11:26   ` Andrzej Pietrasiewicz
  2019-07-30 12:15     ` Neil Armstrong
  2019-07-11 11:26   ` [PATCH v4 20/23] drm/bridge: ti-tfp410: " Andrzej Pietrasiewicz
  2019-07-11 11:26   ` [PATCH v4 23/23] drm/i915: Provide ddc symlink in hdmi " Andrzej Pietrasiewicz
  7 siblings, 1 reply; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-11 11:26 UTC (permalink / raw)
  To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
	Maxime Ripard, Ramalingam C, Joonas Lahtinen, Douglas Anderson,
	Andrzej Hajda, Thierry Reding, Laurent Pinchart,
	Benjamin Gaignard, kernel-ZGY8ohtN/8qB+jHODAdFcQ, Fabio Estevam,
	Ville Syrjälä,
	David (ChunMing) Zhou, linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA,
	Joonyoung Shim, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	Vincent Abriou, Rob Clark

Use the ddc pointer provided by the generic connector.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
---
 drivers/gpu/drm/bridge/dumb-vga-dac.c | 19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/bridge/dumb-vga-dac.c b/drivers/gpu/drm/bridge/dumb-vga-dac.c
index d32885b906ae..b4cc3238400a 100644
--- a/drivers/gpu/drm/bridge/dumb-vga-dac.c
+++ b/drivers/gpu/drm/bridge/dumb-vga-dac.c
@@ -20,7 +20,6 @@ struct dumb_vga {
 	struct drm_bridge	bridge;
 	struct drm_connector	connector;
 
-	struct i2c_adapter	*ddc;
 	struct regulator	*vdd;
 };
 
@@ -42,10 +41,10 @@ static int dumb_vga_get_modes(struct drm_connector *connector)
 	struct edid *edid;
 	int ret;
 
-	if (IS_ERR(vga->ddc))
+	if (IS_ERR(vga->connector.ddc))
 		goto fallback;
 
-	edid = drm_get_edid(connector, vga->ddc);
+	edid = drm_get_edid(connector, vga->connector.ddc);
 	if (!edid) {
 		DRM_INFO("EDID readout failed, falling back to standard modes\n");
 		goto fallback;
@@ -84,7 +83,7 @@ dumb_vga_connector_detect(struct drm_connector *connector, bool force)
 	 * wire the DDC pins, or the I2C bus might not be working at
 	 * all.
 	 */
-	if (!IS_ERR(vga->ddc) && drm_probe_ddc(vga->ddc))
+	if (!IS_ERR(vga->connector.ddc) && drm_probe_ddc(vga->connector.ddc))
 		return connector_status_connected;
 
 	return connector_status_unknown;
@@ -190,14 +189,14 @@ static int dumb_vga_probe(struct platform_device *pdev)
 		dev_dbg(&pdev->dev, "No vdd regulator found: %d\n", ret);
 	}
 
-	vga->ddc = dumb_vga_retrieve_ddc(&pdev->dev);
-	if (IS_ERR(vga->ddc)) {
-		if (PTR_ERR(vga->ddc) == -ENODEV) {
+	vga->connector.ddc = dumb_vga_retrieve_ddc(&pdev->dev);
+	if (IS_ERR(vga->connector.ddc)) {
+		if (PTR_ERR(vga->connector.ddc) == -ENODEV) {
 			dev_dbg(&pdev->dev,
 				"No i2c bus specified. Disabling EDID readout\n");
 		} else {
 			dev_err(&pdev->dev, "Couldn't retrieve i2c bus\n");
-			return PTR_ERR(vga->ddc);
+			return PTR_ERR(vga->connector.ddc);
 		}
 	}
 
@@ -216,8 +215,8 @@ static int dumb_vga_remove(struct platform_device *pdev)
 
 	drm_bridge_remove(&vga->bridge);
 
-	if (!IS_ERR(vga->ddc))
-		i2c_put_adapter(vga->ddc);
+	if (!IS_ERR(vga->connector.ddc))
+		i2c_put_adapter(vga->connector.ddc);
 
 	return 0;
 }
-- 
2.17.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 65+ messages in thread

* [PATCH v4 19/23] drm/bridge: dw-hdmi: Provide ddc symlink in connector sysfs directory
  2019-07-11 11:26 [PATCH v4 00/23] Associate ddc adapters with connectors Andrzej Pietrasiewicz
                   ` (11 preceding siblings ...)
  2019-07-11 11:26 ` [PATCH v4 14/23] drm/tilcdc: Provide ddc symlink in " Andrzej Pietrasiewicz
@ 2019-07-11 11:26 ` Andrzej Pietrasiewicz
       [not found]   ` <ec88a18feffa37eceb947bb83a6f9f51fb575566.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
  2019-07-11 11:26 ` [PATCH v4 21/23] drm/amdgpu: " Andrzej Pietrasiewicz
                   ` (4 subsequent siblings)
  17 siblings, 1 reply; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-11 11:26 UTC (permalink / raw)
  To: dri-devel
  Cc: Sam Ravnborg, Neil Armstrong, Maxime Ripard, Douglas Anderson,
	Thierry Reding, Laurent Pinchart, kernel, linux-samsung-soc,
	linux-rockchip, Vincent Abriou, Krzysztof Kozlowski,
	Jonathan Hunter, David Airlie, Chen-Yu Tsai, Kukjin Kim,
	NXP Linux Team, Dave Airlie, intel-gfx, freedreno, linux-tegra,
	Jonas Karlman, linux-arm-msm, Mamta Shukla, linux-mediatek,
	Jyri Sarha

Use the ddc pointer provided by the generic connector.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
---
 drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 40 +++++++++++------------
 1 file changed, 20 insertions(+), 20 deletions(-)

diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
index c6490949d9db..0b9c9f2619da 100644
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
@@ -161,7 +161,6 @@ struct dw_hdmi {
 
 	struct drm_display_mode previous_mode;
 
-	struct i2c_adapter *ddc;
 	void __iomem *regs;
 	bool sink_is_hdmi;
 	bool sink_has_audio;
@@ -1118,7 +1117,7 @@ static bool dw_hdmi_support_scdc(struct dw_hdmi *hdmi)
 		return false;
 
 	/* Disable if no DDC bus */
-	if (!hdmi->ddc)
+	if (!hdmi->connector.ddc)
 		return false;
 
 	/* Disable if SCDC is not supported, or if an HF-VSDB block is absent */
@@ -1156,10 +1155,11 @@ void dw_hdmi_set_high_tmds_clock_ratio(struct dw_hdmi *hdmi)
 
 	/* Control for TMDS Bit Period/TMDS Clock-Period Ratio */
 	if (dw_hdmi_support_scdc(hdmi)) {
+		struct i2c_adapter *ddc = hdmi->connector.ddc;
 		if (mtmdsclock > HDMI14_MAX_TMDSCLK)
-			drm_scdc_set_high_tmds_clock_ratio(hdmi->ddc, 1);
+			drm_scdc_set_high_tmds_clock_ratio(ddc, 1);
 		else
-			drm_scdc_set_high_tmds_clock_ratio(hdmi->ddc, 0);
+			drm_scdc_set_high_tmds_clock_ratio(ddc, 0);
 	}
 }
 EXPORT_SYMBOL_GPL(dw_hdmi_set_high_tmds_clock_ratio);
@@ -1750,6 +1750,7 @@ static void hdmi_av_composer(struct dw_hdmi *hdmi,
 	if (dw_hdmi_support_scdc(hdmi)) {
 		if (vmode->mtmdsclock > HDMI14_MAX_TMDSCLK ||
 		    hdmi_info->scdc.scrambling.low_rates) {
+			struct i2c_adapter *ddc = hdmi->connector.ddc;
 			/*
 			 * HDMI2.0 Specifies the following procedure:
 			 * After the Source Device has determined that
@@ -1759,13 +1760,12 @@ static void hdmi_av_composer(struct dw_hdmi *hdmi,
 			 * Source Devices compliant shall set the
 			 * Source Version = 1.
 			 */
-			drm_scdc_readb(hdmi->ddc, SCDC_SINK_VERSION,
-				       &bytes);
-			drm_scdc_writeb(hdmi->ddc, SCDC_SOURCE_VERSION,
+			drm_scdc_readb(ddc, SCDC_SINK_VERSION, &bytes);
+			drm_scdc_writeb(ddc, SCDC_SOURCE_VERSION,
 				min_t(u8, bytes, SCDC_MIN_SOURCE_VERSION));
 
 			/* Enabled Scrambling in the Sink */
-			drm_scdc_set_scrambling(hdmi->ddc, 1);
+			drm_scdc_set_scrambling(hdmi->connector.ddc, 1);
 
 			/*
 			 * To activate the scrambler feature, you must ensure
@@ -1781,7 +1781,7 @@ static void hdmi_av_composer(struct dw_hdmi *hdmi,
 			hdmi_writeb(hdmi, 0, HDMI_FC_SCRAMBLER_CTRL);
 			hdmi_writeb(hdmi, (u8)~HDMI_MC_SWRSTZ_TMDSSWRST_REQ,
 				    HDMI_MC_SWRSTZ);
-			drm_scdc_set_scrambling(hdmi->ddc, 0);
+			drm_scdc_set_scrambling(hdmi->connector.ddc, 0);
 		}
 	}
 
@@ -2127,10 +2127,10 @@ static int dw_hdmi_connector_get_modes(struct drm_connector *connector)
 	struct edid *edid;
 	int ret = 0;
 
-	if (!hdmi->ddc)
+	if (!hdmi->connector.ddc)
 		return 0;
 
-	edid = drm_get_edid(connector, hdmi->ddc);
+	edid = drm_get_edid(connector, hdmi->connector.ddc);
 	if (edid) {
 		dev_dbg(hdmi->dev, "got edid: width[%d] x height[%d]\n",
 			edid->width_cm, edid->height_cm);
@@ -2548,9 +2548,9 @@ __dw_hdmi_probe(struct platform_device *pdev,
 
 	ddc_node = of_parse_phandle(np, "ddc-i2c-bus", 0);
 	if (ddc_node) {
-		hdmi->ddc = of_get_i2c_adapter_by_node(ddc_node);
+		hdmi->connector.ddc = of_get_i2c_adapter_by_node(ddc_node);
 		of_node_put(ddc_node);
-		if (!hdmi->ddc) {
+		if (!hdmi->connector.ddc) {
 			dev_dbg(hdmi->dev, "failed to read ddc node\n");
 			return ERR_PTR(-EPROBE_DEFER);
 		}
@@ -2689,7 +2689,7 @@ __dw_hdmi_probe(struct platform_device *pdev,
 	hdmi_init_clk_regenerator(hdmi);
 
 	/* If DDC bus is not specified, try to register HDMI I2C bus */
-	if (!hdmi->ddc) {
+	if (!hdmi->connector.ddc) {
 		/* Look for (optional) stuff related to unwedging */
 		hdmi->pinctrl = devm_pinctrl_get(dev);
 		if (!IS_ERR(hdmi->pinctrl)) {
@@ -2708,9 +2708,9 @@ __dw_hdmi_probe(struct platform_device *pdev,
 			}
 		}
 
-		hdmi->ddc = dw_hdmi_i2c_adapter(hdmi);
-		if (IS_ERR(hdmi->ddc))
-			hdmi->ddc = NULL;
+		hdmi->connector.ddc = dw_hdmi_i2c_adapter(hdmi);
+		if (IS_ERR(hdmi->connector.ddc))
+			hdmi->connector.ddc = NULL;
 	}
 
 	hdmi->bridge.driver_private = hdmi;
@@ -2776,7 +2776,7 @@ __dw_hdmi_probe(struct platform_device *pdev,
 err_iahb:
 	if (hdmi->i2c) {
 		i2c_del_adapter(&hdmi->i2c->adap);
-		hdmi->ddc = NULL;
+		hdmi->connector.ddc = NULL;
 	}
 
 	if (hdmi->cec_notifier)
@@ -2788,7 +2788,7 @@ __dw_hdmi_probe(struct platform_device *pdev,
 err_isfr:
 	clk_disable_unprepare(hdmi->isfr_clk);
 err_res:
-	i2c_put_adapter(hdmi->ddc);
+	i2c_put_adapter(hdmi->connector.ddc);
 
 	return ERR_PTR(ret);
 }
@@ -2814,7 +2814,7 @@ static void __dw_hdmi_remove(struct dw_hdmi *hdmi)
 	if (hdmi->i2c)
 		i2c_del_adapter(&hdmi->i2c->adap);
 	else
-		i2c_put_adapter(hdmi->ddc);
+		i2c_put_adapter(hdmi->connector.ddc);
 }
 
 /* -----------------------------------------------------------------------------
-- 
2.17.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 65+ messages in thread

* [PATCH v4 20/23] drm/bridge: ti-tfp410: Provide ddc symlink in connector sysfs directory
       [not found] ` <cover.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
                     ` (5 preceding siblings ...)
  2019-07-11 11:26   ` [PATCH v4 18/23] drm/bridge: dumb-vga-dac: " Andrzej Pietrasiewicz
@ 2019-07-11 11:26   ` Andrzej Pietrasiewicz
  2019-07-30 12:25     ` Neil Armstrong
  2019-07-11 11:26   ` [PATCH v4 23/23] drm/i915: Provide ddc symlink in hdmi " Andrzej Pietrasiewicz
  7 siblings, 1 reply; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-11 11:26 UTC (permalink / raw)
  To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
	Maxime Ripard, Ramalingam C, Joonas Lahtinen, Douglas Anderson,
	Andrzej Hajda, Thierry Reding, Laurent Pinchart,
	Benjamin Gaignard, kernel-ZGY8ohtN/8qB+jHODAdFcQ, Fabio Estevam,
	Ville Syrjälä,
	David (ChunMing) Zhou, linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA,
	Joonyoung Shim, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	Vincent Abriou, Rob Clark

Use the ddc pointer provided by the generic connector.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
---
 drivers/gpu/drm/bridge/ti-tfp410.c | 19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/bridge/ti-tfp410.c b/drivers/gpu/drm/bridge/ti-tfp410.c
index dbf35c7bc85e..e55358f0a5ba 100644
--- a/drivers/gpu/drm/bridge/ti-tfp410.c
+++ b/drivers/gpu/drm/bridge/ti-tfp410.c
@@ -26,7 +26,6 @@ struct tfp410 {
 	unsigned int		connector_type;
 
 	u32			bus_format;
-	struct i2c_adapter	*ddc;
 	struct gpio_desc	*hpd;
 	int			hpd_irq;
 	struct delayed_work	hpd_work;
@@ -55,10 +54,10 @@ static int tfp410_get_modes(struct drm_connector *connector)
 	struct edid *edid;
 	int ret;
 
-	if (!dvi->ddc)
+	if (!dvi->connector.ddc)
 		goto fallback;
 
-	edid = drm_get_edid(connector, dvi->ddc);
+	edid = drm_get_edid(connector, dvi->connector.ddc);
 	if (!edid) {
 		DRM_INFO("EDID read failed. Fallback to standard modes\n");
 		goto fallback;
@@ -98,8 +97,8 @@ tfp410_connector_detect(struct drm_connector *connector, bool force)
 			return connector_status_disconnected;
 	}
 
-	if (dvi->ddc) {
-		if (drm_probe_ddc(dvi->ddc))
+	if (dvi->connector.ddc) {
+		if (drm_probe_ddc(dvi->connector.ddc))
 			return connector_status_connected;
 		else
 			return connector_status_disconnected;
@@ -297,8 +296,8 @@ static int tfp410_get_connector_properties(struct tfp410 *dvi)
 	if (!ddc_phandle)
 		goto fail;
 
-	dvi->ddc = of_get_i2c_adapter_by_node(ddc_phandle);
-	if (dvi->ddc)
+	dvi->connector.ddc = of_get_i2c_adapter_by_node(ddc_phandle);
+	if (dvi->connector.ddc)
 		dev_info(dvi->dev, "Connector's ddc i2c bus found\n");
 	else
 		ret = -EPROBE_DEFER;
@@ -367,7 +366,7 @@ static int tfp410_init(struct device *dev, bool i2c)
 
 	return 0;
 fail:
-	i2c_put_adapter(dvi->ddc);
+	i2c_put_adapter(dvi->connector.ddc);
 	if (dvi->hpd)
 		gpiod_put(dvi->hpd);
 	return ret;
@@ -382,8 +381,8 @@ static int tfp410_fini(struct device *dev)
 
 	drm_bridge_remove(&dvi->bridge);
 
-	if (dvi->ddc)
-		i2c_put_adapter(dvi->ddc);
+	if (dvi->connector.ddc)
+		i2c_put_adapter(dvi->connector.ddc);
 	if (dvi->hpd)
 		gpiod_put(dvi->hpd);
 
-- 
2.17.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 65+ messages in thread

* [PATCH v4 21/23] drm/amdgpu: Provide ddc symlink in connector sysfs directory
  2019-07-11 11:26 [PATCH v4 00/23] Associate ddc adapters with connectors Andrzej Pietrasiewicz
                   ` (12 preceding siblings ...)
  2019-07-11 11:26 ` [PATCH v4 19/23] drm/bridge: dw-hdmi: " Andrzej Pietrasiewicz
@ 2019-07-11 11:26 ` Andrzej Pietrasiewicz
  2019-07-11 11:26 ` [PATCH v4 22/23] drm/radeon: " Andrzej Pietrasiewicz
                   ` (3 subsequent siblings)
  17 siblings, 0 replies; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-11 11:26 UTC (permalink / raw)
  To: dri-devel
  Cc: Sam Ravnborg, Neil Armstrong, Maxime Ripard, Douglas Anderson,
	Thierry Reding, Laurent Pinchart, kernel, linux-samsung-soc,
	linux-rockchip, Oleksandr Andrushchenko, Vincent Abriou,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie, intel-gfx, freedreno,
	linux-tegra, Jonas Karlman, linux-arm-msm, Mamta Shukla

Use the ddc pointer provided by the generic connector.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
---
 .../gpu/drm/amd/amdgpu/amdgpu_connectors.c    | 56 ++++++++++++-------
 1 file changed, 36 insertions(+), 20 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
index 73b2ede773d3..e119d4c1f724 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
@@ -1574,10 +1574,12 @@ amdgpu_connector_add(struct amdgpu_device *adev,
 		amdgpu_connector->con_priv = amdgpu_dig_connector;
 		if (i2c_bus->valid) {
 			amdgpu_connector->ddc_bus = amdgpu_i2c_lookup(adev, i2c_bus);
-			if (amdgpu_connector->ddc_bus)
+			if (amdgpu_connector->ddc_bus) {
 				has_aux = true;
-			else
+				connector->ddc = &amdgpu_connector->ddc_bus->adapter;
+			} else {
 				DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+			}
 		}
 		switch (connector_type) {
 		case DRM_MODE_CONNECTOR_VGA:
@@ -1659,13 +1661,15 @@ amdgpu_connector_add(struct amdgpu_device *adev,
 	} else {
 		switch (connector_type) {
 		case DRM_MODE_CONNECTOR_VGA:
-			drm_connector_init(dev, &amdgpu_connector->base, &amdgpu_connector_vga_funcs, connector_type);
-			drm_connector_helper_add(&amdgpu_connector->base, &amdgpu_connector_vga_helper_funcs);
 			if (i2c_bus->valid) {
 				amdgpu_connector->ddc_bus = amdgpu_i2c_lookup(adev, i2c_bus);
 				if (!amdgpu_connector->ddc_bus)
 					DRM_ERROR("VGA: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+				else
+					connector->ddc = &amdgpu_connector->ddc_bus->adapter;
 			}
+			drm_connector_init(dev, &amdgpu_connector->base, &amdgpu_connector_vga_funcs, connector_type);
+			drm_connector_helper_add(&amdgpu_connector->base, &amdgpu_connector_vga_helper_funcs);
 			amdgpu_connector->dac_load_detect = true;
 			drm_object_attach_property(&amdgpu_connector->base.base,
 						      adev->mode_info.load_detect_property,
@@ -1679,13 +1683,15 @@ amdgpu_connector_add(struct amdgpu_device *adev,
 			connector->doublescan_allowed = true;
 			break;
 		case DRM_MODE_CONNECTOR_DVIA:
-			drm_connector_init(dev, &amdgpu_connector->base, &amdgpu_connector_vga_funcs, connector_type);
-			drm_connector_helper_add(&amdgpu_connector->base, &amdgpu_connector_vga_helper_funcs);
 			if (i2c_bus->valid) {
 				amdgpu_connector->ddc_bus = amdgpu_i2c_lookup(adev, i2c_bus);
 				if (!amdgpu_connector->ddc_bus)
 					DRM_ERROR("DVIA: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+				else
+					connector->ddc = &amdgpu_connector->ddc_bus->adapter;
 			}
+			drm_connector_init(dev, &amdgpu_connector->base, &amdgpu_connector_vga_funcs, connector_type);
+			drm_connector_helper_add(&amdgpu_connector->base, &amdgpu_connector_vga_helper_funcs);
 			amdgpu_connector->dac_load_detect = true;
 			drm_object_attach_property(&amdgpu_connector->base.base,
 						      adev->mode_info.load_detect_property,
@@ -1704,13 +1710,15 @@ amdgpu_connector_add(struct amdgpu_device *adev,
 			if (!amdgpu_dig_connector)
 				goto failed;
 			amdgpu_connector->con_priv = amdgpu_dig_connector;
-			drm_connector_init(dev, &amdgpu_connector->base, &amdgpu_connector_dvi_funcs, connector_type);
-			drm_connector_helper_add(&amdgpu_connector->base, &amdgpu_connector_dvi_helper_funcs);
 			if (i2c_bus->valid) {
 				amdgpu_connector->ddc_bus = amdgpu_i2c_lookup(adev, i2c_bus);
 				if (!amdgpu_connector->ddc_bus)
 					DRM_ERROR("DVI: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+				else
+					connector->ddc = &amdgpu_connector->ddc_bus->adapter;
 			}
+			drm_connector_init(dev, &amdgpu_connector->base, &amdgpu_connector_dvi_funcs, connector_type);
+			drm_connector_helper_add(&amdgpu_connector->base, &amdgpu_connector_dvi_helper_funcs);
 			subpixel_order = SubPixelHorizontalRGB;
 			drm_object_attach_property(&amdgpu_connector->base.base,
 						      adev->mode_info.coherent_mode_property,
@@ -1754,13 +1762,15 @@ amdgpu_connector_add(struct amdgpu_device *adev,
 			if (!amdgpu_dig_connector)
 				goto failed;
 			amdgpu_connector->con_priv = amdgpu_dig_connector;
-			drm_connector_init(dev, &amdgpu_connector->base, &amdgpu_connector_dvi_funcs, connector_type);
-			drm_connector_helper_add(&amdgpu_connector->base, &amdgpu_connector_dvi_helper_funcs);
 			if (i2c_bus->valid) {
 				amdgpu_connector->ddc_bus = amdgpu_i2c_lookup(adev, i2c_bus);
 				if (!amdgpu_connector->ddc_bus)
 					DRM_ERROR("HDMI: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+				else
+					connector->ddc = &amdgpu_connector->ddc_bus->adapter;
 			}
+			drm_connector_init(dev, &amdgpu_connector->base, &amdgpu_connector_dvi_funcs, connector_type);
+			drm_connector_helper_add(&amdgpu_connector->base, &amdgpu_connector_dvi_helper_funcs);
 			drm_object_attach_property(&amdgpu_connector->base.base,
 						      adev->mode_info.coherent_mode_property,
 						      1);
@@ -1796,15 +1806,17 @@ amdgpu_connector_add(struct amdgpu_device *adev,
 			if (!amdgpu_dig_connector)
 				goto failed;
 			amdgpu_connector->con_priv = amdgpu_dig_connector;
-			drm_connector_init(dev, &amdgpu_connector->base, &amdgpu_connector_dp_funcs, connector_type);
-			drm_connector_helper_add(&amdgpu_connector->base, &amdgpu_connector_dp_helper_funcs);
 			if (i2c_bus->valid) {
 				amdgpu_connector->ddc_bus = amdgpu_i2c_lookup(adev, i2c_bus);
-				if (amdgpu_connector->ddc_bus)
+				if (amdgpu_connector->ddc_bus) {
 					has_aux = true;
-				else
+					connector->ddc = &amdgpu_connector->ddc_bus->adapter;
+				} else {
 					DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+				}
 			}
+			drm_connector_init(dev, &amdgpu_connector->base, &amdgpu_connector_dp_funcs, connector_type);
+			drm_connector_helper_add(&amdgpu_connector->base, &amdgpu_connector_dp_helper_funcs);
 			subpixel_order = SubPixelHorizontalRGB;
 			drm_object_attach_property(&amdgpu_connector->base.base,
 						      adev->mode_info.coherent_mode_property,
@@ -1838,15 +1850,17 @@ amdgpu_connector_add(struct amdgpu_device *adev,
 			if (!amdgpu_dig_connector)
 				goto failed;
 			amdgpu_connector->con_priv = amdgpu_dig_connector;
-			drm_connector_init(dev, &amdgpu_connector->base, &amdgpu_connector_edp_funcs, connector_type);
-			drm_connector_helper_add(&amdgpu_connector->base, &amdgpu_connector_dp_helper_funcs);
 			if (i2c_bus->valid) {
 				amdgpu_connector->ddc_bus = amdgpu_i2c_lookup(adev, i2c_bus);
-				if (amdgpu_connector->ddc_bus)
+				if (amdgpu_connector->ddc_bus) {
 					has_aux = true;
-				else
+					connector->ddc = &amdgpu_connector->ddc_bus->adapter;
+				} else {
 					DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+				}
 			}
+			drm_connector_init(dev, &amdgpu_connector->base, &amdgpu_connector_edp_funcs, connector_type);
+			drm_connector_helper_add(&amdgpu_connector->base, &amdgpu_connector_dp_helper_funcs);
 			drm_object_attach_property(&amdgpu_connector->base.base,
 						      dev->mode_config.scaling_mode_property,
 						      DRM_MODE_SCALE_FULLSCREEN);
@@ -1859,13 +1873,15 @@ amdgpu_connector_add(struct amdgpu_device *adev,
 			if (!amdgpu_dig_connector)
 				goto failed;
 			amdgpu_connector->con_priv = amdgpu_dig_connector;
-			drm_connector_init(dev, &amdgpu_connector->base, &amdgpu_connector_lvds_funcs, connector_type);
-			drm_connector_helper_add(&amdgpu_connector->base, &amdgpu_connector_lvds_helper_funcs);
 			if (i2c_bus->valid) {
 				amdgpu_connector->ddc_bus = amdgpu_i2c_lookup(adev, i2c_bus);
 				if (!amdgpu_connector->ddc_bus)
 					DRM_ERROR("LVDS: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+				else
+					connector->ddc = &amdgpu_connector->ddc_bus->adapter;
 			}
+			drm_connector_init(dev, &amdgpu_connector->base, &amdgpu_connector_lvds_funcs, connector_type);
+			drm_connector_helper_add(&amdgpu_connector->base, &amdgpu_connector_lvds_helper_funcs);
 			drm_object_attach_property(&amdgpu_connector->base.base,
 						      dev->mode_config.scaling_mode_property,
 						      DRM_MODE_SCALE_FULLSCREEN);
-- 
2.17.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 65+ messages in thread

* [PATCH v4 22/23] drm/radeon: Provide ddc symlink in connector sysfs directory
  2019-07-11 11:26 [PATCH v4 00/23] Associate ddc adapters with connectors Andrzej Pietrasiewicz
                   ` (13 preceding siblings ...)
  2019-07-11 11:26 ` [PATCH v4 21/23] drm/amdgpu: " Andrzej Pietrasiewicz
@ 2019-07-11 11:26 ` Andrzej Pietrasiewicz
       [not found] ` <cover.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
                   ` (2 subsequent siblings)
  17 siblings, 0 replies; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-11 11:26 UTC (permalink / raw)
  To: dri-devel
  Cc: Sam Ravnborg, Neil Armstrong, Maxime Ripard, Douglas Anderson,
	Thierry Reding, Laurent Pinchart, kernel, linux-samsung-soc,
	linux-rockchip, Vincent Abriou, Krzysztof Kozlowski,
	Jonathan Hunter, David Airlie, Chen-Yu Tsai, Kukjin Kim,
	NXP Linux Team, Dave Airlie, intel-gfx, freedreno, linux-tegra,
	Jonas Karlman, linux-arm-msm, Mamta Shukla, linux-mediatek,
	Jyri Sarha

Use the ddc pointer provided by the generic connector.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
---
 drivers/gpu/drm/radeon/radeon_connectors.c | 80 ++++++++++++++--------
 1 file changed, 52 insertions(+), 28 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
index c60d1a44d22a..ee7430d0516e 100644
--- a/drivers/gpu/drm/radeon/radeon_connectors.c
+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
@@ -1947,10 +1947,12 @@ radeon_add_atom_connector(struct drm_device *dev,
 		radeon_connector->con_priv = radeon_dig_connector;
 		if (i2c_bus->valid) {
 			radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
-			if (radeon_connector->ddc_bus)
+			if (radeon_connector->ddc_bus) {
 				has_aux = true;
-			else
+				connector->ddc = &radeon_connector->ddc_bus->adapter;
+			} else {
 				DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+			}
 		}
 		switch (connector_type) {
 		case DRM_MODE_CONNECTOR_VGA:
@@ -2042,13 +2044,15 @@ radeon_add_atom_connector(struct drm_device *dev,
 	} else {
 		switch (connector_type) {
 		case DRM_MODE_CONNECTOR_VGA:
-			drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type);
-			drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs);
 			if (i2c_bus->valid) {
 				radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
 				if (!radeon_connector->ddc_bus)
 					DRM_ERROR("VGA: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+				else
+					connector->ddc = &radeon_connector->ddc_bus->adapter;
 			}
+			drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type);
+			drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs);
 			radeon_connector->dac_load_detect = true;
 			drm_object_attach_property(&radeon_connector->base.base,
 						      rdev->mode_info.load_detect_property,
@@ -2067,13 +2071,15 @@ radeon_add_atom_connector(struct drm_device *dev,
 			connector->doublescan_allowed = true;
 			break;
 		case DRM_MODE_CONNECTOR_DVIA:
-			drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type);
-			drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs);
 			if (i2c_bus->valid) {
 				radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
 				if (!radeon_connector->ddc_bus)
 					DRM_ERROR("DVIA: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+				else
+					connector->ddc = &radeon_connector->ddc_bus->adapter;
 			}
+			drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type);
+			drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs);
 			radeon_connector->dac_load_detect = true;
 			drm_object_attach_property(&radeon_connector->base.base,
 						      rdev->mode_info.load_detect_property,
@@ -2098,13 +2104,15 @@ radeon_add_atom_connector(struct drm_device *dev,
 				goto failed;
 			radeon_dig_connector->igp_lane_info = igp_lane_info;
 			radeon_connector->con_priv = radeon_dig_connector;
-			drm_connector_init(dev, &radeon_connector->base, &radeon_dvi_connector_funcs, connector_type);
-			drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs);
 			if (i2c_bus->valid) {
 				radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
 				if (!radeon_connector->ddc_bus)
 					DRM_ERROR("DVI: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+				else
+					connector->ddc = &radeon_connector->ddc_bus->adapter;
 			}
+			drm_connector_init(dev, &radeon_connector->base, &radeon_dvi_connector_funcs, connector_type);
+			drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs);
 			subpixel_order = SubPixelHorizontalRGB;
 			drm_object_attach_property(&radeon_connector->base.base,
 						      rdev->mode_info.coherent_mode_property,
@@ -2155,13 +2163,15 @@ radeon_add_atom_connector(struct drm_device *dev,
 				goto failed;
 			radeon_dig_connector->igp_lane_info = igp_lane_info;
 			radeon_connector->con_priv = radeon_dig_connector;
-			drm_connector_init(dev, &radeon_connector->base, &radeon_dvi_connector_funcs, connector_type);
-			drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs);
 			if (i2c_bus->valid) {
 				radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
 				if (!radeon_connector->ddc_bus)
 					DRM_ERROR("HDMI: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+				else
+					connector->ddc = &radeon_connector->ddc_bus->adapter;
 			}
+			drm_connector_init(dev, &radeon_connector->base, &radeon_dvi_connector_funcs, connector_type);
+			drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs);
 			drm_object_attach_property(&radeon_connector->base.base,
 						      rdev->mode_info.coherent_mode_property,
 						      1);
@@ -2205,15 +2215,17 @@ radeon_add_atom_connector(struct drm_device *dev,
 				goto failed;
 			radeon_dig_connector->igp_lane_info = igp_lane_info;
 			radeon_connector->con_priv = radeon_dig_connector;
-			drm_connector_init(dev, &radeon_connector->base, &radeon_dp_connector_funcs, connector_type);
-			drm_connector_helper_add(&radeon_connector->base, &radeon_dp_connector_helper_funcs);
 			if (i2c_bus->valid) {
 				radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
-				if (radeon_connector->ddc_bus)
+				if (radeon_connector->ddc_bus) {
 					has_aux = true;
-				else
+					connector->ddc = &radeon_connector->ddc_bus->adapter;
+				} else {
 					DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+				}
 			}
+			drm_connector_init(dev, &radeon_connector->base, &radeon_dp_connector_funcs, connector_type);
+			drm_connector_helper_add(&radeon_connector->base, &radeon_dp_connector_helper_funcs);
 			subpixel_order = SubPixelHorizontalRGB;
 			drm_object_attach_property(&radeon_connector->base.base,
 						      rdev->mode_info.coherent_mode_property,
@@ -2255,15 +2267,17 @@ radeon_add_atom_connector(struct drm_device *dev,
 				goto failed;
 			radeon_dig_connector->igp_lane_info = igp_lane_info;
 			radeon_connector->con_priv = radeon_dig_connector;
-			drm_connector_init(dev, &radeon_connector->base, &radeon_edp_connector_funcs, connector_type);
-			drm_connector_helper_add(&radeon_connector->base, &radeon_dp_connector_helper_funcs);
 			if (i2c_bus->valid) {
 				radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
-				if (radeon_connector->ddc_bus)
+				if (radeon_connector->ddc_bus) {
 					has_aux = true;
-				else
+					connector->ddc = &radeon_connector->ddc_bus->adapter;
+				} else {
 					DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+				}
 			}
+			drm_connector_init(dev, &radeon_connector->base, &radeon_edp_connector_funcs, connector_type);
+			drm_connector_helper_add(&radeon_connector->base, &radeon_dp_connector_helper_funcs);
 			drm_object_attach_property(&radeon_connector->base.base,
 						      dev->mode_config.scaling_mode_property,
 						      DRM_MODE_SCALE_FULLSCREEN);
@@ -2294,13 +2308,15 @@ radeon_add_atom_connector(struct drm_device *dev,
 				goto failed;
 			radeon_dig_connector->igp_lane_info = igp_lane_info;
 			radeon_connector->con_priv = radeon_dig_connector;
-			drm_connector_init(dev, &radeon_connector->base, &radeon_lvds_connector_funcs, connector_type);
-			drm_connector_helper_add(&radeon_connector->base, &radeon_lvds_connector_helper_funcs);
 			if (i2c_bus->valid) {
 				radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
 				if (!radeon_connector->ddc_bus)
 					DRM_ERROR("LVDS: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+				else
+					connector->ddc = &radeon_connector->ddc_bus->adapter;
 			}
+			drm_connector_init(dev, &radeon_connector->base, &radeon_lvds_connector_funcs, connector_type);
+			drm_connector_helper_add(&radeon_connector->base, &radeon_lvds_connector_helper_funcs);
 			drm_object_attach_property(&radeon_connector->base.base,
 						      dev->mode_config.scaling_mode_property,
 						      DRM_MODE_SCALE_FULLSCREEN);
@@ -2378,13 +2394,15 @@ radeon_add_legacy_connector(struct drm_device *dev,
 
 	switch (connector_type) {
 	case DRM_MODE_CONNECTOR_VGA:
-		drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type);
-		drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs);
 		if (i2c_bus->valid) {
 			radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
 			if (!radeon_connector->ddc_bus)
 				DRM_ERROR("VGA: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+			else
+				connector->ddc = &radeon_connector->ddc_bus->adapter;
 		}
+		drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type);
+		drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs);
 		radeon_connector->dac_load_detect = true;
 		drm_object_attach_property(&radeon_connector->base.base,
 					      rdev->mode_info.load_detect_property,
@@ -2395,13 +2413,15 @@ radeon_add_legacy_connector(struct drm_device *dev,
 		connector->doublescan_allowed = true;
 		break;
 	case DRM_MODE_CONNECTOR_DVIA:
-		drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type);
-		drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs);
 		if (i2c_bus->valid) {
 			radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
 			if (!radeon_connector->ddc_bus)
 				DRM_ERROR("DVIA: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+			else
+				connector->ddc = &radeon_connector->ddc_bus->adapter;
 		}
+		drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type);
+		drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs);
 		radeon_connector->dac_load_detect = true;
 		drm_object_attach_property(&radeon_connector->base.base,
 					      rdev->mode_info.load_detect_property,
@@ -2413,13 +2433,15 @@ radeon_add_legacy_connector(struct drm_device *dev,
 		break;
 	case DRM_MODE_CONNECTOR_DVII:
 	case DRM_MODE_CONNECTOR_DVID:
-		drm_connector_init(dev, &radeon_connector->base, &radeon_dvi_connector_funcs, connector_type);
-		drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs);
 		if (i2c_bus->valid) {
 			radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
 			if (!radeon_connector->ddc_bus)
 				DRM_ERROR("DVI: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+			else
+				connector->ddc = &radeon_connector->ddc_bus->adapter;
 		}
+		drm_connector_init(dev, &radeon_connector->base, &radeon_dvi_connector_funcs, connector_type);
+		drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs);
 		if (connector_type == DRM_MODE_CONNECTOR_DVII) {
 			radeon_connector->dac_load_detect = true;
 			drm_object_attach_property(&radeon_connector->base.base,
@@ -2458,13 +2480,15 @@ radeon_add_legacy_connector(struct drm_device *dev,
 		connector->doublescan_allowed = false;
 		break;
 	case DRM_MODE_CONNECTOR_LVDS:
-		drm_connector_init(dev, &radeon_connector->base, &radeon_lvds_connector_funcs, connector_type);
-		drm_connector_helper_add(&radeon_connector->base, &radeon_lvds_connector_helper_funcs);
 		if (i2c_bus->valid) {
 			radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
 			if (!radeon_connector->ddc_bus)
 				DRM_ERROR("LVDS: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+			else
+				connector->ddc = &radeon_connector->ddc_bus->adapter;
 		}
+		drm_connector_init(dev, &radeon_connector->base, &radeon_lvds_connector_funcs, connector_type);
+		drm_connector_helper_add(&radeon_connector->base, &radeon_lvds_connector_helper_funcs);
 		drm_object_attach_property(&radeon_connector->base.base,
 					      dev->mode_config.scaling_mode_property,
 					      DRM_MODE_SCALE_FULLSCREEN);
-- 
2.17.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 65+ messages in thread

* [PATCH v4 23/23] drm/i915: Provide ddc symlink in hdmi connector sysfs directory
       [not found] ` <cover.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
                     ` (6 preceding siblings ...)
  2019-07-11 11:26   ` [PATCH v4 20/23] drm/bridge: ti-tfp410: " Andrzej Pietrasiewicz
@ 2019-07-11 11:26   ` Andrzej Pietrasiewicz
       [not found]     ` <1d9bb3d65127a5093d6e9f9cc62a5c7c7502f61d.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
                       ` (2 more replies)
  7 siblings, 3 replies; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-11 11:26 UTC (permalink / raw)
  To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
	Maxime Ripard, Ramalingam C, Joonas Lahtinen, Douglas Anderson,
	Andrzej Hajda, Thierry Reding, Laurent Pinchart,
	Benjamin Gaignard, kernel-ZGY8ohtN/8qB+jHODAdFcQ, Fabio Estevam,
	Ville Syrjälä,
	David (ChunMing) Zhou, linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA,
	Joonyoung Shim, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	Vincent Abriou, Rob Clark

Use the ddc pointer provided by the generic connector.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
---
 drivers/gpu/drm/i915/display/intel_hdmi.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
index 0ebec69bbbfc..678fa4d1bd4e 100644
--- a/drivers/gpu/drm/i915/display/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
@@ -3094,6 +3094,9 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
 		 intel_dig_port->max_lanes, port_name(port)))
 		return;
 
+	intel_hdmi->ddc_bus = intel_hdmi_ddc_pin(dev_priv, port);
+	connector->ddc = intel_gmbus_get_adapter(dev_priv, intel_hdmi->ddc_bus);
+
 	drm_connector_init(dev, connector, &intel_hdmi_connector_funcs,
 			   DRM_MODE_CONNECTOR_HDMIA);
 	drm_connector_helper_add(connector, &intel_hdmi_connector_helper_funcs);
@@ -3105,8 +3108,6 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
 	if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv))
 		connector->ycbcr_420_allowed = true;
 
-	intel_hdmi->ddc_bus = intel_hdmi_ddc_pin(dev_priv, port);
-
 	if (WARN_ON(port == PORT_A))
 		return;
 	intel_encoder->hpd_pin = intel_hpd_pin_default(dev_priv, port);
-- 
2.17.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 23/23] drm/i915: Provide ddc symlink in hdmi connector sysfs directory
  2019-07-11 11:26   ` [PATCH v4 23/23] drm/i915: Provide ddc symlink in hdmi " Andrzej Pietrasiewicz
       [not found]     ` <1d9bb3d65127a5093d6e9f9cc62a5c7c7502f61d.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
  2019-07-11 11:59     ` Ville Syrjälä
@ 2019-07-11 11:59     ` Ville Syrjälä
  2019-07-11 13:21       ` Daniel Vetter
  2 siblings, 1 reply; 65+ messages in thread
From: Ville Syrjälä @ 2019-07-11 11:59 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz
  Cc: Sam Ravnborg, Neil Armstrong, Maxime Ripard, dri-devel,
	Douglas Anderson, Thierry Reding, Laurent Pinchart, kernel,
	Vincent Abriou, Krzysztof Kozlowski, Jonathan Hunter,
	David Airlie, Chen-Yu Tsai, Kukjin Kim, NXP Linux Team,
	Dave Airlie, Jonas Karlman, Chris, Jyri Sarha, Rodrigo Vivi,
	Matthias Brugger, Thomas Gleixner, Sean Paul,
	Pengutronix Kernel Team

On Thu, Jul 11, 2019 at 01:26:50PM +0200, Andrzej Pietrasiewicz wrote:
> Use the ddc pointer provided by the generic connector.

We already have a symlink via intel_hdmi_create_i2c_symlink(). I guess
we should remove that in favor of the generic one. Oleg?

> 
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> ---
>  drivers/gpu/drm/i915/display/intel_hdmi.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
> index 0ebec69bbbfc..678fa4d1bd4e 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
> @@ -3094,6 +3094,9 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
>  		 intel_dig_port->max_lanes, port_name(port)))
>  		return;
>  
> +	intel_hdmi->ddc_bus = intel_hdmi_ddc_pin(dev_priv, port);
> +	connector->ddc = intel_gmbus_get_adapter(dev_priv, intel_hdmi->ddc_bus);
> +
>  	drm_connector_init(dev, connector, &intel_hdmi_connector_funcs,
>  			   DRM_MODE_CONNECTOR_HDMIA);
>  	drm_connector_helper_add(connector, &intel_hdmi_connector_helper_funcs);
> @@ -3105,8 +3108,6 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
>  	if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv))
>  		connector->ycbcr_420_allowed = true;
>  
> -	intel_hdmi->ddc_bus = intel_hdmi_ddc_pin(dev_priv, port);
> -
>  	if (WARN_ON(port == PORT_A))
>  		return;
>  	intel_encoder->hpd_pin = intel_hpd_pin_default(dev_priv, port);
> -- 
> 2.17.1

-- 
Ville Syrjälä
Intel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 23/23] drm/i915: Provide ddc symlink in hdmi connector sysfs directory
  2019-07-11 11:26   ` [PATCH v4 23/23] drm/i915: Provide ddc symlink in hdmi " Andrzej Pietrasiewicz
       [not found]     ` <1d9bb3d65127a5093d6e9f9cc62a5c7c7502f61d.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
@ 2019-07-11 11:59     ` Ville Syrjälä
  2019-07-11 11:59     ` Ville Syrjälä
  2 siblings, 0 replies; 65+ messages in thread
From: Ville Syrjälä @ 2019-07-11 11:59 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz
  Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
	Maxime Ripard, dri-devel, Douglas Anderson, Andrzej Hajda,
	Laurent Pinchart, Benjamin Gaignard, kernel, Fabio Estevam,
	David (ChunMing) Zhou, Joonyoung Shim, Vincent Abriou,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, CK Hu, Dave Airlie

On Thu, Jul 11, 2019 at 01:26:50PM +0200, Andrzej Pietrasiewicz wrote:
> Use the ddc pointer provided by the generic connector.

We already have a symlink via intel_hdmi_create_i2c_symlink(). I guess
we should remove that in favor of the generic one. Oleg?

> 
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> ---
>  drivers/gpu/drm/i915/display/intel_hdmi.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
> index 0ebec69bbbfc..678fa4d1bd4e 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
> @@ -3094,6 +3094,9 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
>  		 intel_dig_port->max_lanes, port_name(port)))
>  		return;
>  
> +	intel_hdmi->ddc_bus = intel_hdmi_ddc_pin(dev_priv, port);
> +	connector->ddc = intel_gmbus_get_adapter(dev_priv, intel_hdmi->ddc_bus);
> +
>  	drm_connector_init(dev, connector, &intel_hdmi_connector_funcs,
>  			   DRM_MODE_CONNECTOR_HDMIA);
>  	drm_connector_helper_add(connector, &intel_hdmi_connector_helper_funcs);
> @@ -3105,8 +3108,6 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
>  	if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv))
>  		connector->ycbcr_420_allowed = true;
>  
> -	intel_hdmi->ddc_bus = intel_hdmi_ddc_pin(dev_priv, port);
> -
>  	if (WARN_ON(port == PORT_A))
>  		return;
>  	intel_encoder->hpd_pin = intel_hpd_pin_default(dev_priv, port);
> -- 
> 2.17.1

-- 
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 23/23] drm/i915: Provide ddc symlink in hdmi connector sysfs directory
       [not found]     ` <1d9bb3d65127a5093d6e9f9cc62a5c7c7502f61d.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
@ 2019-07-11 11:59       ` Ville Syrjälä
  0 siblings, 0 replies; 65+ messages in thread
From: Ville Syrjälä @ 2019-07-11 11:59 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz
  Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
	Maxime Ripard, Joonas Lahtinen,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Douglas Anderson,
	Andrzej Hajda, Thierry Reding, Laurent Pinchart,
	Benjamin Gaignard, kernel-ZGY8ohtN/8qB+jHODAdFcQ, Fabio Estevam,
	David (ChunMing) Zhou, Joonyoung Shim, Vincent Abriou, Rob Clark,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai

On Thu, Jul 11, 2019 at 01:26:50PM +0200, Andrzej Pietrasiewicz wrote:
> Use the ddc pointer provided by the generic connector.

We already have a symlink via intel_hdmi_create_i2c_symlink(). I guess
we should remove that in favor of the generic one. Oleg?

> 
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> ---
>  drivers/gpu/drm/i915/display/intel_hdmi.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
> index 0ebec69bbbfc..678fa4d1bd4e 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
> @@ -3094,6 +3094,9 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
>  		 intel_dig_port->max_lanes, port_name(port)))
>  		return;
>  
> +	intel_hdmi->ddc_bus = intel_hdmi_ddc_pin(dev_priv, port);
> +	connector->ddc = intel_gmbus_get_adapter(dev_priv, intel_hdmi->ddc_bus);
> +
>  	drm_connector_init(dev, connector, &intel_hdmi_connector_funcs,
>  			   DRM_MODE_CONNECTOR_HDMIA);
>  	drm_connector_helper_add(connector, &intel_hdmi_connector_helper_funcs);
> @@ -3105,8 +3108,6 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
>  	if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv))
>  		connector->ycbcr_420_allowed = true;
>  
> -	intel_hdmi->ddc_bus = intel_hdmi_ddc_pin(dev_priv, port);
> -
>  	if (WARN_ON(port == PORT_A))
>  		return;
>  	intel_encoder->hpd_pin = intel_hpd_pin_default(dev_priv, port);
> -- 
> 2.17.1

-- 
Ville Syrjälä
Intel
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 01/23] drm: Include ddc adapter pointer in struct drm_connector
  2019-07-11 11:26 ` [PATCH v4 01/23] drm: Include ddc adapter pointer in struct drm_connector Andrzej Pietrasiewicz
@ 2019-07-11 12:00   ` Ville Syrjälä
       [not found]   ` <5957ae96ee20eed5cfcb8a9619e2f61d71fe227e.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
  2019-07-11 12:00   ` Ville Syrjälä
  2 siblings, 0 replies; 65+ messages in thread
From: Ville Syrjälä @ 2019-07-11 12:00 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz
  Cc: Sam Ravnborg, Neil Armstrong, Maxime Ripard, Liviu Dudau,
	dri-devel, Douglas Anderson, Thierry Reding, Laurent Pinchart,
	kernel, Vincent Abriou, Krzysztof Kozlowski, Jonathan Hunter,
	David Airlie, Chen-Yu Tsai, Kukjin Kim, NXP Linux Team,
	Dave Airlie, Jonas Karlman, Jyri Sarha, Rodrigo Vivi,
	Matthias Brugger, Sean Paul, Pengutronix Kernel Team, Tomi

On Thu, Jul 11, 2019 at 01:26:28PM +0200, Andrzej Pietrasiewicz wrote:
> Add generic code which creates symbolic links in sysfs, pointing to ddc
> interface used by a particular video output. For example:
> 
> ls -l /sys/class/drm/card0-HDMI-A-1/ddc
> lrwxrwxrwx 1 root root 0 Jun 24 10:42 /sys/class/drm/card0-HDMI-A-1/ddc \
> 	-> ../../../../soc/13880000.i2c/i2c-2
> 
> This makes it easy for user to associate a display with its ddc adapter
> and use e.g. ddcutil to control the chosen monitor.
> 
> This patch adds an i2c_adapter pointer to struct drm_connector. Particular
> drivers can then use it instead of using their own private instance. If a
> connector contains a ddc, then create a symbolic link in sysfs.
> 
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> Reviewed-by: Andrzej Hajda <a.hajda@samsung.com>
> ---
>  drivers/gpu/drm/drm_sysfs.c |  7 +++++++
>  include/drm/drm_connector.h | 11 +++++++++++
>  2 files changed, 18 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c
> index ad10810bc972..26d359b39785 100644
> --- a/drivers/gpu/drm/drm_sysfs.c
> +++ b/drivers/gpu/drm/drm_sysfs.c
> @@ -294,6 +294,9 @@ int drm_sysfs_connector_add(struct drm_connector *connector)
>  	/* Let userspace know we have a new connector */
>  	drm_sysfs_hotplug_event(dev);
>  
> +	if (connector->ddc)
> +		return sysfs_create_link(&connector->kdev->kobj,
> +				 &connector->ddc->dev.kobj, "ddc");
>  	return 0;
>  }
>  
> @@ -301,6 +304,10 @@ void drm_sysfs_connector_remove(struct drm_connector *connector)
>  {
>  	if (!connector->kdev)
>  		return;
> +
> +	if (connector->ddc)
> +		sysfs_remove_link(&connector->kdev->kobj, "ddc");
> +
>  	DRM_DEBUG("removing \"%s\" from sysfs\n",
>  		  connector->name);
>  
> diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
> index ca745d9feaf5..1ad3d1d54ba7 100644
> --- a/include/drm/drm_connector.h
> +++ b/include/drm/drm_connector.h
> @@ -23,6 +23,7 @@
>  #ifndef __DRM_CONNECTOR_H__
>  #define __DRM_CONNECTOR_H__
>  
> +#include <linux/i2c.h>

struct i2c_adapter;
would suffice.

>  #include <linux/list.h>
>  #include <linux/llist.h>
>  #include <linux/ctype.h>
> @@ -1308,6 +1309,16 @@ struct drm_connector {
>  	 * [0]: progressive, [1]: interlaced
>  	 */
>  	int audio_latency[2];
> +
> +	/**
> +	 * @ddc: associated ddc adapter.
> +	 * A connector usually has its associated ddc adapter. If a driver uses
> +	 * this field, then an appropriate symbolic link is created in connector
> +	 * sysfs directory to make it easy for the user to tell which i2c
> +	 * adapter is for a particular display.
> +	 */
> +	struct i2c_adapter *ddc;
> +
>  	/**
>  	 * @null_edid_counter: track sinks that give us all zeros for the EDID.
>  	 * Needed to workaround some HW bugs where we get all 0s
> -- 
> 2.17.1

-- 
Ville Syrjälä
Intel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 01/23] drm: Include ddc adapter pointer in struct drm_connector
  2019-07-11 11:26 ` [PATCH v4 01/23] drm: Include ddc adapter pointer in struct drm_connector Andrzej Pietrasiewicz
  2019-07-11 12:00   ` Ville Syrjälä
       [not found]   ` <5957ae96ee20eed5cfcb8a9619e2f61d71fe227e.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
@ 2019-07-11 12:00   ` Ville Syrjälä
  2 siblings, 0 replies; 65+ messages in thread
From: Ville Syrjälä @ 2019-07-11 12:00 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz
  Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
	Maxime Ripard, dri-devel, Douglas Anderson, Andrzej Hajda,
	Laurent Pinchart, Benjamin Gaignard, kernel, Fabio Estevam,
	David (ChunMing) Zhou, Joonyoung Shim, Vincent Abriou,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, CK Hu

On Thu, Jul 11, 2019 at 01:26:28PM +0200, Andrzej Pietrasiewicz wrote:
> Add generic code which creates symbolic links in sysfs, pointing to ddc
> interface used by a particular video output. For example:
> 
> ls -l /sys/class/drm/card0-HDMI-A-1/ddc
> lrwxrwxrwx 1 root root 0 Jun 24 10:42 /sys/class/drm/card0-HDMI-A-1/ddc \
> 	-> ../../../../soc/13880000.i2c/i2c-2
> 
> This makes it easy for user to associate a display with its ddc adapter
> and use e.g. ddcutil to control the chosen monitor.
> 
> This patch adds an i2c_adapter pointer to struct drm_connector. Particular
> drivers can then use it instead of using their own private instance. If a
> connector contains a ddc, then create a symbolic link in sysfs.
> 
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> Reviewed-by: Andrzej Hajda <a.hajda@samsung.com>
> ---
>  drivers/gpu/drm/drm_sysfs.c |  7 +++++++
>  include/drm/drm_connector.h | 11 +++++++++++
>  2 files changed, 18 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c
> index ad10810bc972..26d359b39785 100644
> --- a/drivers/gpu/drm/drm_sysfs.c
> +++ b/drivers/gpu/drm/drm_sysfs.c
> @@ -294,6 +294,9 @@ int drm_sysfs_connector_add(struct drm_connector *connector)
>  	/* Let userspace know we have a new connector */
>  	drm_sysfs_hotplug_event(dev);
>  
> +	if (connector->ddc)
> +		return sysfs_create_link(&connector->kdev->kobj,
> +				 &connector->ddc->dev.kobj, "ddc");
>  	return 0;
>  }
>  
> @@ -301,6 +304,10 @@ void drm_sysfs_connector_remove(struct drm_connector *connector)
>  {
>  	if (!connector->kdev)
>  		return;
> +
> +	if (connector->ddc)
> +		sysfs_remove_link(&connector->kdev->kobj, "ddc");
> +
>  	DRM_DEBUG("removing \"%s\" from sysfs\n",
>  		  connector->name);
>  
> diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
> index ca745d9feaf5..1ad3d1d54ba7 100644
> --- a/include/drm/drm_connector.h
> +++ b/include/drm/drm_connector.h
> @@ -23,6 +23,7 @@
>  #ifndef __DRM_CONNECTOR_H__
>  #define __DRM_CONNECTOR_H__
>  
> +#include <linux/i2c.h>

struct i2c_adapter;
would suffice.

>  #include <linux/list.h>
>  #include <linux/llist.h>
>  #include <linux/ctype.h>
> @@ -1308,6 +1309,16 @@ struct drm_connector {
>  	 * [0]: progressive, [1]: interlaced
>  	 */
>  	int audio_latency[2];
> +
> +	/**
> +	 * @ddc: associated ddc adapter.
> +	 * A connector usually has its associated ddc adapter. If a driver uses
> +	 * this field, then an appropriate symbolic link is created in connector
> +	 * sysfs directory to make it easy for the user to tell which i2c
> +	 * adapter is for a particular display.
> +	 */
> +	struct i2c_adapter *ddc;
> +
>  	/**
>  	 * @null_edid_counter: track sinks that give us all zeros for the EDID.
>  	 * Needed to workaround some HW bugs where we get all 0s
> -- 
> 2.17.1

-- 
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 01/23] drm: Include ddc adapter pointer in struct drm_connector
       [not found]   ` <5957ae96ee20eed5cfcb8a9619e2f61d71fe227e.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
@ 2019-07-11 12:00     ` Ville Syrjälä
  0 siblings, 0 replies; 65+ messages in thread
From: Ville Syrjälä @ 2019-07-11 12:00 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz
  Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
	Maxime Ripard, Joonas Lahtinen, Liviu Dudau,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Douglas Anderson,
	Andrzej Hajda, Thierry Reding, Laurent Pinchart,
	Benjamin Gaignard, kernel-ZGY8ohtN/8qB+jHODAdFcQ, Fabio Estevam,
	David (ChunMing) Zhou, Joonyoung Shim, Vincent Abriou, Rob Clark,
	Krzysztof Kozlowski, Jonathan Hunter

On Thu, Jul 11, 2019 at 01:26:28PM +0200, Andrzej Pietrasiewicz wrote:
> Add generic code which creates symbolic links in sysfs, pointing to ddc
> interface used by a particular video output. For example:
> 
> ls -l /sys/class/drm/card0-HDMI-A-1/ddc
> lrwxrwxrwx 1 root root 0 Jun 24 10:42 /sys/class/drm/card0-HDMI-A-1/ddc \
> 	-> ../../../../soc/13880000.i2c/i2c-2
> 
> This makes it easy for user to associate a display with its ddc adapter
> and use e.g. ddcutil to control the chosen monitor.
> 
> This patch adds an i2c_adapter pointer to struct drm_connector. Particular
> drivers can then use it instead of using their own private instance. If a
> connector contains a ddc, then create a symbolic link in sysfs.
> 
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> Reviewed-by: Andrzej Hajda <a.hajda@samsung.com>
> ---
>  drivers/gpu/drm/drm_sysfs.c |  7 +++++++
>  include/drm/drm_connector.h | 11 +++++++++++
>  2 files changed, 18 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c
> index ad10810bc972..26d359b39785 100644
> --- a/drivers/gpu/drm/drm_sysfs.c
> +++ b/drivers/gpu/drm/drm_sysfs.c
> @@ -294,6 +294,9 @@ int drm_sysfs_connector_add(struct drm_connector *connector)
>  	/* Let userspace know we have a new connector */
>  	drm_sysfs_hotplug_event(dev);
>  
> +	if (connector->ddc)
> +		return sysfs_create_link(&connector->kdev->kobj,
> +				 &connector->ddc->dev.kobj, "ddc");
>  	return 0;
>  }
>  
> @@ -301,6 +304,10 @@ void drm_sysfs_connector_remove(struct drm_connector *connector)
>  {
>  	if (!connector->kdev)
>  		return;
> +
> +	if (connector->ddc)
> +		sysfs_remove_link(&connector->kdev->kobj, "ddc");
> +
>  	DRM_DEBUG("removing \"%s\" from sysfs\n",
>  		  connector->name);
>  
> diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
> index ca745d9feaf5..1ad3d1d54ba7 100644
> --- a/include/drm/drm_connector.h
> +++ b/include/drm/drm_connector.h
> @@ -23,6 +23,7 @@
>  #ifndef __DRM_CONNECTOR_H__
>  #define __DRM_CONNECTOR_H__
>  
> +#include <linux/i2c.h>

struct i2c_adapter;
would suffice.

>  #include <linux/list.h>
>  #include <linux/llist.h>
>  #include <linux/ctype.h>
> @@ -1308,6 +1309,16 @@ struct drm_connector {
>  	 * [0]: progressive, [1]: interlaced
>  	 */
>  	int audio_latency[2];
> +
> +	/**
> +	 * @ddc: associated ddc adapter.
> +	 * A connector usually has its associated ddc adapter. If a driver uses
> +	 * this field, then an appropriate symbolic link is created in connector
> +	 * sysfs directory to make it easy for the user to tell which i2c
> +	 * adapter is for a particular display.
> +	 */
> +	struct i2c_adapter *ddc;
> +
>  	/**
>  	 * @null_edid_counter: track sinks that give us all zeros for the EDID.
>  	 * Needed to workaround some HW bugs where we get all 0s
> -- 
> 2.17.1

-- 
Ville Syrjälä
Intel
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 23/23] drm/i915: Provide ddc symlink in hdmi connector sysfs directory
  2019-07-11 11:59     ` Ville Syrjälä
@ 2019-07-11 13:21       ` Daniel Vetter
  0 siblings, 0 replies; 65+ messages in thread
From: Daniel Vetter @ 2019-07-11 13:21 UTC (permalink / raw)
  To: Ville Syrjälä
  Cc: Sam Ravnborg, Neil Armstrong, Maxime Ripard, dri-devel,
	Douglas Anderson, Thierry Reding, Laurent Pinchart, kernel,
	Vincent Abriou, Krzysztof Kozlowski, Jonathan Hunter,
	David Airlie, Chen-Yu Tsai, Kukjin Kim, NXP Linux Team,
	Dave Airlie, ChrisWilson, Jonas Karlman, Jyri Sarha,
	Rodrigo Vivi, Matthias Brugger, Thomas Gleixner, Sean Paul,
	Pengutronix Kernel Team

On Thu, Jul 11, 2019 at 02:59:26PM +0300, Ville Syrjälä wrote:
> On Thu, Jul 11, 2019 at 01:26:50PM +0200, Andrzej Pietrasiewicz wrote:
> > Use the ddc pointer provided by the generic connector.
> 
> We already have a symlink via intel_hdmi_create_i2c_symlink(). I guess
> we should remove that in favor of the generic one. Oleg?

Since that commit is very new I think we should try real hard to avoid the
i915-ism here ...
-Daniel

> 
> > 
> > Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> > ---
> >  drivers/gpu/drm/i915/display/intel_hdmi.c | 5 +++--
> >  1 file changed, 3 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
> > index 0ebec69bbbfc..678fa4d1bd4e 100644
> > --- a/drivers/gpu/drm/i915/display/intel_hdmi.c
> > +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
> > @@ -3094,6 +3094,9 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
> >  		 intel_dig_port->max_lanes, port_name(port)))
> >  		return;
> >  
> > +	intel_hdmi->ddc_bus = intel_hdmi_ddc_pin(dev_priv, port);
> > +	connector->ddc = intel_gmbus_get_adapter(dev_priv, intel_hdmi->ddc_bus);
> > +
> >  	drm_connector_init(dev, connector, &intel_hdmi_connector_funcs,
> >  			   DRM_MODE_CONNECTOR_HDMIA);
> >  	drm_connector_helper_add(connector, &intel_hdmi_connector_helper_funcs);
> > @@ -3105,8 +3108,6 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
> >  	if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv))
> >  		connector->ycbcr_420_allowed = true;
> >  
> > -	intel_hdmi->ddc_bus = intel_hdmi_ddc_pin(dev_priv, port);
> > -
> >  	if (WARN_ON(port == PORT_A))
> >  		return;
> >  	intel_encoder->hpd_pin = intel_hpd_pin_default(dev_priv, port);
> > -- 
> > 2.17.1
> 
> -- 
> Ville Syrjälä
> Intel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 16/23] drm/mgag200: Provide ddc symlink in connector sysfs directory
  2019-07-11 11:26   ` [PATCH v4 16/23] drm/mgag200: Provide ddc symlink in " Andrzej Pietrasiewicz
@ 2019-07-11 17:26     ` Thomas Zimmermann
  2019-07-23  9:07       ` Sam Ravnborg
  1 sibling, 0 replies; 65+ messages in thread
From: Thomas Zimmermann @ 2019-07-11 17:26 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz, dri-devel
  Cc: Sam Ravnborg, Neil Armstrong, Maxime Ripard, Douglas Anderson,
	Thierry Reding, Laurent Pinchart, kernel, linux-samsung-soc,
	linux-rockchip, Vincent Abriou, Krzysztof Kozlowski,
	Jonathan Hunter, David Airlie, Chen-Yu Tsai, Kukjin Kim,
	NXP Linux Team, Dave Airlie, intel-gfx, linux-tegra,
	Jonas Karlman, linux-arm-msm, Alexios Zavras, Mamta Shukla,
	linux-mediatek, Jyr


[-- Attachment #1.1.1: Type: text/plain, Size: 1534 bytes --]

Acked-by: Thomas Zimmermann <tzimmermann@suse.de>

Am 11.07.19 um 13:26 schrieb Andrzej Pietrasiewicz:
> Use the ddc pointer provided by the generic connector.
> 
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> ---
>  drivers/gpu/drm/mgag200/mgag200_mode.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c b/drivers/gpu/drm/mgag200/mgag200_mode.c
> index a25054015e8c..8fb9444b2142 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_mode.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_mode.c
> @@ -1703,6 +1703,11 @@ static struct drm_connector *mga_vga_init(struct drm_device *dev)
>  		return NULL;
>  
>  	connector = &mga_connector->base;
> +	mga_connector->i2c = mgag200_i2c_create(dev);
> +	if (!mga_connector->i2c)
> +		DRM_ERROR("failed to add ddc bus\n");
> +
> +	connector->ddc = &mga_connector->i2c->adapter;
>  
>  	drm_connector_init(dev, connector,
>  			   &mga_vga_connector_funcs, DRM_MODE_CONNECTOR_VGA);
> @@ -1711,10 +1716,6 @@ static struct drm_connector *mga_vga_init(struct drm_device *dev)
>  
>  	drm_connector_register(connector);
>  
> -	mga_connector->i2c = mgag200_i2c_create(dev);
> -	if (!mga_connector->i2c)
> -		DRM_ERROR("failed to add ddc bus\n");
> -
>  	return connector;
>  }
>  
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Linux GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany
GF: Felix Imendörffer, Mary Higgins, Sri Rasiah
HRB 21284 (AG Nürnberg)


[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 159 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 17/23] drm/ast: Provide ddc symlink in connector sysfs directory
  2019-07-11 11:26   ` [PATCH v4 17/23] drm/ast: " Andrzej Pietrasiewicz
@ 2019-07-11 17:27     ` Thomas Zimmermann
  2019-07-23  9:09       ` Sam Ravnborg
  1 sibling, 0 replies; 65+ messages in thread
From: Thomas Zimmermann @ 2019-07-11 17:27 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz, dri-devel
  Cc: Sam Ravnborg, Neil Armstrong, Maxime Ripard, Liviu Dudau,
	Douglas Anderson, Thierry Reding, Laurent Pinchart, kernel,
	linux-samsung-soc, linux-rockchip, Vincent Abriou,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie, intel-gfx, freedreno,
	linux-tegra, Jonas Karlman, linux-arm-msm, Alexios Zavras, Mamta


[-- Attachment #1.1.1: Type: text/plain, Size: 1639 bytes --]

Acked-by: Thomas Zimmermann <tzimmermann@suse.de>

Am 11.07.19 um 13:26 schrieb Andrzej Pietrasiewicz:
> Use the ddc pointer provided by the generic connector.
> 
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> ---
>  drivers/gpu/drm/ast/ast_mode.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
> index ffccbef962a4..1ca9bc4aa3bb 100644
> --- a/drivers/gpu/drm/ast/ast_mode.c
> +++ b/drivers/gpu/drm/ast/ast_mode.c
> @@ -890,6 +890,11 @@ static int ast_connector_init(struct drm_device *dev)
>  		return -ENOMEM;
>  
>  	connector = &ast_connector->base;
> +	ast_connector->i2c = ast_i2c_create(dev);
> +	if (!ast_connector->i2c)
> +		DRM_ERROR("failed to add ddc bus for connector\n");
> +
> +	connector->ddc = &ast_connector->i2c->adapter;
>  	drm_connector_init(dev, connector, &ast_connector_funcs, DRM_MODE_CONNECTOR_VGA);
>  
>  	drm_connector_helper_add(connector, &ast_connector_helper_funcs);
> @@ -904,10 +909,6 @@ static int ast_connector_init(struct drm_device *dev)
>  	encoder = list_first_entry(&dev->mode_config.encoder_list, struct drm_encoder, head);
>  	drm_connector_attach_encoder(connector, encoder);
>  
> -	ast_connector->i2c = ast_i2c_create(dev);
> -	if (!ast_connector->i2c)
> -		DRM_ERROR("failed to add ddc bus for connector\n");
> -
>  	return 0;
>  }
>  
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Linux GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany
GF: Felix Imendörffer, Mary Higgins, Sri Rasiah
HRB 21284 (AG Nürnberg)


[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 159 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 65+ messages in thread

* ✓ Fi.CI.BAT: success for Associate ddc adapters with connectors
  2019-07-11 11:26 [PATCH v4 00/23] Associate ddc adapters with connectors Andrzej Pietrasiewicz
                   ` (15 preceding siblings ...)
       [not found] ` <cover.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
@ 2019-07-11 17:56 ` Patchwork
  2019-07-12 17:48 ` ✓ Fi.CI.IGT: " Patchwork
  17 siblings, 0 replies; 65+ messages in thread
From: Patchwork @ 2019-07-11 17:56 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz; +Cc: intel-gfx

== Series Details ==

Series: Associate ddc adapters with connectors
URL   : https://patchwork.freedesktop.org/series/63558/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_6460 -> Patchwork_13624
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13624/

Known issues
------------

  Here are the changes found in Patchwork_13624 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_exec_suspend@basic-s3:
    - fi-blb-e6850:       [PASS][1] -> [INCOMPLETE][2] ([fdo#107718])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6460/fi-blb-e6850/igt@gem_exec_suspend@basic-s3.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13624/fi-blb-e6850/igt@gem_exec_suspend@basic-s3.html

  * igt@i915_selftest@live_hangcheck:
    - fi-icl-dsi:         [PASS][3] -> [INCOMPLETE][4] ([fdo#107713] / [fdo#108569])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6460/fi-icl-dsi/igt@i915_selftest@live_hangcheck.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13624/fi-icl-dsi/igt@i915_selftest@live_hangcheck.html

  * igt@i915_selftest@live_mman:
    - fi-glk-dsi:         [PASS][5] -> [INCOMPLETE][6] ([fdo#103359] / [k.org#198133])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6460/fi-glk-dsi/igt@i915_selftest@live_mman.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13624/fi-glk-dsi/igt@i915_selftest@live_mman.html

  
#### Possible fixes ####

  * igt@gem_close_race@basic-threads:
    - {fi-icl-u4}:        [INCOMPLETE][7] ([fdo#107713]) -> [PASS][8]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6460/fi-icl-u4/igt@gem_close_race@basic-threads.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13624/fi-icl-u4/igt@gem_close_race@basic-threads.html

  * igt@i915_selftest@live_contexts:
    - fi-skl-iommu:       [INCOMPLETE][9] ([fdo#111050]) -> [PASS][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6460/fi-skl-iommu/igt@i915_selftest@live_contexts.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13624/fi-skl-iommu/igt@i915_selftest@live_contexts.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#103359]: https://bugs.freedesktop.org/show_bug.cgi?id=103359
  [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
  [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718
  [fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569
  [fdo#111050]: https://bugs.freedesktop.org/show_bug.cgi?id=111050
  [k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133


Participating hosts (50 -> 47)
------------------------------

  Additional (2): fi-icl-u3 fi-apl-guc 
  Missing    (5): fi-byt-squawks fi-bsw-cyan fi-icl-y fi-byt-clapper fi-bdw-samus 


Build changes
-------------

  * Linux: CI_DRM_6460 -> Patchwork_13624

  CI_DRM_6460: 32d52650873db547f6702f12ebdbae3e8e052dad @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5094: d7f140b5b02d054183a74842b4579cf7f5533927 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_13624: 60e82dafe00cea91a273ea2e55475beaccd52954 @ git://anongit.freedesktop.org/gfx-ci/linux


== Kernel 32bit build ==

Warning: Kernel 32bit buildtest failed:
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13624/build_32bit.log

  CALL    scripts/checksyscalls.sh
  CALL    scripts/atomic/check-atomics.sh
  CHK     include/generated/compile.h
Kernel: arch/x86/boot/bzImage is ready  (#1)
  Building modules, stage 2.
  MODPOST 112 modules
ERROR: "__udivdi3" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
ERROR: "__divdi3" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
scripts/Makefile.modpost:91: recipe for target '__modpost' failed
make[1]: *** [__modpost] Error 1
Makefile:1287: recipe for target 'modules' failed
make: *** [modules] Error 2


== Linux commits ==

60e82dafe00c drm/i915: Provide ddc symlink in hdmi connector sysfs directory
2bdcc775cc25 drm/radeon: Provide ddc symlink in connector sysfs directory
61b383c5fb93 drm/amdgpu: Provide ddc symlink in connector sysfs directory
b3958f606ccc drm/bridge: ti-tfp410: Provide ddc symlink in connector sysfs directory
d726b6da43f7 drm/bridge: dw-hdmi: Provide ddc symlink in connector sysfs directory
136be3295b29 drm/bridge: dumb-vga-dac: Provide ddc symlink in connector sysfs directory
752f9e9d23e4 drm/ast: Provide ddc symlink in connector sysfs directory
475547eaa2a8 drm/mgag200: Provide ddc symlink in connector sysfs directory
4e708680d16d drm: sti: Provide ddc symlink in hdmi connector sysfs directory
09e81b72cb45 drm/tilcdc: Provide ddc symlink in connector sysfs directory
e5a5a4ec10e8 drm: zte: Provide ddc symlink in vga connector sysfs directory
0abf56fc70c9 drm: zte: Provide ddc symlink in hdmi connector sysfs directory
665656680034 drm/vc4: Provide ddc symlink in connector sysfs directory
63f0cb3452f0 drm/imx: imx-tve: Provide ddc symlink in connector's sysfs
68e258fdc995 drm/imx: imx-ldb: Provide ddc symlink in connector's sysfs
e9ae76f80294 drm/tegra: Provide ddc symlink in output connector sysfs directory
0dbb26bba588 drm/mediatek: Provide ddc symlink in hdmi connector sysfs directory
f0d464ae2102 drm/sun4i: hdmi: Provide ddc symlink in sun4i hdmi connector sysfs directory
468ffe738c34 drm/msm/hdmi: Provide ddc symlink in hdmi connector sysfs directory
4f62a9663e68 drm: rockchip: Provide ddc symlink in inno_hdmi sysfs directory
72335f2b3f9c drm: rockchip: Provide ddc symlink in rk3066_hdmi sysfs directory
3e9dd6c9f823 drm/exynos: Provide ddc symlink in connector's sysfs
aba854868cff drm: Include ddc adapter pointer in struct drm_connector

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13624/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 15/23] drm: sti: Provide ddc symlink in hdmi connector sysfs directory
       [not found]     ` <86afdc0bca6939901870176dcf55f279f7b10a08.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
@ 2019-07-12  7:42       ` Benjamin Gaignard
  0 siblings, 0 replies; 65+ messages in thread
From: Benjamin Gaignard @ 2019-07-12  7:42 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz
  Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
	Maxime Ripard, Ramalingam C, Joonas Lahtinen, Liviu Dudau,
	ML dri-devel, Douglas Anderson, Andrzej Hajda, Thierry Reding,
	Laurent Pinchart, kernel-ZGY8ohtN/8qB+jHODAdFcQ, Fabio Estevam,
	Ville Syrjälä,
	David (ChunMing) Zhou, moderated list:ARM/S5P EXYNOS AR...,
	Joonyoung Shim, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

Le jeu. 11 juil. 2019 à 13:30, Andrzej Pietrasiewicz
<andrzej.p@collabora.com> a écrit :
>
> Use the ddc pointer provided by the generic connector.
>
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>

Reviewed-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>

> ---
>  drivers/gpu/drm/sti/sti_hdmi.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpu/drm/sti/sti_hdmi.c b/drivers/gpu/drm/sti/sti_hdmi.c
> index f03d617edc4c..90f8db63c095 100644
> --- a/drivers/gpu/drm/sti/sti_hdmi.c
> +++ b/drivers/gpu/drm/sti/sti_hdmi.c
> @@ -1279,6 +1279,7 @@ static int sti_hdmi_bind(struct device *dev, struct device *master, void *data)
>         drm_bridge_attach(encoder, bridge, NULL);
>
>         connector->encoder = encoder;
> +       drm_connector->ddc = hdmi->ddc_adapt;
>
>         drm_connector = (struct drm_connector *)connector;
>
> --
> 2.17.1
>
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

^ permalink raw reply	[flat|nested] 65+ messages in thread

* ✓ Fi.CI.IGT: success for Associate ddc adapters with connectors
  2019-07-11 11:26 [PATCH v4 00/23] Associate ddc adapters with connectors Andrzej Pietrasiewicz
                   ` (16 preceding siblings ...)
  2019-07-11 17:56 ` ✓ Fi.CI.BAT: success for Associate ddc adapters with connectors Patchwork
@ 2019-07-12 17:48 ` Patchwork
  17 siblings, 0 replies; 65+ messages in thread
From: Patchwork @ 2019-07-12 17:48 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz; +Cc: intel-gfx

== Series Details ==

Series: Associate ddc adapters with connectors
URL   : https://patchwork.freedesktop.org/series/63558/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_6460_full -> Patchwork_13624_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Known issues
------------

  Here are the changes found in Patchwork_13624_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_ctx_isolation@rcs0-s3:
    - shard-apl:          [PASS][1] -> [DMESG-WARN][2] ([fdo#108566])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6460/shard-apl6/igt@gem_ctx_isolation@rcs0-s3.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13624/shard-apl4/igt@gem_ctx_isolation@rcs0-s3.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-plflip-blt:
    - shard-iclb:         [PASS][3] -> [FAIL][4] ([fdo#103167]) +3 similar issues
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6460/shard-iclb8/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-plflip-blt.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13624/shard-iclb7/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-suspend:
    - shard-skl:          [PASS][5] -> [INCOMPLETE][6] ([fdo#104108] / [fdo#106978])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6460/shard-skl3/igt@kms_frontbuffer_tracking@fbcpsr-suspend.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13624/shard-skl10/igt@kms_frontbuffer_tracking@fbcpsr-suspend.html

  * igt@kms_psr2_su@page_flip:
    - shard-iclb:         [PASS][7] -> [SKIP][8] ([fdo#109642] / [fdo#111068])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6460/shard-iclb2/igt@kms_psr2_su@page_flip.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13624/shard-iclb1/igt@kms_psr2_su@page_flip.html

  * igt@kms_setmode@basic:
    - shard-apl:          [PASS][9] -> [FAIL][10] ([fdo#99912])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6460/shard-apl4/igt@kms_setmode@basic.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13624/shard-apl2/igt@kms_setmode@basic.html

  * igt@perf@polling:
    - shard-skl:          [PASS][11] -> [FAIL][12] ([fdo#110728])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6460/shard-skl1/igt@perf@polling.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13624/shard-skl10/igt@perf@polling.html

  
#### Possible fixes ####

  * igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw:
    - shard-iclb:         [FAIL][13] ([fdo#103167]) -> [PASS][14] +3 similar issues
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6460/shard-iclb2/igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13624/shard-iclb4/igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw.html

  * igt@kms_frontbuffer_tracking@fbc-1p-shrfb-fliptrack:
    - shard-iclb:         [INCOMPLETE][15] ([fdo#107713]) -> [PASS][16]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6460/shard-iclb7/igt@kms_frontbuffer_tracking@fbc-1p-shrfb-fliptrack.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13624/shard-iclb8/igt@kms_frontbuffer_tracking@fbc-1p-shrfb-fliptrack.html

  * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes:
    - shard-apl:          [DMESG-WARN][17] ([fdo#108566]) -> [PASS][18] +3 similar issues
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6460/shard-apl6/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13624/shard-apl4/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes.html

  * igt@kms_plane_lowres@pipe-a-tiling-x:
    - shard-iclb:         [FAIL][19] ([fdo#103166]) -> [PASS][20]
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6460/shard-iclb6/igt@kms_plane_lowres@pipe-a-tiling-x.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13624/shard-iclb8/igt@kms_plane_lowres@pipe-a-tiling-x.html

  * igt@kms_psr@psr2_primary_page_flip:
    - shard-iclb:         [SKIP][21] ([fdo#109441]) -> [PASS][22] +1 similar issue
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6460/shard-iclb3/igt@kms_psr@psr2_primary_page_flip.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13624/shard-iclb2/igt@kms_psr@psr2_primary_page_flip.html

  
#### Warnings ####

  * igt@kms_dp_dsc@basic-dsc-enable-edp:
    - shard-iclb:         [SKIP][23] ([fdo#109349]) -> [DMESG-WARN][24] ([fdo#107724])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6460/shard-iclb1/igt@kms_dp_dsc@basic-dsc-enable-edp.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13624/shard-iclb2/igt@kms_dp_dsc@basic-dsc-enable-edp.html

  
  [fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166
  [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
  [fdo#104108]: https://bugs.freedesktop.org/show_bug.cgi?id=104108
  [fdo#106978]: https://bugs.freedesktop.org/show_bug.cgi?id=106978
  [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
  [fdo#107724]: https://bugs.freedesktop.org/show_bug.cgi?id=107724
  [fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566
  [fdo#109349]: https://bugs.freedesktop.org/show_bug.cgi?id=109349
  [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
  [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
  [fdo#110728]: https://bugs.freedesktop.org/show_bug.cgi?id=110728
  [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
  [fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912


Participating hosts (11 -> 10)
------------------------------

  Missing    (1): pig-snb-2600 


Build changes
-------------

  * Linux: CI_DRM_6460 -> Patchwork_13624

  CI_DRM_6460: 32d52650873db547f6702f12ebdbae3e8e052dad @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5094: d7f140b5b02d054183a74842b4579cf7f5533927 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_13624: 60e82dafe00cea91a273ea2e55475beaccd52954 @ git://anongit.freedesktop.org/gfx-ci/linux
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13624/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 12/23] drm: zte: Provide ddc symlink in hdmi connector sysfs directory
  2019-07-11 11:26 ` [PATCH v4 12/23] drm: zte: Provide ddc symlink in hdmi " Andrzej Pietrasiewicz
@ 2019-07-23  5:58   ` Shawn Guo
  0 siblings, 0 replies; 65+ messages in thread
From: Shawn Guo @ 2019-07-23  5:58 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz
  Cc: Sam Ravnborg, Neil Armstrong, Maxime Ripard, dri-devel,
	Douglas Anderson, Thierry Reding, Laurent Pinchart, kernel,
	linux-samsung-soc, linux-rockchip, Vincent Abriou,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie, intel-gfx, freedreno,
	linux-tegra, Jonas Karlman, linux-arm-msm, Mamta Shukla,
	linux-mediatek

On Thu, Jul 11, 2019 at 01:26:39PM +0200, Andrzej Pietrasiewicz wrote:
> Use the ddc pointer provided by the generic connector.
> 
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>

Acked-by: Shawn Guo <shawnguo@kernel.org>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 13/23] drm: zte: Provide ddc symlink in vga connector sysfs directory
       [not found]   ` <9cdd2fc46dbcb6b596786e5a12b7176c77a38d78.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
@ 2019-07-23  5:58     ` Shawn Guo
  0 siblings, 0 replies; 65+ messages in thread
From: Shawn Guo @ 2019-07-23  5:58 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz
  Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
	Maxime Ripard, Ramalingam C, Joonas Lahtinen, Liviu Dudau,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Douglas Anderson,
	Andrzej Hajda, Thierry Reding, Laurent Pinchart,
	Benjamin Gaignard, kernel-ZGY8ohtN/8qB+jHODAdFcQ, Fabio Estevam,
	Ville Syrjälä,
	David (ChunMing) Zhou, linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA,
	Joonyoung Shim, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

On Thu, Jul 11, 2019 at 01:26:40PM +0200, Andrzej Pietrasiewicz wrote:
> Use the ddc pointer provided by the generic connector.
> 
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>

Acked-by: Shawn Guo <shawnguo@kernel.org>
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 14/23] drm/tilcdc: Provide ddc symlink in connector sysfs directory
  2019-07-11 11:26 ` [PATCH v4 14/23] drm/tilcdc: Provide ddc symlink in " Andrzej Pietrasiewicz
@ 2019-07-23  9:05       ` Sam Ravnborg
  0 siblings, 0 replies; 65+ messages in thread
From: Sam Ravnborg @ 2019-07-23  9:05 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz
  Cc: Neil Armstrong, Maxime Ripard,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Matthias Brugger,
	Thierry Reding, Laurent Pinchart, Shawn Guo,
	kernel-ZGY8ohtN/8qB+jHODAdFcQ,
	linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA,
	linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Sean Paul,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie, Thomas Zimmermann,
	Jonas Karlman, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA,
	intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Jyri Sarha,
	Alexios Zavras

Hi Andrzej

On Thu, Jul 11, 2019 at 01:26:41PM +0200, Andrzej Pietrasiewicz wrote:
> Use the ddc pointer provided by the generic connector.
> 
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> ---
>  drivers/gpu/drm/tilcdc/tilcdc_tfp410.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> index 62d014c20988..c373edb95666 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> @@ -219,6 +219,7 @@ static struct drm_connector *tfp410_connector_create(struct drm_device *dev,
>  	tfp410_connector->mod = mod;
>  
>  	connector = &tfp410_connector->base;
> +	connector->ddc = mod->i2c;
>  
>  	drm_connector_init(dev, connector, &tfp410_connector_funcs,
>  			DRM_MODE_CONNECTOR_DVID);

When reading this code, it looks strange that we set connector->ddc
*before* the call to init the connector.
One could risk that drm_connector_init() used memset(..) to clear all
fields or so, and it would break this order.
As it is today the code works as I read it.

	Sam
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 14/23] drm/tilcdc: Provide ddc symlink in connector sysfs directory
@ 2019-07-23  9:05       ` Sam Ravnborg
  0 siblings, 0 replies; 65+ messages in thread
From: Sam Ravnborg @ 2019-07-23  9:05 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz
  Cc: Neil Armstrong, Maxime Ripard, dri-devel, linux-kernel,
	Matthias Brugger, Thierry Reding, Laurent Pinchart, Shawn Guo,
	kernel, linux-samsung-soc, linux-rockchip, Sean Paul,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie, Thomas Zimmermann,
	Jonas Karlman, linux-arm-msm, intel-gfx, Jyri Sarha,
	Alexios Zavras, Mamta Shukla, linux-mediatek, Rodrigo Vivi,
	linux-tegra, Thomas Gleixner, Vincent Abriou, linux-arm-kernel,
	Jernej Skrabec, amd-gfx, Tomi Valkeinen, Greg Kroah-Hartman,
	Seung-Woo Kim, Douglas Anderson, Todor Tomov, Kyungmin Park,
	Huang Rui, Pengutronix Kernel Team, Alex Deucher, freedreno,
	Christian König, Gerd Hoffmann

Hi Andrzej

On Thu, Jul 11, 2019 at 01:26:41PM +0200, Andrzej Pietrasiewicz wrote:
> Use the ddc pointer provided by the generic connector.
> 
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> ---
>  drivers/gpu/drm/tilcdc/tilcdc_tfp410.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> index 62d014c20988..c373edb95666 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> @@ -219,6 +219,7 @@ static struct drm_connector *tfp410_connector_create(struct drm_device *dev,
>  	tfp410_connector->mod = mod;
>  
>  	connector = &tfp410_connector->base;
> +	connector->ddc = mod->i2c;
>  
>  	drm_connector_init(dev, connector, &tfp410_connector_funcs,
>  			DRM_MODE_CONNECTOR_DVID);

When reading this code, it looks strange that we set connector->ddc
*before* the call to init the connector.
One could risk that drm_connector_init() used memset(..) to clear all
fields or so, and it would break this order.
As it is today the code works as I read it.

	Sam

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 16/23] drm/mgag200: Provide ddc symlink in connector sysfs directory
  2019-07-11 11:26   ` [PATCH v4 16/23] drm/mgag200: Provide ddc symlink in " Andrzej Pietrasiewicz
  2019-07-11 17:26     ` Thomas Zimmermann
@ 2019-07-23  9:07       ` Sam Ravnborg
  1 sibling, 0 replies; 65+ messages in thread
From: Sam Ravnborg @ 2019-07-23  9:07 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz
  Cc: dri-devel, Neil Armstrong, Maxime Ripard, Douglas Anderson,
	Thierry Reding, Laurent Pinchart, kernel, linux-samsung-soc,
	linux-rockchip, Vincent Abriou, Krzysztof Kozlowski,
	Jonathan Hunter, David Airlie, Chen-Yu Tsai, Kukjin Kim,
	NXP Linux Team, Dave Airlie, intel-gfx, freedreno, linux-tegra,
	Jonas Karlman

Hi Andrzej.

On Thu, Jul 11, 2019 at 01:26:43PM +0200, Andrzej Pietrasiewicz wrote:
> Use the ddc pointer provided by the generic connector.
> 
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> ---
>  drivers/gpu/drm/mgag200/mgag200_mode.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c b/drivers/gpu/drm/mgag200/mgag200_mode.c
> index a25054015e8c..8fb9444b2142 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_mode.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_mode.c
> @@ -1703,6 +1703,11 @@ static struct drm_connector *mga_vga_init(struct drm_device *dev)
>  		return NULL;
>  
>  	connector = &mga_connector->base;
> +	mga_connector->i2c = mgag200_i2c_create(dev);
> +	if (!mga_connector->i2c)
> +		DRM_ERROR("failed to add ddc bus\n");
> +
> +	connector->ddc = &mga_connector->i2c->adapter;
>  
>  	drm_connector_init(dev, connector,
>  			   &mga_vga_connector_funcs, DRM_MODE_CONNECTOR_VGA);
Like on other patch, assigning connector->ddc before
drm_connector_init() looks wrong.

	Sam

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 16/23] drm/mgag200: Provide ddc symlink in connector sysfs directory
@ 2019-07-23  9:07       ` Sam Ravnborg
  0 siblings, 0 replies; 65+ messages in thread
From: Sam Ravnborg @ 2019-07-23  9:07 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz
  Cc: dri-devel, Neil Armstrong, Maxime Ripard, Douglas Anderson,
	Thierry Reding, Laurent Pinchart, kernel, linux-samsung-soc,
	linux-rockchip, Vincent Abriou, Krzysztof Kozlowski,
	Jonathan Hunter, David Airlie, Chen-Yu Tsai, Kukjin Kim,
	NXP Linux Team, Dave Airlie, intel-gfx, freedreno, linux-tegra,
	Jonas Karlman, linux-arm-msm, Alexios Zavras, Mamta Shukla,
	linux-mediatek, Jyri Sarha, Rodrigo Vivi, Matthias Brugger,
	Thomas Gleixner, Sean Paul, Pengutronix Kernel Team,
	linux-arm-kernel, amd-gfx, Tomi Valkeinen, Thomas Zimmermann,
	Seung-Woo Kim, linux-kernel, Todor Tomov, Kyungmin Park,
	Huang Rui, Alex Deucher, Shawn Guo, Christian König,
	Gerd Hoffmann

Hi Andrzej.

On Thu, Jul 11, 2019 at 01:26:43PM +0200, Andrzej Pietrasiewicz wrote:
> Use the ddc pointer provided by the generic connector.
> 
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> ---
>  drivers/gpu/drm/mgag200/mgag200_mode.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c b/drivers/gpu/drm/mgag200/mgag200_mode.c
> index a25054015e8c..8fb9444b2142 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_mode.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_mode.c
> @@ -1703,6 +1703,11 @@ static struct drm_connector *mga_vga_init(struct drm_device *dev)
>  		return NULL;
>  
>  	connector = &mga_connector->base;
> +	mga_connector->i2c = mgag200_i2c_create(dev);
> +	if (!mga_connector->i2c)
> +		DRM_ERROR("failed to add ddc bus\n");
> +
> +	connector->ddc = &mga_connector->i2c->adapter;
>  
>  	drm_connector_init(dev, connector,
>  			   &mga_vga_connector_funcs, DRM_MODE_CONNECTOR_VGA);
Like on other patch, assigning connector->ddc before
drm_connector_init() looks wrong.

	Sam

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 16/23] drm/mgag200: Provide ddc symlink in connector sysfs directory
@ 2019-07-23  9:07       ` Sam Ravnborg
  0 siblings, 0 replies; 65+ messages in thread
From: Sam Ravnborg @ 2019-07-23  9:07 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz
  Cc: Neil Armstrong, Maxime Ripard, dri-devel, linux-kernel,
	Matthias Brugger, Thierry Reding, Laurent Pinchart, kernel,
	linux-samsung-soc, linux-rockchip, Sean Paul,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie, Thomas Zimmermann,
	Jonas Karlman, linux-arm-msm, intel-gfx, Jyri Sarha,
	Alexios Zavras, Mamta Shukla, linux-mediatek, Rodrigo Vivi,
	linux-tegra, Thomas Gleixner, Vincent Abriou, linux-arm-kernel,
	amd-gfx, Tomi Valkeinen, Shawn Guo, Seung-Woo Kim,
	Douglas Anderson, Todor Tomov, Kyungmin Park, Huang Rui,
	Pengutronix Kernel Team, Alex Deucher, freedreno,
	Christian König, Gerd Hoffmann

Hi Andrzej.

On Thu, Jul 11, 2019 at 01:26:43PM +0200, Andrzej Pietrasiewicz wrote:
> Use the ddc pointer provided by the generic connector.
> 
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> ---
>  drivers/gpu/drm/mgag200/mgag200_mode.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c b/drivers/gpu/drm/mgag200/mgag200_mode.c
> index a25054015e8c..8fb9444b2142 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_mode.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_mode.c
> @@ -1703,6 +1703,11 @@ static struct drm_connector *mga_vga_init(struct drm_device *dev)
>  		return NULL;
>  
>  	connector = &mga_connector->base;
> +	mga_connector->i2c = mgag200_i2c_create(dev);
> +	if (!mga_connector->i2c)
> +		DRM_ERROR("failed to add ddc bus\n");
> +
> +	connector->ddc = &mga_connector->i2c->adapter;
>  
>  	drm_connector_init(dev, connector,
>  			   &mga_vga_connector_funcs, DRM_MODE_CONNECTOR_VGA);
Like on other patch, assigning connector->ddc before
drm_connector_init() looks wrong.

	Sam

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 17/23] drm/ast: Provide ddc symlink in connector sysfs directory
  2019-07-11 11:26   ` [PATCH v4 17/23] drm/ast: " Andrzej Pietrasiewicz
@ 2019-07-23  9:09       ` Sam Ravnborg
  2019-07-23  9:09       ` Sam Ravnborg
  1 sibling, 0 replies; 65+ messages in thread
From: Sam Ravnborg @ 2019-07-23  9:09 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz
  Cc: Neil Armstrong, Maxime Ripard, Liviu Dudau, dri-devel,
	linux-kernel, Matthias Brugger, Thierry Reding, Laurent Pinchart,
	Shawn Guo, kernel, linux-samsung-soc, linux-rockchip, Sean Paul,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie, Thomas Zimmermann,
	Jonas Karlman, linux-arm-msm, intel-gfx, Jyri Sarha

Hi Andrzej.

On Thu, Jul 11, 2019 at 01:26:44PM +0200, Andrzej Pietrasiewicz wrote:
> Use the ddc pointer provided by the generic connector.
> 
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> ---
>  drivers/gpu/drm/ast/ast_mode.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
> index ffccbef962a4..1ca9bc4aa3bb 100644
> --- a/drivers/gpu/drm/ast/ast_mode.c
> +++ b/drivers/gpu/drm/ast/ast_mode.c
> @@ -890,6 +890,11 @@ static int ast_connector_init(struct drm_device *dev)
>  		return -ENOMEM;
>  
>  	connector = &ast_connector->base;
> +	ast_connector->i2c = ast_i2c_create(dev);
> +	if (!ast_connector->i2c)
> +		DRM_ERROR("failed to add ddc bus for connector\n");
> +
> +	connector->ddc = &ast_connector->i2c->adapter;
>  	drm_connector_init(dev, connector, &ast_connector_funcs, DRM_MODE_CONNECTOR_VGA);
>  
>  	drm_connector_helper_add(connector, &ast_connector_helper_funcs);
Again, assigning before drm_connector_init().
I did not audit the remaining patches - you got the idea.

	Sam
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 17/23] drm/ast: Provide ddc symlink in connector sysfs directory
@ 2019-07-23  9:09       ` Sam Ravnborg
  0 siblings, 0 replies; 65+ messages in thread
From: Sam Ravnborg @ 2019-07-23  9:09 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz
  Cc: Neil Armstrong, Maxime Ripard, Liviu Dudau, dri-devel,
	linux-kernel, Matthias Brugger, Thierry Reding, Laurent Pinchart,
	Shawn Guo, kernel, linux-samsung-soc, linux-rockchip, Sean Paul,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie, Thomas Zimmermann,
	Jonas Karlman, linux-arm-msm, intel-gfx, Jyri Sarha,
	Alexios Zavras, Mamta Shukla, linux-mediatek, Rodrigo Vivi,
	linux-tegra, Thomas Gleixner, Vincent Abriou, linux-arm-kernel,
	Jernej Skrabec, amd-gfx, Tomi Valkeinen, Enrico Weigelt,
	Seung-Woo Kim, Douglas Anderson, Todor Tomov, Kyungmin Park,
	Huang Rui, Pengutronix Kernel Team, Alex Deucher, freedreno,
	Christian König, Gerd Hoffmann

Hi Andrzej.

On Thu, Jul 11, 2019 at 01:26:44PM +0200, Andrzej Pietrasiewicz wrote:
> Use the ddc pointer provided by the generic connector.
> 
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> ---
>  drivers/gpu/drm/ast/ast_mode.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
> index ffccbef962a4..1ca9bc4aa3bb 100644
> --- a/drivers/gpu/drm/ast/ast_mode.c
> +++ b/drivers/gpu/drm/ast/ast_mode.c
> @@ -890,6 +890,11 @@ static int ast_connector_init(struct drm_device *dev)
>  		return -ENOMEM;
>  
>  	connector = &ast_connector->base;
> +	ast_connector->i2c = ast_i2c_create(dev);
> +	if (!ast_connector->i2c)
> +		DRM_ERROR("failed to add ddc bus for connector\n");
> +
> +	connector->ddc = &ast_connector->i2c->adapter;
>  	drm_connector_init(dev, connector, &ast_connector_funcs, DRM_MODE_CONNECTOR_VGA);
>  
>  	drm_connector_helper_add(connector, &ast_connector_helper_funcs);
Again, assigning before drm_connector_init().
I did not audit the remaining patches - you got the idea.

	Sam

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 14/23] drm/tilcdc: Provide ddc symlink in connector sysfs directory
  2019-07-23  9:05       ` Sam Ravnborg
  (?)
@ 2019-07-23 12:44         ` Andrzej Pietrasiewicz
  -1 siblings, 0 replies; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-23 12:44 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: Neil Armstrong, Maxime Ripard, dri-devel, linux-kernel,
	Matthias Brugger, Thierry Reding, Laurent Pinchart, Shawn Guo,
	kernel, linux-samsung-soc, linux-rockchip, Sean Paul,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie, Thomas Zimmermann,
	Jonas Karlman, linux-ar

Hi Sam,

W dniu 23.07.2019 o 11:05, Sam Ravnborg pisze:
> Hi Andrzej
> 
> On Thu, Jul 11, 2019 at 01:26:41PM +0200, Andrzej Pietrasiewicz wrote:
>> Use the ddc pointer provided by the generic connector.
>>
>> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
>> ---
>>   drivers/gpu/drm/tilcdc/tilcdc_tfp410.c | 1 +
>>   1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
>> index 62d014c20988..c373edb95666 100644
>> --- a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
>> +++ b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
>> @@ -219,6 +219,7 @@ static struct drm_connector *tfp410_connector_create(struct drm_device *dev,
>>   	tfp410_connector->mod = mod;
>>   
>>   	connector = &tfp410_connector->base;
>> +	connector->ddc = mod->i2c;
>>   
>>   	drm_connector_init(dev, connector, &tfp410_connector_funcs,
>>   			DRM_MODE_CONNECTOR_DVID);
> 
> When reading this code, it looks strange that we set connector->ddc
> *before* the call to init the connector.
> One could risk that drm_connector_init() used memset(..) to clear all
> fields or so, and it would break this order.

I verified the code of drm_connector_init() and cannot find any memset()
invocations there. What is your actual concern?

Andrzej

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 14/23] drm/tilcdc: Provide ddc symlink in connector sysfs directory
@ 2019-07-23 12:44         ` Andrzej Pietrasiewicz
  0 siblings, 0 replies; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-23 12:44 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: Neil Armstrong, Maxime Ripard, dri-devel, linux-kernel,
	Matthias Brugger, Thierry Reding, Laurent Pinchart, Shawn Guo,
	kernel, linux-samsung-soc, linux-rockchip, Sean Paul,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie, Thomas Zimmermann,
	Jonas Karlman, linux-arm-msm, intel-gfx, Jyri Sarha,
	Alexios Zavras, Mamta Shukla, linux-mediatek, Rodrigo Vivi,
	linux-tegra, Thomas Gleixner, Vincent Abriou, linux-arm-kernel,
	Jernej Skrabec, amd-gfx, Tomi Valkeinen, Greg Kroah-Hartman,
	Seung-Woo Kim, Douglas Anderson, Todor Tomov, Kyungmin Park,
	Huang Rui, Pengutronix Kernel Team, Alex Deucher, freedreno,
	Christian König, Gerd Hoffmann

Hi Sam,

W dniu 23.07.2019 o 11:05, Sam Ravnborg pisze:
> Hi Andrzej
> 
> On Thu, Jul 11, 2019 at 01:26:41PM +0200, Andrzej Pietrasiewicz wrote:
>> Use the ddc pointer provided by the generic connector.
>>
>> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
>> ---
>>   drivers/gpu/drm/tilcdc/tilcdc_tfp410.c | 1 +
>>   1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
>> index 62d014c20988..c373edb95666 100644
>> --- a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
>> +++ b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
>> @@ -219,6 +219,7 @@ static struct drm_connector *tfp410_connector_create(struct drm_device *dev,
>>   	tfp410_connector->mod = mod;
>>   
>>   	connector = &tfp410_connector->base;
>> +	connector->ddc = mod->i2c;
>>   
>>   	drm_connector_init(dev, connector, &tfp410_connector_funcs,
>>   			DRM_MODE_CONNECTOR_DVID);
> 
> When reading this code, it looks strange that we set connector->ddc
> *before* the call to init the connector.
> One could risk that drm_connector_init() used memset(..) to clear all
> fields or so, and it would break this order.

I verified the code of drm_connector_init() and cannot find any memset()
invocations there. What is your actual concern?

Andrzej

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 14/23] drm/tilcdc: Provide ddc symlink in connector sysfs directory
@ 2019-07-23 12:44         ` Andrzej Pietrasiewicz
  0 siblings, 0 replies; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-23 12:44 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: Neil Armstrong, Maxime Ripard, dri-devel, Douglas Anderson,
	linux-tegra, Thierry Reding, Laurent Pinchart, kernel,
	linux-samsung-soc, linux-rockchip, Vincent Abriou,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie, freedreno,
	Pengutronix Kernel Team, Jonas Karlman, linux-arm-msm, intel-gfx,
	Jyri Sarha, Alexios Zavras, Mamta Shukla, linux-mediatek,
	Rodrigo Vivi, Matthias Brugger, Thomas Gleixner, Sean Paul,
	linux-arm-kernel, Jernej Skrabec, amd-gfx, Tomi Valkeinen,
	Greg Kroah-Hartman, Seung-Woo Kim, linux-kernel, Todor Tomov,
	Kyungmin Park, Huang Rui, Thomas Zimmermann, Alex Deucher,
	Shawn Guo, Christian König, Gerd Hoffmann

Hi Sam,

W dniu 23.07.2019 o 11:05, Sam Ravnborg pisze:
> Hi Andrzej
> 
> On Thu, Jul 11, 2019 at 01:26:41PM +0200, Andrzej Pietrasiewicz wrote:
>> Use the ddc pointer provided by the generic connector.
>>
>> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
>> ---
>>   drivers/gpu/drm/tilcdc/tilcdc_tfp410.c | 1 +
>>   1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
>> index 62d014c20988..c373edb95666 100644
>> --- a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
>> +++ b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
>> @@ -219,6 +219,7 @@ static struct drm_connector *tfp410_connector_create(struct drm_device *dev,
>>   	tfp410_connector->mod = mod;
>>   
>>   	connector = &tfp410_connector->base;
>> +	connector->ddc = mod->i2c;
>>   
>>   	drm_connector_init(dev, connector, &tfp410_connector_funcs,
>>   			DRM_MODE_CONNECTOR_DVID);
> 
> When reading this code, it looks strange that we set connector->ddc
> *before* the call to init the connector.
> One could risk that drm_connector_init() used memset(..) to clear all
> fields or so, and it would break this order.

I verified the code of drm_connector_init() and cannot find any memset()
invocations there. What is your actual concern?

Andrzej

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 14/23] drm/tilcdc: Provide ddc symlink in connector sysfs directory
  2019-07-23 12:44         ` Andrzej Pietrasiewicz
  (?)
@ 2019-07-23 15:19             ` Sam Ravnborg
  -1 siblings, 0 replies; 65+ messages in thread
From: Sam Ravnborg @ 2019-07-23 15:19 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz
  Cc: Neil Armstrong, Maxime Ripard,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Douglas Anderson,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA, Thierry Reding,
	Laurent Pinchart, kernel-ZGY8ohtN/8qB+jHODAdFcQ,
	linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA,
	linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Vincent Abriou,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie,
	freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	Pengutronix Kernel Team, Jonas Karlman,
	linux-arm-msm-u79uwXL29TY76Z2rM5mHXA,
	intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Jyri Sarha, Alexios

Hi Andrej.

On Tue, Jul 23, 2019 at 02:44:50PM +0200, Andrzej Pietrasiewicz wrote:
> Hi Sam,
> 
> W dniu 23.07.2019 o 11:05, Sam Ravnborg pisze:
> > Hi Andrzej
> > 
> > On Thu, Jul 11, 2019 at 01:26:41PM +0200, Andrzej Pietrasiewicz wrote:
> > > Use the ddc pointer provided by the generic connector.
> > > 
> > > Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> > > ---
> > >   drivers/gpu/drm/tilcdc/tilcdc_tfp410.c | 1 +
> > >   1 file changed, 1 insertion(+)
> > > 
> > > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> > > index 62d014c20988..c373edb95666 100644
> > > --- a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> > > +++ b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> > > @@ -219,6 +219,7 @@ static struct drm_connector *tfp410_connector_create(struct drm_device *dev,
> > >   	tfp410_connector->mod = mod;
> > >   	connector = &tfp410_connector->base;
> > > +	connector->ddc = mod->i2c;
> > >   	drm_connector_init(dev, connector, &tfp410_connector_funcs,
> > >   			DRM_MODE_CONNECTOR_DVID);
> > 
> > When reading this code, it looks strange that we set connector->ddc
> > *before* the call to init the connector.
> > One could risk that drm_connector_init() used memset(..) to clear all
> > fields or so, and it would break this order.
> 
> I verified the code of drm_connector_init() and cannot find any memset()
> invocations there. What is your actual concern?
My concern is that drm_connector_init() maybe sometime in the future
will init all fileds in drm_connector, so we loose any assingments
done to drm_connector from *before* we called the init function.

Moving the assignment to after drm_connector_init() would not
let us depend on the actual implmentation of drm_connector_init().

	Sam
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 14/23] drm/tilcdc: Provide ddc symlink in connector sysfs directory
@ 2019-07-23 15:19             ` Sam Ravnborg
  0 siblings, 0 replies; 65+ messages in thread
From: Sam Ravnborg @ 2019-07-23 15:19 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz
  Cc: Neil Armstrong, Maxime Ripard, dri-devel, linux-kernel,
	Matthias Brugger, Thierry Reding, Laurent Pinchart, Shawn Guo,
	kernel, linux-samsung-soc, linux-rockchip, Sean Paul,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie, Thomas Zimmermann,
	Jonas Karlman, linux-arm-msm, intel-gfx, Jyri Sarha,
	Alexios Zavras, Mamta Shukla, linux-mediatek, Rodrigo Vivi,
	linux-tegra, Thomas Gleixner, Vincent Abriou, linux-arm-kernel,
	Jernej Skrabec, amd-gfx, Tomi Valkeinen, Greg Kroah-Hartman,
	Seung-Woo Kim, Douglas Anderson, Todor Tomov, Kyungmin Park,
	Huang Rui, Pengutronix Kernel Team, Alex Deucher, freedreno,
	Christian König, Gerd Hoffmann

Hi Andrej.

On Tue, Jul 23, 2019 at 02:44:50PM +0200, Andrzej Pietrasiewicz wrote:
> Hi Sam,
> 
> W dniu 23.07.2019 o 11:05, Sam Ravnborg pisze:
> > Hi Andrzej
> > 
> > On Thu, Jul 11, 2019 at 01:26:41PM +0200, Andrzej Pietrasiewicz wrote:
> > > Use the ddc pointer provided by the generic connector.
> > > 
> > > Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> > > ---
> > >   drivers/gpu/drm/tilcdc/tilcdc_tfp410.c | 1 +
> > >   1 file changed, 1 insertion(+)
> > > 
> > > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> > > index 62d014c20988..c373edb95666 100644
> > > --- a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> > > +++ b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> > > @@ -219,6 +219,7 @@ static struct drm_connector *tfp410_connector_create(struct drm_device *dev,
> > >   	tfp410_connector->mod = mod;
> > >   	connector = &tfp410_connector->base;
> > > +	connector->ddc = mod->i2c;
> > >   	drm_connector_init(dev, connector, &tfp410_connector_funcs,
> > >   			DRM_MODE_CONNECTOR_DVID);
> > 
> > When reading this code, it looks strange that we set connector->ddc
> > *before* the call to init the connector.
> > One could risk that drm_connector_init() used memset(..) to clear all
> > fields or so, and it would break this order.
> 
> I verified the code of drm_connector_init() and cannot find any memset()
> invocations there. What is your actual concern?
My concern is that drm_connector_init() maybe sometime in the future
will init all fileds in drm_connector, so we loose any assingments
done to drm_connector from *before* we called the init function.

Moving the assignment to after drm_connector_init() would not
let us depend on the actual implmentation of drm_connector_init().

	Sam

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 14/23] drm/tilcdc: Provide ddc symlink in connector sysfs directory
@ 2019-07-23 15:19             ` Sam Ravnborg
  0 siblings, 0 replies; 65+ messages in thread
From: Sam Ravnborg @ 2019-07-23 15:19 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz
  Cc: Neil Armstrong, Maxime Ripard, dri-devel, Douglas Anderson,
	linux-tegra, Thierry Reding, Laurent Pinchart, kernel,
	linux-samsung-soc, linux-rockchip, Vincent Abriou,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie, freedreno,
	Pengutronix Kernel Team, Jonas Karlman, linux-arm-msm, intel-gfx,
	Jyri Sarha, Alexios Zavras, Mamta Shukla, linux-mediatek,
	Rodrigo Vivi, Matthias Brugger, Thomas Gleixner, Sean Paul,
	linux-arm-kernel, Jernej Skrabec, amd-gfx, Tomi Valkeinen,
	Greg Kroah-Hartman, Seung-Woo Kim, linux-kernel, Todor Tomov,
	Kyungmin Park, Huang Rui, Thomas Zimmermann, Alex Deucher,
	Shawn Guo, Christian König, Gerd Hoffmann

Hi Andrej.

On Tue, Jul 23, 2019 at 02:44:50PM +0200, Andrzej Pietrasiewicz wrote:
> Hi Sam,
> 
> W dniu 23.07.2019 o 11:05, Sam Ravnborg pisze:
> > Hi Andrzej
> > 
> > On Thu, Jul 11, 2019 at 01:26:41PM +0200, Andrzej Pietrasiewicz wrote:
> > > Use the ddc pointer provided by the generic connector.
> > > 
> > > Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> > > ---
> > >   drivers/gpu/drm/tilcdc/tilcdc_tfp410.c | 1 +
> > >   1 file changed, 1 insertion(+)
> > > 
> > > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> > > index 62d014c20988..c373edb95666 100644
> > > --- a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> > > +++ b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> > > @@ -219,6 +219,7 @@ static struct drm_connector *tfp410_connector_create(struct drm_device *dev,
> > >   	tfp410_connector->mod = mod;
> > >   	connector = &tfp410_connector->base;
> > > +	connector->ddc = mod->i2c;
> > >   	drm_connector_init(dev, connector, &tfp410_connector_funcs,
> > >   			DRM_MODE_CONNECTOR_DVID);
> > 
> > When reading this code, it looks strange that we set connector->ddc
> > *before* the call to init the connector.
> > One could risk that drm_connector_init() used memset(..) to clear all
> > fields or so, and it would break this order.
> 
> I verified the code of drm_connector_init() and cannot find any memset()
> invocations there. What is your actual concern?
My concern is that drm_connector_init() maybe sometime in the future
will init all fileds in drm_connector, so we loose any assingments
done to drm_connector from *before* we called the init function.

Moving the assignment to after drm_connector_init() would not
let us depend on the actual implmentation of drm_connector_init().

	Sam

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 14/23] drm/tilcdc: Provide ddc symlink in connector sysfs directory
  2019-07-23 12:44         ` Andrzej Pietrasiewicz
  (?)
@ 2019-07-24  8:01           ` Thomas Zimmermann
  -1 siblings, 0 replies; 65+ messages in thread
From: Thomas Zimmermann @ 2019-07-24  8:01 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz, Sam Ravnborg
  Cc: Neil Armstrong, Maxime Ripard, dri-devel, Douglas Anderson,
	linux-tegra, Thierry Reding, Laurent Pinchart, kernel,
	linux-samsung-soc, linux-rockchip, Vincent Abriou,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie, freedreno,
	Pengutronix Kernel Team, Jonas


[-- Attachment #1.1: Type: text/plain, Size: 2381 bytes --]

Hi

Am 23.07.19 um 14:44 schrieb Andrzej Pietrasiewicz:
> Hi Sam,
> 
> W dniu 23.07.2019 o 11:05, Sam Ravnborg pisze:
>> Hi Andrzej
>>
>> On Thu, Jul 11, 2019 at 01:26:41PM +0200, Andrzej Pietrasiewicz wrote:
>>> Use the ddc pointer provided by the generic connector.
>>>
>>> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
>>> ---
>>>   drivers/gpu/drm/tilcdc/tilcdc_tfp410.c | 1 +
>>>   1 file changed, 1 insertion(+)
>>>
>>> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
>>> b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
>>> index 62d014c20988..c373edb95666 100644
>>> --- a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
>>> +++ b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
>>> @@ -219,6 +219,7 @@ static struct drm_connector
>>> *tfp410_connector_create(struct drm_device *dev,
>>>       tfp410_connector->mod = mod;
>>>         connector = &tfp410_connector->base;
>>> +    connector->ddc = mod->i2c;
>>>         drm_connector_init(dev, connector, &tfp410_connector_funcs,
>>>               DRM_MODE_CONNECTOR_DVID);
>>
>> When reading this code, it looks strange that we set connector->ddc
>> *before* the call to init the connector.
>> One could risk that drm_connector_init() used memset(..) to clear all
>> fields or so, and it would break this order.
> 
> I verified the code of drm_connector_init() and cannot find any memset()
> invocations there. What is your actual concern?

I think this echoes my concern about the implicit order of operation. It
seems too easy to get this wrong. If you don't want to add an additional
interface for setting the ddc field, why not add a dedicated initializer
function that sets the ddc field? Something like this.

int drm_connector_init_with_ddc(connector, funcs, ..., ddc)
{
	ret = drm_connector_init(connector, funcs, ...);
	if (ret)
		return ret;

	if (!ddc)
		return 0;

	connector->ddc = ddc;
	/* set up sysfs */

	return 0;
}

Best regards
Thomas

> Andrzej
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Linux GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany
GF: Felix Imendörffer, Mary Higgins, Sri Rasiah
HRB 21284 (AG Nürnberg)


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 14/23] drm/tilcdc: Provide ddc symlink in connector sysfs directory
@ 2019-07-24  8:01           ` Thomas Zimmermann
  0 siblings, 0 replies; 65+ messages in thread
From: Thomas Zimmermann @ 2019-07-24  8:01 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz, Sam Ravnborg
  Cc: Neil Armstrong, Maxime Ripard, dri-devel, Douglas Anderson,
	linux-tegra, Thierry Reding, Laurent Pinchart, kernel,
	linux-samsung-soc, linux-rockchip, Vincent Abriou,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie, freedreno,
	Pengutronix Kernel Team, Jonas Karlman, linux-arm-msm, intel-gfx,
	Jyri Sarha, Alexios Zavras, Mamta Shukla, linux-mediatek,
	Rodrigo Vivi, Matthias Brugger, Thomas Gleixner, Sean Paul,
	linux-arm-kernel, Jernej Skrabec, amd-gfx, Tomi Valkeinen,
	Greg Kroah-Hartman, Seung-Woo Kim, linux-kernel, Todor Tomov,
	Kyungmin Park, Huang Rui, Alex Deucher, Shawn Guo,
	Christian König, Gerd Hoffmann


[-- Attachment #1.1: Type: text/plain, Size: 2381 bytes --]

Hi

Am 23.07.19 um 14:44 schrieb Andrzej Pietrasiewicz:
> Hi Sam,
> 
> W dniu 23.07.2019 o 11:05, Sam Ravnborg pisze:
>> Hi Andrzej
>>
>> On Thu, Jul 11, 2019 at 01:26:41PM +0200, Andrzej Pietrasiewicz wrote:
>>> Use the ddc pointer provided by the generic connector.
>>>
>>> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
>>> ---
>>>   drivers/gpu/drm/tilcdc/tilcdc_tfp410.c | 1 +
>>>   1 file changed, 1 insertion(+)
>>>
>>> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
>>> b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
>>> index 62d014c20988..c373edb95666 100644
>>> --- a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
>>> +++ b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
>>> @@ -219,6 +219,7 @@ static struct drm_connector
>>> *tfp410_connector_create(struct drm_device *dev,
>>>       tfp410_connector->mod = mod;
>>>         connector = &tfp410_connector->base;
>>> +    connector->ddc = mod->i2c;
>>>         drm_connector_init(dev, connector, &tfp410_connector_funcs,
>>>               DRM_MODE_CONNECTOR_DVID);
>>
>> When reading this code, it looks strange that we set connector->ddc
>> *before* the call to init the connector.
>> One could risk that drm_connector_init() used memset(..) to clear all
>> fields or so, and it would break this order.
> 
> I verified the code of drm_connector_init() and cannot find any memset()
> invocations there. What is your actual concern?

I think this echoes my concern about the implicit order of operation. It
seems too easy to get this wrong. If you don't want to add an additional
interface for setting the ddc field, why not add a dedicated initializer
function that sets the ddc field? Something like this.

int drm_connector_init_with_ddc(connector, funcs, ..., ddc)
{
	ret = drm_connector_init(connector, funcs, ...);
	if (ret)
		return ret;

	if (!ddc)
		return 0;

	connector->ddc = ddc;
	/* set up sysfs */

	return 0;
}

Best regards
Thomas

> Andrzej
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Linux GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany
GF: Felix Imendörffer, Mary Higgins, Sri Rasiah
HRB 21284 (AG Nürnberg)


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 14/23] drm/tilcdc: Provide ddc symlink in connector sysfs directory
@ 2019-07-24  8:01           ` Thomas Zimmermann
  0 siblings, 0 replies; 65+ messages in thread
From: Thomas Zimmermann @ 2019-07-24  8:01 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz, Sam Ravnborg
  Cc: Neil Armstrong, Maxime Ripard, dri-devel, linux-kernel,
	Matthias Brugger, Thierry Reding, Laurent Pinchart, Shawn Guo,
	kernel, linux-samsung-soc, linux-rockchip, Sean Paul,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie, Jonas Karlman,
	linux-arm-msm, intel-gfx, Jyri Sarha, Alexios Zavras,
	Mamta Shukla, linux-mediatek, Rodrigo Vivi, linux-tegra,
	Thomas Gleixner, Vincent Abriou, linux-arm-kernel,
	Jernej Skrabec, amd-gfx, Tomi Valkeinen, Greg Kroah-Hartman,
	Seung-Woo Kim, Douglas Anderson, Todor Tomov, Kyungmin Park,
	Huang Rui, Pengutronix Kernel Team, Alex Deucher, freedreno,
	Christian König, Gerd Hoffmann


[-- Attachment #1.1.1: Type: text/plain, Size: 2381 bytes --]

Hi

Am 23.07.19 um 14:44 schrieb Andrzej Pietrasiewicz:
> Hi Sam,
> 
> W dniu 23.07.2019 o 11:05, Sam Ravnborg pisze:
>> Hi Andrzej
>>
>> On Thu, Jul 11, 2019 at 01:26:41PM +0200, Andrzej Pietrasiewicz wrote:
>>> Use the ddc pointer provided by the generic connector.
>>>
>>> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
>>> ---
>>>   drivers/gpu/drm/tilcdc/tilcdc_tfp410.c | 1 +
>>>   1 file changed, 1 insertion(+)
>>>
>>> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
>>> b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
>>> index 62d014c20988..c373edb95666 100644
>>> --- a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
>>> +++ b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
>>> @@ -219,6 +219,7 @@ static struct drm_connector
>>> *tfp410_connector_create(struct drm_device *dev,
>>>       tfp410_connector->mod = mod;
>>>         connector = &tfp410_connector->base;
>>> +    connector->ddc = mod->i2c;
>>>         drm_connector_init(dev, connector, &tfp410_connector_funcs,
>>>               DRM_MODE_CONNECTOR_DVID);
>>
>> When reading this code, it looks strange that we set connector->ddc
>> *before* the call to init the connector.
>> One could risk that drm_connector_init() used memset(..) to clear all
>> fields or so, and it would break this order.
> 
> I verified the code of drm_connector_init() and cannot find any memset()
> invocations there. What is your actual concern?

I think this echoes my concern about the implicit order of operation. It
seems too easy to get this wrong. If you don't want to add an additional
interface for setting the ddc field, why not add a dedicated initializer
function that sets the ddc field? Something like this.

int drm_connector_init_with_ddc(connector, funcs, ..., ddc)
{
	ret = drm_connector_init(connector, funcs, ...);
	if (ret)
		return ret;

	if (!ddc)
		return 0;

	connector->ddc = ddc;
	/* set up sysfs */

	return 0;
}

Best regards
Thomas

> Andrzej
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Linux GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany
GF: Felix Imendörffer, Mary Higgins, Sri Rasiah
HRB 21284 (AG Nürnberg)


[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 14/23] drm/tilcdc: Provide ddc symlink in connector sysfs directory
  2019-07-24  8:01           ` Thomas Zimmermann
  (?)
@ 2019-07-24  8:51             ` Andrzej Pietrasiewicz
  -1 siblings, 0 replies; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-24  8:51 UTC (permalink / raw)
  To: Thomas Zimmermann, Sam Ravnborg
  Cc: Neil Armstrong, Maxime Ripard, dri-devel, Douglas Anderson,
	linux-tegra, Thierry Reding, Laurent Pinchart, kernel,
	linux-samsung-soc, linux-rockchip, Vincent Abriou,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie, freedreno,
	Pengutronix Kernel Team, Jonas

Hi Thomas,

W dniu 24.07.2019 o 10:01, Thomas Zimmermann pisze:
> Hi
> 


> 
> I think this echoes my concern about the implicit order of operation. It
> seems too easy to get this wrong. If you don't want to add an additional
> interface for setting the ddc field, why not add a dedicated initializer
> function that sets the ddc field? Something like this.
> 
> int drm_connector_init_with_ddc(connector, funcs, ..., ddc)
> {
> 	ret = drm_connector_init(connector, funcs, ...);
> 	if (ret)
> 		return ret;
> 
> 	if (!ddc)
> 		return 0;
> 
> 	connector->ddc = ddc;
> 	/* set up sysfs */
> 
> 	return 0;
> }
> 

True. I will send a v5 soon.

Thanks,

Andrzej

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 14/23] drm/tilcdc: Provide ddc symlink in connector sysfs directory
@ 2019-07-24  8:51             ` Andrzej Pietrasiewicz
  0 siblings, 0 replies; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-24  8:51 UTC (permalink / raw)
  To: Thomas Zimmermann, Sam Ravnborg
  Cc: Neil Armstrong, Maxime Ripard, dri-devel, Douglas Anderson,
	linux-tegra, Thierry Reding, Laurent Pinchart, kernel,
	linux-samsung-soc, linux-rockchip, Vincent Abriou,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie, freedreno,
	Pengutronix Kernel Team, Jonas Karlman, linux-arm-msm, intel-gfx,
	Jyri Sarha, Alexios Zavras, Mamta Shukla, linux-mediatek,
	Rodrigo Vivi, Matthias Brugger, Thomas Gleixner, Sean Paul,
	linux-arm-kernel, Jernej Skrabec, amd-gfx, Tomi Valkeinen,
	Greg Kroah-Hartman, Seung-Woo Kim, linux-kernel, Todor Tomov,
	Kyungmin Park, Huang Rui, Alex Deucher, Shawn Guo,
	Christian König, Gerd Hoffmann

Hi Thomas,

W dniu 24.07.2019 o 10:01, Thomas Zimmermann pisze:
> Hi
> 


> 
> I think this echoes my concern about the implicit order of operation. It
> seems too easy to get this wrong. If you don't want to add an additional
> interface for setting the ddc field, why not add a dedicated initializer
> function that sets the ddc field? Something like this.
> 
> int drm_connector_init_with_ddc(connector, funcs, ..., ddc)
> {
> 	ret = drm_connector_init(connector, funcs, ...);
> 	if (ret)
> 		return ret;
> 
> 	if (!ddc)
> 		return 0;
> 
> 	connector->ddc = ddc;
> 	/* set up sysfs */
> 
> 	return 0;
> }
> 

True. I will send a v5 soon.

Thanks,

Andrzej

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 14/23] drm/tilcdc: Provide ddc symlink in connector sysfs directory
@ 2019-07-24  8:51             ` Andrzej Pietrasiewicz
  0 siblings, 0 replies; 65+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-24  8:51 UTC (permalink / raw)
  To: Thomas Zimmermann, Sam Ravnborg
  Cc: Neil Armstrong, Maxime Ripard, dri-devel, linux-kernel,
	Matthias Brugger, Thierry Reding, Laurent Pinchart, Shawn Guo,
	kernel, linux-samsung-soc, linux-rockchip, Sean Paul,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie, Jonas Karlman,
	linux-arm-msm, intel-gfx, Jyri Sarha, Alexios Zavras,
	Mamta Shukla, linux-mediatek, Rodrigo Vivi, linux-tegra,
	Thomas Gleixner, Vincent Abriou, linux-arm-kernel,
	Jernej Skrabec, amd-gfx, Tomi Valkeinen, Greg Kroah-Hartman,
	Seung-Woo Kim, Douglas Anderson, Todor Tomov, Kyungmin Park,
	Huang Rui, Pengutronix Kernel Team, Alex Deucher, freedreno,
	Christian König, Gerd Hoffmann

Hi Thomas,

W dniu 24.07.2019 o 10:01, Thomas Zimmermann pisze:
> Hi
> 


> 
> I think this echoes my concern about the implicit order of operation. It
> seems too easy to get this wrong. If you don't want to add an additional
> interface for setting the ddc field, why not add a dedicated initializer
> function that sets the ddc field? Something like this.
> 
> int drm_connector_init_with_ddc(connector, funcs, ..., ddc)
> {
> 	ret = drm_connector_init(connector, funcs, ...);
> 	if (ret)
> 		return ret;
> 
> 	if (!ddc)
> 		return 0;
> 
> 	connector->ddc = ddc;
> 	/* set up sysfs */
> 
> 	return 0;
> }
> 

True. I will send a v5 soon.

Thanks,

Andrzej

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 18/23] drm/bridge: dumb-vga-dac: Provide ddc symlink in connector sysfs directory
  2019-07-11 11:26   ` [PATCH v4 18/23] drm/bridge: dumb-vga-dac: " Andrzej Pietrasiewicz
@ 2019-07-30 12:15     ` Neil Armstrong
  0 siblings, 0 replies; 65+ messages in thread
From: Neil Armstrong @ 2019-07-30 12:15 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz, dri-devel
  Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Maxime Ripard,
	Douglas Anderson, Andrzej Hajda, Laurent Pinchart,
	Benjamin Gaignard, kernel, Fabio Estevam, David (ChunMing) Zhou,
	linux-samsung-soc, Joonyoung Shim, linux-rockchip,
	Vincent Abriou, Krzysztof Kozlowski, Jonathan Hunter,
	David Airlie, Chen-Yu Tsai, Kukjin Kim, NXP Linux Team, CK Hu,
	Dave Airlie

On 11/07/2019 13:26, Andrzej Pietrasiewicz wrote:
> Use the ddc pointer provided by the generic connector.
> 
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> ---
>  drivers/gpu/drm/bridge/dumb-vga-dac.c | 19 +++++++++----------
>  1 file changed, 9 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/gpu/drm/bridge/dumb-vga-dac.c b/drivers/gpu/drm/bridge/dumb-vga-dac.c
> index d32885b906ae..b4cc3238400a 100644
> --- a/drivers/gpu/drm/bridge/dumb-vga-dac.c
> +++ b/drivers/gpu/drm/bridge/dumb-vga-dac.c
> @@ -20,7 +20,6 @@ struct dumb_vga {
>  	struct drm_bridge	bridge;
>  	struct drm_connector	connector;
>  
> -	struct i2c_adapter	*ddc;
>  	struct regulator	*vdd;
>  };
>  
> @@ -42,10 +41,10 @@ static int dumb_vga_get_modes(struct drm_connector *connector)
>  	struct edid *edid;
>  	int ret;
>  
> -	if (IS_ERR(vga->ddc))
> +	if (IS_ERR(vga->connector.ddc))
>  		goto fallback;
>  
> -	edid = drm_get_edid(connector, vga->ddc);
> +	edid = drm_get_edid(connector, vga->connector.ddc);
>  	if (!edid) {
>  		DRM_INFO("EDID readout failed, falling back to standard modes\n");
>  		goto fallback;
> @@ -84,7 +83,7 @@ dumb_vga_connector_detect(struct drm_connector *connector, bool force)
>  	 * wire the DDC pins, or the I2C bus might not be working at
>  	 * all.
>  	 */
> -	if (!IS_ERR(vga->ddc) && drm_probe_ddc(vga->ddc))
> +	if (!IS_ERR(vga->connector.ddc) && drm_probe_ddc(vga->connector.ddc))
>  		return connector_status_connected;
>  
>  	return connector_status_unknown;
> @@ -190,14 +189,14 @@ static int dumb_vga_probe(struct platform_device *pdev)
>  		dev_dbg(&pdev->dev, "No vdd regulator found: %d\n", ret);
>  	}
>  
> -	vga->ddc = dumb_vga_retrieve_ddc(&pdev->dev);
> -	if (IS_ERR(vga->ddc)) {
> -		if (PTR_ERR(vga->ddc) == -ENODEV) {
> +	vga->connector.ddc = dumb_vga_retrieve_ddc(&pdev->dev);
> +	if (IS_ERR(vga->connector.ddc)) {
> +		if (PTR_ERR(vga->connector.ddc) == -ENODEV) {
>  			dev_dbg(&pdev->dev,
>  				"No i2c bus specified. Disabling EDID readout\n");
>  		} else {
>  			dev_err(&pdev->dev, "Couldn't retrieve i2c bus\n");
> -			return PTR_ERR(vga->ddc);
> +			return PTR_ERR(vga->connector.ddc);
>  		}
>  	}
>  
> @@ -216,8 +215,8 @@ static int dumb_vga_remove(struct platform_device *pdev)
>  
>  	drm_bridge_remove(&vga->bridge);
>  
> -	if (!IS_ERR(vga->ddc))
> -		i2c_put_adapter(vga->ddc);
> +	if (!IS_ERR(vga->connector.ddc))
> +		i2c_put_adapter(vga->connector.ddc);
>  
>  	return 0;
>  }
> 

Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 19/23] drm/bridge: dw-hdmi: Provide ddc symlink in connector sysfs directory
       [not found]   ` <ec88a18feffa37eceb947bb83a6f9f51fb575566.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
@ 2019-07-30 12:17     ` Neil Armstrong
       [not found]       ` <449b11e6-2386-4e5b-26f7-eb6046911f24-rdvid1DuHRBWk0Htik3J/w@public.gmane.org>
  0 siblings, 1 reply; 65+ messages in thread
From: Neil Armstrong @ 2019-07-30 12:17 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Maxime Ripard,
	Ramalingam C, Joonas Lahtinen, Douglas Anderson, Andrzej Hajda,
	Thierry Reding, Laurent Pinchart, Benjamin Gaignard,
	kernel-ZGY8ohtN/8qB+jHODAdFcQ, Fabio Estevam,
	Ville Syrjälä,
	David (ChunMing) Zhou, linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA,
	Joonyoung Shim, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	Vincent Abriou, Rob Clark, Krzysztof Kozlowski

On 11/07/2019 13:26, Andrzej Pietrasiewicz wrote:
> Use the ddc pointer provided by the generic connector.
> 
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> ---
>  drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 40 +++++++++++------------
>  1 file changed, 20 insertions(+), 20 deletions(-)
> 
> diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> index c6490949d9db..0b9c9f2619da 100644
> --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> @@ -161,7 +161,6 @@ struct dw_hdmi {
>  
>  	struct drm_display_mode previous_mode;
>  
> -	struct i2c_adapter *ddc;
>  	void __iomem *regs;
>  	bool sink_is_hdmi;
>  	bool sink_has_audio;
> @@ -1118,7 +1117,7 @@ static bool dw_hdmi_support_scdc(struct dw_hdmi *hdmi)
>  		return false;
>  
>  	/* Disable if no DDC bus */
> -	if (!hdmi->ddc)
> +	if (!hdmi->connector.ddc)
>  		return false;
>  
>  	/* Disable if SCDC is not supported, or if an HF-VSDB block is absent */
> @@ -1156,10 +1155,11 @@ void dw_hdmi_set_high_tmds_clock_ratio(struct dw_hdmi *hdmi)
>  
>  	/* Control for TMDS Bit Period/TMDS Clock-Period Ratio */
>  	if (dw_hdmi_support_scdc(hdmi)) {
> +		struct i2c_adapter *ddc = hdmi->connector.ddc;
>  		if (mtmdsclock > HDMI14_MAX_TMDSCLK)
> -			drm_scdc_set_high_tmds_clock_ratio(hdmi->ddc, 1);
> +			drm_scdc_set_high_tmds_clock_ratio(ddc, 1);
>  		else
> -			drm_scdc_set_high_tmds_clock_ratio(hdmi->ddc, 0);
> +			drm_scdc_set_high_tmds_clock_ratio(ddc, 0);
>  	}
>  }
>  EXPORT_SYMBOL_GPL(dw_hdmi_set_high_tmds_clock_ratio);
> @@ -1750,6 +1750,7 @@ static void hdmi_av_composer(struct dw_hdmi *hdmi,
>  	if (dw_hdmi_support_scdc(hdmi)) {
>  		if (vmode->mtmdsclock > HDMI14_MAX_TMDSCLK ||
>  		    hdmi_info->scdc.scrambling.low_rates) {
> +			struct i2c_adapter *ddc = hdmi->connector.ddc;
>  			/*
>  			 * HDMI2.0 Specifies the following procedure:
>  			 * After the Source Device has determined that
> @@ -1759,13 +1760,12 @@ static void hdmi_av_composer(struct dw_hdmi *hdmi,
>  			 * Source Devices compliant shall set the
>  			 * Source Version = 1.
>  			 */
> -			drm_scdc_readb(hdmi->ddc, SCDC_SINK_VERSION,
> -				       &bytes);
> -			drm_scdc_writeb(hdmi->ddc, SCDC_SOURCE_VERSION,
> +			drm_scdc_readb(ddc, SCDC_SINK_VERSION, &bytes);
> +			drm_scdc_writeb(ddc, SCDC_SOURCE_VERSION,
>  				min_t(u8, bytes, SCDC_MIN_SOURCE_VERSION));
>  
>  			/* Enabled Scrambling in the Sink */
> -			drm_scdc_set_scrambling(hdmi->ddc, 1);
> +			drm_scdc_set_scrambling(hdmi->connector.ddc, 1);
>  
>  			/*
>  			 * To activate the scrambler feature, you must ensure
> @@ -1781,7 +1781,7 @@ static void hdmi_av_composer(struct dw_hdmi *hdmi,
>  			hdmi_writeb(hdmi, 0, HDMI_FC_SCRAMBLER_CTRL);
>  			hdmi_writeb(hdmi, (u8)~HDMI_MC_SWRSTZ_TMDSSWRST_REQ,
>  				    HDMI_MC_SWRSTZ);
> -			drm_scdc_set_scrambling(hdmi->ddc, 0);
> +			drm_scdc_set_scrambling(hdmi->connector.ddc, 0);
>  		}
>  	}
>  
> @@ -2127,10 +2127,10 @@ static int dw_hdmi_connector_get_modes(struct drm_connector *connector)
>  	struct edid *edid;
>  	int ret = 0;
>  
> -	if (!hdmi->ddc)
> +	if (!hdmi->connector.ddc)
>  		return 0;
>  
> -	edid = drm_get_edid(connector, hdmi->ddc);
> +	edid = drm_get_edid(connector, hdmi->connector.ddc);
>  	if (edid) {
>  		dev_dbg(hdmi->dev, "got edid: width[%d] x height[%d]\n",
>  			edid->width_cm, edid->height_cm);
> @@ -2548,9 +2548,9 @@ __dw_hdmi_probe(struct platform_device *pdev,
>  
>  	ddc_node = of_parse_phandle(np, "ddc-i2c-bus", 0);
>  	if (ddc_node) {
> -		hdmi->ddc = of_get_i2c_adapter_by_node(ddc_node);
> +		hdmi->connector.ddc = of_get_i2c_adapter_by_node(ddc_node);
>  		of_node_put(ddc_node);
> -		if (!hdmi->ddc) {
> +		if (!hdmi->connector.ddc) {
>  			dev_dbg(hdmi->dev, "failed to read ddc node\n");
>  			return ERR_PTR(-EPROBE_DEFER);
>  		}
> @@ -2689,7 +2689,7 @@ __dw_hdmi_probe(struct platform_device *pdev,
>  	hdmi_init_clk_regenerator(hdmi);
>  
>  	/* If DDC bus is not specified, try to register HDMI I2C bus */
> -	if (!hdmi->ddc) {
> +	if (!hdmi->connector.ddc) {
>  		/* Look for (optional) stuff related to unwedging */
>  		hdmi->pinctrl = devm_pinctrl_get(dev);
>  		if (!IS_ERR(hdmi->pinctrl)) {
> @@ -2708,9 +2708,9 @@ __dw_hdmi_probe(struct platform_device *pdev,
>  			}
>  		}
>  
> -		hdmi->ddc = dw_hdmi_i2c_adapter(hdmi);
> -		if (IS_ERR(hdmi->ddc))
> -			hdmi->ddc = NULL;
> +		hdmi->connector.ddc = dw_hdmi_i2c_adapter(hdmi);
> +		if (IS_ERR(hdmi->connector.ddc))
> +			hdmi->connector.ddc = NULL;
>  	}
>  
>  	hdmi->bridge.driver_private = hdmi;
> @@ -2776,7 +2776,7 @@ __dw_hdmi_probe(struct platform_device *pdev,
>  err_iahb:
>  	if (hdmi->i2c) {
>  		i2c_del_adapter(&hdmi->i2c->adap);
> -		hdmi->ddc = NULL;
> +		hdmi->connector.ddc = NULL;
>  	}
>  
>  	if (hdmi->cec_notifier)
> @@ -2788,7 +2788,7 @@ __dw_hdmi_probe(struct platform_device *pdev,
>  err_isfr:
>  	clk_disable_unprepare(hdmi->isfr_clk);
>  err_res:
> -	i2c_put_adapter(hdmi->ddc);
> +	i2c_put_adapter(hdmi->connector.ddc);
>  
>  	return ERR_PTR(ret);
>  }
> @@ -2814,7 +2814,7 @@ static void __dw_hdmi_remove(struct dw_hdmi *hdmi)
>  	if (hdmi->i2c)
>  		i2c_del_adapter(&hdmi->i2c->adap);
>  	else
> -		i2c_put_adapter(hdmi->ddc);
> +		i2c_put_adapter(hdmi->connector.ddc);
>  }
>  
>  /* -----------------------------------------------------------------------------
> 

Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 20/23] drm/bridge: ti-tfp410: Provide ddc symlink in connector sysfs directory
  2019-07-11 11:26   ` [PATCH v4 20/23] drm/bridge: ti-tfp410: " Andrzej Pietrasiewicz
@ 2019-07-30 12:25     ` Neil Armstrong
  0 siblings, 0 replies; 65+ messages in thread
From: Neil Armstrong @ 2019-07-30 12:25 UTC (permalink / raw)
  To: Andrzej Pietrasiewicz, dri-devel
  Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Maxime Ripard,
	Douglas Anderson, Andrzej Hajda, Laurent Pinchart,
	Benjamin Gaignard, kernel, Fabio Estevam, David (ChunMing) Zhou,
	linux-samsung-soc, Joonyoung Shim, linux-rockchip,
	Vincent Abriou, Krzysztof Kozlowski, Jonathan Hunter,
	David Airlie, Chen-Yu Tsai, Kukjin Kim, NXP Linux Team, CK Hu,
	Dave Airlie

On 11/07/2019 13:26, Andrzej Pietrasiewicz wrote:
> Use the ddc pointer provided by the generic connector.
> 
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> ---
>  drivers/gpu/drm/bridge/ti-tfp410.c | 19 +++++++++----------
>  1 file changed, 9 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/gpu/drm/bridge/ti-tfp410.c b/drivers/gpu/drm/bridge/ti-tfp410.c
> index dbf35c7bc85e..e55358f0a5ba 100644
> --- a/drivers/gpu/drm/bridge/ti-tfp410.c
> +++ b/drivers/gpu/drm/bridge/ti-tfp410.c
> @@ -26,7 +26,6 @@ struct tfp410 {
>  	unsigned int		connector_type;
>  
>  	u32			bus_format;
> -	struct i2c_adapter	*ddc;
>  	struct gpio_desc	*hpd;
>  	int			hpd_irq;
>  	struct delayed_work	hpd_work;
> @@ -55,10 +54,10 @@ static int tfp410_get_modes(struct drm_connector *connector)
>  	struct edid *edid;
>  	int ret;
>  
> -	if (!dvi->ddc)
> +	if (!dvi->connector.ddc)
>  		goto fallback;
>  
> -	edid = drm_get_edid(connector, dvi->ddc);
> +	edid = drm_get_edid(connector, dvi->connector.ddc);
>  	if (!edid) {
>  		DRM_INFO("EDID read failed. Fallback to standard modes\n");
>  		goto fallback;
> @@ -98,8 +97,8 @@ tfp410_connector_detect(struct drm_connector *connector, bool force)
>  			return connector_status_disconnected;
>  	}
>  
> -	if (dvi->ddc) {
> -		if (drm_probe_ddc(dvi->ddc))
> +	if (dvi->connector.ddc) {
> +		if (drm_probe_ddc(dvi->connector.ddc))
>  			return connector_status_connected;
>  		else
>  			return connector_status_disconnected;
> @@ -297,8 +296,8 @@ static int tfp410_get_connector_properties(struct tfp410 *dvi)
>  	if (!ddc_phandle)
>  		goto fail;
>  
> -	dvi->ddc = of_get_i2c_adapter_by_node(ddc_phandle);
> -	if (dvi->ddc)
> +	dvi->connector.ddc = of_get_i2c_adapter_by_node(ddc_phandle);
> +	if (dvi->connector.ddc)
>  		dev_info(dvi->dev, "Connector's ddc i2c bus found\n");
>  	else
>  		ret = -EPROBE_DEFER;
> @@ -367,7 +366,7 @@ static int tfp410_init(struct device *dev, bool i2c)
>  
>  	return 0;
>  fail:
> -	i2c_put_adapter(dvi->ddc);
> +	i2c_put_adapter(dvi->connector.ddc);
>  	if (dvi->hpd)
>  		gpiod_put(dvi->hpd);
>  	return ret;
> @@ -382,8 +381,8 @@ static int tfp410_fini(struct device *dev)
>  
>  	drm_bridge_remove(&dvi->bridge);
>  
> -	if (dvi->ddc)
> -		i2c_put_adapter(dvi->ddc);
> +	if (dvi->connector.ddc)
> +		i2c_put_adapter(dvi->connector.ddc);
>  	if (dvi->hpd)
>  		gpiod_put(dvi->hpd);
>  
> 

Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 19/23] drm/bridge: dw-hdmi: Provide ddc symlink in connector sysfs directory
       [not found]       ` <449b11e6-2386-4e5b-26f7-eb6046911f24-rdvid1DuHRBWk0Htik3J/w@public.gmane.org>
@ 2019-07-30 17:30         ` Sam Ravnborg
       [not found]           ` <20190730173007.GA28537-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
  0 siblings, 1 reply; 65+ messages in thread
From: Sam Ravnborg @ 2019-07-30 17:30 UTC (permalink / raw)
  To: Neil Armstrong
  Cc: Y.C. Chen, Heiko Stübner, Maxime Ripard, Ramalingam C,
	Joonas Lahtinen, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	Douglas Anderson, Andrzej Hajda, Thierry Reding,
	Laurent Pinchart, Benjamin Gaignard,
	kernel-ZGY8ohtN/8qB+jHODAdFcQ, Fabio Estevam,
	Ville Syrjälä,
	David (ChunMing) Zhou, linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA,
	Joonyoung Shim, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	Vincent Abriou, Rob Clark, Krzysztof Kozlowski

Hi Neil.

> > Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> > ---
> >  drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 40 +++++++++++------------
> >  1 file changed, 20 insertions(+), 20 deletions(-)
> > 
...
> 
> Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>

There is now a much simpler v6 of this patch.
Care to take a look and ack/r-b?

	Sam
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 19/23] drm/bridge: dw-hdmi: Provide ddc symlink in connector sysfs directory
       [not found]           ` <20190730173007.GA28537-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
@ 2019-07-31  7:32             ` Neil Armstrong
  0 siblings, 0 replies; 65+ messages in thread
From: Neil Armstrong @ 2019-07-31  7:32 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: Y.C. Chen, Heiko Stübner, Maxime Ripard, Ramalingam C,
	Joonas Lahtinen, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	Douglas Anderson, Andrzej Hajda, Thierry Reding,
	Laurent Pinchart, Benjamin Gaignard,
	kernel-ZGY8ohtN/8qB+jHODAdFcQ, Fabio Estevam,
	Ville Syrjälä,
	David (ChunMing) Zhou, linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA,
	Joonyoung Shim, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	Vincent Abriou, Rob Clark, Krzysztof Kozlowski

Hi,

On 30/07/2019 19:30, Sam Ravnborg wrote:
> Hi Neil.
> 
>>> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
>>> ---
>>>  drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 40 +++++++++++------------
>>>  1 file changed, 20 insertions(+), 20 deletions(-)
>>>
> ...
>>
>> Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
> 
> There is now a much simpler v6 of this patch.
> Care to take a look and ack/r-b?

I saw it too late, I reviewed the bridge patches, now
I'll have a look at the whole patchset.

Neil

> 
> 	Sam
> 

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 14/23] drm/tilcdc: Provide ddc symlink in connector sysfs directory
  2019-07-24  8:01           ` Thomas Zimmermann
  (?)
@ 2019-07-31 19:39               ` Ezequiel Garcia
  -1 siblings, 0 replies; 65+ messages in thread
From: Ezequiel Garcia @ 2019-07-31 19:39 UTC (permalink / raw)
  To: Thomas Zimmermann, Andrzej Pietrasiewicz, Sam Ravnborg
  Cc: Neil Armstrong, Maxime Ripard,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Douglas Anderson,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA, Thierry Reding,
	Laurent Pinchart, kernel-ZGY8ohtN/8qB+jHODAdFcQ,
	linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA,
	linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Vincent Abriou,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie,
	freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Jonas Karlman,
	linux-arm-msm-u79uwXL29TY76Z2rM5mHXA,
	intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Jyri Sarha,
	Alexios Zavras, Mamta Shukla

Hi,

I'm glad to see this work moving forward!

On Wed, 2019-07-24 at 10:01 +0200, Thomas Zimmermann wrote:
> Hi
> 
> Am 23.07.19 um 14:44 schrieb Andrzej Pietrasiewicz:
> > Hi Sam,
> > 
> > W dniu 23.07.2019 o 11:05, Sam Ravnborg pisze:
> > > Hi Andrzej
> > > 
> > > On Thu, Jul 11, 2019 at 01:26:41PM +0200, Andrzej Pietrasiewicz wrote:
> > > > Use the ddc pointer provided by the generic connector.
> > > > 
> > > > Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> > > > ---
> > > >   drivers/gpu/drm/tilcdc/tilcdc_tfp410.c | 1 +
> > > >   1 file changed, 1 insertion(+)
> > > > 
> > > > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> > > > b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> > > > index 62d014c20988..c373edb95666 100644
> > > > --- a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> > > > +++ b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> > > > @@ -219,6 +219,7 @@ static struct drm_connector
> > > > *tfp410_connector_create(struct drm_device *dev,
> > > >       tfp410_connector->mod = mod;
> > > >         connector = &tfp410_connector->base;
> > > > +    connector->ddc = mod->i2c;
> > > >         drm_connector_init(dev, connector, &tfp410_connector_funcs,
> > > >               DRM_MODE_CONNECTOR_DVID);
> > > 
> > > When reading this code, it looks strange that we set connector->ddc
> > > *before* the call to init the connector.
> > > One could risk that drm_connector_init() used memset(..) to clear all
> > > fields or so, and it would break this order.
> > 
> > I verified the code of drm_connector_init() and cannot find any memset()
> > invocations there. What is your actual concern?
> 
> I think this echoes my concern about the implicit order of operation. It
> seems too easy to get this wrong. If you don't want to add an additional
> interface for setting the ddc field, why not add a dedicated initializer
> function that sets the ddc field? Something like this.
> 
> int drm_connector_init_with_ddc(connector, funcs, ..., ddc)
> {
> 	ret = drm_connector_init(connector, funcs, ...);
> 	if (ret)
> 		return ret;
> 
> 	if (!ddc)
> 		return 0;
> 
> 	connector->ddc = ddc;
> 	/* set up sysfs */
> 

I know this comment comes late to the party, but I'm a slightly
suprised to see the above instead of implementing drm_connector_init
in terms of drm_connector_init_with_ddc, as we typically do.

Namely, something along these lines (code might not even build!):

--------------------------------------8<-----------------------------
diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c
index d49e19f3de3a..dbd095933175 100644
--- a/drivers/gpu/drm/drm_connector.c
+++ b/drivers/gpu/drm/drm_connector.c
@@ -179,11 +179,12 @@ void drm_connector_free_work_fn(struct work_struct *work)
 }
 
 /**
- * drm_connector_init - Init a preallocated connector
+ * drm_connector_init_with_ddc - Init a preallocated connector
  * @dev: DRM device
  * @connector: the connector to init
  * @funcs: callbacks for this connector
  * @connector_type: user visible type of the connector
+ * @ddc: pointer to the associated ddc adapter (optional)
  *
  * Initialises a preallocated connector. Connectors should be
  * subclassed as part of driver connector objects.
@@ -191,10 +192,11 @@ void drm_connector_free_work_fn(struct work_struct *work)
  * Returns:
  * Zero on success, error code on failure.
  */
-int drm_connector_init(struct drm_device *dev,
-		       struct drm_connector *connector,
-		       const struct drm_connector_funcs *funcs,
-		       int connector_type)
+int drm_connector_init_with_ddc(struct drm_device *dev,
+				struct drm_connector *connector,
+				const struct drm_connector_funcs *funcs,
+				int connector_type,
+				struct i2c_adapter *ddc)
 {
 	struct drm_mode_config *config = &dev->mode_config;
 	int ret;
@@ -215,6 +217,9 @@ int drm_connector_init(struct drm_device *dev,
 	connector->dev = dev;
 	connector->funcs = funcs;
 
+	/* provide ddc symlink in sysfs */
+	connector->ddc = ddc;
+
 	/* connector index is used with 32bit bitmasks */
 	ret = ida_simple_get(&config->connector_ida, 0, 32, GFP_KERNEL);
 	if (ret < 0) {
@@ -295,41 +300,6 @@ int drm_connector_init(struct drm_device *dev,
 
 	return ret;
 }
-EXPORT_SYMBOL(drm_connector_init);
-
-/**
- * drm_connector_init_with_ddc - Init a preallocated connector
- * @dev: DRM device
- * @connector: the connector to init
- * @funcs: callbacks for this connector
- * @connector_type: user visible type of the connector
- * @ddc: pointer to the associated ddc adapter
- *
- * Initialises a preallocated connector. Connectors should be
- * subclassed as part of driver connector objects.
- *
- * Ensures that the ddc field of the connector is correctly set.
- *
- * Returns:
- * Zero on success, error code on failure.
- */
-int drm_connector_init_with_ddc(struct drm_device *dev,
-				struct drm_connector *connector,
-				const struct drm_connector_funcs *funcs,
-				int connector_type,
-				struct i2c_adapter *ddc)
-{
-	int ret;
-
-	ret = drm_connector_init(dev, connector, funcs, connector_type);
-	if (ret)
-		return ret;
-
-	/* provide ddc symlink in sysfs */
-	connector->ddc = ddc;
-
-	return ret;
-}
 EXPORT_SYMBOL(drm_connector_init_with_ddc);
 
 /**
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index fc5d08438333..1884abf61a86 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -1408,10 +1408,6 @@ struct drm_connector {
 
 #define obj_to_connector(x) container_of(x, struct drm_connector, base)
 
-int drm_connector_init(struct drm_device *dev,
-		       struct drm_connector *connector,
-		       const struct drm_connector_funcs *funcs,
-		       int connector_type);
 int drm_connector_init_with_ddc(struct drm_device *dev,
 				struct drm_connector *connector,
 				const struct drm_connector_funcs *funcs,
@@ -1425,6 +1421,16 @@ int drm_connector_attach_encoder(struct drm_connector *connector,
 
 void drm_connector_cleanup(struct drm_connector *connector);
 
+static inline int
+drm_connector_init(struct drm_device *dev,
+		   struct drm_connector *connector,
+		   const struct drm_connector_funcs *funcs,
+		   int connector_type);
+{
+	return drm_connector_init_with_ddc(dev, connector, funcs,
+					   connector_type, NULL);
+}
+
 static inline unsigned int drm_connector_index(const struct drm_connector *connector)
 {
 	return connector->index;
-------------------------------------->8-----------------------------

This might be seen as bikeshed but it seems there's value keeping all the init
code in the same place, as opposed to scattered.

Unless there are reasons for the current code, that I'm missing?

Thanks,
Ezequiel

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 14/23] drm/tilcdc: Provide ddc symlink in connector sysfs directory
@ 2019-07-31 19:39               ` Ezequiel Garcia
  0 siblings, 0 replies; 65+ messages in thread
From: Ezequiel Garcia @ 2019-07-31 19:39 UTC (permalink / raw)
  To: Thomas Zimmermann, Andrzej Pietrasiewicz, Sam Ravnborg
  Cc: Neil Armstrong, Maxime Ripard, dri-devel, linux-kernel,
	Matthias Brugger, Thierry Reding, Laurent Pinchart, Shawn Guo,
	kernel, linux-samsung-soc, linux-rockchip, Sean Paul,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie, Jonas Karlman,
	linux-arm-msm, intel-gfx, Jyri Sarha, Alexios Zavras,
	Mamta Shukla, linux-mediatek, Rodrigo Vivi, linux-tegra,
	Thomas Gleixner, Vincent Abriou, linux-arm-kernel,
	Jernej Skrabec, amd-gfx, Tomi Valkeinen, Greg Kroah-Hartman,
	Seung-Woo Kim, Douglas Anderson, Todor Tomov, Kyungmin Park,
	Huang Rui, Pengutronix Kernel Team, Alex Deucher, freedreno,
	Christian König, Gerd Hoffmann

Hi,

I'm glad to see this work moving forward!

On Wed, 2019-07-24 at 10:01 +0200, Thomas Zimmermann wrote:
> Hi
> 
> Am 23.07.19 um 14:44 schrieb Andrzej Pietrasiewicz:
> > Hi Sam,
> > 
> > W dniu 23.07.2019 o 11:05, Sam Ravnborg pisze:
> > > Hi Andrzej
> > > 
> > > On Thu, Jul 11, 2019 at 01:26:41PM +0200, Andrzej Pietrasiewicz wrote:
> > > > Use the ddc pointer provided by the generic connector.
> > > > 
> > > > Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> > > > ---
> > > >   drivers/gpu/drm/tilcdc/tilcdc_tfp410.c | 1 +
> > > >   1 file changed, 1 insertion(+)
> > > > 
> > > > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> > > > b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> > > > index 62d014c20988..c373edb95666 100644
> > > > --- a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> > > > +++ b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> > > > @@ -219,6 +219,7 @@ static struct drm_connector
> > > > *tfp410_connector_create(struct drm_device *dev,
> > > >       tfp410_connector->mod = mod;
> > > >         connector = &tfp410_connector->base;
> > > > +    connector->ddc = mod->i2c;
> > > >         drm_connector_init(dev, connector, &tfp410_connector_funcs,
> > > >               DRM_MODE_CONNECTOR_DVID);
> > > 
> > > When reading this code, it looks strange that we set connector->ddc
> > > *before* the call to init the connector.
> > > One could risk that drm_connector_init() used memset(..) to clear all
> > > fields or so, and it would break this order.
> > 
> > I verified the code of drm_connector_init() and cannot find any memset()
> > invocations there. What is your actual concern?
> 
> I think this echoes my concern about the implicit order of operation. It
> seems too easy to get this wrong. If you don't want to add an additional
> interface for setting the ddc field, why not add a dedicated initializer
> function that sets the ddc field? Something like this.
> 
> int drm_connector_init_with_ddc(connector, funcs, ..., ddc)
> {
> 	ret = drm_connector_init(connector, funcs, ...);
> 	if (ret)
> 		return ret;
> 
> 	if (!ddc)
> 		return 0;
> 
> 	connector->ddc = ddc;
> 	/* set up sysfs */
> 

I know this comment comes late to the party, but I'm a slightly
suprised to see the above instead of implementing drm_connector_init
in terms of drm_connector_init_with_ddc, as we typically do.

Namely, something along these lines (code might not even build!):

--------------------------------------8<-----------------------------
diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c
index d49e19f3de3a..dbd095933175 100644
--- a/drivers/gpu/drm/drm_connector.c
+++ b/drivers/gpu/drm/drm_connector.c
@@ -179,11 +179,12 @@ void drm_connector_free_work_fn(struct work_struct *work)
 }
 
 /**
- * drm_connector_init - Init a preallocated connector
+ * drm_connector_init_with_ddc - Init a preallocated connector
  * @dev: DRM device
  * @connector: the connector to init
  * @funcs: callbacks for this connector
  * @connector_type: user visible type of the connector
+ * @ddc: pointer to the associated ddc adapter (optional)
  *
  * Initialises a preallocated connector. Connectors should be
  * subclassed as part of driver connector objects.
@@ -191,10 +192,11 @@ void drm_connector_free_work_fn(struct work_struct *work)
  * Returns:
  * Zero on success, error code on failure.
  */
-int drm_connector_init(struct drm_device *dev,
-		       struct drm_connector *connector,
-		       const struct drm_connector_funcs *funcs,
-		       int connector_type)
+int drm_connector_init_with_ddc(struct drm_device *dev,
+				struct drm_connector *connector,
+				const struct drm_connector_funcs *funcs,
+				int connector_type,
+				struct i2c_adapter *ddc)
 {
 	struct drm_mode_config *config = &dev->mode_config;
 	int ret;
@@ -215,6 +217,9 @@ int drm_connector_init(struct drm_device *dev,
 	connector->dev = dev;
 	connector->funcs = funcs;
 
+	/* provide ddc symlink in sysfs */
+	connector->ddc = ddc;
+
 	/* connector index is used with 32bit bitmasks */
 	ret = ida_simple_get(&config->connector_ida, 0, 32, GFP_KERNEL);
 	if (ret < 0) {
@@ -295,41 +300,6 @@ int drm_connector_init(struct drm_device *dev,
 
 	return ret;
 }
-EXPORT_SYMBOL(drm_connector_init);
-
-/**
- * drm_connector_init_with_ddc - Init a preallocated connector
- * @dev: DRM device
- * @connector: the connector to init
- * @funcs: callbacks for this connector
- * @connector_type: user visible type of the connector
- * @ddc: pointer to the associated ddc adapter
- *
- * Initialises a preallocated connector. Connectors should be
- * subclassed as part of driver connector objects.
- *
- * Ensures that the ddc field of the connector is correctly set.
- *
- * Returns:
- * Zero on success, error code on failure.
- */
-int drm_connector_init_with_ddc(struct drm_device *dev,
-				struct drm_connector *connector,
-				const struct drm_connector_funcs *funcs,
-				int connector_type,
-				struct i2c_adapter *ddc)
-{
-	int ret;
-
-	ret = drm_connector_init(dev, connector, funcs, connector_type);
-	if (ret)
-		return ret;
-
-	/* provide ddc symlink in sysfs */
-	connector->ddc = ddc;
-
-	return ret;
-}
 EXPORT_SYMBOL(drm_connector_init_with_ddc);
 
 /**
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index fc5d08438333..1884abf61a86 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -1408,10 +1408,6 @@ struct drm_connector {
 
 #define obj_to_connector(x) container_of(x, struct drm_connector, base)
 
-int drm_connector_init(struct drm_device *dev,
-		       struct drm_connector *connector,
-		       const struct drm_connector_funcs *funcs,
-		       int connector_type);
 int drm_connector_init_with_ddc(struct drm_device *dev,
 				struct drm_connector *connector,
 				const struct drm_connector_funcs *funcs,
@@ -1425,6 +1421,16 @@ int drm_connector_attach_encoder(struct drm_connector *connector,
 
 void drm_connector_cleanup(struct drm_connector *connector);
 
+static inline int
+drm_connector_init(struct drm_device *dev,
+		   struct drm_connector *connector,
+		   const struct drm_connector_funcs *funcs,
+		   int connector_type);
+{
+	return drm_connector_init_with_ddc(dev, connector, funcs,
+					   connector_type, NULL);
+}
+
 static inline unsigned int drm_connector_index(const struct drm_connector *connector)
 {
 	return connector->index;
-------------------------------------->8-----------------------------

This might be seen as bikeshed but it seems there's value keeping all the init
code in the same place, as opposed to scattered.

Unless there are reasons for the current code, that I'm missing?

Thanks,
Ezequiel


^ permalink raw reply related	[flat|nested] 65+ messages in thread

* Re: [PATCH v4 14/23] drm/tilcdc: Provide ddc symlink in connector sysfs directory
@ 2019-07-31 19:39               ` Ezequiel Garcia
  0 siblings, 0 replies; 65+ messages in thread
From: Ezequiel Garcia @ 2019-07-31 19:39 UTC (permalink / raw)
  To: Thomas Zimmermann, Andrzej Pietrasiewicz, Sam Ravnborg
  Cc: Neil Armstrong, Maxime Ripard, dri-devel, Douglas Anderson,
	linux-tegra, Thierry Reding, Laurent Pinchart, kernel,
	linux-samsung-soc, linux-rockchip, Vincent Abriou,
	Krzysztof Kozlowski, Jonathan Hunter, David Airlie, Chen-Yu Tsai,
	Kukjin Kim, NXP Linux Team, Dave Airlie, freedreno,
	Jonas Karlman, linux-arm-msm, intel-gfx, Jyri Sarha,
	Alexios Zavras, Mamta Shukla, linux-mediatek, Rodrigo Vivi,
	Matthias Brugger, Thomas Gleixner, Sean Paul, linux-arm-kernel,
	Jernej Skrabec, amd-gfx, Tomi Valkeinen, Greg Kroah-Hartman,
	Seung-Woo Kim, linux-kernel, Todor Tomov, Kyungmin Park,
	Huang Rui, Pengutronix Kernel Team, Alex Deucher, Shawn Guo,
	Christian König, Gerd Hoffmann

Hi,

I'm glad to see this work moving forward!

On Wed, 2019-07-24 at 10:01 +0200, Thomas Zimmermann wrote:
> Hi
> 
> Am 23.07.19 um 14:44 schrieb Andrzej Pietrasiewicz:
> > Hi Sam,
> > 
> > W dniu 23.07.2019 o 11:05, Sam Ravnborg pisze:
> > > Hi Andrzej
> > > 
> > > On Thu, Jul 11, 2019 at 01:26:41PM +0200, Andrzej Pietrasiewicz wrote:
> > > > Use the ddc pointer provided by the generic connector.
> > > > 
> > > > Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> > > > ---
> > > >   drivers/gpu/drm/tilcdc/tilcdc_tfp410.c | 1 +
> > > >   1 file changed, 1 insertion(+)
> > > > 
> > > > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> > > > b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> > > > index 62d014c20988..c373edb95666 100644
> > > > --- a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> > > > +++ b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> > > > @@ -219,6 +219,7 @@ static struct drm_connector
> > > > *tfp410_connector_create(struct drm_device *dev,
> > > >       tfp410_connector->mod = mod;
> > > >         connector = &tfp410_connector->base;
> > > > +    connector->ddc = mod->i2c;
> > > >         drm_connector_init(dev, connector, &tfp410_connector_funcs,
> > > >               DRM_MODE_CONNECTOR_DVID);
> > > 
> > > When reading this code, it looks strange that we set connector->ddc
> > > *before* the call to init the connector.
> > > One could risk that drm_connector_init() used memset(..) to clear all
> > > fields or so, and it would break this order.
> > 
> > I verified the code of drm_connector_init() and cannot find any memset()
> > invocations there. What is your actual concern?
> 
> I think this echoes my concern about the implicit order of operation. It
> seems too easy to get this wrong. If you don't want to add an additional
> interface for setting the ddc field, why not add a dedicated initializer
> function that sets the ddc field? Something like this.
> 
> int drm_connector_init_with_ddc(connector, funcs, ..., ddc)
> {
> 	ret = drm_connector_init(connector, funcs, ...);
> 	if (ret)
> 		return ret;
> 
> 	if (!ddc)
> 		return 0;
> 
> 	connector->ddc = ddc;
> 	/* set up sysfs */
> 

I know this comment comes late to the party, but I'm a slightly
suprised to see the above instead of implementing drm_connector_init
in terms of drm_connector_init_with_ddc, as we typically do.

Namely, something along these lines (code might not even build!):

--------------------------------------8<-----------------------------
diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c
index d49e19f3de3a..dbd095933175 100644
--- a/drivers/gpu/drm/drm_connector.c
+++ b/drivers/gpu/drm/drm_connector.c
@@ -179,11 +179,12 @@ void drm_connector_free_work_fn(struct work_struct *work)
 }
 
 /**
- * drm_connector_init - Init a preallocated connector
+ * drm_connector_init_with_ddc - Init a preallocated connector
  * @dev: DRM device
  * @connector: the connector to init
  * @funcs: callbacks for this connector
  * @connector_type: user visible type of the connector
+ * @ddc: pointer to the associated ddc adapter (optional)
  *
  * Initialises a preallocated connector. Connectors should be
  * subclassed as part of driver connector objects.
@@ -191,10 +192,11 @@ void drm_connector_free_work_fn(struct work_struct *work)
  * Returns:
  * Zero on success, error code on failure.
  */
-int drm_connector_init(struct drm_device *dev,
-		       struct drm_connector *connector,
-		       const struct drm_connector_funcs *funcs,
-		       int connector_type)
+int drm_connector_init_with_ddc(struct drm_device *dev,
+				struct drm_connector *connector,
+				const struct drm_connector_funcs *funcs,
+				int connector_type,
+				struct i2c_adapter *ddc)
 {
 	struct drm_mode_config *config = &dev->mode_config;
 	int ret;
@@ -215,6 +217,9 @@ int drm_connector_init(struct drm_device *dev,
 	connector->dev = dev;
 	connector->funcs = funcs;
 
+	/* provide ddc symlink in sysfs */
+	connector->ddc = ddc;
+
 	/* connector index is used with 32bit bitmasks */
 	ret = ida_simple_get(&config->connector_ida, 0, 32, GFP_KERNEL);
 	if (ret < 0) {
@@ -295,41 +300,6 @@ int drm_connector_init(struct drm_device *dev,
 
 	return ret;
 }
-EXPORT_SYMBOL(drm_connector_init);
-
-/**
- * drm_connector_init_with_ddc - Init a preallocated connector
- * @dev: DRM device
- * @connector: the connector to init
- * @funcs: callbacks for this connector
- * @connector_type: user visible type of the connector
- * @ddc: pointer to the associated ddc adapter
- *
- * Initialises a preallocated connector. Connectors should be
- * subclassed as part of driver connector objects.
- *
- * Ensures that the ddc field of the connector is correctly set.
- *
- * Returns:
- * Zero on success, error code on failure.
- */
-int drm_connector_init_with_ddc(struct drm_device *dev,
-				struct drm_connector *connector,
-				const struct drm_connector_funcs *funcs,
-				int connector_type,
-				struct i2c_adapter *ddc)
-{
-	int ret;
-
-	ret = drm_connector_init(dev, connector, funcs, connector_type);
-	if (ret)
-		return ret;
-
-	/* provide ddc symlink in sysfs */
-	connector->ddc = ddc;
-
-	return ret;
-}
 EXPORT_SYMBOL(drm_connector_init_with_ddc);
 
 /**
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index fc5d08438333..1884abf61a86 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -1408,10 +1408,6 @@ struct drm_connector {
 
 #define obj_to_connector(x) container_of(x, struct drm_connector, base)
 
-int drm_connector_init(struct drm_device *dev,
-		       struct drm_connector *connector,
-		       const struct drm_connector_funcs *funcs,
-		       int connector_type);
 int drm_connector_init_with_ddc(struct drm_device *dev,
 				struct drm_connector *connector,
 				const struct drm_connector_funcs *funcs,
@@ -1425,6 +1421,16 @@ int drm_connector_attach_encoder(struct drm_connector *connector,
 
 void drm_connector_cleanup(struct drm_connector *connector);
 
+static inline int
+drm_connector_init(struct drm_device *dev,
+		   struct drm_connector *connector,
+		   const struct drm_connector_funcs *funcs,
+		   int connector_type);
+{
+	return drm_connector_init_with_ddc(dev, connector, funcs,
+					   connector_type, NULL);
+}
+
 static inline unsigned int drm_connector_index(const struct drm_connector *connector)
 {
 	return connector->index;
-------------------------------------->8-----------------------------

This might be seen as bikeshed but it seems there's value keeping all the init
code in the same place, as opposed to scattered.

Unless there are reasons for the current code, that I'm missing?

Thanks,
Ezequiel


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 65+ messages in thread

end of thread, other threads:[~2019-07-31 19:39 UTC | newest]

Thread overview: 65+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-11 11:26 [PATCH v4 00/23] Associate ddc adapters with connectors Andrzej Pietrasiewicz
2019-07-11 11:26 ` [PATCH v4 01/23] drm: Include ddc adapter pointer in struct drm_connector Andrzej Pietrasiewicz
2019-07-11 12:00   ` Ville Syrjälä
     [not found]   ` <5957ae96ee20eed5cfcb8a9619e2f61d71fe227e.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2019-07-11 12:00     ` Ville Syrjälä
2019-07-11 12:00   ` Ville Syrjälä
2019-07-11 11:26 ` [PATCH v4 02/23] drm/exynos: Provide ddc symlink in connector's sysfs Andrzej Pietrasiewicz
2019-07-11 11:26 ` [PATCH v4 03/23] drm: rockchip: Provide ddc symlink in rk3066_hdmi sysfs directory Andrzej Pietrasiewicz
2019-07-11 11:26 ` [PATCH v4 06/23] drm/sun4i: hdmi: Provide ddc symlink in sun4i hdmi connector " Andrzej Pietrasiewicz
2019-07-11 11:26 ` [PATCH v4 07/23] drm/mediatek: Provide ddc symlink in " Andrzej Pietrasiewicz
2019-07-11 11:26 ` [PATCH v4 08/23] drm/tegra: Provide ddc symlink in output " Andrzej Pietrasiewicz
2019-07-11 11:26 ` [PATCH v4 09/23] drm/imx: imx-ldb: Provide ddc symlink in connector's sysfs Andrzej Pietrasiewicz
2019-07-11 11:26 ` [PATCH v4 10/23] drm/imx: imx-tve: " Andrzej Pietrasiewicz
2019-07-11 11:26 ` [PATCH v4 11/23] drm/vc4: Provide ddc symlink in connector sysfs directory Andrzej Pietrasiewicz
2019-07-11 11:26 ` [PATCH v4 12/23] drm: zte: Provide ddc symlink in hdmi " Andrzej Pietrasiewicz
2019-07-23  5:58   ` Shawn Guo
2019-07-11 11:26 ` [PATCH v4 13/23] drm: zte: Provide ddc symlink in vga " Andrzej Pietrasiewicz
     [not found]   ` <9cdd2fc46dbcb6b596786e5a12b7176c77a38d78.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2019-07-23  5:58     ` Shawn Guo
2019-07-11 11:26 ` [PATCH v4 14/23] drm/tilcdc: Provide ddc symlink in " Andrzej Pietrasiewicz
     [not found]   ` <d1d415022c598fb7acd033f0f322dd67250adaa9.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2019-07-23  9:05     ` Sam Ravnborg
2019-07-23  9:05       ` Sam Ravnborg
2019-07-23 12:44       ` Andrzej Pietrasiewicz
2019-07-23 12:44         ` Andrzej Pietrasiewicz
2019-07-23 12:44         ` Andrzej Pietrasiewicz
     [not found]         ` <3ad60be5-49cf-4017-4b74-53a2d6272deb-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2019-07-23 15:19           ` Sam Ravnborg
2019-07-23 15:19             ` Sam Ravnborg
2019-07-23 15:19             ` Sam Ravnborg
2019-07-24  8:01         ` Thomas Zimmermann
2019-07-24  8:01           ` Thomas Zimmermann
2019-07-24  8:01           ` Thomas Zimmermann
2019-07-24  8:51           ` Andrzej Pietrasiewicz
2019-07-24  8:51             ` Andrzej Pietrasiewicz
2019-07-24  8:51             ` Andrzej Pietrasiewicz
     [not found]           ` <acfd895d-ab59-0190-e25c-1827bd8d214b-l3A5Bk7waGM@public.gmane.org>
2019-07-31 19:39             ` Ezequiel Garcia
2019-07-31 19:39               ` Ezequiel Garcia
2019-07-31 19:39               ` Ezequiel Garcia
2019-07-11 11:26 ` [PATCH v4 19/23] drm/bridge: dw-hdmi: " Andrzej Pietrasiewicz
     [not found]   ` <ec88a18feffa37eceb947bb83a6f9f51fb575566.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2019-07-30 12:17     ` Neil Armstrong
     [not found]       ` <449b11e6-2386-4e5b-26f7-eb6046911f24-rdvid1DuHRBWk0Htik3J/w@public.gmane.org>
2019-07-30 17:30         ` Sam Ravnborg
     [not found]           ` <20190730173007.GA28537-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2019-07-31  7:32             ` Neil Armstrong
2019-07-11 11:26 ` [PATCH v4 21/23] drm/amdgpu: " Andrzej Pietrasiewicz
2019-07-11 11:26 ` [PATCH v4 22/23] drm/radeon: " Andrzej Pietrasiewicz
     [not found] ` <cover.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2019-07-11 11:26   ` [PATCH v4 04/23] drm: rockchip: Provide ddc symlink in inno_hdmi " Andrzej Pietrasiewicz
2019-07-11 11:26   ` [PATCH v4 05/23] drm/msm/hdmi: Provide ddc symlink in hdmi connector " Andrzej Pietrasiewicz
2019-07-11 11:26   ` [PATCH v4 15/23] drm: sti: " Andrzej Pietrasiewicz
     [not found]     ` <86afdc0bca6939901870176dcf55f279f7b10a08.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2019-07-12  7:42       ` Benjamin Gaignard
2019-07-11 11:26   ` [PATCH v4 16/23] drm/mgag200: Provide ddc symlink in " Andrzej Pietrasiewicz
2019-07-11 17:26     ` Thomas Zimmermann
2019-07-23  9:07     ` Sam Ravnborg
2019-07-23  9:07       ` Sam Ravnborg
2019-07-23  9:07       ` Sam Ravnborg
2019-07-11 11:26   ` [PATCH v4 17/23] drm/ast: " Andrzej Pietrasiewicz
2019-07-11 17:27     ` Thomas Zimmermann
2019-07-23  9:09     ` Sam Ravnborg
2019-07-23  9:09       ` Sam Ravnborg
2019-07-11 11:26   ` [PATCH v4 18/23] drm/bridge: dumb-vga-dac: " Andrzej Pietrasiewicz
2019-07-30 12:15     ` Neil Armstrong
2019-07-11 11:26   ` [PATCH v4 20/23] drm/bridge: ti-tfp410: " Andrzej Pietrasiewicz
2019-07-30 12:25     ` Neil Armstrong
2019-07-11 11:26   ` [PATCH v4 23/23] drm/i915: Provide ddc symlink in hdmi " Andrzej Pietrasiewicz
     [not found]     ` <1d9bb3d65127a5093d6e9f9cc62a5c7c7502f61d.1562843413.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2019-07-11 11:59       ` Ville Syrjälä
2019-07-11 11:59     ` Ville Syrjälä
2019-07-11 11:59     ` Ville Syrjälä
2019-07-11 13:21       ` Daniel Vetter
2019-07-11 17:56 ` ✓ Fi.CI.BAT: success for Associate ddc adapters with connectors Patchwork
2019-07-12 17:48 ` ✓ Fi.CI.IGT: " Patchwork

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.