openwrt/staging/blogic.git
12 years agodrm/nouveau/pm: readback boot perflvl *before* parsing vbios
Ben Skeggs [Mon, 23 Jan 2012 03:47:02 +0000 (13:47 +1000)]
drm/nouveau/pm: readback boot perflvl *before* parsing vbios

We might want/need the boot data to generate the other perflevels.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Martin Peres <martin.peres@labri.fr>
12 years agodrm/nouveau/pm: implement DDR2/DDR3/GDDR3/GDDR5 MR generation and validation
Roy Spliet [Mon, 9 Jan 2012 05:23:07 +0000 (15:23 +1000)]
drm/nouveau/pm: implement DDR2/DDR3/GDDR3/GDDR5 MR generation and validation

Roy Spliet:
- Implement according to specs
- Simplify
- Make array for mc latency registers

Martin Peres:
- squash and split all the commits from Roy
- rework following Ben Skeggs comments
- add a form of timings validation
- store the initial timings for later use

Ben Skeggs
- merge slightly modified tidy-up patch with this one
- remove perflvl-dropping logic for the moment

Signed-off-by: Roy Spliet <r.spliet@student.tudelft.nl>
Signed-off-by: Martin Peres <martin.peres@labri.fr>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau/pm: restructure bios table parsing
Ben Skeggs [Mon, 16 Jan 2012 12:34:03 +0000 (22:34 +1000)]
drm/nouveau/pm: restructure bios table parsing

It turns out we need access to some additional information in various VBIOS
tables to handle PFB memory timings correctly.

Rather than hack in parsing of the new stuff in some kludgy way, I've
restructured the VBIOS parsing to be more primitive, so we can use them in
more flexible ways in the future.

The perflvl->timing association code is disabled for the moment until it can
be reworked.  We don't use this stuff yet anyway, so no harm done.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Martin Peres <martin.peres@labri.fr>
12 years agodrm/nouveau/pm: avoid potential divide-by-zero
Ben Skeggs [Mon, 23 Jan 2012 02:58:33 +0000 (12:58 +1000)]
drm/nouveau/pm: avoid potential divide-by-zero

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Martin Peres <martin.peres@labri.fr>
12 years agodrm/nouveau: Fix module parameter description formats
Jean Delvare [Wed, 30 Nov 2011 16:23:55 +0000 (17:23 +0100)]
drm/nouveau: Fix module parameter description formats

Module parameter descriptions don't take a trailing \n, otherwise it
breaks formatting of modinfo's output. Also remove trailing space.

Signed-off-by: Jean Delvare <jdelvare@suse.de>
Cc: David Airlie <airlied@linux.ie>
Cc: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau/pm: improve memory timing generation
Roy Spliet [Fri, 25 Nov 2011 14:52:22 +0000 (15:52 +0100)]
drm/nouveau/pm: improve memory timing generation

- Rename several VBIOS entries to closer match the real world
- Add the missing 0x100238 and 0x100240 register values
- Parse bit 14 of the VBIOS timing table
- "Magic value" -> tCWL, fixing some minor bugs in the process
- Also name a few more by their name rather than their number.
- Some values seem to be dependent on the memory type. Fix

Edits by Martin Peres <martin.peres@labri.fr>:
- this is a squash commit
- reworked for fixing some style issues

Signed-off-by: Roy Spliet <r.spliet@student.tudelft.nl>
Signed-off-by: Martin Peres <martin.peres@labri.fr>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau/pm: improve the reclocking logs' readability
Martin Peres [Wed, 2 Nov 2011 23:03:06 +0000 (00:03 +0100)]
drm/nouveau/pm: improve the reclocking logs' readability

Signed-off-by: Martin Peres <martin.peres@labri.fr>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau: move pwm_divisor to the nouveau_pm_fan struct
Martin Peres [Sat, 20 Aug 2011 14:37:06 +0000 (16:37 +0200)]
drm/nouveau: move pwm_divisor to the nouveau_pm_fan struct

Signed-off-by: Martin Peres <martin.peres@labri.fr>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau/pm: restore fan speed after suspend
Martin Peres [Thu, 6 Oct 2011 23:33:12 +0000 (01:33 +0200)]
drm/nouveau/pm: restore fan speed after suspend

Signed-off-by: Martin Peres <martin.peres@labri.fr>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau/pm: style fixes
Martin Peres [Sat, 17 Dec 2011 11:24:59 +0000 (12:24 +0100)]
drm/nouveau/pm: style fixes

Signed-off-by: Martin Peres <martin.peres@labri.fr>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau: rework the init/takedown ordering
Ben Skeggs [Thu, 15 Dec 2011 00:43:03 +0000 (10:43 +1000)]
drm/nouveau: rework the init/takedown ordering

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nvc0: add initial memory type detection
Ben Skeggs [Tue, 13 Dec 2011 02:46:18 +0000 (12:46 +1000)]
drm/nvc0: add initial memory type detection

