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
>
WARNING: multiple messages have this Message-ID (diff)
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, 1 Aug 2012 16:05:58 +0530 [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
>
next prev parent reply other threads:[~2012-08-01 10:47 UTC|newest]
Thread overview: 122+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-01 10:31 [RFC 00/17] OMAPDSS: Change way of passing timings from panel driver to interface Archit Taneja
2012-08-01 10:43 ` Archit Taneja
2012-08-01 10:31 ` [RFC 01/17] OMAPDSS: APPLY: Constify timings argument in dss_mgr_set_timings Archit Taneja
2012-08-01 10:43 ` Archit Taneja
2012-08-01 10:31 ` [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 ` Archit Taneja
2012-08-01 10:31 ` [RFC 03/17] OMAPDSS: HDMI: Remove omap_dss_device argument from hdmi_compute_pll Archit Taneja
2012-08-01 10:43 ` Archit Taneja
2012-08-01 10:31 ` [RFC 04/17] OMAPDSS: DPI: Add locking for DPI interface Archit Taneja
2012-08-01 10:43 ` Archit Taneja
2012-08-01 10:31 ` [RFC 05/17] OMAPDSS: DPI: Maintain our own timings field in driver data Archit Taneja
2012-08-01 10:43 ` Archit Taneja
2012-08-01 10:31 ` [RFC 06/17] OMAPDSS: DPI displays: Take care of panel timings in the driver itself Archit Taneja
2012-08-01 10:43 ` Archit Taneja
2012-08-01 10:31 ` [RFC 07/17] OMAPDSS: Displays: Add locking in generic DPI panel driver Archit Taneja
2012-08-01 10:43 ` Archit Taneja
2012-08-01 10:31 ` [RFC 08/17] OMAPDSS: DSI: Maintain own copy of timings in driver data Archit Taneja
2012-08-01 10:43 ` Archit Taneja
2012-08-07 14:07 ` Tomi Valkeinen
2012-08-07 14:07 ` Tomi Valkeinen
2012-08-08 5:57 ` Archit Taneja
2012-08-08 6:09 ` Archit Taneja
2012-08-08 6:15 ` Tomi Valkeinen
2012-08-08 6:15 ` Tomi Valkeinen
2012-08-08 6:29 ` Archit Taneja
2012-08-08 6:41 ` Archit Taneja
2012-08-08 7:10 ` Tomi Valkeinen
2012-08-08 7:10 ` Tomi Valkeinen
2012-08-08 7:54 ` Archit Taneja
2012-08-08 8:06 ` Archit Taneja
2012-08-01 10:31 ` [RFC 09/17] OMAPDSS: HDMI: Use our own omap_video_timings field when setting interface timings Archit Taneja
2012-08-01 10:43 ` Archit Taneja
2012-08-01 10:31 ` [RFC 10/17] OMAPDSS: HDMI: Add a get_timing function for HDMI interface Archit Taneja
2012-08-01 10:43 ` Archit Taneja
2012-08-01 10:31 ` [RFC 11/17] OMAPDSS: HDMI: Add locking for hdmi interface get/set timing functions Archit Taneja
2012-08-01 10:43 ` Archit Taneja
2012-08-01 10:31 ` [RFC 12/17] OMAPDSS: SDI: Create a separate function for timing/clock configurations Archit Taneja
2012-08-01 10:43 ` Archit Taneja
2012-08-01 10:31 ` [RFC 13/17] OMAPDSS: SDI: Create a function to set timings Archit Taneja
2012-08-01 10:43 ` Archit Taneja
2012-08-07 14:20 ` Tomi Valkeinen
2012-08-07 14:20 ` Tomi Valkeinen
2012-08-08 5:58 ` Archit Taneja
2012-08-08 6:10 ` Archit Taneja
2012-08-01 10:31 ` [RFC 14/17] OMAPDSS: SDI: Maintain our own timings field in driver data Archit Taneja
2012-08-01 10:43 ` Archit Taneja
2012-08-01 10:31 ` [RFC 15/17] OMAPDSS: VENC: Split VENC into interface and panel driver Archit Taneja
2012-08-01 10:43 ` Archit Taneja
2012-08-01 10:31 ` [RFC 16/17] OMAPDSS: VENC: Maintain our own timings field in driver data Archit Taneja
2012-08-01 10:43 ` Archit Taneja
2012-08-01 10:31 ` [RFC 17/17] OMAPDSS: VENC: Add a get_timing function for VENC interface Archit Taneja
2012-08-01 10:43 ` Archit Taneja
2012-08-01 10:35 ` Archit Taneja [this message]
2012-08-01 10:47 ` [RFC 00/17] OMAPDSS: Change way of passing timings from panel driver to interface Archit Taneja
2012-08-07 14:32 ` Tomi Valkeinen
2012-08-07 14:32 ` Tomi Valkeinen
2012-08-08 6:05 ` Archit Taneja
2012-08-08 6:17 ` Archit Taneja
2012-08-08 6:25 ` Tomi Valkeinen
2012-08-08 6:25 ` Tomi Valkeinen
2012-08-08 6:47 ` Archit Taneja
2012-08-08 6:59 ` Archit Taneja
2012-08-08 7:27 ` Tomi Valkeinen
2012-08-08 7:27 ` Tomi Valkeinen
2012-08-08 7:59 ` Archit Taneja
2012-08-08 8:11 ` Archit Taneja
2012-08-08 8:13 ` Tomi Valkeinen
2012-08-08 8:13 ` Tomi Valkeinen
2012-08-08 8:38 ` Archit Taneja
2012-08-08 8:50 ` Archit Taneja
2012-08-08 8:48 ` Tomi Valkeinen
2012-08-08 8:48 ` Tomi Valkeinen
2012-08-08 9:24 ` Archit Taneja
2012-08-08 9:36 ` Archit Taneja
2012-08-09 11:49 ` [PATCH v2 00/13] " Archit Taneja
2012-08-09 11:55 ` Archit Taneja
2012-08-09 11:49 ` [PATCH v2 01/13] OMAPDSS: DPI: Maintain our own timings field in driver data Archit Taneja
2012-08-09 11:56 ` Archit Taneja
2012-08-09 11:49 ` [PATCH v2 02/13] OMAPDSS: DPI displays: Take care of panel timings in the driver itself Archit Taneja
2012-08-09 11:56 ` Archit Taneja
2012-08-09 11:49 ` [PATCH v2 03/13] OMAPDSS: DSI: Maintain own copy of timings in driver data Archit Taneja
2012-08-09 11:56 ` Archit Taneja
2012-08-09 11:49 ` [PATCH v2 04/13] OMAPDSS: DSI: Add function to set panel size for command mode panels Archit Taneja
2012-08-09 11:56 ` Archit Taneja
2012-08-09 11:49 ` [PATCH v2 05/13] OMAPDSS: DSI: Update manager timings on a manual update Archit Taneja
2012-08-09 11:56 ` Archit Taneja
2012-08-09 11:49 ` [PATCH v2 06/13] OMAPDSS: HDMI: Use our own omap_video_timings field when setting interface timings Archit Taneja
2012-08-09 11:56 ` Archit Taneja
2012-08-09 11:49 ` [PATCH v2 07/13] OMAPDSS: HDMI: Add a get_timing function for HDMI interface Archit Taneja
2012-08-09 11:56 ` Archit Taneja
2012-08-14 13:02 ` Tomi Valkeinen
2012-08-14 13:02 ` Tomi Valkeinen
2012-08-14 13:15 ` Archit Taneja
2012-08-14 13:27 ` Archit Taneja
2012-08-14 14:10 ` Tomi Valkeinen
2012-08-14 14:10 ` Tomi Valkeinen
2012-08-14 17:16 ` Archit Taneja
2012-08-14 17:28 ` Archit Taneja
2012-08-09 11:49 ` [PATCH v2 08/13] OMAPDSS: HDMI: Add locking for hdmi interface get/set timing functions Archit Taneja
2012-08-09 11:56 ` Archit Taneja
2012-08-09 11:49 ` [PATCH v2 09/13] OMAPDSS: SDI: Create a function to set timings Archit Taneja
2012-08-09 11:56 ` Archit Taneja
2012-08-14 13:44 ` Tomi Valkeinen
2012-08-14 13:44 ` Tomi Valkeinen
2012-08-14 16:56 ` Archit Taneja
2012-08-14 17:08 ` Archit Taneja
2012-08-14 17:33 ` Tomi Valkeinen
2012-08-14 17:33 ` Tomi Valkeinen
2012-08-14 19:08 ` Archit Taneja
2012-08-14 19:20 ` Archit Taneja
2012-08-15 6:43 ` Tomi Valkeinen
2012-08-15 6:43 ` Tomi Valkeinen
2012-08-14 19:26 ` Rob Clark
2012-08-14 19:26 ` Rob Clark
2012-08-09 11:49 ` [PATCH v2 10/13] OMAPDSS: SDI: Maintain our own timings field in driver data Archit Taneja
2012-08-09 11:56 ` Archit Taneja
2012-08-09 11:49 ` [PATCH v2 11/13] OMAPDSS: VENC: Split VENC into interface and panel driver Archit Taneja
2012-08-09 11:56 ` Archit Taneja
2012-08-09 11:49 ` [PATCH v2 12/13] OMAPDSS: VENC: Maintain our own timings field in driver data Archit Taneja
2012-08-09 11:56 ` Archit Taneja
2012-08-09 11:49 ` [PATCH v2 13/13] OMAPDSS: VENC: Add a get_timing function for VENC interface Archit Taneja
2012-08-09 11:56 ` 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.