20 Dec, 2011
2 commits
-
The current logic misunderstands the spec about CEA 18byte descriptors.
First, the spec doesn't state "detailed timing descriptors" but "18 byte
descriptors", so any data record could be stored, mixed timings and
other data, just as in the standard EDID.
Second, the lower four bit of byte 3 of the CEA record do not contain
the number of descriptors, but "the total number of DTDs defining native
formats in the whole EDID [...], starting with the first DTD in the DTD
list (which starts in the base EDID block)." A device can of course
support non-native formats.As such the number can't be used to determine n, and the existing code
will filter non-timing 18byte descriptors anyway.Signed-off-by: Christian Schmidt
Reviewed-by: Adam Jackson
Signed-off-by: Dave Airlie -
CEA datablocks are only defined from revision 3 onwards. Only check for
them if the revision says so.Signed-of-by: Christian Schmidt
Tested-by: James CloosSigned-off-by: Dave Airlie
19 Dec, 2011
1 commit
-
TFT/plasma televisions and projectors have become commonplace, and so
has the use of PCs to drive them. Add the video modes specified by an
EDID's CEA extension to the mode database for a connector.Before:
[ 1.158869] [drm:drm_mode_debug_printmodeline], Modeline
19:"1920x1080i" 0 74250 1920 2448 2492 2640 1080 1084 1094 1125 0x40 0x15
[ 1.158875] [drm:drm_mode_debug_printmodeline], Modeline
18:"1920x1080i" 0 74250 1920 2008 2052 2200 1080 1084 1094 1125 0x48 0x15
[ 1.158882] [drm:drm_mode_debug_printmodeline], Modeline
20:"1920x1080" 24 74250 1920 2558 2602 2750 1080 1084 1089 1125 0x40 0x5After:
[ 1.144175] [drm:drm_mode_debug_printmodeline], Modeline
22:"1920x1080" 0 74250 1920 2448 2492 2640 1080 1084 1094 1125 0x40 0x15
[ 1.144179] [drm:drm_mode_debug_printmodeline], Modeline
21:"1920x1080" 0 74250 1920 2008 2052 2200 1080 1084 1094 1125 0x48 0x15
[ 1.144187] [drm:drm_mode_debug_printmodeline], Modeline
30:"1920x1080" 50 148500 1920 2448 2492 2640 1080 1084 1089 1125 0x40 0x5
[ 1.144190] [drm:drm_mode_debug_printmodeline], Modeline
29:"1920x1080" 60 148500 1920 2008 2052 2200 1080 1084 1089 1125 0x40 0x5
[ 1.144192] [drm:drm_mode_debug_printmodeline], Modeline
25:"1920x1080" 24 74250 1920 2558 2602 2750 1080 1084 1089 1125 0x40 0x5
[ 1.144195] [drm:drm_mode_debug_printmodeline], Modeline
24:"1280x720" 50 74250 1280 1720 1760 1980 720 725 730 750 0x40 0x5
[ 1.144198] [drm:drm_mode_debug_printmodeline], Modeline
23:"1280x720" 60 74250 1280 1390 1430 1650 720 725 730 750 0x40 0x5
[ 1.144201] [drm:drm_mode_debug_printmodeline], Modeline 27:"720x576"
50 27000 720 732 796 864 576 581 586 625 0x40 0xa
[ 1.144203] [drm:drm_mode_debug_printmodeline], Modeline 26:"720x480"
60 27000 720 736 798 858 480 489 495 525 0x40 0xa
[ 1.144206] [drm:drm_mode_debug_printmodeline], Modeline 28:"640x480"
60 25175 640 656 752 800 480 490 492 525 0x40 0xaSigned-off-by: Christian Schmidt
Reviewed-by: Adam Jackson
Signed-off-by: Dave Airlie
01 Nov, 2011
1 commit
-
They need this to get all the EXPORT_SYMBOL variants and THIS_MODULE
Signed-off-by: Paul Gortmaker
22 Sep, 2011
1 commit
-
ELD (EDID-Like Data) describes to the HDMI/DP audio driver the audio
capabilities of the plugged monitor.This adds drm_edid_to_eld() for converting EDID to ELD. The converted
ELD will be saved in a new drm_connector.eld[128] data field. This is
necessary because the graphics driver will need to fixup some of the
data fields (eg. HDMI/DP connection type, AV sync delay) before writing
to the hardware ELD buffer. drm_av_sync_delay() will help the graphics
drivers dynamically compute the AV sync delay for fixing-up the ELD.ELD selection policy: it's possible for one encoder to be associated
with multiple connectors (ie. monitors), in which case the first found
ELD will be returned by drm_select_eld(). This policy may not be
suitable for all users, but let's start it simple first.The impact of ELD selection policy: assume there are two monitors, one
supports stereo playback and the other has 8-channel output; cloned
display mode is used, so that the two monitors are associated with the
same internal encoder. If only the stereo playback capability is reported,
the user won't be able to start 8-channel playback; if the 8-channel ELD
is reported, then user space applications may send 8-channel samples
down, however the user may actually be listening to the 2-channel
monitor and not connecting speakers to the 8-channel monitor.According to James, many TVs will either refuse the display anything or
pop-up an OSD warning whenever they receive hdmi audio which they cannot
handle. Eventually we will require configurability and/or per-monitor
audio control even when the video is cloned.CC: Zhao Yakui
CC: Wang Zhenyu
CC: Jeremy Bush
CC: Christopher White
CC: Pierre-Louis Bossart
CC: Paul Menzel
CC: James Cloos
CC: Chris Wilson
Signed-off-by: Ben Skeggs
Signed-off-by: Wu Fengguang
Signed-off-by: Keith Packard
04 Aug, 2011
3 commits
-
Provides function drm_edid_header_is_valid() for EDID header check
and replaces EDID header check part of function drm_edid_block_valid()
by a call of drm_edid_header_is_valid().
This is a prerequisite to extend DDC probing, e. g. in function
radeon_ddc_probe() for Radeon devices, by a central EDID header check.Tested for kernel 2.6.35, 2.6.38 and 3.0
Cc:
Signed-off-by: Thomas Reim
Reviewed-by: Alex Deucher
Acked-by: Stephen Michaels
Signed-off-by: Dave Airlie -
…t/keithp/linux-2.6 into drm-fixes
* 'drm-intel-next' of ssh://master.kernel.org/pub/scm/linux/kernel/git/keithp/linux-2.6: (42 commits)
drm/i915: allow cache sharing policy control
drm/i915/hdmi: HDMI source product description infoframe support
drm/i915/hdmi: split infoframe setting from infoframe type code
drm: track CEA version number if present
drm/i915: Try enabling RC6 by default (again)
Revert "drm/i915/dp: Zero the DPCD data before connection probe"
drm/i915/dp: wait for previous AUX channel activity to clear
drm/i915: don't use uninitialized EDID bpc values when picking pipe bpp
drm/i915/pch: Save/restore PCH_PORT_HOTPLUG across suspend
drm/i915: apply phase pointer override on SNB+ too
drm/i915: Add quirk to disable SSC on Sony Vaio Y2
drm/i915: provide more error output when mode sets fail
drm/i915: add GPU max frequency control file
i915: add Dell OptiPlex FX170 to intel_no_lvds
drm/i915: Ignore GPU wedged errors while pinning scanout buffers
drm/i915/hdmi: send AVI info frames on ILK+ as well
drm/i915: fix CB tuning check for ILK+
drm/i915: Flush other plane register writes
drm/i915: flush plane control changes on ILK+ as well
drm/i915: apply timing generator bug workaround on CPT and PPT
... -
Drivers need to know the CEA version number in addition to other display
info (like whether the display is an HDMI sink) before enabling certain
features. So track the CEA version number in the display info
structure.Signed-off-by: Jesse Barnes
Signed-off-by: Keith Packard
25 Jul, 2011
1 commit
-
Also disable the ascii dump and remove the literal printing of the
KERN_ERR macro in the log:[drm:drm_edid_block_valid] *ERROR* Raw EDID:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................v2: Remove the trailing empty line as well.
Signed-off-by: Tormod Volden
Signed-off-by: Dave Airlie
16 Jun, 2011
2 commits
-
Some RS690 chipsets seem to end up with floating connectors, either
a DVI connector isn't actually populated, or an add-in HDMI card
is available but not installed. In this case we seem to get a NULL byte
response for each byte of the i2c transaction, so we detect this
case and if we see it we don't do anymore DDC transactions on this
connector.I've tested this on my RS690 without the HDMI card installed and
it seems to work fine.Signed-off-by: Dave Airlie
Reviewed-by: Alex Deucher -
this puts the header and followup at the same loglevel as the
hex dump code.Signed-off-by: Dave Airlie
Reviewed-by: Alex Deucher
28 Apr, 2011
2 commits
-
EDID 1.4 digital displays report the color spaces they support in the
features block. Add support for grabbing this data and stuffing it into
the display_info struct for driver use.Signed-off-by: Jesse Barnes
Reviewed-by: Alex Deucher
Signed-off-by: Dave Airlie -
EDID 1.4 digital monitors report the bit depth supported in the input
field. Add support for parsing this out and storing the info in the
display_info structure for use by drivers.[airlied: tweaked to fix inter-patch dependency]
Signed-off-by: Jesse Barnes
Reviewed-by: Adam Jackson
Signed-off-by: Dave Airlie
01 Apr, 2011
1 commit
-
Nouveau needs access to this structure to build an ELD block for use
by the HDA audio codec.Signed-off-by: Ben Skeggs
Signed-off-by: Dave Airlie
16 Mar, 2011
1 commit
-
Usually EDID retrieval is fine. However, sometimes, especially when the
machine is loaded, it fails, but succeeds after a few retries.Based on a patch by Michael Buesch.
Reported-by: Michael Buesch
Signed-off-by: Chris Wilson
Reviewed-by: Alex Deucher
Signed-off-by: Dave Airlie
23 Feb, 2011
1 commit
-
... and fixup some methods to accept the constant argument.
Now that constant module arrays are loaded into read-only memory, using
const appropriately has some benefits beyond warning the programmer
about likely mistakes.Signed-off-by: Chris Wilson
Signed-off-by: Dave Airlie
09 Nov, 2010
1 commit
-
Currently an invalid EDID extension will cause the whole EDID to be considered invalid. Instead just drop the invalid extensions, and return the valid ones. The base block is modified to claim to have the number valid extensions, and the check sum is updated.
For my EIZO S2242W the base block is fine, but the extension block is all zeros. Without this patch I get no X and no VTs.
Signed-off-by: Sam Tygier
Signed-off-by: Dave Airlie
19 Oct, 2010
1 commit
-
To help to determine if digital display port needs to enable
audio output or not. This one adds a helper to get monitor's
audio capability via EDID CEA extension block.Tested-by: Wu Fengguang
Signed-off-by: Zhenyu Wang
Reviewed-by: Adam Jackson
Signed-off-by: Chris Wilson
18 Sep, 2010
1 commit
-
Use the GMBUS interface rather than direct bit banging to grab the EDID
over DDC (and for other forms of auxiliary communication with external
display controllers). The hope is that this method will be much faster
and more reliable than bit banging for fetching EDIDs from buggy monitors
or through switches, though we still preserve the bit banging as a
fallback in case GMBUS fails.Based on an original patch by Jesse Barnes.
Cc: Jesse Barnes
Signed-off-by: Chris Wilson
13 Aug, 2010
1 commit
-
* 'drm-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: (55 commits)
io-mapping: move asm include inside the config option
vgaarb: drop vga.h include
drm/radeon: Add probing of clocks from device-tree
drm/radeon: drop old and broken mesa warning
drm/radeon: Fix pci_map_page() error checking
drm: Remove count_lock for calling lastclose() after 58474713 (v2)
drm/radeon/kms: allow FG_ALPHA_VALUE on r5xx
drm/radeon/kms: another r6xx/r7xx CS checker fix
DRM: Replace kmalloc/memset combos with kzalloc
drm: expand gamma_set
drm/edid: Split mode lists out to their own header for readability
drm/edid: Rewrite mode parse to use the generic detailed block walk
drm/edid: Add detailed block walk for VTB extensions
drm/edid: Add detailed block walk for CEA extensions
drm: Remove unused fields from drm_display_info
drm: Use ENOENT consistently for the error return for an unmatched handle.
drm/radeon/kms: mark 3D power states as performance
drm: Only set DPMS once on the CRTC not after every encoder.
drm/radeon/kms: add additional quirk for Acer rv620 laptop
drm: Propagate error code from fb_create()
...Fix up trivial conflicts in drivers/gpu/drm/drm_edid.c
10 Aug, 2010
5 commits
-
... of the code, not of the mode lists.
Signed-off-by: Adam Jackson
Signed-off-by: Dave Airlie -
This brings us in line with the EDID spec recommendation for mode
priority sorting. We still don't extract all the modes we could from
VTB, but VTB is so rare in the wild that I'm not really concerned.Signed-off-by: Adam Jackson
Signed-off-by: Dave Airlie -
Signed-off-by: Adam Jackson
Signed-off-by: Dave Airlie -
Signed-off-by: Adam Jackson
Signed-off-by: Dave Airlie -
Signed-off-by: Adam Jackson
Signed-off-by: Dave Airlie
06 Aug, 2010
1 commit
-
* 'drm-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: (204 commits)
agp: intel-agp: do not use PCI resources before pci_enable_device()
agp: efficeon-agp: do not use PCI resources before pci_enable_device()
drm: kill BKL from common code
drm/kms: Simplify setup of the initial I2C encoder config.
drm,io-mapping: Specify slot to use for atomic mappings
drm/radeon/kms: only expose underscan on avivo chips
drm/radeon: add new pci ids
drm: Cleanup after failing to create master->unique and dev->name
drm/radeon: tone down overchatty acpi debug messages.
drm/radeon/kms: enable underscan option for digital connectors
drm/radeon/kms: fix calculation of h/v scaling factors
drm/radeon/kms/igp: sideport is AMD only
drm/radeon/kms: handle the case of no active displays properly in the bandwidth code
drm: move ttm global code to core drm
drm/i915: Clear the Ironlake dithering flags when the pipe doesn't want it.
drm/radeon/kms: make sure HPD is set to NONE on analog-only connectors
drm/radeon/kms: make sure rio_mem is valid before unmapping it
drm/agp/i915: trim stolen space to 32M
drm/i915: Unset cursor if out-of-bounds upon mode change (v4)
drm/i915: Unreference object not handle on creation
...
04 Aug, 2010
1 commit
02 Aug, 2010
1 commit
-
This resolves the conflict in the EDP code, which has been rather
popular to hack on recently.Conflicts:
drivers/gpu/drm/i915/intel_dp.c
29 Jul, 2010
1 commit
-
We're adjusting horizontal timings only here, moving vsync was just a
slavish translation of a typo in the X server.Signed-off-by: Adam Jackson
Signed-off-by: Dave Airlie
20 Jul, 2010
1 commit
-
Change sizeof(x) / sizeof(*x) to ARRAY_SIZE(x).
Signed-off-by: Kulikov Vasiliy
Signed-off-by: Jiri Kosina
01 Jun, 2010
1 commit
-
Allow platform devices without PCI resources to be DRM devices.
[airlied: fixup warnings with dev pointers]
Signed-off-by: Jordan Crouse
Signed-off-by: Dave Airlie
26 May, 2010
1 commit
-
Switches will try to update the topology address and not correctly fix
up the checksum, so just let it slide.https://bugs.freedesktop.org/28229
Signed-off-by: Adam Jackson
Signed-off-by: Dave Airlie
21 May, 2010
1 commit
-
Spotted by Scott Bertilson.
Fixes fdo bug 28146.Signed-off-by: Alex Deucher
Reviewed-by: Mark Marshall
Signed-off-by: Dave Airlie
18 May, 2010
4 commits
-
Simple cloning rules compared to server:
(a) single crtc
(b) > 1 connector active
(c) check command line mode
(d) try and find 1024x768 DMT mode if no command line.
(e) fail to cloneSigned-off-by: Dave Airlie
-
m == num_est3_modes is one past the end of the est3_modes[].
Signed-off-by: Dan Carpenter
Reviewed-by: Adam Jackson
Signed-off-by: Dave Airlie -
Having hsync both start and end on pixel 1072 ain't gonna work very
well. Matches the X server's list.Signed-off-by: Adam Jackson
Tested-By: Michael Tokarev
Cc: stable@kernel.org
Signed-off-by: Dave Airlie -
We don't use timing_level any more after: 9cf00977da0 "drm/edid: Unify
detailed block parsing between base and extension blocks".Signed-off-by: Dan Carpenter
Signed-off-by: Dave Airlie
20 Apr, 2010
1 commit
-
* drm-edid-fixes:
drm/edid: When checking duplicate standard modes, walked the probed list
drm/edid: Fix sync polarity for secondary GTF curve
drm/modes: Fix interlaced mode names
drm/edid: Add secondary GTF curve support
drm/edid: Strengthen the algorithm for standard mode codes
drm/edid: Fix the HDTV hack.
drm/edid: Extend range-based mode addition for EDID 1.4
drm/edid: Add test for monitor reduced blanking support.
drm/edid: Fix preferred mode parse for EDID 1.4
drm/edid: Remove some silly comments
drm/edid: Remove arbitrary EDID extension limit
drm/edid: Add modes for Established Timings III section
drm/edid: Reshuffle mode list construction to closer match the spec
drm/edid: Remove a redundant check
drm/edid: Remove some misleading comments
drm/edid: Fix secondary block fetch.
10 Apr, 2010
2 commits
-
... and not the global list.
Signed-off-by: Adam Jackson
Signed-off-by: Dave Airlie -
* 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: (29 commits)
drm/nouveau: bail out of auxch transaction if we repeatedly recieve defers
drm/nv50: implement gpio set/get routines
drm/nv50: parse/use some more de-magiced parts of gpio table entries
drm/nouveau: store raw gpio table entry in bios gpio structs
drm/nv40: Init some tiling-related PGRAPH state.
drm/nv50: Add NVA3 support in ctxprog/ctxvals generator.
drm/nv50: another dodgy DP hack
drm/nv50: punt hotplug irq handling out to workqueue
drm/nv50: preserve an unknown SOR_MODECTRL value for DP encoders
drm/nv50: Allow using the NVA3 new compute class.
drm/nv50: cleanup properly if PDISPLAY init fails
drm/nouveau: fixup the init failure paths some more
drm/nv50: fix instmem init on IGPs if stolen mem crosses 4GiB mark
drm/nv40: add LVDS table quirk for Dell Latitude D620
drm/nv40: rework lvds table parsing
drm/nouveau: detect vram amount once, and save the value
drm/nouveau: remove some unused members from drm_nouveau_private
drm/nouveau: Make use of TTM busy_placements.
drm/nv50: add more 0x100c80 flushy magic
drm/nv50: fix fbcon when framebuffer above 4GiB mark
...