Uses only the VBIOS tables, from what I can tell this is what NVIDIA do
too, I was able to change the detected memory type by modifying this table
on a NVC1 chipset.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nv50: hopefully handle the DDR2/DDR3 memtype detection somewhat better
Ben Skeggs [Tue, 13 Dec 2011 01:57:55 +0000 (11:57 +1000)]
drm/nv50: hopefully handle the DDR2/DDR3 memtype detection somewhat better

M version 2 appears to have a table with some form of memory type info
available.

NVIDIA appear to ignore the table information except for this DDR2/DDR3
case (which has the same value in 0x100714).  My guess is this is due to
some of the supported memory types not being represented in the table.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nv50: add memory type detection
Ben Skeggs [Mon, 12 Dec 2011 23:45:25 +0000 (09:45 +1000)]
drm/nv50: add memory type detection

DDR1/DDR[23] confirmed on NVA8 (see note about DDR3 in source) by changing
the value and watching the binary driver's behaviour.

GDDR3/4 values confirmed on a NV96 via the same method above.  That GDDR4
is present is interesting, as far as I can see no boards using it were ever
released.

GDDR5 value is based on VBIOS images of known GDDR5 boards.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nv20-nv40: add memory type detection
Ben Skeggs [Mon, 12 Dec 2011 13:03:14 +0000 (23:03 +1000)]
drm/nv20-nv40: add memory type detection

NV20/NV30 is partially educated guesswork at this point, based on any
information around about available memory types and a horribly unspeakable
amount of vbios image scouring.  I'm not entirely certain the GDDR3 define
is correct, I have not spotted a single vbios with that value yet (though
it is mentioned in some 1218-using nv4x vbios), but there are reports that
some nv3x did use it..

NV40(100914) confirmed by switching an NV49 to DDR1/DDR2 values and making
sure that the binary driver behaviour showed it had detected DDR1/DDR2
instead of GDDR3 before dying horribly.

NV40(100474) confirmed by doing much the same task as above on an NV44,
except this was *much* easier as changing the values didn't seem to have
any noticable effect on the memory controller aside from changing the
binary driver's behaviour.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nv20: split PFB code out of nv10_fb.c
Ben Skeggs [Mon, 12 Dec 2011 12:51:33 +0000 (22:51 +1000)]
drm/nv20: split PFB code out of nv10_fb.c

Most functions were quite different between NV10/NV20 already, and they're
about to get even more so.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau: memory type detection for the really old chipsets
Ben Skeggs [Sat, 10 Dec 2011 15:31:17 +0000 (01:31 +1000)]
drm/nouveau: memory type detection for the really old chipsets

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau: move vram detection funcs to chipset-specific fb code
Ben Skeggs [Sat, 10 Dec 2011 14:30:05 +0000 (00:30 +1000)]
drm/nouveau: move vram detection funcs to chipset-specific fb code

Also, display detected memory type in logs - though, we don't even try to
detect this yet.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agoMerge branch 'drm-gma500-alanc' into drm-core-next
Dave Airlie [Sat, 10 Mar 2012 13:10:41 +0000 (13:10 +0000)]
Merge branch 'drm-gma500-alanc' into drm-core-next

* drm-gma500-alanc: (47 commits)
  gma500: psb_irq: mark mid_{enable, disable}_pipe_event() as static
  gma500: mark psb_intel_sdvo_hdmi_sink_detect() as static
  gma500: psb_intel_display: drop unused variables
  gma500: mark psb_intel_pipe_set_base() as static
  gma500: drop unused psb_intel_modeset_cleanup()
  gma500: oaktrail_lvds_init() drop unused variable
  gma500: oaktrail_hdmi_i2c_access() drop unused variable
  gma500: mark oaktrail_backlight_init() as static
  gma500: oaktrail_hdmi: fix -Wmissing-field-initializers warning
  gma500: oaktrail_hdmi: drop dead code
  gma500: oaktrail_crtc: drop unused variables
  gma500: oaktrail_crtc: mark few functions as static
  gma500: mdfld_intel_display: drop unused variables
  gma500: mdfld_dsi_pkg_sender: fix -Wtype-limits warning
  gma500: mdfld_dsi_dpi: drop unused variables
  gma500: mdfld_device: mark few functions as static
  gma500: cdv_intel_lvds: #if 0 currently unused functions
  gma500: cdv_intel_lvds: mark few functions as static
  gma500: cdv_intel_hdmi: add missing include
  gma500: cdv_intel_crt: mark few functions as static
  ...

