162306a36Sopenharmony_ci=========================
262306a36Sopenharmony_ciOMAP2/3 Display Subsystem
362306a36Sopenharmony_ci=========================
462306a36Sopenharmony_ci
562306a36Sopenharmony_ciThis is an almost total rewrite of the OMAP FB driver in drivers/video/omap
662306a36Sopenharmony_ci(let's call it DSS1). The main differences between DSS1 and DSS2 are DSI,
762306a36Sopenharmony_ciTV-out and multiple display support, but there are lots of small improvements
862306a36Sopenharmony_cialso.
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ciThe DSS2 driver (omapdss module) is in arch/arm/plat-omap/dss/, and the FB,
1162306a36Sopenharmony_cipanel and controller drivers are in drivers/video/omap2/. DSS1 and DSS2 live
1262306a36Sopenharmony_cicurrently side by side, you can choose which one to use.
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ciFeatures
1562306a36Sopenharmony_ci--------
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciWorking and tested features include:
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci- MIPI DPI (parallel) output
2062306a36Sopenharmony_ci- MIPI DSI output in command mode
2162306a36Sopenharmony_ci- MIPI DBI (RFBI) output
2262306a36Sopenharmony_ci- SDI output
2362306a36Sopenharmony_ci- TV output
2462306a36Sopenharmony_ci- All pieces can be compiled as a module or inside kernel
2562306a36Sopenharmony_ci- Use DISPC to update any of the outputs
2662306a36Sopenharmony_ci- Use CPU to update RFBI or DSI output
2762306a36Sopenharmony_ci- OMAP DISPC planes
2862306a36Sopenharmony_ci- RGB16, RGB24 packed, RGB24 unpacked
2962306a36Sopenharmony_ci- YUV2, UYVY
3062306a36Sopenharmony_ci- Scaling
3162306a36Sopenharmony_ci- Adjusting DSS FCK to find a good pixel clock
3262306a36Sopenharmony_ci- Use DSI DPLL to create DSS FCK
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ciTested boards include:
3562306a36Sopenharmony_ci- OMAP3 SDP board
3662306a36Sopenharmony_ci- Beagle board
3762306a36Sopenharmony_ci- N810
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ciomapdss driver
4062306a36Sopenharmony_ci--------------
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ciThe DSS driver does not itself have any support for Linux framebuffer, V4L or
4362306a36Sopenharmony_cisuch like the current ones, but it has an internal kernel API that upper level
4462306a36Sopenharmony_cidrivers can use.
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ciThe DSS driver models OMAP's overlays, overlay managers and displays in a
4762306a36Sopenharmony_ciflexible way to enable non-common multi-display configuration. In addition to
4862306a36Sopenharmony_cimodelling the hardware overlays, omapdss supports virtual overlays and overlay
4962306a36Sopenharmony_cimanagers. These can be used when updating a display with CPU or system DMA.
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ciomapdss driver support for audio
5262306a36Sopenharmony_ci--------------------------------
5362306a36Sopenharmony_ciThere exist several display technologies and standards that support audio as
5462306a36Sopenharmony_ciwell. Hence, it is relevant to update the DSS device driver to provide an audio
5562306a36Sopenharmony_ciinterface that may be used by an audio driver or any other driver interested in
5662306a36Sopenharmony_cithe functionality.
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ciThe audio_enable function is intended to prepare the relevant
5962306a36Sopenharmony_ciIP for playback (e.g., enabling an audio FIFO, taking in/out of reset
6062306a36Sopenharmony_cisome IP, enabling companion chips, etc). It is intended to be called before
6162306a36Sopenharmony_ciaudio_start. The audio_disable function performs the reverse operation and is
6262306a36Sopenharmony_ciintended to be called after audio_stop.
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ciWhile a given DSS device driver may support audio, it is possible that for
6562306a36Sopenharmony_cicertain configurations audio is not supported (e.g., an HDMI display using a
6662306a36Sopenharmony_ciVESA video timing). The audio_supported function is intended to query whether
6762306a36Sopenharmony_cithe current configuration of the display supports audio.
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ciThe audio_config function is intended to configure all the relevant audio
7062306a36Sopenharmony_ciparameters of the display. In order to make the function independent of any
7162306a36Sopenharmony_cispecific DSS device driver, a struct omap_dss_audio is defined. Its purpose
7262306a36Sopenharmony_ciis to contain all the required parameters for audio configuration. At the
7362306a36Sopenharmony_cimoment, such structure contains pointers to IEC-60958 channel status word
7462306a36Sopenharmony_ciand CEA-861 audio infoframe structures. This should be enough to support
7562306a36Sopenharmony_ciHDMI and DisplayPort, as both are based on CEA-861 and IEC-60958.
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ciThe audio_enable/disable, audio_config and audio_supported functions could be
7862306a36Sopenharmony_ciimplemented as functions that may sleep. Hence, they should not be called
7962306a36Sopenharmony_ciwhile holding a spinlock or a readlock.
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ciThe audio_start/audio_stop function is intended to effectively start/stop audio
8262306a36Sopenharmony_ciplayback after the configuration has taken place. These functions are designed
8362306a36Sopenharmony_cito be used in an atomic context. Hence, audio_start should return quickly and be
8462306a36Sopenharmony_cicalled only after all the needed resources for audio playback (audio FIFOs,
8562306a36Sopenharmony_ciDMA channels, companion chips, etc) have been enabled to begin data transfers.
8662306a36Sopenharmony_ciaudio_stop is designed to only stop the audio transfers. The resources used
8762306a36Sopenharmony_cifor playback are released using audio_disable.
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ciThe enum omap_dss_audio_state may be used to help the implementations of
9062306a36Sopenharmony_cithe interface to keep track of the audio state. The initial state is _DISABLED;
9162306a36Sopenharmony_cithen, the state transitions to _CONFIGURED, and then, when it is ready to
9262306a36Sopenharmony_ciplay audio, to _ENABLED. The state _PLAYING is used when the audio is being
9362306a36Sopenharmony_cirendered.
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ciPanel and controller drivers
9762306a36Sopenharmony_ci----------------------------
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_ciThe drivers implement panel or controller specific functionality and are not
10062306a36Sopenharmony_ciusually visible to users except through omapfb driver.  They register
10162306a36Sopenharmony_cithemselves to the DSS driver.
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ciomapfb driver
10462306a36Sopenharmony_ci-------------
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ciThe omapfb driver implements arbitrary number of standard linux framebuffers.
10762306a36Sopenharmony_ciThese framebuffers can be routed flexibly to any overlays, thus allowing very
10862306a36Sopenharmony_cidynamic display architecture.
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ciThe driver exports some omapfb specific ioctls, which are compatible with the
11162306a36Sopenharmony_ciioctls in the old driver.
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ciThe rest of the non standard features are exported via sysfs. Whether the final
11462306a36Sopenharmony_ciimplementation will use sysfs, or ioctls, is still open.
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ciV4L2 drivers
11762306a36Sopenharmony_ci------------
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ciV4L2 is being implemented in TI.
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ciFrom omapdss point of view the V4L2 drivers should be similar to framebuffer
12262306a36Sopenharmony_cidriver.
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ciArchitecture
12562306a36Sopenharmony_ci--------------------
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_ciSome clarification what the different components do:
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ci    - Framebuffer is a memory area inside OMAP's SRAM/SDRAM that contains the
13062306a36Sopenharmony_ci      pixel data for the image. Framebuffer has width and height and color
13162306a36Sopenharmony_ci      depth.
13262306a36Sopenharmony_ci    - Overlay defines where the pixels are read from and where they go on the
13362306a36Sopenharmony_ci      screen. The overlay may be smaller than framebuffer, thus displaying only
13462306a36Sopenharmony_ci      part of the framebuffer. The position of the overlay may be changed if
13562306a36Sopenharmony_ci      the overlay is smaller than the display.
13662306a36Sopenharmony_ci    - Overlay manager combines the overlays in to one image and feeds them to
13762306a36Sopenharmony_ci      display.
13862306a36Sopenharmony_ci    - Display is the actual physical display device.
13962306a36Sopenharmony_ci
14062306a36Sopenharmony_ciA framebuffer can be connected to multiple overlays to show the same pixel data
14162306a36Sopenharmony_cion all of the overlays. Note that in this case the overlay input sizes must be
14262306a36Sopenharmony_cithe same, but, in case of video overlays, the output size can be different. Any
14362306a36Sopenharmony_ciframebuffer can be connected to any overlay.
14462306a36Sopenharmony_ci
14562306a36Sopenharmony_ciAn overlay can be connected to one overlay manager. Also DISPC overlays can be
14662306a36Sopenharmony_ciconnected only to DISPC overlay managers, and virtual overlays can be only
14762306a36Sopenharmony_ciconnected to virtual overlays.
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ciAn overlay manager can be connected to one display. There are certain
15062306a36Sopenharmony_cirestrictions which kinds of displays an overlay manager can be connected:
15162306a36Sopenharmony_ci
15262306a36Sopenharmony_ci    - DISPC TV overlay manager can be only connected to TV display.
15362306a36Sopenharmony_ci    - Virtual overlay managers can only be connected to DBI or DSI displays.
15462306a36Sopenharmony_ci    - DISPC LCD overlay manager can be connected to all displays, except TV
15562306a36Sopenharmony_ci      display.
15662306a36Sopenharmony_ci
15762306a36Sopenharmony_ciSysfs
15862306a36Sopenharmony_ci-----
15962306a36Sopenharmony_ciThe sysfs interface is mainly used for testing. I don't think sysfs
16062306a36Sopenharmony_ciinterface is the best for this in the final version, but I don't quite know
16162306a36Sopenharmony_ciwhat would be the best interfaces for these things.
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ciThe sysfs interface is divided to two parts: DSS and FB.
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ci/sys/class/graphics/fb? directory:
16662306a36Sopenharmony_cimirror		0=off, 1=on
16762306a36Sopenharmony_cirotate		Rotation 0-3 for 0, 90, 180, 270 degrees
16862306a36Sopenharmony_cirotate_type	0 = DMA rotation, 1 = VRFB rotation
16962306a36Sopenharmony_cioverlays	List of overlay numbers to which framebuffer pixels go
17062306a36Sopenharmony_ciphys_addr	Physical address of the framebuffer
17162306a36Sopenharmony_civirt_addr	Virtual address of the framebuffer
17262306a36Sopenharmony_cisize		Size of the framebuffer
17362306a36Sopenharmony_ci
17462306a36Sopenharmony_ci/sys/devices/platform/omapdss/overlay? directory:
17562306a36Sopenharmony_cienabled		0=off, 1=on
17662306a36Sopenharmony_ciinput_size	width,height (ie. the framebuffer size)
17762306a36Sopenharmony_cimanager		Destination overlay manager name
17862306a36Sopenharmony_ciname
17962306a36Sopenharmony_cioutput_size	width,height
18062306a36Sopenharmony_ciposition	x,y
18162306a36Sopenharmony_ciscreen_width	width
18262306a36Sopenharmony_ciglobal_alpha   	global alpha 0-255 0=transparent 255=opaque
18362306a36Sopenharmony_ci
18462306a36Sopenharmony_ci/sys/devices/platform/omapdss/manager? directory:
18562306a36Sopenharmony_cidisplay				Destination display
18662306a36Sopenharmony_ciname
18762306a36Sopenharmony_cialpha_blending_enabled		0=off, 1=on
18862306a36Sopenharmony_citrans_key_enabled		0=off, 1=on
18962306a36Sopenharmony_citrans_key_type			gfx-destination, video-source
19062306a36Sopenharmony_citrans_key_value			transparency color key (RGB24)
19162306a36Sopenharmony_cidefault_color			default background color (RGB24)
19262306a36Sopenharmony_ci
19362306a36Sopenharmony_ci/sys/devices/platform/omapdss/display? directory:
19462306a36Sopenharmony_ci
19562306a36Sopenharmony_ci=============== =============================================================
19662306a36Sopenharmony_cictrl_name	Controller name
19762306a36Sopenharmony_cimirror		0=off, 1=on
19862306a36Sopenharmony_ciupdate_mode	0=off, 1=auto, 2=manual
19962306a36Sopenharmony_cienabled		0=off, 1=on
20062306a36Sopenharmony_ciname
20162306a36Sopenharmony_cirotate		Rotation 0-3 for 0, 90, 180, 270 degrees
20262306a36Sopenharmony_citimings		Display timings (pixclock,xres/hfp/hbp/hsw,yres/vfp/vbp/vsw)
20362306a36Sopenharmony_ci		When writing, two special timings are accepted for tv-out:
20462306a36Sopenharmony_ci		"pal" and "ntsc"
20562306a36Sopenharmony_cipanel_name
20662306a36Sopenharmony_citear_elim	Tearing elimination 0=off, 1=on
20762306a36Sopenharmony_cioutput_type	Output type (video encoder only): "composite" or "svideo"
20862306a36Sopenharmony_ci=============== =============================================================
20962306a36Sopenharmony_ci
21062306a36Sopenharmony_ciThere are also some debugfs files at <debugfs>/omapdss/ which show information
21162306a36Sopenharmony_ciabout clocks and registers.
21262306a36Sopenharmony_ci
21362306a36Sopenharmony_ciExamples
21462306a36Sopenharmony_ci--------
21562306a36Sopenharmony_ci
21662306a36Sopenharmony_ciThe following definitions have been made for the examples below::
21762306a36Sopenharmony_ci
21862306a36Sopenharmony_ci	ovl0=/sys/devices/platform/omapdss/overlay0
21962306a36Sopenharmony_ci	ovl1=/sys/devices/platform/omapdss/overlay1
22062306a36Sopenharmony_ci	ovl2=/sys/devices/platform/omapdss/overlay2
22162306a36Sopenharmony_ci
22262306a36Sopenharmony_ci	mgr0=/sys/devices/platform/omapdss/manager0
22362306a36Sopenharmony_ci	mgr1=/sys/devices/platform/omapdss/manager1
22462306a36Sopenharmony_ci
22562306a36Sopenharmony_ci	lcd=/sys/devices/platform/omapdss/display0
22662306a36Sopenharmony_ci	dvi=/sys/devices/platform/omapdss/display1
22762306a36Sopenharmony_ci	tv=/sys/devices/platform/omapdss/display2
22862306a36Sopenharmony_ci
22962306a36Sopenharmony_ci	fb0=/sys/class/graphics/fb0
23062306a36Sopenharmony_ci	fb1=/sys/class/graphics/fb1
23162306a36Sopenharmony_ci	fb2=/sys/class/graphics/fb2
23262306a36Sopenharmony_ci
23362306a36Sopenharmony_ciDefault setup on OMAP3 SDP
23462306a36Sopenharmony_ci--------------------------
23562306a36Sopenharmony_ci
23662306a36Sopenharmony_ciHere's the default setup on OMAP3 SDP board. All planes go to LCD. DVI
23762306a36Sopenharmony_ciand TV-out are not in use. The columns from left to right are:
23862306a36Sopenharmony_ciframebuffers, overlays, overlay managers, displays. Framebuffers are
23962306a36Sopenharmony_cihandled by omapfb, and the rest by the DSS::
24062306a36Sopenharmony_ci
24162306a36Sopenharmony_ci	FB0 --- GFX  -\            DVI
24262306a36Sopenharmony_ci	FB1 --- VID1 --+- LCD ---- LCD
24362306a36Sopenharmony_ci	FB2 --- VID2 -/   TV ----- TV
24462306a36Sopenharmony_ci
24562306a36Sopenharmony_ciExample: Switch from LCD to DVI
24662306a36Sopenharmony_ci-------------------------------
24762306a36Sopenharmony_ci
24862306a36Sopenharmony_ci::
24962306a36Sopenharmony_ci
25062306a36Sopenharmony_ci	w=`cat $dvi/timings | cut -d "," -f 2 | cut -d "/" -f 1`
25162306a36Sopenharmony_ci	h=`cat $dvi/timings | cut -d "," -f 3 | cut -d "/" -f 1`
25262306a36Sopenharmony_ci
25362306a36Sopenharmony_ci	echo "0" > $lcd/enabled
25462306a36Sopenharmony_ci	echo "" > $mgr0/display
25562306a36Sopenharmony_ci	fbset -fb /dev/fb0 -xres $w -yres $h -vxres $w -vyres $h
25662306a36Sopenharmony_ci	# at this point you have to switch the dvi/lcd dip-switch from the omap board
25762306a36Sopenharmony_ci	echo "dvi" > $mgr0/display
25862306a36Sopenharmony_ci	echo "1" > $dvi/enabled
25962306a36Sopenharmony_ci
26062306a36Sopenharmony_ciAfter this the configuration looks like:::
26162306a36Sopenharmony_ci
26262306a36Sopenharmony_ci	FB0 --- GFX  -\         -- DVI
26362306a36Sopenharmony_ci	FB1 --- VID1 --+- LCD -/   LCD
26462306a36Sopenharmony_ci	FB2 --- VID2 -/   TV ----- TV
26562306a36Sopenharmony_ci
26662306a36Sopenharmony_ciExample: Clone GFX overlay to LCD and TV
26762306a36Sopenharmony_ci----------------------------------------
26862306a36Sopenharmony_ci
26962306a36Sopenharmony_ci::
27062306a36Sopenharmony_ci
27162306a36Sopenharmony_ci	w=`cat $tv/timings | cut -d "," -f 2 | cut -d "/" -f 1`
27262306a36Sopenharmony_ci	h=`cat $tv/timings | cut -d "," -f 3 | cut -d "/" -f 1`
27362306a36Sopenharmony_ci
27462306a36Sopenharmony_ci	echo "0" > $ovl0/enabled
27562306a36Sopenharmony_ci	echo "0" > $ovl1/enabled
27662306a36Sopenharmony_ci
27762306a36Sopenharmony_ci	echo "" > $fb1/overlays
27862306a36Sopenharmony_ci	echo "0,1" > $fb0/overlays
27962306a36Sopenharmony_ci
28062306a36Sopenharmony_ci	echo "$w,$h" > $ovl1/output_size
28162306a36Sopenharmony_ci	echo "tv" > $ovl1/manager
28262306a36Sopenharmony_ci
28362306a36Sopenharmony_ci	echo "1" > $ovl0/enabled
28462306a36Sopenharmony_ci	echo "1" > $ovl1/enabled
28562306a36Sopenharmony_ci
28662306a36Sopenharmony_ci	echo "1" > $tv/enabled
28762306a36Sopenharmony_ci
28862306a36Sopenharmony_ciAfter this the configuration looks like (only relevant parts shown)::
28962306a36Sopenharmony_ci
29062306a36Sopenharmony_ci	FB0 +-- GFX  ---- LCD ---- LCD
29162306a36Sopenharmony_ci	\- VID1 ---- TV  ---- TV
29262306a36Sopenharmony_ci
29362306a36Sopenharmony_ciMisc notes
29462306a36Sopenharmony_ci----------
29562306a36Sopenharmony_ci
29662306a36Sopenharmony_ciOMAP FB allocates the framebuffer memory using the standard dma allocator. You
29762306a36Sopenharmony_cican enable Contiguous Memory Allocator (CONFIG_CMA) to improve the dma
29862306a36Sopenharmony_ciallocator, and if CMA is enabled, you use "cma=" kernel parameter to increase
29962306a36Sopenharmony_cithe global memory area for CMA.
30062306a36Sopenharmony_ci
30162306a36Sopenharmony_ciUsing DSI DPLL to generate pixel clock it is possible produce the pixel clock
30262306a36Sopenharmony_ciof 86.5MHz (max possible), and with that you get 1280x1024@57 output from DVI.
30362306a36Sopenharmony_ci
30462306a36Sopenharmony_ciRotation and mirroring currently only supports RGB565 and RGB8888 modes. VRFB
30562306a36Sopenharmony_cidoes not support mirroring.
30662306a36Sopenharmony_ci
30762306a36Sopenharmony_ciVRFB rotation requires much more memory than non-rotated framebuffer, so you
30862306a36Sopenharmony_ciprobably need to increase your vram setting before using VRFB rotation. Also,
30962306a36Sopenharmony_cimany applications may not work with VRFB if they do not pay attention to all
31062306a36Sopenharmony_ciframebuffer parameters.
31162306a36Sopenharmony_ci
31262306a36Sopenharmony_ciKernel boot arguments
31362306a36Sopenharmony_ci---------------------
31462306a36Sopenharmony_ci
31562306a36Sopenharmony_ciomapfb.mode=<display>:<mode>[,...]
31662306a36Sopenharmony_ci	- Default video mode for specified displays. For example,
31762306a36Sopenharmony_ci	  "dvi:800x400MR-24@60".  See drivers/video/modedb.c.
31862306a36Sopenharmony_ci	  There are also two special modes: "pal" and "ntsc" that
31962306a36Sopenharmony_ci	  can be used to tv out.
32062306a36Sopenharmony_ci
32162306a36Sopenharmony_ciomapfb.vram=<fbnum>:<size>[@<physaddr>][,...]
32262306a36Sopenharmony_ci	- VRAM allocated for a framebuffer. Normally omapfb allocates vram
32362306a36Sopenharmony_ci	  depending on the display size. With this you can manually allocate
32462306a36Sopenharmony_ci	  more or define the physical address of each framebuffer. For example,
32562306a36Sopenharmony_ci	  "1:4M" to allocate 4M for fb1.
32662306a36Sopenharmony_ci
32762306a36Sopenharmony_ciomapfb.debug=<y|n>
32862306a36Sopenharmony_ci	- Enable debug printing. You have to have OMAPFB debug support enabled
32962306a36Sopenharmony_ci	  in kernel config.
33062306a36Sopenharmony_ci
33162306a36Sopenharmony_ciomapfb.test=<y|n>
33262306a36Sopenharmony_ci	- Draw test pattern to framebuffer whenever framebuffer settings change.
33362306a36Sopenharmony_ci	  You need to have OMAPFB debug support enabled in kernel config.
33462306a36Sopenharmony_ci
33562306a36Sopenharmony_ciomapfb.vrfb=<y|n>
33662306a36Sopenharmony_ci	- Use VRFB rotation for all framebuffers.
33762306a36Sopenharmony_ci
33862306a36Sopenharmony_ciomapfb.rotate=<angle>
33962306a36Sopenharmony_ci	- Default rotation applied to all framebuffers.
34062306a36Sopenharmony_ci	  0 - 0 degree rotation
34162306a36Sopenharmony_ci	  1 - 90 degree rotation
34262306a36Sopenharmony_ci	  2 - 180 degree rotation
34362306a36Sopenharmony_ci	  3 - 270 degree rotation
34462306a36Sopenharmony_ci
34562306a36Sopenharmony_ciomapfb.mirror=<y|n>
34662306a36Sopenharmony_ci	- Default mirror for all framebuffers. Only works with DMA rotation.
34762306a36Sopenharmony_ci
34862306a36Sopenharmony_ciomapdss.def_disp=<display>
34962306a36Sopenharmony_ci	- Name of default display, to which all overlays will be connected.
35062306a36Sopenharmony_ci	  Common examples are "lcd" or "tv".
35162306a36Sopenharmony_ci
35262306a36Sopenharmony_ciomapdss.debug=<y|n>
35362306a36Sopenharmony_ci	- Enable debug printing. You have to have DSS debug support enabled in
35462306a36Sopenharmony_ci	  kernel config.
35562306a36Sopenharmony_ci
35662306a36Sopenharmony_ciTODO
35762306a36Sopenharmony_ci----
35862306a36Sopenharmony_ci
35962306a36Sopenharmony_ciDSS locking
36062306a36Sopenharmony_ci
36162306a36Sopenharmony_ciError checking
36262306a36Sopenharmony_ci
36362306a36Sopenharmony_ci- Lots of checks are missing or implemented just as BUG()
36462306a36Sopenharmony_ci
36562306a36Sopenharmony_ciSystem DMA update for DSI
36662306a36Sopenharmony_ci
36762306a36Sopenharmony_ci- Can be used for RGB16 and RGB24P modes. Probably not for RGB24U (how
36862306a36Sopenharmony_ci  to skip the empty byte?)
36962306a36Sopenharmony_ci
37062306a36Sopenharmony_ciOMAP1 support
37162306a36Sopenharmony_ci
37262306a36Sopenharmony_ci- Not sure if needed
373