S: Maintained
F: drivers/gpu/drm/bochs/
- DRM DRIVER FOR QEMU'S CIRRUS DEVICE
- M: Dave Airlie <airlied@redhat.com>
- M: Gerd Hoffmann <kraxel@redhat.com>
- L: virtualization@lists.linux-foundation.org
- T: git git://anongit.freedesktop.org/drm/drm-misc
- S: Obsolete
- W: https://www.kraxel.org/blog/2014/10/qemu-using-cirrus-considered-harmful/
- F: drivers/gpu/drm/cirrus/
+ DRM DRIVER FOR INTEL I810 VIDEO CARDS
+ S: Orphan / Obsolete
+ F: drivers/gpu/drm/i810/
+ F: include/uapi/drm/i810_drm.h
- RADEON and AMDGPU DRM DRIVERS
- M: Alex Deucher <alexander.deucher@amd.com>
- M: Christian König <christian.koenig@amd.com>
- L: amd-gfx@lists.freedesktop.org
- T: git git://people.freedesktop.org/~agd5f/linux
- S: Supported
- F: drivers/gpu/drm/radeon/
- F: include/uapi/drm/radeon_drm.h
- F: drivers/gpu/drm/amd/
- F: include/uapi/drm/amdgpu_drm.h
+ DRM DRIVER FOR MATROX G200/G400 GRAPHICS CARDS
+ S: Orphan / Obsolete
+ F: drivers/gpu/drm/mga/
+ F: include/uapi/drm/mga_drm.h
- DRM PANEL DRIVERS
- M: Thierry Reding <thierry.reding@gmail.com>
+ DRM DRIVER FOR MGA G200 SERVER GRAPHICS CHIPS
+ M: Dave Airlie <airlied@redhat.com>
+ S: Odd Fixes
+ F: drivers/gpu/drm/mgag200/
+
+ DRM DRIVER FOR MI0283QT
+ M: Noralf Trønnes <noralf@tronnes.org>
+ S: Maintained
+ F: drivers/gpu/drm/tinydrm/mi0283qt.c
+ F: Documentation/devicetree/bindings/display/multi-inno,mi0283qt.txt
+
+ DRM DRIVER FOR MSM ADRENO GPU
+ M: Rob Clark <robdclark@gmail.com>
+ L: linux-arm-msm@vger.kernel.org
L: dri-devel@lists.freedesktop.org
- T: git git://anongit.freedesktop.org/tegra/linux.git
+ L: freedreno@lists.freedesktop.org
+ T: git git://people.freedesktop.org/~robclark/linux
S: Maintained
- F: drivers/gpu/drm/drm_panel.c
- F: drivers/gpu/drm/panel/
- F: include/drm/drm_panel.h
- F: Documentation/devicetree/bindings/display/panel/
+ F: drivers/gpu/drm/msm/
+ F: include/uapi/drm/msm_drm.h
+ F: Documentation/devicetree/bindings/display/msm/
- INTEL DRM DRIVERS (excluding Poulsbo, Moorestown and derivative chipsets)
- M: Daniel Vetter <daniel.vetter@intel.com>
- M: Jani Nikula <jani.nikula@linux.intel.com>
- L: intel-gfx@lists.freedesktop.org
- W: https://01.org/linuxgraphics/
- B: https://01.org/linuxgraphics/documentation/how-report-bugs
- C: irc://chat.freenode.net/intel-gfx
- Q: http://patchwork.freedesktop.org/project/intel-gfx/
- T: git git://anongit.freedesktop.org/drm-intel
+ DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS
+ M: Ben Skeggs <bskeggs@redhat.com>
+ L: dri-devel@lists.freedesktop.org
+ L: nouveau@lists.freedesktop.org
+ T: git git://github.com/skeggsb/linux
S: Supported
- F: drivers/gpu/drm/i915/
- F: include/drm/i915*
- F: include/uapi/drm/i915_drm.h
- F: Documentation/gpu/i915.rst
+ F: drivers/gpu/drm/nouveau/
+ F: include/uapi/drm/nouveau_drm.h
- INTEL GVT-g DRIVERS (Intel GPU Virtualization)
- M: Zhenyu Wang <zhenyuw@linux.intel.com>
- M: Zhi Wang <zhi.a.wang@intel.com>
- L: intel-gvt-dev@lists.freedesktop.org
- L: intel-gfx@lists.freedesktop.org
- W: https://01.org/igvt-g
- T: git https://github.com/01org/gvt-linux.git
- S: Supported
- F: drivers/gpu/drm/i915/gvt/
+ DRM DRIVER FOR QEMU'S CIRRUS DEVICE
+ M: Dave Airlie <airlied@redhat.com>
+ M: Gerd Hoffmann <kraxel@redhat.com>
+ L: virtualization@lists.linux-foundation.org
+ T: git git://anongit.freedesktop.org/drm/drm-misc
+ S: Obsolete
+ W: https://www.kraxel.org/blog/2014/10/qemu-using-cirrus-considered-harmful/
+ F: drivers/gpu/drm/cirrus/
- DRM DRIVERS FOR ATMEL HLCDC
- M: Boris Brezillon <boris.brezillon@free-electrons.com>
+ DRM DRIVER FOR QXL VIRTUAL GPU
+ M: Dave Airlie <airlied@redhat.com>
+ M: Gerd Hoffmann <kraxel@redhat.com>
+ L: virtualization@lists.linux-foundation.org
+ T: git git://anongit.freedesktop.org/drm/drm-misc
+ S: Maintained
+ F: drivers/gpu/drm/qxl/
+ F: include/uapi/drm/qxl_drm.h
+
++DRM DRIVER FOR PERVASIVE DISPLAYS REPAPER PANELS
++M: Noralf Trønnes <noralf@tronnes.org>
++S: Maintained
++F: drivers/gpu/drm/tinydrm/repaper.c
++F: Documentation/devicetree/bindings/display/repaper.txt
++
+ DRM DRIVER FOR RAGE 128 VIDEO CARDS
+ S: Orphan / Obsolete
+ F: drivers/gpu/drm/r128/
+ F: include/uapi/drm/r128_drm.h
+
+ DRM DRIVER FOR SAVAGE VIDEO CARDS
+ S: Orphan / Obsolete
+ F: drivers/gpu/drm/savage/
+ F: include/uapi/drm/savage_drm.h
+
+ DRM DRIVER FOR SIS VIDEO CARDS
+ S: Orphan / Obsolete
+ F: drivers/gpu/drm/sis/
+ F: include/uapi/drm/sis_drm.h
+
+ DRM DRIVER FOR TDFX VIDEO CARDS
+ S: Orphan / Obsolete
+ F: drivers/gpu/drm/tdfx/
+
+ DRM DRIVER FOR USB DISPLAYLINK VIDEO ADAPTERS
+ M: Dave Airlie <airlied@redhat.com>
+ S: Odd Fixes
+ F: drivers/gpu/drm/udl/
+
+ DRM DRIVER FOR VMWARE VIRTUAL GPU
+ M: "VMware Graphics" <linux-graphics-maintainer@vmware.com>
+ M: Sinclair Yeh <syeh@vmware.com>
+ M: Thomas Hellstrom <thellstrom@vmware.com>
L: dri-devel@lists.freedesktop.org
+ T: git git://people.freedesktop.org/~syeh/repos_linux
+ T: git git://people.freedesktop.org/~thomash/linux
S: Supported
- F: drivers/gpu/drm/atmel-hlcdc/
- F: Documentation/devicetree/bindings/drm/atmel/
+ F: drivers/gpu/drm/vmwgfx/
+ F: include/uapi/drm/vmwgfx_drm.h
+
+ DRM DRIVERS
+ M: David Airlie <airlied@linux.ie>
+ L: dri-devel@lists.freedesktop.org
+ T: git git://people.freedesktop.org/~airlied/linux
+ B: https://bugs.freedesktop.org/
+ C: irc://chat.freenode.net/dri-devel
+ S: Maintained
+ F: drivers/gpu/drm/
+ F: drivers/gpu/vga/
+ F: Documentation/devicetree/bindings/display/
+ F: Documentation/devicetree/bindings/gpu/
+ F: Documentation/devicetree/bindings/video/
+ F: Documentation/gpu/
+ F: include/drm/
+ F: include/uapi/drm/
+ F: include/linux/vga*
+
+ DRM DRIVERS AND MISC GPU PATCHES
+ M: Daniel Vetter <daniel.vetter@intel.com>
+ M: Jani Nikula <jani.nikula@linux.intel.com>
+ M: Sean Paul <seanpaul@chromium.org>
+ W: https://01.org/linuxgraphics/gfx-docs/maintainer-tools/drm-misc.html
+ S: Maintained
T: git git://anongit.freedesktop.org/drm/drm-misc
+ F: Documentation/gpu/
+ F: drivers/gpu/vga/
+ F: drivers/gpu/drm/*
+ F: include/drm/drm*
+ F: include/uapi/drm/drm*
+ F: include/linux/vga*
DRM DRIVERS FOR ALLWINNER A10
M: Maxime Ripard <maxime.ripard@free-electrons.com>
WARN_ON_ONCE((HVS_READ(SCALER_DISPSTATX(chan)) &
(SCALER_DISPSTATX_FULL | SCALER_DISPSTATX_EMPTY)) !=
SCALER_DISPSTATX_EMPTY);
+
+ /*
+ * Make sure we issue a vblank event after disabling the CRTC if
+ * someone was waiting it.
+ */
+ if (crtc->state->event) {
+ unsigned long flags;
+
+ spin_lock_irqsave(&dev->event_lock, flags);
+ drm_crtc_send_vblank_event(crtc, crtc->state->event);
+ crtc->state->event = NULL;
+ spin_unlock_irqrestore(&dev->event_lock, flags);
+ }
}
-static void vc4_crtc_enable(struct drm_crtc *crtc)
+ static void vc4_crtc_update_dlist(struct drm_crtc *crtc)
+ {
+ struct drm_device *dev = crtc->dev;
+ struct vc4_dev *vc4 = to_vc4_dev(dev);
+ struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc);
+ struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(crtc->state);
+
+ if (crtc->state->event) {
+ unsigned long flags;
+
+ crtc->state->event->pipe = drm_crtc_index(crtc);
+
+ WARN_ON(drm_crtc_vblank_get(crtc) != 0);
+
+ spin_lock_irqsave(&dev->event_lock, flags);
+ vc4_crtc->event = crtc->state->event;
+ crtc->state->event = NULL;
+
+ HVS_WRITE(SCALER_DISPLISTX(vc4_crtc->channel),
+ vc4_state->mm.start);
+
+ spin_unlock_irqrestore(&dev->event_lock, flags);
+ } else {
+ HVS_WRITE(SCALER_DISPLISTX(vc4_crtc->channel),
+ vc4_state->mm.start);
+ }
+ }
+
+static void vc4_crtc_atomic_enable(struct drm_crtc *crtc,
+ struct drm_crtc_state *old_state)
{
struct drm_device *dev = crtc->dev;
struct vc4_dev *vc4 = to_vc4_dev(dev);
/* Turn on the pixel valve, which will emit the vstart signal. */
CRTC_WRITE(PV_V_CONTROL,
CRTC_READ(PV_V_CONTROL) | PV_VCONTROL_VIDEN);
-
- /* Enable vblank irq handling after crtc is started. */
- drm_crtc_vblank_on(crtc);
}
-static bool vc4_crtc_mode_fixup(struct drm_crtc *crtc,
- const struct drm_display_mode *mode,
- struct drm_display_mode *adjusted_mode)
+static enum drm_mode_status vc4_crtc_mode_valid(struct drm_crtc *crtc,
+ const struct drm_display_mode *mode)
{
/* Do not allow doublescan modes from user space */
- if (adjusted_mode->flags & DRM_MODE_FLAG_DBLSCAN) {
+ if (mode->flags & DRM_MODE_FLAG_DBLSCAN) {
DRM_DEBUG_KMS("[CRTC:%d] Doublescan mode rejected.\n",
crtc->base.id);
- return false;
+ return MODE_NO_DBLESCAN;
}
- return true;
+ return MODE_OK;
}
static int vc4_crtc_atomic_check(struct drm_crtc *crtc,