1. 11 5月, 2012 12 次提交
  2. 09 5月, 2012 2 次提交
    • A
      OMAPDSS: DPI/HDMI: Apply manager timings even if panel is disabled · fcc36619
      Archit Taneja 提交于
      The DPI and HDMI interfaces use their 'set_timing' functions to take in a new
      set of timings. If the panel is disabled, they do not disable and re-enable
      the interface. Currently, the manager timings are applied in hdmi_power_on()
      and dpi_set_mode() respectively, these are not called by set_timings if the
      panel is disabled.
      
      When checking overlay and manager data, the DSS driver uses the last applied
      manager timings, and not the timings held by omap_dss_device struct. Hence,
      there is a need to apply the new manager timings even if the panel is disabled.
      
      Apply the manager timings if the panel is disabled. Eventually, there should be
      one common place where the timings are applied independent of the state of the
      panel.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      fcc36619
    • A
      OMAPDSS: Apply manager timings instead of direct DISPC writes · 41721163
      Archit Taneja 提交于
      Replace the function dispc_mgr_set_timings() with dss_mgr_set_timings() in the
      interface drivers. The latter function ensures that the timing related DISPC
      registers are configured according to the shadow register programming model.
      
      Remove the call to dispc_mgr_go() in dpi_set_timings() as the manager's go bit
      is set by dss_mgr_set_timings().
      Signed-off-by: NArchit Taneja <archit@ti.com>
      41721163
  3. 23 4月, 2012 1 次提交
    • A
      OMAPDSS: DISPC: Use a common function to set manager timings · c51d921a
      Archit Taneja 提交于
      Currently, a LCD manager's timings is set by dispc_mgr_set_lcd_timings() and TV
      manager's timings is set by dispc_set_digit_size(). Use a common function called
      dispc_mgr_set_timings() which sets timings for both type of managers.
      
      We finally want the interface drivers to use an overlay manager function to
      configure it's timings, having a common DISPC function would make things
      cleaner.
      
      For LCD managers, dispc_mgr_set_timings() sets LCD size and blanking values, for
      TV manager, it sets only the TV size since blanking values don't exist for TV.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      c51d921a
  4. 06 3月, 2012 1 次提交
    • M
      OMAPDSS: HDMI: Add M2 divider while calculating clkout · dd2116a3
      Mythri P K 提交于
      While calculating regm and regmf value add using M2 divider in
      the equation.
      Formula for calculating:
      Output clock on digital core domain:
      	CLKOUT = (M / (N+1))*CLKINP*(1/M2)
      Internal oscillator output clock on internal LDO domain:
      	CLKDCOLDO = (M / (N+1))*CLKINP
      The current code when allows variable M2 values as input
      ignores using M2 divider values in calculation of regm and regmf.
      so fix it by using M2 in calculation although the default value for
      M2 is 1.
      Signed-off-by: NMythri P K <mythripk@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      dd2116a3
  5. 23 2月, 2012 1 次提交
    • A
      OMAPDSS: HACK: Ensure DSS clock domain gets out of idle when HDMI is enabled · a247ce78
      Archit Taneja 提交于
      For DSS clock domain to transition from idle to active state. It's necessary
      to enable the optional clock DSS_FCLK before we enable the module using the
      MODULEMODE bits in the clock domain's CM_DSS_DSS_CLKCTRL register.
      
      This sequence was not followed correctly for the 'dss_hdmi' hwmod and it led
      to DSS clock domain not getting out of idle when pm_runtime_get_sync() was
      called for hdmi's platform device.
      
      Since the clock domain failed to change it's state to active, the hwmod code
      disables any clocks it had enabled before for this hwmod. This led to the clock
      'dss_48mhz_clk' gettind disabled.
      
      When hdmi's runtime_resume() op is called, the call to dss_runtime_get()
      correctly enables the DSS clock domain this time. However, the clock
      'dss_48mhz_clk' is needed for HDMI's PHY to function correctly. Since it was
      disabled previously, the driver fails when it tries to enable HDMI's PHY.
      
      Fix this for now by ensuring that dss_runtime_get() is called before we call
      pm_runtime_get_sync() for hdmi's platform device. A correct fix for later would
      be to modify the DSS related hwmod's mainclks, and also some changes in how
      opt clocks are handled in the DSS driver.
      
      This fixes the issue of HDMI not working when it's the default display. The
      issue is not seen if any other display is already enabled as the first display
      would have correctly enabled the DSS clockdomain.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      a247ce78
  6. 21 2月, 2012 1 次提交
  7. 26 1月, 2012 2 次提交
    • T
      OMAPDSS: HDMI: PHY burnout fix · c49d005b
      Tomi Valkeinen 提交于
      A hardware bug in the OMAP4 HDMI PHY causes physical damage to the board
      if the HDMI PHY is kept powered on when the cable is not connected.
      
      This patch solves the problem by adding hot-plug-detection into the HDMI
      IP driver. This is not a real HPD support in the sense that nobody else
      than the IP driver gets to know about the HPD events, but is only meant
      to fix the HW bug.
      
      The strategy is simple: If the display device is turned off by the user,
      the PHY power is set to OFF. When the display device is turned on by the
      user, the PHY power is set either to LDOON or TXON, depending on whether
      the HDMI cable is connected.
      
      The reason to avoid PHY OFF when the display device is on, but the cable
      is disconnected, is that when the PHY is turned OFF, the HDMI IP is not
      "ticking" and thus the DISPC does not receive pixel clock from the HDMI
      IP. This would, for example, prevent any VSYNCs from happening, and
      would thus affect the users of omapdss. By using LDOON when the cable is
      disconnected we'll avoid the HW bug, but keep the HDMI working as usual
      from the user's point of view.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      c49d005b
    • 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
  8. 25 1月, 2012 3 次提交
  9. 05 1月, 2012 3 次提交
  10. 02 12月, 2011 2 次提交
  11. 18 11月, 2011 1 次提交
  12. 30 9月, 2011 11 次提交
    • M
      OMAPDSS: HDMI: Add support to dump registers through debugfs · 162874d5
      Mythri P K 提交于
      Add support to dump the HDMI wrapper, core, PLL and PHY registers
      through debugfs.
      Signed-off-by: NMythri P K <mythripk@ti.com>
      [tomi.valkeinen@ti.com: updated the description]
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      162874d5
    • A
      OMAPDSS: DISPC: Get correct pixel clock for TV manager · c3dc6a7a
      Archit Taneja 提交于
      dispc_mgr_pclk_rate() is used to calculate minimum required functional clock for
      scaling in calc_fclk() and calc_fclk_five_taps(). This function returns the
      correct pixel clock for LCD and LCD2 managers, but not for TV manager. Extend
      this function so that it gets the correct pixel clock for TV manager.
      
      This also prevents the crash we get when we try to scale overlays connected to
      TV manager. The current code leads to a BUG() being executed if we call
      dispc_mgr_pclk_rate() for the TV manager.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      c3dc6a7a
    • T
      OMAP: DSS2: HDMI: implement detect() · 759593ff
      Tomi Valkeinen 提交于
      Implement detect() by checking the hot plug detect status.
      
      The implementation is not very good, as it always turns on the HDMI
      output to get the detection working. HDMI driver needs improvements so
      that we could enable only core parts of it.
      
      Cc: Mythri P K <mythripk@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      759593ff
    • T
      OMAP: DSS2: HDMI: remove error prints in check_timings · 468c1b93
      Tomi Valkeinen 提交于
      check_timings() is supposed to be used to verify if timings are ok or
      not. Currently the HDMI driver prints error messages if the timings are
      not ok. This is not right, as it is no error to give invalid timings to
      check_timings().
      
      Remove the error prints.
      
      Cc: Mythri P K <mythripk@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      468c1b93
    • T
      OMAP: DSS2: HDMI: remove edid parsing · 2ea51fef
      Tomi Valkeinen 提交于
      OMAPFB handles EDID parsing now, using the common helper functions in
      fbdev. We can remove the EDID parsing from HDMI driver.
      
      Cc: Mythri P K <mythripk@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      2ea51fef
    • T
      OMAP: DSS2: HDMI: implement read_edid() · 47024565
      Tomi Valkeinen 提交于
      Implement read_edid() for HDMI by implementing necessary functions to
      hdmi.c and to hdmi_omap4_panel.c.
      
      Cc: Mythri P K <mythripk@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      47024565
    • T
      OMAP: DSS2: HDMI: make set_timing saner · fa70dc5f
      Tomi Valkeinen 提交于
      Currently the set_timings code for hdmi is quite strange. The display is
      disabled in hdmi_omap4_panel.c before setting timings, and enabled in
      hdmi.c after setting the timings. Furthermore, the timings were not
      permanent, and disabling and enabling the display would lose them.
      
      This patch makes the set_timings handling a bit better.
      
      Cc: Mythri P K <mythripk@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      fa70dc5f
    • T
      OMAP: DSS2: HDMI: improve hdmi output enable · 3870c909
      Tomi Valkeinen 提交于
      Enabling HDMI output often causes sync lost errors, and almost always
      causes timeout errors being printed from dispc_mgr_enable_digit_out().
      
      The sync lost problem seems to go lessen greatly if we first enable the
      HDMI output, and only then enable the DISPC output. However, as this is
      only based on observations, the fix may not be perfect as the problem
      may lie somewhere else. Nevertheless, HDMI works better with this patch.
      
      This will also fix the dispc's dispc_mgr_enable_digit_out(), as the code
      waits for two VSYNCs after enabling the output. If the HDMI output is
      disabled (as it was previously), there are no VSYNCs and
      dispc_mgr_enable_digit_out() will print timeout errors.
      
      Cc: Mythri P K <mythripk@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      3870c909
    • T
      OMAP: DSS2: HDMI: change regn definition · b44e4582
      Tomi Valkeinen 提交于
      regn divider is currently programmed to the registers without change,
      but when calculating clock frequencies it is used as regn+1.
      
      To make this similar to how DSI handles the dividers this patch changes
      the regn value to be used as such for calculations, but the value
      programmed to registers is regn-1.
      
      This simplifies the clock frequency calculations, makes it similar to
      DSI, and also allows us to use regn value 0 as undefined.
      
      Cc: Mythri P K <mythripk@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      b44e4582
    • T
      OMAP: DSS2: HDMI: use default dividers · 8d88767a
      Tomi Valkeinen 提交于
      Use default regn and regm2 dividers in the hdmi driver if the board file
      does not define them.
      
      Cc: Mythri P K <mythripk@ti.com>
      Acked-by: NTony Lindgren <tony@atomide.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      8d88767a
    • M
      OMAP4: DSS2: HDMI: Function pointer approach to call · 60634a28
      Mythri P K 提交于
      HDMI IP fundamentally has replaceable core PHY and PLL blocks.
      These blocks might vary across OMAP's but the end functionality such as to
      enable or disable PLL, PHY, function to read EDID would remain the same.
      
      Thus to make the current hdmi DSS driver compatible with different OMAP's having
      different IP blocks( A combination of different core, PHY, PLL blocks), function
      pointer approach is introduced.
      
      With function pointer, relevant IP dependent functions are mapped to the generic
      functions used by DSS during the initialization based on the OMAP compiled.
      Thus making hdmi DSS driver IP agnostic.
      Signed-off-by: NMythri P K <mythripk@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      60634a28