€•²zŒsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ/translations/zh_CN/fb/pxafb”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/zh_TW/fb/pxafb”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/it_IT/fb/pxafb”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/ja_JP/fb/pxafb”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/ko_KR/fb/pxafb”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒPortuguese (Brazilian)”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/pt_BR/fb/pxafb”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/sp_SP/fb/pxafb”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒ Driver for PXA25x LCD controller”h]”hŒ Driver for PXA25x LCD controller”…””}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³Œ6/var/lib/git/docbuild/linux/Documentation/fb/pxafb.rst”h´KubhŒ paragraph”“”)”}”(hŒ|The driver supports the following options, either via options= when modular or video=pxafb: when built in.”h]”hŒ|The driver supports the following options, either via options= when modular or video=pxafb: when built in.”…””}”(hhÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubhÌ)”}”(hŒ For example::”h]”hŒ For example:”…””}”(hhÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubhŒ literal_block”“”)”}”(hŒ5modprobe pxafb options=vmem:2M,mode:640x480-8,passive”h]”hŒ5modprobe pxafb options=vmem:2M,mode:640x480-8,passive”…””}”hhësbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1héh³hÊh´K hh·h²hubhÌ)”}”(hŒor on the kernel command line::”h]”hŒor on the kernel command line:”…””}”(hhûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K hh·h²hubhê)”}”(hŒ*video=pxafb:vmem:2M,mode:640x480-8,passive”h]”hŒ*video=pxafb:vmem:2M,mode:640x480-8,passive”…””}”hj sbah}”(h]”h ]”h"]”h$]”h&]”hùhúuh1héh³hÊh´Khh·h²hubhÌ)”}”(hŒvmem: VIDEO_MEM_SIZE”h]”hŒvmem: VIDEO_MEM_SIZE”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubhŒ block_quote”“”)”}”(hŒ\Amount of video memory to allocate (can be suffixed with K or M for kilobytes or megabytes) ”h]”hÌ)”}”(hŒ[Amount of video memory to allocate (can be suffixed with K or M for kilobytes or megabytes)”h]”hŒ[Amount of video memory to allocate (can be suffixed with K or M for kilobytes or megabytes)”…””}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%h³hÊh´Khh·h²hubhÌ)”}”(hŒmode:XRESxYRES[-BPP]”h]”hŒmode:XRESxYRES[-BPP]”…””}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubj&)”}”(hŒ™XRES == LCCR1_PPL + 1 YRES == LLCR2_LPP + 1 The resolution of the display in pixels BPP == The bit depth. Valid values are 1, 2, 4, 8 and 16. ”h]”(hÌ)”}”(hŒXRES == LCCR1_PPL + 1”h]”hŒXRES == LCCR1_PPL + 1”…””}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KhjMubhÌ)”}”(hŒYRES == LLCR2_LPP + 1”h]”hŒYRES == LLCR2_LPP + 1”…””}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KhjMubj&)”}”(hŒ(The resolution of the display in pixels ”h]”hÌ)”}”(hŒ'The resolution of the display in pixels”h]”hŒ'The resolution of the display in pixels”…””}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khjmubah}”(h]”h ]”h"]”h$]”h&]”uh1j%h³hÊh´KhjMubhÌ)”}”(hŒ9BPP == The bit depth. Valid values are 1, 2, 4, 8 and 16.”h]”hŒ9BPP == The bit depth. Valid values are 1, 2, 4, 8 and 16.”…””}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KhjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%h³hÊh´Khh·h²hubhÌ)”}”(hŒpixclock:PIXCLOCK”h]”hŒpixclock:PIXCLOCK”…””}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubj&)”}”(hŒPixel clock in picoseconds ”h]”hÌ)”}”(hŒPixel clock in picoseconds”h]”hŒPixel clock in picoseconds”…””}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K!hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%h³hÊh´K!hh·h²hubhÌ)”}”(hŒleft:LEFT == LCCR1_BLW + 1”h]”hŒleft:LEFT == LCCR1_BLW + 1”…””}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K#hh·h²hubhÌ)”}”(hŒright:RIGHT == LCCR1_ELW + 1”h]”hŒright:RIGHT == LCCR1_ELW + 1”…””}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K%hh·h²hubhÌ)”}”(hŒhsynclen:HSYNC == LCCR1_HSW + 1”h]”hŒhsynclen:HSYNC == LCCR1_HSW + 1”…””}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K'hh·h²hubhÌ)”}”(hŒupper:UPPER == LCCR2_BFW”h]”hŒupper:UPPER == LCCR2_BFW”…””}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K)hh·h²hubhÌ)”}”(hŒlower:LOWER == LCCR2_EFR”h]”hŒlower:LOWER == LCCR2_EFR”…””}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K+hh·h²hubhÌ)”}”(hŒvsynclen:VSYNC == LCCR2_VSW + 1”h]”hŒvsynclen:VSYNC == LCCR2_VSW + 1”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K-hh·h²hubj&)”}”(hŒDisplay margins and sync times ”h]”hÌ)”}”(hŒDisplay margins and sync times”h]”hŒDisplay margins and sync times”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K/hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%h³hÊh´K/hh·h²hubhÌ)”}”(hŒcolor | mono => LCCR0_CMS”h]”hŒcolor | mono => LCCR0_CMS”…””}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K1hh·h²hubj&)”}”(hŒumm... ”h]”hÌ)”}”(hŒumm...”h]”hŒumm...”…””}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K3hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%h³hÊh´K3hh·h²hubhÌ)”}”(hŒactive | passive => LCCR0_PAS”h]”hŒactive | passive => LCCR0_PAS”…””}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K5hh·h²hubj&)”}”(hŒ&Active (TFT) or Passive (STN) display ”h]”hÌ)”}”(hŒ%Active (TFT) or Passive (STN) display”h]”hŒ%Active (TFT) or Passive (STN) display”…””}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K7hj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%h³hÊh´K7hh·h²hubhÌ)”}”(hŒsingle | dual => LCCR0_SDS”h]”hŒsingle | dual => LCCR0_SDS”…””}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K9hh·h²hubj&)”}”(hŒ%Single or dual panel passive display ”h]”hÌ)”}”(hŒ$Single or dual panel passive display”h]”hŒ$Single or dual panel passive display”…””}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K;hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%h³hÊh´K;hh·h²hubhÌ)”}”(hŒ4pix | 8pix => LCCR0_DPD”h]”hŒ4pix | 8pix => LCCR0_DPD”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K=hh·h²hubj&)”}”(hŒ*4 or 8 pixel monochrome single panel data ”h]”hÌ)”}”(hŒ)4 or 8 pixel monochrome single panel data”h]”hŒ)4 or 8 pixel monochrome single panel data”…””}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K?hj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%h³hÊh´K?hh·h²hubhÌ)”}”(hŒhsync:HSYNC, vsync:VSYNC”h]”hŒhsync:HSYNC, vsync:VSYNC”…””}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KAhh·h²hubj&)”}”(hŒAHorizontal and vertical sync. 0 => active low, 1 => active high. ”h]”hÌ)”}”(hŒ@Horizontal and vertical sync. 0 => active low, 1 => active high.”h]”hŒ@Horizontal and vertical sync. 0 => active low, 1 => active high.”…””}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KChjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1j%h³hÊh´KChh·h²hubhÌ)”}”(hŒdpc:DPC”h]”hŒdpc:DPC”…””}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KFhh·h²hubj&)”}”(hŒ&Double pixel clock. 1=>true, 0=>false ”h]”hÌ)”}”(hŒ%Double pixel clock. 1=>true, 0=>false”h]”hŒ%Double pixel clock. 1=>true, 0=>false”…””}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KHhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%h³hÊh´KHhh·h²hubhÌ)”}”(hŒoutputen:POLARITY”h]”hŒoutputen:POLARITY”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KJhh·h²hubj&)”}”(hŒ:Output Enable Polarity. 0 => active low, 1 => active high ”h]”hÌ)”}”(hŒ9Output Enable Polarity. 0 => active low, 1 => active high”h]”hŒ9Output Enable Polarity. 0 => active low, 1 => active high”…””}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KLhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%h³hÊh´KLhh·h²hubhÌ)”}”(hŒpixclockpol:POLARITY”h]”hŒpixclockpol:POLARITY”…””}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KNhh·h²hubj&)”}”(hŒ:pixel clock polarity 0 => falling edge, 1 => rising edge ”h]”hÌ)”}”(hŒ8pixel clock polarity 0 => falling edge, 1 => rising edge”h]”hŒ8pixel clock polarity 0 => falling edge, 1 => rising edge”…””}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KPhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1j%h³hÊh´KPhh·h²hubh¶)”}”(hhh]”(h»)”}”(hŒ4Overlay Support for PXA27x and later LCD controllers”h]”hŒ4Overlay Support for PXA27x and later LCD controllers”…””}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj[h²hh³hÊh´KUubj&)”}”(hXo PXA27x and later processors support overlay1 and overlay2 on-top of the base framebuffer (although under-neath the base is also possible). They support palette and no-palette RGB formats, as well as YUV formats (only available on overlay2). These overlays have dedicated DMA channels and behave in a similar way as a framebuffer. However, there are some differences between these overlay framebuffers and normal framebuffers, as listed below: 1. overlay can start at a 32-bit word aligned position within the base framebuffer, which means they have a start (x, y). This information is encoded into var->nonstd (no, var->xoffset and var->yoffset are not for such purpose). 2. overlay framebuffer is allocated dynamically according to specified 'struct fb_var_screeninfo', the amount is decided by:: var->xres_virtual * var->yres_virtual * bpp bpp = 16 -- for RGB565 or RGBT555 bpp = 24 -- for YUV444 packed bpp = 24 -- for YUV444 planar bpp = 16 -- for YUV422 planar (1 pixel = 1 Y + 1/2 Cb + 1/2 Cr) bpp = 12 -- for YUV420 planar (1 pixel = 1 Y + 1/4 Cb + 1/4 Cr) NOTE: a. overlay does not support panning in x-direction, thus var->xres_virtual will always be equal to var->xres b. line length of overlay(s) must be on a 32-bit word boundary, for YUV planar modes, it is a requirement for the component with minimum bits per pixel, e.g. for YUV420, Cr component for one pixel is actually 2-bits, it means the line length should be a multiple of 16-pixels c. starting horizontal position (XPOS) should start on a 32-bit word boundary, otherwise the fb_check_var() will just fail. d. the rectangle of the overlay should be within the base plane, otherwise fail Applications should follow the sequence below to operate an overlay framebuffer: a. open("/dev/fb[1-2]", ...) b. ioctl(fd, FBIOGET_VSCREENINFO, ...) c. modify 'var' with desired parameters: 1) var->xres and var->yres 2) larger var->yres_virtual if more memory is required, usually for double-buffering 3) var->nonstd for starting (x, y) and color format 4) var->{red, green, blue, transp} if RGB mode is to be used d. ioctl(fd, FBIOPUT_VSCREENINFO, ...) e. ioctl(fd, FBIOGET_FSCREENINFO, ...) f. mmap g. ... 3. for YUV planar formats, these are actually not supported within the framebuffer framework, application has to take care of the offsets and lengths of each component within the framebuffer. 4. var->nonstd is used to pass starting (x, y) position and color format, the detailed bit fields are shown below:: 31 23 20 10 0 +-----------------+---+----------+----------+ | ... unused ... |FOR| XPOS | YPOS | +-----------------+---+----------+----------+ FOR - color format, as defined by OVERLAY_FORMAT_* in pxafb.h - 0 - RGB - 1 - YUV444 PACKED - 2 - YUV444 PLANAR - 3 - YUV422 PLANAR - 4 - YUR420 PLANAR XPOS - starting horizontal position YPOS - starting vertical position”h]”(hÌ)”}”(hXIPXA27x and later processors support overlay1 and overlay2 on-top of the base framebuffer (although under-neath the base is also possible). They support palette and no-palette RGB formats, as well as YUV formats (only available on overlay2). These overlays have dedicated DMA channels and behave in a similar way as a framebuffer.”h]”hXIPXA27x and later processors support overlay1 and overlay2 on-top of the base framebuffer (although under-neath the base is also possible). They support palette and no-palette RGB formats, as well as YUV formats (only available on overlay2). These overlays have dedicated DMA channels and behave in a similar way as a framebuffer.”…””}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KWhjlubhÌ)”}”(hŒpHowever, there are some differences between these overlay framebuffers and normal framebuffers, as listed below:”h]”hŒpHowever, there are some differences between these overlay framebuffers and normal framebuffers, as listed below:”…””}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K]hjlubhŒenumerated_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hŒâoverlay can start at a 32-bit word aligned position within the base framebuffer, which means they have a start (x, y). This information is encoded into var->nonstd (no, var->xoffset and var->yoffset are not for such purpose). ”h]”hÌ)”}”(hŒáoverlay can start at a 32-bit word aligned position within the base framebuffer, which means they have a start (x, y). This information is encoded into var->nonstd (no, var->xoffset and var->yoffset are not for such purpose).”h]”hŒáoverlay can start at a 32-bit word aligned position within the base framebuffer, which means they have a start (x, y). This information is encoded into var->nonstd (no, var->xoffset and var->yoffset are not for such purpose).”…””}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K`hj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hjŽubj’)”}”(hX>overlay framebuffer is allocated dynamically according to specified 'struct fb_var_screeninfo', the amount is decided by:: var->xres_virtual * var->yres_virtual * bpp bpp = 16 -- for RGB565 or RGBT555 bpp = 24 -- for YUV444 packed bpp = 24 -- for YUV444 planar bpp = 16 -- for YUV422 planar (1 pixel = 1 Y + 1/2 Cb + 1/2 Cr) bpp = 12 -- for YUV420 planar (1 pixel = 1 Y + 1/4 Cb + 1/4 Cr) NOTE: a. overlay does not support panning in x-direction, thus var->xres_virtual will always be equal to var->xres b. line length of overlay(s) must be on a 32-bit word boundary, for YUV planar modes, it is a requirement for the component with minimum bits per pixel, e.g. for YUV420, Cr component for one pixel is actually 2-bits, it means the line length should be a multiple of 16-pixels c. starting horizontal position (XPOS) should start on a 32-bit word boundary, otherwise the fb_check_var() will just fail. d. the rectangle of the overlay should be within the base plane, otherwise fail Applications should follow the sequence below to operate an overlay framebuffer: a. open("/dev/fb[1-2]", ...) b. ioctl(fd, FBIOGET_VSCREENINFO, ...) c. modify 'var' with desired parameters: 1) var->xres and var->yres 2) larger var->yres_virtual if more memory is required, usually for double-buffering 3) var->nonstd for starting (x, y) and color format 4) var->{red, green, blue, transp} if RGB mode is to be used d. ioctl(fd, FBIOPUT_VSCREENINFO, ...) e. ioctl(fd, FBIOGET_FSCREENINFO, ...) f. mmap g. ... ”h]”(hÌ)”}”(hŒzoverlay framebuffer is allocated dynamically according to specified 'struct fb_var_screeninfo', the amount is decided by::”h]”hŒ}overlay framebuffer is allocated dynamically according to specified ‘struct fb_var_screeninfo’, the amount is decided by:”…””}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kehj«ubhê)”}”(hŒ+var->xres_virtual * var->yres_virtual * bpp”h]”hŒ+var->xres_virtual * var->yres_virtual * bpp”…””}”hj½sbah}”(h]”h ]”h"]”h$]”h&]”hùhúuh1héh³hÊh´Khhj«ubhÌ)”}”(hŒ!bpp = 16 -- for RGB565 or RGBT555”h]”hŒ!bpp = 16 -- for RGB565 or RGBT555”…””}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kjhj«ubhÌ)”}”(hŒbpp = 24 -- for YUV444 packed”h]”hŒbpp = 24 -- for YUV444 packed”…””}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Klhj«ubhÌ)”}”(hŒbpp = 24 -- for YUV444 planar”h]”hŒbpp = 24 -- for YUV444 planar”…””}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Knhj«ubhÌ)”}”(hŒ?bpp = 16 -- for YUV422 planar (1 pixel = 1 Y + 1/2 Cb + 1/2 Cr)”h]”hŒ?bpp = 16 -- for YUV422 planar (1 pixel = 1 Y + 1/2 Cb + 1/2 Cr)”…””}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kphj«ubhÌ)”}”(hŒ?bpp = 12 -- for YUV420 planar (1 pixel = 1 Y + 1/4 Cb + 1/4 Cr)”h]”hŒ?bpp = 12 -- for YUV420 planar (1 pixel = 1 Y + 1/4 Cb + 1/4 Cr)”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Krhj«ubhÌ)”}”(hŒNOTE:”h]”hŒNOTE:”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kthj«ubj)”}”(hhh]”(j’)”}”(hŒjoverlay does not support panning in x-direction, thus var->xres_virtual will always be equal to var->xres ”h]”hÌ)”}”(hŒioverlay does not support panning in x-direction, thus var->xres_virtual will always be equal to var->xres”h]”hŒioverlay does not support panning in x-direction, thus var->xres_virtual will always be equal to var->xres”…””}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kvhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hjubj’)”}”(hXline length of overlay(s) must be on a 32-bit word boundary, for YUV planar modes, it is a requirement for the component with minimum bits per pixel, e.g. for YUV420, Cr component for one pixel is actually 2-bits, it means the line length should be a multiple of 16-pixels ”h]”hÌ)”}”(hXline length of overlay(s) must be on a 32-bit word boundary, for YUV planar modes, it is a requirement for the component with minimum bits per pixel, e.g. for YUV420, Cr component for one pixel is actually 2-bits, it means the line length should be a multiple of 16-pixels”h]”hXline length of overlay(s) must be on a 32-bit word boundary, for YUV planar modes, it is a requirement for the component with minimum bits per pixel, e.g. for YUV420, Cr component for one pixel is actually 2-bits, it means the line length should be a multiple of 16-pixels”…””}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kyhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hjubj’)”}”(hŒystarting horizontal position (XPOS) should start on a 32-bit word boundary, otherwise the fb_check_var() will just fail. ”h]”hÌ)”}”(hŒxstarting horizontal position (XPOS) should start on a 32-bit word boundary, otherwise the fb_check_var() will just fail.”h]”hŒxstarting horizontal position (XPOS) should start on a 32-bit word boundary, otherwise the fb_check_var() will just fail.”…””}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KhjRubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hjubj’)”}”(hŒMthe rectangle of the overlay should be within the base plane, otherwise fail ”h]”hÌ)”}”(hŒLthe rectangle of the overlay should be within the base plane, otherwise fail”h]”hŒLthe rectangle of the overlay should be within the base plane, otherwise fail”…””}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K‚hjjubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hjubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œ loweralpha”Œprefix”hŒsuffix”Œ.”uh1jŒhj«ubhÌ)”}”(hŒPApplications should follow the sequence below to operate an overlay framebuffer:”h]”hŒPApplications should follow the sequence below to operate an overlay framebuffer:”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K…hj«ubj&)”}”(hX¿a. open("/dev/fb[1-2]", ...) b. ioctl(fd, FBIOGET_VSCREENINFO, ...) c. modify 'var' with desired parameters: 1) var->xres and var->yres 2) larger var->yres_virtual if more memory is required, usually for double-buffering 3) var->nonstd for starting (x, y) and color format 4) var->{red, green, blue, transp} if RGB mode is to be used d. ioctl(fd, FBIOPUT_VSCREENINFO, ...) e. ioctl(fd, FBIOGET_FSCREENINFO, ...) f. mmap g. ... ”h]”j)”}”(hhh]”(j’)”}”(hŒopen("/dev/fb[1-2]", ...)”h]”hÌ)”}”(hj¤h]”hŒopen(“/dev/fb[1-2]â€, ...)”…””}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kˆhj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hjŸubj’)”}”(hŒ#ioctl(fd, FBIOGET_VSCREENINFO, ...)”h]”hÌ)”}”(hj»h]”hŒ#ioctl(fd, FBIOGET_VSCREENINFO, ...)”…””}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K‰hj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hjŸubj’)”}”(hX modify 'var' with desired parameters: 1) var->xres and var->yres 2) larger var->yres_virtual if more memory is required, usually for double-buffering 3) var->nonstd for starting (x, y) and color format 4) var->{red, green, blue, transp} if RGB mode is to be used ”h]”(hÌ)”}”(hŒ%modify 'var' with desired parameters:”h]”hŒ)modify ‘var’ with desired parameters:”…””}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KŠhjÐubj)”}”(hhh]”(j’)”}”(hŒvar->xres and var->yres”h]”hÌ)”}”(hjçh]”hŒvar->xres and var->yres”…””}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KŒhjåubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hjâubj’)”}”(hŒQlarger var->yres_virtual if more memory is required, usually for double-buffering”h]”hÌ)”}”(hŒQlarger var->yres_virtual if more memory is required, usually for double-buffering”h]”hŒQlarger var->yres_virtual if more memory is required, usually for double-buffering”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khjüubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hjâubj’)”}”(hŒ0var->nonstd for starting (x, y) and color format”h]”hÌ)”}”(hjh]”hŒ0var->nonstd for starting (x, y) and color format”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hjâubj’)”}”(hŒ:var->{red, green, blue, transp} if RGB mode is to be used ”h]”hÌ)”}”(hŒ9var->{red, green, blue, transp} if RGB mode is to be used”h]”hŒ9var->{red, green, blue, transp} if RGB mode is to be used”…””}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hjâubeh}”(h]”h ]”h"]”h$]”h&]”jˆŒarabic”jŠhj‹Œ)”uh1jŒhjÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‘hjŸubj’)”}”(hŒ#ioctl(fd, FBIOPUT_VSCREENINFO, ...)”h]”hÌ)”}”(hjSh]”hŒ#ioctl(fd, FBIOPUT_VSCREENINFO, ...)”…””}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K’hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hjŸubj’)”}”(hŒ#ioctl(fd, FBIOGET_FSCREENINFO, ...)”h]”hÌ)”}”(hjjh]”hŒ#ioctl(fd, FBIOGET_FSCREENINFO, ...)”…””}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K“hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hjŸubj’)”}”(hŒmmap”h]”hÌ)”}”(hjh]”hŒmmap”…””}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K”hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hjŸubj’)”}”(hŒ... ”h]”hÌ)”}”(hŒ...”h]”hŒ...”…””}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K•hj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hjŸubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jŠhj‹jŒuh1jŒhj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%h³hÊh´Kˆhj«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‘hjŽubj’)”}”(hŒ½for YUV planar formats, these are actually not supported within the framebuffer framework, application has to take care of the offsets and lengths of each component within the framebuffer. ”h]”hÌ)”}”(hŒ¼for YUV planar formats, these are actually not supported within the framebuffer framework, application has to take care of the offsets and lengths of each component within the framebuffer.”h]”hŒ¼for YUV planar formats, these are actually not supported within the framebuffer framework, application has to take care of the offsets and lengths of each component within the framebuffer.”…””}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K—hjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hjŽubj’)”}”(hX-var->nonstd is used to pass starting (x, y) position and color format, the detailed bit fields are shown below:: 31 23 20 10 0 +-----------------+---+----------+----------+ | ... unused ... |FOR| XPOS | YPOS | +-----------------+---+----------+----------+ FOR - color format, as defined by OVERLAY_FORMAT_* in pxafb.h - 0 - RGB - 1 - YUV444 PACKED - 2 - YUV444 PLANAR - 3 - YUV422 PLANAR - 4 - YUR420 PLANAR XPOS - starting horizontal position YPOS - starting vertical position”h]”(hÌ)”}”(hŒpvar->nonstd is used to pass starting (x, y) position and color format, the detailed bit fields are shown below::”h]”hŒovar->nonstd is used to pass starting (x, y) position and color format, the detailed bit fields are shown below:”…””}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K›hjØubhê)”}”(hŒ»31 23 20 10 0 +-----------------+---+----------+----------+ | ... unused ... |FOR| XPOS | YPOS | +-----------------+---+----------+----------+”h]”hŒ»31 23 20 10 0 +-----------------+---+----------+----------+ | ... unused ... |FOR| XPOS | YPOS | +-----------------+---+----------+----------+”…””}”hjêsbah}”(h]”h ]”h"]”h$]”h&]”hùhúuh1héh³hÊh´KžhjØubhÌ)”}”(hŒ>FOR - color format, as defined by OVERLAY_FORMAT_* in pxafb.h”h]”hŒ>FOR - color format, as defined by OVERLAY_FORMAT_* in pxafb.h”…””}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K£hjØubj&)”}”(hŒZ- 0 - RGB - 1 - YUV444 PACKED - 2 - YUV444 PLANAR - 3 - YUV422 PLANAR - 4 - YUR420 PLANAR ”h]”hŒ bullet_list”“”)”}”(hhh]”(j’)”}”(hŒ0 - RGB”h]”hÌ)”}”(hjh]”hŒ0 - RGB”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K¥hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hj ubj’)”}”(hŒ1 - YUV444 PACKED”h]”hÌ)”}”(hj(h]”hŒ1 - YUV444 PACKED”…””}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K¦hj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hj ubj’)”}”(hŒ2 - YUV444 PLANAR”h]”hÌ)”}”(hj?h]”hŒ2 - YUV444 PLANAR”…””}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K§hj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hj ubj’)”}”(hŒ3 - YUV422 PLANAR”h]”hÌ)”}”(hjVh]”hŒ3 - YUV422 PLANAR”…””}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K¨hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hj ubj’)”}”(hŒ4 - YUR420 PLANAR ”h]”hÌ)”}”(hŒ4 - YUR420 PLANAR”h]”hŒ4 - YUR420 PLANAR”…””}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K©hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1j h³hÊh´K¥hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%h³hÊh´K¥hjØubhÌ)”}”(hŒ#XPOS - starting horizontal position”h]”hŒ#XPOS - starting horizontal position”…””}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K«hjØubhÌ)”}”(hŒ!YPOS - starting vertical position”h]”hŒ!YPOS - starting vertical position”…””}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K­hjØubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‘hjŽubeh}”(h]”h ]”h"]”h$]”h&]”jˆjIjŠhj‹jŒuh1jŒhjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%h³hÊh´KWhj[h²hubeh}”(h]”Œ4overlay-support-for-pxa27x-and-later-lcd-controllers”ah ]”h"]”Œ4overlay support for pxa27x and later lcd controllers”ah$]”h&]”uh1hµhh·h²hh³hÊh´KUubeh}”(h]”Œ driver-for-pxa25x-lcd-controller”ah ]”h"]”Œ driver for pxa25x lcd controller”ah$]”h&]”uh1hµhhh²hh³hÊh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÊuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(hºNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jòŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÊŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(jÌjÉjÄjÁuŒ nametypes”}”(j̉jĉuh}”(jÉh·jÁj[uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”hŒsystem_message”“”)”}”(hhh]”hÌ)”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…””}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhjVubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œline”K•Œsource”hÊuh1jThj–ubaŒtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.