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