1. 29 12月, 2015 1 次提交
  2. 17 6月, 2015 2 次提交
    • T
      OMAPDSS: componentize omapdss · 736e60dd
      Tomi Valkeinen 提交于
      omapdss kernel module contains drivers for multiple devices, one for
      each DSS submodule. The probing we have at the moment is a mess, and
      doesn't give us proper deferred probing nor ensure that all the devices
      are probed before omapfb/omapdrm start using omapdss.
      
      This patch solves the mess by using the component system for DSS
      submodules.
      
      The changes to all DSS submodules (dispc, dpi, dsi, hdmi4/5, rfbi, sdi,
      venc) are the same: probe & remove functions are changed to bind &
      unbind, and new probe & remove functions are added which call
      component_add/del.
      
      The dss_core driver (dss.c) acts as a component master. Adding and
      matching the components is simple: all dss device's child devices are
      added as components.
      
      However, we do have some dependencies between the drivers. The order in
      which they should be probed is reflected by the list in core.c
      (dss_output_drv_reg_funcs). The drivers are registered in that order,
      which causes the components to be added in that order, which makes the
      components to be bound in that order. This feels a bit fragile, and we
      probably should improve the code to manage binds in random order.
      However, for now, this works fine.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      Acked-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      736e60dd
    • T
      OMAPDSS: remove uses of __init/__exit · ede92695
      Tomi Valkeinen 提交于
      The following patches will add component handling to omapdss, improving
      the handling of deferred probing. However, at the moment we're using
      quite a lot of __inits and __exits in the driver, which prevent normal
      dynamic probing and removal.
      
      This patch removes most of the uses of __init and __exit, so that we can
      register drivers after module init, and so that we can unregister
      drivers even if the module is built-in.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      Acked-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      ede92695
  3. 26 2月, 2015 1 次提交
    • T
      OMAPDSS: DISPC: remove OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES · 7a16360d
      Tomi Valkeinen 提交于
      DISPC can drive data lines either on rising or falling pixel clock edge,
      which can be configured by the user.
      
      Sync lines can also be driven on rising or falling pixel clock edge, but
      additionally the HW can be configured to drive the sync lines on
      opposite clock edge from the data lines.
      
      This opposite edge setting does not make any sense, as the same effect
      can be achieved by just setting the sync lines to be driven on the other
      edge compared to the data lines. It feels like some kind of backward
      compatibility option, even if all DSS versions seem to have the same
      implementation.
      
      To simplify the code and configuration of the signals, and to make the
      dispc timings more compatible with what is used on other platforms,
      let's just remove the whole opposite-edge support.
      
      The drivers that used OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES setting are
      changed so that they use the opposite setting from the data edge.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      7a16360d
  4. 04 2月, 2015 1 次提交
  5. 12 11月, 2014 12 次提交
  6. 22 10月, 2014 2 次提交
  7. 20 10月, 2014 1 次提交
  8. 26 8月, 2014 1 次提交
  9. 08 8月, 2014 1 次提交
  10. 09 5月, 2014 2 次提交
  11. 07 5月, 2014 1 次提交
  12. 17 4月, 2014 1 次提交
  13. 14 4月, 2014 1 次提交
    • T
      OMAPDSS: fix shared irq handlers · 0925afc9
      Tomi Valkeinen 提交于
      DSS uses shared irq handlers for DISPC and DSI, because on OMAP3, the
      DISPC and DSI share the same irq line.
      
      However, the irq handlers presume that the hardware is enabled, which,
      in theory, may not be the case with shared irq handlers. So if an
      interrupt happens while the DISPC/DSI is off, the kernel will halt as
      the irq handler tries to access the DISPC/DSI registers.
      
      In practice that should never happen, as both DSI and DISPC are in the
      same power domain. So if there's an IRQ for one of them, the other is
      also enabled. However, if CONFIG_DEBUG_SHIRQ is enabled, the kernel will
      generate a spurious IRQ, which then causes the problem.
      
      This patch adds an is_enabled field for both DISPC and DSI, which is
      used to track if the HW is enabled. For DISPC the code is slightly more
      complex, as the users of DISPC can register the interrupt handler, and
      we want to hide the is_enabled handling from the users of DISPC.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      0925afc9
  14. 04 4月, 2014 1 次提交
  15. 19 3月, 2014 2 次提交
    • T
      OMAPDSS: Add DT support to DSI · 6274a619
      Tomi Valkeinen 提交于
      Add the code to make the DSI driver work with device tree on OMAP3 and
      OMAP4.
      
      A minor hack is needed at the moment in the DSI driver: the DSS driver
      needs to know the ID number of a DSI device, as clocks are routed in
      different ways to the DSI devices. At the moment we don't have any
      proper way to manage this, so this patchs adds a simple lookup table
      that is used to deduce the ID from the DSI device's base address.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      Reviewed-by: NArchit Taneja <archit@ti.com>
      6274a619
    • T
      OMAPDSS: Improve regulator names for DT · e6fa68ba
      Tomi Valkeinen 提交于
      The regulator names used for DSS components are somewhat ugly for DT
      use. As we're just adding DT support, it's simple to change the
      regulator names.
      
      This patch makes the DSS driver get the regulators with somewhat cleaner
      names when bootin with DT. For example, this allows us to define HDMI's
      VDDA regulator in the DT data as:
      
      vdda-supply = <...>;
      
      instead of
      
      vdda_hdmi_dac-supply = <...>;
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      Reviewed-by: NArchit Taneja <archit@ti.com>
      e6fa68ba
  16. 05 3月, 2014 1 次提交
    • T
      OMAPDSS: convert pixel clock to common videomode style · d8d78941
      Tomi Valkeinen 提交于
      omapdss has its own video-timings struct, but we want to move the common
      videomode.
      
      The first step is to change the omapdss's pixelclock unit from kHz to
      Hz. Also, omapdss uses "pixel_clock" field name, whereas the common
      videomode uses "pixelclock" field name. This patch changes the field
      name also, as that makes it easy to spot any non-converted pixel_clock
      uses.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      d8d78941
  17. 13 1月, 2014 2 次提交
    • T
      OMAPDSS: don't print errors on -EPROBE_DEFER · 40359a9b
      Tomi Valkeinen 提交于
      Nowadays it's normal to get -EPROBE_DEFER from, e.g., regulator_get. As
      -EPROBE_DEFER is not really an error, and the driver will be probed fine
      a bit later, printing an error message will just confuse the user.
      
      This patch changes omapdss to print an error for regulator_gets only if
      the error code is something else than -EPROBE_DEFER.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      40359a9b
    • T
      OMAPDSS: DSI: split DSI memory map to smaller blocks · 68104467
      Tomi Valkeinen 提交于
      DSI contains three separate blocks: protocol engine, PHY and PLL. At the
      moment, all these are memory mapped in one big chunk. We need to split
      that memory map into smaller pieces so that we can add proper 'reg'
      properties into the DT data for each block.
      
      This patch changes the driver to map the blocks separately. It first
      tries to get the memory resource using name, used when booting with DT,
      and if that fails, it gets the memory resource by ID, in which case the
      driver gets the big chunk from platform data. That big chunk is then
      split into the smaller blocks manually.
      
      After DSS DT code has been merged and the old platform code removed, we
      can clean up the memory resource management.
      
      Instead of changing the driver in all the places where a register is
      read or written, this patch takes a shortcut: it adds an additional
      number to the struct which represents the register index. This number is
      used to decide which base address to use. In the future we should
      consider other approaches.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      68104467
  18. 30 12月, 2013 1 次提交
    • T
      OMAPDSS: DSI: fix fifosize · 558c73e2
      Tomi Valkeinen 提交于
      DSI has separate TX and RX fifos. However, the current code only has one
      field where the fifo size is stored, and the code for both TX and RX
      config write to the same field. This has not caused issues, as we've
      been using the same fifo sizes.
      
      Fix this bug by creating separate fields for TX and RX fifo sizes.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      558c73e2
  19. 30 10月, 2013 1 次提交
  20. 29 10月, 2013 1 次提交
  21. 30 8月, 2013 1 次提交
    • T
      OMAPDSS: rename omap_dss_device's 'device' field to 'dst' · 9560dc10
      Tomi Valkeinen 提交于
      In the old panel device model we had omap_dss_output entities,
      representing the encoders in the DSS block. This entity had "device"
      field, which pointed to the panel that was using the omap_dss_output.
      
      With the new panel device model, the omap_dss_output is integrated into
      omap_dss_device, which now represents a "display entity". Thus the "device"
      field, now in omap_dss_device, points to the next entity in the display
      entity-chain.
      
      This patch renames the "device" field to "dst", which much better tells
      what the field points to.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      Reviewed-by: NArchit Taneja <archit@ti.com>
      9560dc10
  22. 29 8月, 2013 1 次提交
  23. 17 6月, 2013 2 次提交
    • T
      OMAPDSS: DSI: Add ops · deb16df8
      Tomi Valkeinen 提交于
      Add "ops" style method for using DSI functionality.
      
      Ops style calls will allow us to have arbitrarily long display
      pipelines, where each entity can call ops in the previous display
      entity.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      deb16df8
    • T
      OMAPDSS: public omapdss_register_output() · 5d47dbc8
      Tomi Valkeinen 提交于
      In order to allow multiple display block in a video pipeline, we need to
      give the drivers way to register themselves. For now we have
      the omapdss_register_display() which is used to register panels, and
      dss_register_output() which is used to register DSS encoders.
      
      This patch makes dss_register_output() public (with the name of
      omapdss_register_output), which can be used to register also external
      encoders. The distinction between register_output and register_display
      is that a "display" is an entity at the end of the videopipeline, and
      "output" is something inside the pipeline.
      
      The registration and naming will be made saner in the future, but the
      current names and functions are kept to minimize changes during the dss
      device model transition.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      5d47dbc8