1. 12 11月, 2012 2 次提交
    • A
      OMAPDSS: APPLY: Remove unnecessary variable in dss_apply_irq_handler · ca8d4e8b
      Archit Taneja 提交于
      The bool was_updating is never really used for anything. It is set to the
      current value of mp->updating, but not used anywhere. Remove this variable.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      ca8d4e8b
    • A
      OMAPDSS: APPLY: Don't treat an overlay's channel out as shadow bits · 02b5ff1a
      Archit Taneja 提交于
      An overlay's channel out field isn't a shadow register. The TRM says that it's
      taken into effect immediately. This understanding was missing and channel out
      was treated as a shadow parameter, and in overlay's private data as extra info.
      
      Program channel out bits directly in dss_ovl_set_manager(). In order to do this
      safely, we need to be totally sure that the overlay is disabled in hardware. For
      auto update managers, we can assume that the overlay was truly disabled at
      dss_ovl_unset_manager() through the wait_pending_extra_info_updates() call.
      However, when unsetting manager for an overlay that was previously connected to
      a manager in manual update, we can't be sure if the overlay is truly disabled.
      That is, op->enabled might not reflect the actual state of the overlay in
      hardware. The older manager may require a manual update transfer to truly
      disable the overlay. We expect the user of OMAPDSS to take care of this, in
      OMAPDSS, we make sure that an overlay's manager isn't unset if there if
      extra_info is still dirty for that overlay.
      
      The wrong understanding of channel out bits also explains the reason why we see
      sync lost when changing an overlay's manager which was previously connected to a
      manual update manager. The following sequence of events caused this:
      
      - When we disable the overlay, no register writes are actually done since the
        manager is manual update, op->enabled is set to false, and the
        extra_info_dirty flag is set. However, in hardware, the overlay is still
        enabled in both shadow and working registers.
      
      - When we unset the manager, the software just configures the overlay's manager
        to point to NULL.
      
      - When we set the overlay to a new manager(which is in auto update) through
        dss_ovl_set_manager, the check  for op->enabled passes, the channel field in
        extra info is set to the new manager. When we do an apply on this manager,
        the new channel out field is set in the hardware immediately, and since the
        overlay enable bit is still set in hardware, the new manager sees that the
        overlay is enabled, and tries to retrieve pixels from it, this leads to sync
        lost as it might be in the middle of processing a frame when we set the
        channel out bit.
      
      The solution to this was to ensure that user space does another update after
      disabling the overlay, this actually worked because the overlay was now truly
      disabled, and an immediate write to channel out didn't impact since the manager
      saw the new overlay as disabled, and doesn't try to retrieve pixels from it.
      
      Remove channel as an extra_info field. Make dss_ovl_unset_manager more strict
      about the overlay being disabled when detaching the manager. For overlays
      connected to a manual update manager, unset_manager fails if we need another
      update to disable the overlay.
      
      We still need to a manual update to ensure the overlay is disabled to get change
      the overlay's manager. We could work on doing a dummy update by using DISPC's
      capability to gate the different video port signals. This is left for later.
      
      Remove the comment about the sync lost issue.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      02b5ff1a
  2. 06 11月, 2012 1 次提交
  3. 29 10月, 2012 1 次提交
    • T
      OMAPDSS: DISPC: rename dispc_mgr_enable/disable to _sync · 3a979f8a
      Tomi Valkeinen 提交于
      The current dispc_mgr_enable/disable function are blocking, and do a bit
      too much for omapdrm. We'll expose new enable & disable functions that
      will just set the bits in the registers in the following patches.
      
      This patch renames the current functions to *_sync, to make it clear
      that they are blocking, and also to free up the dispc_mgr_enable/disable
      names for these new functions.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      3a979f8a
  4. 18 10月, 2012 3 次提交
    • T
      OMAPDSS: DISPC: cleanup lcd/digit enable/disable · b1112249
      Tomi Valkeinen 提交于
      We currently have a single function to enable and disable the manager
      output for LCD and DIGIT. The functions are a bit complex, as handling
      both enable and disable require some extra steps to ensure that the
      output is enabled or disabled properly without errors before exiting the
      function.
      
      The code can be made simpler to understand by splitting the functions
      into separate enable and disable functions. We'll also clean up the
      comments and some parameter names at the same time.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      b1112249
    • T
      OMAPDSS: combine LCD related config into one func · fb2cec1f
      Tomi Valkeinen 提交于
      Dispc has a bunch of functions used to configure output related
      parameters:
      
      - dispc_mgr_set_io_pad_mode
      - dispc_mgr_enable_stallmode
      - dispc_mgr_enable_fifohandcheck
      - dispc_mgr_set_clock_div
      - dispc_mgr_set_tft_data_lines
      - dispc_lcd_enable_signal_polarity
      - dispc_mgr_set_lcd_type_tft
      
      These are all called together, and the configuration values are taken
      from struct dss_lcd_mgr_config.
      
      Instead of exposing those individual dispc functions, create a new one,
      dispc_mgr_set_lcd_config(), which is used to configure the above
      parameters from values in struct dss_lcd_mgr_config.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      fb2cec1f
    • T
      OMAPDSS: fix registering the vsync isr in apply · d7b6b6b1
      Tomi Valkeinen 提交于
      When we enable an output we don't check if we need to register the vsync
      isr. This causes us to miss vsync interrupts until somebody changes the
      configuration of an overlay or an overlay manager.
      
      Add the registration to dss_mgr_enable to fix the problem.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      d7b6b6b1
  5. 12 10月, 2012 1 次提交
    • C
      OMAPDSS: Cleanup DSSDBG with dynamic pr_debug function · 702d267e
      Chandrabhanu Mahapatra 提交于
      The printk in DSSDBG function definition is replaced with dynamic debug enabled
      pr_debug(). The use of dynamic debugging provides more flexibility as each debug
      statement can be enabled or disabled dynamically on basis of source filename,
      line number, module name etc., by writing to a control file in debugfs
      filesystem. For better understanding please refer to
      Documentation/dynamic-debug-howto.txt.
      
      The DSSDBGF() differs from DSSDBG() by providing function name. However,
      function name, line number, module name and thread ID can be printed through
      dynamic debug by setting appropriate flags 'f','l','m' and 't' in the debugfs
      control file. So, DSSDBGF instances are replaced with DSSDBG.
      Signed-off-by: NChandrabhanu Mahapatra <cmahapatra@ti.com>
      Reviewed-by: NSumit Semwal <sumit.semwal@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      702d267e
  6. 26 9月, 2012 6 次提交
    • A
      OMAPDSS: DIPSC: Relax scaling limitations when in memory to memory mode · 8ba85306
      Archit Taneja 提交于
      The scalers of overlays and writeback do not have any constraints on downscale
      ratio when operating in memory to memory mode.
      
      This is because in memory to memory mode, we aren't connected to a display which
      needs data output at the rate of pixel clock. The scalers can perform as much
      downscaling as needed, the rate at which the scaler outputs is adjusted
      accordingly.
      
      Relax constraints related to downscaling based on whether the input overlays are
      connected to writeback in memory to memory mode. We pass a mem_to_mem boolean
      parameter to dispc_ovl_setup() from APPLY. This is currently set to false, this
      will later be configured to the correct value based on whether the overlay is
      connected to writeback or not. Do the same later for writeback when writeback is
      configured.
      
      In the scaling calculation code, we calculate the minimum amount of core clock we
      need to achieve the required downscaling. If we are in memory to memory mode, we
      set this to a very small value(1 in this case), this value would always be
      lesser than the actual DISPC core clock value, and hence the scaling checks
      would succeed.
      
      We take care that pixel clock isn't calculated for writeback and the overlays
      connected to it when in memory to memory mode. A pixel clock in such cases
      doesn't make sense.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      8ba85306
    • A
      OMAPDSS: Remove old way of setting manager and device links · 3c2995ac
      Archit Taneja 提交于
      Now that an omap_dss_output can be used to link between managers and devices, we
      can remove the old way of setting manager and device links. This involves
      removing the device and manager pointers from omap_overlay_manager and
      omap_dss_device respectively, and removing the set_device/unset_device ops from
      omap_overlay_manager.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      3c2995ac
    • A
      OMAPDSS: APPLY: Remove omap_dss_device references from dss_ovl_enable/disable · 0f0e4e3c
      Archit Taneja 提交于
      An overlay isn't allowed to be enabled/disabled if it isn't connected to an
      omap_dss_device. This requirement isn't needed any more. An overlay can be
      enabled/disabled as long as it has an output connected to it. The output may
      not be connected to a device, but we can be assured that the connected
      manager's output is in use by an output interface.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      0f0e4e3c
    • A
      OMAPDSS: Remove manager->device references · 794bc4ee
      Archit Taneja 提交于
      With the introduction of output entities, managers will now connect to outputs.
      Create helper ops for overlays and managers named get_device. This will abstract
      away the information on how to get the device from an overlay or an overlay
      manager. The get_device ops currently retrieve the output via a
      ovl->manager->device reference. This will be later replaced by
      ovl->manager->output->device references.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      794bc4ee
    • A
      OMAPDSS: APPLY: Add manager set/unset output ops for omap_overlay_manager · 97f01b3a
      Archit Taneja 提交于
      Add set_output/unset_output ops for overlay managers, these form links between
      managers and outputs. Create a function in dss features which tell all the
      output instances that connect to a manager, use it when a manager tries to set
      an output. Add a constraint of not unsetting an output when the manager is
      enabled.
      
      Keep the omap_dss_device pointer and set/unset_device ops in overlay_manager for
      now to not break things. Keep the dss feature function get_supported_displays
      as it's used in some places. These will be removed later.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      97f01b3a
    • A
      OMAPDSS: APPLY: Remove omap_dss_device references in wait_for_go functions · fc22a843
      Archit Taneja 提交于
      The functions dss_mgr_wait_for_go() and dss_mgr_wait_for_go_ovl() check if there
      is an enabled display connected to the manager before trying to see the state of
      the GO bit.
      
      The checks related to the display can be replaced by checking the state of the
      manager, i.e, whether the manager is enabled or not. This makes more sense than
      checking with the connected display as the GO bit behaviour is more connected
      with the manager state rather than the display state. A GO bit can only be set
      if the manager is enabled. If a manager isn't enabled, we can safely assume that
      the GO bit is not set.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      fc22a843
  7. 08 9月, 2012 5 次提交
    • T
      OMAPDSS: fix dss_ovl_unset_manager · b2f5976c
      Tomi Valkeinen 提交于
      When we removed fifomerge support, we also changed dss_ovl_disable so
      that it doesn't wait for the hardware to be finished with the overlay.
      This may cause a problem when changing the overlay's manager, as
      changing the manager is an immediate change. Thus if the overlay is
      still being used by the HW when the manager is changed, there may be
      glitches on the screen.
      
      This patch adds a wait into dss_ovl_unset_manager, which ensures the
      overlays are disabled in the HW.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      b2f5976c
    • T
      Revert "OMAPDSS: APPLY: add fifo merge support funcs" · 85099f11
      Tomi Valkeinen 提交于
      This reverts commit fb011974.
      
      Adding fifo merge feature as an omapdss internal configuration was a
      mistake. We cannot hide from the users of omapdss the complexities of
      fifo merge.
      
      The previous commit removed fifo merge itself, and this removes the
      remaining fifo merge support functions.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      85099f11
    • T
      Revert "OMAPDSS: APPLY: add fifo-merge support" · b3e93cbd
      Tomi Valkeinen 提交于
      This reverts commit 1d71f42b.
      
      Adding fifo merge feature as an omapdss internal configuration was a
      mistake. We cannot hide from the users of omapdss the complexities of
      fifo merge.
      
      This commit removes the fifo merge support, which luckily is easily done
      as it was handled totally inside apply.c. Note that this is not a 1:1
      revert, but some resolving was needed for the dss_ovl_setup_fifo.
      
      The plan is to try fifo merge again later when it is more clear how the
      hardware acts in various situations, and how the omapdrm wants to use
      fifo merge.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      b3e93cbd
    • T
      OMAPDSS: clean up dss_mgr_set_timings · fed62e54
      Tomi Valkeinen 提交于
      dss_mgr_set_timings() can only be called when the output is not active.
      This means that most of the code in the function is extra, as there's no
      need to write the values to registers, etc, because that will be handled
      when the output will be enabled.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      fed62e54
    • T
      OMAPDSS: clean up dss_mgr_set_lcd_config · aba96570
      Tomi Valkeinen 提交于
      dss_mgr_set_lcd_config() can only be called when the output is not
      active. This means that most of the code in the function is extra, as
      there's no need to write the values to registers, etc, because that will
      be handled when the output will be enabled.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      aba96570
  8. 13 8月, 2012 1 次提交
  9. 29 6月, 2012 5 次提交
    • A
      OMAPDSS: OVERLAY: Clean up replication checking · 6c6f510a
      Archit Taneja 提交于
      Replication logic for an overlay depends on the color mode in which it is
      configured and the video port width of the manager it is connected to.
      
      video port width now held in dss_lcd_mgr_config in the manager's private
      data in APPLY. Use this instead of referring to the omap_dss_device connected to
      the manager.
      
      Replication is enabled in the case of TV manager, the video_port_width is set to
      a default value of 24 for TV manager.
      
      Make the replication checking an overlay function since it's more of an overlay
      characteristic than a display characteristic.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      6c6f510a
    • A
      OMAPDSS: APPLY: Remove usage of omap_dss_device from manual/auto update checks · 75bac5d1
      Archit Taneja 提交于
      APPLY needs to know at certain places whether an overlay manager is in manual
      or auto update mode. The caps of the connected omap_dss_device were used to
      check that.
      
      A LCD manager is in manual update if stallmode is enabled for that manager. TV
      managers for now always auto update.
      
      Return the value of stallmode parameter in the private data 'lcd_confg' in
      mgr_manual_update() and ovl_manual_update(), for TV managers stallmode field
      will be false by default.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      75bac5d1
    • A
      OMAPDSS: MANAGER: Check LCD related overlay manager parameters · 6e543595
      Archit Taneja 提交于
      The LCD related manager configurations are a part of the manager's private data
      in APPLY. Pass this to dss_lcd_mgr_config to dss_mgr_check and create a function
      to check the validity of some of the configurations.
      
      To check some of the configurations, we require information of interface to
      which the manager output is connected. These can be added once interfaces are
      represented as an entity.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      6e543595
    • A
      OMAPDSS: APPLY: Remove DISPC writes to manager's lcd parameters in interface drivers · f476ae9d
      Archit Taneja 提交于
      Replace the DISPC fuctions used to configure LCD channel related manager
      parameters with dss_mgr_set_lcd_config() in APPLY. This function ensures that
      the DISPC registers are written at the right time by using the shadow register
      programming model.
      
      The LCD manager configurations is stored as a private data of manager in APPLY.
      It is treated as an extra info as it's the panel drivers which trigger this
      apply via interface drivers, and not a DSS2 user like omapfb or omapdrm.
      
      Storing LCD manager related properties in APPLY also prevents the need to refer
      to the panel connected to the manager for information. This helps in making the
      DSS driver less dependent on panel.
      
      A helper function is added to check whether the manager is LCD or TV. The direct
      DISPC register writes are removed from the interface drivers.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      f476ae9d
    • A
      OMAPDSS: DISPC/APPLY: Use interlace info in manager timings for dispc_ovl_setup() · 8050cbe4
      Archit Taneja 提交于
      Currently the interlace parameter passed to dispc_ovl_setup() is configured by
      checking the display type, and set to true if the display type is VENC.
      
      This isn't correct as other panels can take interlaced content too. The
      omap_video_timings struct in manager's private data contains the info whether
      the panel is in interlaced mode or not.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      8050cbe4
  10. 22 5月, 2012 1 次提交
    • T
      OMAPDSS: use DSI_FIFO_BUG workaround only for manual update displays · 3568f2a4
      Tomi Valkeinen 提交于
      There is a problem related to DSS FIFO thresholds and power management
      on OMAP3. It seems that when the full PM hits in, we get underflows. The
      core reason is unknown, but after experiments it looks like only
      particular FIFO thresholds work correctly.
      
      This bug is related to an earlier patch, which added special FIFO
      threshold configuration for OMAP3, because DSI command mode output
      didn't work with the normal threshold configuration.
      
      However, as the above work-around worked fine for other output types
      also, we currently always configure thresholds in this special way on
      OMAP3. In theory there should be negligible difference with this special
      way and the standard way. The first paragraph explains what happens in
      practice.
      
      This patch changes the driver to use the special threshold configuration
      only when the output is a manual update display on OMAP3. This does
      include RFBI displays also, and although it hasn't been tested (no
      boards using RFBI) I suspect the similar behaviour is present there
      also, as the DISPC side should work similarly for DSI command mode and
      RFBI.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      Cc: Joe Woodward <jw@terrafix.co.uk>
      3568f2a4
  11. 09 5月, 2012 5 次提交
    • A
      OMAPDSS: DISPC: Remove usage of dispc_mgr_get_device() · 81ab95b7
      Archit Taneja 提交于
      The functions calc_fclk_five_taps() and check_horiz_timing_omap3() use the
      function dispc_mgr_get_device() to get the omap_dss_device pointer to which
      the manager is connected, the width of the panel is derived from that.
      
      The manager's timing is stored in it's private data in APPLY. This contains
      the latest timings applied to the manager. Pass these timings to
      dispc_ovl_setup() and use them in the above functions. Remove the function
      dispc_mgr_get_device() as it isn't used any more.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      81ab95b7
    • A
      OMAPDSS: APPLY: Remove an unnecessary omap_dss_device pointer · b3d795ab
      Archit Taneja 提交于
      The omap_dss_device pointer declared in dss_ovl_setup_fifo() isn't used. Remove
      the pointer variable declaration and it's assignment.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      b3d795ab
    • A
      OMAPDSS: APPLY: Remove display dependency from overlay and manager checks · 228b2134
      Archit Taneja 提交于
      In order to check the validity of overlay and manager info, there was a need to
      use the omap_dss_device struct to get the panel resolution. The manager's
      private data in APPLY now contains the manager timings. Hence, we don't need to
      rely on the display resolution any more.
      
      Pass the manager's timings in private data to dss_mgr_check(). Remove the need
      to pass omap_dss_device structs in the functions which check for the validity
      of overlay and manager parameters.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      228b2134
    • A
      OMAPDSS: APPLY: Don't check manager settings if it is disabled · 5dd747e8
      Archit Taneja 提交于
      If a manager is disabled, there is no guarantee at any point in time that all
      it's parameters are configured. There is always a chance that some more
      parameters are yet to be configured by a user of DSS, or by DSS itself.
      
      However, when the manager is enabled, we can be certain that all the parameters
      have been configured, as we can't enable a manager with an incomplete
      configuration. Therefore, if a manager is disabled, don't check for the validity
      of it's parameters or the parameters of the overlays connected to it. Only check
      once it is enabled. Add a check in dss_check_settings_low() to achieve the same.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      5dd747e8
    • A
      OMAPDSS: APPLY: Add manager timings as extra_info in private data · 45324a26
      Archit Taneja 提交于
      DISPC manager size and DISPC manager blanking parameters(for LCD managers)
      follow the shadow register programming model. Currently, they are programmed
      directly by the interface drivers.
      
      To configure manager timings using APPLY, there is a need to introduce extra
      info flags for managers, similar to what is done for overlays. This is needed
      because timings aren't a part of overlay_manager_info struct configured by a
      user of DSS, they are configured internally by the interface or panel drivers.
      
      Add dirty and shadow_dirty extra_info flags for managers, update these flags
      at the appropriate places. Rewrite the function extra_info_update_ongoing()
      slightly as checking for manager's extra_info flags can simplify the code a bit.
      
      Create function dss_mgr_set_timings() which applies the new manager timings to
      extra_info.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      45324a26
  12. 13 3月, 2012 1 次提交
  13. 06 3月, 2012 2 次提交
    • T
      OMAPDSS: APPLY: print warning if wait_pending_extra_info_updates fails · 4614679c
      Tomi Valkeinen 提交于
      wait_pending_extra_info_updates() currently does a hacky second check
      for extra_info_update_ongoing() at the end of the function to show a
      warning if extra_info update is still ongoing. The call to
      extra_info_update_ongoing() should really be inside spinlock, but that's
      a bit heavy just for verification.
      
      Rather than that, check the return value of the
      wait_for_completion_timeout() and print an error if it has timeouted or
      returned an error.
      
      Even better would be to return the error value and act on it in the
      callers of wait_pending_extra_info_updates. However, it's not clear what
      the callers should do in case of an error, as the error should only
      happen if there's a bug in the driver or the HW. So we'll just print the
      warning for now.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      4614679c
    • L
      OMAPDSS: MANAGER/APPLY: Add runtime_pm protection around wait_for_go/vsync functions · 21e56f79
      Lajos Molnar 提交于
      If DSS suspends within the functions dss_mgr_wait_for_go(),
      dss_mgr_wait_for_go_ovl() or dss_mgr_wait_for_vsync(). It may lose it's clock
      and lead to a register access failure.
      
      Request runtime_pm around these functions.
      
      [archit@ti.com: Moved runtime_pm calls to wait_for_go/vsync functions rather
      then calling them from omap_dispc_wait_for_irq_interruptible_timeout()]
      Signed-off-by: NArchit Taneja <archit@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      21e56f79
  14. 01 3月, 2012 1 次提交
    • T
      OMAPDSS: APPLY: make ovl_enable/disable synchronous · a3d0e4ae
      Tomi Valkeinen 提交于
      ovl->enable/disable are meant to be synchronous so that they can handle
      the configuration of fifo sizes. The current kernel doesn't configure
      fifo sizes yet, and so the code doesn't need to block to function (from
      omapdss driver's perspective).
      
      However, for the users of omapdss a non-blocking ovl->disable is
      confusing, because they don't know when the memory area is not used
      any more.
      
      Furthermore, when the fifo size configuration is added in the next merge
      window, the change from non-blocking to blocking could cause side
      effects to the users of omapdss. So by making the functions block
      already will keep them behaving in the same manner.
      
      And, while not the main purpose of this patch, this will also remove the
      compile warning:
      
      drivers/video/omap2/dss/apply.c:350: warning:
      'wait_pending_extra_info_updates' defined but not used
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      Signed-off-by: NFlorian Tobias Schandinat <FlorianSchandinat@gmx.de>
      a3d0e4ae
  15. 25 1月, 2012 3 次提交
    • T
      OMAPDSS: DISPC: move fifo threhold calc to dispc.c · 83fa2f2e
      Tomi Valkeinen 提交于
      Move fifo threshold calculation into dispc.c, as the thresholds are
      really dispc internal thing.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      83fa2f2e
    • T
      OMAPDSS: APPLY: add fifo-merge support · 1d71f42b
      Tomi Valkeinen 提交于
      Add fifo-merge support. This is done mainly in four functions:
      mgr_enable/disable and ovl_enable/disable. These are the functions where
      overlays are taken into and out of active use.
      
      The process to enable and disable fifo-merge is not simple. We need to
      do it in steps, waiting in between for certain settings to be taken into
      use, and continuing after that. The reason for this is that fifo-merge
      is a common thing for all managers/overlays, and its use must be
      synchronized.
      
      As an example, when we disable an overlay, we first set the overlay as
      disabled, then wait until the overlay is actually disabled in the HW,
      and only after that we may re-configure the fifos, possibly taking
      fifo-merge into use.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      1d71f42b
    • T
      OMAPDSS: APPLY: add fifo merge support funcs · fb011974
      Tomi Valkeinen 提交于
      Add mechanism to set/unset the DISPC fifo-merge:
      
      Add new fields to dss_data, fifo_merge and fifo_merge_dirty. These are
      similar to the other info/dirty flags in ovl_priv_data and ovl_mgr_data,
      but fifo merge is a common attribute to all managers and thus outside
      the ovl_mgr_data.
      
      The fifo-merge field is used in the dss_write_regs_common, which handles
      writing the register.
      
      dss_apply_fifo_merge() can be used to set/unset the fifo merge field in
      the dss_data.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      fb011974
  16. 02 1月, 2012 2 次提交