View Single Post
Old 12-17-2011, 10:48 PM   #1
geekmaster
Всё гениальное просто.
geekmaster ought to be getting tired of karma fortunes by now.geekmaster ought to be getting tired of karma fortunes by now.geekmaster ought to be getting tired of karma fortunes by now.geekmaster ought to be getting tired of karma fortunes by now.geekmaster ought to be getting tired of karma fortunes by now.geekmaster ought to be getting tired of karma fortunes by now.geekmaster ought to be getting tired of karma fortunes by now.geekmaster ought to be getting tired of karma fortunes by now.geekmaster ought to be getting tired of karma fortunes by now.geekmaster ought to be getting tired of karma fortunes by now.geekmaster ought to be getting tired of karma fortunes by now.
 
geekmaster's Avatar
 
Posts: 5,070
Karma: 6789001
Join Date: Nov 2011
Location: Щедрость не имеет пределов.
Device: *.*
K4 and Touch framebuffer changes

K4 (Kindle 4 non-touch) and K5 (Kindle touch) use the framebuffer in a different way than the K3 and earlier devices.

Unlike K3 and older which default to 4 bits/pixel, the new K4 and Touch use 8 bits/pixel.

Where the K3 and earlier 6-inch screen models used 300 bytes/row in 600x800 portrait mode, the K4 uses 600 bytes/row, and the Touch uses 608 bytes/row (8 bytes of padding past the last column).

Newer framebuffer code will need to take stride (byte distance between pixel rows) into account (300, 600, or 608). In addition, these will change for landscape modes for all devices.

*** Another problem is that the Touch is not responding to sending update commands using ioctl (which works fine on the K4). I only see that the framebuffer changed when some external event causes a display update.

And not only is the Touch ioctl call not doing display updates, but my Touch also does NOT have /proc/eink_fb/update_display used by scripts and by some native programs to trigger display updates.

Another interesting thing is that the touch has more than twice as many "virtual lines" as it needs. Perhaps the framebuffer contains two screens full of data (double buffered?). I need to study some of the GPL code to figure this out.

At least the K4 is still mostly compatible with the old-style framebuffer control used by many hacks.

The touch will require further investigation.

Here are the eink settings reported by framebuffer ioctl for my kindles:

Touch (a/k/a KT or K5):
Spoiler:
Code:
finfo: 
   id=mxc_epdc_fb
   smem_start=75100000
   smem_len=1024000
   type=0
   type_aux=0
   visual=5
   xpanstep=1
   ypanstep=1
   ywrapstep=0
   line_length=608
   mmio_start=00000000
   mmio_len=0
   accel=0

vinfo: 
   xres=600
   yres=800
   xres_virt=608
   yres_virt=1792
   xoffset=0
   yoffset=0
   bitsperpixel=8
   grayscale=1
   nonstd=0
   activate=128
   height=-1
   width=-1
   flags=0
   pixclk=32258064
   lmargin=17
   rmargin=172
   umargin=4
   bmargin=18
   hsync_len=15
   vsync_len=4
   sync=0
   vmode=0

K4 (non-touch):
Spoiler:
Code:
finfo: 
   id=eink_fb
   smem_start=d0b8e000
   smem_len=966656
   type=0
   type_aux=0
   visual=5
   xpanstep=0
   ypanstep=0
   ywrapstep=0
   line_length=600
   mmio_start=00000000
   mmio_len=0
   accel=0

vinfo: 
   xres=600
   yres=800
   xres_virt=600
   yres_virt=800
   xoffset=0
   yoffset=0
   bitsperpixel=8
   grayscale=1
   nonstd=0
   activate=2
   height=121
   width=91
   flags=0
   pixclk=0
   lmargin=0
   rmargin=0
   umargin=0
   bmargin=0
   hsync_len=0
   vsync_len=0
   sync=0
   vmode=0

K3 (Keyboard):
Spoiler:
Code:
finfo: 
   id=eink_fb
   smem_start=d08a8000
   smem_len=483328
   type=0
   type_aux=0
   visual=5
   xpanstep=0
   ypanstep=0
   ywrapstep=0
   line_length=300
   mmio_start=00000000
   mmio_len=0
   accel=0

vinfo: 
   xres=600
   yres=800
   xres_virt=600
   yres_virt=800
   xoffset=0
   yoffset=0
   bitsperpixel=4
   grayscale=1
   nonstd=0
   activate=2
   height=121
   width=91
   flags=0
   pixclk=0
   lmargin=0
   rmargin=0
   umargin=0
   bmargin=0
   hsync_len=0
   vsync_len=0
   sync=0
   vmode=0
   rotate=0

DXG (Graphite):
Spoiler:
Code:
finfo: 
   id=eink_fb
   smem_start=c8909000
   smem_len=991232
   type=0
   type_aux=0
   visual=5
   xpanstep=0
   ypanstep=0
   ywrapstep=0
   line_length=412
   mmio_start=00000000
   mmio_len=0
   accel=0

vinfo: 
   xres=824
   yres=1200
   xres_virt=824
   yres_virt=1200
   xoffset=0
   yoffset=0
   bitsperpixel=4
   grayscale=1
   nonstd=0
   activate=2
   height=203
   width=139
   flags=0
   pixclk=0
   lmargin=0
   rmargin=0
   umargin=0
   bmargin=0
   hsync_len=0
   vsync_len=0
   sync=0
   vmode=0
   rotate=0

DX (White):
Spoiler:
Code:
finfo: 
   id=eink_fb
   smem_start=c8909000
   smem_len=991232
   type=0
   type_aux=0
   visual=5
   xpanstep=0
   ypanstep=0
   ywrapstep=0
   line_length=412
   mmio_start=00000000
   mmio_len=0
   accel=0

vinfo: 
   xres=824
   yres=1200
   xres_virt=824
   yres_virt=1200
   xoffset=0
   yoffset=0
   bitsperpixel=4
   grayscale=1
   nonstd=0
   activate=2
   height=203
   width=139
   flags=0
   pixclk=0
   lmargin=0
   rmargin=0
   umargin=0
   bmargin=0
   hsync_len=0
   vsync_len=0
   sync=0
   vmode=0
   rotate=0

I do not yet have a K2 or K1, but I would really like to get them for testing. Does anybody have an old one no longer loved, neglected in a drawer, on a shelf, in a closet, or under a bed (or packed away in a box)? I am sure it would love a new home where it will get plenty of attention.

Last edited by geekmaster; 12-17-2011 at 11:17 PM.
geekmaster is offline   Reply With Quote