Subject: Re: Error messgae when netbooting - ex0: device timeout
To: Allen Briggs <briggs@wasabisystems.com>
From: Stephan Thesing <thesing@cs.uni-sb.de>
List: port-sandpoint
Date: 08/02/2001 10:48:41
On 01-Aug-2001 Allen Briggs wrote:
> On Wed, Aug 01, 2001 at 04:31:48PM +0900, Boo Geum Jung wrote:
>> root device (default md0a): ex0
>> dump device:
>> file system (default generic):
>> root on ex0
>> nfs_boot: trying BOOTP
>> ex0: device timeout
> 
> This looks to me like the interrupt is not working correctly for some
> reason.  It is possible that the devices/slots do not map to interrupts
> the same on your Sandpoint_X3 as on the _X2 on which I have been working.
> To test this theory out, you could try enabling interrupts for all slots
> and see if any are tripped.
> 

FWIW:
On my Sandpoint_X3 with Altimus (and thus MPC107 host/pci bridge) the serial
demultiplexer is not initialised by the DINK ROM on boot and thus no interrupts
come through to the CPU from the Sandpoint board.
From the dmesg of the original poster:
>vendor 0x1057 product 0x0004 (host bridge, revision 0x12) at pci0 dev 0
it seems, he too has a MPC107 on the MPPMC board.

What I did was to add the initialisation to serial interrupt demultiplexing
in sandpoint/extintr.c in openpic_init(), like this 

diff -u -r1.2 extintr.c
--- extintr.c   2001/02/05 19:22:25     1.2
+++ extintr.c   2001/08/02 08:40:57
@@ -444,6 +451,18 @@
        x = openpic_read(OPENPIC_CONFIG);
        x |= OPENPIC_CONFIG_8259_PASSTHRU_DISABLE;
        openpic_write(OPENPIC_CONFIG, x);
+
+/* use serial mode */
+#define OPENPIC_EICR 0x1030
+#define OPENPIC_EICR_SERIAL_MODE (1<<27)
+#define OPENPIC_EICR_SERIAL_RATIO_MASK 0x70000000
+#define OPENPIC_EICR_SERIAL_RATIO_SHIFT 28
+
+       x = openpic_read(OPENPIC_EICR);
+       x &=~OPENPIC_EICR_SERIAL_RATIO_MASK;
+       x |= 4<<OPENPIC_EICR_SERIAL_RATIO_SHIFT;
+       x |= OPENPIC_EICR_SERIAL_MODE;
+       openpic_write(OPENPIC_EICR,x);
 
        /* send all interrupts to cpu 0 */
        for (irq = 0; irq < ICU_LEN; irq++)

Naturally, this is a hack and should probably only be applied, if we are sure to
have a MPC107 in the system (I didn't check the differences between
MPC8240/106/107). [The clock ratio between system clock and serial int clock is
choosen as '4' in the above hack, just a wild guess ]

With this, interrupts finally came through.....


Anyhow, I can't get DMA to work properly.
I.e. whenever I access the floppy, the seek/recalibrate/etc stuff works fine,
DMA is started by doesn't seem to proceed, causing the floppy to abort with a
data overrun error.
Anyone encountered similair problems?

Best regards....
        Stephan




=  Tel.: +49-681-302-5571          = Universitaet des Saarlandes =
=  Fax.: +49-681-302-3065          = Postfach 15 11 50           =
=  Compiler Research Group         = 66041 Saarbruecken          =
=  FR 6.2 - Informatik             = GERMANY                     =