12 years agogma500: psb_irq: mark mid_{enable, disable}_pipe_event() as static
Kirill A. Shutemov [Thu, 8 Mar 2012 16:15:47 +0000 (16:15 +0000)]
gma500: psb_irq: mark mid_{enable, disable}_pipe_event() as static

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: mark psb_intel_sdvo_hdmi_sink_detect() as static
Kirill A. Shutemov [Thu, 8 Mar 2012 16:15:34 +0000 (16:15 +0000)]
gma500: mark psb_intel_sdvo_hdmi_sink_detect() as static

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: psb_intel_display: drop unused variables
Kirill A. Shutemov [Thu, 8 Mar 2012 16:15:20 +0000 (16:15 +0000)]
gma500: psb_intel_display: drop unused variables

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: mark psb_intel_pipe_set_base() as static
Kirill A. Shutemov [Thu, 8 Mar 2012 16:14:44 +0000 (16:14 +0000)]
gma500: mark psb_intel_pipe_set_base() as static

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: drop unused psb_intel_modeset_cleanup()
Kirill A. Shutemov [Thu, 8 Mar 2012 16:14:32 +0000 (16:14 +0000)]
gma500: drop unused psb_intel_modeset_cleanup()

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: oaktrail_lvds_init() drop unused variable
Kirill A. Shutemov [Thu, 8 Mar 2012 16:14:18 +0000 (16:14 +0000)]
gma500: oaktrail_lvds_init() drop unused variable

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: oaktrail_hdmi_i2c_access() drop unused variable
Kirill A. Shutemov [Thu, 8 Mar 2012 16:13:23 +0000 (16:13 +0000)]
gma500: oaktrail_hdmi_i2c_access() drop unused variable

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: mark oaktrail_backlight_init() as static
Kirill A. Shutemov [Thu, 8 Mar 2012 16:13:10 +0000 (16:13 +0000)]
gma500: mark oaktrail_backlight_init() as static

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: oaktrail_hdmi: fix -Wmissing-field-initializers warning
Kirill A. Shutemov [Thu, 8 Mar 2012 16:12:56 +0000 (16:12 +0000)]
gma500: oaktrail_hdmi: fix -Wmissing-field-initializers warning

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: oaktrail_hdmi: drop dead code
Kirill A. Shutemov [Thu, 8 Mar 2012 16:12:28 +0000 (16:12 +0000)]
gma500: oaktrail_hdmi: drop dead code

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: oaktrail_crtc: drop unused variables
Kirill A. Shutemov [Thu, 8 Mar 2012 16:12:16 +0000 (16:12 +0000)]
gma500: oaktrail_crtc: drop unused variables

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: oaktrail_crtc: mark few functions as static
Kirill A. Shutemov [Thu, 8 Mar 2012 16:12:04 +0000 (16:12 +0000)]
gma500: oaktrail_crtc: mark few functions as static

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: mdfld_intel_display: drop unused variables
Kirill A. Shutemov [Thu, 8 Mar 2012 16:11:50 +0000 (16:11 +0000)]
gma500: mdfld_intel_display: drop unused variables

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: mdfld_dsi_pkg_sender: fix -Wtype-limits warning
Kirill A. Shutemov [Thu, 8 Mar 2012 16:11:38 +0000 (16:11 +0000)]
gma500: mdfld_dsi_pkg_sender: fix -Wtype-limits warning

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: mdfld_dsi_dpi: drop unused variables
Kirill A. Shutemov [Thu, 8 Mar 2012 16:11:26 +0000 (16:11 +0000)]
gma500: mdfld_dsi_dpi: drop unused variables

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: mdfld_device: mark few functions as static
Kirill A. Shutemov [Thu, 8 Mar 2012 16:11:14 +0000 (16:11 +0000)]
gma500: mdfld_device: mark few functions as static

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: cdv_intel_lvds: #if 0 currently unused functions
Kirill A. Shutemov [Thu, 8 Mar 2012 16:11:02 +0000 (16:11 +0000)]
gma500: cdv_intel_lvds: #if 0 currently unused functions

cdv_intel_lvds_set_brightness() is only used in commented out code in
cdv_set_brightness().

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: cdv_intel_lvds: mark few functions as static
Kirill A. Shutemov [Thu, 8 Mar 2012 16:10:50 +0000 (16:10 +0000)]
gma500: cdv_intel_lvds: mark few functions as static

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: cdv_intel_hdmi: add missing include
Kirill A. Shutemov [Thu, 8 Mar 2012 16:10:38 +0000 (16:10 +0000)]
gma500: cdv_intel_hdmi: add missing include

drivers/gpu/drm/gma500/cdv_intel_hdmi.c:305:6: warning: no previous prototype for 'cdv_hdmi_init' [-Wmissing-prototypes]

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: cdv_intel_crt: mark few functions as static
Kirill A. Shutemov [Thu, 8 Mar 2012 16:10:23 +0000 (16:10 +0000)]
gma500: cdv_intel_crt: mark few functions as static

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: cdv_intel_crt: drop unused variables
Kirill A. Shutemov [Thu, 8 Mar 2012 16:10:10 +0000 (16:10 +0000)]
gma500: cdv_intel_crt: drop unused variables

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: cdv_intel_crt: drop dead code
Kirill A. Shutemov [Thu, 8 Mar 2012 16:09:57 +0000 (16:09 +0000)]
gma500: cdv_intel_crt: drop dead code

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: cdv_intel_crt: add missing include
Kirill A. Shutemov [Thu, 8 Mar 2012 16:09:45 +0000 (16:09 +0000)]
gma500: cdv_intel_crt: add missing include

