Liu Ying
c6c1f9bc79
drm/imx: Add active plane reconfiguration support
...
We don't support configuring active plane on-the-fly for imx-drm.
The relevant CRTC should be disabled before the plane configuration.
Of course, the plane itself should be disabled as well.
This patch adds active plane reconfiguration support by forcing CRTC
mode change and disabling-enabling plane in plane's ->atomic_update
callback.
Suggested-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Cc: David Airlie <airlied@linux.ie >
Cc: Russell King <linux@armlinux.org.uk >
Cc: Daniel Vetter <daniel.vetter@ffwll.ch >
Cc: Peter Senna Tschudin <peter.senna@gmail.com >
Signed-off-by: Liu Ying <gnuiyl@gmail.com >
Tested-by: Peter Senna Tschudin <peter.senna@gmail.com >
Tested-by: Lucas Stach <l.stach@pengutronix.de >
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de >
2016-08-29 16:21:18 +02:00
Daniel Vetter
c8458c7efd
drm/doc: Polish docs for drm_property&drm_property_blob
...
- remove kerneldoc for drm-internal functions
- drm_property_replace_global_blob isn't actually atomic, and doesn't
need to be. Update docs&comments to match
- document all the types and try to link things a bit better
- nits all over
v2: Appease checkpatch in the moved code (Archit)
Reviewed-by: Archit Taneja <architt@codeaurora.org >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20160829082757.17913-9-daniel.vetter@ffwll.ch
2016-08-29 15:37:49 +02:00
Daniel Vetter
77953bd136
drm: Unify handling of blob and object properties
...
They work exactly the same now, after the refcounting unification a bit
ago. The only reason they're distinct is backwards compat with existing
userspace.
Cc: Daniel Stone <daniels@collabora.com >
Reviewed-by: Archit Taneja <architt@codeaurora.org >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20160829082757.17913-8-daniel.vetter@ffwll.ch
2016-08-29 15:37:41 +02:00
Daniel Vetter
59e71ee746
drm: Extract drm_property.[hc]
...
This just contains the base property classes and all the code to
handle blobs. I think for any kind of standardized/shared properties
it's better to have separate files - this is fairly big already as-is.
v2: resurrect misplaced hunk (Daniel Stone)
Cc: Daniel Stone <daniel@fooishbar.org >
Reviewed-by: Archit Taneja <architt@codeaurora.org >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20160829082757.17913-7-daniel.vetter@ffwll.ch
2016-08-29 15:37:34 +02:00
Daniel Vetter
ec5e304747
drm: move drm_mode_legacy_fb_format to drm_fourcc.c
...
It's part of the drm fourcc handling code, mapping the old depth/bpp
values to new fourcc codes.
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Reviewed-by: Archit Taneja <architt@codeaurora.org >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20160829082757.17913-6-daniel.vetter@ffwll.ch
2016-08-29 15:37:28 +02:00
Daniel Vetter
a2511a557e
drm/doc: Polish docs for drm_mode_object
...
I figured an overview section here is overkill, and better
to just document the 2 structures themselves well enough.
v2: Review from Archit:
- Appease checkpatch in moved code.
- Spelling fixes in the kerneldoc.
Reviewed-by: Archit Taneja <architt@codeaurora.org >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20160829082757.17913-5-daniel.vetter@ffwll.ch
2016-08-29 15:37:23 +02:00
Daniel Vetter
f094d88195
drm: Remove drm_mode_object->atomic_count
...
It's only used in drm_mode_object_get_properties, and we can compute
it there directly with a bit of code shuffling.
Reviewed-by: Archit Taneja <architt@codeaurora.org >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20160829082757.17913-4-daniel.vetter@ffwll.ch
2016-08-29 15:37:18 +02:00
Daniel Vetter
949619f32e
drm: Extract drm_mode_object.[hc]
...
Just for the struct drm_mode_object base class. The header file was
already partially extracted to help untangle the include loops.
v2:
- Also move the generic get/set property ioctls. At first this seemed
like a bad idea since it requires making drm_mode_crtc_set_obj_prop
non-static. But eventually that will get split away too (like
the connector version already is) for both crtc and planes. Hence I
reconsidered.
- drm_mode_object.[hc] instead of drm_modeset.[hc], which requires
renaming the drm_modeset.h header I already started building up.
This is more consistent (matches the name of the main structure),
and I want to be able to use drm_modeset.[hc] for the basic modeset
init/cleanup functionality like drm_mode_config_init.
Reviewed-by: Archit Taneja <architt@codeaurora.org >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20160829082757.17913-3-daniel.vetter@ffwll.ch
2016-08-29 15:37:13 +02:00
Daniel Vetter
e03e6de03e
drm/doc: Polish kerneldoc for encoders
...
- Move missing bits into struct drm_encoder docs.
- Explain that encoders are 95% internal and only 5% uapi, and that in
general the uapi part is broken.
- Remove verbose comments for functions not exposed to drivers.
v2: Review from Archit:
- Appease checkpatch in the moved code.
- Make it clearer that bridges are not exposed to userspace.
Reviewed-by: Archit Taneja <architt@codeaurora.org >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20160829082757.17913-2-daniel.vetter@ffwll.ch
2016-08-29 15:37:08 +02:00
Daniel Vetter
321a95ae35
drm: Extract drm_encoder.[hc]
...
Same treatment as before. Only hiccup is drm_crtc_mask, which
unfortunately can't be resolved until drm_crtc.h is less of a monster.
Untangle the header loop with a forward declaration for that static
inline.
Reviewed-by: Archit Taneja <architt@codeaurora.org >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20160829082757.17913-1-daniel.vetter@ffwll.ch
2016-08-29 15:37:03 +02:00
Jani Nikula
46e69f3982
drm/i915/backlight: handle enabled but zero duty cycle at module load
...
Don't consider enabled but zero duty cycle backlight disabled. Clamp
level between min and max for sanity.
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1471939811-9817-1-git-send-email-maarten.lankhorst@linux.intel.com
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
2016-08-29 13:59:05 +02:00
Maarten Lankhorst
ce5e2ac1a4
drm/i915: Fix intel_display_crc_init for !DEBUGFS
...
The mentioned commit changes intel_display_crc_init to take a dev_priv,
but forgets to change the stub.
Cc: David Weinehall <david.weinehall@linux.intel.com >
Fixes: 36cdd0138b
("drm/i915: debugfs spring cleaning")
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Reported-and-by: Kim Lidström <kim@dxtr.im >
Link: http://patchwork.freedesktop.org/patch/msgid/1472116022-17598-1-git-send-email-maarten.lankhorst@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
Reviewed-by: David Weinehall <david.weinehall@linux.intel.com >
2016-08-29 13:58:21 +02:00
Maarten Lankhorst
e896402c37
drm/i915: Add missing parameter to intel_dp_set_drrs_state documentation.
...
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1472116022-17598-2-git-send-email-maarten.lankhorst@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-08-29 13:56:44 +02:00
Lucas Stach
a40e65b764
drm/imx: add exclusive fence to plane state
...
This allows the atomic helper to wait on them, instead of open-coding
the same in the imx-drm driver.
Signed-off-by: Lucas Stach <l.stach@pengutronix.de >
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de >
2016-08-29 12:45:05 +02:00
Lucas Stach
df4b2233ab
drm/imx: fold ipu_plane_disable into ipu_disable_plane
...
ipu_disable_plane is the only left caller of ipu_plane_disable.
Having those 2 similar named functions is confusing and superfluous,
so fold them into 1.
Signed-off-by: Lucas Stach <l.stach@pengutronix.de >
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de >
2016-08-29 12:45:05 +02:00
Lucas Stach
8e3b16e211
drm/imx: don't destroy mode objects manually on driver unbind
...
Instead let drm_mode_config_cleanup() do the work when taking down
the master device. This requires all cleanup functions to be
properly hooked up to the mode object .destroy callback.
Signed-off-by: Lucas Stach <l.stach@pengutronix.de >
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de >
2016-08-29 12:45:05 +02:00
Lucas Stach
54db5decce
drm/imx: drop deprecated load/unload drm_driver ops
...
Drop the load/unload driver ops, as they are deprecated because of their
inherent races, with devices being visible to userspace before they are
fully initialized.
Move this code into the driver bind/unbind routines bracketed by the
proper drm_dev_alloc/register and drm_dev_unregister/unref calls.
Signed-off-by: Lucas Stach <l.stach@pengutronix.de >
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de >
2016-08-29 12:45:05 +02:00
Lucas Stach
73cde76a61
drm/imx: don't call disable_plane in plane destroy path
...
When the destroy path is called the plane should already be
disabled. If not, this is a core bug and should not be worked
around in the driver.
Signed-off-by: Lucas Stach <l.stach@pengutronix.de >
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de >
2016-08-29 12:45:05 +02:00
Liu Ying
1780999ced
drm/imx: Add active plane reconfiguration support
...
We don't support configuring active plane on-the-fly for imx-drm.
The relevant CRTC should be disabled before the plane configuration.
Of course, the plane itself should be disabled as well.
This patch adds active plane reconfiguration support by forcing CRTC
mode change in plane's ->atomic_check callback so that the CRTC
will be disabled before the plane configuration.
Suggested-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Cc: David Airlie <airlied@linux.ie >
Cc: Russell King <linux@armlinux.org.uk >
Cc: Peter Senna Tschudin <peter.senna@gmail.com >
Cc: Lucas Stach <l.stach@pengutronix.de >
Signed-off-by: Liu Ying <gnuiyl@gmail.com >
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de >
2016-08-29 12:45:05 +02:00
Liu Ying
5f4df0c769
drm/imx: Use DRM_PLANE_COMMIT_NO_DISABLE_AFTER_MODESET flag
...
The IPUv3 display controller behind imx-drm needs all planes of
a CRTC be disabled when the CRTC is disabled.
The DRM_PLANE_COMMIT_NO_DISABLE_AFTER_MODESET flag reflects this
hardware requirement. Let's use the flag for imx-drm.
Suggested-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Cc: David Airlie <airlied@linux.ie >
Cc: Russell King <linux@armlinux.org.uk >
Cc: Peter Senna Tschudin <peter.senna@gmail.com >
Cc: Lucas Stach <l.stach@pengutronix.de >
Signed-off-by: Liu Ying <gnuiyl@gmail.com >
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de >
2016-08-29 12:45:05 +02:00
Liu Ying
8cc17b59b0
drm/imx: ipuv3-crtc: Use the callback ->atomic_disable instead of ->disable
...
Now that the drm atomic core supports the callback ->atomic_disable,
we may replace the legacy one ->disable with it.
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Cc: David Airlie <airlied@linux.ie >
Cc: Russell King <linux@armlinux.org.uk >
Cc: Daniel Vetter <daniel.vetter@ffwll.ch >
Cc: Peter Senna Tschudin <peter.senna@gmail.com >
Cc: Lucas Stach <l.stach@pengutronix.de >
Signed-off-by: Liu Ying <gnuiyl@gmail.com >
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de >
2016-08-29 12:45:05 +02:00
Liu Ying
2b58e98d42
drm/atomic-helper: Add NO_DISABLE_AFTER_MODESET flag support for plane commit
...
Drivers may set the NO_DISABLE_AFTER_MODESET flag in the 'flags' parameter
of the helper drm_atomic_helper_commit_planes() if the relevant display
controllers(e.g., IPUv3 for imx-drm) require to disable a CRTC's planes
when the CRTC is disabled. The helper would skip the ->atomic_disable
call for a plane if the CRTC of the old plane state needs a modesetting
operation. Of course, the drivers need to disable the planes in their CRTC
disable callbacks since no one else would do that.
Suggested-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Cc: David Airlie <airlied@linux.ie >
Cc: Russell King <linux@armlinux.org.uk >
Cc: Peter Senna Tschudin <peter.senna@gmail.com >
Cc: Lucas Stach <l.stach@pengutronix.de >
Signed-off-by: Liu Ying <gnuiyl@gmail.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/1472461923-14364-1-git-send-email-gnuiyl@gmail.com
2016-08-29 11:29:37 +02:00
Chris Wilson
8a07fed44b
drm/i915/dvo: Remove dangling call to drm_encoder_cleanup()
...
If we hit the error path, we have never called drm_encoder_init() and so
have nothing to cleanup. Doing so hits a null dereference:
[ 10.066261] BUG: unable to handle kernel NULL pointer dereference at 00000104
[ 10.066273] IP: [<c16054b4>] mutex_lock+0xa/0x15
[ 10.066287] *pde = 00000000
[ 10.066295] Oops: 0002 [#1 ]
[ 10.066302] Modules linked in: i915(+) video i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm iTCO_wdt iTCO_vendor_support ppdev evdev snd_intel8x0 snd_ac97_codec ac97_bus psmouse snd_pcm snd_timer snd pcspkr uhci_hcd ehci_pci soundcore sr_mod ehci_hcd serio_raw i2c_i801 usbcore i2c_smbus cdrom lpc_ich mfd_core rng_core e100 mii floppy parport_pc parport acpi_cpufreq button processor usb_common eeprom lm85 hwmon_vid autofs4
[ 10.066378] CPU: 0 PID: 132 Comm: systemd-udevd Not tainted 4.8.0-rc3-00013-gef0e1ea #34
[ 10.066389] Hardware name: MicroLink /D865GLC , BIOS BF86510A.86A.0077.P25.0508040031 08/04/2005
[ 10.066401] task: f62db800 task.stack: f5970000
[ 10.066409] EIP: 0060:[<c16054b4>] EFLAGS: 00010286 CPU: 0
[ 10.066417] EIP is at mutex_lock+0xa/0x15
[ 10.066424] EAX: 00000104 EBX: 00000104 ECX: 00000000 EDX: 80000000
[ 10.066432] ESI: 00000000 EDI: 00000104 EBP: f5be8000 ESP: f5971b58
[ 10.066439] DS: 007b ES: 007b FS: 0000 GS: 00e0 SS: 0068
[ 10.066446] CR0: 80050033 CR2: 00000104 CR3: 35945000 CR4: 000006d0
[ 10.066453] Stack:
[ 10.066459] f503d740 f824dddf 00000000 f61170c0 f61170c0 f82371ae f850f40e 00000001
[ 10.066476] f61170c0 f5971bcc f5be8000 f9c2d401 00000001 f8236fcc 00000001 00000000
[ 10.066491] f5144014 f5be8104 00000008 f9c5267c 00000007 f61170c0 f5144400 f9c4ff00
[ 10.066507] Call Trace:
[ 10.066526] [<f824dddf>] ? drm_modeset_lock_all+0x27/0xb3 [drm]
[ 10.066545] [<f82371ae>] ? drm_encoder_cleanup+0x1a/0x132 [drm]
[ 10.066559] [<f850f40e>] ? drm_atomic_helper_connector_reset+0x3f/0x5c [drm_kms_helper]
[ 10.066644] [<f9c2d401>] ? intel_dvo_init+0x569/0x788 [i915]
[ 10.066663] [<f8236fcc>] ? drm_encoder_init+0x43/0x20b [drm]
[ 10.066734] [<f9bf1fce>] ? intel_modeset_init+0x1436/0x17dd [i915]
[ 10.066791] [<f9b37636>] ? i915_driver_load+0x85a/0x15d3 [i915]
[ 10.066846] [<f9b3603d>] ? i915_driver_open+0x5/0x5 [i915]
[ 10.066857] [<c14af4d0>] ? firmware_map_add_entry.part.2+0xc/0xc
[ 10.066868] [<c1343daf>] ? pci_device_probe+0x8e/0x11c
[ 10.066878] [<c140cec8>] ? driver_probe_device+0x1db/0x62e
[ 10.066888] [<c120c010>] ? kernfs_new_node+0x29/0x9c
[ 10.066897] [<c13438e0>] ? pci_match_device+0xd9/0x161
[ 10.066905] [<c120c48b>] ? kernfs_create_dir_ns+0x42/0x88
[ 10.066914] [<c140d401>] ? __driver_attach+0xe6/0x11b
[ 10.066924] [<c1303b13>] ? kobject_add_internal+0x1bb/0x44f
[ 10.066933] [<c140d31b>] ? driver_probe_device+0x62e/0x62e
[ 10.066941] [<c140a2d2>] ? bus_for_each_dev+0x46/0x7f
[ 10.066950] [<c140c502>] ? driver_attach+0x1a/0x34
[ 10.066958] [<c140d31b>] ? driver_probe_device+0x62e/0x62e
[ 10.066966] [<c140b758>] ? bus_add_driver+0x217/0x32a
[ 10.066975] [<f8403000>] ? 0xf8403000
[ 10.066982] [<c140de27>] ? driver_register+0x5f/0x108
[ 10.066991] [<c1000493>] ? do_one_initcall+0x49/0x1f6
[ 10.067000] [<c1082299>] ? pick_next_task_fair+0x14b/0x2a3
[ 10.067008] [<c1603c8d>] ? __schedule+0x15c/0x4fe
[ 10.067016] [<c1604104>] ? preempt_schedule_common+0x19/0x3c
[ 10.067027] [<c11051de>] ? do_init_module+0x17/0x230
[ 10.067035] [<c1604139>] ? _cond_resched+0x12/0x1a
[ 10.067044] [<c116f9aa>] ? kmem_cache_alloc+0x8f/0x11f
[ 10.067052] [<c11051de>] ? do_init_module+0x17/0x230
[ 10.067060] [<c11703dd>] ? kfree+0x137/0x203
[ 10.067068] [<c110523d>] ? do_init_module+0x76/0x230
[ 10.067078] [<c10cadf3>] ? load_module+0x2a39/0x333f
[ 10.067087] [<c10cb8b2>] ? SyS_finit_module+0x96/0xd5
[ 10.067096] [<c1132231>] ? vm_mmap_pgoff+0x79/0xa0
[ 10.067105] [<c1001e96>] ? do_fast_syscall_32+0xb5/0x1b0
[ 10.067114] [<c16086a6>] ? sysenter_past_esp+0x47/0x75
[ 10.067121] Code: c8 f7 76 c1 e8 8e cc d2 ff e9 45 fe ff ff 66 90 66 90 66 90 66 90 90 ff 00 7f 05 e8 4e 0c 00 00 c3 53 89 c3 e8 75 ec ff ff 89 d8 <ff> 08 79 05 e8 fa 0a 00 00 5b c3 53 89 c3 85 c0 74 1b 8b 03 83
[ 10.067180] EIP: [<c16054b4>] mutex_lock+0xa/0x15 SS:ESP 0068:f5971b58
[ 10.067190] CR2: 0000000000000104
[ 10.067222] ---[ end trace 049f1f09da45a856 ]---
Reported-by: Meelis Roos <mroos@linux.ee >
Fixes: 580d8ed522
("drm/i915: Give encoders useful names")
Reviewed-by: David Weinehall <david.weinehall@linux.intel.com >
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk >
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com >
Cc: drm-intel-fixes@lists.freedesktop.org
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20160823092558.14931-1-chris@chris-wilson.co.uk
(cherry picked from commit 8f76aa0ebe
)
2016-08-29 12:28:09 +03:00
Liu Ying
28500291c2
drm/atomic-helper: Disable appropriate planes in disable_planes_on_crtc()
...
Currently, the helper drm_atomic_helper_disable_planes_on_crtc() calls
->atomic_disable for all planes _to be_ enabled on a particular CRTC.
This is obviously wrong for those planes which are not scanning out frames
when the helper is called. Instead, it's sane to disable active planes
of old_crtc_state in the helper.
Suggested-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Cc: David Airlie <airlied@linux.ie >
Cc: Russell King <linux@armlinux.org.uk >
Cc: Peter Senna Tschudin <peter.senna@gmail.com >
Cc: Lucas Stach <l.stach@pengutronix.de >
Signed-off-by: Liu Ying <gnuiyl@gmail.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/1472196644-30563-3-git-send-email-gnuiyl@gmail.com
2016-08-29 10:22:05 +02:00
Liu Ying
c9ac8b4c5c
drm/atomic-helper: Add atomic_disable CRTC helper callback
...
Some display controllers need plane(s) to be disabled together with
the relevant CRTC, e.g., the IPUv3 display controller for imx-drm.
This patch adds atomic_disable CRTC helper callback so that
old_crtc_state(as a parameter of the callback) could be used
to get the active plane(s) of the old CRTC state for disable operation.
Suggested-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Cc: David Airlie <airlied@linux.ie >
Cc: Russell King <linux@armlinux.org.uk >
Cc: Peter Senna Tschudin <peter.senna@gmail.com >
Cc: Lucas Stach <l.stach@pengutronix.de >
Signed-off-by: Liu Ying <gnuiyl@gmail.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/1472196644-30563-2-git-send-email-gnuiyl@gmail.com
2016-08-29 10:21:52 +02:00
Jani Nikula
6720ce18d4
drm/i915: remove leftover for_each_intel_crtc_masked
...
The last user of for_each_intel_crtc_masked macro was removed in
commit 0a9ab303b8
Author: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com >
Date: Tue Apr 21 17:13:04 2015 +0300
drm/i915: Remove all *_pipes flags from modeset
Get rid of the unused macro.
Cc: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com >
Reviewed-by: Ander Conselvan de Oliveira <conselvan2@gmail.com >
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1472126651-13825-1-git-send-email-jani.nikula@intel.com
2016-08-29 09:50:54 +03:00
Andrea Merello
315486c665
drm: simple_kms_helper: add support for bridges
...
Introduce drm_simple_display_pipe_attach_bridge() and
drm_simple_display_pipe_detach_bridge() in order to make it possible to use
drm encoders with the simple display pipes managed by simple_kms_helpers
Suggested-by: Daniel Vetter <daniel@ffwll.ch >
Signed-off-by: Andrea Merello <andrea.merello@gmail.com >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Cc: Noralf Trønnes <noralf@tronnes.org >
Cc: Daniel Vetter <daniel@ffwll.ch >
Cc: David Airlie <airlied@linux.ie >
Signed-off-by: Archit Taneja <architt@codeaurora.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1472115874-6219-3-git-send-email-andrea.merello@gmail.com
2016-08-29 09:15:37 +05:30
Andrea Merello
4f993973d2
drm: simple_kms_helper: make connector optional at init time
...
drm_simple_display_pipe_init() pretends to attach a connector
to the display pipe.
In case a drm bridge has to be used, then it's the bridge that
takes care of connectors.
This patch makes the connector parameter optional for
drm_simple_display_pipe_init(), so that a drm bridge could
handle connector by itself later.
Signed-off-by: Andrea Merello <andrea.merello@gmail.com >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Cc: David Airlie <airlied@linux.ie >
Cc: Noralf Trønnes <noralf@tronnes.org >
Cc: Daniel Vetter <daniel@ffwll.ch >
Signed-off-by: Archit Taneja <architt@codeaurora.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1472115874-6219-2-git-send-email-andrea.merello@gmail.com
2016-08-29 09:13:52 +05:30
Andrea Merello
cf3bef95e1
drm/bridge: introduce bridge detaching mechanism
...
Up to now, once a bridge has been attached to a DRM device, it cannot
be undone.
In particular you couldn't rmmod/insmod a DRM driver that uses a bridge,
because the bridge would remain bound to the first (dead) driver instance.
This patch fixes this by introducing drm_encoder_detach() and a ->detach
callback in drm_bridge_funcs for the bridge to be notified about detaches.
It's DRM/KMS driver responsibility to call drm_encoder_detach().
While adding the bridge detach callback, with its kerneldoc, I also added
kerneldoc for attach callback.
Few other kerneldocs fixes around there are included.
Suggested-by: Daniel Vetter <daniel@ffwll.ch >
Suggested-by: Lucas Stach <l.stach@pengutronix.de >
Signed-off-by: Andrea Merello <andrea.merello@gmail.com >
Cc: Archit Taneja <architt@codeaurora.org >
Cc: David Airlie <airlied@linux.ie >
Cc: Daniel Vetter <daniel@ffwll.ch >
Cc: Lucas Stach <l.stach@pengutronix.de >
Signed-off-by: Archit Taneja <architt@codeaurora.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1472115874-6219-1-git-send-email-andrea.merello@gmail.com
2016-08-29 09:13:00 +05:30
Mario Kleiner
add1fa7510
drm/atomic: Don't potentially reset color_mgmt_changed on successive property updates.
...
Due to assigning the 'replaced' value instead of or'ing it,
if drm_atomic_crtc_set_property() gets called multiple times,
the last call will define the color_mgmt_changed flag, so
a non-updating call to a property can reset the flag and
prevent actual hw state updates required by preceding
property updates.
Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com >
Cc: Daniel Vetter <daniel.vetter@intel.com >
Cc: <stable@vger.kernel.org > # v4.6+
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Signed-off-by: Dave Airlie <airlied@redhat.com >
2016-08-29 06:55:47 +10:00
Rob Clark
d78d383ab3
drm/msm: protect against faults from copy_from_user() in submit ioctl
...
An evil userspace could try to cause deadlock by passing an unfaulted-in
GEM bo as submit->bos (or submit->cmds) table. Which will trigger
msm_gem_fault() while we already hold struct_mutex. See:
https://github.com/freedreno/msmtest/blob/master/evilsubmittest.c
Cc: stable@vger.kernel.org
Signed-off-by: Rob Clark <robdclark@gmail.com >
2016-08-28 12:49:39 -04:00
Rob Clark
89f82cbb0d
drm/msm: fix use of copy_from_user() while holding spinlock
...
Use instead __copy_from_user_inatomic() and fallback to slow-path where
we drop and re-aquire the lock in case of fault.
Cc: stable@vger.kernel.org
Reported-by: Vaishali Thakkar <vaishali.thakkar@oracle.com >
Signed-off-by: Rob Clark <robdclark@gmail.com >
2016-08-28 12:47:46 -04:00
Wei Yongjun
af346f5570
drm/sun4i: Remove redundant dev_err call in sun4i_tcon_init_regmap()
...
There is a error message within devm_ioremap_resource
already, so remove the dev_err call to avoid redundant
error message.
Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com >
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com >
2016-08-27 14:16:13 +02:00
Chris Wilson
bafb0fced9
drm/i915: Make for_each_engine_masked() more compact and quicker
...
Rather than walk the full array of engines checking whether each is in
the mask in turn, we can use the mask to jump to the right engines. This
should quicker for a sparse array of engines or mask, whilst generating
smaller code:
text data bss dec hex filename
1251010 4579 800 1256389 132bc5 drivers/gpu/drm/i915/i915.ko
1250530 4579 800 1255909 1329e5 drivers/gpu/drm/i915/i915.ko
The downside is that we have to pass in a temporary, alas no C99
iterators yet.
[P.S. Joonas doesn't like having to pass extra temporaries into the
macro, and even less that I called them tmp. As yet, we haven't found a
macro that avoids passing in a temporary that is smaller. We probably
will get C99 iterators first!]
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk >
Cc: Mika Kuoppala <mika.kuoppala@intel.com >
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com >
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20160827075401.16470-2-chris@chris-wilson.co.uk
2016-08-27 09:42:53 +01:00
Chris Wilson
f6407193dd
drm/i915: Tidy reporting busy status during i915_gem_retire_requests()
...
As we know by inspection whether any engine is still busy as we retire
all the requests, we can pass that information back via return value
rather than check again afterwards.
v2: A little more polish missed in patch splitting
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk >
Cc: Mika Kuoppala <mika.kuoppala@intel.com >
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20160827075401.16470-1-chris@chris-wilson.co.uk
2016-08-27 09:41:23 +01:00
Chris Wilson
f7978a0c58
drm/i915: Allow the user to pass a context to any ring
...
With full-ppgtt, we want the user to have full control over their memory
layout, with a separate instance per context. Forcing them to use a
shared memory layout for !RCS not only duplicates the amount of work we
have to do, but also defeats the memory segregation on offer.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk >
Link: http://patchwork.freedesktop.org/patch/msgid/20160822080350.4964-4-chris@chris-wilson.co.uk
Reviewed-by: John Harrison <john.c.harrison@intel.com >
Reviewed-by: Thomas Daniel <thomas.daniel@intel.com >
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch >
2016-08-26 20:26:53 +01:00
Chris Wilson
7850d1c353
drm/i915: Add GEN7_PCODE_MIN_FREQ_TABLE_GT_RATIO_OUT_OF_RANGE to SNB
...
According to the CI test machines, SNB also uses the
GEN7_PCODE_MIN_FREQ_TABLE_GT_RATIO_OUT_OF_RANGE value to report a bad
GEN6_PCODE_MIN_FREQ_TABLE request.
[ 157.744641] WARNING: CPU: 5 PID: 9238 at
drivers/gpu/drm/i915/intel_pm.c:7760 sandybridge_pcode_write+0x141/0x200 [i915]
[ 157.744642] Missing switch case (16) in gen6_check_mailbox_status
[ 157.744642] Modules linked in: snd_hda_intel i915 ax88179_178a usbnet mii x86_pkg_temp_thermal intel_powerclamp coretemp crct10dif_pclmul crc32_pclmul ghash_clmulni_intel snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic snd_hda_codec snd_hwdep snd_hda_core mei_me lpc_ich snd_pcm mei broadcom bcm_phy_lib tg3 ptp pps_core [last unloaded: vgem]
[ 157.744658] CPU: 5 PID: 9238 Comm: drv_hangman Tainted: G U W 4.8.0-rc3-CI-CI_DRM_1589+ #1
[ 157.744658] Hardware name: Dell Inc. XPS 8300 /0Y2MRG, BIOS A06 10/17/2011
[ 157.744659] 0000000000000000 ffff88011f093a98 ffffffff81426415 ffff88011f093ae8
[ 157.744662] 0000000000000000 ffff88011f093ad8 ffffffff8107d2a6 00001e50810d3c9f
[ 157.744663] ffff880128680000 0000000000000008 0000000000000000 ffff88012868a650
[ 157.744665] Call Trace:
[ 157.744669] [<ffffffff81426415>] dump_stack+0x67/0x92
[ 157.744672] [<ffffffff8107d2a6>] __warn+0xc6/0xe0
[ 157.744673] [<ffffffff8107d30a>] warn_slowpath_fmt+0x4a/0x50
[ 157.744685] [<ffffffffa0029831>] sandybridge_pcode_write+0x141/0x200 [i915]
[ 157.744697] [<ffffffffa002a88a>] intel_enable_gt_powersave+0x64a/0x1330 [i915]
[ 157.744712] [<ffffffffa006b4cb>] ? i9xx_emit_request+0x1b/0x80 [i915]
[ 157.744725] [<ffffffffa0055ed3>] __i915_add_request+0x1e3/0x370 [i915]
[ 157.744738] [<ffffffffa00428bd>] i915_gem_do_execbuffer.isra.16+0xced/0x1b80 [i915]
[ 157.744740] [<ffffffff811a232e>] ? __might_fault+0x3e/0x90
[ 157.744752] [<ffffffffa0043b72>] i915_gem_execbuffer2+0xc2/0x2a0 [i915]
[ 157.744753] [<ffffffff815485b7>] drm_ioctl+0x207/0x4c0
[ 157.744765] [<ffffffffa0043ab0>] ? i915_gem_execbuffer+0x360/0x360 [i915]
[ 157.744767] [<ffffffff810ea4ad>] ? debug_lockdep_rcu_enabled+0x1d/0x20
[ 157.744769] [<ffffffff811fe09e>] do_vfs_ioctl+0x8e/0x680
[ 157.744770] [<ffffffff811a2377>] ? __might_fault+0x87/0x90
[ 157.744771] [<ffffffff811a232e>] ? __might_fault+0x3e/0x90
[ 157.744773] [<ffffffff810d3df2>] ? trace_hardirqs_on_caller+0x122/0x1b0
[ 157.744774] [<ffffffff811fe6cc>] SyS_ioctl+0x3c/0x70
[ 157.744776] [<ffffffff8180fe69>] entry_SYSCALL_64_fastpath+0x1c/0xac
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97491
Fixes: 87660502f1
("drm/i915/gen6+: Interpret mailbox error flags")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk >
Cc: Lyude <cpaul@redhat.com >
Cc: Matt Roper <matthew.d.roper@intel.com >
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Cc: Daniel Vetter <daniel.vetter@ffwll.ch >
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com >
Cc: stable@vger.kernel.org
Link: http://patchwork.freedesktop.org/patch/msgid/20160826105926.3413-1-chris@chris-wilson.co.uk
Acked-by: Mika Kuoppala <mika.kuoppala@intel.com >
2016-08-26 18:08:59 +01:00
David Weinehall
ecbd6781b2
drm/i915/debugfs: Add panel delays for eDP
...
The eDP backlight and panel enable/disable delays are quite
useful to know when measuring time consumed by suspend/resume,
and while the information is printed to the kernel log as debug
messages, having this information in debugfs makes things easier.
Signed-off-by: David Weinehall <david.weinehall@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20160823092356.7610-1-david.weinehall@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk >
2016-08-26 08:55:47 +01:00
Chris Wilson
4cc6907501
drm/i915: Add I915_PARAM_MMAP_GTT_VERSION to advertise unlimited mmaps
...
Now that we have working partial VMA and faulting support for all
objects, including fence support, advertise to userspace that it can
take advantage of unlimited GGTT mmaps.
v2: Make room in the kerneldoc for a more detailed explanation of the
limitations of the GTT mmap interface.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk >
Cc: Daniel Vetter <daniel.vetter@ffwll.ch >
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20160825180519.11341-1-chris@chris-wilson.co.uk
2016-08-26 08:42:26 +01:00
Dave Airlie
969af80f77
Merge tag 'drm-intel-fixes-2016-08-25' of git://anongit.freedesktop.org/drm-intel into drm-fixes
...
i915 fixes queue.
* tag 'drm-intel-fixes-2016-08-25' of git://anongit.freedesktop.org/drm-intel:
drm/i915: Fix botched merge that downgrades CSR versions.
drm/i915/skl: Ensure pipes with changed wms get added to the state
drm/i915/gen9: Only copy WM results for changed pipes to skl_hw
drm/i915/skl: Add support for the SAGV, fix underrun hangs
drm/i915/gen6+: Interpret mailbox error flags
drm/i915: Reattach comment, complete type specification
drm/i915: Unconditionally flush any chipset buffers before execbuf
drm/i915/gen9: Drop invalid WARN() during data rate calculation
drm/i915/gen9: Initialize intel_state->active_crtcs during WM sanitization (v2)
2016-08-26 05:18:40 +10:00
Daniel Vetter
2b721f2077
drm: Protect fb_defio in drivers with CONFIG_KMS_FBDEV_EMULATION
...
For reasons that entirely elude me fb.h exposes all the structures,
even when it is not enabled. Except for special stuff like fb_defio.
Which means all the drivers which haven't yet switched over to the
defio support in the helpers and still roll their own, will fail
to compile when fbdev emulation is disabled. Protect just those
bits, as a gnarly reminder that conversion to the core defio helpers
would be good.
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/1470847958-28465-6-git-send-email-daniel.vetter@ffwll.ch
Signed-off-by: Dave Airlie <airlied@redhat.com >
2016-08-26 05:11:35 +10:00
Daniel Vetter
6dcf0de7ef
drm/simple-helpers: Always add planes to the state update
...
Our update function is hooked to the single plane, which might not get
called for crtc-only updates. Which is surprising, so fix this by
always adding the plane.
While at it document how&when the event should be sent out better in
the kerneldoc.
Cc: Noralf Trønnes <noralf@tronnes.org >
Cc: andrea.merello@gmail.com
Tested-and-Reported-by: andrea.merello@gmail.com
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Reviewed-by: Noralf Trønnes <noralf@tronnes.org >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/1471933540-31131-1-git-send-email-daniel.vetter@ffwll.ch
2016-08-25 20:46:03 +02:00
Tom St Denis
15f441db96
drm/amd/amdgpu: Tidy up cz_dpm.c
...
Various minor formatting changes.
Signed-off-by: Tom St Denis <tom.stdenis@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-08-25 14:02:55 -04:00
Tom St Denis
e701f97ff3
drm/amd/amdgpu: Clean up memory leak in cz_dpm_init().
...
If init fails free up any allocated memory.
Signed-off-by: Tom St Denis <tom.stdenis@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-08-25 14:02:46 -04:00
Tom St Denis
cc945ce3ab
drm/amd/amdgpu: Fix memleak in cz_parse_power_table()
...
If one of the entries fails to be allocated then free
all of the previous entries before freeing the array which
holds their pointers.
Signed-off-by: Tom St Denis <tom.stdenis@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-08-25 14:02:39 -04:00
Rex Zhu
c08770eb8a
drm/amdgpu: refine uvd gate logic for CI.
...
uvd dpm will be controlled by uvd.
dpm just disable uvd dpm in case of suspend when play video.
due to the new logic of uvd_begin_use/end_use,
if disable uvd dpm in late init, will have no chance to
enable uvd dpm after resume until play video again.
Change-Id: I70e3d7efe63edad37f26e6c5ea089da1135c0ab5
Signed-off-by: Rex Zhu <Rex.Zhu@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-08-25 12:24:15 -04:00
Rex Zhu
075f101cee
drm/amd/powerplay: simplify struct amd_pp_init.
...
delete the members not needed when amd_powerplay_init.
Signed-off-by: Rex Zhu <Rex.Zhu@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-08-25 12:23:41 -04:00
Rex Zhu
38109efacd
drm/amd/powerplay: get system info by cgs interface.
...
Signed-off-by: Rex Zhu <Rex.Zhu@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-08-25 12:23:21 -04:00
Rex Zhu
2fef37c62c
drm/amdgpu: add support for getting sub_device id and
...
sub_vendor_id in cgs interface.
Signed-off-by: Rex Zhu <Rex.Zhu@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-08-25 12:23:00 -04:00
Rex Zhu
c04399f194
drm/amdgpu: add vce bypass mode for tonga.
...
fix issue that encode test failed on the second time when
vce dpm enabled on tonga.
Signed-off-by: Rex Zhu <Rex.Zhu@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-08-25 12:22:40 -04:00