Lite5200B and Carmine Board PCI problem
Dr. Thomas Fiksel
thomas.fiksel at jena-optronik.de
Tue Sep 11 19:07:29 EST 2007
Hi Linuxppc-embedded,
I'm trying to run a Fujitsu Carmine Evaluation Board MB86297-EB01 on a
Freescale Lite5200B board.
With a 'standard' Linux kernel 2.4 or 2.6 there are problems while
allocating/maping of the PCI memory space. The Carmine board requires 2
PCI IO space segments of 256 byte each, 1 PCI memory space segment of
256 MByte and 1 PCI memory space segment of 64 MByte.
The U-Boot and kernel log shows :
Scanning PCI devices on bus 0
BusDevFun VendorId DeviceId Device Class Sub-Class
_____________________________________________________________
00.18.00 0x10cf 0x202b Display controller 0x80
00.1a.00 0x1057 0x5809 Bridge device 0x80
...
PCI: Probing PCI hardware
...
PCI:00:18.0 Resource 0 [00000000-000000ff] is unassigned
PCI:00:18.0 Resource 1 [00000000-000000ff] is unassigned
PCI:00:18.0 Resource 2 [00000000-0fffffff] is unassigned
PCI:00:18.0 Resource 3 [00000000-03ffffff] is unassigned
PCI:00:1a.0 Resource 0 [00000000-0003ffff] is unassigned
PCI:00:1a.0 Resource 1 [00000000-3fffffff] is unassigned
PCI: bridge rsrc 50000000..50ffffff (100), parent c015debc, resource
c027f038
PCI: bridge rsrc 40000000..4fffffff (200), parent c015ded8, resource
c027f054
PCI: moved device 00:18.0 resource 0 (101) to 50000000
got res[50000000:500000ff] for resource 0 of PCI device 10cf:202b
PCI: moved device 00:18.0 resource 1 (101) to 50000400
got res[50000400:500004ff] for resource 1 of PCI device 10cf:202b
PCI: moved device 00:18.0 resource 2 (1208) to 40000000
got res[40000000:4fffffff] for resource 2 of PCI device 10cf:202b
PCI: Failed to allocate resource 3(50000000-4fffffff) for 00:18.0
Because the PCI bridge shows only 256 MByte available memory area it is
clear that the PCI memory space segment of 64 MByte (resource 3) is not
allocated/mapped.
I tried to change the constants MPC5xxx_PCI_MEM_START and
MPC5xxx_PCI_MEM_END constants (and other constants) in the related *.h
file for arch/ppc/kernel/mpc5xxx_pci.c, recompiled the kernel and run it
again.
Now the U-Boot and kernel log shows :
Scanning PCI devices on bus 0
BusDevFun VendorId DeviceId Device Class Sub-Class
_____________________________________________________________
00.18.00 0x10cf 0x202b Display controller 0x80
00.1a.00 0x1057 0x5809 Bridge device 0x80
...
PCI: Probing PCI hardware
...
PCI:00:18.0 Resource 0 [00000000-000000ff] is unassigned
PCI:00:18.0 Resource 1 [00000000-000000ff] is unassigned
PCI:00:18.0 Resource 2 [00000000-0fffffff] is unassigned
PCI:00:18.0 Resource 3 [00000000-03ffffff] is unassigned
PCI:00:1a.0 Resource 0 [00000000-0003ffff] is unassigned
PCI:00:1a.0 Resource 1 [00000000-3fffffff] is unassigned
PCI: bridge rsrc 60000000..60ffffff (100), parent c015debc, resource
c027f038
PCI: bridge rsrc 40000000..5fffffff (200), parent c015ded8, resource
c027f054
PCI: moved device 00:18.0 resource 0 (101) to 60000000
got res[60000000:600000ff] for resource 0 of PCI device 10cf:202b
PCI: moved device 00:18.0 resource 1 (101) to 60000400
got res[60000400:600004ff] for resource 1 of PCI device 10cf:202b
PCI: moved device 00:18.0 resource 2 (1208) to 40000000
got res[40000000:4fffffff] for resource 2 of PCI device 10cf:202b
PCI: moved device 00:18.0 resource 3 (1208) to 50000000
got res[50000000:53ffffff] for resource 3 of PCI device 10cf:202b
The PCI bridge shows now a creater area and both PCI memory space
segments of 256 Mbyte and 64 Mbyte are mapped.
But in case if I have a simple read or write acces to the register of
Carmine (which are located in the 64 Mbyte segment in adress region
above 0x50000000) the kernel gives the oops :
MB86290: fb_init called.
MB86290: initialize called.
Oops: kernel access of bad area, sig: 11
NIP: C00C2630 XER: 00000000 LR: C0004F3C SP: C0549D80 REGS: c0549cd0
TRAP: 0300 Not tainted
MSR: 00001032 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11
DAR: 00000020, DSISR: 20000000
TASK = c0548000[1] 'swapper' Last syscall: 120
last math 00000000 last altivec 00000000
GPR00: C0004F3C C0549D80 C0548000 00000000 C01B788C C0549E10 C014CA74
F0000C00
GPR08: F0001200 00000000 C0170000 00000020 C0190000 1008D5C4 0FFBA000
00000000
GPR16: 00000000 00000001 FFFFFFFF 007FFF00 00001032 00549E00 00000000
C0003E40
GPR24: C0004FA4 00000000 C0546420 C016EF20 C0549E10 C01B788C 24000000
C0546420
Call backtrace:
00009032 C0004F3C C0005000 C0003E40 C0004840 C00049B8 C00C2C14
C017ED7C C017E008 C017A140 C01725F4 C0172640 C0003970 C0006318
Kernel panic: Aiee, killing interrupt handler!
(Please note, the register access in the MB86290 driver code is still
directed to the new register locations of the Carmine)
Therefore my questions:
It is allowed to increase the PCI bridge memory area by th simple change
of MPC5xxx_PCI_MEM_START and MPC5xxx_PCI_MEM_END (and related constants)?
Or there are technical/hardware restrictions that this area can only be
256 MByte?
If not, must be changed other constants in the kernel configuration the
increase the PCI bridge memory area?
There are known problems to plug the Carmine board in the Lite5200B board?
All jumpers on both boards are in default settings.
TIA
Thomas Fiksel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 1970 bytes
Desc: not available
Url : http://ozlabs.org/pipermail/linuxppc-embedded/attachments/20070911/70e110cd/attachment.bin
More information about the Linuxppc-embedded
mailing list