drivers/gpu/drm/gma500/cdv_intel_crt.c:273:6: warning: no previous prototype for 'cdv_intel_crt_init' [-Wmissing-prototypes]

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: fix cdv_intel_wait_for_vblank() prototype
Kirill A. Shutemov [Thu, 8 Mar 2012 16:09:33 +0000 (16:09 +0000)]
gma500: fix cdv_intel_wait_for_vblank() prototype

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: fix two -Wmissing-field-initializers warnings
Kirill A. Shutemov [Thu, 8 Mar 2012 16:09:19 +0000 (16:09 +0000)]
gma500: fix two -Wmissing-field-initializers warnings

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: mark psb_driver_device_is_agp() and psb_driver_preclose() as static
Kirill A. Shutemov [Thu, 8 Mar 2012 16:08:45 +0000 (16:08 +0000)]
gma500: mark psb_driver_device_is_agp() and psb_driver_preclose() as static

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: psb_driver_load(): drop unused variables
Kirill A. Shutemov [Thu, 8 Mar 2012 16:05:00 +0000 (16:05 +0000)]
gma500: psb_driver_load(): drop unused variables

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: fix ioctl confict
Kirill A. Shutemov [Thu, 8 Mar 2012 16:04:47 +0000 (16:04 +0000)]
gma500: fix ioctl confict

Move DRM_GMA_GET_PIPE_FROM_CRTC_ID to 0x08 to avoid confict with
DRM_GMA_GEM_MMAP.

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: use DRM_IOCTL_DEF_DRV instead of custom PSB_IOCTL_DEF
Kirill A. Shutemov [Thu, 8 Mar 2012 16:04:32 +0000 (16:04 +0000)]
gma500: use DRM_IOCTL_DEF_DRV instead of custom PSB_IOCTL_DEF

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: mmu: mark psb_mmu_free_pt() and psb_mmu_pt_alloc_map_lock() as static
Kirill A. Shutemov [Thu, 8 Mar 2012 16:04:20 +0000 (16:04 +0000)]
gma500: mmu: mark psb_mmu_free_pt() and psb_mmu_pt_alloc_map_lock() as static

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: mmu: drop unused psb_get_default_pd_addr()
Kirill A. Shutemov [Thu, 8 Mar 2012 16:04:08 +0000 (16:04 +0000)]
gma500: mmu: drop unused psb_get_default_pd_addr()

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: gtt: mark psb_gtt_entry() and psb_gtt_alloc() as static
Kirill A. Shutemov [Thu, 8 Mar 2012 16:03:55 +0000 (16:03 +0000)]
gma500: gtt: mark psb_gtt_entry() and psb_gtt_alloc() as static

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: mark psb_fbdev_destroy() and psb_fbdev_fini() as static
Kirill A. Shutemov [Thu, 8 Mar 2012 16:03:44 +0000 (16:03 +0000)]
gma500: mark psb_fbdev_destroy() and psb_fbdev_fini() as static

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: drop unused psbfb_suspend()/psbfb_resume()
Kirill A. Shutemov [Thu, 8 Mar 2012 16:03:32 +0000 (16:03 +0000)]
gma500: drop unused psbfb_suspend()/psbfb_resume()

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: gem_glue: add missing include
Kirill A. Shutemov [Thu, 8 Mar 2012 16:03:19 +0000 (16:03 +0000)]
gma500: gem_glue: add missing include

It fixes W=1 warnings:

drivers/gpu/drm/gma500/gem_glue.c:23:6: warning: no previous prototype for ‘drm_gem_object_release_wrap’ [-Wmissing-prototypes]
drivers/gpu/drm/gma500/gem_glue.c:44:5: warning: no previous prototype for ‘gem_create_mmap_offset’ [-Wmissing-prototypes]

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: medfield: drop a bit of dead code
Kirill A. Shutemov [Thu, 8 Mar 2012 16:03:04 +0000 (16:03 +0000)]
gma500: medfield: drop a bit of dead code

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: mdfld_dsi_output_init() drop unused parameter
Kirill A. Shutemov [Thu, 8 Mar 2012 16:02:50 +0000 (16:02 +0000)]
gma500: mdfld_dsi_output_init() drop unused parameter

Nobody uses 'config' parameter.

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: psbfb_create(): move depth initialization out of loop
Kirill A. Shutemov [Thu, 8 Mar 2012 16:02:36 +0000 (16:02 +0000)]
gma500: psbfb_create(): move depth initialization out of loop

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: initial medfield merge
Kirill A. Shutemov [Thu, 8 Mar 2012 16:02:20 +0000 (16:02 +0000)]
gma500: initial medfield merge

We need to merge this ahead of some of the cleanup because a lot of needed
cleanup spans both new and old chips. If we try and clean up and the merge
we end up fighting ourselves.

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
[With a load of the cleanup stuff folded in, register stuff reworked sanely]
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: rework register stuff sanely
Alan Cox [Thu, 8 Mar 2012 16:02:05 +0000 (16:02 +0000)]
gma500: rework register stuff sanely

Rework registers handling to prepare for Medfield.

