Subject: RE: CATS motherboard & ISA compatible registers

From: George France <[email-masked]>
Date: Tue, 1 Aug 2000 11:29:04 -0400

Hello David;
 
Why don't you use the boot loader from handhelds.org? It already works on
the CATS motherboard.
 
--George
 
George France,      [email-masked] 
Cambridge Research Laboratory, Compaq Computer Corporation 
One Cambridgecenter    MS: CRL 
Cambridge, MA 02142 USA 

-----Original Message-----
From: David Aparicio Campos [mailto:[email-masked]]
Sent: Tuesday, August 01, 2000 6:45 AM
To: [email-masked]
Subject: CATS motherboard & ISA compatible registers

Hello all: 

I'm still trying to build a firmware of my own in order to boot Linux from a

CATS motherboard. 
----------------------------------------------- 
This one is similar to an EBSA285, but it has some important differences: 

- Has a SouthBridge, this is: a PCI/ISA bridge, I/O controller, IDE
controller, 
    USB and PMU funcionality. 
- Has a RTC (a Dallas 1687) connected to that SouthBridge. 

Less important: 
- Flash is an 256 KB AMD compatible (not an 4MB Intel one like EBSA 
    and NetWinder). 
- It's an ATX form factor, and has standard PC connectors, like KBD, IDE 
    and so on. 

A NetWinder machine is closer in design, but it uses Winbond bridges, I 
couldn't get useful information from "nettrom" code (firmware code of 
NetWinder machines). 
----------------------------------------------- 
I sent a previous mail about an "IRQ7" problem when I started Linux, 
something like: 

eter> call 0x8000 
boot no options 
Linux version 2.2.13-rmk2 (root@lobos) (gcc version 2.95.1 19990816
(release)) #5 Thu Jul 20 07:14:04 
CEST 2000 
initrd extends beyond end of memory (0xea000c22 > 0xc1000000) - disabling
initrd 
Calibrating delay loop... <3>IRQ LOCK: IRQ7 is locking the system, disabled 
IRQ LOCK: IRQ7 is locking the system, disabled 
IRQ LOCK: IRQ7 is locking the system, disabled 
... 

Russell King suggested a problem with PIC controller (IRQ7 is something 
related to bad inicialization of some ISA-related thing), and Jamey Hicks 
told me to revise external interrupts from RTC (I'm almost sure that 
this is the source of the deadly interrupt). Hey guys, thank you both!! 

I tried to change my code, leaving CATS in a similar state that original 
firmware does, but this didn't changed anything. 
(If you wonder why I am working in something that is already done, you 
have not seen CATS firmware running :-). On the other hand, that is not free

sofware). 
I sweeped throught Linux kernel and tried to find some clue about this
problem. 
What I have seen is that, If I comment some lines in init/main.c
(start_kernel)... 

// sti() 
// calibrate_delay() 

...Linux does all inicialization and tries to mount root FS. So what is
happening 
is that when kernel enables interrupts, timer interrupt floods the system
(Russell 
and Jamey were totally right). Surely, its related with timer driving (CATS 
architecture uses RTC periodic interrupt to handle tick beats, routed
thought ISA 
IRQ subsystem to the StrongArm). 

The problem by now is that datasheet for my southbridge is very obscure
about 
"ISA compatible registers", those related to PIC (0x20, 0x21, 0xA0 & 0xA1) 
and RTC (0x70 and 0x71). I have some doubts about this specific
inicialization. 

Seems like some register inicialization should be removed from Linux kernel 
and put in firmware/loader code (e.g bus master handling in 
arch/arm/kernel/hw-ebsa285.c and so on). I'm trying to summarize this, if
there 
is somebody interested... 

Does anybody have some more information about this ISA-PC-compatible 
inicialization issue?? 
TYIA 

David Aparicio