summaryrefslogtreecommitdiffstats
path: root/drivers/video (follow)
Commit message (Collapse)AuthorAgeFilesLines
* fbcon: set a default value to blink intervalJean-Philippe Brucker2016-02-261-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since commit 27a4c827c34ac4256a190cc9d24607f953c1c459 fbcon: use the cursor blink interval provided by vt two attempts have been made at fixing a possible hang caused by cursor_timer_handler. That function registers a timer to be triggered at "jiffies + fbcon_ops.cur_blink_jiffies". A new case had been encountered during initialisation of clcd-pl11x: fbcon_fb_registered do_fbcon_takeover -> do_register_con_driver fbcon_startup (A) add_cursor_timer (with cur_blink_jiffies = 0) -> do_bind_con_driver visual_init fbcon_init (B) cur_blink_jiffies = msecs_to_jiffies(vc->vc_cur_blink_ms); If we take an softirq anywhere between A and B (and we do), cursor_timer_handler executes indefinitely. Instead of patching all possible paths that lead to this case one at a time, fix the issue at the source and initialise cur_blink_jiffies to 200ms when allocating fbcon_ops. This was its default value before aforesaid commit. fbcon_cursor or fbcon_init will refine this value downstream. Signed-off-by: Jean-Philippe Brucker <jean-philippe.brucker@arm.com> Cc: <stable@vger.kernel.org> # v4.2 Tested-by: Scot Doyle <lkml14@scotdoyle.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
* video: fbdev: imxfb: Provide a reset mechanismFabio Estevam2016-01-291-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | Currently when we boot the kernel on a mx25pdk the LCDC controller does not show the Linux logo on boot. This problem is well explained by Sascha Hauer: "Unfortunately this LCD controller does not have an enable bit. The controller starts directly when the clocks are enabled. If the clocks are enabled when the controller is not yet programmed with proper register values then it just goes into some undefined state. What I suspect is that the clocks already were enabled before driver probe, presumably by the bootloader, so the controller is already in undefined state when entering Linux. Now by dis/enabling the ipg clock you effectively reset the controller. Since you have programmed it with valid register values in the mean time it starts working after this reset." So do as suggested and force a reset of the LCDC hardware by enabling and disabling the IPG clock. With this change the Linux logo can be seen on boot on a mx25pdk. Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
* fbdev: mmp: print IRQ resource using %pR format stringArnd Bergmann2016-01-291-2/+1
| | | | | | | | | | | | | | | | | | resource_size_t cannot be printed using the %x format string when we it is defined as u64: drivers/video/fbdev/mmp/hw/mmp_ctrl.c: In function 'mmphw_probe': drivers/video/fbdev/mmp/hw/mmp_ctrl.c:506:22: error: format '%x' expects argument of type 'unsigned int', but argument 4 has type 'resource_size_t {aka long long unsigned int}' [-Werror=format=] dev_err(ctrl->dev, "%s: res %x - %x map failed\n", __func__, ^ drivers/video/fbdev/mmp/hw/mmp_ctrl.c:506:22: error: format '%x' expects argument of type 'unsigned int', but argument 5 has type 'resource_size_t {aka long long unsigned int}' [-Werror=format=] This changes the format string to %pR, which is interpreted by the printk implementation to pretty-print a resource structure. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
* fbdev: da8xx-fb: remove incorrect type castArnd Bergmann2016-01-291-3/+3
| | | | | | | | | | | | | | The probe function correct passes a dma_addr_t pointer into dma_alloc_coherent(), but has a cast to resource_size_t, which might be different from dma_addr_t: drivers/video/fbdev/da8xx-fb.c: In function 'fb_probe': drivers/video/fbdev/da8xx-fb.c:1431:10: error: passing argument 3 of 'dma_alloc_coherent' from incompatible pointer type [-Werror=incompatible-pointer-types] This removes the cast, which avoids the warning. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
* fbdev: s6e8ax0: avoid unused function warningsArnd Bergmann2016-01-291-9/+4
| | | | | | | | | | | | | | | | | The s6e8ax0 suspend/resume functions are hidden inside of an #ifdef when CONFIG_PM is set to avoid unused function warnings, but they call some other functions that nothing else calls, and we get warnings about those: drivers/video/fbdev/exynos/s6e8ax0.c:449:13: error: 's6e8ax0_sleep_in' defined but not used [-Werror=unused-function] drivers/video/fbdev/exynos/s6e8ax0.c:485:13: error: 's6e8ax0_display_off' defined but not used [-Werror=unused-function] This marks the PM functions as __maybe_unused so the compiler can silently drop them when they are not referenced. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
* ocfb: fix tgdel and tvdel timing parametersAndrea Merello2016-01-291-2/+2
| | | | | | | | | | | | | | According to the ocfb documentation: Fix tgdel HW param should be left margin, not right. Fix tvdel HW param should upper margin, not lower. This seems to fix lock issues on certain monitors (tested on a slightly customized IP, but the FPGA guy said that it should be the same wrt this changes). Signed-off-by: Andrea Merello <andrea.merello@gmail.com> Acked-by: Stefan Kristiansson <stefan.kristiansson@saunalahti.fi> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
* wrappers for ->i_mutex accessAl Viro2016-01-231-2/+2
| | | | | | | | | | | parallel to mutex_{lock,unlock,trylock,is_locked,lock_nested}, inode_foo(inode) being mutex_foo(&inode->i_mutex). Please, use those for access to ->i_mutex; over the coming cycle ->i_mutex will become rwsem, with ->lookup() done with it held only shared. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* Merge tag 'fbdev-4.5' of ↵Linus Torvalds2016-01-1880-1845/+664
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux Pull fbdev updates from Tomi Valkeinen: "Summary: - pxafb: device-tree support - An unsafe kernel parameter 'lockless_register_fb' for debugging problems happening while inside the console lock - Small miscellaneous fixes & cleanups - omapdss: add writeback support functions - Separation of omapfb and omapdrm (see below) About the separation of omapfb and omapdrm, see http://permalink.gmane.org/gmane.comp.video.dri.devel/143151 for longer story. The short version: omapfb and omapdrm have shared low level drivers (omapdss and panel drivers), making further development of omapdrm difficult. After these patches omapfb and omapdrm have their own versions of the drivers, which are more or less direct copies for now but will diverge soon. This also means that omapfb (everything under drivers/video/fbdev/omap2/) is now in maintenance mode, and all new development will be done for omapdrm (drivers/gpu/drm/omapdrm/)" * tag 'fbdev-4.5' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux: (49 commits) video: fbdev: pxafb: fix out of memory error path drm/omap: make omapdrm select OMAP2_DSS drm/omap: move omapdss & displays under omapdrm omapfb: move vrfb into omapfb omapfb: take omapfb's private omapdss into use omapfb/displays: change CONFIG_DISPLAY_* to CONFIG_FB_OMAP2_* omapfb/dss: change CONFIG_OMAP* to CONFIG_FB_OMAP* omapdss: remove CONFIG_OMAP2_DSS_VENC from omapdss.h omapfb: copy omapdss & displays for omapfb omapfb: allow compilation only if DRM_OMAP is disabled fbdev: omap2: panel-dpi: simplify gpio setting fbdev: omap2: panel-dpi: in .disable first disable backlight then display OMAPDSS: DSS: fix a warning message video: omapdss: delete unneeded of_node_put OMAPDSS: DISPC: Remove boolean comparisons OMAPDSS: DSI: cleanup DSI_IRQ_ERROR_MASK define OMAPDSS: remove extra out == NULL checks OMAPDSS: change internal dispc functions to static OMAPDSS: make a two dss feat funcs internal to omapdss OMAPDSS: remove extra EXPORT_SYMBOLs ...
| * video: fbdev: pxafb: fix out of memory error pathRobert Jarzmik2016-01-181-0/+2
| | | | | | | | | | | | | | | | | | | | As seen by Julia, the initial allocation memory is not checked anymore after commit "video: fbdev: pxafb: initial devicetree conversion". Introduce back the removed test. Reported-by: Julia Lawall <julia.lawall@lip6.fr> Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: move omapdss & displays under omapdrmTomi Valkeinen2015-12-2958-36331/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Now that omapfb has its own copy of omapdss and display drivers, we can move omapdss and display drivers which omapdrm uses to omapdrm's directory. We also need to change the main drm Makefile so that omapdrm directory is always entered, because omapdss has a file that can't be built as a module. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Acked-by: Dave Airlie <airlied@gmail.com> Acked-by: Rob Clark <robdclark@gmail.com>
| * omapfb: move vrfb into omapfbTomi Valkeinen2015-12-295-5/+4
| | | | | | | | | | | | | | | | VRFB is only used by omapfb, so we can move it under omapfb's directory. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Acked-by: Dave Airlie <airlied@gmail.com> Acked-by: Rob Clark <robdclark@gmail.com>
| * omapfb: take omapfb's private omapdss into useTomi Valkeinen2015-12-293-1/+11
| | | | | | | | | | | | | | | | | | | | | | omapfb's private copy of omapdss is now ready to be used. This patch makes omapfb use its private omapdss and display drivers, and also makes omap_vout (which uses omapfb) to depend on omapfb. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Acked-by: Dave Airlie <airlied@gmail.com> Acked-by: Rob Clark <robdclark@gmail.com>
| * omapfb/displays: change CONFIG_DISPLAY_* to CONFIG_FB_OMAP2_*Tomi Valkeinen2015-12-292-30/+30
| | | | | | | | | | | | | | | | | | | | | | | | We need to change the config symbols of omapfb's private copy of the panel and encoder drivers so that we won't have config symbol conflicts. This patch changes the symbols from the panel and encoder drivers using simple replacement of DISPLAY_* to FB_OMAP2*. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Acked-by: Dave Airlie <airlied@gmail.com> Acked-by: Rob Clark <robdclark@gmail.com>
| * omapfb/dss: change CONFIG_OMAP* to CONFIG_FB_OMAP*Tomi Valkeinen2015-12-2910-75/+69
| | | | | | | | | | | | | | | | | | | | | | | | We need to change the config symbols of omapfb's private copy of omapdss so that we won't have config symbol conflicts. This patch changes the symbols from omapdss using simple replacement of CONFIG_OMAP* to CONFIG_FB_OMAP*. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Acked-by: Dave Airlie <airlied@gmail.com> Acked-by: Rob Clark <robdclark@gmail.com>
| * omapfb: copy omapdss & displays for omapfbTomi Valkeinen2015-12-2956-0/+36276
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch makes a copy of the omapdss driver and the omap panel & encoder drivers for omapfb. The purpose is to separate omapdrm and omapfb drivers from each other. Note that this patch only does a direct copy of the files without any other modifications. The files are not yet used. The original files are in: drivers/video/fbdev/omap2/dss/ drivers/video/fbdev/omap2/displays-new/ Here's a more detailed explanation about this and the following patches, from the introduction mail of the patch series: A short background on the current status. We have the following entities: * omapdss, located in drivers/video/fbdev/omap2/dss/. This is a driver for the display subsystem IPs used on OMAP (and related) SoCs. It offers only a kernel internal API, and does not implement anything for fbdev or drm. * omapdss panels and encoders, located in drivers/video/fbdev/omap2/displays-new/. These are panel and external encoder drivers, which use APIs offered by omapdss driver. These also don't implement anything for fbdev or drm. * omapdrm, located in drivers/gpu/drm/omapdrm/. This is a drm driver, which uses omapdss and the panel/encoder drivers to operate the hardware. * omapfb, located in drivers/video/fbdev/omap2/omapfb/. This is an fbdev driver, which uses omapdss and the panel/encoder drivers to operate the hardware. * omap_vout, located in drivers/media/platform/omap/. This is a v4l2 driver, which uses omapdss and omapfb to implement a v4l2 API for the video overlays. So, on the top level, we have either omapdrm, or omapfb+omap_vout. Both of those use the same low level drivers. Without going to the historical details why the architecture is like that, I think it's finally time to change that. The situation with omapfb+omap_vout is that it still works, but no new features have been added for a long time, and I want to keep it working as it's still being used. At some point in the future I'd like to remove omapfb and omap_vout altogether. Omapdrm, on the other hand, is being actively developed. Sharing the low level parts with omapfb makes that development more difficult than it should be. It also "hides" half of the development, as everything happening in the low level parts resides under fbdev directory, not in the drm directory. I've been wanting to clean this up for a long time, but I haven't figured out a very good way to do it. I still haven't, but here's the best way I have come up with. This series makes a full copy of the low level parts, omapdss and panel/encoder drivers. Both omapfb+omap_vout and omapdrm will have their own versions. The copy omapfb+omap_vout get is a new copy, and the copy that omapdrm gets is just the current files moved. This way git will associate the omapdrm version with the old files. The omapfb+omap_vout versions won't be touched unless there are some big issues there. The omapdrm versions can be refactored and cleaned up, as the omapfb support code is no longer needed. We can perhaps also merge omapdss and omapdrm into the same kernel module. This series only does the copy, and the absolutely necessary parts. No further cleanups are done yet. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Acked-by: Dave Airlie <airlied@gmail.com> Acked-by: Rob Clark <robdclark@gmail.com>
| * omapfb: allow compilation only if DRM_OMAP is disabledTomi Valkeinen2015-12-291-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | At the moment omapfb and omapdrm can be compiled at the same time, if both are modules. However, they can't be both loaded, as they use the same hardware. This has been mostly for compile testing. To make it clear that omapfb and omapdrm are mutually exclusive drivers, this patch makes omapfb available only if omapdrm is disabled. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Acked-by: Dave Airlie <airlied@gmail.com> Acked-by: Rob Clark <robdclark@gmail.com>
| * fbdev: omap2: panel-dpi: simplify gpio settingUwe Kleine-König2015-12-291-4/+2
| | | | | | | | | | | | | | | | | | gpiod_set_value_cansleep is a noop when the passed descriptor is NULL. So there is no need to duplicate the check for NULL; just call the function unconditionally instead. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * fbdev: omap2: panel-dpi: in .disable first disable backlight then displayUwe Kleine-König2015-12-291-3/+3
| | | | | | | | | | | | | | This makes .disable operate in reverse order compared to .enable. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * OMAPDSS: DSS: fix a warning messageDan Carpenter2015-12-291-1/+2
| | | | | | | | | | | | | | | | | | The WARN() macro has to take a condition. The current code will just print the stack trace and the function name instead of the intended warning message. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * video: omapdss: delete unneeded of_node_putJulia Lawall2015-12-291-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Device node iterators perform an of_node_put on each iteration, so putting an of_node_put before a continue results in a double put. A simplified version of the semantic match that finds this problem is as follows (http://coccinelle.lip6.fr): // <smpl> @@ expression root,e; local idexpression child; iterator i; @@ i(..., child, ...) { ... when != of_node_get(child) * of_node_put(child); ... * continue; } // </smpl> Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * OMAPDSS: DISPC: Remove boolean comparisonsLuis de Bethencourt2015-12-293-7/+7
| | | | | | | | | | | | | | | | Boolean tests do not need explicit comparison to true or false. Signed-off-by: Luis de Bethencourt <luisbg@osg.samsung.com> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * OMAPDSS: DSI: cleanup DSI_IRQ_ERROR_MASK defineDan Carpenter2015-12-291-1/+1
| | | | | | | | | | | | | | DSI_IRQ_SYNC_LOST was ORed twice so we can remove one. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * OMAPDSS: remove extra out == NULL checksTomi Valkeinen2015-12-297-7/+7
| | | | | | | | | | | | | | | | All the output drivers check for 'out' being NULL, but it can never be NULL. Remove the check. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
| * OMAPDSS: change internal dispc functions to staticTomi Valkeinen2015-12-292-10/+10
| | | | | | | | | | | | | | | | A bunch of dispc functions are only used inside dispc, so we can make them static. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
| * OMAPDSS: make a two dss feat funcs internal to omapdssTomi Valkeinen2015-12-292-2/+4
| | | | | | | | | | | | | | | | | | dss_feat_get_supported_displays() and dss_feat_get_supported_outputs() are not used outside omapdss, but are exported. We can thus remove the export and move the declarations to the omapdss internal header. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
| * OMAPDSS: remove extra EXPORT_SYMBOLsTomi Valkeinen2015-12-291-2/+0
| | | | | | | | | | | | | | | | | | | | The functions dispc_ovl_set_fifo_threshold and dispc_ovl_compute_fifo_thresholds are exported, but not declared in public headers, and thus are not used outside omapdss. So we can remove the EXPORT_SYMBOL()s. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
| * OMAPDSS: add setup for WB capture mode in dispc_wb_setup()Tomi Valkeinen2015-12-291-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | dispc_wb_setup() handles configuration only for mem-to-mem case. This patch adds the necessary configuration to handle also display capture mode. We need to set CAPTUREMODE to 0 (continuous capture), and WBDELAYCOUNT according to the vertical timings of the display, so that the WB FIFO has time to flush before the next frame starts. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * OMAPDSS: set WB capturemode for m2m modeTomi Valkeinen2015-12-291-0/+2
| | | | | | | | | | | | | | In mem-to-mem mode WB CAPTUREMODE needs to be set to 1 (capture one frame). Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * OMAPDSS: fix rgb-to-yuv color conv coefsTomi Valkeinen2015-12-291-1/+3
| | | | | | | | | | | | | | | | The color conversion coefficients for RGB to YUV conversion (used with writeback) don't result in the correct result. This patch sets the correct coefficients. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * OMAPDSS: skip pclk check for WB mem2memTomi Valkeinen2015-12-291-1/+1
| | | | | | | | | | | | | | | | When doing mem-to-mem writeback, there's no pixelclock. However, the code that calculates scaling factors check that there is a pixel clock. We can just skip the check when doing mem-to-mem writeback. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * OMAPDSS: configure WB mflag thresholdTomi Valkeinen2015-12-291-0/+19
| | | | | | | | | | | | | | Mflag thresholds for all pipelines are set in dispc_init_mflag(), but we are missing that for WB pipeline. Add WB configuration. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * OMAPDSS: configure WB fifo thresholdsTomi Valkeinen2015-12-291-0/+11
| | | | | | | | | | | | | | Fifo thresholds for all pipelines are set in dispc_init_fifos(), but we are missing it for WB pipeline. Add that. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * OMAPDSS: configure burst size for WBTomi Valkeinen2015-12-291-0/+2
| | | | | | | | | | | | | | Burst size for all pipelines is set in dispc_configure_burst_sizes(), but we are missing WB pipe. So add that. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * OMAPDSS: handle WB channel in dispc_set/get_channel_outTomi Valkeinen2015-12-291-0/+6
| | | | | | | | | | | | | | Add handling of OMAP_DSS_CHANNEL_WB to dispc_ovl_set_channel_out() and dispc_ovl_get_channel_out(). Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * OMAPDSS: refactor dispc_ovl_get_channel_outTomi Valkeinen2015-12-291-17/+14
| | | | | | | | | | | | | | Refactor dispc_ovl_get_channel_out() to a bit cleaner form, which makes it easier to add support for writeback in the following patch. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * OMAPDSS: add 'has_writeback' flagTomi Valkeinen2015-12-293-15/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | At the moment we have a function to get the number of writeback pipelines supported. However, the function is used in a wrong way, causing a wrong pipeline to get configured when trying to use WB. Also, we only have a single writeback pipeline on any of the DSS versions. To fix and simplify this, create a 'has_writeback' flag into the dispc driver, and after checking the flag, use OMAP_DSS_WB pipeline explicitly when calling the configuration functions. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * OMAPDSS: add num_wbs=1 to omap5 dss featuresTomi Valkeinen2015-12-291-0/+1
| | | | | | | | | | | | | | OMAP5+ DSS has a writeback pipeline, but this was not specified in the features list for OMAP5 DSS. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * OMAPDSS: add WB to register dumpTomi Valkeinen2015-12-291-0/+30
| | | | | | | | | | | | Add dumping of the writeback registers to the register dump function. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * OMAPDSS: fix DISPC_MFLAG_THRESHOLD_OFFSET for WBTomi Valkeinen2015-12-291-0/+2
| | | | | | | | | | | | | | DISPC_MFLAG_THRESHOLD_OFFSET() is missing the offset for WB. Add the offset. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * OMAPDSS: DISPC: always set ALIGN when availableTomi Valkeinen2015-12-171-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | By default DISPC asserts hsync and vsync sequentially, i.e. there's first hsync and that is immediately followed by vsync. This is the only available behaviour on OMAP2/3, and default behaviour on OMAP4+. OMAP4+ has ALIGN bit in POL_FREQ register, which makes DISPC assert both syncs at the same time. It has been observed that some panels don't like sequential syncs (AM5 EVM's panel). After studying the datasheets for multiple panels and encoders, and MIPI DPI spec, it looks like there is no standard way to handle this. Sometimes the datasheets don't mention the required syncs behaviour at all, sometimes the datasheets have images that hint towards simultaneous syncs, and sometimes it is explicitly mentioned that simultaneous syncs are needed. No panels or encoders requiring sequential sync was found. It thus seems to be safe to default to simultaneous syncs when the ALIGN bit is available. This fixed AM5 EVM's panel, and no side effects have been observed on other panels or encoders. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
| * OMAPDSS: adopt pinctrl supportDave Gerlach2015-12-171-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Update omapdss driver to set the state of the pins to: - "default on resume - "sleep" on suspend By optionally putting the pins into sleep state in the suspend callback we can accomplish two things. - minimize current leakage from pins and thus save power, - prevent the IP from driving pins output in an uncontrolled manner, which may happen if the power domain drops the domain regulator. Signed-off-by: Dave Gerlach <d-gerlach@ti.com> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * video: fbdev: pxafb: initial devicetree conversionRobert Jarzmik2015-12-152-3/+159
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch brings a first support of pxa framebuffer devices to a devicetree pxa platform, as was before platform data. There are restrictions with this port, the biggest one being the lack of support of smart panels. Moreover the conversion doesn't provide a way to declare multiple framebuffer configurations with different bits per pixel, only the LCD hardware bus width is used. The patch was tested on both pxa25x, pxa27x and pxa3xx platform (namely lubbock, mainstone and zylonite). Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * video: fbdev: pxafb: loosen the platform data bondRobert Jarzmik2015-12-152-20/+36
| | | | | | | | | | | | | | | | | | | | | | | | In order to prepare the transition to a mixed platform data and device-tree initialization, remove all the platform data references all over the driver. Copy the platform data into the internal structure of the pxafb, and only use this afterward. Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * fbdev: Make fb-notify a no-op if CONFIG_FB=nEzequiel Garcia2015-12-152-1/+5
| | | | | | | | | | | | | | | | | | | | There's no point in having support for framebuffer notifications is CONFIG_FB is disabled. This commit adds the necessary stubs for code to link properly when CONFIG_FB=n and moves fb-notify.o to be built only when CONFIG_FB=y. Signed-off-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * fbdev: Debug knob to register without holding console_lockDaniel Vetter2015-12-151-3/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the usual fbcon legacy options are enabled we have ->register_framebuffer ->fb notifier chain calls into fbcon ->fbcon sets up console on new fbi ->fbi->set_par ->drm_fb_helper_set_par exercises full kms api And because of locking inversion hilarity all of register_framebuffer is done with the console lock held. Which means that the first time on driver load we exercise _all_ the kms code (all probe paths and modeset paths for everything connected) is under the console lock. That means if anything goes belly-up in that big pile of code nothing ever reaches logfiles (and the machine is dead). Usual tactic to debug that is to temporarily remove those console_lock calls to be able to capture backtraces. I'm fed up writing this patch and recompiling kernels. Hence this patch here to add an unsafe, kernel-taining option to do this at runtime. Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com> Cc: Tomi Valkeinen <tomi.valkeinen@ti.com> Cc: linux-fbdev@vger.kernel.org Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * video: fbdev: rivafb: unlock chip before probiding EDIDDmitry Eremin-Solenikov2015-12-151-0/+1
| | | | | | | | | | | | | | | | At least NV3 requires for chip to be unlocked before it is possible to access I2C registers. Without it, it is not possible to read EDID. Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * fbdev: sm712fb: avoid unused function warningsArnd Bergmann2015-12-151-13/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The sm712fb framebuffer driver encloses the power-management functions in #ifdef CONFIG_PM, but the smtcfb_pci_suspend/resume functions are only really used when CONFIG_PM_SLEEP is also set, as a frequent gcc warning shows: fbdev/sm712fb.c:1549:12: warning: 'smtcfb_pci_suspend' defined but not used fbdev/sm712fb.c:1572:12: warning: 'smtcfb_pci_resume' defined but not used The driver also avoids using the SIMPLE_DEV_PM_OPS macro when CONFIG_PM is unset, which is redundant. This changes the driver to remove the #ifdef and instead mark the functions as __maybe_unused, which is a nicer anyway, as it provides build testing for all the code in all configurations and is harder to get wrong. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * fbdev: auo_k190x: avoid unused function warningsArnd Bergmann2015-12-151-7/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The auo_k190x framebuffer driver encloses the power-management functions in #ifdef CONFIG_PM, but the auok190x_suspend/resume functions are only really used when CONFIG_PM_SLEEP is also set, as a frequent gcc warning shows: drivers/video/fbdev/auo_k190x.c:859:12: warning: 'auok190x_suspend' defined but not used drivers/video/fbdev/auo_k190x.c:899:12: warning: 'auok190x_resume' defined but not used This changes the driver to remove the #ifdef and instead mark the functions as __maybe_unused, which is a nicer anyway, as it provides build testing for all the code in all configurations and is harder to get wrong. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * fbdev: sis: enforce selection of at least one backendArnd Bergmann2015-12-151-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The sis framebuffer driver complains with a compile-time warning if neither the FB_SIS_300 nor FB_SIS_315 symbols are selected: drivers/video/fbdev/sis/sis_main.c:61:2: warning: #warning Neither CONFIG_FB_SIS_300 nor CONFIG_FB_SIS_315 is se This is reasonable because it doesn't work in that case, but it's also annoying for randconfig builds and is one of the most common warnings I'm seeing on ARM now. This changes the Kconfig logic to prevent the silly configuration, by always selecting the FB_SIS_300 variant if the other one is not set. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * fbdev: Remove unused SH-Mobile HDMI driverGeert Uytterhoeven2015-12-153-1500/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | As of commit 44d88c754e57a6d9 ("ARM: shmobile: Remove legacy SoC code for R-Mobile A1"), the SH-Mobile HDMI driver is no longer used. In theory it could still be used on R-Mobile A1 SoCs, but that requires adding DT support to the driver, which is not planned. Remove the driver, it can be resurrected from git history when needed. Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Acked-by: Simon Horman <horms+renesas@verge.net.au> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>