Signed-off-by: Alan Cox <alan@linux.intel.com>
[split out from a single big patch]
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: make init_pm callback in struct psb_op optional
Kirill A. Shutemov [Thu, 8 Mar 2012 16:01:51 +0000 (16:01 +0000)]
gma500: make init_pm callback in struct psb_op optional

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: re-order calling on the fix setup so we set up after the DRM layer
Alan Cox [Thu, 8 Mar 2012 16:01:39 +0000 (16:01 +0000)]
gma500: re-order calling on the fix setup so we set up after the DRM layer

Noted by Kirill A Shutemov

Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agointel, gma500, lvds: Fix use after free and mem leak in psb_intel_lvds_init()
Jesper Juhl [Thu, 8 Mar 2012 16:00:58 +0000 (16:00 +0000)]
intel, gma500, lvds: Fix use after free and mem leak in psb_intel_lvds_init()

In psb_intel_lvds_init(), if we fail to allocate memory for
'psb_intel_connector' we free the memory we previously allocated for
'psb_intel_encoder', but we then proceed to use that free'd pointer
when we do 'psb_intel_encoder->dev_priv = lvds_priv;'.

We may also leak the memory we allocated for 'psb_intel_encoder' if we
'goto failed_connector;' and the variable goes out of scope.

While I was there anyway, I also removed the pointless 'if
(psb_intel_connector)' before freeing it at the 'failed_connector:'
label - kfree() deals gracefully with NULL pointers, so it is not
needed.

Signed-off-by: Jesper Juhl <jj@chaosbits.net>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: Kconfig documentation tweak
Alan Cox [Thu, 8 Mar 2012 16:00:45 +0000 (16:00 +0000)]
gma500: Kconfig documentation tweak

Update this to better reflect the status

Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: now move the Oaktrail save state into its own structure
Alan Cox [Thu, 8 Mar 2012 16:00:31 +0000 (16:00 +0000)]
gma500: now move the Oaktrail save state into its own structure

Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: clean up some of the struct fields we no longer use
Alan Cox [Thu, 8 Mar 2012 16:00:17 +0000 (16:00 +0000)]
gma500: clean up some of the struct fields we no longer use

Some this is Medfield stuff that may reappear in some form later, other
bits are just dead stuff

Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogma500: plug in more of the gamma functionality
Alan Cox [Thu, 8 Mar 2012 16:00:00 +0000 (16:00 +0000)]
gma500: plug in more of the gamma functionality

Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodrm: cope with platformdev->id == -1
Rob Clark [Tue, 6 Mar 2012 16:20:36 +0000 (10:20 -0600)]
drm: cope with platformdev->id == -1

If there are not multiple instances of a platform device, the id
should apparently be set to -1.  Which results in a odd looking
bus-id like "platform:foodrm:-1".  Probably we should just treat
this case as id 0.

Signed-off-by: Rob Clark <rob@ti.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodrm: drop setting vm_file to filp
Dave Airlie [Thu, 23 Feb 2012 11:37:26 +0000 (11:37 +0000)]
drm: drop setting vm_file to filp

Talking to Al Viro on irc, we can see no possible reason for doing
this, the upper mmap code does it. The code has been there since
first import into drm tree I can find.

Al tracked down this as a requirement pre 2.3.51 hasn't been needed since.

Acked-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodrm/radeon: fix deferred page-flip detection logic on Avivo-based ASICs
Felix Kuehling [Fri, 24 Feb 2012 00:16:12 +0000 (19:16 -0500)]
drm/radeon: fix deferred page-flip detection logic on Avivo-based ASICs

This fixes page-flip-related flickering observed on Iconia Tab W500.

The update_pending status returned by radeon_page_flip is very accurate on
Avivo-based ASICs when vpos is negative.

Experiments were conducted on several ASIC generations ranging from RS690
to Cayman where the page flip was artificially timed to occur at a specific
vpos. With negative vpos, overriding update_pending always lead to
flickering.

The same experiment on RV380 and RV410 showed that update_pending is not
accurate with negative vpos. In most cases update_pending == 1 is returned
although the flip would complete before the start of the next frame.
Therefore I left the behaviour unchanged for pre-AVIVO ASICs for
performance reasons, although this may result in flickering in rare cases.

This change also makes the logic a little easier to understand.

Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
Reviewed-by: Mario Kleiner <mario.kleiner@tuebingen.mpg.de>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodrm: remove unused code
Sascha Hauer [Wed, 29 Feb 2012 08:06:21 +0000 (09:06 +0100)]
drm: remove unused code

remove declared but unused functions from drmP.h, fix the comments
where necessary. Also, remove drm_mem_info which is unused.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodrm/radeon/kms: clean up radeon_asic struct (v2)
Alex Deucher [Thu, 23 Feb 2012 23:10:29 +0000 (18:10 -0500)]
drm/radeon/kms: clean up radeon_asic struct (v2)

v2: fix typo.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König<christian.koenig@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodrm/radeon/kms: reorganize surface callbacks
Alex Deucher [Thu, 23 Feb 2012 22:53:49 +0000 (17:53 -0500)]
drm/radeon/kms: reorganize surface callbacks

