~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/arch/arm/omap/dss.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/arch/arm/omap/dss.rst (Architecture i386) and /Documentation/arch/sparc64/omap/dss.rst (Architecture sparc64)


  1 =========================                         
  2 OMAP2/3 Display Subsystem                         
  3 =========================                         
  4                                                   
  5 This is an almost total rewrite of the OMAP FB    
  6 (let's call it DSS1). The main differences bet    
  7 TV-out and multiple display support, but there    
  8 also.                                             
  9                                                   
 10 The DSS2 driver (omapdss module) is in arch/ar    
 11 panel and controller drivers are in drivers/vi    
 12 currently side by side, you can choose which o    
 13                                                   
 14 Features                                          
 15 --------                                          
 16                                                   
 17 Working and tested features include:              
 18                                                   
 19 - MIPI DPI (parallel) output                      
 20 - MIPI DSI output in command mode                 
 21 - MIPI DBI (RFBI) output                          
 22 - SDI output                                      
 23 - TV output                                       
 24 - All pieces can be compiled as a module or in    
 25 - Use DISPC to update any of the outputs          
 26 - Use CPU to update RFBI or DSI output            
 27 - OMAP DISPC planes                               
 28 - RGB16, RGB24 packed, RGB24 unpacked             
 29 - YUV2, UYVY                                      
 30 - Scaling                                         
 31 - Adjusting DSS FCK to find a good pixel clock    
 32 - Use DSI DPLL to create DSS FCK                  
 33                                                   
 34 Tested boards include:                            
 35 - OMAP3 SDP board                                 
 36 - Beagle board                                    
 37 - N810                                            
 38                                                   
 39 omapdss driver                                    
 40 --------------                                    
 41                                                   
 42 The DSS driver does not itself have any suppor    
 43 such like the current ones, but it has an inte    
 44 drivers can use.                                  
 45                                                   
 46 The DSS driver models OMAP's overlays, overlay    
 47 flexible way to enable non-common multi-displa    
 48 modelling the hardware overlays, omapdss suppo    
 49 managers. These can be used when updating a di    
 50                                                   
 51 omapdss driver support for audio                  
 52 --------------------------------                  
 53 There exist several display technologies and s    
 54 well. Hence, it is relevant to update the DSS     
 55 interface that may be used by an audio driver     
 56 the functionality.                                
 57                                                   
 58 The audio_enable function is intended to prepa    
 59 IP for playback (e.g., enabling an audio FIFO,    
 60 some IP, enabling companion chips, etc). It is    
 61 audio_start. The audio_disable function perfor    
 62 intended to be called after audio_stop.           
 63                                                   
 64 While a given DSS device driver may support au    
 65 certain configurations audio is not supported     
 66 VESA video timing). The audio_supported functi    
 67 the current configuration of the display suppo    
 68                                                   
 69 The audio_config function is intended to confi    
 70 parameters of the display. In order to make th    
 71 specific DSS device driver, a struct omap_dss_    
 72 is to contain all the required parameters for     
 73 moment, such structure contains pointers to IE    
 74 and CEA-861 audio infoframe structures. This s    
 75 HDMI and DisplayPort, as both are based on CEA    
 76                                                   
 77 The audio_enable/disable, audio_config and aud    
 78 implemented as functions that may sleep. Hence    
 79 while holding a spinlock or a readlock.           
 80                                                   
 81 The audio_start/audio_stop function is intende    
 82 playback after the configuration has taken pla    
 83 to be used in an atomic context. Hence, audio_    
 84 called only after all the needed resources for    
 85 DMA channels, companion chips, etc) have been     
 86 audio_stop is designed to only stop the audio     
 87 for playback are released using audio_disable.    
 88                                                   
 89 The enum omap_dss_audio_state may be used to h    
 90 the interface to keep track of the audio state    
 91 then, the state transitions to _CONFIGURED, an    
 92 play audio, to _ENABLED. The state _PLAYING is    
 93 rendered.                                         
 94                                                   
 95                                                   
 96 Panel and controller drivers                      
 97 ----------------------------                      
 98                                                   
 99 The drivers implement panel or controller spec    
