[PATCHv7 08/17] pci: PCIe driver for Marvell Armada 370/XP systems
Arnd Bergmann
arnd at arndb.de
Mon Apr 8 18:14:06 EDT 2013
On Monday 08 April 2013, Thomas Petazzoni wrote:
> Dear Arnd Bergmann,
>
> On Mon, 8 Apr 2013 23:34:12 +0200, Arnd Bergmann wrote:
>
> > > No, I'm assuming PCIBIOS_MIN_IO is always 0. So presumarly, this should
> > > be something like:
> > >
> > > pcie->realio.end = min(PCIBIOS_MIN_IO +
> > > resource_size(&pcie->io),
> > > IO_SPACE_LIMIT);
> > >
> >
> > Normally PCIBIOS_MIN_IO is 0x1000, since the first 4096 ports are reserved
> > for ISA and PCMCIA compatible drivers and should not be assigned to
> > PCI devices. So the first port should get ports 0x1000 to 0xffff, later
> > ones can used the entire 65536 ports e.g. 0x10000 to 0x1ffff.
>
> Then I guess it should work with the code I'm proposing here, no?
>
> Note: this pcie->realio region is global: it will be shared by all PCIe
> interfaces.
I think it's still wrong, unless you guarantee that
resource_start(&pcie->io) is the same as PCIBIOS_MIN_IO.
Why don't you just read the start and end values from the ranges
property? I assume you want to run with io_offset=0, so you really
need
pcie->realio.type = IORESOURCE_IO;
pcie->realio.start = max(PCIBIOS_MIN_IO, range->pci_addr);
pcie->realio.end = max(IO_SPACE_LIMIT, range->pci_addr + range->size);
Arnd
More information about the linux-arm-kernel
mailing list