summaryrefslogtreecommitdiff
path: root/drivers/video
AgeCommit message (Collapse)Author
2012-11-26drivers/video: fsl-diu-fb: streamline enabling of interruptsTimur Tabi
Remove functions request_irq_local() and free_irq_local(), and merge their code into the functions that handle opening and closing the framebuffer. We also improve the way that interrupts are enabled. Also implement a work-around for broken U-Boots that leave the DIU interrupts enabled. Signed-off-by: Timur Tabi <timur@freescale.com>
2012-11-26drivers/video: fsl-diu-fb: add support for set_gamma ioctlsTimur Tabi
The MPC5121 BSP comes with a gamma_set utility that initializes the gamma table via an ioctl. Unfortunately, the ioctl number that utility uses is defined improperly, but we can still support it. Signed-off-by: Timur Tabi <timur@freescale.com>
2012-11-26drivers/video: fsl-diu-fb: simplify platforms that have only one portTimur Tabi
Allow the platform code not to define a value for diu_ops.set_monitor_port. This would be for platforms that only have one monitor port. set_monitor_port() will never be called with an unsupported port anyway. Signed-off-by: Timur Tabi <timur@freescale.com>
2012-11-26Merge tag 'omapdss-for-3.7-rc' of git://gitorious.org/linux-omap-dss2/linuxTomi Valkeinen
omapdss fixes for 3.7-rc Conflicts: drivers/video/omap2/dss/dss.c
2012-11-25Merge tag 'v3.7-rc7' into next/cleanupOlof Johansson
Merging in mainline back to next/cleanup since it has collected a few conflicts between fixes going upstream and some of the cleanup patches. Git doesn't auto-resolve some of them, and they're mostly noise so let's take care of it locally. Conflicts are in: arch/arm/mach-omap2/omap_hwmod_44xx_data.c arch/arm/plat-omap/i2c.c drivers/video/omap2/dss/dss.c Signed-off-by: Olof Johansson <olof@lixom.net>
2012-11-26video: s3c-fb: fix red offset and length for ARGB232 formatJingoo Han
Green pixel and blue pixel are 3 bits and 2 bits respectively at ARGB232 format. Thus, the value of red offset should be 5, not 4. Also, the value of red length should be 2, because red pixel is 2 bits at ARGB232 format. Signed-off-by: Jingoo Han <jg1.han@samsung.com>
2012-11-26video: s3c-fb: return an error when bpp is invalidJingoo Han
This patch returns an error, when bpp is invalid in s3c_fb_check_var(). If invalid bpp is requested, an error should be returned. Signed-off-by: Jingoo Han <jg1.han@samsung.com>
2012-11-26video: s3c-fb: add "drop through" commentJingoo Han
This patch adds a "drop through" comment to improve the readability. Signed-off-by: Jingoo Han <jg1.han@samsung.com>
2012-11-26video: s3c-fb: use dev_get_drvdata() instead of platform_get_drvdata()Jingoo Han
Because there is no need to access to the platform device in suspend/resume and runtime_suspend/resume, dev_get_drvdata() can be used instead of platform_get_drvdata() to make the code smaller. Signed-off-by: Jingoo Han <jg1.han@samsung.com>
2012-11-26video: s3c-fb: use FIMD_V8_VIDTCON0 for EXYNOS5 FIMDJingoo Han
This patch uses FIMD_V8_VIDTCON0 as the address definition of VIDTCON0 register, because the address offset of VIDTCONx registers is changed from 0x0 to 0x20000 for EXYNOS5 FIMD. So, FIMD_V8_VIDTCON0 should be used. Signed-off-by: Jingoo Han <jg1.han@samsung.com>
2012-11-26video: s3c-fb: fix help message for FB_S3C_DEBUG_REGWRITEJingoo Han
The help message of config FB_S3C_DEBUG_REGWRITE is fixed, because printk(KERN_DEBUG) was replaced with pr_debug(). Signed-off-by: Jingoo Han <jg1.han@samsung.com>
2012-11-26video: s3c-fb: fix typo in commentJingoo Han
"sturucture" should be "structure". Signed-off-by: Jingoo Han <jg1.han@samsung.com>
2012-11-26Merge branch 'merge' into nextBenjamin Herrenschmidt
Merge my own merge branch to get various fixes from there and upstream, especially the hvc console tty refcouting fixes which which testing is quite a bit harder...
2012-11-23Merge tag 'omapdss-for-3.7-rc' of git://gitorious.org/linux-omap-dss2/linuxLinus Torvalds
Pull omapdss fixes from Tomi Valkeinen: "Here are a few OMAPDSS fixes for the next -rc. I'm sending these directly to you, and quite late, as the fbdev tree maintainer (Florian) has been busy with his work and hasn't had time to manage the fb patches." * tag 'omapdss-for-3.7-rc' of git://gitorious.org/linux-omap-dss2/linux: OMAPDSS: do not fail if dpll4_m4_ck is missing OMAPFB: Fix possible null pointer dereferencing OMAPDSS: HDMI: fix missing unlock on error in hdmi_dump_regs() omapdss: dss: Fix clocks on OMAP363x OMAPDSS: DSI: fix dsi_get_dsidev_from_id()
2012-11-23OMAPFB: fix compilation errorTomi Valkeinen
omapfb compilation fails on x86 (but not on omap): drivers/video/omap2/omapfb/omapfb-ioctl.c: In function ‘omapfb_ioctl’: drivers/video/omap2/omapfb/omapfb-ioctl.c:861:23: error: ‘SZ_1M’ undeclared (first use in this function) drivers/video/omap2/omapfb/omapfb-ioctl.c:861:23: note: each undeclared identifier is reported only once for each function it appears in Fix this by including linux/sizes.h. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2012-11-22OMAPDSS: do not fail if dpll4_m4_ck is missingAaro Koskinen
Do not fail if dpll4_m4_ck is missing. The clock is not there on omap24xx, so this should not be a hard error. The patch retains the functionality before the commit 185bae10 (OMAPDSS: DSS: Cleanup cpu_is_xxxx checks). Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2012-11-22OMAPDSS: panel-n8x0: register the DSS driver after SPI probeAaro Koskinen
Register the DSS driver after SPI probe. This simplifies the initialization. This is similar to what is being done e.g. in panel-acx565akm. Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2012-11-21Merge branch 'clps711x/soc2' into next/socOlof Johansson
From Alexander Shiyan: The main direction of this patchset - approaching the platform to the possibility of using configurations with multiple platforms in a single kernel. Added support of the majority of the necessary kernel symbol. Also part of the driver code used only for the platform was moved to the board code and converted to the use of standard drivers. * clps711x/soc2: MAINTAINERS: Add ARM CLPS711X entry ARM: clps711x: Update defconfig due latest changes and new kernel symbols ARM: clps711x: Rename board files to match functionality ARM: clps711x: edb7211: Add support for NOR-Flash ARM: clps711x: Moving backlight controls of framebuffer driver to the board ARM: clps711x: p720t: Special driver for handling NAND memory is removed ARM: clps711x: Moving power management of framebuffer driver to the board ARM: clps711x: autcpu12: Special driver for handling NAND memory is removed ARM: clps711x: Unused empty "ACK" calls for IRQ-chips removed ARM: clps711x: Add FIQ interrupt handling ARM: clps711x: Implement usage "MULTI_IRQ_HANDLER" kernel option for a platform ARM: clps711x: Implement usage "SPARSE_IRQ" kernel option for a platform ARM: clps711x: cdb89712: Special driver for handling memory is removed ARM: clps711x: Always select AUTO_ZRELADDR for a platform ARM: clps711x: p720t: Unneeded inclusion of head-sa1100.S removed ARM: clps711x: Transform clps711x-framebuffer to platform driver and use it ARM: clps711x: p720t: Using "leds-gpio" driver for LED control ARM: clps711x: Using platform_driver for ethernet device
2012-11-21ARM: clps711x: Moving backlight controls of framebuffer driver to the boardAlexander Shiyan
This patch moves the backlight controls for clps711x-framebuffer driver to the board code. To control we use "generic-bl" driver. Signed-off-by: Alexander Shiyan <shc_work@mail.ru> [olof: fixed space/tab whitespace in drivers/video/clps711xfb.c] Signed-off-by: Olof Johansson <olof@lixom.net>
2012-11-21ARM: clps711x: Moving power management of framebuffer driver to the boardAlexander Shiyan
This patch moves the power management for clps711x-framebuffer driver to the board code. To control we use "platform-lcd" driver. Signed-off-by: Alexander Shiyan <shc_work@mail.ru> Signed-off-by: Olof Johansson <olof@lixom.net>
2012-11-21fbdev: sh_mobile_lcdc: Make sh_mobile_lcdc_sys_bus_ops staticLaurent Pinchart
The structure isn't used outside of its compilation unit, make it static. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-11-21fbdev: sh_mobile_lcdc: Store the backlight brightness internallyLaurent Pinchart
There's no need to query the hardware for the currenty brightness value through a platform data callback when we can cache the value internally in the LCDC driver. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-11-21fbdev: sh_mipi_dsi: Remove last reference to LCDC platform dataLaurent Pinchart
The format check that references LCDC platform data isn't needed, as the mismatch between LCDC and MIPI-DSI platform it detects would result in a badly displayed image, which isn't worse than a complete failure to setup the transmitter. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-11-21fbdev: sh_mipi_dsi: Use the LCDC entity default modeLaurent Pinchart
Configure the MIPI-DSI transmitter using the LCDC entity default mode instead of accessing the mode through the LCDC platform data. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-11-21fbdev: sh_mipi_dsi: Use the sh_mipi_dsi_info channel fieldLaurent Pinchart
Get the LCDC channel selector from the sh_mipi_dsi_info channel field directly instead of accessing the LCDC platform data through the lcd_chan field. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-11-21fbdev: sh_mobile_lcdc: Remove priv argument from channel and overlay initLaurent Pinchart
The channel and overlay init functions operate on a channel and an overlay, don't pass the priv parameter explicitly. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-11-21fbdev: sh_mobile_lcdc: Rename mode argument to modesLaurent Pinchart
The sh_mobile_lcdc_channel_fb_init() mode argument is used to pass a list of modes, rename it to modes. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-11-21fbdev: sh_mobile_lcdc: Get display dimensions from the channel structureLaurent Pinchart
Get the display dimensions directly from the channel structure instead of recomputing them from the monitor specs or accessing the platform data. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-11-21fbdev: sh_mobile_lcdc: use dma_mmap_coherentHideki EIRAKU
fb_mmap() implemented in fbmem.c uses smem_start as the physical address of the frame buffer. In the sh_mobile_lcdc driver, the smem_start is a dma_addr_t that is not a physical address when IOMMU is enabled. dma_mmap_coherent() maps the address correctly. Signed-off-by: Hideki EIRAKU <hdk@igel.co.jp> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-11-20ARM: clps711x: Transform clps711x-framebuffer to platform driver and use itAlexander Shiyan
clps711x-framebuffer driver needs to be updated and this is a first step to make driver better. With this patch we are convert clps711x-framebuffer to platform device and load this driver from board code. Signed-off-by: Alexander Shiyan <shc_work@mail.ru> Signed-off-by: Olof Johansson <olof@lixom.net>
2012-11-20OMAPDSS: Add a dispc_features struct for OMAP5Archit Taneja
Add a dispc_features struct for OMAP5. Previously, OMAP5 used the same struct as OMAP4. The new struct for OMAP5 contains the updated register field offset and maximum limit for overlay manager width and height. Signed-off-by: Archit Taneja <archit@ti.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2012-11-20OMAPDSS: Add overlay manager width and height limits as a dispc featureArchit Taneja
The overlay manager width and height vary in OMAP5 from previous OMAPs in terms of maximum limit and register field positions. Add parameters in dispc_features for these. Also remove params related to manager width and height from dss_features, as we want to maintain a feature list for individual IPs. Signed-off-by: Archit Taneja <archit@ti.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2012-11-19OMAPFB: Delete if statement evaluating a constant.Matthias Brugger
Variable r is never set to any value different to zero. Delete the if statement as it will never executed. Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2012-11-19OMAPFB: Fix possible null pointer dereferencingTushar Behera
Commit 952cbaaa9b8beacc425f9aedf370468cbb737a2c (OMAPFB: Change dssdev->manager references) added checks for OMAPFB_WAITFORVSYNC ioctl to verify that the display, output and overlay manager exist. However, the code erroneously uses && for each part, which means that OMAPFB_WAITFORVSYNC may crash the kernel if no display, output or manager is associated with the framebuffer. This patch fixes the issue by using ||. Signed-off-by: Tushar Behera <tushar.behera@linaro.org> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2012-11-16Merge remote-tracking branch 'arm-soc/imx/multiplatform' into xSascha Hauer
2012-11-16Merge branch '3.8/vram-conversion' of git://gitorious.org/linux-omap-dss2/linuxTomi Valkeinen
Conflicts: drivers/video/omap2/dss/Kconfig drivers/video/omap2/omapfb/omapfb-ioctl.c drivers/video/omap2/omapfb/omapfb-main.c Merge changes to make omapfb use common dma_alloc, and remove omap's custom vram allocator.
2012-11-16Merge tag 'v3.7-rc4'Tomi Valkeinen
Merge Linux 3.7-rc4 to get fixes for CMA.
2012-11-16Revert "OMAPDSS: HDMI: Create platform device for audio support"Tomi Valkeinen
This reverts commit 14840b9a83c6a56629db2ba0ec247503e975f143. The commit breaks audio, and a new version will be applied later. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2012-11-15Merge branch 'omap/headers4' into next/cleanupArnd Bergmann
2012-11-15fbdev: Add GXT4000P and GXT6500P support to the gxt4500 driverDan Horák
I'm reviving an old patch from 2009 that adds support for GXT4000P and GXT6500P adapter to the gxt4500 driver. See threads at http://marc.info/?l=linux-fbdev-devel&m=124345080216952&w=2 and https://lists.ozlabs.org/pipermail/linuxppc-dev/2009-June/072672.html for more details. This patch adds support for GXT4000P and GXT6500P cards found on some IBM pSeries machines. GXT4000P/6000P and GXT4500P/6500P couples are identical from software's point of view and are based on the same Raster Engine (RC1000), except for a different reference clock for the PLL. GXT6x00P models are equipped with an additional Geometry Engine (GT1000) but this driver doesn't use it. Signed-off-by: Nico Macrionitis <acrux@cruxppc.org> Signed-off-by: Giuseppe Coviello <cjg@cruxppc.org> Tested-by: Dan Horák <dan@danny.cz> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2012-11-13Merge branch 'cleanups/dma' into next/cleanupArnd Bergmann
Separate patches from Marek Szyprowski <m.szyprowski@samsung.com>: Commit e9da6e9905e639b0 ("ARM: dma-mapping: remove custom consistent dma region") replaced custom consistent memory handling, so setting consistent dma memory size is not longer required. This patch series cleans sub-architecture platform code to remove all calls to the obsolated init_consistent_dma_size() function and finally removes the init_consistent_dma_size() stub itself. * cleanups/dma: ARM: at91: remove obsoleted init_consistent_dma_size() ARM: u300: remove obsoleted init_consistent_dma_size() ARM: dma-mapping: remove init_consistent_dma_size() stub ARM: shmobile: remove obsoleted init_consistent_dma_size() ARM: davinci: remove obsoleted init_consistent_dma_size() ARM: samsung: remove obsoleted init_consistent_dma_size() Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2012-11-13OMAP: remove vram allocatorTomi Valkeinen
OMAP specific vram allocator is no longer in use, and we can remove all the vram code. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2012-11-13OMAPFB: use dma_alloc_attrs to allocate memoryTomi Valkeinen
Use dma_alloc_attrs to allocate memory instead of omap specific vram allocator. After this we can remove the omap vram allocator. There are some downsides to this change: 1) dma_alloc_attrs doesn't let us allocate at certain physical address. However, this should not be a problem as this feature of vram allocator is only used when reserving the framebuffer that was initialized by the bootloader, and we don't currently support "passing" a framebuffer from the bootloader to the kernel anyway. 2) dma_alloc_attrs, as of now, always ioremaps the allocated area, and we don't need the ioremap when using VRFB. This patch uses DMA_ATTR_NO_KERNEL_MAPPING for the allocation, but the flag is currently not operational. 3) OMAPFB_GET_VRAM_INFO ioctl cannot return real values anymore. I changed the ioctl to return 64M for all the values, which, I hope, the applications will interpret as "there's enough vram". 4) "vram" kernel parameter to define how much ram to reserve for video use no longer works. The user needs to enable CMA and use "cma" parameter. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2012-11-12Merge tag 'for-3.8-at91_header_clean' of ↵Arnd Bergmann
git://github.com/at91linux/linux-at91 into next/headers From Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>: arm: at91: mach header cleanup This first patch serie start the cleanup of the header in mach by moving all the platform data to include/linux/platform_data and move the board header and drivers header next to them * tag 'for-3.8-at91_header_clean' of git://github.com/at91linux/linux-at91: arm: at91: move at91rm9200 rtc header in drivers/rtc arm: at91: move reset controller header to arm/arm/mach-at91 arm: at91: move pit define to the driver arm: at91: move at91_shdwc.h to arch/arm/mach-at91 arm: at91: move board header to arch/arm/mach-at91 arn: at91: move at91_tc.h to arch/arm/mach-at91 arm: at91 move at91_aic.h to arch/arm/mach-at91 arm: at91 move board.h to arch/arm/mach-at91 arm: at91: move platfarm_data to include/linux/platform_data/atmel.h arm: at91: drop machine defconfig Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Cc: Nicolas Ferre <nicolas.ferre@atmel.com> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2012-11-12OMAPDSS: APPLY: Remove unnecessary call to mg_clear_shadow_dirtyArchit Taneja
When doing a manual update in dss_mgr_start_update, we clear the shadow dirty flags. Although there isn't any harm in clearing them. The need to clear them out here should never arrive. When applying configurations for a manual update manager, we never do any register writes, i.e, calls to dss_mgr_write_regs and dss_mgr_write_regs_extra never happen while applying. We do all these writes only when we call dss_mgr_start_update. Hence, there is never a time when the shadow registers are dirty. Remove the call to mg_clear_shadow_dirty. Signed-off-by: Archit Taneja <archit@ti.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2012-11-12OMAPDSS: APPLY: Remove unnecessary variable in dss_apply_irq_handlerArchit Taneja
The bool was_updating is never really used for anything. It is set to the current value of mp->updating, but not used anywhere. Remove this variable. Signed-off-by: Archit Taneja <archit@ti.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2012-11-12OMAPDSS: APPLY: Don't treat an overlay's channel out as shadow bitsArchit Taneja
An overlay's channel out field isn't a shadow register. The TRM says that it's taken into effect immediately. This understanding was missing and channel out was treated as a shadow parameter, and in overlay's private data as extra info. Program channel out bits directly in dss_ovl_set_manager(). In order to do this safely, we need to be totally sure that the overlay is disabled in hardware. For auto update managers, we can assume that the overlay was truly disabled at dss_ovl_unset_manager() through the wait_pending_extra_info_updates() call. However, when unsetting manager for an overlay that was previously connected to a manager in manual update, we can't be sure if the overlay is truly disabled. That is, op->enabled might not reflect the actual state of the overlay in hardware. The older manager may require a manual update transfer to truly disable the overlay. We expect the user of OMAPDSS to take care of this, in OMAPDSS, we make sure that an overlay's manager isn't unset if there if extra_info is still dirty for that overlay. The wrong understanding of channel out bits also explains the reason why we see sync lost when changing an overlay's manager which was previously connected to a manual update manager. The following sequence of events caused this: - When we disable the overlay, no register writes are actually done since the manager is manual update, op->enabled is set to false, and the extra_info_dirty flag is set. However, in hardware, the overlay is still enabled in both shadow and working registers. - When we unset the manager, the software just configures the overlay's manager to point to NULL. - When we set the overlay to a new manager(which is in auto update) through dss_ovl_set_manager, the check for op->enabled passes, the channel field in extra info is set to the new manager. When we do an apply on this manager, the new channel out field is set in the hardware immediately, and since the overlay enable bit is still set in hardware, the new manager sees that the overlay is enabled, and tries to retrieve pixels from it, this leads to sync lost as it might be in the middle of processing a frame when we set the channel out bit. The solution to this was to ensure that user space does another update after disabling the overlay, this actually worked because the overlay was now truly disabled, and an immediate write to channel out didn't impact since the manager saw the new overlay as disabled, and doesn't try to retrieve pixels from it. Remove channel as an extra_info field. Make dss_ovl_unset_manager more strict about the overlay being disabled when detaching the manager. For overlays connected to a manual update manager, unset_manager fails if we need another update to disable the overlay. We still need to a manual update to ensure the overlay is disabled to get change the overlay's manager. We could work on doing a dummy update by using DISPC's capability to gate the different video port signals. This is left for later. Remove the comment about the sync lost issue. Signed-off-by: Archit Taneja <archit@ti.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2012-11-12OMAPDSS: DISPC: Use output width and height to calculate row/pix inc for ↵Archit Taneja
writeback When calculating row and pixel increments for graphics and video pipes, we need to consider the dimensions of the input frame to know how to read from the buffer. Hence, we need to calculate these parameters from the input to the pipeline. For writeback, the row and pixel increments need to be calculated based on the output of the writeback pipeline, i.e, the dimensions of the frame after scaling. Ensure that dispc driver uses values of out_width and out_height when calling calc_dma/calc_tiler_rotation_offset. For graphics and video pipes, the original code passed the original height as frame_height to calc_dma_rotation_offset, and not the predecimated height. This is left as it is for now. We need to figure out why pre decimated height isn't needed. Signed-off-by: Archit Taneja <archit@ti.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2012-11-12OMAPDSS: DISPC: Don't allow predecimation for writebackArchit Taneja
Since writeback writes to a buffer instead of reading from one, predecimation doesn't make sense for it. Configure the width and height predecimation limits to 1 if the plane is writeback. Signed-off-by: Archit Taneja <archit@ti.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2012-11-12OMAPDSS: DISPC: Fix calc_scaling_44xx() bugs for writeback pipelineArchit Taneja
dispc_ovl_calc_scaling_44xx() doesn't work correctly for writeback. There are two issues with it: - the function tries to calculate pixel clock for the input plane using dispc_plane_pclk_rate(), calling this with writeback as input plane results in a BUG(), this function shouldn't be called for writeback at all. Fix this by calculating pixel clock only when we are not in mem to mem mode. - the maximum input_width is the product of the downscale ratio supported and the and the given output_width. This was calculated incorrectly by dividing output_width with maxdownscale. Fix this. Signed-off-by: Archit Taneja <archit@ti.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>