dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] drm/exynos/dsi: register connector if it is created after drm bind
       [not found] <CGME20181026101338eucas1p25223f6f9db66982fae0f7adfd8a417fc@eucas1p2.samsung.com>
@ 2018-10-26 10:13 ` Andrzej Hajda
       [not found]   ` <CGME20181026101343eucas1p21bb8caff42737b8907527f5d1617e2b0@eucas1p2.samsung.com>
       [not found]   ` <CGME20181026104009eucas1p106dab69d3da0a9fc3381f45fb8c02989@eucas1p1.samsung.com>
  0 siblings, 2 replies; 5+ messages in thread
From: Andrzej Hajda @ 2018-10-26 10:13 UTC (permalink / raw)
  To: Inki Dae
  Cc: Marek Szyprowski, linux-samsung-soc, dri-devel,
	Bartlomiej Zolnierkiewicz

DSI device can be attached after DRM device is registered. In such
case newly created connector must be registered by exynos_dsi.
The patch fixes exynos_drm on rinato and trats boards.

Fixes: 6afb7721e2a0 ("drm/exynos: move connector creation to attach callback")
Reported-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
---
 drivers/gpu/drm/exynos/exynos_drm_dsi.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
index 07af7758066d..e7a4717d2cb6 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
@@ -14,6 +14,7 @@
 
 #include <drm/drmP.h>
 #include <drm/drm_crtc_helper.h>
+#include <drm/drm_fb_helper.h>
 #include <drm/drm_mipi_dsi.h>
 #include <drm/drm_panel.h>
 #include <drm/drm_atomic_helper.h>
@@ -1474,12 +1475,12 @@ static int exynos_dsi_create_connector(struct drm_encoder *encoder)
 {
 	struct exynos_dsi *dsi = encoder_to_dsi(encoder);
 	struct drm_connector *connector = &dsi->connector;
+	struct drm_device *drm = encoder->dev;
 	int ret;
 
 	connector->polled = DRM_CONNECTOR_POLL_HPD;
 
-	ret = drm_connector_init(encoder->dev, connector,
-				 &exynos_dsi_connector_funcs,
+	ret = drm_connector_init(drm, connector, &exynos_dsi_connector_funcs,
 				 DRM_MODE_CONNECTOR_DSI);
 	if (ret) {
 		DRM_ERROR("Failed to initialize connector with drm\n");
@@ -1489,7 +1490,12 @@ static int exynos_dsi_create_connector(struct drm_encoder *encoder)
 	connector->status = connector_status_disconnected;
 	drm_connector_helper_add(connector, &exynos_dsi_connector_helper_funcs);
 	drm_connector_attach_encoder(connector, encoder);
+	if (drm->registered)
+		return 0;
 
+	connector->funcs->reset(connector);
+	drm_fb_helper_add_one_connector(drm->fb_helper, connector);
+	drm_connector_register(connector);
 	return 0;
 }
 
-- 
2.18.0

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

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

* [PATCH 2/2] drm/exynos/fbdev: do not skip fbdev init if there are no connectors
       [not found]   ` <CGME20181026101343eucas1p21bb8caff42737b8907527f5d1617e2b0@eucas1p2.samsung.com>
@ 2018-10-26 10:13     ` Andrzej Hajda
  2018-10-31  7:33       ` Marek Szyprowski
  0 siblings, 1 reply; 5+ messages in thread
From: Andrzej Hajda @ 2018-10-26 10:13 UTC (permalink / raw)
  To: Inki Dae
  Cc: Marek Szyprowski, linux-samsung-soc, dri-devel,
	Bartlomiej Zolnierkiewicz

Since connectors can be created dynamically, fbdev should be initialized
even if there are no connectors at the moment. Otherwise fbdev will
not be created even after connector's appearance.
The patch fixes lack of fbdev on rinato and trats boards.

Fixes: 6afb7721e2a0 ("drm/exynos: move connector creation to attach callback")
Reported-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
---
 drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
index 918dd2c82209..01d182289efa 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
@@ -192,7 +192,7 @@ int exynos_drm_fbdev_init(struct drm_device *dev)
 	struct drm_fb_helper *helper;
 	int ret;
 
-	if (!dev->mode_config.num_crtc || !dev->mode_config.num_connector)
+	if (!dev->mode_config.num_crtc)
 		return 0;
 
 	fbdev = kzalloc(sizeof(*fbdev), GFP_KERNEL);
-- 
2.18.0

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

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

