1. 01 12月, 2014 1 次提交
  2. 26 11月, 2014 9 次提交
  3. 12 11月, 2014 29 次提交
    • T
      OMAPDSS: features: remove unused DSI PLL features · dafea8fb
      Tomi Valkeinen 提交于
      Now that the DSS has the common DSS PLL, we no longer use the DSI PLL
      feature flags from dss_features.c.
      
      Remove all the unused feature flags.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      dafea8fb
    • T
      OMAPDSS: HDMI: use common DSS PLL support · c84c3a5b
      Tomi Valkeinen 提交于
      Now that we have the common DSS PLL support, change HDMI to use it. This
      results in quite a lot of changes, but almost all of them are trivial
      name changes.
      
      The function to program the PLL settings can be removed from hdmi_pll.c,
      as the common PLL API contains the same functionality.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      c84c3a5b
    • T
      OMAPDSS: HDMI: remove extra poweroff · d13cbb32
      Tomi Valkeinen 提交于
      hdmi_pll_enable powers off the PLL as the first thing it does. Right
      after that, it enables the PLL powers.
      
      The initial power-off is pointless, so let's remove it.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      d13cbb32
    • T
      OMAPDSS: HDMI: split PLL enable & config · c2fbd061
      Tomi Valkeinen 提交于
      At the moment we have one function, hdmi_pll_enable, which enables the
      PLL and writes the PLL configuration to registers.
      
      To make the HDMI PLL ahere to the DSS PLL API, split the hdmi_pll_enable
      into two parts: hdmi_pll_enable which enables the PLL HW, and
      hdmi_pll_set_config which writes the config.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      c2fbd061
    • T
      OMAPDSS: HDMI: store WP pointer to hdmi_pll_data · 03aafa2c
      Tomi Valkeinen 提交于
      HDMI PLL code needs the pointer to the WP block so that it can manage
      its power. Currently this is passed as a function parameter to
      hdmi_pll_enable and hdmi_pll_disable. To make the PLL function adhere to
      the DSS PLL API, we need to remove the WP parameter.
      
      This patch stores the WP pointer to hdmi_pll_data in hdmi_pll_init, so
      that it's available when needed.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      03aafa2c
    • T
      OMAPDSS: HDMI: Remove HDMI PLL reset · b0295f16
      Tomi Valkeinen 提交于
      The SYSRESET bits in HDMI PLL do not reset the PLL itself, but only
      affect the power used for the PLL.
      
      Afaik there is no reason to use the SYSRESET bits, and we don't use it
      in the other PLLs, so let's remove the HDMI PLL reset to make the PLL
      code simpler and similar to other PLLs.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      b0295f16
    • T
      OMAPDSS: HDMI: rewrite HDMI PLL calculation code · 33f13120
      Tomi Valkeinen 提交于
      The code calculating HDMI PLL parameters has always been very confusing.
      Now that we are implementing a common PLL library for the DSS, it's
      important that the PLL code is understandable.
      
      This patch rewrites the calculation code, and removes a few hacks that
      were used there.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      33f13120
    • T
      OMAPDSS: HDMI5: disable interlace modes · 31dd0f4b
      Tomi Valkeinen 提交于
      We don't support interlace modes properly on OMAP5+ HDMI, so we need to
      reject interlace timings.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      31dd0f4b
    • T
      OMAPDSS: HDMI: fix setting REFSEL · 8530c41d
      Tomi Valkeinen 提交于
      Only OMAP5+ has REFSEL field, but at the moment it's set also on OMAP4.
      
      Fix this by adding a "has_refsel" field, and setting the REFSEL based on
      that.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      8530c41d
    • 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: Add common PLL code · 0a20170a
      Tomi Valkeinen 提交于
      OMAP DSS currently contains two different PLLs: DSI PLL (Type A PLL) and
      HDMI PLL (Type B PLL). When DRA7 support is added, we will also support
      Video PLLs (Type A).
      
      The driver currently handles all PLLs totally separately. This patch
      adds common DSS PLL code, which
      
      a) lets us have common code for the PLLs
      b) lets the users of the PLLs use a common API, instead of DSI API or
         HDMI API.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      0a20170a
    • 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: features: combine dsi & dispc hsdivs · dbb26e53
      Tomi Valkeinen 提交于
      The HSDIV outputs of DSI PLL (and also other PLLs) all have the same
      bit width for the divider value.
      
      Simplify the code by merging HSDIV divider widths into one width.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      dbb26e53
    • 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: use struct copy instead of individual field copy · 7cb6a87a
      Tomi Valkeinen 提交于
      Now that dsi_clock_info only contains information about the PLL, we can
      just copy the whole struct when storing the clock information, instead
      of copying individual fields.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      7cb6a87a
    • T
      OMAPDSS: DSI: remove pll_locked field · 6a3d03e9
      Tomi Valkeinen 提交于
      We have pll_locked field in struct dsi_data, but it doesn't have any
      meaningful use anymore, and can be removed.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      6a3d03e9
    • 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: separate LP clock info from dsi_clock_info · 7b71c410
      Tomi Valkeinen 提交于
      struct dsi_clock_info represents the clocks handled by the DSI, mostly
      PLL related clocks. In an effort to create common PLL code, we need to
      remove all the non-PLL items from dsi_clock_info.
      
      This patch removes LP clock related fields from dsi_clock_info, and
      creates a new struct dsi_lp_clock_info for holding clock info for the LP
      clock.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      7b71c410
    • 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
    • T
      OMAPDSS: DSI: remove unused hsdiv wait funcs · d845600e
      Tomi Valkeinen 提交于
      With the previous patch "OMAPDSS: DSI: wait for hsdiv clocks when
      enabling PLL",  dsi_wait_pll_hsdiv_dispc_active and
      dsi_wait_pll_hsdiv_dsi_active are no longer needed, so they and the
      callers can be removed.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      d845600e
    • T
      OMAPDSS: DSI: wait for hsdiv clocks when enabling PLL · 544bfb68
      Tomi Valkeinen 提交于
      At the moment we have two functions to wait for the HSDIV clocks to get
      active, dsi_wait_pll_hsdiv_dispc_active and
      dsi_wait_pll_hsdiv_dsi_active. Instead of such inconvenient functions,
      let's just make sure that the hsdiv clocks are active after the pll has
      been enabled.
      
      This patch adds code to dsi_pll_set_clock_div() to wait until HSDIV
      clocks are active.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      544bfb68
    • 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: DT: Get source endpoint by matching reg-id · ef691ff4
      Archit Taneja 提交于
      In omapdss_of_find_source_for_first_ep, we retrieve a source endpoint's DT node,
      and then see what omapdss output has the matching device_node pointer in
      omap_dss_find_output_by_node.
      
      For all DPI and SDI outputs, the device_node pointer is set as the parent's DSS
      device_node pointer. If the source is one of these outputs, the above method
      won't work.
      
      To get the correct output for ports within DSS(and in other cases in the future,
      where multiple ports might be under one device), we require additional
      information which is exclusive to the output port.
      
      We create a new field in omap_dss_device called 'port_num', this provides port
      number of the output port corresponding to this device. When searching for the
      source endpoint in DT, we extract the 'reg' property from the port corresponding
      to the endpoint source. From the list of registered outputs, we pick out that
      output which has both dev->of_node and port_num matching with the device_node
      pointer and 'reg' of the source endpoint node from DT.
      
      For encoder blocks(the ones which have both an input and output port), we need
      to set the port_num as the 'reg' property for the output port as defined in the
      DT bindings. We set port_num to 1 in the tfp410 and tpd12s015 encoder drivers.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      ef691ff4
    • A
      OMAPDSS: DSS: init dss ports cleanly · 387ce9f2
      Archit Taneja 提交于
      The init/uninit port functions are used to set up the DPI and SDI outputs under
      the dss platform device. A 'reg' property is used to determine the port number
      of the output. This tells us whether the port is DPI or SDI for OMAP34xx DSS
      revision. For other DSS revisions, we only have DPI outputs under the dss
      platform device.
      
      For multiple DPI output instances(introduced in DRA7xx DSS), we will use the
      the port number to specify which DPI output instance is being inited.
      
      The current functions work fine if there is only one DPI output instance in
      DSS. For multiple DPI instances, it would get complicated to figure out whether
      port number was used to specify whether the output is SDI, or another DPI
      instance.
      
      We create a list of port types supported for each DSS rev, with the index of the
      port in the list specifying the port number of the output for that DSS revision.
      This allows us to have a more generic way to init/uninit ports within DSS, and
      also support multiple DPI ports.
      
      We make the uninit_port functions iterative since we will have multiple DPI
      ports to uninit in the future.
      Signed-off-by: NArchit Taneja <archit@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      387ce9f2
    • 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
  4. 03 11月, 2014 1 次提交