Calling PCI Autoconfig again

Kumar Gala galak at kernel.crashing.org
Wed Mar 8 03:26:30 EST 2006


On Mar 7, 2006, at 8:17 AM, Wyse, Chris wrote:

> Hi,
>
> This code will do the rescan of the PCI that we need for the FPGA.
> However, it currently only supports a single execution after the FPGA
> gets loaded.  Additional calls will continue to add FPGA devices to  
> the
> PCI device list data structure.  I'm going to make some changes to  
> it to
> handle multiple calls and to support multiple device ids.  I'm  
> expecting
> it to take a day or two, but I'll make an initial cut at it today that
> will let us load the Spartan FPGA (only once).  This driver will be
> loaded when the kernel boots, so I believe that we'll just need to  
> make
> a call into it (we won't have to dynamically load it like the phob
> driver).

I'm dealing with this exact same situation and having a discussion on  
lkml regarding the proper way to do this.  In your case, do you care  
what addresses the FPGA is assigned at?

http://marc.theaimsgroup.com/?l=linux-kernel&m=114140791428032&w=2

> Michael,
>
> For the FPGA loader, you should load the FPGA, then make a call to
> pci_rescan_bus0() (I'm renaming check_hw() to pci_rescan_bus0()).   
> Next,
> you need to do a pci_find_device() to detect the newly loaded  
> FPGA.  If
> the pci_find_device() fails, assume that the FPGA load has not
> completed, so delay for some time frame (100 ms??), then rescan again.
> If still not found, rescan up to MAX_PCI_RESCANS (probably set it  
> to 3)
> times, then return an error that the FPGA load failed.

Do you not know when the FPGA load is done?  I assume its under  
software control so the "fpga loader" should just call the PCI setup  
code once it has completed successfully.

- kumar




More information about the Linuxppc-embedded mailing list