tidy up the radeon_asic struct.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König<christian.koenig@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodrm/radeon/kms: move clock/pcie setting callbacks into pm struct
Alex Deucher [Thu, 23 Feb 2012 22:53:48 +0000 (17:53 -0500)]
drm/radeon/kms: move clock/pcie setting callbacks into pm struct

tidy up radeon_asic struct.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König<christian.koenig@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodrm/radeon/kms: reorganize display callbacks
Alex Deucher [Thu, 23 Feb 2012 22:53:47 +0000 (17:53 -0500)]
drm/radeon/kms: reorganize display callbacks

tidy up the radeon_asic struct.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König<christian.koenig@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodrm/radeon/kms: reorganize gart callbacks
Alex Deucher [Thu, 23 Feb 2012 22:53:46 +0000 (17:53 -0500)]
drm/radeon/kms: reorganize gart callbacks

tidy up the radeon_asic struct.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König<christian.koenig@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodrm/radeon/kms: make ring_start, ring_test, and ib_test per ring
Alex Deucher [Thu, 23 Feb 2012 22:53:45 +0000 (17:53 -0500)]
drm/radeon/kms: make ring_start, ring_test, and ib_test per ring

Each ring type may need a different variant.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König<christian.koenig@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodrm/radeon/kms: remove unused cp callbacks from radeon_asic
Alex Deucher [Thu, 23 Feb 2012 22:53:44 +0000 (17:53 -0500)]
drm/radeon/kms: remove unused cp callbacks from radeon_asic

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König<christian.koenig@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodrm/radeon/kms: reorganize irq callbacks
Alex Deucher [Thu, 23 Feb 2012 22:53:43 +0000 (17:53 -0500)]
drm/radeon/kms: reorganize irq callbacks

tidy up the radeon_asic struct.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König<christian.koenig@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodrm/radeon/kms: reorganize copy callbacks
Alex Deucher [Thu, 23 Feb 2012 22:53:42 +0000 (17:53 -0500)]
drm/radeon/kms: reorganize copy callbacks

tidy up the radeon_asic struct, handle multiple
rings better.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König<christian.koenig@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodrm/radeon: fix IB debugfs files for multiple cards
Christian König [Thu, 23 Feb 2012 14:18:45 +0000 (15:18 +0100)]
drm/radeon: fix IB debugfs files for multiple cards

Storing pointers to the IBs in a static var just
leads to giving the same content back for all
cards in the system.

Signed-off-by: Christian König <deathsimple@vodafone.de>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodrm/radeon: also make the cs_parse function per ring
Christian König [Thu, 23 Feb 2012 14:18:44 +0000 (15:18 +0100)]
drm/radeon: also make the cs_parse function per ring

Not all rings use PM4, so the cs_parser also needs to be per ring.

Signed-off-by: Christian König <deathsimple@vodafone.de>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodrm/radeon/kms: no need to align IB like this
Christian König [Thu, 23 Feb 2012 14:18:43 +0000 (15:18 +0100)]
drm/radeon/kms: no need to align IB like this

So don't confuse devs by doing so.

Signed-off-by: Christian König <deathsimple@vodafone.de>
Reviewed-by: Alex Deucher <alex.deucher@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodrm/radeon: move ring syncing after bo validation
Christian König [Thu, 23 Feb 2012 14:18:42 +0000 (15:18 +0100)]
drm/radeon: move ring syncing after bo validation

The function radeon_bo_list_validate can cause a
bo to move, resulting in a different sync_obj
and a dependency to wait for this move to finish.

Signed-off-by: Christian König <deathsimple@vodafone.de>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodrm/radeon/kms: reorganize pm callbacks
Alex Deucher [Thu, 23 Feb 2012 22:53:41 +0000 (17:53 -0500)]
drm/radeon/kms: reorganize pm callbacks

tidy up the radeon_asic struct.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodrm/radeon/kms: reorganize page flip callbacks
Alex Deucher [Thu, 23 Feb 2012 22:53:40 +0000 (17:53 -0500)]
drm/radeon/kms: reorganize page flip callbacks

tidy up the radeon_asic struct.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodrm/radeon/kms: reorganize hpd callbacks
Alex Deucher [Thu, 23 Feb 2012 22:53:39 +0000 (17:53 -0500)]
drm/radeon/kms: reorganize hpd callbacks

tidy up the radeon_asic struct.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodrm/radeon/kms: add a radeon asic callback for mc idle
Alex Deucher [Thu, 23 Feb 2012 22:53:38 +0000 (17:53 -0500)]
drm/radeon/kms: add a radeon asic callback for mc idle

Required for future functionality.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodrm/radeon/kms: add wait_for_vblank asic callback
Alex Deucher [Thu, 23 Feb 2012 22:53:37 +0000 (17:53 -0500)]
drm/radeon/kms: add wait_for_vblank asic callback

