1================================ 2Driver for PXA25x LCD controller 3================================ 4 5The driver supports the following options, either via 6options=<OPTIONS> when modular or video=pxafb:<OPTIONS> when built in. 7 8For example:: 9 10 modprobe pxafb options=vmem:2M,mode:640x480-8,passive 11 12or on the kernel command line:: 13 14 video=pxafb:vmem:2M,mode:640x480-8,passive 15 16vmem: VIDEO_MEM_SIZE 17 18 Amount of video memory to allocate (can be suffixed with K or M 19 for kilobytes or megabytes) 20 21mode:XRESxYRES[-BPP] 22 23 XRES == LCCR1_PPL + 1 24 25 YRES == LLCR2_LPP + 1 26 27 The resolution of the display in pixels 28 29 BPP == The bit depth. Valid values are 1, 2, 4, 8 and 16. 30 31pixclock:PIXCLOCK 32 33 Pixel clock in picoseconds 34 35left:LEFT == LCCR1_BLW + 1 36 37right:RIGHT == LCCR1_ELW + 1 38 39hsynclen:HSYNC == LCCR1_HSW + 1 40 41upper:UPPER == LCCR2_BFW 42 43lower:LOWER == LCCR2_EFR 44 45vsynclen:VSYNC == LCCR2_VSW + 1 46 47 Display margins and sync times 48 49color | mono => LCCR0_CMS 50 51 umm... 52 53active | passive => LCCR0_PAS 54 55 Active (TFT) or Passive (STN) display 56 57single | dual => LCCR0_SDS 58 59 Single or dual panel passive display 60 614pix | 8pix => LCCR0_DPD 62 63 4 or 8 pixel monochrome single panel data 64 65hsync:HSYNC, vsync:VSYNC 66 67 Horizontal and vertical sync. 0 => active low, 1 => active 68 high. 69 70dpc:DPC 71 72 Double pixel clock. 1=>true, 0=>false 73 74outputen:POLARITY 75 76 Output Enable Polarity. 0 => active low, 1 => active high 77 78pixclockpol:POLARITY 79 80 pixel clock polarity 81 0 => falling edge, 1 => rising edge 82 83 84Overlay Support for PXA27x and later LCD controllers 85==================================================== 86 87 PXA27x and later processors support overlay1 and overlay2 on-top of the 88 base framebuffer (although under-neath the base is also possible). They 89 support palette and no-palette RGB formats, as well as YUV formats (only 90 available on overlay2). These overlays have dedicated DMA channels and 91 behave in a similar way as a framebuffer. 92 93 However, there are some differences between these overlay framebuffers 94 and normal framebuffers, as listed below: 95 96 1. overlay can start at a 32-bit word aligned position within the base 97 framebuffer, which means they have a start (x, y). This information 98 is encoded into var->nonstd (no, var->xoffset and var->yoffset are 99 not for such purpose). 100 101 2. overlay framebuffer is allocated dynamically according to specified 102 'struct fb_var_screeninfo', the amount is decided by:: 103 104 var->xres_virtual * var->yres_virtual * bpp 105 106 bpp = 16 -- for RGB565 or RGBT555 107 108 bpp = 24 -- for YUV444 packed 109 110 bpp = 24 -- for YUV444 planar 111 112 bpp = 16 -- for YUV422 planar (1 pixel = 1 Y + 1/2 Cb + 1/2 Cr) 113 114 bpp = 12 -- for YUV420 planar (1 pixel = 1 Y + 1/4 Cb + 1/4 Cr) 115 116 NOTE: 117 118 a. overlay does not support panning in x-direction, thus 119 var->xres_virtual will always be equal to var->xres 120 121 b. line length of overlay(s) must be on a 32-bit word boundary, 122 for YUV planar modes, it is a requirement for the component 123 with minimum bits per pixel, e.g. for YUV420, Cr component 124 for one pixel is actually 2-bits, it means the line length 125 should be a multiple of 16-pixels 126 127 c. starting horizontal position (XPOS) should start on a 32-bit 128 word boundary, otherwise the fb_check_var() will just fail. 129 130 d. the rectangle of the overlay should be within the base plane, 131 otherwise fail 132 133 Applications should follow the sequence below to operate an overlay 134 framebuffer: 135 136 a. open("/dev/fb[1-2]", ...) 137 b. ioctl(fd, FBIOGET_VSCREENINFO, ...) 138 c. modify 'var' with desired parameters: 139 140 1) var->xres and var->yres 141 2) larger var->yres_virtual if more memory is required, 142 usually for double-buffering 143 3) var->nonstd for starting (x, y) and color format 144 4) var->{red, green, blue, transp} if RGB mode is to be used 145 146 d. ioctl(fd, FBIOPUT_VSCREENINFO, ...) 147 e. ioctl(fd, FBIOGET_FSCREENINFO, ...) 148 f. mmap 149 g. ... 150 151 3. for YUV planar formats, these are actually not supported within the 152 framebuffer framework, application has to take care of the offsets 153 and lengths of each component within the framebuffer. 154 155 4. var->nonstd is used to pass starting (x, y) position and color format, 156 the detailed bit fields are shown below:: 157 158 31 23 20 10 0 159 +-----------------+---+----------+----------+ 160 | ... unused ... |FOR| XPOS | YPOS | 161 +-----------------+---+----------+----------+ 162 163 FOR - color format, as defined by OVERLAY_FORMAT_* in pxafb.h 164 165 - 0 - RGB 166 - 1 - YUV444 PACKED 167 - 2 - YUV444 PLANAR 168 - 3 - YUV422 PLANAR 169 - 4 - YUR420 PLANAR 170 171 XPOS - starting horizontal position 172 173 YPOS - starting vertical position 174