1. 10 8月, 2012 1 次提交
    • R
      OMAPDSS: DISPC: Improvements to DIGIT sync signal selection · 8aa2eed1
      Ricardo Neri 提交于
      DSS code wrongly assumes that VENC is always available as source for the external
      sync signal for the display controller DIGIT channel. One cannot blindly write/read
      the value of DSS_CONTROL[15] as in certain processors (e.g., OMAP5) this operation
      may not be valid. If the the sync source is not read correctly, the callers of
      dss_get_hdmi_venc_clk_source might make wrong assumptions about, for instance,
      video timings.
      
      Logic is added to correctly get the sync signal based on the available displays
      in the DIGIT channel. The source is set only if both VENC and HDMI are supported.
      Signed-off-by: NRicardo Neri <ricardo.neri@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      8aa2eed1
  2. 29 6月, 2012 3 次提交
    • A
      OMAPDSS: Remove passive matrix LCD support (part 1) · 6d523e7b
      Archit Taneja 提交于
      Remove clock constraints related to passive matrix displays.
      
      There is a constraint (pcd_min should be 3) for passive matrix displays. Remove
      this constraint in clock divider calculations as we won't support passive
      matrix displays any more.
      
      This cleans up the functions which calculate the clock dividers with DSI's PLL
      or DSS_FCLK as the clock source.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      6d523e7b
    • C
      OMAPDSS: Add LCD3 overlay manager and Clock and IRQ support · e86d456a
      Chandrabhanu Mahapatra 提交于
      The support for LCD3 manager has been added into the manager module. LCD3 panel
      has registers as DISPC_CONTROL3 and DISPC_CONFIG3 just like those in LCD and
      LCD2 panels. These registers control the Display Controller (DISPC) module for
      LCD3 output. The three LCDs support Display Serial Interface (DSI), Remote Frame
      Buffer Interface (RFBI) and Parallel CMOS Output Interface (DPI). These LCDs can
      be connected through parallel output interface using DISPC and RFBI or DPI. For
      serial interface DSS uses DSI.
      
      The LCD3 panel, just like LCD and LCD2 panels, has a clock switch in DSS_CTRL
      register which has been enabled. The clock switch chooses between DSS_CLK and
      DPLL_DSI1_C_CLK1 as source for LCD3_CLK. New IRQs as DISPC_IRQ_VSYNC3,
      DISPC_IRQ_FRAMEDONE3, DISPC_IRQ_ACBIAS_COUNT_STAT3 and DISPC_IRQ_SYNC_LOST3 have
      been added specific to the new manager.
      Signed-off-by: NChandrabhanu Mahapatra <cmahapatra@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      e86d456a
    • T
      OMAPDSS: fix warnings if CONFIG_PM_RUNTIME=n · 5be3aebd
      Tomi Valkeinen 提交于
      If runtime PM is not enabled in the kernel config, pm_runtime_get_sync()
      will always return 1 and pm_runtime_put_sync() will always return
      -ENOSYS. pm_runtime_get_sync() returning 1 presents no problem to the
      driver, but -ENOSYS from pm_runtime_put_sync() causes the driver to
      print a warning.
      
      One option would be to ignore errors returned by pm_runtime_put_sync()
      totally, as they only say that the call was unable to put the hardware
      into suspend mode.
      
      However, I chose to ignore the returned -ENOSYS explicitly, and print a
      warning for other errors, as I think we should get notified if the HW
      failed to go to suspend properly.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      Cc: Jassi Brar <jaswinder.singh@linaro.org>
      Cc: Grazvydas Ignotas <notasas@gmail.com>
      5be3aebd
  3. 04 6月, 2012 1 次提交
    • T
      OMAPDSS: fix bogus WARN_ON in dss_runtime_put() · 5025ce07
      Tomi Valkeinen 提交于
      pm_runtime_put_sync() in dss_runtime_put() returns -EBUSY when any child
      of dss is still enabled. This happens, for example, when a display
      output is enabled and one dumps the clocks via debugfs. This causes
      dss_runtime_get & put to be called.
      
      While I couldn't find anything about this in the documentation and it
      wasn't immediately clear from runtime_pm code, it looks to me that
      pm_runtime_put_sync() returns -EBUSY to inform that things went fine,
      but the device could not be turned off as there are still child devices
      that are enabled. This is not a problem.
      
      This patch skips the WARN_ON if pm_runtime_put_sync() returns -EBUSY.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      5025ce07
  4. 22 5月, 2012 1 次提交
    • T
      OMAPDSS: remove compiler warnings when CONFIG_BUG=n · c6eee968
      Tomi Valkeinen 提交于
      If CONFIG_BUG is not enabled, BUG() does not stop the execution. Many
      places in code expect the execution to stop, and this causes compiler
      warnings about uninitialized variables and returning from a non-void
      function without a return value.
      
      This patch fixes the warnings by initializing the variables and
      returning properly after BUG() lines. However, the behaviour is still
      undefined after the BUG, but this is the choice the user makes when
      using CONFIG_BUG=n.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      c6eee968
  5. 11 5月, 2012 6 次提交
  6. 09 5月, 2012 1 次提交
  7. 23 4月, 2012 1 次提交
    • T
      OMAPDSS: Ensure OPP100 when DSS is operational · a8081d31
      Tomi Valkeinen 提交于
      Most of the DSS clocks have restrictions on their frequency based on the
      OPP in use. For example, maximum frequency for a clock may be 180MHz in
      OPP100, but 90MHz in OPP50. This means that when a high enough pixel
      clock or function clock is required, we need to use OPP100.
      
      However, there's currently no way in the PM framework to make that kind
      of request. The closest we get is to ask for very high bus throughput
      from the PM framework, which should effectively force OPP100.
      
      This patch is a simple version for handling the problem. Instead of
      asking for OPP100 only when needed, this patch asks for OPP100 whenever
      DSS is active. This obviously is not an optimal solution for cases with
      small displays where OPP50 would work just fine. However, a proper
      solution is a complex one, and this patch is a short term solution for
      the problem.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      Cc: Paul Walmsley <paul@pwsan.com>
      Acked-by: NKevin Hilman <khilman@ti.com>
      a8081d31
  8. 25 2月, 2012 1 次提交
  9. 21 2月, 2012 1 次提交
    • T
      OMAPDSS: cleanup probe functions · cd3b3449
      Tomi Valkeinen 提交于
      Now that dss is using devm_ functions for allocation in probe functions,
      small reordering of the allocations allows us to clean up the probe
      functions more.
      
      This patch moves "unmanaged" allocations after the managed ones, and
      uses plain returns instead of gotos where possible. This lets us remove
      a bunch of goto labels, simplifying the probe's error handling.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      cd3b3449
  10. 26 1月, 2012 1 次提交
    • T
      OMAPDSS: use sync versions of pm_runtime_put · 0eaf9f52
      Tomi Valkeinen 提交于
      omapdss doesn't work properly on system suspend. The problem seems to be
      the fact that omapdss uses pm_runtime_put() functions when turning off
      the hardware, and when system suspend is in process only sync versions
      are allowed.
      
      Using non-sync versions normally and sync versions when suspending would
      need rather ugly hacks to convey the information of
      suspending/not-suspending to different functions. Optimally the driver
      wouldn't even need to care about this, and the PM layer would handle
      syncing when suspend is in process.
      
      This patch changes all omapdss's pm_runtime_put calls to
      pm_runtime_put_sync. This fixes the suspend problem, and probably the
      performance penalty of always using sync versions is negligible.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      Acked-by: NKevin Hilman <khilman@ti.com>
      0eaf9f52
  11. 25 1月, 2012 1 次提交
  12. 01 11月, 2011 1 次提交
  13. 30 9月, 2011 1 次提交
  14. 20 9月, 2011 2 次提交
  15. 01 8月, 2011 1 次提交
    • T
      HACK: OMAP: DSS2: clk hack for OMAP2/3 · 9ede365a
      Tomi Valkeinen 提交于
      The HWMOD data for OMAP2 and 3 are currently not up to date regarding
      DSS (OMAP4 HWMOD data is fine). This patch makes the DSS driver to get
      the opt clocks needed for OMAP2/3 with the old clock names, thus
      allowing DSS driver to use runtime PM.
      
      The HWMOD databases should be fixes ASAP, and this patch can be reverted
      after that.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      9ede365a
  16. 25 7月, 2011 8 次提交
  17. 01 7月, 2011 1 次提交
  18. 13 5月, 2011 2 次提交
    • A
      OMAP4: DSS2: DSI: Changes for DSI2 on OMAP4 · 5a8b572d
      Archit Taneja 提交于
      Introduce DSI2 PLL clock sources needed by LCD2 channel and DSI2 Protocol
      engine and DISPC Functional clock. Do the following:
      
      - Modify dss_get_dsi_clk_source() and dss_select_dsi_clk_source() to take the
        dsi module number as an argument.
      - Create debugfs files for dsi2, split the corresponding debugfs functions.
      - Allow DPI to use these new clock sources.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      5a8b572d
    • A
      OMAP: DSS2: Pass platform_device as an argument in dsi functions · a72b64b9
      Archit Taneja 提交于
      The DSI interface is represented as a platform device, using the DSI platform
      driver(dsi.c). The current DSI driver design is capable of running only one
      instance of a DSI device. On OMAP4, there are 2 very similar DSI modules which
      can be represented as instances of "omapdss_dsi" platform device.
      
      Add member "module" in "dssdev.phy.dsi" that tells us which DSI module's lanes
      the panel is connected to. Modify dsi.c functions to take the device's
      platform_device struct pointer, provide functions dsi_get_dsidev_from_dssdev()
      and dsi_get_dsidev_from_id() take the panel's omap_dss_device and module number
      respectively, and return the platform_device pointer. Currently, the dsi struct
      is declared globally and is accessed when dsi data is needed. The new pdev
      argument will be used later to provide the platform device's dsi related data.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      a72b64b9
  19. 11 5月, 2011 6 次提交