Thread (4 messages) 4 messages, 3 authors, 2015-09-07

[PATCH v4 03/16] drm: bridge: analogix/dp: split exynos dp driver to bridge dir

From: heiko@sntech.de (Heiko Stuebner)
Date: 2015-09-04 21:38:50
Also in: dri-devel, linux-devicetree, linux-rockchip, linux-samsung-soc, lkml

Possibly related (same subject, not in this thread)

Am Freitag, 4. September 2015, 16:06:02 schrieb Rob Herring:
On Tue, Sep 1, 2015 at 3:46 PM, Heiko Stuebner [off-list ref] wrote:
quoted
Am Dienstag, 1. September 2015, 13:49:58 schrieb Yakir Yang:
quoted
Split the dp core driver from exynos directory to bridge
directory, and rename the core driver to analogix_dp_*,
leave the platform code to analogix_dp-exynos.

Signed-off-by: Yakir Yang <redacted>
[...]
quoted
diff --git a/drivers/gpu/drm/exynos/exynos_dp_core.c
b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c similarity index 50%
rename from drivers/gpu/drm/exynos/exynos_dp_core.c
rename to drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
index bed0252..7d62f22 100644
--- a/drivers/gpu/drm/exynos/exynos_dp_core.c
+++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
[...]
quoted
      connector->polled = DRM_CONNECTOR_POLL_HPD;
      
      ret = drm_connector_init(dp->drm_dev, connector,

-                              &exynos_dp_connector_funcs,
+                              &analogix_dp_connector_funcs,

                               DRM_MODE_CONNECTOR_eDP);
      
      if (ret) {
      
              DRM_ERROR("Failed to initialize connector with drm\n");
              return ret;
      
      }

-     drm_connector_helper_add(connector,
&exynos_dp_connector_helper_funcs); +    
drm_connector_helper_add(connector,
+                              &analogix_dp_connector_helper_funcs);

      drm_connector_register(connector);
this should only run on exynos, as we're doing all our connector
registration in the core driver after all components are bound, so I
guess something like> 
the following is needed:
       if (dp->plat_data && dp->plat_data->dev_type == EXYNOS_DP)
       
               drm_connector_register(connector);
Yuck!

Surely there is a better way. From what I've seen of DRM, I have no
doubt this is needed, but really a better solution is needed. Surely
there can be a more generic way for the driver to determine if it
should handle the connector or not. This seems like a common problem
including one I have seen. What I'm working on has onchip DSI encoder
-> ADV7533 -> HDMI. The DSI encoder can also have a direct attached
panel. So I have to check for a bridge in the encoder driver and only
register the connector for the panel if a bridge is not attached.
I'm also only a part-time drm meddler, so things may be inaccurate.

This conditional is not meant to prevent the registration of the dp connector, 
only delay it for non-exynos drms. The connector registration does publish it 
to userspace, so like i.MX we're doing that for all connectors at the same 
time after all components are bound - to also make x11 happy. Exynos on the 
other hand seems to register its connectors individually and I'm not sure if 
they would be willing to change that.

see d3007dabeff4 ("drm/rockchip: register all connectors after bind") or 
simply rockchip_drm_drv.c line 178.

and e355e7dd607b ("imx-drm: delay publishing sysfs connector entries")


Heiko
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help