Required for future functionality.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agoMerge tag 'drm-intel-next-2012-02-16-merge-resolved' of git://people.freedesktop...
Dave Airlie [Thu, 23 Feb 2012 14:11:53 +0000 (14:11 +0000)]
Merge tag 'drm-intel-next-2012-02-16-merge-resolved' of git://people.freedesktop.org/~danvet/drm-intel into drm-core-next

* tag 'drm-intel-next-2012-02-16-merge-resolved' of git://people.freedesktop.org/~danvet/drm-intel: (45 commits)
  Revert "drivers/gpu/drm/i915/intel_overlay.c needs seq_file.h"
  drm/i915/lvds: Always use the presence pin for LVDS on PCH
  drm/i915: Record the position of the request upon error
  drm/i915: Record the in-flight requests at the time of a hang
  drm/i915: Record the tail at each request and use it to estimate the head
  drm/i915: add missing SDVO bits for interlaced modes on ILK
  drm/i915: Fix race condition in accessing GMBUS
  drm/i915: add a "force-dvi" HDMI audio mode
  drm/i915: Don't lock panel registers when downclocking
  drm/i915: fix up locking inconsistency around gem_do_init
  drm/i915: enable forcewake voodoo also for gen6
  drm/i915: fixup seqno allocation logic for lazy_request
  drm/i915: outstanding_lazy_request is a u32
  drm/i915: check gtfifodbg after possibly failed writes
  drm/i915: catch gtfifo errors on forcewake_put
  drm/i915: use gtfifodbg
  drm/i915: set interlaced bits for TRANSCONF
  drm/i915: fixup overlay checks for interlaced modes
  drm/i915: allow interlaced mode output on the HDMI connector
  drm/i915: allow interlaced mode output on the SDVO connector
  ...

12 years agoMerge remote-tracking branch 'airlied/drm-next' into for-airlied
Daniel Vetter [Thu, 23 Feb 2012 13:54:20 +0000 (14:54 +0100)]
Merge remote-tracking branch 'airlied/drm-next' into for-airlied

Manually resolve the conflict between the new enum drm property
helpers in drm-next and the new "force-dvi" option that the "audio" output
property gained in drm-intel-next.

While resolving this conflict, switch the new drm_prop_enum_list to
use the newly introduced enum defines instead of magic values.

Conflicts:
drivers/gpu/drm/i915/intel_modes.c

Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
12 years agodrm: add some caps for userspace to discover more info for dumb KMS driver (v2)
Dave Airlie [Thu, 29 Sep 2011 15:20:42 +0000 (16:20 +0100)]
drm: add some caps for userspace to discover more info for dumb KMS driver (v2)

For the simple KMS driver case we need some more info about what the preferred
depth and if a shadow framebuffer is preferred.

I've only added this for intel/radeon which support the dumb ioctls so far.

If you need something really fancy you should be writing a real X.org driver.

v2: drop cursor information, just return an error from the cursor ioctls
and we can make userspace fallback to sw cursor in that case, cursor
info was getting too messy, best to start smaller.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodrm: move pci bus master enable into driver.
Dave Airlie [Mon, 19 Dec 2011 11:15:29 +0000 (11:15 +0000)]
drm: move pci bus master enable into driver.

The current enabling of bus mastering in the drm midlayer allows a large
race condition under kexec. When a kexec'ed kernel re-enables bus mastering
for the GPU, previously setup dma blocks may cause writes to random pieces
of memory. On radeon the writeback mechanism can cause these sorts of issues.

This patch doesn't fix the problem, but it moves the bus master enable under
the individual drivers control so they can move enabling it until later in
their load cycle and close the race.

Fix for radeon kms driver will be in a follow-up patch.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agoRevert "drivers/gpu/drm/i915/intel_overlay.c needs seq_file.h"
Danny Kukawka [Wed, 15 Feb 2012 17:53:55 +0000 (18:53 +0100)]
Revert "drivers/gpu/drm/i915/intel_overlay.c needs seq_file.h"

This reverts commit e167976ee7f5fe4b80f7e8f55e087f6c67cf9562,
Since this was already fixed in commit
3bd3c9329973a93fa3ef5e9840f2fd6fa2889e3f some days before this
commit cause seq_file.h to be included twice.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
12 years agodrm/radeon/evergreen: make texdw[] array larger
Dan Carpenter [Tue, 14 Feb 2012 07:38:11 +0000 (10:38 +0300)]
drm/radeon/evergreen: make texdw[] array larger

We store stuff in texdw[7] so this array needs to have 8 elements.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodrm/i915/lvds: Always use the presence pin for LVDS on PCH
Chris Wilson [Thu, 9 Feb 2012 09:35:53 +0000 (09:35 +0000)]
drm/i915/lvds: Always use the presence pin for LVDS on PCH

With the introduction of the PCH, we gained an LVDS presence pin but we
continued to use the existing logic that asserted that LVDS was only
supported on certain mobile chipsets. However, there are desktop
IronLake systems with LVDS attached which we fail to detect. So for PCH,
trust the LVDS presence pin and quirk all the lying manufacturers.

