Calculate PCI BARMASK11 register value dynamicly, signed off by Ithamar R. Adema
SVN-Revision: 20262
This commit is contained in:
parent
431808b5bf
commit
afb701b0c4
1 changed files with 12 additions and 1 deletions
|
@ -89,6 +89,17 @@ pcibios_plat_dev_init(struct pci_dev *dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static u32 calc_bar11mask(void)
|
||||
{
|
||||
u32 mem, bar11mask;
|
||||
|
||||
/* BAR11MASK value depends on available memory on system. */
|
||||
mem = num_physpages * PAGE_SIZE;
|
||||
bar11mask = (0x0ffffff0 & ~((1 << (fls(mem) -1)) -1)) | 8;
|
||||
|
||||
return bar11mask;
|
||||
}
|
||||
|
||||
static void __init
|
||||
ifxmips_pci_startup(void)
|
||||
{
|
||||
|
@ -138,7 +149,7 @@ ifxmips_pci_startup(void)
|
|||
ifxmips_w32(0x19800000, PCI_CR_FCI_ADDR_MAP6);
|
||||
ifxmips_w32(0x19c00000, PCI_CR_FCI_ADDR_MAP7);
|
||||
ifxmips_w32(0x1ae00000, PCI_CR_FCI_ADDR_MAP11hg);
|
||||
ifxmips_w32(0x0e000008, PCI_CR_BAR11MASK);
|
||||
ifxmips_w32(calc_bar11mask(), PCI_CR_BAR11MASK);
|
||||
ifxmips_w32(0, PCI_CR_PCI_ADDR_MAP11);
|
||||
ifxmips_w32(0, PCI_CS_BASE_ADDR1);
|
||||
#ifdef CONFIG_SWAP_IO_SPACE
|
||||
|
|
Loading…
Reference in a new issue