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

    Christian Schmidt
     
  • 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 Cloos

    Signed-off-by: Dave Airlie

    Christian Schmidt
     

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 0x5

    After:
    [ 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 0xa

    Signed-off-by: Christian Schmidt
    Reviewed-by: Adam Jackson
    Signed-off-by: Dave Airlie

    Christian Schmidt
     

01 Nov, 2011

1 commit


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

    Wu Fengguang
     

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

    Thomas Reim
     
  • …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
    ...

    Dave Airlie
     
  • 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

    Jesse Barnes
     

25 Jul, 2011

1 commit


16 Jun, 2011

2 commits


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

    Jesse Barnes
     
  • 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

    Jesse Barnes
     

01 Apr, 2011

1 commit


16 Mar, 2011

1 commit


23 Feb, 2011

1 commit


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

    Sam Tygier
     

19 Oct, 2010

1 commit


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

    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

    Linus Torvalds
     

10 Aug, 2010

5 commits


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
    ...

    Linus Torvalds
     

04 Aug, 2010

1 commit


02 Aug, 2010

1 commit


29 Jul, 2010

1 commit


20 Jul, 2010

1 commit


01 Jun, 2010

1 commit


26 May, 2010

1 commit


21 May, 2010

1 commit


18 May, 2010

4 commits


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.

    Dave Airlie
     

10 Apr, 2010

2 commits

  • ... and not the global list.

    Signed-off-by: Adam Jackson
    Signed-off-by: Dave Airlie

    Adam Jackson
     
  • * '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
    ...

    Linus Torvalds