linux-fbdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Archit Taneja <a0393947@ti.com>
To: tomi.valkeinen@ti.com
Cc: linux-fbdev@vger.kernel.org, linux-omap@vger.kernel.org,
	sumit.semwal@ti.com, rob@ti.com
Subject: Re: [RFC 00/17] OMAPDSS: Change way of passing timings from panel driver to interface
Date: Wed, 01 Aug 2012 10:47:58 +0000	[thread overview]
Message-ID: <5019068E.5020006@ti.com> (raw)
In-Reply-To: <1343817088-29645-1-git-send-email-archit@ti.com>

On Wednesday 01 August 2012 04:01 PM, Archit Taneja wrote:
> This series tries to make interface drivers less dependent on omap_dss_device
> which represents a panel/device connected to that interface. The current way of
> configuring an interface is to populate the panel's omap_dss_device instance
> with parameters common to the panel and the interface, they are either populated
> in the board file, or in the panel driver. Panel timings, number of lanes
> connected to interface, and pixel format are examples of such parameters, these
> are then extracted by the interface driver to configure itself.
>
> This approach has some disadvantages:
>
> - The omap_dss_device contains fields which could be handled independently by
>    the panel driver. For example, we have an enum field in omap_dss_device to
>    tell what mode the panel operates in. This information could be handled by the
>    panel driver itself. But it's a part of omap_dss_device since we need to pass
>    this down to the interface driver.
>
> - An interface can't exist by itself. That is, it needs a panel to be connected
>    to it to configure itself. It's not practical to configure an interface
>    without a panel, but it's theoretically possible, and we may need it if we
>    expose the interface as an entity to a user of OMAPDSS. It's also useful if we
>    represent writeback as an interface, writeback isn't connected to a panel.
>
> - There is a lack of clarity in how the interface configures itself. Since the
>    interface driver extracts info from omap_dss_device, it's unclear from a panel
>    driver point of view about what information in omap_dss_device the interface
>    is using and what it's not using.
>
> - There are issues with checking the correctness of the parameters in
>    omap_dss_device. We currently fill up the omap_dss_device completely, and then
>    try to enable the interface, this results in catching a wrong parameter at a
>    much later point, rather than catching it immediately.
>
> The alternative approach is for the interface drivers to expose functions/api to
> the panel drivers to configure such parameters. This way, the panel driver can
> pass the parameters to the interface itself, rather than filling up
> omap_dss_device. This would need the panel driver to keep a copy of the
> parameters so that it can use to configure it later. This resolves all the
> issues mentioned above, and also gives us a chance to make a generic set of
> function ops for interfaces, this can make a panel driver independent of
> the underlying platform.
>
> The current series starts of this work by creating a set_timings function for
> all interfaces passing omap_video_timings, this prevents dssdev->panel.timings
> references. The first few patches are some minor cleanups which are useful for
> the patches which come later.
>
> There are some points on which I need suggestions/clarifications:
> - How do we make sure that these functions are called by the panel driver at the
>    right time? For example, when setting timings for DSI video mode, we would
>    need to call omapdss_dsi_set_timings() before we call
>    omapdss_dsi_display_enable(), otherwise the copy of timings contained in DSI
>    driver data would be invalid. Also, what should the behaviour of such a
>    set_timings operation if the interface is already enabled. It is clear for
>    DPI and HDMI, but I'm not clear about what to do about other interfaces. Do we
>    add checks for the state of the interface/panel?
>
> - A specific issue about DSI/RFBI getting the resolution via
>    device->driver->get_resolution(), does this provide a result based on panel
>    rotation? Can this somehow be replaced by timings?
>
> - For SDI, the set_timings operation is simplified, instead of disabling and
>    then enabling the panel with a new set of timings, only the new timings are
>    configured. This is similar to what is done in DPI. I am not clear if this
>    will work for SDI or not.
>
> - There is no set_timings() function for RFBI yet, this needs to be though of
>    and fixed.
>
> The reference tree and branch:

forgot to add the link here:

git://gitorious.org/~boddob/linux-omap-dss2/archit-dss2-clone.git 
pass_timings_interface

