linux/drivers/gpu/drm/exynos
Inki Dae 1d50aa9c6f drm/exynos: vidi: add component support
This patch adds component support for vidi driver.

vidi driver is a kms driver so it doesn't need to be registered
to exynos_drm_subdrv_list. For this, it changes for the component
framework to be used for vidi driver.

This patch fixes below error also,

# echo 1 > /sys/devices/platform/exynos-drm-vidi/connection
[   55.618529] ------------[ cut here ]------------
[   55.621960] WARNING: CPU: 0 PID: 1397 at drivers/gpu/drm/drm_irq.c:1203 exynos_drm_crtc_dpms+0x88/0x17c()
[   55.631268] Modules linked in:
[   55.634278] CPU: 0 PID: 1397 Comm: sh Not tainted 3.18.0-rc2-146253-g31449d7 #1154
[   55.641885] [<c0014400>] (unwind_backtrace) from [<c0011570>] (show_stack+0x10/0x14)
[   55.649597] [<c0011570>] (show_stack) from [<c04764f4>] (dump_stack+0x84/0xc4)
[   55.656802] [<c04764f4>] (dump_stack) from [<c00218b8>] (warn_slowpath_common+0x6c/0x88)
[   55.664866] [<c00218b8>] (warn_slowpath_common) from [<c0021970>] (warn_slowpath_null+0x1c/0x24)
[   55.673632] [<c0021970>] (warn_slowpath_null) from [<c027a780>] (exynos_drm_crtc_dpms+0x88/0x17c)
[   55.682482] [<c027a780>] (exynos_drm_crtc_dpms) from [<c027a910>] (exynos_drm_crtc_commit+0x14/0x44)
[   55.691622] [<c027a910>] (exynos_drm_crtc_commit) from [<c025521c>] (drm_crtc_helper_set_mode+0x3d0/0x51c)
[   55.701233] [<c025521c>] (drm_crtc_helper_set_mode) from [<c0255d68>] (drm_crtc_helper_set_config+0x87c/0x9dc)
[   55.711230] [<c0255d68>] (drm_crtc_helper_set_config) from [<c026afa8>] (drm_mode_set_config_internal+0x58/0xd4)
[   55.721380] [<c026afa8>] (drm_mode_set_config_internal) from [<c025c208>] (restore_fbdev_mode+0xcc/0xec)
[   55.730834] [<c025c208>] (restore_fbdev_mode) from [<c025c244>] (drm_fb_helper_restore_fbdev_mode_unlocked+0x1c/0x30)
[   55.741424] [<c025c244>] (drm_fb_helper_restore_fbdev_mode_unlocked) from [<c025e0a8>] (drm_fb_helper_set_par+0x1c/0x60)
[   55.752271] [<c025e0a8>] (drm_fb_helper_set_par) from [<c025e174>] (drm_fb_helper_hotplug_event+0x88/0xc4)
[   55.761906] [<c025e174>] (drm_fb_helper_hotplug_event) from [<c02571c4>] (drm_helper_hpd_irq_event+0xc8/0x134)
[   55.771898] [<c02571c4>] (drm_helper_hpd_irq_event) from [<c028e27c>] (vidi_store_connection+0x90/0xc8)
[   55.781268] [<c028e27c>] (vidi_store_connection) from [<c0125f80>] (kernfs_fop_write+0xc0/0x180)
[   55.790045] [<c0125f80>] (kernfs_fop_write) from [<c00cdf60>] (vfs_write+0xa0/0x1ac)
[   55.797757] [<c00cdf60>] (vfs_write) from [<c00ce468>] (SyS_write+0x44/0x9c)
[   55.804790] [<c00ce468>] (SyS_write) from [<c000e6a0>] (ret_fast_syscall+0x0/0x30)
[   55.812328] ---[ end trace 3c0fe4386702d4dd ]---

