[U-Boot-Users] PCI initialization in U-Boot

Paul Wujek pwujek at xp2telecom.com
Mon Nov 1 15:49:39 CET 2004


When U-Boot initializes a PCI board are all the
PCI memory regions properly assigned and ready
for use?

I am testing an IceCube/MPC5200 motherboard together
with a Diamond Stealth ATI Radeon 9200SE PCI card.

In drivers/pci_auto.c the function pciauto_setup_device looks
like it is setting up the memory regions.

I can access BAR1 (I/O region), and BAR2 (memory region),
although I haven't verified that I am looking at
the right memory.

Attempting to access BAR0 (memory region), results in a 'bus fault'.

I am writing a standalone application and my initial development
must use these boards, unfortunately I can't use an OS to set
PCI up properly.

Are there further configuration commands that must be executed
to access the BAR0 memory region?

Alternately, is there a source of information that I can read
to learn how to set up PCI so that my standalone application
can use it?


Here's example output that illustrates  my problem:
===================================================

U-Boot 1.1.1 (Oct 29 2004 - 08:46:47)

CPU:   MPC5200 (JTAG ID 0001101d) at 396 MHz
       Bus 132 MHz, IPB 66 MHz, PCI 33 MHz
Board: Motorola MPC5200 (IceCube)
I2C:   85 kHz, ready
DRAM:  64 MB
FLASH: 16 MB
PCI:   Bus Dev VenId DevId Class Int
        00  18  1002  5964  0300  ff
        00  18  1002  5d44  0380  ff
        00  1a  1057  5803  0680  00
In:    serial
Out:   serial
Err:   serial
Net:   FEC ETHERNET
IDE:   Bus 0: not available

Autostarting. Press any key to abort...

Hit any key to stop autoboot:  0
=> pci header 00.18.00
  vendor ID =                   0x1002
  device ID =                   0x5964
  command register =            0x0007
  status register =             0x0290
  revision ID =                 0x01
  class code =                  0x03 (Display controller)
  sub class code =              0x00
  programming interface =       0x00
  cache line =                  0x08
  latency time =                0x80
  header type =                 0x80
  BIST =                        0x00
  base address 0 =              0x40000008
  base address 1 =              0x50000001
  base address 2 =              0x48000000
  base address 3 =              0x00000000
  base address 4 =              0x00000000
  base address 5 =              0x00000000
  cardBus CIS pointer =         0x00000000
  sub system vendor ID =        0x174b
  sub system ID =               0x7c25
  expansion ROM base address =  0x00000000
  interrupt line =              0xff
  interrupt pin =               0x01
  min Grant =                   0x08
  max Latency =                 0x00
=> md.l 0x48000000 10
48000000: 00000000 00000000 00000000 00000000    ................
48000010: 00000000 00000000 00000000 00000000    ................
48000020: 00000000 00000000 00000000 00000000    ................
48000030: 41400f88 10000000 00000000 00000000    A at ..............
=> md.l 0x50000000 10
50000000: 00000000 00000000 00000000 00000000    ................
50000010: 00000000 00000000 00000000 00000000    ................
50000020: 00000000 00000000 00000000 00000000    ................
50000030: 41400f88 10000000 00000000 00000000    A at ..............
=> md.l 0x40000000 10
40000000:Bus Fault @ 0x03f95fb8, fixup 0x00000000
Machine check in kernel mode.
Caused by (from msr): regs 03f53b48 Unknown values in msr
NIP: 03F95FB8 XER: 00000000 LR: 03F95E90 REGS: 03f53b48 TRAP: 0200 DAR:
03F53F84
MSR: 00001000 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 00

GPR00: 03F53C38 03F53C38 FFFFBFB3 00000000 03F53B10 00000010 FFFFFFFE
00000007
GPR08: 00000001 00000800 00000000 FFFFFFFF 00000030 FFFFFFFF 03FBA000
04F84000
GPR16: FFF7FFFB FFFFFFFE 3FFFFFFF 00000000 00000010 03F53C40 03F53C40
03F53C40
GPR24: 00000040 00000010 00000004 00000000 40000000 03F53F84 03FBAA4C
03F53C40
Call backtrace:
machine check



-- 
Paul Wujek





More information about the U-Boot mailing list