* [PATCH v2 1/2] drm/exynos/dsi: register connector if it is created after drm bind
       [not found]   ` <CGME20181026104009eucas1p106dab69d3da0a9fc3381f45fb8c02989@eucas1p1.samsung.com>
@ 2018-10-26 10:40     ` Andrzej Hajda
  2018-10-31  7:32       ` Marek Szyprowski
  0 siblings, 1 reply; 5+ messages in thread
From: Andrzej Hajda @ 2018-10-26 10:40 UTC (permalink / raw)
  To: Inki Dae
  Cc: Marek Szyprowski, dri-devel, linux-samsung-soc,
	Bartlomiej Zolnierkiewicz

DSI device can be attached after DRM device is registered. In such
case newly created connector must be registered by exynos_dsi.
The patch fixes exynos_drm on rinato and trats boards.

Fixes: 6afb7721e2a0 ("drm/exynos: move connector creation to attach callback")
Reported-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
---
Hi,

During just-before-send adjustements I have made horrible typo so there is v2.

v2:
 - fixed if condition
---
 drivers/gpu/drm/exynos/exynos_drm_dsi.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
index 07af7758066d..ef5f19b084a6 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
@@ -14,6 +14,7 @@
 
 #include <drm/drmP.h>
 #include <drm/drm_crtc_helper.h>
+#include <drm/drm_fb_helper.h>
 #include <drm/drm_mipi_dsi.h>
 #include <drm/drm_panel.h>
 #include <drm/drm_atomic_helper.h>
@@ -1474,12 +1475,12 @@ static int exynos_dsi_create_connector(struct drm_encoder *encoder)
 {
 	struct exynos_dsi *dsi = encoder_to_dsi(encoder);
 	struct drm_connector *connector = &dsi->connector;
+	struct drm_device *drm = encoder->dev;
 	int ret;
 
 	connector->polled = DRM_CONNECTOR_POLL_HPD;
 
-	ret = drm_connector_init(encoder->dev, connector,
-				 &exynos_dsi_connector_funcs,
+	ret = drm_connector_init(drm, connector, &exynos_dsi_connector_funcs,
 				 DRM_MODE_CONNECTOR_DSI);
 	if (ret) {
 		DRM_ERROR("Failed to initialize connector with drm\n");
@@ -1489,7 +1490,12 @@ static int exynos_dsi_create_connector(struct drm_encoder *encoder)
 	connector->status = connector_status_disconnected;
 	drm_connector_helper_add(connector, &exynos_dsi_connector_helper_funcs);
 	drm_connector_attach_encoder(connector, encoder);
+	if (!drm->registered)
+		return 0;
 
+	connector->funcs->reset(connector);
+	drm_fb_helper_add_one_connector(drm->fb_helper, connector);
+	drm_connector_register(connector);
 	return 0;
 }
 
-- 
2.18.0

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

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

* Re: [PATCH v2 1/2] drm/exynos/dsi: register connector if it is created after drm bind
  2018-10-26 10:40     ` [PATCH v2 1/2] drm/exynos/dsi: register connector if it is created after drm bind Andrzej Hajda
