Touchscreen tsc2046 (ads7846): ts_calibrate and SPI issues

Hi,

I am trying to get an lcd adapter board's touch screen controller
(tsc2046)
working on a xM, Angstrom Linux kernel 2.6.37+. When I run
ts_calibrate, I get the 'selected device is not a
touchscreen I understand' output and 'top' shows X doing 98%
processing as soon
as I tap the touchscreen in X. I use SPI4 and GPIO 157 for the pen
interrupt and the ads7846 kernel driver.

A couple of issues I have noticed (may or may not be related to
problem):

1. XOrg.0.0.log does not show /dev/input/event1 set up for the
touchscreen, but it does show all the other input device events such
as /dev/input/event3 for the mouse and keyboard etc.

2. I have added a line of debug code to the ads7846 kernel driver to
output the
result when a reading is requested. When I tap the touchscreen, I do
not see
this debug output on the serial kernel debug output.

3. If I cat /dev/input/event1 and then tap the touchscreen, I do get
binary output, but values are rubbish.

4. If I cat /sys/devices/platform/omap2_mcspi.4/spi4.0/in0_input
it hits the ads7846 kernel debug output e.g:
[ 1669.133270] ads7846 spi4.0: RESULT:0x000006AF
1044
which looks like a sane value.

5. So it looks as if things are working fine at the kernel driver
level, but not when
a user application is trying to use the touchscreen.

6. I am not sure if the OMAP3_MUX settings are correct. From the
datasheet for the tsc2046, the data is clocked when CS0 is pulled low.

7. I am not sure if I need to turn on the voltage regulator supply for
spi4.

8. A bit puzzling is that I do not get a Hz reading on the multimeter
for the SPI4 CLK line, and only a tiny voltage (52mV) when the touch
screen is tapped.

I am bit stumped as to what to try next.

ts_calibrate: (top shows X processing 98%)

I noticed I am not seeing this in the kernel debug ouput anymore:

[ 0.018157] omap2_mcspi omap2_mcspi.1: registered master spi1
[ 0.018371] omap2_mcspi omap2_mcspi.2: registered master spi2
[ 0.018585] omap2_mcspi omap2_mcspi.3: registered master spi3
[ 0.018798] omap2_mcspi omap2_mcspi.4: registered master spi4
[ 0.018859] spi spi4.0: setup: speed 1500000, sample leading edge,
clk normal
[ 0.018890] spi spi4.0: setup mode 0, 8 bits/w, 1500000 Hz max -->
0
[ 0.019042] omap2_mcspi omap2_mcspi.4: registered child spi4.0
[ 0.019592] usbcore: registered new interface driver usbfs

which originates from drivers/spi/spi.c:

    /* register the device, then userspace will see it.
     * registration fails if the bus ID is in use.
     */
    dev_set_name(&master->dev, "spi%u", master->bus_num);
    status = device_add(&master->dev);
    if (status < 0)
        goto done;
    dev_dbg(dev, "registered master %s%s\n", dev_name(&master->dev),
            dynamic ? " (dynamic)" : "");

Not sure why the registration fails (bus ID is in use?)
Thanks
Willem