aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
* drm: etnaviv: clean up submit_bo()Russell King2016-03-07
| | | | | | | | | | As we now store the etnaviv_vram_mapping, we no longer need to store the iova itself: we can get this directly from the mapping structure. Arrange for submit_bo() to return a pointer to etnaviv_gem_submit_bo, and directly access mapping->iova when applying relocations. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
* drm: etnaviv: clean up vram_mapping submission/retire pathRussell King2016-03-07
| | | | | | | | | | Currently, we scan the list of mappings each time we want to operate on the vram_mapping struct. Rather than repeatedly scanning these, look them up once in the submission path, and then use _reference and _unreference methods as necessary to manage this object. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
* drm: etnaviv: improve readability of command insertion to ring bufferRussell King2016-03-07
| | | | | | | | | | | | | | | Improve the readibility of the function which inserts command buffers and other maintanence commands into the GPUs ring buffer. We do this by splitting the ring buffer reservation in two: one chunk for any commands that need to be issued prior to the command buffer, and a separate chunk for commands issued after the buffer. The result is a much more obvious code flow in this function, and localisation of the conditional maintanence commands prior to the command buffer. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
* drm: etnaviv: clean up GPU command submissionRussell King2016-03-07
| | | | | | | | Clean up the GPU command submission path to prepare for the next change. This makes the next change easier to read and understand. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
* drm: etnaviv: use previous GPU pipe state when pipe switchingRussell King2016-03-07
| | | | | | | | | | Use the previous GPU pipe state when deciding which GPU caches should be flushed prior to switching the current pipe. This avoids infering what the previously selected pipe was, and potentially flushing the wrong caches. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
* drm: etnaviv: flush all GPU caches when stopping GPURussell King2016-03-07
| | | | | | | | Flush the GPU caches to ensure that any dirty data is pushed out before stopping the front end. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
* drm: etnaviv: track current execution stateRussell King2016-03-07
| | | | | | | Add tracking of the current execution state (iow, active GPU pipe). Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
* drm: etnaviv: extract arming of semaphoreRussell King2016-03-07
| | | | | | | Extract out the arming of a semaphore from the pipe select code. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
* drm: etnaviv: extract replacement of WAIT commandRussell King2016-03-07
| | | | | | | Extract out the replacement of the WAIT command with some other command. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
* drm: etnaviv: extract command ring reservationRussell King2016-03-07
| | | | | | | | | Provide a helper etnaviv_buffer_reserve() to ensure that we can fit a set of commands into the ring buffer without wrapping by moving code out of etnaviv_buffer_queue(). Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
* drm/etnaviv: move GPU linear window to end of DMA windowLucas Stach2016-03-07
| | | | | | | | | | | | | If the end of the system DMA window is farther away from the start of physical RAM than the size of the GPU linear window, move the linear window so that it ends at the same address than the system DMA window. This allows to map command buffer from CMA, which is likely to reside at the end of the system DMA window, while also overlapping as much RAM as possible, in order to optimize regular buffer mappings through the linear window. Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
* drm/etnaviv: move runtime PM balance into retire workerLucas Stach2016-03-07
| | | | | | | | | | | | | | | | The retire worker is kicked for each fence, either the normal way by signaling the fence from the event completion interrupt or by the recover worker if the GPU got stuck. Moving the RPM put into the retire worker allows us to have it in a single place for both cases. This also shaves off quite a bit of the CPU time spent in hardirq context, as arming the autosuspend timer when the RPM refcount drops to 0 is a relatively costly operation. Tested-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
* Merge tag 'omapdrm-4.6' of ↵Dave Airlie2016-03-04
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux into drm-next omapdrm changes for v4.6 * HDMI interlace output support * DMAbuf import support * Big refactoring leading to removal of legacy code * Various non-critical fixes * tag 'omapdrm-4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux: (76 commits) drm/omap: no need to select OMAP2_DSS drm/omap: gem: Fix omap_gem_new() error path drm/omap: remove -Werror from Makefile drm/omap: remove dispc_ovl_check() drm/omap: remove dss compat code drm/omap: remove last uses of omap_overlay_manager drm/omap: DSI: remove uses of omap_overlay_manager drm/omap: VENC: remove uses of omap_overlay_manager drm/omap: SDI: remove uses of omap_overlay_manager drm/omap: HDMI4: remove uses of omap_overlay_manager drm/omap: HDMI5: remove uses of omap_overlay_manager drm/omap: DPI: remove uses of omap_overlay_manager drm/omap: remove extra manager checks on disconnect drm/omap: remove extra check in dpi and sdi drm/omap: convert dss_mgr_unregister_framedone_handler to accept omap_channel drm/omap: convert dss_mgr_register_framedone_handler to accept omap_channel drm/omap: convert dss_mgr_start_update to accept omap_channel drm/omap: convert dss_mgr_disable to accept omap_channel drm/omap: convert dss_mgr_enable to accept omap_channel drm/omap: convert dss_mgr_set_lcd_config to accept omap_channel ...
| * drm/omap: no need to select OMAP2_DSSTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | omapdss driver now depends on omapdrm, so we no longer should select OMAP2_DSS from omapdrm's Kconfig. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: gem: Fix omap_gem_new() error pathLaurent Pinchart2016-03-03
| | | | | | | | | | | | | | | | | | | | | | When an error occurs in omap_gem_new() the function calls omap_gem_free_object() to clean up. However, that function expects to be called on a fully initialized GEM object and thus crashes. Replace it by manual cleanup. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: remove -Werror from MakefileTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | Having -Werror in the omapdrm Makefile makes development and debugging a PITA. Let's remove it. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: remove dispc_ovl_check()Tomi Valkeinen2016-03-03
| | | | | | | | | | | | dispc_ovl_check() is not used anywhere, so it can be removed. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: remove dss compat codeTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | | | We have removed all the uses of compat code from omapdrm and the non-compat parts of omapdss, so now we can remove all the compat code itself. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: remove last uses of omap_overlay_managerTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | We have now removed all uses of 'struct omap_overlay_manager', so we can now remove the last places where it is set. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: DSI: remove uses of omap_overlay_managerTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | We are removing the uses of 'struct omap_overlay_manager'. This patch changes DSI driver to use 'omap_channel' instead. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: VENC: remove uses of omap_overlay_managerTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | We are removing the uses of 'struct omap_overlay_manager'. This patch changes VENC driver to use 'omap_channel' instead. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: SDI: remove uses of omap_overlay_managerTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | We are removing the uses of 'struct omap_overlay_manager'. This patch changes SDI driver to use 'omap_channel' instead. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: HDMI4: remove uses of omap_overlay_managerTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | We are removing the uses of 'struct omap_overlay_manager'. This patch changes HDMI4 driver to use 'omap_channel' instead. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: HDMI5: remove uses of omap_overlay_managerTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | We are removing the uses of 'struct omap_overlay_manager'. This patch changes HDMI5 driver to use 'omap_channel' instead. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: DPI: remove uses of omap_overlay_managerTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | We are removing the uses of 'struct omap_overlay_manager'. This patch changes DPI driver to use 'omap_channel' instead. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: remove extra manager checks on disconnectTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | | | The DSS output drivers check 'dssdev->manager' in disconnect() functions. This check is not needed as the manager must always be set if the output device was connected. Remove the check. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: remove extra check in dpi and sdiTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | | | Both dpi and sdi check for 'mgr != NULL' in check_timings. This check is not necessary, as mgr must always be set before check_timings. Remove the check. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: convert dss_mgr_unregister_framedone_handler to accept omap_channelTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | | | We are removing uses of 'struct omap_overlay_manager'. This patch changes dss_mgr_unregister_framedone_handler() to accept 'enum omap_channel' instead of 'struct omap_overlay_manager'. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: convert dss_mgr_register_framedone_handler to accept omap_channelTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | | | We are removing uses of 'struct omap_overlay_manager'. This patch changes dss_mgr_register_framedone_handler() to accept 'enum omap_channel' instead of 'struct omap_overlay_manager'. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: convert dss_mgr_start_update to accept omap_channelTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | | | We are removing uses of 'struct omap_overlay_manager'. This patch changes dss_mgr_start_update() to accept 'enum omap_channel' instead of 'struct omap_overlay_manager'. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: convert dss_mgr_disable to accept omap_channelTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | | | We are removing uses of 'struct omap_overlay_manager'. This patch changes dss_mgr_disable() to accept 'enum omap_channel' instead of 'struct omap_overlay_manager'. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: convert dss_mgr_enable to accept omap_channelTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | | | We are removing uses of 'struct omap_overlay_manager'. This patch changes dss_mgr_enable() to accept 'enum omap_channel' instead of 'struct omap_overlay_manager'. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: convert dss_mgr_set_lcd_config to accept omap_channelTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | | | We are removing uses of 'struct omap_overlay_manager'. This patch changes dss_mgr_set_lcd_config() to accept 'enum omap_channel' instead of 'struct omap_overlay_manager'. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: convert dss_mgr_set_timings to accept omap_channelTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | | | We are removing uses of 'struct omap_overlay_manager'. This patch changes dss_mgr_set_timings() to accept 'enum omap_channel' instead of 'struct omap_overlay_manager'. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: convert dss_mgr_disconnect to accept omap_channelTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | | | We are removing uses of 'struct omap_overlay_manager'. This patch changes dss_mgr_disconnect() to accept 'enum omap_channel' instead of 'struct omap_overlay_manager'. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: convert dss_mgr_connect to accept omap_channelTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | | | We are removing uses of 'struct omap_overlay_manager'. This patch changes dss_mgr_connect() to accept 'enum omap_channel' instead of 'struct omap_overlay_manager'. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: use dispc_channel_connected in output driversTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | Use 'out->dispc_channel_connected' to check if the device is connected to an overlay manager or not, instead of using 'out->manager'. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: add dispc_channel_connected field to omap_dss_deviceTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | | | | | | | | | | | We want to remove the 'struct omap_overlay_manager' from omap_dss_device. At the moment that field is used, among some other uses, to see if the omap_dss_device is connected to an overlay manager. To make it possible to remove the 'struct omap_overlay_manager' field, this patch adds 'bool dispc_channel_connected' field to track the connected-or-not status. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: convert dss_mgr_ops to use omap_channelTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | | | | | | | | | We are removing the use of 'struct omap_overlay_manager' from omapdrm. This patch changes the function pointers in 'dss_mgr_ops' to get 'enum omap_channel' parameter instead of 'struct omap_overlay_manager'. The change is very straightforward, as we still use 'struct omap_overlay_manager' inside the function implementations where needed. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: remove use of omapdss_find_mgr_from_display()Tomi Valkeinen2016-03-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In order to remove uses of 'struct omap_overlay_manager' we need to get rid of using omapdss_find_mgr_from_display() when initializing omapdrm. Instead of using omapdss_find_mgr_from_display() and mgr->id to find the dispc channel used for the given display, we can instead use omapdss_find_output_from_display(), and get the output->dispc_channel from there. We can also remove omapdss_find_mgr_from_display() as it's no longer used. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: remove crtc->mgr fieldTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In order to remove uses of 'struct omap_overlay_manager' from omapdrm, this patch removes the crtc->mgr field. To accomplish that, a new static array is added along the current 'omap_crtcs' static array, which is used to store the output device connected to a crtc. Optimally we'd use the struct omap_crtc to store this information, but at the time when omap_crtc_dss_connect() is called, we don't yet have the omap_crtc instances. This might possibly be fixed later, but for now the static array does the job. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: Add dispc_mgr_get_supported_outputs()Tomi Valkeinen2016-03-03
| | | | | | | | | | | | | | | | | | | | | | | | We are removing the use of the 'struct omap_overlay_manager' from omapdrm, and one part of that is removing the use of mgr->supported_outputs field. This patch adds dispc_mgr_get_supported_outputs() function which can be used instead of mgr->supported_outputs. omap_crtc.c is changed to use the new function. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: move dss_mgr_* declarations to omapdrm/omapfbTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | | | This patch continues the work to create private versions of the omapdss.h header for omapdrm and omapfb. This one moves the dss_mgr_* function declarations. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: move struct dss_mgr_ops to omapdrm/omapfbTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | This patch continues the work to create private versions of the omapdss.h header for omapdrm and omapfb. This one moves 'struct dss_mgr_ops'. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap, omapfb: move exported dispc function declarations to omapdrm/omapfbTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | omapdrm and omapfb still share the same include/video/omapdss.h. We need to change that so that we can proceed with omapdrm work. However, it's not trivial to make separate omapfb and omapdrm versions of omapdss.h, as that file is also included in other places like arch code, audio code and omap_vout code. So we'll do it piece by piece. This patch makes private versions of all the dispc function declarations that are in omapdss.h. For omapdrm we create a new file, drivers/gpu/drm/omapdrm/dss/omapdss.h, which will contain headers meant to be visible outside omapdss. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: panel-tpo-td043mtea1: remove pdata supportTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | We no longer have any boards that require the platform data support from the panel, so we can remove the related code. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: panel-tpo-td028ttec1: remove pdata supportTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | We no longer have any boards that require the platform data support from the panel, so we can remove the related code. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: panel-nec-nl8048hl11: remove pdata supportTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | We no longer have any boards that require the platform data support from the panel, so we can remove the related code. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: panel-sharp-ls037v7dw01: remove pdata supportTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | We no longer have any boards that require the platform data support from the panel, so we can remove the related code. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| * drm/omap: panel-lgphilips-lb035q02: remove pdata supportTomi Valkeinen2016-03-03
| | | | | | | | | | | | | | We no longer have any boards that require the platform data support from the panel, so we can remove the related code. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>