[maemo-developers] N770 tearsync problems

From: Frantisek Dufka dufkaf at seznam.cz
Date: Mon May 7 10:31:40 EEST 2007
Hello,

last week I tried to backport tearsync support from n800 kernel source 
to latest 2.6.16 released for n770. The result compiles fine and boots 
on device and works great until one actually tries to use the tearsync 
feature. It doesn't work correctly. First framebuffer update with 
tearsync flag hangs. All the tearsync setup and enable code for hwa742 
and sossi seems to be called but in the end the update hangs waiting for 
sossi interrupt that never comes.
'cat /proc/interrupts | grep sossi' has zero for sossi_match interrupt.
  51:          0   sossi_match

So my questions are:
Does the hardware support it? I have one of the first developer devices 
(hw build 1602), is it possible that tearsync pins between epson chip 
and sossi are simply not connected? Kernel source suggests that it is 
always connected (unlike some other features that are conditionally 
checked at runtime). If it is connected do I need to enable the 
interrupt line or something else except acquiring the interrupt in sossi.c?

The backport was not simple copy/paste since the omapfb code changed a 
lot (more planes, support for fb in sram) and even sossi.c and hwa742.c 
had some changes. First I did line by line merge to get only the code 
that looked related to tearsync (files sossi.c, hwa742.c omapfb_main.c 
and some headers to have missing definitions). Later I also tried to do 
more changes so in the end the hwa742.c and sossi.c are exact copies of 
those files in n800 tree but there is no change and it still doesn't 
work (i.e hangs possibly waiting for interrupt).

I also tried to compile 2.6.18 source with abandoned kernel patch for 
hacker edition and also current omap git source. Both compile and boot 
fine (i.e display works) but the initfs is confused and does not even 
start dsme and then reboots. This is also mentioned in 
http://maemo.org/community/wiki/Os2007HackerEditionArchives "linuxrc 
from old OS2006 initfs starts, but gets confused because of different 
kernel and reboots. This was expected behaviour"

So before trying to make my own root filesystem for verifying newer 
kernels I'd like to know whether there is any chance this tearsync code 
will actually work.

Or is there any other gotcha in 2.6.16? Maybe the interrupt code is 
different between 2.6.16 and 2.6.18? I had to replace include 
linux/irq.h for linux/interrupt.h since irq.h in 2.6.16 had some errors 
and other code (mmc driver) included linux/interrupt.h.

Thanks for any tips.

Frantisek

More information about the maemo-developers mailing list