Tested-by: Daniel Woff <wolff.daniel@gmail.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=43171
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
12 years agodrm/i915: Record the position of the request upon error
Chris Wilson [Wed, 15 Feb 2012 11:25:38 +0000 (11:25 +0000)]
drm/i915: Record the position of the request upon error

So that we can tally the request against the command sequence in the
ringbuffer, or merely jump to the interesting locations.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
12 years agodrm/i915: Record the in-flight requests at the time of a hang
Chris Wilson [Wed, 15 Feb 2012 11:25:37 +0000 (11:25 +0000)]
drm/i915: Record the in-flight requests at the time of a hang

Being able to tally the list of outstanding requests with the sequence
of commands in the ringbuffer is often useful evidence with respect to
driver corruption.

Note that since this is the umpteenth per-ring data structure to be added
to the error state, I've coallesced the nearby loops (the ringbuffer and
batchbuffer) into a single structure along with the list of requests.  A
later task would be to refactor the ring register state into the same
structure.

v2: Fix pretty printing of requests so that they are parsed correctly by
intel_error_decode and use the 0x%08x format for seqno for consistency

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
12 years agodrm/i915: Record the tail at each request and use it to estimate the head
Chris Wilson [Wed, 15 Feb 2012 11:25:36 +0000 (11:25 +0000)]
drm/i915: Record the tail at each request and use it to estimate the head

By recording the location of every request in the ringbuffer, we know
that in order to retire the request the GPU must have finished reading
it and so the GPU head is now beyond the tail of the request. We can
therefore provide a conservative estimate of where the GPU is reading
from in order to avoid having to read back the ring buffer registers
when polling for space upon starting a new write into the ringbuffer.

A secondary effect is that this allows us to convert
intel_ring_buffer_wait() to use i915_wait_request() and so consolidate
upon the single function to handle the complicated task of waiting upon
the GPU. A necessary precaution is that we need to make that wait
uninterruptible to match the existing conditions as all the callers of
intel_ring_begin() have not been audited to handle ERESTARTSYS
correctly.

By using a conservative estimate for the head, and always processing all
outstanding requests first, we prevent a race condition between using
the estimate and direct reads of I915_RING_HEAD which could result in
the value of the head going backwards, and the tail overflowing once
again. We are also careful to mark any request that we skip over in
order to free space in ring as consumed which provides a
self-consistency check.

Given sufficient abuse, such as a set of unthrottled GPU bound
cairo-traces, avoiding the use of I915_RING_HEAD gives a 10-20% boost on
Sandy Bridge (i5-2520m):
  firefox-paintball  18927ms -> 15646ms: 1.21x speedup
  firefox-fishtank   12563ms -> 11278ms: 1.11x speedup
which is a mild consolation for the performance those traces achieved from
exploiting the buggy autoreported head.

v2: Add a few more comments and make request->tail a conservative
estimate as suggested by Daniel Vetter.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
[danvet: resolve conflicts with retirement defering and the lack of
the autoreport head removal (that will go in through -fixes).]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
12 years agodrm/i915: add missing SDVO bits for interlaced modes on ILK
Paulo Zanoni [Tue, 14 Feb 2012 19:07:09 +0000 (17:07 -0200)]
drm/i915: add missing SDVO bits for interlaced modes on ILK

This was pointed by Jesse Barnes. The code now seems to follow the
specification but I don't have an SDVO device to really test this.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
12 years agoMerge tag 'drm-intel-next-2012-02-07' of git://people.freedesktop.org/~danvet/drm...
Dave Airlie [Tue, 14 Feb 2012 14:16:00 +0000 (14:16 +0000)]
Merge tag 'drm-intel-next-2012-02-07' of git://people.freedesktop.org/~danvet/drm-intel into drm-core-next

* tag 'drm-intel-next-2012-02-07' of git://people.freedesktop.org/~danvet/drm-intel: (29 commits)
  drm/i915: Handle unmappable buffers during error state capture
  drm/i915: rewrite shmem_pread_slow to use copy_to_user
  drm/i915: rewrite shmem_pwrite_slow to use copy_from_user
  drm/i915: fall through pwrite_gtt_slow to the shmem slow path
  drm/i915: add debugfs file for swizzling information
  drm/i915: fix swizzle detection for gen3
  drm/i915: Remove the upper limit on the bo size for mapping into the CPU domain
  drm/i915: add per-ring fault reg to error_state
  drm/i915: reject GTT domain in relocations
  drm/i915: remove the i915_batchbuffer_info debugfs file
  drm/i915: capture error_state also for stuck rings
  drm/i915: refactor debugfs create functions
  drm/i915: refactor debugfs open function
  drm/i915: don't trash the gtt when running out of fences
  drm/i915: Separate fence pin counting from normal bind pin counting
  drm/i915/ringbuffer: kill snb blt workaround
  drm/i915: collect more per ring error state
  drm/i915: refactor ring error state capture to use arrays
  drm/i915: switch ring->id to be a real id
  drm/i915: set AUD_CONFIG N_value_index for DisplayPort
  ...