Hi,

I'm porting Linux to the Inhand Electronics SA-1100 based Elf. All is
relatively well. Using kernel 2.4.7-rmk2 still.

My latest thing is to get CF cards working in the PCMCIA socket. Have ported
the i82365 driver because I couldn't see that it had already been done. Has
it? There are a few funnies I won't bore you with. My CF card uses the ide_cs
driver.

The problem I have is that the IDE driver seems to lose interrupts. My guess
is that it issues a command and the interrupt (saying command complete)
happens before it has a chance to set up the interrupt handler. After it sets
it up, of course, the interrupt doesn't happen again.

I've put tracing in drivers/ide/ide.c, to tell me when it is waiting for a
response (ide_set_handler) and in arch/arm/kernel/irq.c to tell me when it
sees an interrupt #1. You can see from the console output that there don't
appear to be any missing interrupts. It does eventually work by retrying.

Does anyone know what the mechanism is for stopping interrupts arriving
early? I can see the spinlock stuff but it doesn't seem relevant.

If I should be asking IDE type people then please let me know.

Thanks,



*
*
* OmniMeter Elf Bootloader II (Jun 20 2001, 15:39:43)
*
*

ID  : OmniMeter Copyright (C) 1996-2000, DVP, Inc.
SN  : 00000005-0000008C
Ver : 1.0.6.0 (II)
NVPs:                 ,,manifest.txt,                ,0x00211020

Loaded At: 0xC0007F80
Running...Linux version 2.4.7-rmk1 (root@ellesmereh) (gcc version 2.95.3 20010315 
(release)) #212 Thu Sep 27 22:01:12 NZST 2001
Processor: Intel StrongARM-1100 revision 11
Architecture: Elf
On node 0 totalpages: 4096
zone(0): 4096 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line:  
Relocating machine vectors to 0xffff0000
Console: colour dummy device 80x30
Calibrating delay loop... 88.26 BogoMIPS
Memory: 16MB = 16MB total
Memory: 10524KB available (1110K code, 262K data, 72K init)
Dentry-cache hash table entries: 2048 (order: 2, 16384 bytes)
Inode-cache hash table entries: 1024 (order: 1, 8192 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 4096 (order: 2, 16384 bytes)
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
CPU clock: 132.700 MHz (max 132.700 MHz)
Starting kswapd v1.8
sa1100fb: map_size=b000, map_cpu=c1800000, screen_dma=c1801000
dma period = 12800000 ps
dma period = 12800000 ps
fbcon: displaying logo
Console: switching to colour frame buffer device 30x40
pty: 256 Unix98 ptys configured
Real Time Clock Driver v1.10d
SA1100 Real Time Clock driver v1.00
block: queued sectors max/low 6840kB/2280kB, 64 slots per queue
RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize
Uniform Multi-Platform E-IDE driver Revision: 6.31
ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
Linux Kernel Card Services 3.1.22
  options:  [pm]
Intel PCIC probe: 
  Cirrus PD672x ISA-to-PCMCIA at port 0xc180c3e0 ofs 0x00, 2 sockets
    host opts [0]: [ring] [1/6/3] [1/15/3]
    host opts [1]: [ring] [9/19/9] [1/15/3]
    PCI card interrupts, polling interval = 1000 ms
i82365: setting intctl to 43, flags =0
i82365: setting cscint to f
i82365: setting genctl to c
i82365: setting intctl to 43, flags =40
i82365: setting cscint to f
i82365: setting genctl to c
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 1024 bind 1024)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
NetWinder Floating Point Emulator V0.95 (c) 1998-1999 Rebel.com
got irq 12
i82365: setting intctl to 43, flags =43
i82365: setting cscint to f
i82365: setting genctl to c
i82365: setting intctl to 3, flags =43
i82365: setting cscint to f
i82365: setting genctl to c
i82365: setting intctl to 43, flags =3
i82365: setting cscint to f
i82365: setting genctl to c
RAMDISK: Compressed image found at block 0
Freeing initrd memory: 4096K
VFS: Mounted root (ext2 filesystem).
Freeing init memory: 72K
INIT: version 2.74 booting
Setting CPU Clock to min dma period = 12800000 ps
206MHz
INIT: Entering runlevel: 3
Starting system logger:  syslogd
Starting pcmcia Starting PCMCIA services: cardmgr.

i82365: setting intctl to 43, flags =43
i82365: setting cscint to f
i82365: setting genctl to c
i82365: setting intctl to 63, flags =43
i82365: setting cscint to f
i82365: setting genctl to c
Trying to free nonexistent resource <f6008000-f600800f>
hda: SanDisk SDCFB-16, ATA DISK drive
ide-probe: init_irq
allocate irq
ide_request_irq 1, 20000000
ide0 at 0xc1822000-0xc1822007,0xc182200e on irq 1
hda: 31360 sectors (16 MB) w/1KiB Cache, CHS=490/2/32
Partition check:
 hda:ide_set_handler c00aa074
got irq 1
ide_set_handler c00aa0d8
got irq 1
ide_set_handler c00a9b98
got irq 1

Linux login: hda: lost interrupt c00a9b98
ide_set_handler c00a9b98
got irq 1
 hda1
ide_cs: hda: Vcc = 5.0, Vpp = 0.0
ide_set_handler c00a1d60
got irq 1
ide_set_handler c00a1d60
got irq 1
ide_set_handler c00a1d60
got irq 1

Linux login: root
elf $ mount /mnt   de/ v/hda1 /mnt/ide
 hda:ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
 hda1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
 hda:ide_set_handler c00a9b98
got irq 1
hda: lost interrupt c00a9b98
ide_set_handler c00a9b98
got irq 1
 hda1
 hda:ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
 hda1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
hda: lost interrupt c00a9b98
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
ide_set_handler c00a9b98
got irq 1
elf $ ls /mnt/ide
rdimage.axf   manifest.txt  fred
elf $ umount /mnt/ide

_______________________________________________
http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm
Please visit the above address for information on this list.

Reply via email to