1. 17 6月, 2013 10 次提交
    • T
      OMAPDSS: Implement display (dis)connect support · a7e71e7f
      Tomi Valkeinen 提交于
      We currently have two steps in panel initialization and startup: probing
      and enabling. After the panel has been probed, it's ready and can be
      configured and later enabled.
      
      This model is not enough with more complex display pipelines, where we
      may have, for example, two panels, of which only one can be used at a
      time, connected to the same video output.
      
      To support that kind of scenarios, we need to add new step to the
      initialization: connect.
      
      This patch adds support for connecting and disconnecting panels. After
      probe, but before connect, no panel ops should be called. When the
      connect is called, a proper video pipeline is established, and the panel
      is ready for use. If some part in the video pipeline is already
      connected (by some other panel), the connect call fails.
      
      One key difference with the old style setup is that connect() handles
      also connecting to the overlay manager. This means that the omapfb (or
      omapdrm) no longer needs to figure out which overlay manager to use, but
      it can just call connect() on the panel, and the proper overlay manager
      is connected by omapdss.
      
      This also allows us to add back the support for dynamic switching
      between two exclusive panels. However, the current panel device model is
      not changed to support this, as the new device model is implemented in
      the following patches and the old model will be removed. The new device
      model supports dynamic switching.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      a7e71e7f
    • T
      OMAPDRM: fix overlay manager handling · 04b1fc02
      Tomi Valkeinen 提交于
      Currently omapdrm creates crtcs, which map directly to DSS overlay
      managers, only on demand at init time. This would make it difficult to
      manage connecting the display entities in the future, as the code cannot
      just search for a suitable overlay manager.
      
      We cannot fix this the sane way, which would be to create crtcs for each
      overlay manager, because we need an overlay for each crtc. With limited
      number of overlays, that's not possible.
      
      So the solution for now is to detach the overlay manager from the crtc.
      crtcs are still created on demand at init time, but all overlay managers
      are always initialized by the omapdss.
      
      This way we can create and connect whole display pipelines from the
      overlay manager to the display, regardless of which crtcs omapdrm would
      create.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      04b1fc02
    • T
      OMAPDSS: split overlay manager creation · 7f7cdbd6
      Tomi Valkeinen 提交于
      Split the function that creates overlay manager structs into two: one
      that creates just the structs, and one that creates the sysfs files for
      the manager.
      
      This will help us use the overlay manager structs with omapdrm in the
      following patches, while still leaving the sysfs files out.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      7f7cdbd6
    • T
      OMAPDSS: add helpers to get mgr or output from display · be8e8e1c
      Tomi Valkeinen 提交于
      Add two helper functions that can be used to find either the DSS output
      or the overlay manager that is connected to the given display.
      
      This hides how the output and the manager are actually connected, making
      it easier to change the connections in the future.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      be8e8e1c
    • T
      OMAPDSS: clean up dss_[ovl|mgr]_get_device() · e7243664
      Tomi Valkeinen 提交于
      Minor cleanup for the dss_[ovl|mgr]_get_device() functions to make them
      more readable.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      e7243664
    • T
      OMAPDSS: fix dss_get_ctx_loss_count for DT · 679852db
      Tomi Valkeinen 提交于
      When using DT, dss device does not have platform data. However,
      dss_get_ctx_loss_count() uses dss device's platform data to find the
      get_ctx_loss_count function pointer.
      
      To fix this, dss_get_ctx_loss_count() needs to be changed to get the
      platform data from the omapdss device, which is a "virtual" device and
      always has platform data.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      679852db
    • T
      OMAPDSS: add omap_dss_find_output_by_node() · 12ca755b
      Tomi Valkeinen 提交于
      Add a support function to find a DSS output by given DT node. This is
      used in later patches to link the panels to DSS outputs.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      12ca755b
    • T
      OMAPDSS: add omap_dss_find_output() · 805cc2d1
      Tomi Valkeinen 提交于
      Add a support function to find a DSS output by given name. This is used
      in later patches to link the panels to DSS outputs.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      805cc2d1
    • T
      OMAPDSS: only probe pdata if there's one · c6ca5b22
      Tomi Valkeinen 提交于
      omapdss output drivers always read the platform data. This crashes when
      there's no platform data when using DT.
      
      Add a check to read the platform data only if it exists.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      c6ca5b22
    • T
      OMAPDSS: add pdata->default_display_name · 0a200126
      Tomi Valkeinen 提交于
      We can currently set the default display (i.e. the initial display) in
      the omapdss platform data by using a pointer to the default
      omap_dss_device. Internally omapdss uses the device's name to resolve
      the default display.
      
      As it's difficult to get the omap_dss_device pointer in the future,
      after we've changed the omapdss device model, this patch adds a new way
      to define the default display, by using the name of the display.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      Reviewed-by: NArchit Taneja <archit@ti.com>
      0a200126
  2. 23 5月, 2013 1 次提交
    • T
      OMAPDSS: Fix crash with DT boot · 591a0ac7
      Tomi Valkeinen 提交于
      When booting with DT, there's a crash when omapfb is probed. This is
      caused by the fact that omapdss+DT is not yet supported, and thus
      omapdss is not probed at all. On the other hand, omapfb is always
      probed. When omapfb tries to use omapdss, there's a NULL pointer
      dereference crash. The same error should most likely happen with omapdrm
      and omap_vout also.
      
      To fix this, add an "initialized" state to omapdss. When omapdss has
      been probed, it's marked as initialized. omapfb, omapdrm and omap_vout
      check this state when they are probed to see that omapdss is actually
      there.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      Tested-by: NPeter Ujfalusi <peter.ujfalusi@ti.com>
      591a0ac7
  3. 18 5月, 2013 2 次提交
  4. 02 5月, 2013 17 次提交
  5. 24 4月, 2013 1 次提交
  6. 11 4月, 2013 2 次提交
    • 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
  7. 10 4月, 2013 7 次提交