Requirement for DSI video mode support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

We (TI) have been working on a DSI video mode driver for OMAP4 and I
am aware that other people are working with similar drivers. We had to
tweak the code to make the drivers work with current code but we would
like to make it the correct way, that is, introducing a proper
functionality instead of inserting tweaks in the present command mode
driver. Therefore, there is an initiative from us to modify current
dss/dsi code to support DSI video mode.

We have collected a list of requirements and ideas (with the help of
ppl copied) from our experience working with these drivers, but it
would be great if you can discuss/comment further on this.

Requirements:

- A better way of exposing VC's to a panel driver, since most panels
use more than one VC. Currently the design supports only one per
panel. Perhaps a VC resource pool could be created.
- A way of imposing restrictions on clock sources based on dsi mode.
- Runtime calculation of required clocks and PLL parameters. This is
to reduce complexity in clock calculations, specially when having two
panels running at the same time.
- A way to pass specific requirements from panel driver to DSI driver
(enable/disable BTA, set HS Clk always on, etc).
- Remove some hardcoded values in dsi.c and make the panel pass the
information to DSI driver(RX, TX fifo sizes of VCs, enabling/disabling
dsi timers, etc)
- A cleaner way of handling both DSI1 and DSI2 blocks(and more in
omap5) in the same driver.
- A way to easily set non-burst event mode, non-burst pulse mode and
burst mode configuration as defined on DSI protocol specs.
- A way to calculate correct DSI blanking parameters based on panel
blanking requirements (for DSI Video panels, these will be have to be
specified statically somewhere, much like DPI displays).
- Remove timeout error/warnings when disabling dsi phy interface since
on video mode it should wait instead for next vsync.


Design ideas:

- It could actually be worthwhile to have separate files for command
and video mode and a core dsi driver file.

- We can have a enum like this to choose between modes:

plat/display.h can have an enum like:
enum omap_dss_dsi_mode {
    OMAP_DSS_DSI_CMDMODE   = 1 << 0,
    OMAP_DSS_DSI_VIDEOMODE = 1 << 1,

};
Nit pick - either make it #define and have bit offset as above OR
Better still, you wont need both at the same time, so bit offset wont be
useful too much.. OMAP_DSS_DSI_CMDMODE = 1, OMAP_DSS_DSI_VIDEOMODE = 2,

- If we want a user to switch between modes, we may need to have a
member like "supported_modes" which could check if the desired mode is
supported by the panel. Switching between modes at runtime would be
quite unlikely (and hard). We might want to stick with the above if we
want a member like supported_modes:
    .supported_modes = OMAP_DSS_DSI_CMDMODE | OMAP_DSS_DSI_VIDEOMODE;

- The dssdev struct can have a member dsi_mode of the above type.

- This would look nice in the board file and would also be useful if
there are multiple panels.

- We can have a bootarg to choose one of the modes (module parameter),
the driver can check against this member during init.


Let me know any comments...


Regards,
Jorge Bustamante
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux