Mailing List Archive

N770 tearsync problems

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 "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.

maemo-developers mailing list