100 usually visible to users except through omapfb    
101 themselves to the DSS driver.                     
102                                                   
103 omapfb driver                                     
104 -------------                                     
105                                                   
106 The omapfb driver implements arbitrary number     
107 These framebuffers can be routed flexibly to a    
108 dynamic display architecture.                     
109                                                   
110 The driver exports some omapfb specific ioctls    
111 ioctls in the old driver.                         
112                                                   
113 The rest of the non standard features are expo    
114 implementation will use sysfs, or ioctls, is s    
115                                                   
116 V4L2 drivers                                      
117 ------------                                      
118                                                   
119 V4L2 is being implemented in TI.                  
120                                                   
121 From omapdss point of view the V4L2 drivers sh    
122 driver.                                           
123                                                   
124 Architecture                                      
125 --------------------                              
126                                                   
127 Some clarification what the different componen    
128                                                   
129     - Framebuffer is a memory area inside OMAP    
130       pixel data for the image. Framebuffer ha    
131       depth.                                      
132     - Overlay defines where the pixels are rea    
133       screen. The overlay may be smaller than     
134       part of the framebuffer. The position of    
135       the overlay is smaller than the display.    
136     - Overlay manager combines the overlays in    
137       display.                                    
138     - Display is the actual physical display d    
139                                                   
140 A framebuffer can be connected to multiple ove    
141 on all of the overlays. Note that in this case    
142 the same, but, in case of video overlays, the     
143 framebuffer can be connected to any overlay.      
144                                                   
145 An overlay can be connected to one overlay man    
146 connected only to DISPC overlay managers, and     
147 connected to virtual overlays.                    
148                                                   
149 An overlay manager can be connected to one dis    
150 restrictions which kinds of displays an overla    
151                                                   
152     - DISPC TV overlay manager can be only con    
153     - Virtual overlay managers can only be con    
154     - DISPC LCD overlay manager can be connect    
155       display.                                    
156                                                   
157 Sysfs                                             
158 -----                                             
159 The sysfs interface is mainly used for testing    
160 interface is the best for this in the final ve    
161 what would be the best interfaces for these th    
162                                                   
163 The sysfs interface is divided to two parts: D    
164                                                   
165 /sys/class/graphics/fb? directory:                
166 mirror          0=off, 1=on                       
167 rotate          Rotation 0-3 for 0, 90, 180, 2    
168 rotate_type     0 = DMA rotation, 1 = VRFB rot    
169 overlays        List of overlay numbers to whi    
170 phys_addr       Physical address of the frameb    
171 virt_addr       Virtual address of the framebu    
172 size            Size of the framebuffer           
173                                                   
174 /sys/devices/platform/omapdss/overlay? directo    
175 enabled         0=off, 1=on                       
176 input_size      width,height (ie. the framebuf    
177 manager         Destination overlay manager na    
178 name                                              
179 output_size     width,height                      
180 position        x,y                               
181 screen_width    width                             
182 global_alpha    global alpha 0-255 0=transpare    
183                                                   
184 /sys/devices/platform/omapdss/manager? directo    
185 display                         Destination di    
186 name                                              
187 alpha_blending_enabled          0=off, 1=on       
188 trans_key_enabled               0=off, 1=on       
189 trans_key_type                  gfx-destinatio    
190 trans_key_value                 transparency c    
191 default_color                   default backgr    
192                                                   
193 /sys/devices/platform/omapdss/display? directo    
194                                                   
195 =============== ==============================    
196 ctrl_name       Controller name                   
197 mirror          0=off, 1=on                       
198 update_mode     0=off, 1=auto, 2=manual           
199 enabled         0=off, 1=on                       
200 name                                              
201 rotate          Rotation 0-3 for 0, 90, 180, 2    
202 timings         Display timings (pixclock,xres    
203                 When writing, two special timi    
204                 "pal" and "ntsc"                  
205 panel_name                                        
206 tear_elim       Tearing elimination 0=off, 1=o    
207 output_type     Output type (video encoder onl    
208 =============== ==============================    
209                                                   
210 There are also some debugfs files at <debugfs>    
211 about clocks and registers.                       
212                                                   
213 Examples                                          
214 --------                                          
215                                                   
216 The following definitions have been made for t    
217                                                   
218         ovl0=/sys/devices/platform/omapdss/ove    
219         ovl1=/sys/devices/platform/omapdss/ove    
220         ovl2=/sys/devices/platform/omapdss/ove    
221                                                   
222         mgr0=/sys/devices/platform/omapdss/man    
223         mgr1=/sys/devices/platform/omapdss/man    
224                                                   
225         lcd=/sys/devices/platform/omapdss/disp    
226         dvi=/sys/devices/platform/omapdss/disp    
227         tv=/sys/devices/platform/omapdss/displ    
228                                                   
229         fb0=/sys/class/graphics/fb0               
230         fb1=/sys/class/graphics/fb1               
231         fb2=/sys/class/graphics/fb2               
232                                                   
233 Default setup on OMAP3 SDP                        
234 --------------------------                        
235                                                   
236 Here's the default setup on OMAP3 SDP board. A    
237 and TV-out are not in use. The columns from le    
238 framebuffers, overlays, overlay managers, disp    
239 handled by omapfb, and the rest by the DSS::      
240                                                   
241         FB0 --- GFX  -\            DVI            
242         FB1 --- VID1 --+- LCD ---- LCD            
243         FB2 --- VID2 -/   TV ----- TV             
244                                                   
245 Example: Switch from LCD to DVI                   
246 -------------------------------                   
247                                                   
248 ::                                                
249                                                   
250         w=`cat $dvi/timings | cut -d "," -f 2     
251         h=`cat $dvi/timings | cut -d "," -f 3     
252                                                   
253         echo "0" > $lcd/enabled                   
254         echo "" > $mgr0/display                   
255         fbset -fb /dev/fb0 -xres $w -yres $h -    
256         # at this point you have to switch the    
257         echo "dvi" > $mgr0/display                
258         echo "1" > $dvi/enabled                   
259                                                   
260 After this the configuration looks like:::        
261                                                   
262         FB0 --- GFX  -\         -- DVI            
263         FB1 --- VID1 --+- LCD -/   LCD            
264         FB2 --- VID2 -/   TV ----- TV             
265                                                   
266 Example: Clone GFX overlay to LCD and TV          
267 ----------------------------------------          
268                                                   
269 ::                                                
270                                                   
271         w=`cat $tv/timings | cut -d "," -f 2 |    
272         h=`cat $tv/timings | cut -d "," -f 3 |    
273                                                   
274         echo "0" > $ovl0/enabled                  
275         echo "0" > $ovl1/enabled                  
276                                                   
277         echo "" > $fb1/overlays                   
278         echo "0,1" > $fb0/overlays                
279                                                   
280         echo "$w,$h" > $ovl1/output_size          
281         echo "tv" > $ovl1/manager                 
282                                                   
283         echo "1" > $ovl0/enabled                  
284         echo "1" > $ovl1/enabled                  
285                                                   
286         echo "1" > $tv/enabled                    
287                                                   
288 After this the configuration looks like (only     
289                                                   
290         FB0 +-- GFX  ---- LCD ---- LCD            
291         \- VID1 ---- TV  ---- TV                  
292                                                   
293 Misc notes                                        
294 ----------                                        
295                                                   
296 OMAP FB allocates the framebuffer memory using    
297 can enable Contiguous Memory Allocator (CONFIG    
298 allocator, and if CMA is enabled, you use "cma    
299 the global memory area for CMA.                   
300                                                   
301 Using DSI DPLL to generate pixel clock it is p    
302 of 86.5MHz (max possible), and with that you g    
303                                                   
304 Rotation and mirroring currently only supports    
305 does not support mirroring.                       
306                                                   
307 VRFB rotation requires much more memory than n    
308 probably need to increase your vram setting be    
309 many applications may not work with VRFB if th    
310 framebuffer parameters.                           
311                                                   
312 Kernel boot arguments                             
313 ---------------------                             
314                                                   
315 omapfb.mode=<display>:<mode>[,...]                
316         - Default video mode for specified dis    
317           "dvi:800x400MR-24@60".  See drivers/    
318           There are also two special modes: "p    
319           can be used to tv out.                  
320                                                   
321 omapfb.vram=<fbnum>:<size>[@<physaddr>][,...]      
322         - VRAM allocated for a framebuffer. No    
323           depending on the display size. With     
324           more or define the physical address     
325           "1:4M" to allocate 4M for fb1.          
326                                                   
327 omapfb.debug=<y|n>                                
328         - Enable debug printing. You have to h    
329           in kernel config.                       
330                                                   
331 omapfb.test=<y|n>                                 
332         - Draw test pattern to framebuffer whe    
333           You need to have OMAPFB debug suppor    
334                                                   
335 omapfb.vrfb=<y|n>                                 
336         - Use VRFB rotation for all framebuffe    
337                                                   
338 omapfb.rotate=<angle>                             
339         - Default rotation applied to all fram    
340           0 - 0 degree rotation                   
341           1 - 90 degree rotation                  
342           2 - 180 degree rotation                 
343           3 - 270 degree rotation                 
344                                                   
345 omapfb.mirror=<y|n>                               
346         - Default mirror for all framebuffers.    
347                                                   
348 omapdss.def_disp=<display>                        
349         - Name of default display, to which al    
350           Common examples are "lcd" or "tv".      
351                                                   
352 omapdss.debug=<y|n>                               
353         - Enable debug printing. You have to h    
354           kernel config.                          
355                                                   
356 TODO                                              
357 ----                                              
358                                                   
359 DSS locking                                       
360                                                   
361 Error checking                                    
362                                                   
363 - Lots of checks are missing or implemented ju    
364                                                   
365 System DMA update for DSI                         
366                                                   
367 - Can be used for RGB16 and RGB24P modes. Prob    
368   to skip the empty byte?)                        
369                                                   
370 OMAP1 support                                     
371                                                   
372 - Not sure if needed                              
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php