sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget%/translations/zh_CN/arch/arm/omap/dssmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget%/translations/zh_TW/arch/arm/omap/dssmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget%/translations/it_IT/arch/arm/omap/dssmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget%/translations/ja_JP/arch/arm/omap/dssmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget%/translations/ko_KR/arch/arm/omap/dssmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget%/translations/sp_SP/arch/arm/omap/dssmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(hOMAP2/3 Display Subsystemh]hOMAP2/3 Display Subsystem}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhh?/var/lib/git/docbuild/linux/Documentation/arch/arm/omap/dss.rsthKubh paragraph)}(hThis is an almost total rewrite of the OMAP FB driver in drivers/video/omap (let's call it DSS1). The main differences between DSS1 and DSS2 are DSI, TV-out and multiple display support, but there are lots of small improvements also.h]hThis is an almost total rewrite of the OMAP FB driver in drivers/video/omap (let’s call it DSS1). The main differences between DSS1 and DSS2 are DSI, TV-out and multiple display support, but there are lots of small improvements also.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hThe DSS2 driver (omapdss module) is in arch/arm/plat-omap/dss/, and the FB, panel and controller drivers are in drivers/video/omap2/. DSS1 and DSS2 live currently side by side, you can choose which one to use.h]hThe DSS2 driver (omapdss module) is in arch/arm/plat-omap/dss/, and the FB, panel and controller drivers are in drivers/video/omap2/. DSS1 and DSS2 live currently side by side, you can choose which one to use.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hhh](h)}(hFeaturesh]hFeatures}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(h$Working and tested features include:h]h$Working and tested features include:}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh bullet_list)}(hhh](h list_item)}(hMIPI DPI (parallel) outputh]h)}(hhh]hMIPI DPI (parallel) output}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(hMIPI DSI output in command modeh]h)}(hjh]hMIPI DSI output in command mode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(hMIPI DBI (RFBI) outputh]h)}(hj+h]hMIPI DBI (RFBI) output}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj)ubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(h SDI outputh]h)}(hjBh]h SDI output}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj@ubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(h TV outputh]h)}(hjYh]h TV output}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjWubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(h7All pieces can be compiled as a module or inside kernelh]h)}(hjph]h7All pieces can be compiled as a module or inside kernel}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjnubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(h&Use DISPC to update any of the outputsh]h)}(hjh]h&Use DISPC to update any of the outputs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(h$Use CPU to update RFBI or DSI outputh]h)}(hjh]h$Use CPU to update RFBI or DSI output}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(hOMAP DISPC planesh]h)}(hjh]hOMAP DISPC planes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(h#RGB16, RGB24 packed, RGB24 unpackedh]h)}(hjh]h#RGB16, RGB24 packed, RGB24 unpacked}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(h YUV2, UYVYh]h)}(hjh]h YUV2, UYVY}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(hScalingh]h)}(hjh]hScaling}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(h,Adjusting DSS FCK to find a good pixel clockh]h)}(hjh]h,Adjusting DSS FCK to find a good pixel clock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(hUse DSI DPLL to create DSS FCK h]h)}(hUse DSI DPLL to create DSS FCKh]hUse DSI DPLL to create DSS FCK}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hj&ubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubeh}(h]h ]h"]h$]h&]bullet-uh1hhhhKhhhhubh)}(h>Tested boards include: - OMAP3 SDP board - Beagle board - N810h]h>Tested boards include: - OMAP3 SDP board - Beagle board - N810}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK"hhhhubeh}(h]featuresah ]h"]featuresah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(homapdss driverh]homapdss driver}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\hhhhhK(ubh)}(hThe DSS driver does not itself have any support for Linux framebuffer, V4L or such like the current ones, but it has an internal kernel API that upper level drivers can use.h]hThe DSS driver does not itself have any support for Linux framebuffer, V4L or such like the current ones, but it has an internal kernel API that upper level drivers can use.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK*hj\hhubh)}(hX2The DSS driver models OMAP's overlays, overlay managers and displays in a flexible way to enable non-common multi-display configuration. In addition to modelling the hardware overlays, omapdss supports virtual overlays and overlay managers. These can be used when updating a display with CPU or system DMA.h]hX4The DSS driver models OMAP’s overlays, overlay managers and displays in a flexible way to enable non-common multi-display configuration. In addition to modelling the hardware overlays, omapdss supports virtual overlays and overlay managers. These can be used when updating a display with CPU or system DMA.}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK.hj\hhubeh}(h]omapdss-driverah ]h"]omapdss driverah$]h&]uh1hhhhhhhhK(ubh)}(hhh](h)}(h omapdss driver support for audioh]h omapdss driver support for audio}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK4ubh)}(hThere exist several display technologies and standards that support audio as well. Hence, it is relevant to update the DSS device driver to provide an audio interface that may be used by an audio driver or any other driver interested in the functionality.h]hThere exist several display technologies and standards that support audio as well. Hence, it is relevant to update the DSS device driver to provide an audio interface that may be used by an audio driver or any other driver interested in the functionality.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK5hjhhubh)}(hXEThe audio_enable function is intended to prepare the relevant IP for playback (e.g., enabling an audio FIFO, taking in/out of reset some IP, enabling companion chips, etc). It is intended to be called before audio_start. The audio_disable function performs the reverse operation and is intended to be called after audio_stop.h]hXEThe audio_enable function is intended to prepare the relevant IP for playback (e.g., enabling an audio FIFO, taking in/out of reset some IP, enabling companion chips, etc). It is intended to be called before audio_start. The audio_disable function performs the reverse operation and is intended to be called after audio_stop.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK:hjhhubh)}(hXWhile a given DSS device driver may support audio, it is possible that for certain configurations audio is not supported (e.g., an HDMI display using a VESA video timing). The audio_supported function is intended to query whether the current configuration of the display supports audio.h]hXWhile a given DSS device driver may support audio, it is possible that for certain configurations audio is not supported (e.g., an HDMI display using a VESA video timing). The audio_supported function is intended to query whether the current configuration of the display supports audio.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK@hjhhubh)}(hXThe audio_config function is intended to configure all the relevant audio parameters of the display. In order to make the function independent of any specific DSS device driver, a struct omap_dss_audio is defined. Its purpose is to contain all the required parameters for audio configuration. At the moment, such structure contains pointers to IEC-60958 channel status word and CEA-861 audio infoframe structures. This should be enough to support HDMI and DisplayPort, as both are based on CEA-861 and IEC-60958.h]hXThe audio_config function is intended to configure all the relevant audio parameters of the display. In order to make the function independent of any specific DSS device driver, a struct omap_dss_audio is defined. Its purpose is to contain all the required parameters for audio configuration. At the moment, such structure contains pointers to IEC-60958 channel status word and CEA-861 audio infoframe structures. This should be enough to support HDMI and DisplayPort, as both are based on CEA-861 and IEC-60958.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKEhjhhubh)}(hThe audio_enable/disable, audio_config and audio_supported functions could be implemented as functions that may sleep. Hence, they should not be called while holding a spinlock or a readlock.h]hThe audio_enable/disable, audio_config and audio_supported functions could be implemented as functions that may sleep. Hence, they should not be called while holding a spinlock or a readlock.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKMhjhhubh)}(hXThe audio_start/audio_stop function is intended to effectively start/stop audio playback after the configuration has taken place. These functions are designed to be used in an atomic context. Hence, audio_start should return quickly and be called only after all the needed resources for audio playback (audio FIFOs, DMA channels, companion chips, etc) have been enabled to begin data transfers. audio_stop is designed to only stop the audio transfers. The resources used for playback are released using audio_disable.h]hXThe audio_start/audio_stop function is intended to effectively start/stop audio playback after the configuration has taken place. These functions are designed to be used in an atomic context. Hence, audio_start should return quickly and be called only after all the needed resources for audio playback (audio FIFOs, DMA channels, companion chips, etc) have been enabled to begin data transfers. audio_stop is designed to only stop the audio transfers. The resources used for playback are released using audio_disable.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKQhjhhubh)}(hX8The enum omap_dss_audio_state may be used to help the implementations of the interface to keep track of the audio state. The initial state is _DISABLED; then, the state transitions to _CONFIGURED, and then, when it is ready to play audio, to _ENABLED. The state _PLAYING is used when the audio is being rendered.h]hX8The enum omap_dss_audio_state may be used to help the implementations of the interface to keep track of the audio state. The initial state is _DISABLED; then, the state transitions to _CONFIGURED, and then, when it is ready to play audio, to _ENABLED. The state _PLAYING is used when the audio is being rendered.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKYhjhhubeh}(h] omapdss-driver-support-for-audioah ]h"] omapdss driver support for audioah$]h&]uh1hhhhhhhhK4ubh)}(hhh](h)}(hPanel and controller driversh]hPanel and controller drivers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhKaubh)}(hThe drivers implement panel or controller specific functionality and are not usually visible to users except through omapfb driver. They register themselves to the DSS driver.h]hThe drivers implement panel or controller specific functionality and are not usually visible to users except through omapfb driver. They register themselves to the DSS driver.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKchj hhubeh}(h]panel-and-controller-driversah ]h"]panel and controller driversah$]h&]uh1hhhhhhhhKaubh)}(hhh](h)}(h omapfb driverh]h omapfb driver}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hhhhhKhubh)}(hThe omapfb driver implements arbitrary number of standard linux framebuffers. These framebuffers can be routed flexibly to any overlays, thus allowing very dynamic display architecture.h]hThe omapfb driver implements arbitrary number of standard linux framebuffers. These framebuffers can be routed flexibly to any overlays, thus allowing very dynamic display architecture.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKjhj3hhubh)}(hgThe driver exports some omapfb specific ioctls, which are compatible with the ioctls in the old driver.h]hgThe driver exports some omapfb specific ioctls, which are compatible with the ioctls in the old driver.}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKnhj3hhubh)}(hThe rest of the non standard features are exported via sysfs. Whether the final implementation will use sysfs, or ioctls, is still open.h]hThe rest of the non standard features are exported via sysfs. Whether the final implementation will use sysfs, or ioctls, is still open.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKqhj3hhubeh}(h] omapfb-driverah ]h"] omapfb driverah$]h&]uh1hhhhhhhhKhubh)}(hhh](h)}(h V4L2 driversh]h V4L2 drivers}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvhhhhhKuubh)}(h V4L2 is being implemented in TI.h]h V4L2 is being implemented in TI.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKwhjvhhubh)}(hTFrom omapdss point of view the V4L2 drivers should be similar to framebuffer driver.h]hTFrom omapdss point of view the V4L2 drivers should be similar to framebuffer driver.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKyhjvhhubeh}(h] v4l2-driversah ]h"] v4l2 driversah$]h&]uh1hhhhhhhhKuubh)}(hhh](h)}(h Architectureh]h Architecture}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK}ubh)}(h4Some clarification what the different components do:h]h4Some clarification what the different components do:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh block_quote)}(hX*- Framebuffer is a memory area inside OMAP's SRAM/SDRAM that contains the pixel data for the image. Framebuffer has width and height and color depth. - Overlay defines where the pixels are read from and where they go on the screen. The overlay may be smaller than framebuffer, thus displaying only part of the framebuffer. The position of the overlay may be changed if the overlay is smaller than the display. - Overlay manager combines the overlays in to one image and feeds them to display. - Display is the actual physical display device. h]h)}(hhh](h)}(hFramebuffer is a memory area inside OMAP's SRAM/SDRAM that contains the pixel data for the image. Framebuffer has width and height and color depth.h]h)}(hFramebuffer is a memory area inside OMAP's SRAM/SDRAM that contains the pixel data for the image. Framebuffer has width and height and color depth.h]hFramebuffer is a memory area inside OMAP’s SRAM/SDRAM that contains the pixel data for the image. Framebuffer has width and height and color depth.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hXOverlay defines where the pixels are read from and where they go on the screen. The overlay may be smaller than framebuffer, thus displaying only part of the framebuffer. The position of the overlay may be changed if the overlay is smaller than the display.h]h)}(hXOverlay defines where the pixels are read from and where they go on the screen. The overlay may be smaller than framebuffer, thus displaying only part of the framebuffer. The position of the overlay may be changed if the overlay is smaller than the display.h]hXOverlay defines where the pixels are read from and where they go on the screen. The overlay may be smaller than framebuffer, thus displaying only part of the framebuffer. The position of the overlay may be changed if the overlay is smaller than the display.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hPOverlay manager combines the overlays in to one image and feeds them to display.h]h)}(hPOverlay manager combines the overlays in to one image and feeds them to display.h]hPOverlay manager combines the overlays in to one image and feeds them to display.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h/Display is the actual physical display device. h]h)}(h.Display is the actual physical display device.h]h.Display is the actual physical display device.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]jDjEuh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhhhKhjhhubh)}(hXA framebuffer can be connected to multiple overlays to show the same pixel data on all of the overlays. Note that in this case the overlay input sizes must be the same, but, in case of video overlays, the output size can be different. Any framebuffer can be connected to any overlay.h]hXA framebuffer can be connected to multiple overlays to show the same pixel data on all of the overlays. Note that in this case the overlay input sizes must be the same, but, in case of video overlays, the output size can be different. Any framebuffer can be connected to any overlay.}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hAn overlay can be connected to one overlay manager. Also DISPC overlays can be connected only to DISPC overlay managers, and virtual overlays can be only connected to virtual overlays.h]hAn overlay can be connected to one overlay manager. Also DISPC overlays can be connected only to DISPC overlay managers, and virtual overlays can be only connected to virtual overlays.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hAn overlay manager can be connected to one display. There are certain restrictions which kinds of displays an overlay manager can be connected:h]hAn overlay manager can be connected to one display. There are certain restrictions which kinds of displays an overlay manager can be connected:}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(h- DISPC TV overlay manager can be only connected to TV display. - Virtual overlay managers can only be connected to DBI or DSI displays. - DISPC LCD overlay manager can be connected to all displays, except TV display. h]h)}(hhh](h)}(h=DISPC TV overlay manager can be only connected to TV display.h]h)}(hjrh]h=DISPC TV overlay manager can be only connected to TV display.}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjpubah}(h]h ]h"]h$]h&]uh1hhjmubh)}(hFVirtual overlay managers can only be connected to DBI or DSI displays.h]h)}(hjh]hFVirtual overlay managers can only be connected to DBI or DSI displays.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjmubh)}(hODISPC LCD overlay manager can be connected to all displays, except TV display. h]h)}(hNDISPC LCD overlay manager can be connected to all displays, except TV display.h]hNDISPC LCD overlay manager can be connected to all displays, except TV display.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjmubeh}(h]h ]h"]h$]h&]jDjEuh1hhhhKhjiubah}(h]h ]h"]h$]h&]uh1jhhhKhjhhubeh}(h] architectureah ]h"] architectureah$]h&]uh1hhhhhhhhK}ubh)}(hhh](h)}(hSysfsh]hSysfs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hThe sysfs interface is mainly used for testing. I don't think sysfs interface is the best for this in the final version, but I don't quite know what would be the best interfaces for these things.h]hThe sysfs interface is mainly used for testing. I don’t think sysfs interface is the best for this in the final version, but I don’t quite know what would be the best interfaces for these things.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h8The sysfs interface is divided to two parts: DSS and FB.h]h8The sysfs interface is divided to two parts: DSS and FB.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hX/sys/class/graphics/fb? directory: mirror 0=off, 1=on rotate Rotation 0-3 for 0, 90, 180, 270 degrees rotate_type 0 = DMA rotation, 1 = VRFB rotation overlays List of overlay numbers to which framebuffer pixels go phys_addr Physical address of the framebuffer virt_addr Virtual address of the framebuffer size Size of the framebufferh]hX/sys/class/graphics/fb? directory: mirror 0=off, 1=on rotate Rotation 0-3 for 0, 90, 180, 270 degrees rotate_type 0 = DMA rotation, 1 = VRFB rotation overlays List of overlay numbers to which framebuffer pixels go phys_addr Physical address of the framebuffer virt_addr Virtual address of the framebuffer size Size of the framebuffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hX>/sys/devices/platform/omapdss/overlay? directory: enabled 0=off, 1=on input_size width,height (ie. the framebuffer size) manager Destination overlay manager name name output_size width,height position x,y screen_width width global_alpha global alpha 0-255 0=transparent 255=opaqueh]hX>/sys/devices/platform/omapdss/overlay? directory: enabled 0=off, 1=on input_size width,height (ie. the framebuffer size) manager Destination overlay manager name name output_size width,height position x,y screen_width width global_alpha global alpha 0-255 0=transparent 255=opaque}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hX/sys/devices/platform/omapdss/manager? directory: display Destination display name alpha_blending_enabled 0=off, 1=on trans_key_enabled 0=off, 1=on trans_key_type gfx-destination, video-source trans_key_value transparency color key (RGB24) default_color default background color (RGB24)h]hX/sys/devices/platform/omapdss/manager? directory: display Destination display name alpha_blending_enabled 0=off, 1=on trans_key_enabled 0=off, 1=on trans_key_type gfx-destination, video-source trans_key_value transparency color key (RGB24) default_color default background color (RGB24)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h1/sys/devices/platform/omapdss/display? directory:h]h1/sys/devices/platform/omapdss/display? directory:}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubhtable)}(hhh]htgroup)}(hhh](hcolspec)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1j9hj6ubj:)}(hhh]h}(h]h ]h"]h$]h&]colwidthK=uh1j9hj6ubhtbody)}(hhh](hrow)}(hhh](hentry)}(hhh]h)}(h ctrl_nameh]h ctrl_name}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj[ubah}(h]h ]h"]h$]h&]uh1jYhjVubjZ)}(hhh]h)}(hController nameh]hController name}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjrubah}(h]h ]h"]h$]h&]uh1jYhjVubeh}(h]h ]h"]h$]h&]uh1jThjQubjU)}(hhh](jZ)}(hhh]h)}(hmirrorh]hmirror}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jYhjubjZ)}(hhh]h)}(h 0=off, 1=onh]h 0=off, 1=on}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jYhjubeh}(h]h ]h"]h$]h&]uh1jThjQubjU)}(hhh](jZ)}(hhh]h)}(h update_modeh]h update_mode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jYhjubjZ)}(hhh]h)}(h0=off, 1=auto, 2=manualh]h0=off, 1=auto, 2=manual}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jYhjubeh}(h]h ]h"]h$]h&]uh1jThjQubjU)}(hhh](jZ)}(hhh]h)}(henabledh]henabled}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jYhjubjZ)}(hhh]h)}(h 0=off, 1=onh]h 0=off, 1=on}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jYhjubeh}(h]h ]h"]h$]h&]uh1jThjQubjU)}(hhh](jZ)}(hhh]h)}(hnameh]hname}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj7ubah}(h]h ]h"]h$]h&]uh1jYhj4ubjZ)}(hhh]h}(h]h ]h"]h$]h&]uh1jYhj4ubeh}(h]h ]h"]h$]h&]uh1jThjQubjU)}(hhh](jZ)}(hhh]h)}(hrotateh]hrotate}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj`ubah}(h]h ]h"]h$]h&]uh1jYhj]ubjZ)}(hhh]h)}(h(Rotation 0-3 for 0, 90, 180, 270 degreesh]h(Rotation 0-3 for 0, 90, 180, 270 degrees}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjwubah}(h]h ]h"]h$]h&]uh1jYhj]ubeh}(h]h ]h"]h$]h&]uh1jThjQubjU)}(hhh](jZ)}(hhh]h)}(htimingsh]htimings}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jYhjubjZ)}(hhh]h)}(hDisplay timings (pixclock,xres/hfp/hbp/hsw,yres/vfp/vbp/vsw) When writing, two special timings are accepted for tv-out: "pal" and "ntsc"h]hDisplay timings (pixclock,xres/hfp/hbp/hsw,yres/vfp/vbp/vsw) When writing, two special timings are accepted for tv-out: “pal” and “ntsc”}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jYhjubeh}(h]h ]h"]h$]h&]uh1jThjQubjU)}(hhh](jZ)}(hhh]h)}(h panel_nameh]h panel_name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jYhjubjZ)}(hhh]h}(h]h ]h"]h$]h&]uh1jYhjubeh}(h]h ]h"]h$]h&]uh1jThjQubjU)}(hhh](jZ)}(hhh]h)}(h tear_elimh]h tear_elim}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jYhjubjZ)}(hhh]h)}(hTearing elimination 0=off, 1=onh]hTearing elimination 0=off, 1=on}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jYhjubeh}(h]h ]h"]h$]h&]uh1jThjQubjU)}(hhh](jZ)}(hhh]h)}(h output_typeh]h output_type}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj.ubah}(h]h ]h"]h$]h&]uh1jYhj+ubjZ)}(hhh]h)}(h9Output type (video encoder only): "composite" or "svideo"h]hAOutput type (video encoder only): “composite” or “svideo”}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjEubah}(h]h ]h"]h$]h&]uh1jYhj+ubeh}(h]h ]h"]h$]h&]uh1jThjQubeh}(h]h ]h"]h$]h&]uh1jOhj6ubeh}(h]h ]h"]h$]h&]colsKuh1j4hj1ubah}(h]h ]h"]h$]h&]uh1j/hjhhhhhNubh)}(hjThere are also some debugfs files at /omapdss/ which show information about clocks and registers.h]hjThere are also some debugfs files at /omapdss/ which show information about clocks and registers.}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]sysfsah ]h"]sysfsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hExamplesh]hExamples}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hAThe following definitions have been made for the examples below::h]h@The following definitions have been made for the examples below:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh literal_block)}(hXovl0=/sys/devices/platform/omapdss/overlay0 ovl1=/sys/devices/platform/omapdss/overlay1 ovl2=/sys/devices/platform/omapdss/overlay2 mgr0=/sys/devices/platform/omapdss/manager0 mgr1=/sys/devices/platform/omapdss/manager1 lcd=/sys/devices/platform/omapdss/display0 dvi=/sys/devices/platform/omapdss/display1 tv=/sys/devices/platform/omapdss/display2 fb0=/sys/class/graphics/fb0 fb1=/sys/class/graphics/fb1 fb2=/sys/class/graphics/fb2h]hXovl0=/sys/devices/platform/omapdss/overlay0 ovl1=/sys/devices/platform/omapdss/overlay1 ovl2=/sys/devices/platform/omapdss/overlay2 mgr0=/sys/devices/platform/omapdss/manager0 mgr1=/sys/devices/platform/omapdss/manager1 lcd=/sys/devices/platform/omapdss/display0 dvi=/sys/devices/platform/omapdss/display1 tv=/sys/devices/platform/omapdss/display2 fb0=/sys/class/graphics/fb0 fb1=/sys/class/graphics/fb1 fb2=/sys/class/graphics/fb2}hjsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1jhhhKhjhhubeh}(h]examplesah ]h"]examplesah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hDefault setup on OMAP3 SDPh]hDefault setup on OMAP3 SDP}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hHere's the default setup on OMAP3 SDP board. All planes go to LCD. DVI and TV-out are not in use. The columns from left to right are: framebuffers, overlays, overlay managers, displays. Framebuffers are handled by omapfb, and the rest by the DSS::h]hHere’s the default setup on OMAP3 SDP board. All planes go to LCD. DVI and TV-out are not in use. The columns from left to right are: framebuffers, overlays, overlay managers, displays. Framebuffers are handled by omapfb, and the rest by the DSS:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(h[FB0 --- GFX -\ DVI FB1 --- VID1 --+- LCD ---- LCD FB2 --- VID2 -/ TV ----- TVh]h[FB0 --- GFX -\ DVI FB1 --- VID1 --+- LCD ---- LCD FB2 --- VID2 -/ TV ----- TV}hjsbah}(h]h ]h"]h$]h&]jjuh1jhhhKhjhhubeh}(h]default-setup-on-omap3-sdpah ]h"]default setup on omap3 sdpah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hExample: Switch from LCD to DVIh]hExample: Switch from LCD to DVI}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubj)}(hX\w=`cat $dvi/timings | cut -d "," -f 2 | cut -d "/" -f 1` h=`cat $dvi/timings | cut -d "," -f 3 | cut -d "/" -f 1` echo "0" > $lcd/enabled echo "" > $mgr0/display fbset -fb /dev/fb0 -xres $w -yres $h -vxres $w -vyres $h # at this point you have to switch the dvi/lcd dip-switch from the omap board echo "dvi" > $mgr0/display echo "1" > $dvi/enabledh]hX\w=`cat $dvi/timings | cut -d "," -f 2 | cut -d "/" -f 1` h=`cat $dvi/timings | cut -d "," -f 3 | cut -d "/" -f 1` echo "0" > $lcd/enabled echo "" > $mgr0/display fbset -fb /dev/fb0 -xres $w -yres $h -vxres $w -vyres $h # at this point you have to switch the dvi/lcd dip-switch from the omap board echo "dvi" > $mgr0/display echo "1" > $dvi/enabled}hj sbah}(h]h ]h"]h$]h&]jjuh1jhhhKhjhhubh)}(h*After this the configuration looks like:::h]h)After this the configuration looks like::}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubj)}(h[FB0 --- GFX -\ -- DVI FB1 --- VID1 --+- LCD -/ LCD FB2 --- VID2 -/ TV ----- TVh]h[FB0 --- GFX -\ -- DVI FB1 --- VID1 --+- LCD -/ LCD FB2 --- VID2 -/ TV ----- TV}hj&sbah}(h]h ]h"]h$]h&]jjuh1jhhhMhjhhubeh}(h]example-switch-from-lcd-to-dviah ]h"]example: switch from lcd to dviah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h(Example: Clone GFX overlay to LCD and TVh]h(Example: Clone GFX overlay to LCD and TV}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hhhhhM ubj)}(hX]w=`cat $tv/timings | cut -d "," -f 2 | cut -d "/" -f 1` h=`cat $tv/timings | cut -d "," -f 3 | cut -d "/" -f 1` echo "0" > $ovl0/enabled echo "0" > $ovl1/enabled echo "" > $fb1/overlays echo "0,1" > $fb0/overlays echo "$w,$h" > $ovl1/output_size echo "tv" > $ovl1/manager echo "1" > $ovl0/enabled echo "1" > $ovl1/enabled echo "1" > $tv/enabledh]hX]w=`cat $tv/timings | cut -d "," -f 2 | cut -d "/" -f 1` h=`cat $tv/timings | cut -d "," -f 3 | cut -d "/" -f 1` echo "0" > $ovl0/enabled echo "0" > $ovl1/enabled echo "" > $fb1/overlays echo "0,1" > $fb0/overlays echo "$w,$h" > $ovl1/output_size echo "tv" > $ovl1/manager echo "1" > $ovl0/enabled echo "1" > $ovl1/enabled echo "1" > $tv/enabled}hjMsbah}(h]h ]h"]h$]h&]jjuh1jhhhMhj<hhubh)}(hEAfter this the configuration looks like (only relevant parts shown)::h]hDAfter this the configuration looks like (only relevant parts shown):}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hj<hhubj)}(h7FB0 +-- GFX ---- LCD ---- LCD \- VID1 ---- TV ---- TVh]h7FB0 +-- GFX ---- LCD ---- LCD \- VID1 ---- TV ---- TV}hjisbah}(h]h ]h"]h$]h&]jjuh1jhhhM"hj<hhubeh}(h]'example-clone-gfx-overlay-to-lcd-and-tvah ]h"](example: clone gfx overlay to lcd and tvah$]h&]uh1hhhhhhhhM ubh)}(hhh](h)}(h Misc notesh]h Misc notes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhM&ubh)}(hXOMAP FB allocates the framebuffer memory using the standard dma allocator. You can enable Contiguous Memory Allocator (CONFIG_CMA) to improve the dma allocator, and if CMA is enabled, you use "cma=" kernel parameter to increase the global memory area for CMA.h]hXOMAP FB allocates the framebuffer memory using the standard dma allocator. You can enable Contiguous Memory Allocator (CONFIG_CMA) to improve the dma allocator, and if CMA is enabled, you use “cma=” kernel parameter to increase the global memory area for CMA.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM(hjhhubh)}(hUsing DSI DPLL to generate pixel clock it is possible produce the pixel clock of 86.5MHz (max possible), and with that you get 1280x1024@57 output from DVI.h](hUsing DSI DPLL to generate pixel clock it is possible produce the pixel clock of 86.5MHz (max possible), and with that you get }(hjhhhNhNubh reference)}(h 1280x1024@57h]h 1280x1024@57}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:1280x1024@57uh1jhjubh output from DVI.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM-hjhhubh)}(hiRotation and mirroring currently only supports RGB565 and RGB8888 modes. VRFB does not support mirroring.h]hiRotation and mirroring currently only supports RGB565 and RGB8888 modes. VRFB does not support mirroring.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM0hjhhubh)}(hVRFB rotation requires much more memory than non-rotated framebuffer, so you probably need to increase your vram setting before using VRFB rotation. Also, many applications may not work with VRFB if they do not pay attention to all framebuffer parameters.h]hVRFB rotation requires much more memory than non-rotated framebuffer, so you probably need to increase your vram setting before using VRFB rotation. Also, many applications may not work with VRFB if they do not pay attention to all framebuffer parameters.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM3hjhhubeh}(h] misc-notesah ]h"] misc notesah$]h&]uh1hhhhhhhhM&ubh)}(hhh](h)}(hKernel boot argumentsh]hKernel boot arguments}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhM9ubhdefinition_list)}(hhh](hdefinition_list_item)}(homapfb.mode=:[,...] - Default video mode for specified displays. For example, "dvi:800x400MR-24@60". See drivers/video/modedb.c. There are also two special modes: "pal" and "ntsc" that can be used to tv out. h](hterm)}(h"omapfb.mode=:[,...]h]h"omapfb.mode=:[,...]}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhM?hjubh definition)}(hhh]h)}(hhh]h)}(hDefault video mode for specified displays. For example, "dvi:800x400MR-24@60". See drivers/video/modedb.c. There are also two special modes: "pal" and "ntsc" that can be used to tv out. h]h)}(hDefault video mode for specified displays. For example, "dvi:800x400MR-24@60". See drivers/video/modedb.c. There are also two special modes: "pal" and "ntsc" that can be used to tv out.h]hDefault video mode for specified displays. For example, “dvi:800x400MR-24@60”. See drivers/video/modedb.c. There are also two special modes: “pal” and “ntsc” that can be used to tv out.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM<hj ubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]jDjEuh1hhhhM<hj ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1jhhhM?hjubj)}(hXomapfb.vram=:[@][,...] - VRAM allocated for a framebuffer. Normally omapfb allocates vram depending on the display size. With this you can manually allocate more or define the physical address of each framebuffer. For example, "1:4M" to allocate 4M for fb1. h](j )}(h-omapfb.vram=:[@][,...]h]h-omapfb.vram=:[@][,...]}(hjH hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhMEhjD ubj )}(hhh]h)}(hhh]h)}(hVRAM allocated for a framebuffer. Normally omapfb allocates vram depending on the display size. With this you can manually allocate more or define the physical address of each framebuffer. For example, "1:4M" to allocate 4M for fb1. h]h)}(hVRAM allocated for a framebuffer. Normally omapfb allocates vram depending on the display size. With this you can manually allocate more or define the physical address of each framebuffer. For example, "1:4M" to allocate 4M for fb1.h]hVRAM allocated for a framebuffer. Normally omapfb allocates vram depending on the display size. With this you can manually allocate more or define the physical address of each framebuffer. For example, “1:4M” to allocate 4M for fb1.}(hj` hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMBhj\ ubah}(h]h ]h"]h$]h&]uh1hhjY ubah}(h]h ]h"]h$]h&]jDjEuh1hhhhMBhjV ubah}(h]h ]h"]h$]h&]uh1j hjD ubeh}(h]h ]h"]h$]h&]uh1jhhhMEhjhhubj)}(hnomapfb.debug= - Enable debug printing. You have to have OMAPFB debug support enabled in kernel config. h](j )}(homapfb.debug=h]homapfb.debug=}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhMIhj ubj )}(hhh]h)}(hhh]h)}(hWEnable debug printing. You have to have OMAPFB debug support enabled in kernel config. h]h)}(hVEnable debug printing. You have to have OMAPFB debug support enabled in kernel config.h]hVEnable debug printing. You have to have OMAPFB debug support enabled in kernel config.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMHhj ubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]jDjEuh1hhhhMHhj ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1jhhhMIhjhhubj)}(homapfb.test= - Draw test pattern to framebuffer whenever framebuffer settings change. You need to have OMAPFB debug support enabled in kernel config. h](j )}(homapfb.test=h]homapfb.test=}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhMMhj ubj )}(hhh]h)}(hhh]h)}(hDraw test pattern to framebuffer whenever framebuffer settings change. You need to have OMAPFB debug support enabled in kernel config. h]h)}(hDraw test pattern to framebuffer whenever framebuffer settings change. You need to have OMAPFB debug support enabled in kernel config.h]hDraw test pattern to framebuffer whenever framebuffer settings change. You need to have OMAPFB debug support enabled in kernel config.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMLhj ubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]jDjEuh1hhhhMLhj ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1jhhhMMhjhhubj)}(h - Use VRFB rotation for all framebuffers. h](j )}(homapfb.vrfb=h]homapfb.vrfb=}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhMPhj ubj )}(hhh]h)}(hhh]h)}(h(Use VRFB rotation for all framebuffers. h]h)}(h'Use VRFB rotation for all framebuffers.h]h'Use VRFB rotation for all framebuffers.}(hj& hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMPhj" ubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]jDjEuh1hhhhMPhj ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1jhhhMPhjhhubj)}(homapfb.rotate= - Default rotation applied to all framebuffers. 0 - 0 degree rotation 1 - 90 degree rotation 2 - 180 degree rotation 3 - 270 degree rotation h](j )}(homapfb.rotate=h]homapfb.rotate=}(hjP hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhMWhjL ubj )}(hhh]h)}(hhh]h)}(hDefault rotation applied to all framebuffers. 0 - 0 degree rotation 1 - 90 degree rotation 2 - 180 degree rotation 3 - 270 degree rotation h]h)}(hDefault rotation applied to all framebuffers. 0 - 0 degree rotation 1 - 90 degree rotation 2 - 180 degree rotation 3 - 270 degree rotationh]hDefault rotation applied to all framebuffers. 0 - 0 degree rotation 1 - 90 degree rotation 2 - 180 degree rotation 3 - 270 degree rotation}(hjh hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMShjd ubah}(h]h ]h"]h$]h&]uh1hhja ubah}(h]h ]h"]h$]h&]jDjEuh1hhhhMShj^ ubah}(h]h ]h"]h$]h&]uh1j hjL ubeh}(h]h ]h"]h$]h&]uh1jhhhMWhjhhubj)}(hYomapfb.mirror= - Default mirror for all framebuffers. Only works with DMA rotation. h](j )}(homapfb.mirror=h]homapfb.mirror=}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhMZhj ubj )}(hhh]h)}(hhh]h)}(hCDefault mirror for all framebuffers. Only works with DMA rotation. h]h)}(hBDefault mirror for all framebuffers. Only works with DMA rotation.h]hBDefault mirror for all framebuffers. Only works with DMA rotation.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMZhj ubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]jDjEuh1hhhhMZhj ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1jhhhMZhjhhubj)}(homapdss.def_disp= - Name of default display, to which all overlays will be connected. Common examples are "lcd" or "tv". h](j )}(homapdss.def_disp=h]homapdss.def_disp=}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhM^hj ubj )}(hhh]h)}(hhh]h)}(heName of default display, to which all overlays will be connected. Common examples are "lcd" or "tv". h]h)}(hdName of default display, to which all overlays will be connected. Common examples are "lcd" or "tv".h]hlName of default display, to which all overlays will be connected. Common examples are “lcd” or “tv”.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM]hj ubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]jDjEuh1hhhhM]hj ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1jhhhM^hjhhubj)}(hlomapdss.debug= - Enable debug printing. You have to have DSS debug support enabled in kernel config. h](j )}(homapdss.debug=h]homapdss.debug=}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhMbhj ubj )}(hhh]h)}(hhh]h)}(hTEnable debug printing. You have to have DSS debug support enabled in kernel config. h]h)}(hSEnable debug printing. You have to have DSS debug support enabled in kernel config.h]hSEnable debug printing. You have to have DSS debug support enabled in kernel config.}(hj. hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMahj* ubah}(h]h ]h"]h$]h&]uh1hhj' ubah}(h]h ]h"]h$]h&]jDjEuh1hhhhMahj$ ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1jhhhMbhjhhubeh}(h]h ]h"]h$]h&]uh1jhjhhhNhNubeh}(h]kernel-boot-argumentsah ]h"]kernel boot argumentsah$]h&]uh1hhhhhhhhM9ubh)}(hhh](h)}(hTODOh]hTODO}(hje hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjb hhhhhMeubh)}(h DSS lockingh]h DSS locking}(hjs hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMghjb hhubh)}(hError checkingh]hError checking}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMihjb hhubh)}(hhh]h)}(h8Lots of checks are missing or implemented just as BUG() h]h)}(h7Lots of checks are missing or implemented just as BUG()h]h7Lots of checks are missing or implemented just as BUG()}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMkhj ubah}(h]h ]h"]h$]h&]uh1hhj hhhhhNubah}(h]h ]h"]h$]h&]jDjEuh1hhhhMkhjb hhubh)}(hSystem DMA update for DSIh]hSystem DMA update for DSI}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMmhjb hhubh)}(hhh]h)}(h^Can be used for RGB16 and RGB24P modes. Probably not for RGB24U (how to skip the empty byte?) h]h)}(h]Can be used for RGB16 and RGB24P modes. Probably not for RGB24U (how to skip the empty byte?)h]h]Can be used for RGB16 and RGB24P modes. Probably not for RGB24U (how to skip the empty byte?)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMohj ubah}(h]h ]h"]h$]h&]uh1hhj hhhhhNubah}(h]h ]h"]h$]h&]jDjEuh1hhhhMohjb hhubh)}(h OMAP1 supporth]h OMAP1 support}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMrhjb hhubh)}(hhh]h)}(hNot sure if neededh]h)}(hj h]hNot sure if needed}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMthj ubah}(h]h ]h"]h$]h&]uh1hhj hhhhhNubah}(h]h ]h"]h$]h&]jDjEuh1hhhhMthjb hhubeh}(h]todoah ]h"]todoah$]h&]uh1hhhhhhhhMeubeh}(h]omap2-3-display-subsystemah ]h"]omap2/3 display subsystemah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksjYfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj? error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j j jYjVjjj jj0j-jsjpjjjjjjjjjjj9j6j|jyjjj_ j\ j j u nametypes}(j jYjj j0jsjjjjjj9j|jj_ j uh}(j hjVhjj\jjj-j jpj3jjvjjjjjjjjj6jjyj<jjj\ jj jb u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.