[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [pci] IO Mapping Trouble



The size of each image was definitely too large.
 
I made the recommended modifications and everything seems to be working as it should.  I am now able to create several IO space mappings and read and write to them from Linux.  For verification purposes I am communicating with a UART16550 core (from OpenCores) via IO reads and writes.
 
Thank you very much for the help.
 
----- Original Message -----
Sent: Friday, September 13, 2002 1:17 AM
Subject: Re: [pci] IO Mapping Trouble

Hi!
 
I would guess, that I/O image is too large. As you probably know, PC based computers have separate I/O space, whose size is only 64KB. In CRT application, the minimum image size is 16MB (to save resources).
What you have to do is:
Set PCI_NUM_OF_DEC_ADDR_LINES 20 in pci_user_constants.v.
This will give you a minimum image size of 4KB.
Set PCI_AM2 20'hFFFF_F.
 
This should help.
You also have to be careful about memory mapped images here.
Set PCI_AM0 20'hFFFF_F also.
Set PCI_AM1 to the value, that will represent the size of an image you want.
That would be:
20'hFFFF_F for 4KB
20'hFFFF_E for 8KB
20'hFFFF_C for 16KB
.
.
20'hFFF0_0 for 1MB
20'hFFE0_0 for 2MB
etc..
 
Hope this works!
Let me know, because we haven't been testing I/O accesses in hardware yet!
 
Regards,
Miha Dolenc
----- Original Message -----
Sent: Thursday, September 12, 2002 8:09 PM
Subject: [pci] IO Mapping Trouble

I have been successfully using the OpenCore PCI core in a Spartan-2 200k part.  I have been able to access configuration space directly and through the memory mapped image, I also am able to access a memory mapped image.
 
My only problem comes in when I try to add an additional PCI image that uses an IO mapping, instead of a Memory mapping.
 
I get an error message at boot time saying:
 
PCI I/O Port Conflict: Bus 00, Device 0F, Function 00
 
I press escape to continue booting into Linux.  Once the machine has finished booting, the results of lspci -v are:
 
00:0f.0 Bridge: Unknown device 2321:0001 (rev 01)
 Flags: medium devsel, IRQ 9
 Memory at fe000000 (32-bit, non-prefetchable) [disabled] [size=16M]
 Memory at f7000000 (32-bit, non-prefetchable) [disabled] [size=16M]
 I/O ports at <unassigned> [disabled]
 
When I don't include the IO space image, region 0 and region 1 are fully functional.
 
The changes that I make in pci_user_constants.v over the default crt application version are:
 
`define PCI_IMAGE2
`define PCI_BA2_MEM_IO 1'b1
 
Information and/or suggestions are greatly appreciated.