* [PATCH v6 02/24] drm: Add drm_connector_init() variant with ddc
2019-07-26 17:22 [PATCH v6 00/24] Associate ddc adapters with connectors Andrzej Pietrasiewicz
@ 2019-07-26 17:22 ` Andrzej Pietrasiewicz
[not found] ` <cover.1564161140.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
` (16 subsequent siblings)
17 siblings, 0 replies; 70+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-26 17:22 UTC (permalink / raw)
To: dri-devel
Cc: Kate Stewart, Y.C. Chen, Heiko Stübner, Sam Ravnborg,
Neil Armstrong, David Airlie, Douglas Anderson, Andrzej Hajda,
Laurent Pinchart, Benjamin Gaignard, kernel, Fabio Estevam,
David (ChunMing) Zhou, linux-samsung-soc, Joonyoung Shim,
Jyri Sarha, Vincent Abriou, Krzysztof Kozlowski, Jonathan Hunter,
linux-rockchip, Chen-Yu Tsai, Kukjin Kim, NXP Linux Team
Allow passing ddc adapter pointer to the init function. Even if
drm_connector_init() sometime in the future decides to e.g. memset() all
connector fields to zeros, the newly added function ensures that at its
completion the ddc member of connector is correctly set.
Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/drm_connector.c | 35 +++++++++++++++++++++++++++++++++
include/drm/drm_connector.h | 7 +++++++
2 files changed, 42 insertions(+)
diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c
index cbb548b3708f..d49e19f3de3a 100644
--- a/drivers/gpu/drm/drm_connector.c
+++ b/drivers/gpu/drm/drm_connector.c
@@ -297,6 +297,41 @@ int drm_connector_init(struct drm_device *dev,
}
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);
+
/**
* drm_connector_attach_edid_property - attach edid property.
* @connector: the connector
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index 33a6fff85fdb..fc5d08438333 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -1319,6 +1319,8 @@ struct drm_connector {
* 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.
+ *
+ * The field should be set by calling drm_connector_init_with_ddc().
*/
struct i2c_adapter *ddc;
@@ -1410,6 +1412,11 @@ 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);
void drm_connector_attach_edid_property(struct drm_connector *connector);
int drm_connector_register(struct drm_connector *connector);
void drm_connector_unregister(struct drm_connector *connector);
--
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] 70+ messages in thread
[parent not found: <cover.1564161140.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>]
* [PATCH v6 01/24] drm: Add ddc link in sysfs created by drm_connector
[not found] ` <cover.1564161140.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
@ 2019-07-26 17:22 ` Andrzej Pietrasiewicz
[not found] ` <d470def6cd661b777faeee67b5838a4623c4010e.1564161140.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2019-07-26 17:22 ` [PATCH v6 03/24] drm/exynos: Provide ddc symlink in connector's sysfs Andrzej Pietrasiewicz
` (8 subsequent siblings)
9 siblings, 1 reply; 70+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-26 17:22 UTC (permalink / raw)
To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
David Airlie, 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,
Jyri Sarha, Vincent Abriou, Rob Clark
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 | 8 ++++++++
include/drm/drm_connector.h | 11 +++++++++++
2 files changed, 19 insertions(+)
diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c
index ad10810bc972..e962a9d45f7e 100644
--- a/drivers/gpu/drm/drm_sysfs.c
+++ b/drivers/gpu/drm/drm_sysfs.c
@@ -14,6 +14,7 @@
#include <linux/err.h>
#include <linux/export.h>
#include <linux/gfp.h>
+#include <linux/i2c.h>
#include <linux/kdev_t.h>
#include <linux/slab.h>
@@ -294,6 +295,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 +305,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 4c30d751487a..33a6fff85fdb 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -41,6 +41,7 @@ struct drm_property;
struct drm_property_blob;
struct drm_printer;
struct edid;
+struct i2c_adapter;
enum drm_connector_force {
DRM_FORCE_UNSPECIFIED,
@@ -1311,6 +1312,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
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
^ permalink raw reply related [flat|nested] 70+ messages in thread
* [PATCH v6 03/24] drm/exynos: Provide ddc symlink in connector's sysfs
[not found] ` <cover.1564161140.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2019-07-26 17:22 ` [PATCH v6 01/24] drm: Add ddc link in sysfs created by drm_connector Andrzej Pietrasiewicz
@ 2019-07-26 17:22 ` Andrzej Pietrasiewicz
2019-07-26 17:23 ` [PATCH v6 07/24] drm/sun4i: hdmi: Provide ddc symlink in sun4i hdmi connector sysfs directory Andrzej Pietrasiewicz
` (7 subsequent siblings)
9 siblings, 0 replies; 70+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-26 17:22 UTC (permalink / raw)
To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
David Airlie, 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,
Jyri Sarha, Vincent Abriou
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 | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c
index bc1565f1822a..d4a9c9e17436 100644
--- a/drivers/gpu/drm/exynos/exynos_hdmi.c
+++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
@@ -940,8 +940,10 @@ static int hdmi_create_connector(struct drm_encoder *encoder)
connector->interlace_allowed = true;
connector->polled = DRM_CONNECTOR_POLL_HPD;
- ret = drm_connector_init(hdata->drm_dev, connector,
- &hdmi_connector_funcs, DRM_MODE_CONNECTOR_HDMIA);
+ ret = drm_connector_init_with_ddc(hdata->drm_dev, connector,
+ &hdmi_connector_funcs,
+ DRM_MODE_CONNECTOR_HDMIA,
+ hdata->ddc_adpt);
if (ret) {
DRM_DEV_ERROR(hdata->dev,
"Failed to initialize connector with drm\n");
--
2.17.1
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno
^ permalink raw reply related [flat|nested] 70+ messages in thread
* [PATCH v6 07/24] drm/sun4i: hdmi: Provide ddc symlink in sun4i hdmi connector sysfs directory
[not found] ` <cover.1564161140.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2019-07-26 17:22 ` [PATCH v6 01/24] drm: Add ddc link in sysfs created by drm_connector Andrzej Pietrasiewicz
2019-07-26 17:22 ` [PATCH v6 03/24] drm/exynos: Provide ddc symlink in connector's sysfs Andrzej Pietrasiewicz
@ 2019-07-26 17:23 ` Andrzej Pietrasiewicz
2019-07-27 10:37 ` Maxime Ripard
2019-07-26 17:23 ` [PATCH v6 10/24] drm/imx: imx-ldb: Provide ddc symlink in connector's sysfs Andrzej Pietrasiewicz
` (6 subsequent siblings)
9 siblings, 1 reply; 70+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-26 17:23 UTC (permalink / raw)
To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
David Airlie, 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,
Jyri Sarha, 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/sun4i/sun4i_hdmi_enc.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
index b2df76addc75..eb8071a4d6d0 100644
--- a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
+++ b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
@@ -640,9 +640,10 @@ static int sun4i_hdmi_bind(struct device *dev, struct device *master,
drm_connector_helper_add(&hdmi->connector,
&sun4i_hdmi_connector_helper_funcs);
- ret = drm_connector_init(drm, &hdmi->connector,
- &sun4i_hdmi_connector_funcs,
- DRM_MODE_CONNECTOR_HDMIA);
+ ret = drm_connector_init_with_ddc(drm, &hdmi->connector,
+ &sun4i_hdmi_connector_funcs,
+ DRM_MODE_CONNECTOR_HDMIA,
+ hdmi->ddc_i2c);
if (ret) {
dev_err(dev,
"Couldn't initialise the HDMI connector\n");
--
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] 70+ messages in thread
* Re: [PATCH v6 07/24] drm/sun4i: hdmi: Provide ddc symlink in sun4i hdmi connector sysfs directory
2019-07-26 17:23 ` [PATCH v6 07/24] drm/sun4i: hdmi: Provide ddc symlink in sun4i hdmi connector sysfs directory Andrzej Pietrasiewicz
@ 2019-07-27 10:37 ` Maxime Ripard
0 siblings, 0 replies; 70+ messages in thread
From: Maxime Ripard @ 2019-07-27 10:37 UTC (permalink / raw)
To: Andrzej Pietrasiewicz
Cc: Sam Ravnborg, Neil Armstrong, David Airlie, dri-devel,
Douglas Anderson, Thierry Reding, Laurent Pinchart, kernel,
linux-samsung-soc, Vincent Abriou, Krzysztof Kozlowski,
Jonathan Hunter, linux-rockchip, 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
On Fri, Jul 26, 2019 at 07:23:01PM +0200, Andrzej Pietrasiewicz wrote:
> Use the ddc pointer provided by the generic connector.
>
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
Maxime
--
Maxime Ripard, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 70+ messages in thread
* [PATCH v6 10/24] drm/imx: imx-ldb: Provide ddc symlink in connector's sysfs
[not found] ` <cover.1564161140.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
` (2 preceding siblings ...)
2019-07-26 17:23 ` [PATCH v6 07/24] drm/sun4i: hdmi: Provide ddc symlink in sun4i hdmi connector sysfs directory Andrzej Pietrasiewicz
@ 2019-07-26 17:23 ` Andrzej Pietrasiewicz
2019-07-29 9:20 ` Philipp Zabel
2019-07-26 17:23 ` [PATCH v6 11/24] drm/imx: imx-tve: " Andrzej Pietrasiewicz
` (5 subsequent siblings)
9 siblings, 1 reply; 70+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-26 17:23 UTC (permalink / raw)
To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
David Airlie, Ramalingam C, Joonas Lahtinen, Douglas Anderson,
Andrzej Hajda, Thierry Reding, Laurent Pinchart,
Benjamin Gaignard, Armijn Hemel, kernel-ZGY8ohtN/8qB+jHODAdFcQ,
Fabio Estevam, Ville Syrjälä, David (ChunMing) Zhou,
linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA, Joonyoung Shim,
Jyri Sarha, Vincent Abriou
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 | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/imx/imx-ldb.c b/drivers/gpu/drm/imx/imx-ldb.c
index de62a4cd4827..db461b6a257f 100644
--- a/drivers/gpu/drm/imx/imx-ldb.c
+++ b/drivers/gpu/drm/imx/imx-ldb.c
@@ -462,9 +462,10 @@ static int imx_ldb_register(struct drm_device *drm,
*/
drm_connector_helper_add(&imx_ldb_ch->connector,
&imx_ldb_connector_helper_funcs);
- drm_connector_init(drm, &imx_ldb_ch->connector,
- &imx_ldb_connector_funcs,
- DRM_MODE_CONNECTOR_LVDS);
+ drm_connector_init_with_ddc(drm, &imx_ldb_ch->connector,
+ &imx_ldb_connector_funcs,
+ DRM_MODE_CONNECTOR_LVDS,
+ imx_ldb_ch->ddc);
drm_connector_attach_encoder(&imx_ldb_ch->connector, encoder);
}
--
2.17.1
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno
^ permalink raw reply related [flat|nested] 70+ messages in thread
* Re: [PATCH v6 10/24] drm/imx: imx-ldb: Provide ddc symlink in connector's sysfs
2019-07-26 17:23 ` [PATCH v6 10/24] drm/imx: imx-ldb: Provide ddc symlink in connector's sysfs Andrzej Pietrasiewicz
@ 2019-07-29 9:20 ` Philipp Zabel
0 siblings, 0 replies; 70+ messages in thread
From: Philipp Zabel @ 2019-07-29 9:20 UTC (permalink / raw)
To: Andrzej Pietrasiewicz, dri-devel
Cc: Sam Ravnborg, Neil Armstrong, David Airlie, Douglas Anderson,
Thierry Reding, Laurent Pinchart, Armijn Hemel, kernel,
linux-samsung-soc, Jyri Sarha, Vincent Abriou,
Krzysztof Kozlowski, Jonathan Hunter, linux-rockchip,
Chen-Yu Tsai, Kukjin Kim, NXP Linux Team, Dave Airlie, intel-gfx,
freedreno, linux-tegra, Pengutronix Kernel Team, Jonas Karlman,
linux-arm-msm, Mamta Shukla <mamtashuk>
On Fri, 2019-07-26 at 19:23 +0200, Andrzej Pietrasiewicz wrote:
> Use the ddc pointer provided by the generic connector.
>
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
Acked-by: Philipp Zabel <p.zabel@pengutronix.de>
Thanks!
regards
Philipp
> ---
> drivers/gpu/drm/imx/imx-ldb.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/imx/imx-ldb.c b/drivers/gpu/drm/imx/imx-ldb.c
> index de62a4cd4827..db461b6a257f 100644
> --- a/drivers/gpu/drm/imx/imx-ldb.c
> +++ b/drivers/gpu/drm/imx/imx-ldb.c
> @@ -462,9 +462,10 @@ static int imx_ldb_register(struct drm_device *drm,
> */
> drm_connector_helper_add(&imx_ldb_ch->connector,
> &imx_ldb_connector_helper_funcs);
> - drm_connector_init(drm, &imx_ldb_ch->connector,
> - &imx_ldb_connector_funcs,
> - DRM_MODE_CONNECTOR_LVDS);
> + drm_connector_init_with_ddc(drm, &imx_ldb_ch->connector,
> + &imx_ldb_connector_funcs,
> + DRM_MODE_CONNECTOR_LVDS,
> + imx_ldb_ch->ddc);
> drm_connector_attach_encoder(&imx_ldb_ch->connector, encoder);
> }
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 70+ messages in thread
* [PATCH v6 11/24] drm/imx: imx-tve: Provide ddc symlink in connector's sysfs
[not found] ` <cover.1564161140.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
` (3 preceding siblings ...)
2019-07-26 17:23 ` [PATCH v6 10/24] drm/imx: imx-ldb: Provide ddc symlink in connector's sysfs Andrzej Pietrasiewicz
@ 2019-07-26 17:23 ` Andrzej Pietrasiewicz
2019-07-29 9:20 ` Philipp Zabel
2019-07-26 17:23 ` [PATCH v6 14/24] drm: zte: Provide ddc symlink in vga connector sysfs directory Andrzej Pietrasiewicz
` (4 subsequent siblings)
9 siblings, 1 reply; 70+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-26 17:23 UTC (permalink / raw)
To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
David Airlie, 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,
Jyri Sarha, 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/imx/imx-tve.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/imx/imx-tve.c b/drivers/gpu/drm/imx/imx-tve.c
index 649515868f86..5bbfaa2cd0f4 100644
--- a/drivers/gpu/drm/imx/imx-tve.c
+++ b/drivers/gpu/drm/imx/imx-tve.c
@@ -484,8 +484,10 @@ static int imx_tve_register(struct drm_device *drm, struct imx_tve *tve)
drm_connector_helper_add(&tve->connector,
&imx_tve_connector_helper_funcs);
- drm_connector_init(drm, &tve->connector, &imx_tve_connector_funcs,
- DRM_MODE_CONNECTOR_VGA);
+ drm_connector_init_with_ddc(drm, &tve->connector,
+ &imx_tve_connector_funcs,
+ DRM_MODE_CONNECTOR_VGA,
+ tve->ddc);
drm_connector_attach_encoder(&tve->connector, &tve->encoder);
--
2.17.1
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno
^ permalink raw reply related [flat|nested] 70+ messages in thread
* Re: [PATCH v6 11/24] drm/imx: imx-tve: Provide ddc symlink in connector's sysfs
2019-07-26 17:23 ` [PATCH v6 11/24] drm/imx: imx-tve: " Andrzej Pietrasiewicz
@ 2019-07-29 9:20 ` Philipp Zabel
0 siblings, 0 replies; 70+ messages in thread
From: Philipp Zabel @ 2019-07-29 9:20 UTC (permalink / raw)
To: Andrzej Pietrasiewicz, dri-devel
Cc: Sam Ravnborg, Neil Armstrong, David Airlie, Douglas Anderson,
Thierry Reding, Laurent Pinchart, kernel, linux-samsung-soc,
Jyri Sarha, Vincent Abriou, Krzysztof Kozlowski, Jonathan Hunter,
linux-rockchip, Chen-Yu Tsai, Kukjin Kim, NXP Linux Team,
Dave Airlie, intel-gfx, freedreno, linux-tegra,
Pengutronix Kernel Team, Jonas Karlman, linux-arm-msm,
Alexios Zavras
On Fri, 2019-07-26 at 19:23 +0200, Andrzej Pietrasiewicz wrote:
> Use the ddc pointer provided by the generic connector.
>
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
Acked-by: Philipp Zabel <p.zabel@pengutronix.de>
regards
Philipp
> ---
> drivers/gpu/drm/imx/imx-tve.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/imx/imx-tve.c b/drivers/gpu/drm/imx/imx-tve.c
> index 649515868f86..5bbfaa2cd0f4 100644
> --- a/drivers/gpu/drm/imx/imx-tve.c
> +++ b/drivers/gpu/drm/imx/imx-tve.c
> @@ -484,8 +484,10 @@ static int imx_tve_register(struct drm_device *drm, struct imx_tve *tve)
>
> drm_connector_helper_add(&tve->connector,
> &imx_tve_connector_helper_funcs);
> - drm_connector_init(drm, &tve->connector, &imx_tve_connector_funcs,
> - DRM_MODE_CONNECTOR_VGA);
> + drm_connector_init_with_ddc(drm, &tve->connector,
> + &imx_tve_connector_funcs,
> + DRM_MODE_CONNECTOR_VGA,
> + tve->ddc);
>
> drm_connector_attach_encoder(&tve->connector, &tve->encoder);
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 70+ messages in thread
* [PATCH v6 14/24] drm: zte: Provide ddc symlink in vga connector sysfs directory
[not found] ` <cover.1564161140.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
` (4 preceding siblings ...)
2019-07-26 17:23 ` [PATCH v6 11/24] drm/imx: imx-tve: " Andrzej Pietrasiewicz
@ 2019-07-26 17:23 ` Andrzej Pietrasiewicz
2019-07-26 17:23 ` [PATCH v6 18/24] drm/ast: Provide ddc symlink in " Andrzej Pietrasiewicz
` (3 subsequent siblings)
9 siblings, 0 replies; 70+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-26 17:23 UTC (permalink / raw)
To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
David Airlie, 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,
Jyri Sarha, 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/zte/zx_vga.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/zte/zx_vga.c b/drivers/gpu/drm/zte/zx_vga.c
index 9b67e419280c..c4fa3bbaba78 100644
--- a/drivers/gpu/drm/zte/zx_vga.c
+++ b/drivers/gpu/drm/zte/zx_vga.c
@@ -165,8 +165,10 @@ static int zx_vga_register(struct drm_device *drm, struct zx_vga *vga)
vga->connector.polled = DRM_CONNECTOR_POLL_HPD;
- ret = drm_connector_init(drm, connector, &zx_vga_connector_funcs,
- DRM_MODE_CONNECTOR_VGA);
+ ret = drm_connector_init_with_ddc(drm, connector,
+ &zx_vga_connector_funcs,
+ DRM_MODE_CONNECTOR_VGA,
+ &vga->ddc->adap);
if (ret) {
DRM_DEV_ERROR(dev, "failed to init connector: %d\n", ret);
goto clean_encoder;
--
2.17.1
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno
^ permalink raw reply related [flat|nested] 70+ messages in thread
* [PATCH v6 18/24] drm/ast: Provide ddc symlink in connector sysfs directory
[not found] ` <cover.1564161140.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
` (5 preceding siblings ...)
2019-07-26 17:23 ` [PATCH v6 14/24] drm: zte: Provide ddc symlink in vga connector sysfs directory Andrzej Pietrasiewicz
@ 2019-07-26 17:23 ` Andrzej Pietrasiewicz
2019-07-26 17:23 ` [PATCH v6 20/24] drm/bridge: dw-hdmi: " Andrzej Pietrasiewicz
` (2 subsequent siblings)
9 siblings, 0 replies; 70+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-26 17:23 UTC (permalink / raw)
To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
David Airlie, 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,
Jyri Sarha, Vincent Abriou
Use the ddc pointer provided by the generic connector.
Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/ast/ast_mode.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
index c792362024a5..1c899a6e87b7 100644
--- a/drivers/gpu/drm/ast/ast_mode.c
+++ b/drivers/gpu/drm/ast/ast_mode.c
@@ -867,7 +867,14 @@ static int ast_connector_init(struct drm_device *dev)
return -ENOMEM;
connector = &ast_connector->base;
- drm_connector_init(dev, connector, &ast_connector_funcs, DRM_MODE_CONNECTOR_VGA);
+ ast_connector->i2c = ast_i2c_create(dev);
+ if (!ast_connector->i2c)
+ DRM_ERROR("failed to add ddc bus for connector\n");
+
+ drm_connector_init_with_ddc(dev, connector,
+ &ast_connector_funcs,
+ DRM_MODE_CONNECTOR_VGA,
+ &ast_connector->i2c->adapter);
drm_connector_helper_add(connector, &ast_connector_helper_funcs);
@@ -881,10 +888,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
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno
^ permalink raw reply related [flat|nested] 70+ messages in thread
* [PATCH v6 20/24] drm/bridge: dw-hdmi: Provide ddc symlink in connector sysfs directory
[not found] ` <cover.1564161140.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
` (6 preceding siblings ...)
2019-07-26 17:23 ` [PATCH v6 18/24] drm/ast: Provide ddc symlink in " Andrzej Pietrasiewicz
@ 2019-07-26 17:23 ` Andrzej Pietrasiewicz
[not found] ` <4bcf0f154c683c9787fa34f911ebc52de6b4a7a1.1564161140.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2019-07-26 17:23 ` [PATCH v6 24/24] drm/i915: Provide ddc symlink in hdmi " Andrzej Pietrasiewicz
2019-07-30 15:01 ` [PATCH v6 00/24] Associate ddc adapters with connectors Emil Velikov
9 siblings, 1 reply; 70+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-26 17:23 UTC (permalink / raw)
To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
David Airlie, 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,
Jyri Sarha, 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/synopsys/dw-hdmi.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
index 218a7b2308f7..83b94b66e464 100644
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
@@ -2200,8 +2200,10 @@ static int dw_hdmi_bridge_attach(struct drm_bridge *bridge)
drm_connector_helper_add(connector, &dw_hdmi_connector_helper_funcs);
- drm_connector_init(bridge->dev, connector, &dw_hdmi_connector_funcs,
- DRM_MODE_CONNECTOR_HDMIA);
+ drm_connector_init_with_ddc(bridge->dev, connector,
+ &dw_hdmi_connector_funcs,
+ DRM_MODE_CONNECTOR_HDMIA,
+ hdmi->ddc);
drm_connector_attach_encoder(connector, encoder);
--
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] 70+ messages in thread
* [PATCH v6 24/24] drm/i915: Provide ddc symlink in hdmi connector sysfs directory
[not found] ` <cover.1564161140.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
` (7 preceding siblings ...)
2019-07-26 17:23 ` [PATCH v6 20/24] drm/bridge: dw-hdmi: " Andrzej Pietrasiewicz
@ 2019-07-26 17:23 ` Andrzej Pietrasiewicz
2019-07-30 15:01 ` [PATCH v6 00/24] Associate ddc adapters with connectors Emil Velikov
9 siblings, 0 replies; 70+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-26 17:23 UTC (permalink / raw)
To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
David Airlie, 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,
Jyri Sarha, 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 | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
index 9bf28de10401..268f1bd20b99 100644
--- a/drivers/gpu/drm/i915/display/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
@@ -3067,6 +3067,7 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
struct intel_encoder *intel_encoder = &intel_dig_port->base;
struct drm_device *dev = intel_encoder->base.dev;
struct drm_i915_private *dev_priv = to_i915(dev);
+ struct i2c_adapter *ddc;
enum port port = intel_encoder->port;
DRM_DEBUG_KMS("Adding HDMI connector on port %c\n",
@@ -3077,8 +3078,13 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
intel_dig_port->max_lanes, port_name(port)))
return;
- drm_connector_init(dev, connector, &intel_hdmi_connector_funcs,
- DRM_MODE_CONNECTOR_HDMIA);
+ intel_hdmi->ddc_bus = intel_hdmi_ddc_pin(dev_priv, port);
+ ddc = intel_gmbus_get_adapter(dev_priv, intel_hdmi->ddc_bus);
+
+ drm_connector_init_with_ddc(dev, connector,
+ &intel_hdmi_connector_funcs,
+ DRM_MODE_CONNECTOR_HDMIA,
+ ddc);
drm_connector_helper_add(connector, &intel_hdmi_connector_helper_funcs);
connector->interlace_allowed = 1;
@@ -3088,8 +3094,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] 70+ messages in thread
* Re: [PATCH v6 00/24] Associate ddc adapters with connectors
[not found] ` <cover.1564161140.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
` (8 preceding siblings ...)
2019-07-26 17:23 ` [PATCH v6 24/24] drm/i915: Provide ddc symlink in hdmi " Andrzej Pietrasiewicz
@ 2019-07-30 15:01 ` Emil Velikov
2019-08-04 12:36 ` Laurent Pinchart
9 siblings, 1 reply; 70+ messages in thread
From: Emil Velikov @ 2019-07-30 15:01 UTC (permalink / raw)
To: Andrzej Pietrasiewicz
Cc: Maxime Ripard, Y.C. Chen, Heiko Stübner, Neil Armstrong,
David Airlie, Ramalingam C, Joonas Lahtinen, Liviu Dudau,
dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Chris Wilson,
Andrzej Hajda, Thierry Reding, Laurent Pinchart,
Benjamin Gaignard, Shawn Guo, kernel-ZGY8ohtN/8qB+jHODAdFcQ,
Fabio Estevam, Ville Syrjälä, David (ChunMing) Zhou,
linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA, Joonyoung Shim
On 2019/07/26, Andrzej Pietrasiewicz wrote:
> 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.
>
> Patch 2 adds a new variant of drm_connector_init(), see the changelog
> below.
>
> Patches 3..24 are examples 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
>
> v4..v5:
>
> - changed "include <linux/i2c.h>" to "struct i2c_adapter;"
> in drm_connector.h, consequently, added "include <linux/i2c.h>"
> in drm_sysfs.c.
> - added "drm_connector_init_with_ddc()" variant to ensure that the ddc
> field of drm_connector is preserved accross its invocation
> - accordingly changed invocations of drm_connector_init() in the
> touched drivers to use the new variant
>
> v5..v6:
>
> - improved subject line of patch 1
> - added kernel-doc for drm_connector_init_with_ddc()
> - improved kernel-doc for the ddc field of struct drm_connector
> - added Reviewed-by in patches 17 and 18
> - added Acked-by in patch 2
> - made the ownership of ddc i2c_adapter explicit in all patches,
> this made the affected patches much simpler
>
> @Benjamin
> @Shawn
>
> There were your Acked-by or Reviewed-by for some patches in v4, but now
> that the patches use the newly added function I'm not sure I can still
> include those tags without you actually confirming. Can I? Or can you
> please re-review?
>
> TODO: nouveau, gma500, omapdrm, panel-simple - if applicable.
> Other drivers are either already converted or don't mention neither
> "ddc" nor "i2c_adapter".
>
Another way to check is to look for drm_get_edid. Sadly that also
highlights aux. dp/mst instances, which expose the DDC in another way.
For example comparing the diff stat wrt the following command shows
git grep -wc drm_get_edid -- drivers/gpu/drm/
>
> .../gpu/drm/amd/amdgpu/amdgpu_connectors.c | 96 ++++++++----
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c:1
- as pointed out by Alex - mix of aux dp/mst and normal
> drivers/gpu/drm/ast/ast_mode.c | 13 +-
drivers/gpu/drm/bridge/analogix-anx78xx.c:1
drivers/gpu/drm/bridge/analogix/analogix_dp_core.c:1
- not applicable: aux dp/mst
> drivers/gpu/drm/bridge/dumb-vga-dac.c | 6 +-
drivers/gpu/drm/bridge/sii902x.c:1
- normal instance(?) that should be updated at some point.
> drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 6 +-
drivers/gpu/drm/bridge/tc358767.c:1
- not applicable: aux dp/mst
> drivers/gpu/drm/bridge/ti-tfp410.c | 6 +-
drivers/gpu/drm/drm_dp_mst_topology.c:3
- not applicable: aux dp/mst
> drivers/gpu/drm/drm_connector.c | 35 +++++
> drivers/gpu/drm/drm_sysfs.c | 8 +
drivers/gpu/drm/drm_edid.c:7
drivers/gpu/drm/drm_probe_helper.c:1
- unrelated
> drivers/gpu/drm/exynos/exynos_hdmi.c | 6 +-
drivers/gpu/drm/gma500/cdv_intel_dp.c:3
drivers/gpu/drm/gma500/cdv_intel_hdmi.c:2
drivers/gpu/drm/gma500/oaktrail_hdmi.c:1
drivers/gpu/drm/gma500/oaktrail_lvds.c:2
drivers/gpu/drm/gma500/psb_intel_modes.c:1
drivers/gpu/drm/gma500/psb_intel_sdvo.c:2
- should be updated at some point (as you pointed out).
> drivers/gpu/drm/i915/display/intel_hdmi.c | 12 +-
drivers/gpu/drm/i915/intel_connector.c:1
drivers/gpu/drm/i915/intel_crt.c:2
- not too sure here
drivers/gpu/drm/i915/intel_dp.c:2
- not applicable: aux dp/mst
drivers/gpu/drm/i915/intel_lvds.c:1
drivers/gpu/drm/i915/intel_sdvo.c:2
- not too sure here
> drivers/gpu/drm/imx/imx-ldb.c | 7 +-
> drivers/gpu/drm/imx/imx-tve.c | 6 +-
> drivers/gpu/drm/mediatek/mtk_hdmi.c | 7 +-
> drivers/gpu/drm/mgag200/mgag200_mode.c | 13 +-
> drivers/gpu/drm/msm/hdmi/hdmi_connector.c | 6 +-
drivers/gpu/drm/msm/edp/edp_ctrl.c:1
- not applicable: aux dp/mst
drivers/gpu/drm/nouveau/nouveau_connector.c:2
- should be updated at some point (as you pointed out).
drivers/gpu/drm/panel/panel-simple.c:1
- no applicable: panel driver
> drivers/gpu/drm/radeon/radeon_connectors.c | 142 +++++++++++++-----
> drivers/gpu/drm/rockchip/inno_hdmi.c | 6 +-
> drivers/gpu/drm/rockchip/rk3066_hdmi.c | 7 +-
> drivers/gpu/drm/sti/sti_hdmi.c | 6 +-
> drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c | 7 +-
> drivers/gpu/drm/tegra/hdmi.c | 7 +-
> drivers/gpu/drm/tegra/sor.c | 7 +-
drivers/gpu/drm/tegra/output.c:1
- already handled in hdmi/sor
> drivers/gpu/drm/tilcdc/tilcdc_tfp410.c | 6 +-
> drivers/gpu/drm/vc4/vc4_hdmi.c | 12 +-
> drivers/gpu/drm/zte/zx_hdmi.c | 6 +-
> drivers/gpu/drm/zte/zx_vga.c | 6 +-
> include/drm/drm_connector.h | 18 +++
> 26 files changed, 336 insertions(+), 121 deletions(-)
In a Tl;Dr: I think this series covers 90%+ of the existing rather huge) driverset.
For the series:
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Fwiw I'm in favour of Jani's suggestion to fold the dcc into the usual
helper drm_connector_init(). Although since we have 130+ instances it
might be better left for another day.
HTH
-Emil
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno
^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [PATCH v6 00/24] Associate ddc adapters with connectors
2019-07-30 15:01 ` [PATCH v6 00/24] Associate ddc adapters with connectors Emil Velikov
@ 2019-08-04 12:36 ` Laurent Pinchart
0 siblings, 0 replies; 70+ messages in thread
From: Laurent Pinchart @ 2019-08-04 12:36 UTC (permalink / raw)
To: Emil Velikov
Cc: Maxime Ripard, Y.C. Chen, Heiko Stübner, Neil Armstrong,
David Airlie, Ramalingam C, Joonas Lahtinen, Liviu Dudau,
dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Chris Wilson,
Andrzej Hajda, Thierry Reding, Mamta Shukla, Benjamin Gaignard,
Shawn Guo, kernel-ZGY8ohtN/8qB+jHODAdFcQ, Fabio Estevam,
Ville Syrjälä, David (ChunMing) Zhou,
linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA, Joonyoung Shim,
Sandy Huang
On Tue, Jul 30, 2019 at 04:01:23PM +0100, Emil Velikov wrote:
> On 2019/07/26, Andrzej Pietrasiewicz wrote:
> > 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.
> >
> > Patch 2 adds a new variant of drm_connector_init(), see the changelog
> > below.
> >
> > Patches 3..24 are examples 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
> >
> > v4..v5:
> >
> > - changed "include <linux/i2c.h>" to "struct i2c_adapter;"
> > in drm_connector.h, consequently, added "include <linux/i2c.h>"
> > in drm_sysfs.c.
> > - added "drm_connector_init_with_ddc()" variant to ensure that the ddc
> > field of drm_connector is preserved accross its invocation
> > - accordingly changed invocations of drm_connector_init() in the
> > touched drivers to use the new variant
> >
> > v5..v6:
> >
> > - improved subject line of patch 1
> > - added kernel-doc for drm_connector_init_with_ddc()
> > - improved kernel-doc for the ddc field of struct drm_connector
> > - added Reviewed-by in patches 17 and 18
> > - added Acked-by in patch 2
> > - made the ownership of ddc i2c_adapter explicit in all patches,
> > this made the affected patches much simpler
> >
> > @Benjamin
> > @Shawn
> >
> > There were your Acked-by or Reviewed-by for some patches in v4, but now
> > that the patches use the newly added function I'm not sure I can still
> > include those tags without you actually confirming. Can I? Or can you
> > please re-review?
> >
> > TODO: nouveau, gma500, omapdrm, panel-simple - if applicable.
> > Other drivers are either already converted or don't mention neither
> > "ddc" nor "i2c_adapter".
> >
> Another way to check is to look for drm_get_edid. Sadly that also
> highlights aux. dp/mst instances, which expose the DDC in another way.
>
> For example comparing the diff stat wrt the following command shows
> git grep -wc drm_get_edid -- drivers/gpu/drm/
There's also drm_do_get_edid, which points to the adv7511 bridge as a
good candidate.
> >
> > .../gpu/drm/amd/amdgpu/amdgpu_connectors.c | 96 ++++++++----
> drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c:1
> - as pointed out by Alex - mix of aux dp/mst and normal
>
> > drivers/gpu/drm/ast/ast_mode.c | 13 +-
>
> drivers/gpu/drm/bridge/analogix-anx78xx.c:1
> drivers/gpu/drm/bridge/analogix/analogix_dp_core.c:1
> - not applicable: aux dp/mst
>
>
> > drivers/gpu/drm/bridge/dumb-vga-dac.c | 6 +-
>
> drivers/gpu/drm/bridge/sii902x.c:1
> - normal instance(?) that should be updated at some point.
>
> > drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 6 +-
>
> drivers/gpu/drm/bridge/tc358767.c:1
> - not applicable: aux dp/mst
>
> > drivers/gpu/drm/bridge/ti-tfp410.c | 6 +-
>
> drivers/gpu/drm/drm_dp_mst_topology.c:3
> - not applicable: aux dp/mst
>
> > drivers/gpu/drm/drm_connector.c | 35 +++++
> > drivers/gpu/drm/drm_sysfs.c | 8 +
>
> drivers/gpu/drm/drm_edid.c:7
> drivers/gpu/drm/drm_probe_helper.c:1
> - unrelated
>
> > drivers/gpu/drm/exynos/exynos_hdmi.c | 6 +-
>
> drivers/gpu/drm/gma500/cdv_intel_dp.c:3
> drivers/gpu/drm/gma500/cdv_intel_hdmi.c:2
> drivers/gpu/drm/gma500/oaktrail_hdmi.c:1
> drivers/gpu/drm/gma500/oaktrail_lvds.c:2
> drivers/gpu/drm/gma500/psb_intel_modes.c:1
> drivers/gpu/drm/gma500/psb_intel_sdvo.c:2
> - should be updated at some point (as you pointed out).
>
> > drivers/gpu/drm/i915/display/intel_hdmi.c | 12 +-
> drivers/gpu/drm/i915/intel_connector.c:1
> drivers/gpu/drm/i915/intel_crt.c:2
> - not too sure here
>
> drivers/gpu/drm/i915/intel_dp.c:2
> - not applicable: aux dp/mst
>
> drivers/gpu/drm/i915/intel_lvds.c:1
> drivers/gpu/drm/i915/intel_sdvo.c:2
> - not too sure here
>
>
> > drivers/gpu/drm/imx/imx-ldb.c | 7 +-
> > drivers/gpu/drm/imx/imx-tve.c | 6 +-
> > drivers/gpu/drm/mediatek/mtk_hdmi.c | 7 +-
> > drivers/gpu/drm/mgag200/mgag200_mode.c | 13 +-
> > drivers/gpu/drm/msm/hdmi/hdmi_connector.c | 6 +-
> drivers/gpu/drm/msm/edp/edp_ctrl.c:1
> - not applicable: aux dp/mst
>
> drivers/gpu/drm/nouveau/nouveau_connector.c:2
> - should be updated at some point (as you pointed out).
>
>
> drivers/gpu/drm/panel/panel-simple.c:1
> - no applicable: panel driver
>
>
> > drivers/gpu/drm/radeon/radeon_connectors.c | 142 +++++++++++++-----
> > drivers/gpu/drm/rockchip/inno_hdmi.c | 6 +-
> > drivers/gpu/drm/rockchip/rk3066_hdmi.c | 7 +-
> > drivers/gpu/drm/sti/sti_hdmi.c | 6 +-
> > drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c | 7 +-
> > drivers/gpu/drm/tegra/hdmi.c | 7 +-
> > drivers/gpu/drm/tegra/sor.c | 7 +-
>
> drivers/gpu/drm/tegra/output.c:1
> - already handled in hdmi/sor
>
> > drivers/gpu/drm/tilcdc/tilcdc_tfp410.c | 6 +-
> > drivers/gpu/drm/vc4/vc4_hdmi.c | 12 +-
> > drivers/gpu/drm/zte/zx_hdmi.c | 6 +-
> > drivers/gpu/drm/zte/zx_vga.c | 6 +-
> > include/drm/drm_connector.h | 18 +++
> > 26 files changed, 336 insertions(+), 121 deletions(-)
>
> In a Tl;Dr: I think this series covers 90%+ of the existing rather huge) driverset.
>
> For the series:
> Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
>
> Fwiw I'm in favour of Jani's suggestion to fold the dcc into the usual
> helper drm_connector_init(). Although since we have 130+ instances it
> might be better left for another day.
>
> HTH
> -Emil
--
Regards,
Laurent Pinchart
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno
^ permalink raw reply [flat|nested] 70+ messages in thread
* [PATCH v6 04/24] drm: rockchip: Provide ddc symlink in rk3066_hdmi sysfs directory
2019-07-26 17:22 [PATCH v6 00/24] Associate ddc adapters with connectors Andrzej Pietrasiewicz
2019-07-26 17:22 ` [PATCH v6 02/24] drm: Add drm_connector_init() variant with ddc Andrzej Pietrasiewicz
[not found] ` <cover.1564161140.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
@ 2019-07-26 17:22 ` Andrzej Pietrasiewicz
2019-07-26 17:22 ` [PATCH v6 05/24] drm: rockchip: Provide ddc symlink in inno_hdmi " Andrzej Pietrasiewicz
` (14 subsequent siblings)
17 siblings, 0 replies; 70+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-26 17:22 UTC (permalink / raw)
To: dri-devel
Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
David Airlie, Douglas Anderson, Andrzej Hajda, Laurent Pinchart,
Benjamin Gaignard, kernel, Fabio Estevam, David (ChunMing) Zhou,
linux-samsung-soc, Joonyoung Shim, Jyri Sarha, Vincent Abriou,
Krzysztof Kozlowski, Jonathan Hunter, linux-rockchip,
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 | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/rockchip/rk3066_hdmi.c b/drivers/gpu/drm/rockchip/rk3066_hdmi.c
index 85fc5f01f761..e874f5fdeec4 100644
--- a/drivers/gpu/drm/rockchip/rk3066_hdmi.c
+++ b/drivers/gpu/drm/rockchip/rk3066_hdmi.c
@@ -564,9 +564,10 @@ rk3066_hdmi_register(struct drm_device *drm, struct rk3066_hdmi *hdmi)
drm_connector_helper_add(&hdmi->connector,
&rk3066_hdmi_connector_helper_funcs);
- drm_connector_init(drm, &hdmi->connector,
- &rk3066_hdmi_connector_funcs,
- DRM_MODE_CONNECTOR_HDMIA);
+ drm_connector_init_with_ddc(drm, &hdmi->connector,
+ &rk3066_hdmi_connector_funcs,
+ DRM_MODE_CONNECTOR_HDMIA,
+ hdmi->ddc);
drm_connector_attach_encoder(&hdmi->connector, encoder);
--
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] 70+ messages in thread
* [PATCH v6 05/24] drm: rockchip: Provide ddc symlink in inno_hdmi sysfs directory
2019-07-26 17:22 [PATCH v6 00/24] Associate ddc adapters with connectors Andrzej Pietrasiewicz
` (2 preceding siblings ...)
2019-07-26 17:22 ` [PATCH v6 04/24] drm: rockchip: Provide ddc symlink in rk3066_hdmi sysfs directory Andrzej Pietrasiewicz
@ 2019-07-26 17:22 ` Andrzej Pietrasiewicz
2019-07-26 17:23 ` [PATCH v6 06/24] drm/msm/hdmi: Provide ddc symlink in hdmi connector " Andrzej Pietrasiewicz
` (13 subsequent siblings)
17 siblings, 0 replies; 70+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-26 17:22 UTC (permalink / raw)
To: dri-devel
Cc: Sam Ravnborg, Neil Armstrong, David Airlie, Douglas Anderson,
Thierry Reding, Laurent Pinchart, kernel, linux-samsung-soc,
Jyri Sarha, Vincent Abriou, Krzysztof Kozlowski, Jonathan Hunter,
linux-rockchip, Chen-Yu Tsai, Kukjin Kim, NXP Linux Team,
Dave Airlie, intel-gfx, freedreno, linux-tegra, Jonas Karlman,
linux-arm-msm, Mamta Shukla, linux-mediatek, Maxime Ripard
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 | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/rockchip/inno_hdmi.c b/drivers/gpu/drm/rockchip/inno_hdmi.c
index ed344a795b4d..e5864e823020 100644
--- a/drivers/gpu/drm/rockchip/inno_hdmi.c
+++ b/drivers/gpu/drm/rockchip/inno_hdmi.c
@@ -624,8 +624,10 @@ static int inno_hdmi_register(struct drm_device *drm, struct inno_hdmi *hdmi)
drm_connector_helper_add(&hdmi->connector,
&inno_hdmi_connector_helper_funcs);
- drm_connector_init(drm, &hdmi->connector, &inno_hdmi_connector_funcs,
- DRM_MODE_CONNECTOR_HDMIA);
+ drm_connector_init_with_ddc(drm, &hdmi->connector,
+ &inno_hdmi_connector_funcs,
+ DRM_MODE_CONNECTOR_HDMIA,
+ hdmi->ddc);
drm_connector_attach_encoder(&hdmi->connector, encoder);
--
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] 70+ messages in thread
* [PATCH v6 06/24] drm/msm/hdmi: Provide ddc symlink in hdmi connector sysfs directory
2019-07-26 17:22 [PATCH v6 00/24] Associate ddc adapters with connectors Andrzej Pietrasiewicz
` (3 preceding siblings ...)
2019-07-26 17:22 ` [PATCH v6 05/24] drm: rockchip: Provide ddc symlink in inno_hdmi " Andrzej Pietrasiewicz
@ 2019-07-26 17:23 ` Andrzej Pietrasiewicz
2019-07-26 17:23 ` [PATCH v6 08/24] drm/mediatek: " Andrzej Pietrasiewicz
` (12 subsequent siblings)
17 siblings, 0 replies; 70+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-26 17:23 UTC (permalink / raw)
To: dri-devel
Cc: amd-gfx, Sam Ravnborg, Neil Armstrong, David Airlie, Liviu Dudau,
Douglas Anderson, Thierry Reding, Laurent Pinchart, kernel,
linux-samsung-soc, Jyri Sarha, Vincent Abriou,
Krzysztof Kozlowski, Jonathan Hunter, linux-rockchip,
Chen-Yu Tsai, Kukjin Kim, NXP Linux Team, Dave Airlie, intel-gfx,
freedreno, linux-tegra, Jonas Karlman, linux-arm-msm,
Alexios Zavras
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 | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_connector.c b/drivers/gpu/drm/msm/hdmi/hdmi_connector.c
index 07b4cb877d82..1f03262b8a52 100644
--- a/drivers/gpu/drm/msm/hdmi/hdmi_connector.c
+++ b/drivers/gpu/drm/msm/hdmi/hdmi_connector.c
@@ -450,8 +450,10 @@ struct drm_connector *msm_hdmi_connector_init(struct hdmi *hdmi)
connector = &hdmi_connector->base;
- drm_connector_init(hdmi->dev, connector, &hdmi_connector_funcs,
- DRM_MODE_CONNECTOR_HDMIA);
+ drm_connector_init_with_ddc(hdmi->dev, connector,
+ &hdmi_connector_funcs,
+ DRM_MODE_CONNECTOR_HDMIA,
+ hdmi->i2c);
drm_connector_helper_add(connector, &msm_hdmi_connector_helper_funcs);
connector->polled = DRM_CONNECTOR_POLL_CONNECT |
--
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] 70+ messages in thread
* [PATCH v6 08/24] drm/mediatek: Provide ddc symlink in hdmi connector sysfs directory
2019-07-26 17:22 [PATCH v6 00/24] Associate ddc adapters with connectors Andrzej Pietrasiewicz
` (4 preceding siblings ...)
2019-07-26 17:23 ` [PATCH v6 06/24] drm/msm/hdmi: Provide ddc symlink in hdmi connector " Andrzej Pietrasiewicz
@ 2019-07-26 17:23 ` Andrzej Pietrasiewicz
2019-07-26 17:23 ` [PATCH v6 09/24] drm/tegra: Provide ddc symlink in output " Andrzej Pietrasiewicz
` (11 subsequent siblings)
17 siblings, 0 replies; 70+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-26 17:23 UTC (permalink / raw)
To: dri-devel
Cc: Sam Ravnborg, Neil Armstrong, David Airlie, Douglas Anderson,
Thierry Reding, Laurent Pinchart, kernel, linux-samsung-soc,
Jyri Sarha, Vincent Abriou, Krzysztof Kozlowski, Jonathan Hunter,
linux-rockchip, 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
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 | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c
index ce91b61364eb..f419765b7cc0 100644
--- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
+++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
@@ -1299,9 +1299,10 @@ static int mtk_hdmi_bridge_attach(struct drm_bridge *bridge)
struct mtk_hdmi *hdmi = hdmi_ctx_from_bridge(bridge);
int ret;
- ret = drm_connector_init(bridge->encoder->dev, &hdmi->conn,
- &mtk_hdmi_connector_funcs,
- DRM_MODE_CONNECTOR_HDMIA);
+ ret = drm_connector_init_with_ddc(bridge->encoder->dev, &hdmi->conn,
+ &mtk_hdmi_connector_funcs,
+ DRM_MODE_CONNECTOR_HDMIA,
+ hdmi->ddc_adpt);
if (ret) {
dev_err(hdmi->dev, "Failed to initialize connector: %d\n", ret);
return ret;
--
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] 70+ messages in thread
* [PATCH v6 09/24] drm/tegra: Provide ddc symlink in output connector sysfs directory
2019-07-26 17:22 [PATCH v6 00/24] Associate ddc adapters with connectors Andrzej Pietrasiewicz
` (5 preceding siblings ...)
2019-07-26 17:23 ` [PATCH v6 08/24] drm/mediatek: " Andrzej Pietrasiewicz
@ 2019-07-26 17:23 ` Andrzej Pietrasiewicz
2019-07-26 17:23 ` [PATCH v6 12/24] drm/vc4: Provide ddc symlink in " Andrzej Pietrasiewicz
` (10 subsequent siblings)
17 siblings, 0 replies; 70+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-26 17:23 UTC (permalink / raw)
To: dri-devel
Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
David Airlie, Douglas Anderson, Andrzej Hajda, Laurent Pinchart,
Benjamin Gaignard, kernel, Fabio Estevam, David (ChunMing) Zhou,
linux-samsung-soc, Joonyoung Shim, Jyri Sarha, Vincent Abriou,
Krzysztof Kozlowski, Jonathan Hunter, linux-rockchip,
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/hdmi.c | 7 ++++---
drivers/gpu/drm/tegra/sor.c | 7 ++++---
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/tegra/hdmi.c b/drivers/gpu/drm/tegra/hdmi.c
index 334c4d7d238b..416a2862a84b 100644
--- a/drivers/gpu/drm/tegra/hdmi.c
+++ b/drivers/gpu/drm/tegra/hdmi.c
@@ -1425,9 +1425,10 @@ static int tegra_hdmi_init(struct host1x_client *client)
hdmi->output.dev = client->dev;
- drm_connector_init(drm, &hdmi->output.connector,
- &tegra_hdmi_connector_funcs,
- DRM_MODE_CONNECTOR_HDMIA);
+ drm_connector_init_with_ddc(drm, &hdmi->output.connector,
+ &tegra_hdmi_connector_funcs,
+ DRM_MODE_CONNECTOR_HDMIA,
+ hdmi->output.ddc);
drm_connector_helper_add(&hdmi->output.connector,
&tegra_hdmi_connector_helper_funcs);
hdmi->output.connector.dpms = DRM_MODE_DPMS_OFF;
diff --git a/drivers/gpu/drm/tegra/sor.c b/drivers/gpu/drm/tegra/sor.c
index 4ffe3794e6d3..3a69e387c62d 100644
--- a/drivers/gpu/drm/tegra/sor.c
+++ b/drivers/gpu/drm/tegra/sor.c
@@ -2832,9 +2832,10 @@ static int tegra_sor_init(struct host1x_client *client)
sor->output.dev = sor->dev;
- drm_connector_init(drm, &sor->output.connector,
- &tegra_sor_connector_funcs,
- connector);
+ drm_connector_init_with_ddc(drm, &sor->output.connector,
+ &tegra_sor_connector_funcs,
+ connector,
+ sor->output.ddc);
drm_connector_helper_add(&sor->output.connector,
&tegra_sor_connector_helper_funcs);
sor->output.connector.dpms = DRM_MODE_DPMS_OFF;
--
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] 70+ messages in thread
* [PATCH v6 12/24] drm/vc4: Provide ddc symlink in connector sysfs directory
2019-07-26 17:22 [PATCH v6 00/24] Associate ddc adapters with connectors Andrzej Pietrasiewicz
` (6 preceding siblings ...)
2019-07-26 17:23 ` [PATCH v6 09/24] drm/tegra: Provide ddc symlink in output " Andrzej Pietrasiewicz
@ 2019-07-26 17:23 ` Andrzej Pietrasiewicz
2019-07-26 17:23 ` [PATCH v6 13/24] drm: zte: Provide ddc symlink in hdmi " Andrzej Pietrasiewicz
` (9 subsequent siblings)
17 siblings, 0 replies; 70+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-26 17:23 UTC (permalink / raw)
To: dri-devel
Cc: amd-gfx, Sam Ravnborg, Neil Armstrong, David Airlie,
Douglas Anderson, Thierry Reding, Laurent Pinchart, kernel,
linux-samsung-soc, Jyri Sarha, Vincent Abriou,
Krzysztof Kozlowski, Jonathan Hunter, linux-rockchip,
Chen-Yu Tsai, Kukjin Kim, NXP Linux Team, Dave Airlie, intel-gfx,
freedreno, linux-tegra, Jonas Karlman, linux-arm-msm,
Alexios Zavras, Mamta Shukla
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 | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
index ee7d4e7b0ee3..eb57c907a256 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -267,7 +267,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;
@@ -281,8 +282,10 @@ static struct drm_connector *vc4_hdmi_connector_init(struct drm_device *dev,
hdmi_connector->encoder = encoder;
- drm_connector_init(dev, connector, &vc4_hdmi_connector_funcs,
- DRM_MODE_CONNECTOR_HDMIA);
+ drm_connector_init_with_ddc(dev, connector,
+ &vc4_hdmi_connector_funcs,
+ DRM_MODE_CONNECTOR_HDMIA,
+ ddc);
drm_connector_helper_add(connector, &vc4_hdmi_connector_helper_funcs);
/* Create and attach TV margin props to this connector. */
@@ -1395,7 +1398,8 @@ 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, hdmi->ddc);
if (IS_ERR(hdmi->connector)) {
ret = PTR_ERR(hdmi->connector);
goto err_destroy_encoder;
--
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] 70+ messages in thread
* [PATCH v6 13/24] drm: zte: Provide ddc symlink in hdmi connector sysfs directory
2019-07-26 17:22 [PATCH v6 00/24] Associate ddc adapters with connectors Andrzej Pietrasiewicz
` (7 preceding siblings ...)
2019-07-26 17:23 ` [PATCH v6 12/24] drm/vc4: Provide ddc symlink in " Andrzej Pietrasiewicz
@ 2019-07-26 17:23 ` Andrzej Pietrasiewicz
2019-07-26 17:23 ` [PATCH v6 15/24] drm/tilcdc: Provide ddc symlink in " Andrzej Pietrasiewicz
` (8 subsequent siblings)
17 siblings, 0 replies; 70+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-26 17:23 UTC (permalink / raw)
To: dri-devel
Cc: amd-gfx, Sam Ravnborg, Neil Armstrong, David Airlie,
Douglas Anderson, Thierry Reding, Laurent Pinchart, kernel,
linux-samsung-soc, Jyri Sarha, Vincent Abriou,
Krzysztof Kozlowski, Jonathan Hunter, linux-rockchip,
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_hdmi.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/zte/zx_hdmi.c b/drivers/gpu/drm/zte/zx_hdmi.c
index a50f5a1f09b8..b98a1420dcd3 100644
--- a/drivers/gpu/drm/zte/zx_hdmi.c
+++ b/drivers/gpu/drm/zte/zx_hdmi.c
@@ -319,8 +319,10 @@ static int zx_hdmi_register(struct drm_device *drm, struct zx_hdmi *hdmi)
hdmi->connector.polled = DRM_CONNECTOR_POLL_HPD;
- drm_connector_init(drm, &hdmi->connector, &zx_hdmi_connector_funcs,
- DRM_MODE_CONNECTOR_HDMIA);
+ drm_connector_init_with_ddc(drm, &hdmi->connector,
+ &zx_hdmi_connector_funcs,
+ DRM_MODE_CONNECTOR_HDMIA,
+ &hdmi->ddc->adap);
drm_connector_helper_add(&hdmi->connector,
&zx_hdmi_connector_helper_funcs);
--
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] 70+ messages in thread
* [PATCH v6 15/24] drm/tilcdc: Provide ddc symlink in connector sysfs directory
2019-07-26 17:22 [PATCH v6 00/24] Associate ddc adapters with connectors Andrzej Pietrasiewicz
` (8 preceding siblings ...)
2019-07-26 17:23 ` [PATCH v6 13/24] drm: zte: Provide ddc symlink in hdmi " Andrzej Pietrasiewicz
@ 2019-07-26 17:23 ` Andrzej Pietrasiewicz
2019-07-26 17:23 ` [PATCH v6 16/24] drm: sti: Provide ddc symlink in hdmi " Andrzej Pietrasiewicz
` (7 subsequent siblings)
17 siblings, 0 replies; 70+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-26 17:23 UTC (permalink / raw)
To: dri-devel
Cc: Sam Ravnborg, Neil Armstrong, David Airlie, Douglas Anderson,
Thierry Reding, Laurent Pinchart, kernel, linux-samsung-soc,
Jyri Sarha, Vincent Abriou, Krzysztof Kozlowski, Jonathan Hunter,
linux-rockchip, 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
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 | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
index c6e4e52f32bc..d51776dd7a03 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
@@ -222,8 +222,10 @@ static struct drm_connector *tfp410_connector_create(struct drm_device *dev,
connector = &tfp410_connector->base;
- drm_connector_init(dev, connector, &tfp410_connector_funcs,
- DRM_MODE_CONNECTOR_DVID);
+ drm_connector_init_with_ddc(dev, connector,
+ &tfp410_connector_funcs,
+ DRM_MODE_CONNECTOR_DVID,
+ mod->i2c);
drm_connector_helper_add(connector, &tfp410_connector_helper_funcs);
connector->polled = DRM_CONNECTOR_POLL_CONNECT |
--
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] 70+ messages in thread
* [PATCH v6 16/24] drm: sti: Provide ddc symlink in hdmi connector sysfs directory
2019-07-26 17:22 [PATCH v6 00/24] Associate ddc adapters with connectors Andrzej Pietrasiewicz
` (9 preceding siblings ...)
2019-07-26 17:23 ` [PATCH v6 15/24] drm/tilcdc: Provide ddc symlink in " Andrzej Pietrasiewicz
@ 2019-07-26 17:23 ` Andrzej Pietrasiewicz
[not found] ` <510765aff8ef99683aa2da48bd08004376b1980a.1564161140.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2019-07-26 17:23 ` [PATCH v6 17/24] drm/mgag200: Provide ddc symlink in " Andrzej Pietrasiewicz
` (6 subsequent siblings)
17 siblings, 1 reply; 70+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-26 17:23 UTC (permalink / raw)
To: dri-devel
Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
David Airlie, Douglas Anderson, Andrzej Hajda, Laurent Pinchart,
Benjamin Gaignard, kernel, Fabio Estevam, David (ChunMing) Zhou,
linux-samsung-soc, Joonyoung Shim, Jyri Sarha, Vincent Abriou,
Krzysztof Kozlowski, Jonathan Hunter, linux-rockchip,
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/sti/sti_hdmi.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/sti/sti_hdmi.c b/drivers/gpu/drm/sti/sti_hdmi.c
index f03d617edc4c..33d06e0a9168 100644
--- a/drivers/gpu/drm/sti/sti_hdmi.c
+++ b/drivers/gpu/drm/sti/sti_hdmi.c
@@ -1284,8 +1284,10 @@ static int sti_hdmi_bind(struct device *dev, struct device *master, void *data)
drm_connector->polled = DRM_CONNECTOR_POLL_HPD;
- drm_connector_init(drm_dev, drm_connector,
- &sti_hdmi_connector_funcs, DRM_MODE_CONNECTOR_HDMIA);
+ drm_connector_init_with_ddc(drm_dev, drm_connector,
+ &sti_hdmi_connector_funcs,
+ DRM_MODE_CONNECTOR_HDMIA,
+ hdmi->ddc_adapt);
drm_connector_helper_add(drm_connector,
&sti_hdmi_connector_helper_funcs);
--
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] 70+ messages in thread
* [PATCH v6 17/24] drm/mgag200: Provide ddc symlink in connector sysfs directory
2019-07-26 17:22 [PATCH v6 00/24] Associate ddc adapters with connectors Andrzej Pietrasiewicz
` (10 preceding siblings ...)
2019-07-26 17:23 ` [PATCH v6 16/24] drm: sti: Provide ddc symlink in hdmi " Andrzej Pietrasiewicz
@ 2019-07-26 17:23 ` Andrzej Pietrasiewicz
2019-07-26 17:23 ` [PATCH v6 19/24] drm/bridge: dumb-vga-dac: " Andrzej Pietrasiewicz
` (5 subsequent siblings)
17 siblings, 0 replies; 70+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-26 17:23 UTC (permalink / raw)
To: dri-devel
Cc: Sam Ravnborg, Neil Armstrong, David Airlie, Liviu Dudau,
Douglas Anderson, Thierry Reding, Laurent Pinchart, kernel,
linux-samsung-soc, Jyri Sarha, Vincent Abriou,
Krzysztof Kozlowski, Jonathan Hunter, linux-rockchip,
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>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/mgag200/mgag200_mode.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c b/drivers/gpu/drm/mgag200/mgag200_mode.c
index 822f2a13748f..5e778b5f1a10 100644
--- a/drivers/gpu/drm/mgag200/mgag200_mode.c
+++ b/drivers/gpu/drm/mgag200/mgag200_mode.c
@@ -1678,18 +1678,19 @@ 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");
- drm_connector_init(dev, connector,
- &mga_vga_connector_funcs, DRM_MODE_CONNECTOR_VGA);
+ drm_connector_init_with_ddc(dev, connector,
+ &mga_vga_connector_funcs,
+ DRM_MODE_CONNECTOR_VGA,
+ &mga_connector->i2c->adapter);
drm_connector_helper_add(connector, &mga_vga_connector_helper_funcs);
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
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 70+ messages in thread
* [PATCH v6 19/24] drm/bridge: dumb-vga-dac: Provide ddc symlink in connector sysfs directory
2019-07-26 17:22 [PATCH v6 00/24] Associate ddc adapters with connectors Andrzej Pietrasiewicz
` (11 preceding siblings ...)
2019-07-26 17:23 ` [PATCH v6 17/24] drm/mgag200: Provide ddc symlink in " Andrzej Pietrasiewicz
@ 2019-07-26 17:23 ` Andrzej Pietrasiewicz
[not found] ` <ebb75e71b8b7c8d65d54a947a03fd21b8969fb3a.1564161140.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2019-07-26 17:23 ` [PATCH v6 21/24] drm/bridge: ti-tfp410: " Andrzej Pietrasiewicz
` (4 subsequent siblings)
17 siblings, 1 reply; 70+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-26 17:23 UTC (permalink / raw)
To: dri-devel
Cc: Sam Ravnborg, Neil Armstrong, David Airlie, Douglas Anderson,
Thierry Reding, Laurent Pinchart, kernel, linux-samsung-soc,
Jyri Sarha, Vincent Abriou, Krzysztof Kozlowski, Jonathan Hunter,
linux-rockchip, Chen-Yu Tsai, Kukjin Kim, NXP Linux Team,
Dave Airlie, intel-gfx, freedreno, linux-tegra, Jonas Karlman,
linux-arm-msm, Mamta Shukla, linux-mediatek, Maxime Ripard
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 | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/bridge/dumb-vga-dac.c b/drivers/gpu/drm/bridge/dumb-vga-dac.c
index d32885b906ae..8ef6539ae78a 100644
--- a/drivers/gpu/drm/bridge/dumb-vga-dac.c
+++ b/drivers/gpu/drm/bridge/dumb-vga-dac.c
@@ -111,8 +111,10 @@ static int dumb_vga_attach(struct drm_bridge *bridge)
drm_connector_helper_add(&vga->connector,
&dumb_vga_con_helper_funcs);
- ret = drm_connector_init(bridge->dev, &vga->connector,
- &dumb_vga_con_funcs, DRM_MODE_CONNECTOR_VGA);
+ ret = drm_connector_init_with_ddc(bridge->dev, &vga->connector,
+ &dumb_vga_con_funcs,
+ DRM_MODE_CONNECTOR_VGA,
+ vga->ddc);
if (ret) {
DRM_ERROR("Failed to initialize connector\n");
return ret;
--
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] 70+ messages in thread
* [PATCH v6 21/24] drm/bridge: ti-tfp410: Provide ddc symlink in connector sysfs directory
2019-07-26 17:22 [PATCH v6 00/24] Associate ddc adapters with connectors Andrzej Pietrasiewicz
` (12 preceding siblings ...)
2019-07-26 17:23 ` [PATCH v6 19/24] drm/bridge: dumb-vga-dac: " Andrzej Pietrasiewicz
@ 2019-07-26 17:23 ` Andrzej Pietrasiewicz
[not found] ` <3b61da77a6456805db0deffe6d1a2343dd784730.1564161140.git.andrzej.p-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2019-07-26 17:23 ` [PATCH v6 22/24] drm/amdgpu: " Andrzej Pietrasiewicz
` (3 subsequent siblings)
17 siblings, 1 reply; 70+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-26 17:23 UTC (permalink / raw)
To: dri-devel
Cc: Sam Ravnborg, Neil Armstrong, David Airlie, Liviu Dudau,
Douglas Anderson, Thierry Reding, Laurent Pinchart, kernel,
linux-samsung-soc, Jyri Sarha, Vincent Abriou,
Krzysztof Kozlowski, Jonathan Hunter, linux-rockchip,
Chen-Yu Tsai, Kukjin Kim, NXP Linux Team, Dave Airlie, intel-gfx,
freedreno, linux-tegra, Jonas Karlman, linux-arm-msm,
Alexios Zavras, Mamta Shukla <mamtashukla555>
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 | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/bridge/ti-tfp410.c b/drivers/gpu/drm/bridge/ti-tfp410.c
index dbf35c7bc85e..61cc2354ef1b 100644
--- a/drivers/gpu/drm/bridge/ti-tfp410.c
+++ b/drivers/gpu/drm/bridge/ti-tfp410.c
@@ -134,8 +134,10 @@ static int tfp410_attach(struct drm_bridge *bridge)
drm_connector_helper_add(&dvi->connector,
&tfp410_con_helper_funcs);
- ret = drm_connector_init(bridge->dev, &dvi->connector,
- &tfp410_con_funcs, dvi->connector_type);
+ ret = drm_connector_init_with_ddc(bridge->dev, &dvi->connector,
+ &tfp410_con_funcs,
+ dvi->connector_type,
+ dvi->ddc);
if (ret) {
dev_err(dvi->dev, "drm_connector_init() failed: %d\n", ret);
return ret;
--
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] 70+ messages in thread
* [PATCH v6 22/24] drm/amdgpu: Provide ddc symlink in connector sysfs directory
2019-07-26 17:22 [PATCH v6 00/24] Associate ddc adapters with connectors Andrzej Pietrasiewicz
` (13 preceding siblings ...)
2019-07-26 17:23 ` [PATCH v6 21/24] drm/bridge: ti-tfp410: " Andrzej Pietrasiewicz
@ 2019-07-26 17:23 ` Andrzej Pietrasiewicz
2019-07-26 19:28 ` Alex Deucher
2019-07-26 17:23 ` [PATCH v6 23/24] drm/radeon: " Andrzej Pietrasiewicz
` (2 subsequent siblings)
17 siblings, 1 reply; 70+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-26 17:23 UTC (permalink / raw)
To: dri-devel
Cc: Sam Ravnborg, Neil Armstrong, David Airlie, Douglas Anderson,
Thierry Reding, Laurent Pinchart, kernel, linux-samsung-soc,
Jyri Sarha, Vincent Abriou, Krzysztof Kozlowski, Jonathan Hunter,
linux-rockchip, Chen-Yu Tsai, Kukjin Kim, NXP Linux Team,
Dave Airlie, intel-gfx, freedreno, linux-tegra, Jonas Karlman,
linux-arm-msm, Mamta Shukla, linux-mediatek, Maxime Ripard
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 | 96 ++++++++++++++-----
1 file changed, 70 insertions(+), 26 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
index 73b2ede773d3..ece55c8fa673 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
@@ -1505,6 +1505,7 @@ amdgpu_connector_add(struct amdgpu_device *adev,
struct amdgpu_connector_atom_dig *amdgpu_dig_connector;
struct drm_encoder *encoder;
struct amdgpu_encoder *amdgpu_encoder;
+ struct i2c_adapter *ddc = NULL;
uint32_t subpixel_order = SubPixelNone;
bool shared_ddc = false;
bool is_dp_bridge = false;
@@ -1574,17 +1575,21 @@ 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
+ 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:
case DRM_MODE_CONNECTOR_DVIA:
default:
- drm_connector_init(dev, &amdgpu_connector->base,
- &amdgpu_connector_dp_funcs, connector_type);
+ drm_connector_init_with_ddc(dev, &amdgpu_connector->base,
+ &amdgpu_connector_dp_funcs,
+ connector_type,
+ ddc);
drm_connector_helper_add(&amdgpu_connector->base,
&amdgpu_connector_dp_helper_funcs);
connector->interlace_allowed = true;
@@ -1602,8 +1607,10 @@ amdgpu_connector_add(struct amdgpu_device *adev,
case DRM_MODE_CONNECTOR_HDMIA:
case DRM_MODE_CONNECTOR_HDMIB:
case DRM_MODE_CONNECTOR_DisplayPort:
- drm_connector_init(dev, &amdgpu_connector->base,
- &amdgpu_connector_dp_funcs, connector_type);
+ drm_connector_init_with_ddc(dev, &amdgpu_connector->base,
+ &amdgpu_connector_dp_funcs,
+ connector_type,
+ ddc);
drm_connector_helper_add(&amdgpu_connector->base,
&amdgpu_connector_dp_helper_funcs);
drm_object_attach_property(&amdgpu_connector->base.base,
@@ -1644,8 +1651,10 @@ amdgpu_connector_add(struct amdgpu_device *adev,
break;
case DRM_MODE_CONNECTOR_LVDS:
case DRM_MODE_CONNECTOR_eDP:
- drm_connector_init(dev, &amdgpu_connector->base,
- &amdgpu_connector_edp_funcs, connector_type);
+ drm_connector_init_with_ddc(dev, &amdgpu_connector->base,
+ &amdgpu_connector_edp_funcs,
+ connector_type,
+ ddc);
drm_connector_helper_add(&amdgpu_connector->base,
&amdgpu_connector_dp_helper_funcs);
drm_object_attach_property(&amdgpu_connector->base.base,
@@ -1659,13 +1668,18 @@ 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
+ ddc = &amdgpu_connector->ddc_bus->adapter;
}
+ drm_connector_init_with_ddc(dev, &amdgpu_connector->base,
+ &amdgpu_connector_vga_funcs,
+ connector_type,
+ ddc);
+ 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 +1693,18 @@ 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
+ ddc = &amdgpu_connector->ddc_bus->adapter;
}
+ drm_connector_init_with_ddc(dev, &amdgpu_connector->base,
+ &amdgpu_connector_vga_funcs,
+ connector_type,
+ ddc);
+ 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 +1723,18 @@ 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
+ ddc = &amdgpu_connector->ddc_bus->adapter;
}
+ drm_connector_init_with_ddc(dev, &amdgpu_connector->base,
+ &amdgpu_connector_dvi_funcs,
+ connector_type,
+ ddc);
+ 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 +1778,18 @@ 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
+ ddc = &amdgpu_connector->ddc_bus->adapter;
}
+ drm_connector_init_with_ddc(dev, &amdgpu_connector->base,
+ &amdgpu_connector_dvi_funcs,
+ connector_type,
+ ddc);
+ 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 +1825,20 @@ 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
+ ddc = &amdgpu_connector->ddc_bus->adapter;
+ } else {
DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+ }
}
+ drm_connector_init_with_ddc(dev, &amdgpu_connector->base,
+ &amdgpu_connector_dp_funcs,
+ connector_type,
+ ddc);
+ 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 +1872,20 @@ 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
+ ddc = &amdgpu_connector->ddc_bus->adapter;
+ } else {
DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+ }
}
+ drm_connector_init_with_ddc(dev, &amdgpu_connector->base,
+ &amdgpu_connector_edp_funcs,
+ connector_type,
+ ddc);
+ 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 +1898,18 @@ 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
+ ddc = &amdgpu_connector->ddc_bus->adapter;
}
+ drm_connector_init_with_ddc(dev, &amdgpu_connector->base,
+ &amdgpu_connector_lvds_funcs,
+ connector_type,
+ ddc);
+ 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] 70+ messages in thread
* Re: [PATCH v6 22/24] drm/amdgpu: Provide ddc symlink in connector sysfs directory
2019-07-26 17:23 ` [PATCH v6 22/24] drm/amdgpu: " Andrzej Pietrasiewicz
@ 2019-07-26 19:28 ` Alex Deucher
[not found] ` <CADnq5_O1B59Q+68fJgtf_bn_=WQ9yrVPq-V5tL1VQ3+vzgf1Zw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
0 siblings, 1 reply; 70+ messages in thread
From: Alex Deucher @ 2019-07-26 19:28 UTC (permalink / raw)
To: Andrzej Pietrasiewicz
Cc: Maxime Ripard, Neil Armstrong, David Airlie,
Maling list - DRI developers, Thierry Reding, Laurent Pinchart,
Shawn Guo, kernel, linux-samsung-soc, linux-arm-kernel,
Sam Ravnborg, Kyungmin Park, Krzysztof Kozlowski, Jonathan Hunter,
linux-rockchip, Chen-Yu Tsai, Kukjin Kim, Matthias Brugger,
NXP Linux Team, Dave Airlie, Pengutronix Kernel Team,
Jonas Karlman
On Fri, Jul 26, 2019 at 1:28 PM Andrzej Pietrasiewicz
<andrzej.p@collabora.com> wrote:
>
> Use the ddc pointer provided by the generic connector.
>
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
Note that this only covers the legacy display code. The new DC
display code also needs to be converted. See:
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
With those updated as well:
Acked-by: Alex Deucher <alexander.deucher@amd.com>
> ---
> .../gpu/drm/amd/amdgpu/amdgpu_connectors.c | 96 ++++++++++++++-----
> 1 file changed, 70 insertions(+), 26 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
> index 73b2ede773d3..ece55c8fa673 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
> @@ -1505,6 +1505,7 @@ amdgpu_connector_add(struct amdgpu_device *adev,
> struct amdgpu_connector_atom_dig *amdgpu_dig_connector;
> struct drm_encoder *encoder;
> struct amdgpu_encoder *amdgpu_encoder;
> + struct i2c_adapter *ddc = NULL;
> uint32_t subpixel_order = SubPixelNone;
> bool shared_ddc = false;
> bool is_dp_bridge = false;
> @@ -1574,17 +1575,21 @@ 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
> + 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:
> case DRM_MODE_CONNECTOR_DVIA:
> default:
> - drm_connector_init(dev, &amdgpu_connector->base,
> - &amdgpu_connector_dp_funcs, connector_type);
> + drm_connector_init_with_ddc(dev, &amdgpu_connector->base,
> + &amdgpu_connector_dp_funcs,
> + connector_type,
> + ddc);
> drm_connector_helper_add(&amdgpu_connector->base,
> &amdgpu_connector_dp_helper_funcs);
> connector->interlace_allowed = true;
> @@ -1602,8 +1607,10 @@ amdgpu_connector_add(struct amdgpu_device *adev,
> case DRM_MODE_CONNECTOR_HDMIA:
> case DRM_MODE_CONNECTOR_HDMIB:
> case DRM_MODE_CONNECTOR_DisplayPort:
> - drm_connector_init(dev, &amdgpu_connector->base,
> - &amdgpu_connector_dp_funcs, connector_type);
> + drm_connector_init_with_ddc(dev, &amdgpu_connector->base,
> + &amdgpu_connector_dp_funcs,
> + connector_type,
> + ddc);
> drm_connector_helper_add(&amdgpu_connector->base,
> &amdgpu_connector_dp_helper_funcs);
> drm_object_attach_property(&amdgpu_connector->base.base,
> @@ -1644,8 +1651,10 @@ amdgpu_connector_add(struct amdgpu_device *adev,
> break;
> case DRM_MODE_CONNECTOR_LVDS:
> case DRM_MODE_CONNECTOR_eDP:
> - drm_connector_init(dev, &amdgpu_connector->base,
> - &amdgpu_connector_edp_funcs, connector_type);
> + drm_connector_init_with_ddc(dev, &amdgpu_connector->base,
> + &amdgpu_connector_edp_funcs,
> + connector_type,
> + ddc);
> drm_connector_helper_add(&amdgpu_connector->base,
> &amdgpu_connector_dp_helper_funcs);
> drm_object_attach_property(&amdgpu_connector->base.base,
> @@ -1659,13 +1668,18 @@ 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
> + ddc = &amdgpu_connector->ddc_bus->adapter;
> }
> + drm_connector_init_with_ddc(dev, &amdgpu_connector->base,
> + &amdgpu_connector_vga_funcs,
> + connector_type,
> + ddc);
> + 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 +1693,18 @@ 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
> + ddc = &amdgpu_connector->ddc_bus->adapter;
> }
> + drm_connector_init_with_ddc(dev, &amdgpu_connector->base,
> + &amdgpu_connector_vga_funcs,
> + connector_type,
> + ddc);
> + 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 +1723,18 @@ 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
> + ddc = &amdgpu_connector->ddc_bus->adapter;
> }
> + drm_connector_init_with_ddc(dev, &amdgpu_connector->base,
> + &amdgpu_connector_dvi_funcs,
> + connector_type,
> + ddc);
> + 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 +1778,18 @@ 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
> + ddc = &amdgpu_connector->ddc_bus->adapter;
> }
> + drm_connector_init_with_ddc(dev, &amdgpu_connector->base,
> + &amdgpu_connector_dvi_funcs,
> + connector_type,
> + ddc);
> + 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 +1825,20 @@ 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
> + ddc = &amdgpu_connector->ddc_bus->adapter;
> + } else {
> DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
> + }
> }
> + drm_connector_init_with_ddc(dev, &amdgpu_connector->base,
> + &amdgpu_connector_dp_funcs,
> + connector_type,
> + ddc);
> + 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 +1872,20 @@ 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
> + ddc = &amdgpu_connector->ddc_bus->adapter;
> + } else {
> DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
> + }
> }
> + drm_connector_init_with_ddc(dev, &amdgpu_connector->base,
> + &amdgpu_connector_edp_funcs,
> + connector_type,
> + ddc);
> + 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 +1898,18 @@ 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
> + ddc = &amdgpu_connector->ddc_bus->adapter;
> }
> + drm_connector_init_with_ddc(dev, &amdgpu_connector->base,
> + &amdgpu_connector_lvds_funcs,
> + connector_type,
> + ddc);
> + 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
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 70+ messages in thread
* [PATCH v6 23/24] drm/radeon: Provide ddc symlink in connector sysfs directory
2019-07-26 17:22 [PATCH v6 00/24] Associate ddc adapters with connectors Andrzej Pietrasiewicz
` (14 preceding siblings ...)
2019-07-26 17:23 ` [PATCH v6 22/24] drm/amdgpu: " Andrzej Pietrasiewicz
@ 2019-07-26 17:23 ` Andrzej Pietrasiewicz
2019-07-26 19:26 ` Alex Deucher
2019-07-26 18:35 ` [PATCH v6 00/24] Associate ddc adapters with connectors Sam Ravnborg
2019-08-04 12:33 ` [PATCH v6 00/24] Associate ddc adapters with connectors Laurent Pinchart
17 siblings, 1 reply; 70+ messages in thread
From: Andrzej Pietrasiewicz @ 2019-07-26 17:23 UTC (permalink / raw)
To: dri-devel
Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
David Airlie, Douglas Anderson, Andrzej Hajda, Laurent Pinchart,
Benjamin Gaignard, kernel, Fabio Estevam, David (ChunMing) Zhou,
linux-samsung-soc, Joonyoung Shim, Jyri Sarha, Vincent Abriou,
Krzysztof Kozlowski, Jonathan Hunter, linux-rockchip,
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/radeon/radeon_connectors.c | 142 +++++++++++++++------
1 file changed, 106 insertions(+), 36 deletions(-)
diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
index c60d1a44d22a..b3ad8d890801 100644
--- a/drivers/gpu/drm/radeon/radeon_connectors.c
+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
@@ -1870,6 +1870,7 @@ radeon_add_atom_connector(struct drm_device *dev,
struct radeon_connector_atom_dig *radeon_dig_connector;
struct drm_encoder *encoder;
struct radeon_encoder *radeon_encoder;
+ struct i2c_adapter *ddc;
uint32_t subpixel_order = SubPixelNone;
bool shared_ddc = false;
bool is_dp_bridge = false;
@@ -1947,17 +1948,21 @@ 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
+ 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:
case DRM_MODE_CONNECTOR_DVIA:
default:
- drm_connector_init(dev, &radeon_connector->base,
- &radeon_dp_connector_funcs, connector_type);
+ drm_connector_init_with_ddc(dev, &radeon_connector->base,
+ &radeon_dp_connector_funcs,
+ connector_type,
+ ddc);
drm_connector_helper_add(&radeon_connector->base,
&radeon_dp_connector_helper_funcs);
connector->interlace_allowed = true;
@@ -1979,8 +1984,10 @@ radeon_add_atom_connector(struct drm_device *dev,
case DRM_MODE_CONNECTOR_HDMIA:
case DRM_MODE_CONNECTOR_HDMIB:
case DRM_MODE_CONNECTOR_DisplayPort:
- drm_connector_init(dev, &radeon_connector->base,
- &radeon_dp_connector_funcs, connector_type);
+ drm_connector_init_with_ddc(dev, &radeon_connector->base,
+ &radeon_dp_connector_funcs,
+ connector_type,
+ ddc);
drm_connector_helper_add(&radeon_connector->base,
&radeon_dp_connector_helper_funcs);
drm_object_attach_property(&radeon_connector->base.base,
@@ -2027,8 +2034,10 @@ radeon_add_atom_connector(struct drm_device *dev,
break;
case DRM_MODE_CONNECTOR_LVDS:
case DRM_MODE_CONNECTOR_eDP:
- drm_connector_init(dev, &radeon_connector->base,
- &radeon_lvds_bridge_connector_funcs, connector_type);
+ drm_connector_init_with_ddc(dev, &radeon_connector->base,
+ &radeon_lvds_bridge_connector_funcs,
+ connector_type,
+ ddc);
drm_connector_helper_add(&radeon_connector->base,
&radeon_dp_connector_helper_funcs);
drm_object_attach_property(&radeon_connector->base.base,
@@ -2042,13 +2051,18 @@ 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
+ ddc = &radeon_connector->ddc_bus->adapter;
}
+ drm_connector_init_with_ddc(dev, &radeon_connector->base,
+ &radeon_vga_connector_funcs,
+ connector_type,
+ ddc);
+ 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 +2081,18 @@ 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
+ ddc = &radeon_connector->ddc_bus->adapter;
}
+ drm_connector_init_with_ddc(dev, &radeon_connector->base,
+ &radeon_vga_connector_funcs,
+ connector_type,
+ ddc);
+ 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 +2117,18 @@ 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
+ ddc = &radeon_connector->ddc_bus->adapter;
}
+ drm_connector_init_with_ddc(dev, &radeon_connector->base,
+ &radeon_dvi_connector_funcs,
+ connector_type,
+ ddc);
+ 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 +2179,18 @@ 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
+ ddc = &radeon_connector->ddc_bus->adapter;
}
+ drm_connector_init_with_ddc(dev, &radeon_connector->base,
+ &radeon_dvi_connector_funcs,
+ connector_type,
+ ddc);
+ 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 +2234,20 @@ 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
+ ddc = &radeon_connector->ddc_bus->adapter;
+ } else {
DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+ }
}
+ drm_connector_init_with_ddc(dev, &radeon_connector->base,
+ &radeon_dp_connector_funcs,
+ connector_type,
+ ddc);
+ 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 +2289,20 @@ 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
+ ddc = &radeon_connector->ddc_bus->adapter;
+ } else {
DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+ }
}
+ drm_connector_init_with_ddc(dev, &radeon_connector->base,
+ &radeon_edp_connector_funcs,
+ connector_type,
+ ddc);
+ 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);
@@ -2274,7 +2313,10 @@ radeon_add_atom_connector(struct drm_device *dev,
case DRM_MODE_CONNECTOR_SVIDEO:
case DRM_MODE_CONNECTOR_Composite:
case DRM_MODE_CONNECTOR_9PinDIN:
- drm_connector_init(dev, &radeon_connector->base, &radeon_tv_connector_funcs, connector_type);
+ drm_connector_init_with_ddc(dev, &radeon_connector->base,
+ &radeon_tv_connector_funcs,
+ connector_type,
+ ddc);
drm_connector_helper_add(&radeon_connector->base, &radeon_tv_connector_helper_funcs);
radeon_connector->dac_load_detect = true;
drm_object_attach_property(&radeon_connector->base.base,
@@ -2294,13 +2336,18 @@ 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
+ ddc = &radeon_connector->ddc_bus->adapter;
}
+ drm_connector_init_with_ddc(dev, &radeon_connector->base,
+ &radeon_lvds_connector_funcs,
+ connector_type,
+ ddc);
+ 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 +2425,18 @@ 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
+ ddc = &radeon_connector->ddc_bus->adapter;
}
+ drm_connector_init_with_ddc(dev, &radeon_connector->base,
+ &radeon_vga_connector_funcs,
+ connector_type,
+ ddc);
+ 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 +2447,18 @@ 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
+ ddc = &radeon_connector->ddc_bus->adapter;
}
+ drm_connector_init_with_ddc(dev, &radeon_connector->base,
+ &radeon_vga_connector_funcs,
+ connector_type,
+ ddc);
+ 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 +2470,18 @@ 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
+ ddc = &radeon_connector->ddc_bus->adapter;
}
+ drm_connector_init_with_ddc(dev, &radeon_connector->base,
+ &radeon_dvi_connector_funcs,
+ connector_type,
+ ddc);
+ 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,
@@ -2436,7 +2498,10 @@ radeon_add_legacy_connector(struct drm_device *dev,
case DRM_MODE_CONNECTOR_SVIDEO:
case DRM_MODE_CONNECTOR_Composite:
case DRM_MODE_CONNECTOR_9PinDIN:
- drm_connector_init(dev, &radeon_connector->base, &radeon_tv_connector_funcs, connector_type);
+ drm_connector_init_with_ddc(dev, &radeon_connector->base,
+ &radeon_tv_connector_funcs,
+ connector_type,
+ ddc);
drm_connector_helper_add(&radeon_connector->base, &radeon_tv_connector_helper_funcs);
radeon_connector->dac_load_detect = true;
/* RS400,RC410,RS480 chipset seems to report a lot
@@ -2458,13 +2523,18 @@ 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
+ ddc = &radeon_connector->ddc_bus->adapter;
}
+ drm_connector_init_with_ddc(dev, &radeon_connector->base,
+ &radeon_lvds_connector_funcs,
+ connector_type,
+ ddc);
+ 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
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 70+ messages in thread
* Re: [PATCH v6 23/24] drm/radeon: Provide ddc symlink in connector sysfs directory
2019-07-26 17:23 ` [PATCH v6 23/24] drm/radeon: " Andrzej Pietrasiewicz
@ 2019-07-26 19:26 ` Alex Deucher
0 siblings, 0 replies; 70+ messages in thread
From: Alex Deucher @ 2019-07-26 19:26 UTC (permalink / raw)
To: Andrzej Pietrasiewicz
Cc: Maxime Ripard, Neil Armstrong, David Airlie,
Maling list - DRI developers, Thierry Reding, Laurent Pinchart,
Shawn Guo, kernel, linux-samsung-soc, linux-arm-kernel,
Oleksandr Andrushchenko, Sam Ravnborg, Kyungmin Park,
Krzysztof Kozlowski, Jonathan Hunter, linux-rockchip,
Chen-Yu Tsai, Kukjin Kim, Matthias Brugger, NXP Linux Team,
Dave Airlie, Pengutronix Kernel Team
On Fri, Jul 26, 2019 at 1:29 PM Andrzej Pietrasiewicz
<andrzej.p@collabora.com> wrote:
>
> Use the ddc pointer provided by the generic connector.
>
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
> ---
> drivers/gpu/drm/radeon/radeon_connectors.c | 142 +++++++++++++++------
> 1 file changed, 106 insertions(+), 36 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
> index c60d1a44d22a..b3ad8d890801 100644
> --- a/drivers/gpu/drm/radeon/radeon_connectors.c
> +++ b/drivers/gpu/drm/radeon/radeon_connectors.c
> @@ -1870,6 +1870,7 @@ radeon_add_atom_connector(struct drm_device *dev,
> struct radeon_connector_atom_dig *radeon_dig_connector;
> struct drm_encoder *encoder;
> struct radeon_encoder *radeon_encoder;
> + struct i2c_adapter *ddc;
> uint32_t subpixel_order = SubPixelNone;
> bool shared_ddc = false;
> bool is_dp_bridge = false;
> @@ -1947,17 +1948,21 @@ 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
> + 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:
> case DRM_MODE_CONNECTOR_DVIA:
> default:
> - drm_connector_init(dev, &radeon_connector->base,
> - &radeon_dp_connector_funcs, connector_type);
> + drm_connector_init_with_ddc(dev, &radeon_connector->base,
> + &radeon_dp_connector_funcs,
> + connector_type,
> + ddc);
> drm_connector_helper_add(&radeon_connector->base,
> &radeon_dp_connector_helper_funcs);
> connector->interlace_allowed = true;
> @@ -1979,8 +1984,10 @@ radeon_add_atom_connector(struct drm_device *dev,
> case DRM_MODE_CONNECTOR_HDMIA:
> case DRM_MODE_CONNECTOR_HDMIB:
> case DRM_MODE_CONNECTOR_DisplayPort:
> - drm_connector_init(dev, &radeon_connector->base,
> - &radeon_dp_connector_funcs, connector_type);
> + drm_connector_init_with_ddc(dev, &radeon_connector->base,
> + &radeon_dp_connector_funcs,
> + connector_type,
> + ddc);
> drm_connector_helper_add(&radeon_connector->base,
> &radeon_dp_connector_helper_funcs);
> drm_object_attach_property(&radeon_connector->base.base,
> @@ -2027,8 +2034,10 @@ radeon_add_atom_connector(struct drm_device *dev,
> break;
> case DRM_MODE_CONNECTOR_LVDS:
> case DRM_MODE_CONNECTOR_eDP:
> - drm_connector_init(dev, &radeon_connector->base,
> - &radeon_lvds_bridge_connector_funcs, connector_type);
> + drm_connector_init_with_ddc(dev, &radeon_connector->base,
> + &radeon_lvds_bridge_connector_funcs,
> + connector_type,
> + ddc);
> drm_connector_helper_add(&radeon_connector->base,
> &radeon_dp_connector_helper_funcs);
> drm_object_attach_property(&radeon_connector->base.base,
> @@ -2042,13 +2051,18 @@ 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
> + ddc = &radeon_connector->ddc_bus->adapter;
> }
> + drm_connector_init_with_ddc(dev, &radeon_connector->base,
> + &radeon_vga_connector_funcs,
> + connector_type,
> + ddc);
> + 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 +2081,18 @@ 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
> + ddc = &radeon_connector->ddc_bus->adapter;
> }
> + drm_connector_init_with_ddc(dev, &radeon_connector->base,
> + &radeon_vga_connector_funcs,
> + connector_type,
> + ddc);
> + 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 +2117,18 @@ 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
> + ddc = &radeon_connector->ddc_bus->adapter;
> }
> + drm_connector_init_with_ddc(dev, &radeon_connector->base,
> + &radeon_dvi_connector_funcs,
> + connector_type,
> + ddc);
> + 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 +2179,18 @@ 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
> + ddc = &radeon_connector->ddc_bus->adapter;
> }
> + drm_connector_init_with_ddc(dev, &radeon_connector->base,
> + &radeon_dvi_connector_funcs,
> + connector_type,
> + ddc);
> + 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 +2234,20 @@ 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
> + ddc = &radeon_connector->ddc_bus->adapter;
> + } else {
> DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
> + }
> }
> + drm_connector_init_with_ddc(dev, &radeon_connector->base,
> + &radeon_dp_connector_funcs,
> + connector_type,
> + ddc);
> + 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 +2289,20 @@ 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
> + ddc = &radeon_connector->ddc_bus->adapter;
> + } else {
> DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
> + }
> }
> + drm_connector_init_with_ddc(dev, &radeon_connector->base,
> + &radeon_edp_connector_funcs,
> + connector_type,
> + ddc);
> + 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);
> @@ -2274,7 +2313,10 @@ radeon_add_atom_connector(struct drm_device *dev,
> case DRM_MODE_CONNECTOR_SVIDEO:
> case DRM_MODE_CONNECTOR_Composite:
> case DRM_MODE_CONNECTOR_9PinDIN:
> - drm_connector_init(dev, &radeon_connector->base, &radeon_tv_connector_funcs, connector_type);
> + drm_connector_init_with_ddc(dev, &radeon_connector->base,
> + &radeon_tv_connector_funcs,
> + connector_type,
> + ddc);
> drm_connector_helper_add(&radeon_connector->base, &radeon_tv_connector_helper_funcs);
> radeon_connector->dac_load_detect = true;
> drm_object_attach_property(&radeon_connector->base.base,
> @@ -2294,13 +2336,18 @@ 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
> + ddc = &radeon_connector->ddc_bus->adapter;
> }
> + drm_connector_init_with_ddc(dev, &radeon_connector->base,
> + &radeon_lvds_connector_funcs,
> + connector_type,
> + ddc);
> + 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 +2425,18 @@ 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
> + ddc = &radeon_connector->ddc_bus->adapter;
> }
> + drm_connector_init_with_ddc(dev, &radeon_connector->base,
> + &radeon_vga_connector_funcs,
> + connector_type,
> + ddc);
> + 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 +2447,18 @@ 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
> + ddc = &radeon_connector->ddc_bus->adapter;
> }
> + drm_connector_init_with_ddc(dev, &radeon_connector->base,
> + &radeon_vga_connector_funcs,
> + connector_type,
> + ddc);
> + 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 +2470,18 @@ 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
> + ddc = &radeon_connector->ddc_bus->adapter;
> }
> + drm_connector_init_with_ddc(dev, &radeon_connector->base,
> + &radeon_dvi_connector_funcs,
> + connector_type,
> + ddc);
> + 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,
> @@ -2436,7 +2498,10 @@ radeon_add_legacy_connector(struct drm_device *dev,
> case DRM_MODE_CONNECTOR_SVIDEO:
> case DRM_MODE_CONNECTOR_Composite:
> case DRM_MODE_CONNECTOR_9PinDIN:
> - drm_connector_init(dev, &radeon_connector->base, &radeon_tv_connector_funcs, connector_type);
> + drm_connector_init_with_ddc(dev, &radeon_connector->base,
> + &radeon_tv_connector_funcs,
> + connector_type,
> + ddc);
> drm_connector_helper_add(&radeon_connector->base, &radeon_tv_connector_helper_funcs);
> radeon_connector->dac_load_detect = true;
> /* RS400,RC410,RS480 chipset seems to report a lot
> @@ -2458,13 +2523,18 @@ 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
> + ddc = &radeon_connector->ddc_bus->adapter;
> }
> + drm_connector_init_with_ddc(dev, &radeon_connector->base,
> + &radeon_lvds_connector_funcs,
> + connector_type,
> + ddc);
> + 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
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [PATCH v6 00/24] Associate ddc adapters with connectors
2019-07-26 17:22 [PATCH v6 00/24] Associate ddc adapters with connectors Andrzej Pietrasiewicz
` (15 preceding siblings ...)
2019-07-26 17:23 ` [PATCH v6 23/24] drm/radeon: " Andrzej Pietrasiewicz
@ 2019-07-26 18:35 ` Sam Ravnborg
2019-07-26 18:55 ` Review required [Was: Associate ddc adapters with connectors] Sam Ravnborg
2019-08-04 12:33 ` [PATCH v6 00/24] Associate ddc adapters with connectors Laurent Pinchart
17 siblings, 1 reply; 70+ messages in thread
From: Sam Ravnborg @ 2019-07-26 18:35 UTC (permalink / raw)
To: Andrzej Pietrasiewicz
Cc: Neil Armstrong, David Airlie, Liviu Dudau, dri-devel,
Douglas Anderson, Thierry Reding, Laurent Pinchart, kernel,
linux-samsung-soc, Jyri Sarha, Vincent Abriou,
Krzysztof Kozlowski, Jonathan Hunter, linux-rockchip,
Chen-Yu Tsai, Kukjin Kim, NXP Linux Team, Dave Airlie, intel-gfx,
freedreno, linux-tegra, Jonas Karlman, linux-arm-msm,
Maxime Ripard, Mamta Shukla
Hi Andezej.
On Fri, Jul 26, 2019 at 07:22:54PM +0200, Andrzej Pietrasiewicz wrote:
> 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.
>
> Patch 2 adds a new variant of drm_connector_init(), see the changelog
> below.
>
> Patches 3..24 are examples of how to convert a driver to this new scheme.
>
...
>
> v5..v6:
>
> - improved subject line of patch 1
> - added kernel-doc for drm_connector_init_with_ddc()
> - improved kernel-doc for the ddc field of struct drm_connector
> - added Reviewed-by in patches 17 and 18
> - added Acked-by in patch 2
> - made the ownership of ddc i2c_adapter explicit in all patches,
> this made the affected patches much simpler
Looks good now.
Patch 1 and 2 are:
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
The remaining patches are:
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Sam
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 70+ messages in thread
* Review required [Was: Associate ddc adapters with connectors]
2019-07-26 18:35 ` [PATCH v6 00/24] Associate ddc adapters with connectors Sam Ravnborg
@ 2019-07-26 18:55 ` Sam Ravnborg
[not found] ` <20190726185538.GD14981-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
0 siblings, 1 reply; 70+ messages in thread
From: Sam Ravnborg @ 2019-07-26 18:55 UTC (permalink / raw)
To: Andrzej Pietrasiewicz
Cc: Neil Armstrong, David Airlie, dri-devel, linux-kernel,
Matthias Brugger, Laurent Pinchart, Shawn Guo, kernel,
linux-samsung-soc, Krzysztof Kozlowski, Jonathan Hunter,
linux-rockchip, Chen-Yu Tsai, Kukjin Kim, NXP Linux Team,
Dave Airlie, Thomas Zimmermann, Jonas Karlman, linux-arm-msm,
intel-gfx, Jyri Sarha, Mamta Shukla, linux-mediatek,
Maxime Ripard, linux-tegra
Hi all.
Andrzej have done a good job following up on feedback and this series is
now ready.
We need ack on the patches touching the individual drivers before we can
proceed.
Please check your drivers and get back.
Sam
> Hi Andezej.
>
> On Fri, Jul 26, 2019 at 07:22:54PM +0200, Andrzej Pietrasiewicz wrote:
> > 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.
> >
> > Patch 2 adds a new variant of drm_connector_init(), see the changelog
> > below.
> >
> > Patches 3..24 are examples of how to convert a driver to this new scheme.
> >
> ...
> >
> > v5..v6:
> >
> > - improved subject line of patch 1
> > - added kernel-doc for drm_connector_init_with_ddc()
> > - improved kernel-doc for the ddc field of struct drm_connector
> > - added Reviewed-by in patches 17 and 18
> > - added Acked-by in patch 2
> > - made the ownership of ddc i2c_adapter explicit in all patches,
> > this made the affected patches much simpler
>
> Looks good now.
> Patch 1 and 2 are:
> Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
>
> The remaining patches are:
> Acked-by: Sam Ravnborg <sam@ravnborg.org>
>
> Sam
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [PATCH v6 00/24] Associate ddc adapters with connectors
2019-07-26 17:22 [PATCH v6 00/24] Associate ddc adapters with connectors Andrzej Pietrasiewicz
` (16 preceding siblings ...)
2019-07-26 18:35 ` [PATCH v6 00/24] Associate ddc adapters with connectors Sam Ravnborg
@ 2019-08-04 12:33 ` Laurent Pinchart
17 siblings, 0 replies; 70+ messages in thread
From: Laurent Pinchart @ 2019-08-04 12:33 UTC (permalink / raw)
To: Andrzej Pietrasiewicz
Cc: Y.C. Chen, Heiko Stübner, Sam Ravnborg, Neil Armstrong,
David Airlie, dri-devel, Douglas Anderson, Andrzej Hajda,
Gerd Hoffmann, Benjamin Gaignard, kernel, Fabio Estevam,
David (ChunMing) Zhou, linux-samsung-soc, Joonyoung Shim,
Jyri Sarha, Vincent Abriou, Krzysztof Kozlowski, Jonathan Hunter,
linux-rockchip, Chen-Yu Tsai, Kukjin Kim, NXP Linux Team, CK Hu
Hi Andrzej,
On Fri, Jul 26, 2019 at 07:22:54PM +0200, Andrzej Pietrasiewicz wrote:
> 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.
>
> Patch 2 adds a new variant of drm_connector_init(), see the changelog
> below.
>
> Patches 3..24 are examples 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
>
> v4..v5:
>
> - changed "include <linux/i2c.h>" to "struct i2c_adapter;"
> in drm_connector.h, consequently, added "include <linux/i2c.h>"
> in drm_sysfs.c.
> - added "drm_connector_init_with_ddc()" variant to ensure that the ddc
> field of drm_connector is preserved accross its invocation
> - accordingly changed invocations of drm_connector_init() in the
> touched drivers to use the new variant
>
> v5..v6:
>
> - improved subject line of patch 1
> - added kernel-doc for drm_connector_init_with_ddc()
> - improved kernel-doc for the ddc field of struct drm_connector
> - added Reviewed-by in patches 17 and 18
> - added Acked-by in patch 2
> - made the ownership of ddc i2c_adapter explicit in all patches,
> this made the affected patches much simpler
>
> @Benjamin
> @Shawn
>
> There were your Acked-by or Reviewed-by for some patches in v4, but now
> that the patches use the newly added function I'm not sure I can still
> include those tags without you actually confirming. Can I? Or can you
> please re-review?
>
> TODO: nouveau, gma500, omapdrm, panel-simple - if applicable.
omapdrm is moving to a new helper that creates connectors for a set of
bridges, so I'll handle it there. It may require adding a ddc field to
drm_bridge.
> Other drivers are either already converted or don't mention neither
> "ddc" nor "i2c_adapter".
>
> Andrzej Pietrasiewicz (24):
> drm: Add ddc link in sysfs created by drm_connector
> drm: Add drm_connector_init() variant with ddc
> 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 | 96 ++++++++----
> drivers/gpu/drm/ast/ast_mode.c | 13 +-
> drivers/gpu/drm/bridge/dumb-vga-dac.c | 6 +-
> drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 6 +-
> drivers/gpu/drm/bridge/ti-tfp410.c | 6 +-
> drivers/gpu/drm/drm_connector.c | 35 +++++
> drivers/gpu/drm/drm_sysfs.c | 8 +
> drivers/gpu/drm/exynos/exynos_hdmi.c | 6 +-
> drivers/gpu/drm/i915/display/intel_hdmi.c | 12 +-
> drivers/gpu/drm/imx/imx-ldb.c | 7 +-
> drivers/gpu/drm/imx/imx-tve.c | 6 +-
> drivers/gpu/drm/mediatek/mtk_hdmi.c | 7 +-
> drivers/gpu/drm/mgag200/mgag200_mode.c | 13 +-
> drivers/gpu/drm/msm/hdmi/hdmi_connector.c | 6 +-
> drivers/gpu/drm/radeon/radeon_connectors.c | 142 +++++++++++++-----
> drivers/gpu/drm/rockchip/inno_hdmi.c | 6 +-
> drivers/gpu/drm/rockchip/rk3066_hdmi.c | 7 +-
> drivers/gpu/drm/sti/sti_hdmi.c | 6 +-
> drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c | 7 +-
> drivers/gpu/drm/tegra/hdmi.c | 7 +-
> drivers/gpu/drm/tegra/sor.c | 7 +-
> drivers/gpu/drm/tilcdc/tilcdc_tfp410.c | 6 +-
> drivers/gpu/drm/vc4/vc4_hdmi.c | 12 +-
> drivers/gpu/drm/zte/zx_hdmi.c | 6 +-
> drivers/gpu/drm/zte/zx_vga.c | 6 +-
> include/drm/drm_connector.h | 18 +++
> 26 files changed, 336 insertions(+), 121 deletions(-)
--
Regards,
Laurent Pinchart
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 70+ messages in thread