1. 20 5月, 2016 7 次提交
  2. 03 3月, 2016 11 次提交
  3. 29 12月, 2015 2 次提交
  4. 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
  5. 04 2月, 2015 1 次提交
    • T
      OMAPDSS: DPI: DRA7xx support · a2408154
      Tomi Valkeinen 提交于
      Add support for DRA7xx DPI output.
      
      DRA7xx has three DPI outputs, each of which gets its input from a DISPC
      channel. However, DRA72x has only one video PLL, and DRA74x has two
      video PLLs. In both cases the video PLLs need to be shared between
      multiple outputs. The driver doesn't handle this at the moment.
      
      Also, DRA7xx requires configuring CONTROL module bits to route the clock
      from the PLL to the used DISPC channel.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      a2408154
  6. 12 11月, 2014 11 次提交
    • T
      OMAPDSS: DSI: use common DSS PLL support · 2daea7af
      Tomi Valkeinen 提交于
      Now that we have the common DSS PLL support, change DSI to use it. This
      results in quite a lot of changes, but almost all of them are trivial
      name changes.
      
      The functions to calculate and program the PLL settings can be removed
      from dsi.c, as the common PLL API contains the same functionality.
      
      We also need to create struct dss_pll_hw entries for PLL hardware
      features for different OMAP platforms, instead of using the
      dss_features.c as the old code does.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      2daea7af
    • T
      OMAPDSS: DSI: dsi_runtime_get/put in pll_init · f76b178a
      Tomi Valkeinen 提交于
      When DPI uses the DSI PLL for pixel clock, the DPI code will call
      dsi_runtime_get/put to keep the DSI block enabled. A much simpler way to
      handle this is to do dsi_runtime_get/put in DSI's dsi_pll_init() and
      dsi_pll_uninit(), thus removing the need for DSI to call the runtime PM
      functions.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      f76b178a
    • T
      OMAPDSS: DSI: turn hsdivs fields to arrays · acf604b7
      Tomi Valkeinen 提交于
      We are creating a common DSS PLL code, so having fixed DSI specific
      hsdiv fields in the clock information is not ok.
      
      This patch changes the hsdiv fields to arrays, so that we can use all
      the 4 possible hsdiv outputs (DSI only usees 2), and we have generic way
      to access the hsdivs.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      acf604b7
    • T
      OMAPDSS: DSI: rename clkin4ddr to clkdco · 4a38aede
      Tomi Valkeinen 提交于
      We are creating a common DSS PLL code, so rename 'clkin4ddr' field,
      which is DSI specific name, to 'clkdco' which is a generic name.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      4a38aede
    • T
      OMAPDSS: DSI: remove clkin from dsi_clock_info · 3640d9fa
      Tomi Valkeinen 提交于
      struct dsi_clock_info contains clkin field, which is the rate of the
      PLL's input clock. This field is not needed, as it can be easily
      retrieved by using the clk_get_rate().
      
      This patch removes the clkin field.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      3640d9fa
    • T
      OMAPDSS: DSI: always power on hsclk & hsdiv · 1a7f4bf1
      Tomi Valkeinen 提交于
      The DSS PLL has support to power on the PLL's highspeed clock output
      and HSDIV output separately. In practice both need to powered on, as in
      most OMAP's that's the only working configuration. We already do that in
      dsi_pll_init(), by overriding the passed arguments so that both are
      always powered.
      
      Simplify the code by removing the support for choosing which outputs to
      power on.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      1a7f4bf1
    • A
      OMAPDSS: DSS: add a param to dpi_select_source which specifies it's port number · 064c2a47
      Archit Taneja 提交于
      Add a 'port' parameter in dpi_select_source. The param tells the port
      number of the DPI instance that we want to configure. We use this number
      to select the overlay manager for that DPI instance.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      064c2a47
    • A
      OMAPDSS: DPI: Add support for multiple instances · f7e38fe9
      Archit Taneja 提交于
      Register DPI outputs, and assign the port_num to them as specified by the
      'reg' property in the DPI ports in DT.
      
      To support multiple DPI instances, dpi_get_channel needs to take the DPI
      instance's port number to get the corresponding channel. Make it take this
      argument. We just pass 0 in the non-DT path, since we don't support multiple
      instances in the non-DT case.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      f7e38fe9
    • A
      OMAPDSS: DPI: Store dpi_data pointer in the DT port's data · 80eb6751
      Archit Taneja 提交于
      DPI and SDI ports are backed by only one parent DSS device. We don't have a
      corresponding platform_device for ports under DSS. In order to support multiple
      instances of DPI, we need to pass the driver data pointer through the DPI port's
      private data ('data' member in device_node struct).
      
      dpi_init_output/dpi_uninit_output are untouched and only used for non-DT case,
      these are called when the DPI platform device probed/removed. These funcs will
      be removed when non-DT mode is removed.
      
      dpi_init_output_port/dpi_uninit_output_port are created and used for the DT
      path, called when DSS inits/uninits it's ports. These new functions retrieve
      the dpi_data pointer from 'port->data', and not from the platform device's
      data(pdev->dev) like in the non-DT path.
      
      We add some code in dss_uninit_ports() to pass a pointer to the DPI port in
      dpi_uninit_port().
      Signed-off-by: NArchit Taneja <archit@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      80eb6751
    • A
      OMAPDSS: DPI: Allocate driver data · 2ac6a1aa
      Archit Taneja 提交于
      Allocate driver data(dpi_data) for each DPI instance. It's allocated in
      omap_dpi_probe() when DT isn't used, and in dpi_init_port() when DT is used.
      The dpi_data struct instance is no longer global. In the case of DPI ops, it's
      retrieved from dpi_get_data_from_dssdev(). 'dssdev' passed by the connected
      encoder/panel driver is a pointer to the 'output' member in dpi_data, and thus
      can be used to get the DPI instance's driver data. In the case of probe/ini_port
      functions, it's set as DPI/DSS device's private data embedded in the
      platform_device struct.
      
      Having dpi_data as private data of the platform device will not work for
      multiple DPI instances in the DT case. This is because there is no corresponding
      platform_device for DPI or SDI, they exist only as ports under the parent DSS
      platform_device in the DT case. The DPI port's private data('data' member in
      device_node struct) will later be used to store dpi_data.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      2ac6a1aa
    • A
      OMAPDSS: DPI: Use DPI driver data · 630d2d0d
      Archit Taneja 提交于
      DPI related data is currently a static global struct parameter. It is accessed
      directly by functions in the driver.
      
      This method won't work if we want the driver to support multiple DPI instances.
      Create struct dpi_data, and pass its pointer to functions which need to use it.
      
      We still have a static instance defined for dpi_data, which is accessed by top
      level DPI ops. This will be removed when the driver dynamically allocates
      dpi_data for each DPI instance.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      630d2d0d
  7. 22 10月, 2014 1 次提交
    • T
      OMAPDSS: set suppress_bind_attrs · 422ccbd5
      Tomi Valkeinen 提交于
      omapdss drivers cannot handle devices being unbound while the devices
      are part of a connected display pipeline. Module refcounts are used to
      prevent unloading the modules, but one can still manually unbind the
      devices via sysfs, causing crash.
      
      Set suppress_bind_attrs to disable the bind/unbind support via sysfs.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      422ccbd5
  8. 20 10月, 2014 1 次提交
  9. 09 5月, 2014 2 次提交
  10. 17 4月, 2014 1 次提交
  11. 19 3月, 2014 1 次提交
    • T
      OMAPDSS: Add DT support to DSS · 2ecef246
      Tomi Valkeinen 提交于
      Add DT support for DSS. Contrary to the non-DT version, the DSS in DT
      mode contains DPI and SDI outputs, which better reflects the hardware.
      The non-DT code will be removed after all boards have been converted to
      DT, so there's no need to change the non-DT code to act the same way.
      
      The code for DPI and SDI needs to be refined later to make it possible
      to add multiple DPI ports. For now, handling just a single DPI port is
      enough for all the boards.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      Reviewed-by: NArchit Taneja <archit@ti.com>
      2ecef246