Re: PCI bus enumeration differences between Geode and ARM

From: Ten (anonymous_at_tentechnologies.com)
Date: 05/18/04


Date: Tue, 18 May 2004 17:08:48 -0400

K.S.,

Thanks for the information. NoConfig=1 in my plarform. I found this a few
days ago but was not eager to change it because PCIConfig.c in my platform
hard codes values to some of the PCI devices (mem and IO). I thought this
might break the whole platform so I decided to reseach the problem a little
more before trying the change.

I'll give the change a try now that I have collected some more information.

Much thanks!

Nick.

"K. S. Huang" <ks_huang@AlphaNetworks.com_remove.this> wrote in message
news:%23EpWFiJPEHA.268@TK2MSFTNGP11.phx.gbl...
> PCI-based device need to be configured and dispatch rsources before they
can
> be used.
> On most x86 system, device emunration and resource dispatch is done by the
> BIOS.
> But there is no BIOS in ARM-based system, so the resource dispatch will be
> handled by the PCIBUS.DLL ot EBoot
> if the EBoot dose not dispatch the resource, it is resanable that in
OEMInit
> will get nothing.
>
> Event after booting up, the PCIbus.dll might not do the resource
dispatching
> if the
>
> [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCI]
> "NoConfig"=dword:1
>
> is setting to one, to enable resource dispatching by PCIBUS.DLL
> you 'll need to set the
> [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCI]
> "NoConfig"=dword:0
>
> And there might be another possbility, even the PCIBUS.DLL is trying to
> dispatch the resource
> but the
>
> MemBase, MemLen, IoBase and IoLen in
> [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCI]
> dose not setting properly, the PCIBUS.DLL will think that there is NOT
> enough resource, so that the dispatching will still be given up!
>
>
> "Ten" <anonymous@tentechnologies.com> ¼¶¼g©ó¶l¥ó·s»D
> :#n$RHdFPEHA.3328@TK2MSFTNGP09.phx.gbl...
> > Hi,
> >
> > I have a Geode based system + a custom PCI device that works like a
champ.
> > I'm now creating a new platform for an ARM based SBC. My PCI driver
> > compiles and loads on the ARM. During XXX_Init I'm using
> > DDKReg_GetWindowInfo to obtain the Memory and IO maps for the PCI
device.
> > Under the Geode, I get valid IO and Memory windows. On the ARM, I get
> empty
> > structures returned.
> >
> > I noticed that my command register is 0. On the Geode it contains 7.
Am
> I
> > supposed to write this value from the driver (in the call defined by
> > ConfigEntry, similar to the sample in gdcfg.c) or is this supposed to be
> > written by the bus enumerator? If me, why does the bus enumerator not
> > handle my device? Is there another way to configure the device?
> >
> > Here's the dump of PCI Enum on my ARM platform. My PCI device is last
in
> > the list, 0/18/0.
> >
> > Bus/Device/Function = 0/1/0, Host / PCI Bridge
> > VendorID = 0x1283, DeviceID = 0x8152, Command = 0x0006, Status =
0x2200
> > RevisionID = 0x20, ProgIf = 0x00, SubClass = 0x00, BaseClass = 0x06
> > CacheLineSize = 0x00, LatencyTimer = 0x00, HeaderType = 0x80, BIST =
> 0x00
> > BaseAddresses:
> > 0xA0000008 0xBCF00001 0x00000000 0x00000000 0x00000000
0x00000000
> > CIS = 0x00000000, SubVendorID = 0x0000, SubSystemID = 0x0000
> > ROMBaseAddress = 0x00000000
> > InterruptLine = 0x00, InterruptPin = 0x00, MinGrant = 0x00, MaxLatency
=
> > 0x00
> >
> > Bus/Device/Function = 0/15/0, Ethernet Network Controller
> > VendorID = 0x10EC, DeviceID = 0x8139, Command = 0x0007, Status =
0x0290
> > RevisionID = 0x10, ProgIf = 0x00, SubClass = 0x00, BaseClass = 0x02
> > CacheLineSize = 0x00, LatencyTimer = 0x00, HeaderType = 0x00, BIST =
> 0x00
> > BaseAddresses:
> > 0xBCE13101 0xB9001000 0x00000000 0x00000000 0x00000000
0x00000000
> > CIS = 0x00000000, SubVendorID = 0x10EC, SubSystemID = 0x8139
> > ROMBaseAddress = 0x00000000
> > InterruptLine = 0x24, InterruptPin = 0x01, MinGrant = 0x20, MaxLatency
=
> > 0x40
> >
> > Bus/Device/Function = 0/16/0, Ethernet Network Controller
> > VendorID = 0x10EC, DeviceID = 0x8139, Command = 0x0007, Status =
0x0290
> > RevisionID = 0x10, ProgIf = 0x00, SubClass = 0x00, BaseClass = 0x02
> > CacheLineSize = 0x00, LatencyTimer = 0x00, HeaderType = 0x00, BIST =
> 0x00
> > BaseAddresses:
> > 0xBCE13001 0xB9000000 0x00000000 0x00000000 0x00000000
0x00000000
> > CIS = 0x00000000, SubVendorID = 0x10EC, SubSystemID = 0x8139
> > ROMBaseAddress = 0x00000000
> > InterruptLine = 0x22, InterruptPin = 0x01, MinGrant = 0x20, MaxLatency
=
> > 0x40
> >
> > Bus/Device/Function = 0/18/0, Other Bridge
> > VendorID = 0x10B5, DeviceID = 0x9054, Command = 0x0000, Status =
0x0290
> > RevisionID = 0x0C, ProgIf = 0x00, SubClass = 0x80, BaseClass = 0x06
> > CacheLineSize = 0x00, LatencyTimer = 0x00, HeaderType = 0x00, BIST =
> 0x00
> > BaseAddresses:
> > 0x00000000 0x00000001 0x00000000 0x00000000 0x00000000
0x00000000
> > CIS = 0x00000000, SubVendorID = 0x10B5, SubSystemID = 0x9054
> > ROMBaseAddress = 0x00000000
> > InterruptLine = 0x00, InterruptPin = 0x01, MinGrant = 0x00, MaxLatency
=
> > 0x00
> >
> >
> > Thanks!
> > Nick.
> >
> >
> >
>
>



Relevant Pages

  • Re: PCI bus enumeration differences between Geode and ARM
    ... PCIBUS.DLL to dispatch resource again for those device, ... this skill is generally used in the device that have a PCI bus, ... > hard codes values to some of the PCI devices. ...
    (microsoft.public.windowsce.platbuilder)
  • Re: Silly URL...
    ... Note that while an URL can refer to a local File.. ... - A File cannot refer to a resource on an http site, or ftp, or.. ... But how many times have you seen code similar to this? ... ...use of File's can easily be made 'platform specific', ...
    (comp.lang.java.programmer)
  • Re: The problems in comp.lang.c
    ... and redirect the poster to an appropriate resource. ... platform specific solutions for one of the most commonly available ... because of topicality concerns. ...
    (comp.lang.c)
  • Re: [PATCH] Custom IORESOURCE Class
    ... >> useful for most platform data. ... I also need to pass a fractional divider clk id. ... resource table seemed appropriate because the base addresses and the ... send the line "unsubscribe linux-kernel" in ...
    (Linux-Kernel)
  • Re: Separate resource dll for PPC and Smartphone
    ... resource dll for each language with a separate rc file for the platform ... in the given resource dll project. ... automatically depending on the current configuration (i.e. Smartphone ...
    (microsoft.public.windowsce.embedded.vc)