1. 17 6月, 2013 28 次提交
    • T
      OMAPDSS: omapdss.h: add owner field to omap_dss_device · 4f3e44ea
      Tomi Valkeinen 提交于
      Add struct module *owner field to omap_dss_device, which points to the
      module containing the ops for this omap_dss_device. This will be used to
      manage the ref count for the module.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      4f3e44ea
    • T
      OMAPDSS: combine omap_dss_output into omap_dss_device · 1f68d9c4
      Tomi Valkeinen 提交于
      We currently have omap_dss_device, which represents an external display
      device, sometimes an external encoder, sometimes a panel. Then we have
      omap_dss_output, which represents DSS's output encoder.
      
      In the future with new display device model, we construct a video
      pipeline from the display blocks. To accomplish this, all the blocks
      need to be presented by the same entity.
      
      Thus, this patch combines omap_dss_output into omap_dss_device. Some of
      the fields in omap_dss_output are already found in omap_dss_device, but
      some are not. This means we'll have DSS output specific fields in
      omap_dss_device, which is not very nice. However, it is easier to just
      keep those output specific fields there for now, and after transition to
      new display device model is made, they can be cleaned up easier than
      could be done now.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      1f68d9c4
    • T
      OMAPDSS: remove omap_dss_start/stop_device() · d3923933
      Tomi Valkeinen 提交于
      The omap_dss_start_device() and omap_dss_stop_device(), called by the
      DSS output drivers, are old relics. They originally did something
      totally else, but nowadays they increase the module ref count for panels
      that are enabled.
      
      This model is quite broken: the panel modules may be used even before
      they are enabled. For example, configuring the panel requires calls to
      functions located in the panel modules.
      
      In the following patches we try to improve the ref count management for
      the modules and display devices. The first step, however, is to remove
      the omap_dss_start/stop_device() totally.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      d3923933
    • T
      OMAPDSS: Add panel dev pointer to dssdev · ecc8b370
      Tomi Valkeinen 提交于
      We are about to remove the dss bus support, which also means that the
      omap_dss_device won't be a real device anymore. This means that the
      embedded "dev" struct needs to be removed from omap_dss_device.
      
      After we've finished the removal of the dss bus, we see the following
      changes:
      
      - struct omap_dss_device won't be a real Linux device anymore, but more
        like a "display entity".
      - struct omap_dss_driver won't be a Linux device driver, but "display
        entity ops".
      - The panel devices/drivers won't be omapdss devices/drivers, but
        platform/i2c/spi/etc devices/drivers, whichever fits the control
        mechanism of the panel.
      - The panel drivers will create omap_dss_device and omap_dss_driver,
        fill the required fields, and register the omap_dss_device to
        omapdss.
      - omap_dss_device won't have an embedded dev struct anymore, but a
        dev pointer to the actual device that manages the omap_dss_device.
      
      The model described above resembles the model that has been discussed
      with CDF (common display framework).
      
      For the duration of the conversion, we temporarily have two devs in the
      dssdev, the old "old_dev", which is a full embedded device struct, and the
      new "dev", which is a pointer to the device. "old_dev" will be removed
      in the future.
      
      For devices belonging to dss bus the dev is initialized to point to
      old_dev. This way all the code can just use the dev, for both old and
      new style panels.
      
      Both the new and old style panel drivers work during the conversion, and
      only after the dss bus support is removed will the old style panels stop
      to compile.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      ecc8b370
    • T
      OMAPDSS: implement display sysfs without dss bus · 94140f0d
      Tomi Valkeinen 提交于
      We aim to remove the custom omapdss bus totally, as it's quite a strange
      construct and won't be compatible with common display framework. One
      problem on the road is that we have sysfs files for each display, and
      they depend on the omapdss bus.
      
      This patch creates the display sysfs files independent of the omapdss
      bus. This gives us backwards compatibility without using the omapdss bus
      for the sysfs files.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      94140f0d
    • T
      OMAPDSS: don't use dss bus in suspend/resume · a65c8bda
      Tomi Valkeinen 提交于
      We have support functions to suspend and resume all the displays that
      are used with system suspend. These functions use the dss bus to iterate
      the display devices.
      
      As we aim to remove the custom dss bus totally, this patch removes the
      explicit use of dss bus from these functions. Instead the
      for_each_dss_dev() macro is used to go through the devices.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      a65c8bda
    • T
      OMAPDSS: use the panel list in omap_dss_get_next_device · 67b23ca1
      Tomi Valkeinen 提交于
      omap_dss_get_next_device() uses the dss bus to iterate over the
      displays. This patch changes omap_dss_get_next_device() to use the new
      panel list instead.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      67b23ca1
    • T
      OMAPDSS: add panel list · 2e7e3dc7
      Tomi Valkeinen 提交于
      We currently use the omapdss bus (which contains all the available
      displays) to iterate the displays. As the omapdss bus is on its way out,
      this needs to be changed.
      
      Instead of using the dss bus to iterate displays, this patch adds our
      own list of displays which we manage. The panels on the dss bus are
      automatically added to this new list.
      
      An "alias" field is also added to omap_dss_device. This field is
      set to "display%d", the same way as omap_dss_device's dev name is set.
      This alias is later used to keep backward compatibility, when the
      embedded dev is no longer used.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      2e7e3dc7
    • T
      OMAPDSS: remove dssdev uses in trivial cases · 7ae9a71e
      Tomi Valkeinen 提交于
      In the future the "dssdev" parameter passed to output drivers will
      change its meaning. Instead of being a pointer to the panel device, it's
      a pointer to the output instance.
      
      To make the transition easier, some of the uses for this dssdev
      parameter can be easily removed.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      7ae9a71e
    • T
      OMAPDSS: add videomode conversion support · 6fcd485b
      Tomi Valkeinen 提交于
      Add helper functions to convert between omapdss specific video timings
      and the common videomode.
      
      Eventually omapdss will be changed to use only the common video timings,
      and these helper functions will make the transition easier.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      6fcd485b
    • T
      OMAPDSS: VENC: clean up regulator init · 7e436bb2
      Tomi Valkeinen 提交于
      Clean up the VENC driver's regulator init to remove the (unused)
      omap_dss_device parameter, renaming the function to a more sensible
      name, and making the code slightly clearer.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      7e436bb2
    • T
      OMAPDSS: SDI: fix regulators for DT · 46c4b645
      Tomi Valkeinen 提交于
      SDI requires a regulator to operate. This regulator is, for some reason,
      currently attached to the virtual omapdss device, instead of the SDI
      device. This does not work for DT, as the regulator mappings need to be
      described in the DT data, and the virtual omapdss device is not present
      there.
      
      Fix the issue by acquiring the regulator in the SDI device. To retain
      compatibility with the current board files, the old method of getting
      the regulator is kept. The old method can be removed when the board
      files have been changed to pass the regulator to SDI.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      46c4b645
    • T
      OMAPDSS: SDI: clean up regulator init · d37801b3
      Tomi Valkeinen 提交于
      Clean up the SDI driver's regulator init to remove the (unused)
      omap_dss_device parameter, renaming the function to a more sensible
      name, and making the code slightly clearer.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      d37801b3
    • T
      OMAPDSS: HDMI: add hdmi_init_regulator · e25001d8
      Tomi Valkeinen 提交于
      Separate regulator init code into its own function for clarity.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      e25001d8
    • T
      OMAPDSS: DPI: fix regulators for DT · 00df43b8
      Tomi Valkeinen 提交于
      On some platforms DPI requires a regulator to be enabled to power up the
      output pins. This regulator is, for some reason, currently attached to
      the virtual omapdss device, instead of the DPI device. This does not
      work for DT, as the regulator mappings need to be described in the DT
      data, and the virtual omapdss device is not present there.
      
      Fix the issue by acquiring the regulator in the DPI device. To retain
      compatibility with the current board files, the old method of getting
      the regulator is kept. The old method can be removed when the board
      files have been changed to pass the regulator to DPI.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      00df43b8
    • T
      OMAPDSS: DPI: cleanup pll & regulator init · 2795f646
      Tomi Valkeinen 提交于
      Split regulator and DSI PLL init code to their own functions for
      clarity.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      2795f646
    • T
      OMAPDSS: DSI: cleanup regulator init · b2541c40
      Tomi Valkeinen 提交于
      Separate the regulator initialization code to its own function, removing
      duplicate code.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      b2541c40
    • T
      OMAPDSS: CORE: use devm_regulator_get · 51930bba
      Tomi Valkeinen 提交于
      Use devm_regulator_get() instead of regulator_get() to simplify code.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      51930bba
    • T
      OMAPDSS: Implement display (dis)connect support · a7e71e7f
      Tomi Valkeinen 提交于
      We currently have two steps in panel initialization and startup: probing
      and enabling. After the panel has been probed, it's ready and can be
      configured and later enabled.
      
      This model is not enough with more complex display pipelines, where we
      may have, for example, two panels, of which only one can be used at a
      time, connected to the same video output.
      
      To support that kind of scenarios, we need to add new step to the
      initialization: connect.
      
      This patch adds support for connecting and disconnecting panels. After
      probe, but before connect, no panel ops should be called. When the
      connect is called, a proper video pipeline is established, and the panel
      is ready for use. If some part in the video pipeline is already
      connected (by some other panel), the connect call fails.
      
      One key difference with the old style setup is that connect() handles
      also connecting to the overlay manager. This means that the omapfb (or
      omapdrm) no longer needs to figure out which overlay manager to use, but
      it can just call connect() on the panel, and the proper overlay manager
      is connected by omapdss.
      
      This also allows us to add back the support for dynamic switching
      between two exclusive panels. However, the current panel device model is
      not changed to support this, as the new device model is implemented in
      the following patches and the old model will be removed. The new device
      model supports dynamic switching.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      a7e71e7f
    • T
      OMAPDRM: fix overlay manager handling · 04b1fc02
      Tomi Valkeinen 提交于
      Currently omapdrm creates crtcs, which map directly to DSS overlay
      managers, only on demand at init time. This would make it difficult to
      manage connecting the display entities in the future, as the code cannot
      just search for a suitable overlay manager.
      
      We cannot fix this the sane way, which would be to create crtcs for each
      overlay manager, because we need an overlay for each crtc. With limited
      number of overlays, that's not possible.
      
      So the solution for now is to detach the overlay manager from the crtc.
      crtcs are still created on demand at init time, but all overlay managers
      are always initialized by the omapdss.
      
      This way we can create and connect whole display pipelines from the
      overlay manager to the display, regardless of which crtcs omapdrm would
      create.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      04b1fc02
    • T
      OMAPDSS: split overlay manager creation · 7f7cdbd6
      Tomi Valkeinen 提交于
      Split the function that creates overlay manager structs into two: one
      that creates just the structs, and one that creates the sysfs files for
      the manager.
      
      This will help us use the overlay manager structs with omapdrm in the
      following patches, while still leaving the sysfs files out.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      7f7cdbd6
    • T
      OMAPDSS: add helpers to get mgr or output from display · be8e8e1c
      Tomi Valkeinen 提交于
      Add two helper functions that can be used to find either the DSS output
      or the overlay manager that is connected to the given display.
      
      This hides how the output and the manager are actually connected, making
      it easier to change the connections in the future.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      be8e8e1c
    • T
      OMAPDSS: clean up dss_[ovl|mgr]_get_device() · e7243664
      Tomi Valkeinen 提交于
      Minor cleanup for the dss_[ovl|mgr]_get_device() functions to make them
      more readable.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      e7243664
    • T
      OMAPDSS: fix dss_get_ctx_loss_count for DT · 679852db
      Tomi Valkeinen 提交于
      When using DT, dss device does not have platform data. However,
      dss_get_ctx_loss_count() uses dss device's platform data to find the
      get_ctx_loss_count function pointer.
      
      To fix this, dss_get_ctx_loss_count() needs to be changed to get the
      platform data from the omapdss device, which is a "virtual" device and
      always has platform data.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      679852db
    • T
      OMAPDSS: add omap_dss_find_output_by_node() · 12ca755b
      Tomi Valkeinen 提交于
      Add a support function to find a DSS output by given DT node. This is
      used in later patches to link the panels to DSS outputs.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      12ca755b
    • T
      OMAPDSS: add omap_dss_find_output() · 805cc2d1
      Tomi Valkeinen 提交于
      Add a support function to find a DSS output by given name. This is used
      in later patches to link the panels to DSS outputs.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      805cc2d1
    • T
      OMAPDSS: only probe pdata if there's one · c6ca5b22
      Tomi Valkeinen 提交于
      omapdss output drivers always read the platform data. This crashes when
      there's no platform data when using DT.
      
      Add a check to read the platform data only if it exists.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      c6ca5b22
    • T
      OMAPDSS: add pdata->default_display_name · 0a200126
      Tomi Valkeinen 提交于
      We can currently set the default display (i.e. the initial display) in
      the omapdss platform data by using a pointer to the default
      omap_dss_device. Internally omapdss uses the device's name to resolve
      the default display.
      
      As it's difficult to get the omap_dss_device pointer in the future,
      after we've changed the omapdss device model, this patch adds a new way
      to define the default display, by using the name of the display.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      Reviewed-by: NArchit Taneja <archit@ti.com>
      0a200126
  2. 09 6月, 2013 12 次提交
    • L
      Linux 3.10-rc5 · 317ddd25
      Linus Torvalds 提交于
      317ddd25
    • M
      hpfs: fix warnings when the filesystem fills up · bbd465df
      Mikulas Patocka 提交于
      This patch fixes warnings due to missing lock on write error path.
      
        WARNING: at fs/hpfs/hpfs_fn.h:353 hpfs_truncate+0x75/0x80 [hpfs]()
        Hardware name: empty
        Pid: 26563, comm: dd Tainted: P           O 3.9.4 #12
        Call Trace:
          hpfs_truncate+0x75/0x80 [hpfs]
          hpfs_write_begin+0x84/0x90 [hpfs]
          _hpfs_bmap+0x10/0x10 [hpfs]
          generic_file_buffered_write+0x121/0x2c0
          __generic_file_aio_write+0x1c7/0x3f0
          generic_file_aio_write+0x7c/0x100
          do_sync_write+0x98/0xd0
          hpfs_file_write+0xd/0x50 [hpfs]
          vfs_write+0xa2/0x160
          sys_write+0x51/0xa0
          page_fault+0x22/0x30
          system_call_fastpath+0x1a/0x1f
      Signed-off-by: NMikulas Patocka <mikulas@artax.karlin.mff.cuni.cz>
      Cc: stable@kernel.org  # 2.6.39+
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      bbd465df
    • L
      Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 81db4dbf
      Linus Torvalds 提交于
      Pull timer fixes from Thomas Gleixner:
      
       - Trivial: unused variable removal
      
       - Posix-timers: Add the clock ID to the new proc interface to make it
         useful.  The interface is new and should be functional when we reach
         the final 3.10 release.
      
       - Cure a false positive warning in the tick code introduced by the
         overhaul in 3.10
      
       - Fix for a persistent clock detection regression introduced in this
         cycle
      
      * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        timekeeping: Correct run-time detection of persistent_clock.
        ntp: Remove unused variable flags in __hardpps
        posix-timers: Show clock ID in proc file
        tick: Cure broadcast false positive pending bit warning
      81db4dbf
    • L
      Merge tag 'irqdomain-for-linus' of git://git.secretlab.ca/git/linux · c3e58a79
      Linus Torvalds 提交于
      Pull irqdomain bug fixes from Grant Likely:
       "This branch contains a set of straight forward bug fixes to the
        irqdomain code and to a couple of drivers that make use of it."
      
      * tag 'irqdomain-for-linus' of git://git.secretlab.ca/git/linux:
        irqchip: Return -EPERM for reserved IRQs
        irqdomain: document the simple domain first_irq
        kernel/irq/irqdomain.c: before use 'irq_data', need check it whether valid.
        irqdomain: export irq_domain_add_simple
      c3e58a79
    • G
      irqchip: Return -EPERM for reserved IRQs · d94ea3f6
      Grant Likely 提交于
      The irqdomain core will report a log message for any attempted map call
      that fails unless the error code is -EPERM. This patch changes the
      Versatile irq controller drivers to use -EPERM because it is normal for
      a subset of the IRQ inputs to be marked as reserved on the various
      Versatile platforms.
      Signed-off-by: NGrant Likely <grant.likely@linaro.org>
      d94ea3f6
    • L
      irqdomain: document the simple domain first_irq · 94a63da0
      Linus Walleij 提交于
      The first_irq needs to be zero to get a linear domain and that
      comes with special semantics. We want to simplify this going
      forward but some documentation never hurts.
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: NGrant Likely <grant.likely@linaro.org>
      94a63da0
    • C
      kernel/irq/irqdomain.c: before use 'irq_data', need check it whether valid. · 275e31b1
      Chen Gang 提交于
      Since irq_data may be NULL, if so, we WARN_ON(), and continue, 'hwirq'
      which related with 'irq_data' has to initialize later, or it will cause
      issue.
      Signed-off-by: NChen Gang <gang.chen@asianux.com>
      Signed-off-by: NGrant Likely <grant.likely@linaro.org>
      275e31b1
    • A
      irqdomain: export irq_domain_add_simple · 346dbb79
      Arnd Bergmann 提交于
      All other irq_domain_add_* functions are exported already, and apparently
      this one got left out by mistake, which causes build errors for ARM
      allmodconfig kernels:
      
      ERROR: "irq_domain_add_simple" [drivers/gpio/gpio-rcar.ko] undefined!
      ERROR: "irq_domain_add_simple" [drivers/gpio/gpio-em.ko] undefined!
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Acked-by: NSimon Horman <horms+renesas@verge.net.au>
      Signed-off-by: NGrant Likely <grant.likely@linaro.org>
      346dbb79
    • L
      Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 50b4b9c3
      Linus Torvalds 提交于
      Pull ARM SoC fixes from Olof Johansson:
       "Another week, another batch of fixes for arm-soc platforms.
      
        Nothing controversial here, a handful of fixes for regressions and/or
        serious problems across several of the platforms.  Things are slowing
        down nicely on fix rates for 3.10"
      
      * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        ARM: exynos: add debug_ll_io_init() call in exynos_init_io()
        ARM: EXYNOS: uncompress - print debug messages if DEBUG_LL is defined
        ARM: shmobile: sh73a0: Update CMT clockevent rating to 80
        sh-pfc: r8a7779: Don't group USB OVC and PENC pins
        ARM: mxs: icoll: Fix interrupts gpio bank 0
        ARM: imx: clk-imx6q: AXI clock select index is incorrect
        ARM: bcm2835: override the HW UART periphid
        ARM: mvebu: Fix bug in coherency fabric low level init function
        ARM: Kirkwood: TS219: Fix crash by double PCIe instantiation
        ARM: ux500: Provide supplies for AUX1, AUX2 and AUX3
        ARM: ux500: Only configure wake-up reasons on ux500 based platforms
        ARM: dts: imx: fix clocks for cspi
        ARM i.MX6q: fix for ldb_di_sels
      50b4b9c3
    • L
      Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus · 554e6e9f
      Linus Torvalds 提交于
      Pull MIPS fixes from Ralf Baechle:
       "MIPS fixes across the field.  The only area that's standing out is the
        exception handling which received it's dose of breakage as part of the
        microMIPS patchset"
      
      * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus:
        MIPS: ralink: add missing SZ_1M multiplier
        MIPS: Compat: Fix cputime_to_timeval() arguments in compat binfmt_elf.
        MIPS: OCTEON: Improve _machine_halt implementation.
        MIPS: rtlx: Fix implicit declaration of function set_vi_handler()
        MIPS: Trap exception handling fixes
        MIPS: Quit exposing Kconfig symbols in uapi headers.
        MIPS: Remove duplicate definition of check_for_high_segbits.
      554e6e9f
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu · 17d8dfcd
      Linus Torvalds 提交于
      Pull m68knommu fix from Greg Ungerer:
       "A single fix for compilation breakage to many of the ColdFire CPU
        targets"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu:
        m68k: only use local gpio_request_one if not using GPIOLIB
      17d8dfcd
    • L
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · 6ea31c56
      Linus Torvalds 提交于
      Pull drm fixes from Dave Airlie:
       "Regression fixers for the big 3:
      
         - nouveau: hdmi audio, dac load detect, s/r regressions fixed
         - radeon: long standing system hang fixed, hdmi audio and rs780 fast
           fb fixes
         - intel: one old regression, a WARN removal, and a stop X dying fix
      
        Otherwise one mgag200 fix, a couple of arm build fixes, and a core use
        after free fix."
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
        drm/nv50/kms: use dac loadval from vbios, where it's available
        drm/nv50/disp: force dac power state during load detect
        drm/nv50-nv84/fifo: fix resume regression introduced by playlist race fix
        drm/nv84/disp: Fix HDMI audio regression
        drm/i915/sdvo: Use &intel_sdvo->ddc instead of intel_sdvo->i2c for DDC.
        drm/radeon: don't allow audio on DCE6
        drm/radeon: Use direct mapping for fast fb access on RS780/RS880 (v2)
        radeon: Fix system hang issue when using KMS with older cards
        drm/i915: no lvds quirk for hp t5740
        drm/i915: Quirk the pipe A quirk in the modeset state checker
        drm/i915: Fix spurious -EIO/SIGBUS on wedged gpus
        drm/mgag200: Add missing write to index before accessing data register
        drm/nouveau: use mdelay instead of large udelay constants
        drm/tilcd: select BACKLIGHT_LCD_SUPPORT
        drm: fix a use-after-free when GPU acceleration disabled
      6ea31c56