1. 16 4月, 2013 11 次提交
    • V
      drm/exynos: Add display-timing node parsing using video helper function · 7f4596f4
      Vikas Sajjan 提交于
      Add support for parsing the display-timing node using video helper
      function.
      
      The DT node parsing is done only if 'dev.of_node'
      exists and the NON-DT logic is still maintained under the 'else' part.
      Signed-off-by: NLeela Krishna Amudala <l.krishna@samsung.com>
      Signed-off-by: NVikas Sajjan <vikas.sajjan@linaro.org>
      Acked-by: NJoonyoung Shim <jy0922.shim@samsung.com>
      Signed-off-by: NInki Dae <inki.dae@samsung.com>
      7f4596f4
    • R
      drm/exynos: hdmi: move mode_fixup to drm common hdmi · 7ddcc736
      Rahul Sharma 提交于
      Currently, mode_fixup code doesn't consider the limitations of mixer as it
      is implemented inside the hdmi driver. Following fix, moves the mode_fixup
      to common drm hdmi driver. To check the mode support, it calls both, mixer
      and hdmi check_timing callbacks for a given resolution mode.
      
      This patch is dependent on https://patchwork.kernel.org/patch/2176021/.
      Signed-off-by: NRahul Sharma <rahul.sharma@samsung.com>
      Signed-off-by: NInki Dae <inki.dae@samsung.com>
      7ddcc736
    • R
      drm/exynos: hdmi: using drm_display_mode timings for exynos4 · 6b986edf
      Rahul Sharma 提交于
      Exynos5 is already using drm_display_mode for timings parameters. Exynos4
      is also modifed to use the same. List of supported resolutions and
      corresponding timings are removed which helps is enabling some extra
      resolutions. It also cleans some of the duplicate code.
      
      Exynos4 and Exynos5 Mixers, work fine for the same range of resolutions. Hence
      same condition (to find the supported mode) is applied to both.
      
      More exynos4 phy configs can be added later to extend the mode supprot.
      Signed-off-by: NRahul Sharma <rahul.sharma@samsung.com>
      Signed-off-by: NInki Dae <inki.dae@samsung.com>
      6b986edf
    • D
      drm/qxl: fix smatch warnings · 62c8ba7c
      Dave Airlie 提交于
      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: NDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      62c8ba7c
    • D
      drm/qxl: make lots of things static. · 6d01f1f5
      Dave Airlie 提交于
      /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: NDave Airlie <airlied@redhat.com>
      6d01f1f5
    • D
      Merge tag 'omapdss-for-3.10' of git://gitorious.org/linux-omap-dss2/linux into drm-next · dea14dfa
      Dave Airlie 提交于
      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
    • C
      drm: Perform ioctl command validation on the stored kernel values · e4fda9f2
      Chris Wilson 提交于
      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: NTommi Rantala <tt.rantala@gmail.com>
      Link: http://lkml.kernel.org/r/CA+ydwtpuBvbwxbt-tdgPUvj1EU7itmCHo_2B3w13HkD5+jWKow@mail.gmail.comSigned-off-by: NTommi Rantala <tt.rantala@gmail.com>
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      e4fda9f2
    • P
      drm.h: Fix DRM compilation with bare-metal toolchain. · b6330548
      Paul Sokolovsky 提交于
      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: NPaul Sokolovsky <paul.sokolovsky@linaro.org>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      b6330548
    • L
      drm: use vma_pages() to replace (vm_end - vm_start) >> PAGE_SHIFT · 025df775
      Libin 提交于
      (*->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: NLibin <huawei.libin@huawei.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      025df775
    • L
      drm: Destroy property blobs at mode config cleanup time · 87d24fc3
      Laurent Pinchart 提交于
      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: NLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      87d24fc3
    • D
      Merge tag 'drm-intel-next-2013-04-06' of... · 28184f22
      Dave Airlie 提交于
      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
  2. 15 4月, 2013 1 次提交
  3. 12 4月, 2013 8 次提交
  4. 11 4月, 2013 7 次提交
    • T
      drm/omap: add statics to a few structs · 6717cd29
      Tomi Valkeinen 提交于
      Some static structs are not marked as static. Add it.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      6717cd29
    • A
      drm/omap: Fix and improve crtc and overlay manager correlation · 0d8f371f
      Archit Taneja 提交于
      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: NArchit Taneja <archit@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      0d8f371f
    • A
      drm/omap: Take a fb reference in omap_plane_update() · b03e14fd
      Archit Taneja 提交于
      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: NArchit Taneja <archit@ti.com>
      Reviewed-by: NRob Clark <robdclark@gmail.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      b03e14fd
    • A
      drm/omap: Make fixed resolution panels work · bddabbe1
      Archit Taneja 提交于
      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: NArchit Taneja <archit@ti.com>
      Reviewed-by: NRob Clark <robdclark@gmail.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      bddabbe1
    • A
      drm/omap: fix modeset_init if a panel doesn't satisfy omapdrm requirements · 581382e3
      Archit Taneja 提交于
      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: NArchit Taneja <archit@ti.com>
      Reviewed-by: NRob Clark <robdclark@gmail.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      581382e3
    • T
      OMAPDSS: DPI: widen the pck search when using dss fck · 2c6360fb
      Tomi Valkeinen 提交于
      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: NTomi Valkeinen <tomi.valkeinen@ti.com>
      2c6360fb
    • T
      OMAPDSS: fix dss_fck clock rate rounding · 648a55e1
      Tomi Valkeinen 提交于
      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: NTomi Valkeinen <tomi.valkeinen@ti.com>
      648a55e1
  5. 10 4月, 2013 8 次提交
  6. 06 4月, 2013 5 次提交