Peter Ujfalusi
fe70cd7667
drm/omap: HDMI5: Use pointer to cfg->v_fc_config.timings in hdmi_core_video_config
...
By using a pointer to the omap_mode_timings struct we can unwrap lines to
make the code easier to follow.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
2016-11-02 10:48:18 +02:00
Peter Ujfalusi
458540c606
drm/omap: omap_display_timings: rename vbp to vback_porch
...
In preparation to move the stack to use the generic videmode struct for
display timing information rename the vbp member to vback_porch.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
2016-11-02 10:48:18 +02:00
Peter Ujfalusi
0996c68e1b
drm/omap: omap_display_timings: rename vfp to vfront_porch
...
In preparation to move the stack to use the generic videmode struct for
display timing information rename the vfp member to vfront_porch.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
2016-11-02 10:48:18 +02:00
Peter Ujfalusi
d5bcf0aa3f
drm/omap: omap_display_timings: rename vsw to vsync_len
...
In preparation to move the stack to use the generic videmode struct for
display timing information rename the vsw member to vsync_len.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
2016-11-02 10:48:18 +02:00
Peter Ujfalusi
a85f4a8078
drm/omap: omap_display_timings: rename hbp to hback_porch
...
In preparation to move the stack to use the generic videmode struct for
display timing information rename the hbp member to hback_porch.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
2016-11-02 10:48:18 +02:00
Peter Ujfalusi
0a30e150f0
drm/omap: omap_display_timings: rename hfp to hfront_porch
...
In preparation to move the stack to use the generic videmode struct for
display timing information rename the hfp member to hfront_porch.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
2016-11-02 10:48:18 +02:00
Peter Ujfalusi
4dc2250d7d
drm/omap: omap_display_timings: rename hsw to hsync_len
...
In preparation to move the stack to use the generic videmode struct for
display timing information rename the hsw member to hsync_len.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
2016-11-02 10:48:18 +02:00
Peter Ujfalusi
fb7f3c4399
drm/omap: omap_display_timings: rename y_res to vactive
...
In preparation to move the stack to use the generic videmode struct for
display timing information rename the y_res member to vactive.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
2016-11-02 10:48:18 +02:00
Peter Ujfalusi
81899060de
drm/omap: omap_display_timings: rename x_res to hactive
...
In preparation to move the stack to use the generic videmode struct for
display timing information rename the x_res member to hactive.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
2016-11-02 10:48:18 +02:00
Wei Yongjun
bda63d5c70
drm/omap: fix return value check in dsi_bind()
...
Fix the retrn value check which testing the wrong variable
in dsi_bind().
Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com >
Reviewed-by: Peter Ujfalusi <peter.ujfalusi@ti.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
2016-11-02 10:38:28 +02:00
Peter Ujfalusi
6cb096562e
drm/omap: omap_gem: Do not try to unmap page which is not mapped
...
It might be possible that the page has been unmapped already in
omap_gem_cpu_sync() so check before calling dma_unmap_page().
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
2016-11-02 10:38:28 +02:00
Jyri Sarha
a7e8cd39af
drm/omapdrm: Remove double gamma table write in omap_crtc_atomic_flush()
...
Remove double gamma table write in omap_crtc_atomic_flush().
Fixes commit 492a426a2f
("drm/omapdrm: Implement gamma_lut atomic crtc properties")
Signed-off-by: Jyri Sarha <jsarha@ti.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
2016-11-02 10:38:28 +02:00
Andrew F. Davis
0cac5b61ff
drm/omap: remove unneeded conversions to bool
...
Found with scripts/coccinelle/misc/boolconv.cocci.
Signed-off-by: Andrew F. Davis <afd@ti.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
2016-11-02 10:38:28 +02:00
Tomi Valkeinen
cfb73f202d
drm/omap: print error instead of WARN() if plane setup fails
...
omap_plane_atomic_update() does WARN_ON() if dispc rejects the given
plane config. Change that to dev_err() to lessen the possible spam.
To fix this correctly, the plane setup needs much more work by creating
a check function for dispc setup, so that we could reliably check the
config in atomic_check, instead of only noticing the problem when
programming dispc.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
2016-11-02 10:38:28 +02:00
Tomi Valkeinen
70dd2a62aa
drm/omap: cleanup omap_plane_atomic_check()
...
Clean up omap_plane_atomic_check() with:
- Check state->fb first. If no fb, return 0.
- use drm_atomic_get_existing_crtc_state() instead of
drm_atomic_get_crtc_state()
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
2016-11-02 10:38:28 +02:00
Tomi Valkeinen
aaf7642e98
drm/omap: fix plane check when crtc is disabled
...
I sometimes see:
[drm:drm_framebuffer_remove [drm]] *ERROR* failed to reset crtc ed2a6c00
when fb was deleted: -22
which comes from drm_framebuffer_remove() when it's disabling the crtc
with zeroed drm_mode_set.
The problem in omap_plane_atomic_check() is that it will use those
zeroed fields to verify if the setup is correct.
This patch makes omap_plane_atomic_check() return 0 if the crtc is
disabled.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
2016-11-02 10:38:28 +02:00
Ander Conselvan de Oliveira
0a379e27db
drm/i915/bxt: Don't set OCL2_LDOFUSE_PWR_DIS bit in phy init sequence
...
Hardware engineers confirmed that writing to it has no effect, as implied
by the FIXME comment.
v2: Also remove comment from bxt_ddi_phy_verify_state(). (Imre)
Cc: Imre Deak <imre.deak@intel.com >
Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com >
Reviewed-by: Imre Deak <imre.deak@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1478069096-11209-1-git-send-email-ander.conselvan.de.oliveira@intel.com
2016-11-02 09:35:47 +02:00
Russell King
f0b24871cc
drm/armada: use common helper for plane base address
...
Use a common helper to calculate the plane base address(es) for the
framebuffer.
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk >
2016-11-01 20:06:55 +00:00
Russell King
2925db0817
drm/armada: move setting primary plane position to armada_drm_primary_set()
...
Move the setting of the primary plane position into
armada_drm_primary_set() rather than the initialisation function.
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk >
2016-11-01 20:06:55 +00:00
Russell King
37af35c778
drm/armada: split out primary plane update
...
Split out the primary plane update from the mode setting.
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk >
2016-11-01 20:06:54 +00:00
Russell King
8be523db65
drm/armada: move plane state to struct armada_plane
...
Move more of the Armada plane state (source size, and displayed size and
position) into a state structure inside struct armada_plane.
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk >
2016-11-01 20:06:54 +00:00
Russell King
ec6fb1590a
drm/armada: clean up armada_drm_plane_work_run()
...
Make armada_drm_plane_work_run() take the drm_plane pointer rather than
our private pointer. This allows us to localise the conversion between
these two pointers inside armada_drm_plane_work_run(), rather than at
every call site.
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk >
2016-11-01 20:06:54 +00:00
Russell King
c8a220c686
drm/armada: add tracing support
...
Add tracing support to the Armada video overlay and interrupt code.
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk >
2016-11-01 20:06:54 +00:00
Tvrtko Ursulin
3599a91cc8
drm/i915: Allow shrinking of userptr objects once again
...
Commit 1bec9b0bda
("drm/i915/shrinker: Only shmemfs objects
are backed by swap") stopped considering the userptr objects
in shrinker callbacks.
Restore that so idle userptr objects can be discarded in order
to free up memory.
One change further to what was introduced in 1bec9b0bda
is
to start considering userptr objects in oom but that should
also be a correct thing to do.
v2: Introduce I915_GEM_OBJECT_IS_SHRINKABLE. (Chris Wilson)
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com >
Fixes: 1bec9b0bda
("drm/i915/shrinker: Only shmemfs objects are backed by swap")
Cc: Chris Wilson <chris@chris-wilson.co.uk >
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com >
Cc: Mika Kuoppala <mika.kuoppala@intel.com >
Cc: <stable@vger.kernel.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1478011450-6634-1-git-send-email-tvrtko.ursulin@linux.intel.com
2016-11-01 16:35:26 +00:00
Ville Syrjälä
62d75df7b0
drm/i915: Pass dev_priv to intel_init_pm()
...
Unify our approach to things by passing around dev_priv instead of dev.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-27-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00
Ville Syrjälä
bb7265197a
drm/i915: Pass dev_priv to ilk_setup_wm_latency() & co.
...
Unify our approach to things by passing around dev_priv instead of dev.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-26-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00
Ville Syrjälä
712bf36449
drm/i915: Pass dev_priv to intel_suspend_hw()
...
Unify our approach to things by passing around dev_priv instead of dev.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-25-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00
Ville Syrjälä
46f16e631a
drm/i915: Pass dev_priv to init_clock_gating
...
Unify our approach to things by passing around dev_priv instead of dev.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-24-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00
Ville Syrjälä
ffc7a76b8b
drm/i915: Pass dev_priv to single_enabled_crtc()
...
Unify our approach to things by passing around dev_priv instead of dev.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-23-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00
Ville Syrjälä
a9097be4f9
drm/i915: Pass dev_priv to rest of IS_FOO() macros for the old platforms
...
Unify our approach to things by passing around dev_priv instead of dev.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-22-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00
Ville Syrjälä
a26e523921
drm/i915: Pass dev_priv to IS_BROADWATER/IS_CRESTLINE
...
Unify our approach to things by passing around dev_priv instead of dev.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-21-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00
Ville Syrjälä
03427fcb75
drm/i915: Pass dev_priv to HAS_FW_BLC
...
Unify our approach to things by passing around dev_priv instead of dev.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-20-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00
Ville Syrjälä
ef0f5e93bd
drm/i915: Pass dev_priv to .get_fifo_size()
...
Unify our approach to things by passing around dev_priv instead of dev.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-19-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00
Ville Syrjälä
148ac1f375
drm/i915: Pass dev_priv to i915_pineview_get_mem_freq() and i915_ironlake_get_mem_freq()
...
Unify our approach to things by passing around dev_priv instead of dev.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-18-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00
Ville Syrjälä
9b1e14f4d8
drm/i915: Pass dev_priv to IS_PINEVIEW()
...
Unify our approach to things by passing around dev_priv instead of dev.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-17-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00
Ville Syrjälä
646d577209
drm/i915: Pass dev_priv to IS_MOBILE()
...
Unify our approach to things by passing around dev_priv instead of dev.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-16-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00
Ville Syrjälä
1353c4fb18
drm/i915: Pass dev_priv to .get_display_clock_speed()
...
Unify our approach to things by passing around dev_priv instead of dev.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-15-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00
Ville Syrjälä
4c75b9405e
drm/i915: Pass dev_priv to cdclk update funcs
...
Unify our approach to things by passing around dev_priv instead of dev.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-14-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00
Ville Syrjälä
5ab0d85b6b
drm/i915: Pass dev_priv to intel_crtc_init()
...
Unify our approach to things by passing around dev_priv instead of dev.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-13-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00
Ville Syrjälä
98187836fc
drm/i915: Always use intel_get_crtc_for_pipe()
...
Replace the open coded dev_priv->pipe_to_crtc_mapping[] usage with
intel_get_crtc_for_pipe().
Mostly done with coccinelle, with a few manual tweaks
@@
expression E1, E2;
@@
(
- E1->pipe_to_crtc_mapping[E2]
+ intel_get_crtc_for_pipe(E1, E2)
|
- E1->plane_to_crtc_mapping[E2]
+ intel_get_crtc_for_plane(E1, E2)
)
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-12-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00
Ville Syrjälä
b91eb5cce6
drm/i915: Pass dev_priv to intel_get_crtc_for_pipe()
...
Unify our approach to things by passing around dev_priv instead of dev.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-11-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00
Ville Syrjälä
f0ce231040
drm/i915: Pass dev_priv to g4x wm functions
...
Unify our approach to things by passing around dev_priv instead of dev.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-10-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00
Ville Syrjälä
30ad9814d5
drm/i915: Pass dev_priv to vlv force pll functions
...
Unify our approach to things by passing around dev_priv instead of dev.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-9-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00
Ville Syrjälä
0f0f74bc83
drm/i915: Pass dev_priv to intel_wait_for_vblank()
...
Unify our approach to things by passing around dev_priv instead of dev.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-8-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00
Ville Syrjälä
e2af48c66b
drm/i915: Store struct intel_crtc * in {pipe,plane}_to_crtc_mapping[]
...
A lot of users of the {pipe,plane}_to_crtc_mapping[] will end up
casting the result to intel_crtc, so let's just store the intel_crtc
pointer in the first place.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-7-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00
Ville Syrjälä
efc2611e6e
drm/i915: Use struct intel_crtc in legacy platform wm code
...
Unify our approach to things by using intel_crtc instead of drm_crtc.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-6-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00
Ville Syrjälä
432081bcbf
drm/i915: Pass intel_crtc to update_wm functions
...
Unify our approach to things by passing around intel_crtc instead of
drm_crtc.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-5-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00
Ville Syrjälä
525b9311be
drm/i915: Pass intel_crtc to intel_crtc_active()
...
Unify our approach to things by passing around intel_crtc instead of
drm_crtc.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-4-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00
Ville Syrjälä
65edcccef3
drm/i915: Pass dev_priv to skl_init_scalers()
...
Unify our approach to things by passing around dev_priv instead of dev.
While at it let's do some house cleaning: s/intel_foo/foo/ and move
things into tighter scope.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-3-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00
Ville Syrjälä
580503c7c5
drm/i915: Pass dev_priv to plane constructors
...
Unify our approach to things by passing around dev_priv instead of dev.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1477946245-14134-2-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-11-01 16:40:38 +02:00