@ 2018-10-31  7:32       ` Marek Szyprowski
  0 siblings, 0 replies; 5+ messages in thread
From: Marek Szyprowski @ 2018-10-31  7:32 UTC (permalink / raw)
  To: Andrzej Hajda, Inki Dae
  Cc: linux-samsung-soc, dri-devel, Bartlomiej Zolnierkiewicz

Hi,

On 2018-10-26 12:40, Andrzej Hajda wrote:
> DSI device can be attached after DRM device is registered. In such
> case newly created connector must be registered by exynos_dsi.
> The patch fixes exynos_drm on rinato and trats boards.
>
> Fixes: 6afb7721e2a0 ("drm/exynos: move connector creation to attach callback")
> Reported-by: Marek Szyprowski <m.szyprowski@samsung.com>
> Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>

v2 fixes the connector registration problem on Rinato and Trats board.
Thanks!

Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>

> ---
> Hi,
>
> During just-before-send adjustements I have made horrible typo so there is v2.
>
> v2:
>  - fixed if condition
> ---
>  drivers/gpu/drm/exynos/exynos_drm_dsi.c | 10 ++++++++--
>  1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
> index 07af7758066d..ef5f19b084a6 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
> @@ -14,6 +14,7 @@
>  
>  #include <drm/drmP.h>
>  #include <drm/drm_crtc_helper.h>
> +#include <drm/drm_fb_helper.h>
>  #include <drm/drm_mipi_dsi.h>
>  #include <drm/drm_panel.h>
>  #include <drm/drm_atomic_helper.h>
> @@ -1474,12 +1475,12 @@ static int exynos_dsi_create_connector(struct drm_encoder *encoder)
>  {
>  	struct exynos_dsi *dsi = encoder_to_dsi(encoder);
>  	struct drm_connector *connector = &dsi->connector;
> +	struct drm_device *drm = encoder->dev;
>  	int ret;
>  
>  	connector->polled = DRM_CONNECTOR_POLL_HPD;
>  
> -	ret = drm_connector_init(encoder->dev, connector,
> -				 &exynos_dsi_connector_funcs,
> +	ret = drm_connector_init(drm, connector, &exynos_dsi_connector_funcs,
>  				 DRM_MODE_CONNECTOR_DSI);
>  	if (ret) {
>  		DRM_ERROR("Failed to initialize connector with drm\n");
> @@ -1489,7 +1490,12 @@ static int exynos_dsi_create_connector(struct drm_encoder *encoder)
>  	connector->status = connector_status_disconnected;
>  	drm_connector_helper_add(connector, &exynos_dsi_connector_helper_funcs);
>  	drm_connector_attach_encoder(connector, encoder);
> +	if (!drm->registered)
> +		return 0;
>  
> +	connector->funcs->reset(connector);
> +	drm_fb_helper_add_one_connector(drm->fb_helper, connector);
> +	drm_connector_register(connector);
>  	return 0;
>  }
>  

Best regards
-- 
Marek Szyprowski, PhD
Samsung R&D Institute Poland

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

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

* Re: [PATCH 2/2] drm/exynos/fbdev: do not skip fbdev init if there are no connectors
  2018-10-26 10:13     ` [PATCH 2/2] drm/exynos/fbdev: do not skip fbdev init if there are no connectors Andrzej Hajda
@ 2018-10-31  7:33       ` Marek Szyprowski
  0 siblings, 0 replies; 5+ messages in thread
From: Marek Szyprowski @ 2018-10-31  7:33 UTC (permalink / raw)
  To: Andrzej Hajda, Inki Dae
  Cc: linux-samsung-soc, dri-devel, Bartlomiej Zolnierkiewicz

Hi,


On 2018-10-26 12:13, Andrzej Hajda wrote:
> Since connectors can be created dynamically, fbdev should be initialized
> even if there are no connectors at the moment. Otherwise fbdev will
> not be created even after connector's appearance.
> The patch fixes lack of fbdev on rinato and trats boards.
>
> Fixes: 6afb7721e2a0 ("drm/exynos: move connector creation to attach callback")
> Reported-by: Marek Szyprowski <m.szyprowski@samsung.com>
> Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>

Together with v2 of "drm/exynos/dsi: register connector if it is created
after
drm bind" patch this finally restores /dev/fb0 emulation on Rinato and Trats
boards.

Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>

> ---
>  drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
> index 918dd2c82209..01d182289efa 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
> @@ -192,7 +192,7 @@ int exynos_drm_fbdev_init(struct drm_device *dev)
>  	struct drm_fb_helper *helper;
>  	int ret;
>  
> -	if (!dev->mode_config.num_crtc || !dev->mode_config.num_connector)
> +	if (!dev->mode_config.num_crtc)
>  		return 0;
>  
>  	fbdev = kzalloc(sizeof(*fbdev), GFP_KERNEL);

Best regards
-- 
Marek Szyprowski, PhD
Samsung R&D Institute Poland

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

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

end of thread, other threads:[~2018-10-31  7:33 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <CGME20181026101338eucas1p25223f6f9db66982fae0f7adfd8a417fc@eucas1p2.samsung.com>
2018-10-26 10:13 ` [PATCH 1/2] drm/exynos/dsi: register connector if it is created after drm bind Andrzej Hajda
     [not found]   ` <CGME20181026101343eucas1p21bb8caff42737b8907527f5d1617e2b0@eucas1p2.samsung.com>
2018-10-26 10:13     ` [PATCH 2/2] drm/exynos/fbdev: do not skip fbdev init if there are no connectors Andrzej Hajda
2018-10-31  7:33       ` Marek Szyprowski
     [not found]   ` <CGME20181026104009eucas1p106dab69d3da0a9fc3381f45fb8c02989@eucas1p1.samsung.com>
2018-10-26 10:40     ` [PATCH v2 1/2] drm/exynos/dsi: register connector if it is created after drm bind Andrzej Hajda
2018-10-31  7:32       ` Marek Szyprowski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).