Archit
>
> This is based on Tomi's for-florian-merged branch, and has 2 of his patches which
> got missed the last merge window.
>
> This hasn't been tested thoroughly with all interfaces yet. I was interested in
> getting some comments.
>
> Archit Taneja (17):
>    OMAPDSS: APPLY: Constify timings argument in dss_mgr_set_timings
>    OMAPDSS: DPI: Remove omap_dss_device arguments in
>      dpi_set_dsi_clk/dpi_set_dispc_clk
>    OMAPDSS: HDMI: Remove omap_dss_device argument from hdmi_compute_pll
>    OMAPDSS: DPI: Add locking for DPI interface
>    OMAPDSS: DPI: Maintain our own timings field in driver data
>    OMAPDSS: DPI displays: Take care of panel timings in the driver
>      itself
>    OMAPDSS: Displays: Add locking in generic DPI panel driver
>    OMAPDSS: DSI: Maintain own copy of timings in driver data
>    OMAPDSS: HDMI: Use our own omap_video_timings field when setting
>      interface timings
>    OMAPDSS: HDMI: Add a get_timing function for HDMI interface
>    OMAPDSS: HDMI: Add locking for hdmi interface get/set timing
>      functions
>    OMAPDSS: SDI: Create a separate function for timing/clock
>      configurations
>    OMAPDSS: SDI: Create a function to set timings
>    OMAPDSS: SDI: Maintain our own timings field in driver data
>    OMAPDSS: VENC: Split VENC into interface and panel driver
>    OMAPDSS: VENC: Maintain our own timings field in driver data
>    OMAPDSS: VENC: Add a get_timing function for VENC interface
>
>   drivers/video/omap2/displays/panel-acx565akm.c     |   13 +-
>   drivers/video/omap2/displays/panel-generic-dpi.c   |   75 ++++++-
>   .../omap2/displays/panel-lgphilips-lb035q02.c      |    2 +
>   .../omap2/displays/panel-nec-nl8048hl11-01b.c      |    2 +
>   drivers/video/omap2/displays/panel-picodlp.c       |    3 +
>   .../video/omap2/displays/panel-sharp-ls037v7dw01.c |    2 +
>   drivers/video/omap2/displays/panel-taal.c          |    2 +
>   drivers/video/omap2/displays/panel-tfp410.c        |    5 +-
>   .../video/omap2/displays/panel-tpo-td043mtea1.c    |    6 +-
>   drivers/video/omap2/dss/Makefile                   |    2 +-
>   drivers/video/omap2/dss/apply.c                    |    4 +-
>   drivers/video/omap2/dss/dpi.c                      |   52 +++--
>   drivers/video/omap2/dss/dsi.c                      |   27 ++-
>   drivers/video/omap2/dss/dss.h                      |   19 +-
>   drivers/video/omap2/dss/hdmi.c                     |   60 +++--
>   drivers/video/omap2/dss/hdmi_panel.c               |   12 +-
>   drivers/video/omap2/dss/sdi.c                      |   87 +++++---
>   drivers/video/omap2/dss/venc.c                     |  233 ++++++--------------
>   drivers/video/omap2/dss/venc_panel.c               |  231 +++++++++++++++++++
>   include/video/omapdss.h                            |    8 +-
>   20 files changed, 579 insertions(+), 266 deletions(-)
>   create mode 100644 drivers/video/omap2/dss/venc_panel.c
>


  parent reply	other threads:[~2012-08-01 10:47 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-01 10:43 [RFC 00/17] OMAPDSS: Change way of passing timings from panel driver to interface Archit Taneja
2012-08-01 10:43 ` [RFC 01/17] OMAPDSS: APPLY: Constify timings argument in dss_mgr_set_timings Archit Taneja
2012-08-01 10:43 ` [RFC 02/17] OMAPDSS: DPI: Remove omap_dss_device arguments in dpi_set_dsi_clk/dpi_set_dispc_clk Archit Taneja
2012-08-01 10:43 ` [RFC 03/17] OMAPDSS: HDMI: Remove omap_dss_device argument from hdmi_compute_pll Archit Taneja
2012-08-01 10:43 ` [RFC 04/17] OMAPDSS: DPI: Add locking for DPI interface Archit Taneja
2012-08-01 10:43 ` [RFC 05/17] OMAPDSS: DPI: Maintain our own timings field in driver data Archit Taneja
2012-08-01 10:43 ` [RFC 06/17] OMAPDSS: DPI displays: Take care of panel timings in the driver itself Archit Taneja
2012-08-01 10:43 ` [RFC 07/17] OMAPDSS: Displays: Add locking in generic DPI panel driver Archit Taneja
2012-08-01 10:43 ` [RFC 08/17] OMAPDSS: DSI: Maintain own copy of timings in driver data Archit Taneja
2012-08-07 14:07   ` Tomi Valkeinen
2012-08-08  6:09     ` Archit Taneja
2012-08-08  6:15       ` Tomi Valkeinen
2012-08-08  6:41         ` Archit Taneja
2012-08-08  7:10           ` Tomi Valkeinen
2012-08-08  8:06             ` Archit Taneja
2012-08-01 10:43 ` [RFC 09/17] OMAPDSS: HDMI: Use our own omap_video_timings field when setting interface timings Archit Taneja
2012-08-01 10:43 ` [RFC 10/17] OMAPDSS: HDMI: Add a get_timing function for HDMI interface Archit Taneja
2012-08-01 10:43 ` [RFC 11/17] OMAPDSS: HDMI: Add locking for hdmi interface get/set timing functions Archit Taneja
2012-08-01 10:43 ` [RFC 12/17] OMAPDSS: SDI: Create a separate function for timing/clock configurations Archit Taneja
2012-08-01 10:43 ` [RFC 13/17] OMAPDSS: SDI: Create a function to set timings Archit Taneja
2012-08-07 14:20   ` Tomi Valkeinen
2012-08-08  6:10     ` Archit Taneja
2012-08-01 10:43 ` [RFC 14/17] OMAPDSS: SDI: Maintain our own timings field in driver data Archit Taneja
2012-08-01 10:43 ` [RFC 15/17] OMAPDSS: VENC: Split VENC into interface and panel driver Archit Taneja
2012-08-01 10:43 ` [RFC 16/17] OMAPDSS: VENC: Maintain our own timings field in driver data Archit Taneja
2012-08-01 10:43 ` [RFC 17/17] OMAPDSS: VENC: Add a get_timing function for VENC interface Archit Taneja
2012-08-01 10:47 ` Archit Taneja [this message]
2012-08-07 14:32 ` [RFC 00/17] OMAPDSS: Change way of passing timings from panel driver to interface Tomi Valkeinen
2012-08-08  6:17   ` Archit Taneja
2012-08-08  6:25     ` Tomi Valkeinen
2012-08-08  6:59       ` Archit Taneja
2012-08-08  7:27         ` Tomi Valkeinen
2012-08-08  8:11           ` Archit Taneja
2012-08-08  8:13             ` Tomi Valkeinen
2012-08-08  8:50               ` Archit Taneja
2012-08-08  8:48                 ` Tomi Valkeinen
2012-08-08  9:36                   ` Archit Taneja
2012-08-09 11:55 ` [PATCH v2 00/13] " Archit Taneja
2012-08-09 11:56   ` [PATCH v2 01/13] OMAPDSS: DPI: Maintain our own timings field in driver data Archit Taneja
2012-08-09 11:56   ` [PATCH v2 02/13] OMAPDSS: DPI displays: Take care of panel timings in the driver itself Archit Taneja
2012-08-09 11:56   ` [PATCH v2 03/13] OMAPDSS: DSI: Maintain own copy of timings in driver data Archit Taneja
2012-08-09 11:56   ` [PATCH v2 04/13] OMAPDSS: DSI: Add function to set panel size for command mode panels Archit Taneja
2012-08-09 11:56   ` [PATCH v2 05/13] OMAPDSS: DSI: Update manager timings on a manual update Archit Taneja
2012-08-09 11:56   ` [PATCH v2 06/13] OMAPDSS: HDMI: Use our own omap_video_timings field when setting interface timings Archit Taneja
2012-08-09 11:56   ` [PATCH v2 07/13] OMAPDSS: HDMI: Add a get_timing function for HDMI interface Archit Taneja
2012-08-14 13:02     ` Tomi Valkeinen
2012-08-14 13:27       ` Archit Taneja
2012-08-14 14:10         ` Tomi Valkeinen
2012-08-14 17:28           ` Archit Taneja
2012-08-09 11:56   ` [PATCH v2 08/13] OMAPDSS: HDMI: Add locking for hdmi interface get/set timing functions Archit Taneja
2012-08-09 11:56   ` [PATCH v2 09/13] OMAPDSS: SDI: Create a function to set timings Archit Taneja
2012-08-14 13:44     ` Tomi Valkeinen
2012-08-14 17:08       ` Archit Taneja
2012-08-14 17:33         ` Tomi Valkeinen
2012-08-14 19:20           ` Archit Taneja
2012-08-15  6:43             ` Tomi Valkeinen
2012-08-14 19:26         ` Rob Clark
2012-08-09 11:56   ` [PATCH v2 10/13] OMAPDSS: SDI: Maintain our own timings field in driver data Archit Taneja
2012-08-09 11:56   ` [PATCH v2 11/13] OMAPDSS: VENC: Split VENC into interface and panel driver Archit Taneja
2012-08-09 11:56   ` [PATCH v2 12/13] OMAPDSS: VENC: Maintain our own timings field in driver data Archit Taneja
2012-08-09 11:56   ` [PATCH v2 13/13] OMAPDSS: VENC: Add a get_timing function for VENC interface Archit Taneja

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5019068E.5020006@ti.com \
    --to=a0393947@ti.com \
    --cc=linux-fbdev@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=rob@ti.com \
    --cc=sumit.semwal@ti.com \
    --cc=tomi.valkeinen@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).