summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2014-06-01drm/exynos: add fimd dependency to fimd related encodersAndrzej Hajda1-3/+3
DPI, DSI and DP drivers will not work without FIMD. The patch adds appropriate dependencies in Kconfig. Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: remove redundant mutex_unlockAndrzej Hajda1-1/+0
The patch fixes unlocking in exynos_drm_component_del. Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos/fimc: simplify and rename fimc_dst_get_buf_seqAndrzej Hajda1-9/+5
fimc_dst_get_buf_seq returns number of buffers so the name should be fimc_dst_get_buf_count. Function body has been simplified. Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos/fimc: replace mutex by spinlockAndrzej Hajda1-5/+6
Function fimc_dst_set_buf_seq is called by irq handler so it should not use mutexes. This patch fixes it. Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos/fimc: replace hw access macros with functionsAndrzej Hajda1-161/+150
HW access macros implicitly depended on presence of ctx local variable. This patch replaces them with C functions. Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos/fimc: simplify irq masking functionAndrzej Hajda1-16/+9
The name fimc_handle_irq suggests it is irq handler, but the function is for irq mask configuration. The patch renames the function to fimc_mask_irq and removes unused arguments. Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos/fimc: simplify pre-scaler ratio calculationAndrzej Hajda1-43/+13
The patch replaces dedicated function for scaling ratio calculation by fls calls. Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos/ipp: simplify property list allocationAndrzej Hajda5-26/+8
prop_list is always allocated, so instead of allocating it dynamically the pointer can be replaced by the structure itself. Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos/ipp: correct ipp_id field initializationAndrzej Hajda2-9/+6
prop_list.ipp_id field is not initialized properly. The patch fixes it, additionally it removes redundant field from ippdrv. Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos/ipp: fix get_property IOCTLAndrzej Hajda1-1/+1
Due to incorrect assignment in EXYNOS_IPP_GET_PROPERTY IOCTL handler this IOCTL did not work at all. The patch fixes it. Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: Staticize local symbols in exynos_hdmi.cSachin Kamat1-3/+3
These symbols are local to this file. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: Remove duplicate inclusion of i2c.hSachin Kamat1-1/+0
i2c.h was included twice. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: Staticize exynos_dpi_of_find_panel_nodeSachin Kamat1-1/+1
exynos_dpi_of_find_panel_node is local to this file. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Inki Dae <inki.dae>
2014-06-01drm/exynos: Fix PTN3460 dependencyJean Delvare2-3/+3
The following configuration options combination: CONFIG_DRM_EXYNOS_DP=y CONFIG_DRM_PTN3460=m currently leads to the following linker failure: drivers/built-in.o: In function `exynos_drm_attach_lcd_bridge': .../drivers/gpu/drm/exynos/exynos_dp_core.c:1004: undefined reference to `ptn3460_init' This is because ptn3460_init can't be implemented in a module while its caller is built into the kernel. So add the proper dependency in Kconfig so that the above can't happen. I moved DRM_PTN3460 earlier in Kconfig, next to the I2C helper module section, so that the user has a chance to select it before moving to the Exynos-specific section. IMHO the proper way to solve the problem would be to turn ptn3460 into a clean I2C driver, similar to the other I2C helper chip drivers. It's the only way to not sink into impossible-to-guess dependencies. Then ptn3460 could even be moved together with the other I2C helper chip drivers. Signed-off-by: Jean Delvare <jdelvare@suse.de> Reviewed-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: use 4WORD dma burst length for small fbsRahul Sharma1-0/+14
In case of exynos, setting dma-burst to 16Word causes permanent tearing for very small buffers, e.g. cursor buffer. Burst Mode switching, which is based on overlay size is not recommended as overlay size varies a lot towards the end of the screen. This causes unstable DMA which results into tearing again. Rendering small buffers with lower burst size doesn't cause any noticable performance overhead. 128 pixel width is selected based on mulitple experiments with exynos5 SoCs. Signed-off-by: Rahul Sharma <Rahul.Sharma@samsung.com> Signed-off-by: Prathyush K <prathyush.k@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: use regmap interface to set hdmiphy control bit in pmuRahul Sharma3-8/+25
Exynos drm hdmi driver used to get dummy hdmiphy clock to control the PMU bit for hdmiphy. This bit needs to be set before setting any resolution to hdmi hardware. This was handled using dummy hdmiphy clock which is removed here. PMU is already defined as system controller for exynos SoCs. Hdmi driver is modified to control the phy enable bit inside PMU using regmap interfaces. Devicetree binding document for hdmi is also updated. Signed-off-by: Rahul Sharma <rahul.sharma@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: allocate non-contigous buffers when iommu is enabledRahul Sharma1-12/+10
Allow to allocate non-contigous buffers when iommu is enabled. Currently, it tries to allocates contigous buffer which consistently fail for large buffers and then fall back to non contigous. Apart from being slow, this implementation is also very noisy and fills the screen with alloc fail logs. Signed-off-by: Rahul Sharma <Rahul.Sharma@samsung.com> Reviewed-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: hdmi: consider legacy dt bindingInki Dae1-0/+30
This patch considers legacy dt binding, and resolves the issue that the use of existing dtb is broken. To resove the dt broken issue, this path tries to get legacy dt nodes from existing dtb directly prior to getting new dt nodes. Signed-off-by: Inki Dae <inki.dae@samsung.com> Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
2014-06-01drm/exynos: restore core HDMI settingsShirish S1-0/+2
In DVI mode the video preamble and Guard band should be disabled whereas it should be applied in HDMI mode, the re-applying of preamble and guard band was missing, which resulted in display failures when switched to HDMI mode from DVI mode. This patch ensures the setting is applied in HDMI mode. Signed-off-by: Shirish S <s.shirish@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: hdmi: remove unnecessary dedicated i2c driversSeung-Woo Kim2-128/+0
The i2c drivers for ddc and hdmiphy are already removed from build and instead, i2c clients registered via devicetree are used. So this patch removes the unnecessary i2c drivers. Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: enable support for exynos5420 hdmi deviceRahul Sharma2-0/+166
Enable support for hdmi for exynos5420 hdmiphy. Add compatible string in the of_match table. Also added hdmiphy configuration values for exynos5420. Signed-off-by: Rahul Sharma <Rahul.Sharma@samsung.com> Signed-off-by: Shirish S <s.shirish@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: add support for apb mapped phys in hdmi driverRahul Sharma2-53/+96
Previous SoCs have hdmi phys which are accessible through dedicated i2c lines. Newer SoCs have Apb mapped hdmi phys. Hdmi driver is modified to support apb mapped phys. Signed-off-by: Rahul Sharma <Rahul.Sharma@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: remove unnecessary read for phy configuration valuesRahul Sharma1-10/+0
Cleaning up unnecessary i2c read call after hdmiphy configuration. This check is redundant since check for hdmiphy pll lock status confirms the correct settings for phy. Signed-off-by: Rahul Sharma <Rahul.Sharma@samsung.com> Signed-off-by: Daniel Kurtz <djkurtz@chromium.org> Reviewed-by: Tomasz Figa <t.figa@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: replace hdmi reset with hdmi disableRahul Sharma1-24/+16
Before setting the core and timing generation registers, hdmi driver resets the whole hdmi hardware, which also resets the audio related registers. Hdmi reset is replaced by hdmi disable which is called just before setting the core and timing registers. It also ensure that audio settings are not changed. Signed-off-by: Rahul Sharma <rahul.sharma@samsung.com> Signed-off-by: Shirish S <s.shirish@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: Read hpd gpio in is_connected callbackSean Paul1-0/+2
This patch adds a gpio read of hpd during the is_connected callback. This fixes the case where hdmi is off going into suspend and the cable is plugged in while suspended. In this case, the hpd interrupt does not fire and is_connected will return false. Signed-off-by: Sean Paul <seanpaul@chromium.org> Signed-off-by: Rahul Sharma <Rahul.Sharma@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: hdmi: remove unnecessary memsetDaniel Kurtz1-2/+0
Our resources were just zalloc'ed as part of hdata. They are already 0. Signed-off-by: Daniel Kurtz <djkurtz@chromium.org> Signed-off-by: Rahul Sharma <Rahul.Sharma@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: check for null pointers in error handlingPaul Taysom1-1/+2
Smatch error from arm build: drivers/gpu/drm/exynos/ exynos_hdmi.c:2374 hdmi_probe() error: potential NULL dereference 'hdata->hdmiphy_port'. Added check for hdata->hdmiphy_port that it is not NULL. Signed-off-by: Paul Taysom <taysom@chromium.org> Signed-off-by: Rahul Sharma <Rahul.Sharma@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: Debounce HDMI hotplug interruptsSean Paul1-2/+21
This patch debounces hotplug interrupts generated by the HDMI hotplug gpio. The reason this is needed is that we get multiple (5) interrupts every time a monitor is inserted which causes us to needlessly enable and disable the IP block. Signed-off-by: Sean Paul <seanpaul@chromium.org> Signed-off-by: Rahul Sharma <Rahul.Sharma@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: Don't reset hdmiphy on hdmi offSean Paul1-5/+0
This patch removes the hdmiphy reset in hdmi_poweroff. The hdmiphy reset was added to take advantage of exynos clockgating, doing it would gate the entire TV domain. Unfortunately, mixer is included in the TV domain and its vsync interrupts are stopped when TV is gated. Signed-off-by: Sean Paul <seanpaul@chromium.org> Signed-off-by: Rahul Sharma <Rahul.Sharma@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: Fix double locks at PM resumeTakashi Iwai1-1/+1
The recent commit [3ea87855: drm/helper: lock all around force mode restore] introduced drm_modeset_lock_all() in drm_helper_resume_force_mode() itself, while exynos driver takes this lock before calling it. Move the function call outside the lock for avoiding a deadlock. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: dp: Use DPCD defines of drm_dp_helper.hJingoo Han3-104/+55
Use DPCD defines of drm_dp_helper.h; thus, duplicated DPCD defines of exynos_dp_core.h can be removed. Also, DP_TEST_EDID_CHECKSUM define is added to drm_dp_helper.h. There is no functional change. Signed-off-by: Jingoo Han <jg1.han@samsung.com> Reviewed-by: Sean Paul <seanpaul@chromium.org> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: update phy settings for RB resolutionsShirish S1-21/+12
This patch updates phy settings of the below mentioned pixel clocks in Exynos5250 and removes support for 88.75MHz, for it is not supported. 71 MHz - 1280x800@60Hz RB 73.25 MHz - 800x600@120Hz RB 115.5 MHz - 1024x768@120Hz RB 119 MHz - 1680x1050@60Hz RB Signed-off-by: Shirish S <s.shirish@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: dp: support hotplug detection via GPIOAndrew Bresticker4-15/+66
Certain bridge chips use a GPIO to indicate the cable status instead of the I_DP_HPD pin. This adds an optional device-tree property, "samsung,hpd-gpio", to the exynos-dp controller which indicates that the specified GPIO should be used for hotplug detection. The GPIO is then set up as an edge-triggered interrupt where the rising edge indicates hotplug-in and the falling edge indicates hotplug-out. Signed-off-by: Andrew Bresticker <abrestic@chromium.org> Signed-off-by: Rahul Sharma <rahul.sharma@samsung.com> Signed-off-by: Ajay Kumar <ajaykumar.rs@samsung.com> Acked-by: Jingoo Han <jg1.han@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: dsi: remove unnecessary pm interfacesInki Dae1-31/+0
Exynos drm driver is a single driver so pm operation for kms drivers should be done by connector->dpms at top level driver. If kms driver has its own pm interfaces, single driver model would be broken so this patch removes unnecessary pm interfaces from dsi driver. Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
2014-06-01drm/exynos: remove unnecessary runtime pm interfacesInki Dae1-29/+0
Exyno drm driver has no real hardware device, and runtime pm operation should be done by sub drivers. Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
2014-06-01drm/exynos: separate dpi from fimdAndrzej Hajda3-95/+69
The patch separates dpi related routines from fimd. Changelog v2: - Rename ctx->dpi to ctx->display Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: fix comment to exynos_drm_device_subdrv_prove callInki Dae1-1/+1
subdrv_probe callback of virtual display driver will be called by exynos_drm_device_subdrv_probe() to create crtc and encoder/connector for virtual display driver. So it fixes comments to exynos_drm_device_subdrv probe call. Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
2014-06-01drm/exynos: dpi: fix hotplug fail issueInki Dae1-4/+1
When connector is created, if connector->polled is DRM_CONNECTOR_POLL_CONNECT then drm_kms_helper_hotplug_event function isn't called at drm_helper_hpd_irq_event because the function will be called only in case of DRM_CONNECTOR_POLL_HPD. So this patch sets always DRM_CONNECTOR_POLL_HPD flag to connector->polled of parallel panel driver at connector creation. Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
2014-06-01drm/exynos: add component framework supportInki Dae12-463/+641
This patch adds component framework support to resolve the probe order issue. Until now, exynos drm had used codes specific to exynos drm to resolve that issue so with this patch, the specific codes are removed. Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: modify goto labels to meaningful namesInki Dae1-28/+27
Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: fimd: clear channel before enabling iommuAkshu Agrawal1-20/+49
If any fimd channel was already active, initializing iommu will result in a PAGE FAULT (e.e. u-boot could have turned on the display and not disabled it before the kernel starts). This patch checks if any channel is active before initializing iommu and disables it. Signed-off-by: Akshu Agrawal <akshu.a@samsung.com> Signed-off-by: Prathyush K <prathyush.k@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: rotator: add missing bracesJingoo Han1-1/+2
In the case of that only one branch of a conditional statement is a single statement, braces are added to both branches. Signed-off-by: Jingoo Han <jg1.han@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: dp: remove unnecessary OOM messagesJingoo Han1-6/+2
The site-specific OOM messages are unnecessary, because they duplicate the MM subsystem generic OOM message. Signed-off-by: Jingoo Han <jg1.han@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: hdmi: make local symbols staticJingoo Han1-2/+2
Make local symbols static, because these are used only in this file. Signed-off-by: Jingoo Han <jg1.han@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: fb: make local symbol staticJingoo Han1-1/+1
Make local symbole static, because this is used only in this file. Signed-off-by: Jingoo Han <jg1.han@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos: remove DRIVER_HAVE_IRQ featureJoonyoung Shim1-2/+1
Exynos drm driver cannot support DRIVER_HAVE_IRQ feature because it uses driver specific one instead of routine of drm framework to install/uninstall irq handler. Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos/fbdev: don't set mode_config.fb_baseDaniel Kurtz1-1/+0
AFAICT, the fb_base of a drm_device's mode_config is never used. It isn't accessed by core drm, it isn't used by fbmem, and it isn't exposed to user space. Furthermore, it is probably supposed to be a physical address, not the dma address mapped to the display controller, so this is just wrong. Signed-off-by: Daniel Kurtz <djkurtz@chromium.org> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-06-01drm/exynos/fbdev: don't set fix.smem/mmio_{start,len}Daniel Kurtz1-7/+0
Kernel access to the eyxnos fbdev framebuffer is via its gem object's kernel mapping (kvaddr, stored in info->screen_base). User space access is provided by mmap(), read() and write() of /dev/fb/fb0. These functions also only use screen_base/screen_size(). Therefore, it is not necessary to set fix->smem_{start,len} or fix->mmio_{start,len} fields. This avoids leaking kernel, physical and dma mapped addresses to user space via the ioctls FBIOGET_VSCREENINFO and FBIOGET_FSCREENINFO. Signed-off-by: Daniel Kurtz <djkurtz@chromium.org> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2014-05-30drm: add DP MST encoder typeDave Airlie2-0/+2
This adds an encoder type for DP MST encoders. Reviewed-by: Todd Previte <tprevite@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
2014-05-30drm: store encoder name in encoder structJani Nikula2-14/+19
This makes drm_get_encoder_name() thread safe. Reference: http://lkml.kernel.org/r/645ee6e22cad47d38a2b35c21c8d5fe3@DC1-MBX-01\ .ptsecurity.ru Signed-off-by: Jani Nikula <jani.nikula@intel.com> Reviewed-by: David Herrmann <dh.herrmann@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>