1. 18 Apr, 2013 1 commit
  2. 17 Apr, 2013 1 commit
    • Dave Airlie's avatar
      Merge branch 'gma500-next' of git://github.com/patjak/drm-gma500 into drm-next · 9f7bc6ac
      Dave Airlie authored
      Patrik writes:
      
      I haven't had much review or testing on other platforms than Poulsbo but
      at least the following Cedarview bug has been squashed and no
      regressions reported: https://bugs.freedesktop.org/show_bug.cgi?id=58527
      
      * 'gma500-next' of git://github.com/patjak/drm-gma500:
        drm/gma500: Add debugging info to psb_gtt_restore()
        drm/gma500: Check connector status before restoring sdvo
        gma500:fix build failure for 3.9-rc5
        drm/gma500: Fix hibernation problems on sdvo encoders
        drm/gma500: Add hooks for hibernation
        drm/gma500: Activate the gtt rebuild on suspend/resume
        drm/gma500: Add support for rebuilding the gtt
        drm/gma500: Change fb name so pm-utils doesn't apply quirks
        gma500: Make VGA and HDMI connector hotpluggable
        drm/gma500: Clean up various defines
        drm/gma500: Remove unnecessary function exposure
        drm/gma500: Type clock limits directly into array and remove defines
        drm/gma500: Calculate clock in one function instead of three identical
        drm/gma500: Remove unused i8xx clock limits
        gma500: medfield: Fix possible NULL pointer dereference
        drivers: gpu: drm: gma500: Replaced calls kzalloc & memcpy with kmemdup
        gma500: remove unused drm_psb_no_fb
      9f7bc6ac
  3. 16 Apr, 2013 11 commits
    • Dave Airlie's avatar
      Merge branch 'drm-next-3.10' of git://people.freedesktop.org/~agd5f/linux into drm-next · f18353ee
      Dave Airlie authored
      Alex writes:
      This is the initial 3.10 pull request for radeon.  The big changes here
      are UVD support and proper tiling support for SI.  The rest is
      bug fixes.  I hope to have another pull request later in the week with
      some new things we've been working on internally.
      
      * 'drm-next-3.10' of git://people.freedesktop.org/~agd5f/linux: (28 commits)
        drm/radeon: Always flush the VM
        drm/radeon: re-enable PTE/PDE packet for set_page on cayman/TN
        drm/radeon: cleanup properly if mmio mapping fails
        drm/radeon/evergreen+: don't enable HPD interrupts on eDP/LVDS
        drm/radeon: add si tile mode array query v3
        drm/radeon: add ring working query
        drm/radeon: handle broken disabled rb mask gracefully
        drm/radeon: add pcie set/get lanes callbacks for newer asics
        drm/radeon: update r600 set/get pcie lane config
        drm/radeon/kms: replace *REG32_PCIE_P with *REG32_PCIE_PORT
        drm/radeon: remove unused blit remnants from si.c
        drm/radeon: add UVD tiling addr config v2
        drm/radeon: init UVD clocks to sane defaults
        drm/radeon: add set_uvd_clocks callback for r7xx v3
        drm/radeon: add set_uvd_clocks callback for SI
        drm/radeon: add set_uvd_clocks callback for evergreen
        drm/radeon: add set_uvd_clocks callback for ON/LN/TN (v4)
        drm/radeon: add radeon_atom_get_clock_dividers helper
        drm/radeon: add pm callback for setting uvd clocks
        drm/radeon: UVD bringup v8
        ...
      f18353ee
    • Jerome Glisse's avatar
      drm/radeon: Always flush the VM · 466476df
      Jerome Glisse authored
      This is slightly cleaned up version of Jerome's patch.
      There seems to be an issue tracking the last flush of
      the VM which results in hangs in certain cases when
      VM is used.  For now just flush the VM for every IB.
      
      Fixes:
      https://bugs.freedesktop.org/show_bug.cgi?id=62959
      https://bugs.freedesktop.org/show_bug.cgi?id=62997Signed-off-by: default avatarJerome Glisse <jglisse@redhat.com>
      Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Cc: stable@vger.kernel.org
      466476df
    • Alex Deucher's avatar
      drm/radeon: re-enable PTE/PDE packet for set_page on cayman/TN · 2ab91ada
      Alex Deucher authored
      PTE/PDE doesn't support a single update (count = 1).  We had
      previously disabled it since it we were hitting that case which
      let to hangs.  The PTE/PDE packet is much more efficient for VM
      updates where it can be used.
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      2ab91ada
    • Dave Airlie's avatar
      drm/qxl: fix smatch warnings · 62c8ba7c
      Dave Airlie authored
      drivers/gpu/drm/qxl/qxl_display.c:99 qxl_alloc_client_monitors_config() error: dereferencing freed memory 'qdev->client_monitors_config'
      drivers/gpu/drm/qxl/qxl_object.c:66 qxl_ttm_placement_from_domain() warn: bitwise AND condition is false here
      drivers/gpu/drm/qxl/qxl_ioctl.c:353 qxl_clientcap_ioctl() warn: buffer overflow 'qdev->rom->client_capabilities' 58 <= 58
      Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      62c8ba7c
    • Dave Airlie's avatar
      drm/qxl: make lots of things static. · 6d01f1f5
      Dave Airlie authored
      /usr/lib/gcc/x86_64-linux-gnu/4.7/include/stddef.h:414:9: sparse: preprocessor token offsetof redefined
      include/linux/stddef.h:17:9: this was the original definition
      >> drivers/gpu/drm/qxl/qxl_drv.c:49:5: sparse: symbol 'qxl_modeset' was not declared. Should it be static?
      
      Reported-by: kbuild test robot.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      6d01f1f5
    • Dave Airlie's avatar
      Merge tag 'omapdss-for-3.10' of git://gitorious.org/linux-omap-dss2/linux into drm-next · dea14dfa
      Dave Airlie authored
      Omapdss patches for 3.10 merge window
      
      The biggest changes are:
      
      * DSI video mode: automatic clock and timing calculation
      * Lots of platform data related panel driver cleanups, to prepare for DT
      
      * tag 'omapdss-for-3.10' of git://gitorious.org/linux-omap-dss2/linux: (69 commits)
        drm/omap: add statics to a few structs
        drm/omap: Fix and improve crtc and overlay manager correlation
        drm/omap: Take a fb reference in omap_plane_update()
        drm/omap: Make fixed resolution panels work
        drm/omap: fix modeset_init if a panel doesn't satisfy omapdrm requirements
        OMAPDSS: DPI: widen the pck search when using dss fck
        OMAPDSS: fix dss_fck clock rate rounding
        omapdss: use devm_clk_get()
        OMAPDSS: nec-nl8048 panel: Use dev_pm_ops
        OMAPDSS: DISPC: Revert to older DISPC Smart Standby mechanism for OMAP5
        OMAPDSS: DISPC: Configure doublestride for NV12 when using 2D Tiler buffers
        omapdss: Features: Fix some parameter ranges
        omapdss: DISPC: add max pixel clock limits for LCD and TV managers
        OMAPDSS: DSI: Use devm_clk_get()
        drivers: video: omap2: dss: Use PTR_RET function
        OMAPDSS: VENC: remove platform_enable/disable calls
        OMAPDSS: n8x0 panel: remove use of platform_enable/disable
        OMAPDSS: n8x0 panel: handle gpio data in panel driver
        OMAPDSS: picodlp panel: remove platform_enable/disable callbacks
        OMAPDSS: picodlp panel: handle gpio data in panel driver
        ...
      dea14dfa
    • Chris Wilson's avatar
      drm: Perform ioctl command validation on the stored kernel values · e4fda9f2
      Chris Wilson authored
      Userspace is free to pass in any command bits it feels like through the
      ioctl cmd, and for example trinity likes to fuzz those bits to create
      conflicting commands. So instead of relying upon userspace to pass along
      the correct IN/OUT flags for the ioctl, use the flags as expected by the
      kernel.
      
      This does have a side-effect that NULL pointers can not be substituted
      by userspace in place of a struct. This feature was not being used by
      any driver, but instead exposed all of the command handlers to a user
      triggerable OOPS.
      Reported-by: default avatarTommi Rantala <tt.rantala@gmail.com>
      Link: http://lkml.kernel.org/r/CA+ydwtpuBvbwxbt-tdgPUvj1EU7itmCHo_2B3w13HkD5+jWKow@mail.gmail.comSigned-off-by: default avatarTommi Rantala <tt.rantala@gmail.com>
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      e4fda9f2
    • Paul Sokolovsky's avatar
      drm.h: Fix DRM compilation with bare-metal toolchain. · b6330548
      Paul Sokolovsky authored
      An ifdef in drm.h expects to be compiled with full-fledged Linux
      toolchain, but it's common to compile kernel with just bare-metal
      toolchain which doesn't define __linux__. So, also add __KERNEL__
      check.
      
      [nm@ti.com: port forward to 3.9-rc6 and post to dri devel for feedback as RFC]
      Signed-off-by: default avatarPaul Sokolovsky <paul.sokolovsky@linaro.org>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      b6330548
    • Libin's avatar
      drm: use vma_pages() to replace (vm_end - vm_start) >> PAGE_SHIFT · 025df775
      Libin authored
      (*->vm_end - *->vm_start) >> PAGE_SHIFT operation is implemented
      as a inline funcion vma_pages() in linux/mm.h, so using it.
      Signed-off-by: default avatarLibin <huawei.libin@huawei.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      025df775
    • Laurent Pinchart's avatar
      drm: Destroy property blobs at mode config cleanup time · 87d24fc3
      Laurent Pinchart authored
      Property blob objects need to be destroyed when cleaning up to avoid
      memory leaks. Go through the list of all blobs in the
      drm_mode_config_cleanup() function and destroy them.
      
      The drm_mode_config_cleanup() function needs to be moved after the
      drm_property_destroy_blob() declaration. Move drm_mode_config_init() as
      well to keep the functions together.
      Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
      Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      87d24fc3
    • Dave Airlie's avatar
      Merge tag 'drm-intel-next-2013-04-06' of... · 28184f22
      Dave Airlie authored
      Merge tag 'drm-intel-next-2013-04-06' of git://people.freedesktop.org/~danvet/drm-intel into drm-next
      
      Daniel writes:
      Since I expect Linus to open the merge window in about a week I guess this
      is the last i915 feature pull for 3.10. Highlights:
      Updated testing tree for -next. Highlights:
      - Corner case fixes discovered with static analyzers (Damien).
      - More fixes to combat unclaimed register errors on Haswell (Paulo).
      - Some small fixes to the gpu turbo code (Rodrigo+Ben), Ben has more
        fixes for overclocking support pending.
      - More prep work for fastboot from Chris.
      - VT-switchless suspend/resume from Jesse.
      - The prep work of Egbert Eich's hpd irq storm handling. Hopefully we can
        squeeze in the actual storm handling code for 3.10 ...
      - More convenience helpers for Imre's sg iterator. Core parts acked by
        Andrew Morton.
      - A bit of backlight code cleanup from Jani.
      - Fixed ilk gpu reset (Jesse).
      - Reduced color range handling fixes for VLV (Ville).
      
      The big item here is though the introduction of pipe_config to properly
      pre-compute the desired modeset state before touching the hw. Together
      with some very basic support to read out the current config from the hw
      and compare the state with the sw tracking. This is all prep work for more
      reliable fastboot, atomic modesets and other cool features. Stuff
      converted to the new world includes:
      - Most simple pipe attributes (reduce color range, pixel multiplier).
      - Pipe bpp/dither handling.
      - Some convenience flags like ->has_pch_encoder to simplify the code flow.
      - (Almost) DP clock handling, had to be reverted since part of a prep
        patch was lost in rebasing ...
      Expect a lot of patches for this throughout 3.11, there's tons of work
      till we have all state properly tracked for fastbooting to woExpect a lot
      of patches for this throughout 3.11, there's tons of work till we have all
      state properly tracked for fastbooting to work.
      
      For 3.10 I have a bunch of fixes queued up and I plan to send them all out
      at the end of this week. I need to shuffle patches in my -next queue a bit
      so that we don't but feature-y stuff in there, too. The main thing I'd
      like to sneak in is Egbert's hpd irq storm handling, which should be
      pretty low-risk since all the infrastructure work has landed already. I
      also have the oops fix pending, but that only mustered review before the
      w/e and giving how hairy that part of our modeset code is, I want to give
      it some more testing before forwarding.
      
      Note: annarchy.fd.o seems to run out of disk space, so couldn't push the
      usual for-airlied branch. Tag should work though.
      
      Note 2: I've had to do a backmerge since conflicts grew too ugly, but the
      upstream -rc I've backmerged is already in your drm-next.
      
      * tag 'drm-intel-next-2013-04-06' of git://people.freedesktop.org/~danvet/drm-intel: (75 commits)
        drm/i915: info level for simulated gpu hang dmesg notice
        drm/i915: revert eDP bpp clamping code changes
        Revert "drm/i915: fix DP get_hw_state return value"
        drm/i915: Don't use the HDMI port color range bit on Valleyview
        drm/i915: Set PIPECONF color range bit on Valleyview
        drm/i915: extract i9xx_set_pipeconf
        drm/i915: Add no-lvds quirk for Fujitsu Esprimo Q900
        drm/i915: create pipe_config->dpll for clock state
        drm/i915: hw readout support for ->has_pch_encoders
        drm/i915: add hw state readout/checking for pipe_config
        drm/i915: rip out superflous is_dp&is_cpu_edp tracking
        drm/i915: remove leaky eDP functions
        drm/i915: track dp target_clock in pipe_config
        drm/i915: move dp_m_n computation to dp_encoder->compute_config
        drm/i915: clear up the fdi/dp set_m_n confusion
        drm/i915: Fix sdvo connector get_hw_state function
        drm/i915: drop DPFLIPSTAT enables on VLV v3
        drm/i915: add Punit read/write routines for VLV v2
        drm/i915: panel power sequencing for VLV eDP v2
        drm/i915/dp: fix up VLV DP handling v2
        ...
      28184f22
  4. 15 Apr, 2013 5 commits
  5. 12 Apr, 2013 8 commits
  6. 11 Apr, 2013 10 commits
    • Jerome Glisse's avatar
      drm/radeon: add si tile mode array query v3 · 64d7b8be
      Jerome Glisse authored
      Allow userspace to query for the tile mode array so userspace can properly
      compute surface pitch and alignment requirement depending on tiling.
      
      v2: Make strict aliasing safer by casting to char when copying
      v3: merge fix from Christian
      Signed-off-by: default avatarJerome Glisse <jglisse@redhat.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      64d7b8be
    • Christian König's avatar
      drm/radeon: add ring working query · 902aaef6
      Christian König authored
      Add new ioctl option and bumb minor version number.
      Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
      Reviewed-by: default avatarJerome Glisse <jglisse@redhat.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      902aaef6
    • Alex Deucher's avatar
      drm/radeon: handle broken disabled rb mask gracefully · cedb655a
      Alex Deucher authored
      If the disabled rb mask register is not properly initialized
      program a sane default based on the number of RBs for the
      asic.  This avoids a potential divide by 0 when calculating
      the backend mask.
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      cedb655a
    • Tomi Valkeinen's avatar
      drm/omap: add statics to a few structs · 6717cd29
      Tomi Valkeinen authored
      Some static structs are not marked as static. Add it.
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      6717cd29
    • Archit Taneja's avatar
      drm/omap: Fix and improve crtc and overlay manager correlation · 0d8f371f
      Archit Taneja authored
      The omapdrm driver currently takes a config/module arg to figure out the number
      of crtcs it needs to create. We could create as many crtcs as there are overlay
      managers in the DSS hardware, but we don't do that because each crtc eats up
      one DSS overlay, and that reduces the number of planes we can attach to a single
      crtc.
      
      Since the number of crtcs may be lesser than the number of hardware overlay
      managers, we need to figure out which overlay managers to use for our crtcs. The
      current approach is to use pipe2chan(), which returns a higher numbered manager
      for the crtc.
      
      The problem with this approach is that it assumes that the overlay managers we
      choose will connect to the encoders the platform's panels are going to use,
      this isn't true, an overlay manager connects only to a few outputs/encoders, and
      choosing any overlay manager for our crtc might lead to a situation where the
      encoder cannot connect to any of the crtcs we have chosen. For example, an
      omap5-panda board has just one hdmi output. If num_crtc is set to 1, with the
      current approach, pipe2chan will pick up the LCD2 overlay manager, which cannot
      connect to the hdmi encoder at all. The only manager that could have connected
      to hdmi was the TV overlay manager.
      
      Therefore, there is a need to choose our overlay managers keeping in mind the
      panels we have on that platform. The new approach iterates through all the
      available panels, creates encoders and connectors for them, and then tries to
      get a suitable overlay manager to create a crtc which can connect to the
      encoders.
      
      We use the dispc_channel field in omap_dss_output to retrieve the desired
      overlay manager's channel number, we then check whether the manager had already
      been assigned to a crtc or not. If it was already assigned to a crtc, we assume
      that out of all the encoders which intend use this crtc, only one will run at a
      time. If the overlay manager wan't assigned to a crtc till then, we create a
      new crtc and link it with the overlay manager.
      
      This approach just looks for the best dispc_channel for each encoder. On DSS HW,
      some encoders can connect to multiple overlay managers. Since we don't try
      looking for alternate overlay managers, there is a greater possibility that 2
      or more encoders end up asking for the same crtc, causing only one encoder to
      run at a time.
      
      Also, this approach isn't the most optimal one, it can do either good or bad
      depending on the sequence in which the panels/outputs are parsed. The optimal
      way would be some sort of back tracking approach, where we improve the set of
      managers we use as we iterate through the list of panels/encoders. That's
      something left for later.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      0d8f371f
    • Archit Taneja's avatar
      drm/omap: Take a fb reference in omap_plane_update() · b03e14fd
      Archit Taneja authored
      When userspace calls SET_PLANE ioctl, drm core takes a reference of the fb and
      passes control to the update_plane op defined by the drm driver.
      
      In omapdrm, we have a worker thread which queues framebuffers objects received
      from update_plane and displays them at the appropriate time.
      
      It is possible that the framebuffer is destoryed by userspace between the time
      of calling the ioctl and apply-worker being scheduled. If this happens, the
      apply-worker holds a pointer to a framebuffer which is already destroyed.
      
      Take an extra refernece/unreference of the fb in omap_plane_update() to prevent
      this from happening. A reference is taken of the fb passed to update_plane(),
      the previous framebuffer (held by plane->fb) is unreferenced. This will prevent
      drm from destroying the framebuffer till the time it's unreferenced by the
      apply-worker.
      
      This is in addition to the exisitng reference/unreference in update_pin(),
      which is taken for the scanout of the plane's current framebuffer, and an
      unreference the previous framebuffer.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      Reviewed-by: default avatarRob Clark <robdclark@gmail.com>
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      b03e14fd
    • Archit Taneja's avatar
      drm/omap: Make fixed resolution panels work · bddabbe1
      Archit Taneja authored
      The omapdrm driver requires omapdss panel drivers to expose ops like detect,
      set_timings and check_timings. These can be NULL for fixed panel DPI, DBI, DSI
      and SDI drivers. At some places, there are no checks to see if the panel driver
      has these ops or not, and that leads to a crash.
      
      The following things are done to make fixed panels work:
      
      - The omap_connector's detect function is modified such that it considers panel
        types which are generally fixed panels as always connected(provided the panel
        driver doesn't have a detect op). Hence, the connector corresponding to these
        panels is always in a 'connected' state.
      
      - If a panel driver doesn't have a check_timings op, assume that it supports the
        mode passed to omap_connector_mode_valid(the 'mode_valid' drm helper function)
      
      - The function omap_encoder_update shouldn't really do anything for fixed
        resolution panels, make sure that it calls set_timings only if the panel
        driver has one.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      Reviewed-by: default avatarRob Clark <robdclark@gmail.com>
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      bddabbe1
    • Archit Taneja's avatar
      drm/omap: fix modeset_init if a panel doesn't satisfy omapdrm requirements · 581382e3
      Archit Taneja authored
      modeset_init iterates through all the registered omapdss devices and has some
      initial checks to see if the panel has a driver and the required driver ops for
      it to be usable by omapdrm.
      
      The function bails out from modeset_init if a panel doesn't meet the
      requirements, and stops the registration of the future panels and encoders which
      come after it, that isn't the correct thing to do, we should go through the rest
      of the panels. Replace the 'return's with 'continue's.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      Reviewed-by: default avatarRob Clark <robdclark@gmail.com>
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      581382e3
    • Tomi Valkeinen's avatar
      OMAPDSS: DPI: widen the pck search when using dss fck · 2c6360fb
      Tomi Valkeinen authored
      When not using DSI PLL to generate the pixel clock, but DSS FCK, the
      possible pixel clock rates are rather limited. DSS FCK is currently used
      on OMAP2 and OMAP3.
      
      When using Beagleboard with a monitor that supports high resolutions,
      the clock rates do not match (at least for me) for the monitor's pixel
      clocks within the current threshold in the code, which is +/- 1MHz.
      
      This patch widens the search up to +/- 15MHz. The search is done in
      steps, i.e. it first tries to find a rather exact clock, than a bit less
      exact, etc. so this should not change the cases where a clock was
      already found.
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      2c6360fb
    • Tomi Valkeinen's avatar
      OMAPDSS: fix dss_fck clock rate rounding · 648a55e1
      Tomi Valkeinen authored
      DSS func clock is calculated with prate / div * m. However, the current
      omapdss code calculates it with prate * m / div, which yields a slightly
      different result when there's a remainder. For example, 432000000 / 14 *
      2 = 61714284, but 432000000 * 2 / 14 = 61714285.
      
      In addition to that, the clock framework wants the clock rate given with
      clk_set_rate to be higher than the actual (truncated) end result. So, if
      prate is 432000000, and div is 14, the real result is 30857142.8571...
      We need to call clk_set_rate with 30857143, which gives us a clock of
      30857142. That's why we need to use DIV_ROUND_UP() when calling
      clk_set_rate.
      
      This patch fixes the clock calculation.
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      648a55e1
  7. 10 Apr, 2013 4 commits