Hi Inki,
On 04/01/2014 02:37 PM, Inki Dae wrote:
This patch series cleans up exynos drm framework and kms sub drivers using the component framework[1].
I have tested it on trats platform (fimd + dsi), it works. However it seems to be suboptimal. In case of deferred probing of any of components (due to lack of some resources, ex. clock, regulator, phy), all components which were already bound are unbound and re-bound later when another driver is added, this causes multiple unnecessary free/re-allocate cycles. Maybe I miss something, but I guess registration list(s) + DT super-node should perform better.
Here is sample log from trats with mipi-phy driver delayed probe:
binding 11c00000.fimd (ops fimd_component_ops) bound 11c00000.fimd (ops fimd_component_ops) binding 11c80000.dsi (ops exynos_dsi_component_ops) failed to bind 11c80000.dsi (ops exynos_dsi_component_ops): -517 unbinding 11c00000.fimd (ops fimd_component_ops) master bind failed: -517 binding 11c00000.fimd (ops fimd_component_ops) bound 11c00000.fimd (ops fimd_component_ops) binding 11c80000.dsi (ops exynos_dsi_component_ops) failed to bind 11c80000.dsi (ops exynos_dsi_component_ops): -517 unbinding 11c00000.fimd (ops fimd_component_ops) master bind failed: -517 binding 11c00000.fimd (ops fimd_component_ops) bound 11c00000.fimd (ops fimd_component_ops) binding 11c80000.dsi (ops exynos_dsi_component_ops) failed to bind 11c80000.dsi (ops exynos_dsi_component_ops): -517 unbinding 11c00000.fimd (ops fimd_component_ops) master bind failed: -517 binding 11c00000.fimd (ops fimd_component_ops) bound 11c00000.fimd (ops fimd_component_ops) binding 11c80000.dsi (ops exynos_dsi_component_ops) failed to bind 11c80000.dsi (ops exynos_dsi_component_ops): -517 unbinding 11c00000.fimd (ops fimd_component_ops) master bind failed: -517 binding 11c00000.fimd (ops fimd_component_ops) bound 11c00000.fimd (ops fimd_component_ops) binding 11c80000.dsi (ops exynos_dsi_component_ops) bound 11c80000.dsi (ops exynos_dsi_component_ops)
This log will grow with number of devices probed in-between.
Regards Andrzej
And this patch series had been posted for RFC[2].
Thanks, Inki Dae
[1] http://lists.freedesktop.org/archives/dri-devel/2014-January/051249.html [2] http://comments.gmane.org/gmane.comp.video.dri.devel/101200
Inki Dae (7): drm/exynos: add super device support drm/exynos: dpi: fix hotplug fail issue drm/exynos: register platform driver at each kms sub drivers ARM: dts: exynos4210-universal: add super device node for exynos drm ARM: dts: exynos4210-trats: add super device node for exynos drm ARM: dts: exynos4412-trats2: add super device node for exynos drm exynos/drm: add DT bindings
.../bindings/drm/exynos/samsung-exynos-drm.txt | 32 +++ arch/arm/boot/dts/exynos4210-trats.dts | 5 + arch/arm/boot/dts/exynos4210-universal_c210.dts | 5 + arch/arm/boot/dts/exynos4412-trats2.dts | 5 + drivers/gpu/drm/exynos/exynos_dp_core.c | 46 ++-- drivers/gpu/drm/exynos/exynos_drm_core.c | 216 +++-------------- drivers/gpu/drm/exynos/exynos_drm_crtc.c | 17 ++ drivers/gpu/drm/exynos/exynos_drm_crtc.h | 4 + drivers/gpu/drm/exynos/exynos_drm_dpi.c | 21 +- drivers/gpu/drm/exynos/exynos_drm_drv.c | 256 ++++++++------------ drivers/gpu/drm/exynos/exynos_drm_drv.h | 79 +++--- drivers/gpu/drm/exynos/exynos_drm_dsi.c | 39 ++- drivers/gpu/drm/exynos/exynos_drm_fimd.c | 77 ++++-- drivers/gpu/drm/exynos/exynos_drm_vidi.c | 61 +++-- drivers/gpu/drm/exynos/exynos_hdmi.c | 46 ++-- drivers/gpu/drm/exynos/exynos_mixer.c | 55 ++++- 16 files changed, 490 insertions(+), 474 deletions(-) create mode 100644 Documentation/devicetree/bindings/drm/exynos/samsung-exynos-drm.txt