This issue occurs when modeset to vidi is tried in case that drm_vblank_init
is called prior to crtc creation of vidi driver. In this case, crtc number
of vidi is invalid so any requests with the crtc number will fail.
This patch guarantees drm_vblank_init to be called after all kms drivers
are ready by using component framework.

Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-11-25 11:58:37 +09:00
..
exynos_dp_core.c drm/exynos/dp: stop using display->ctx pointer 2014-11-24 18:02:56 +09:00
exynos_dp_core.h drm/exynos/dp: embed display into private context 2014-11-24 18:02:56 +09:00
exynos_dp_reg.c drm/exynos: Fix checkpatch warning in exynos_dp_reg.c 2014-06-02 02:07:12 +09:00
exynos_dp_reg.h drm/exynos: Move dp driver from video/ to drm/ 2014-03-24 00:36:34 +09:00
exynos_drm_buf.c drm/exynos: fix return value check in lowlevel_buffer_allocate() 2013-09-16 21:57:08 +09:00
exynos_drm_buf.h drm/exynos: change file license to GPL 2013-01-04 15:54:32 +09:00
exynos_drm_connector.c drm/exynos: use helpers 2014-07-18 14:24:34 +10:00
exynos_drm_connector.h drm/exynos: Remove dpms link between encoder/connector 2014-03-24 00:36:30 +09:00
exynos_drm_core.c drm/exynos: add component framework support 2014-06-02 02:07:04 +09:00
exynos_drm_crtc.c drm/exynos: enable vblank after DPMS on 2014-11-03 01:51:28 +09:00
exynos_drm_crtc.h drm/exynos: Replace repeated declarations by #include "exynos_drm_drv.h" 2014-11-24 18:02:51 +09:00
exynos_drm_dmabuf.c dma-buf: use reservation objects 2014-07-08 13:03:20 -07:00
exynos_drm_dmabuf.h drm/exynos: change file license to GPL 2013-01-04 15:54:32 +09:00
exynos_drm_dpi.c drm/exynos/dpi: stop using display->ctx pointer 2014-11-24 18:02:56 +09:00
exynos_drm_drv.c drm/exynos: fix exynos_drm_component_del 2014-11-25 11:58:27 +09:00
exynos_drm_drv.h drm/exynos/dpi: stop using display->ctx pointer 2014-11-24 18:02:56 +09:00
exynos_drm_dsi.c drm/exynos: dsi: set TE GPIO IRQ status as IRQ_NOAUTOEN 2014-11-24 18:02:54 +09:00
exynos_drm_encoder.c drm/exynos: Restrict plane loops to only operate on overlay planes (v2) 2014-04-01 20:11:18 -04:00
exynos_drm_encoder.h drm/exynos: remove extra declaration of struct exynos_drm_manager 2014-11-24 18:02:50 +09:00
exynos_drm_fb.c drm/exynos/fb: free exynos framebuffer on error 2014-09-20 00:56:14 +09:00
exynos_drm_fb.h drm/exynos: change file license to GPL 2013-01-04 15:54:32 +09:00
exynos_drm_fbdev.c drm/exynos/fbdev: fix fbdev gem object cleanup 2014-09-20 00:56:14 +09:00
exynos_drm_fbdev.h drm/exynos: change file license to GPL 2013-01-04 15:54:32 +09:00
exynos_drm_fimc.c drm/exynos/fimc: fix source buffer registers 2014-09-20 00:56:13 +09:00
exynos_drm_fimc.h drm/exynos: change file license to GPL 2013-01-04 15:54:32 +09:00
exynos_drm_fimd.c drm/exynos/dpi: embed display into private context 2014-11-24 18:02:56 +09:00
exynos_drm_g2d.c drm/exynos: g2d: fix null pointer dereference 2014-11-24 18:02:48 +09:00
exynos_drm_g2d.h drm/exynos: add G2D driver 2012-05-17 20:14:48 +09:00
exynos_drm_gem.c drm/exynos: use drm generic mmap interface 2014-09-20 01:00:13 +09:00
exynos_drm_gem.h drm: Extract <drm/drm_gem.h> 2014-09-24 11:43:41 +10:00
exynos_drm_gsc.c drm/exynos/ipp: replace work_struct casting with better constructs 2014-09-20 00:56:12 +09:00
exynos_drm_gsc.h drm/exynos: change file license to GPL 2013-01-04 15:54:32 +09:00
exynos_drm_iommu.c arm: dma-mapping: remove order parameter from arm_iommu_create_mapping() 2014-02-28 11:55:18 +01:00
exynos_drm_iommu.h drm/exynos: remove uneeded declaration of struct dma_iommu_mapping 2014-11-24 18:02:50 +09:00
exynos_drm_ipp.c drm/exynos/ipp: fix error return code 2014-11-24 23:52:04 +09:00
exynos_drm_ipp.h drm/exynos/ipp: remove unused field in command node 2014-09-20 00:56:10 +09:00
exynos_drm_plane.c drm/exynos: switch to universal plane API 2014-09-20 01:17:53 +09:00
exynos_drm_plane.h drm/exynos: switch to universal plane API 2014-09-20 01:17:53 +09:00
exynos_drm_rotator.c drm/exynos/ipp: replace work_struct casting with better constructs 2014-09-20 00:56:12 +09:00
exynos_drm_rotator.h drm/exynos: change file license to GPL 2013-01-04 15:54:32 +09:00
exynos_drm_vidi.c drm/exynos: vidi: add component support 2014-11-25 11:58:37 +09:00
exynos_drm_vidi.h drm/exynos: change file license to GPL 2013-01-04 15:54:32 +09:00
exynos_hdmi.c drm/exynos/hdmi: stop using display->ctx pointer 2014-11-24 18:02:55 +09:00
exynos_mixer.c drm/exynos/mixer: stop using manager->ctx pointer 2014-11-24 18:02:54 +09:00
exynos_mixer.h drm/exynos: Remove exynos_drm_hdmi shim 2014-03-24 00:36:32 +09:00
Kconfig drm/panel: Changes for v3.17-rc1 2014-08-07 19:51:52 +10:00
Makefile drm/exynos: add DSIM driver 2014-04-04 21:24:48 +09:00
regs-fimc.h drm/exynos: add device tree support for fimc ipp driver 2013-04-29 14:35:32 +09:00
regs-gsc.h drm/exynos: add gsc ipp driver 2012-12-15 02:40:00 +09:00
regs-hdmi.h drm/exynos: add hdmiphy power on/off sequence 2014-06-02 02:07:15 +09:00
regs-mixer.h drm/exynos: stop mixer before gating clocks during poweroff 2014-06-24 11:27:29 +09:00
regs-rotator.h drm/exynos: add rotator ipp driver 2012-12-15 02:39:41 +09:00
regs-vp.h drm/exynos: added hdmi display support 2011-12-29 11:21:42 +09:00