diff options
| author | Ingo Molnar <mingo@elte.hu> | 2008-06-16 11:17:50 +0200 | 
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2008-06-16 11:17:50 +0200 | 
| commit | 1791a78c0b10fe548bf08a2ed7f84a4ea1385430 (patch) | |
| tree | 3bc3e71a900a364aaaaf28d553ce44e5dc27092b /arch/mips/pci | |
| parent | bf07dc864902b3e788de5ab50dc62d5677da90f2 (diff) | |
| parent | 066519068ad2fbe98c7f45552b1f592903a9c8c8 (diff) | |
Merge branch 'linus' into x86/cleanupstip-x86-cleanups-2008-06-16_09.17_Mon
Diffstat (limited to 'arch/mips/pci')
| -rw-r--r-- | arch/mips/pci/ops-bridge.c | 20 | ||||
| -rw-r--r-- | arch/mips/pci/pci-ip27.c | 8 | 
2 files changed, 26 insertions, 2 deletions
| diff --git a/arch/mips/pci/ops-bridge.c b/arch/mips/pci/ops-bridge.c index 1fa09929cd7a..b46b3e211775 100644 --- a/arch/mips/pci/ops-bridge.c +++ b/arch/mips/pci/ops-bridge.c @@ -14,6 +14,22 @@  #include <asm/sn/sn0/hub.h>  /* + * Most of the IOC3 PCI config register aren't present + * we emulate what is needed for a normal PCI enumeration + */ +static u32 emulate_ioc3_cfg(int where, int size) +{ +	if (size == 1 && where == 0x3d) +		return 0x01; +	else if (size == 2 && where == 0x3c) +		return 0x0100; +	else if (size == 4 && where == 0x3c) +		return 0x00000100; + +	return 0; +} + +/*   * The Bridge ASIC supports both type 0 and type 1 access.  Type 1 is   * not really documented, so right now I can't write code which uses it.   * Therefore we use type 0 accesses for now even though they won't work @@ -64,7 +80,7 @@ oh_my_gawd:  	 * generic PCI code a chance to look at the wrong register.  	 */  	if ((where >= 0x14 && where < 0x40) || (where >= 0x48)) { -		*value = 0; +		*value = emulate_ioc3_cfg(where, size);  		return PCIBIOS_SUCCESSFUL;  	} @@ -127,7 +143,7 @@ oh_my_gawd:  	 * generic PCI code a chance to look at the wrong register.  	 */  	if ((where >= 0x14 && where < 0x40) || (where >= 0x48)) { -		*value = 0; +		*value = emulate_ioc3_cfg(where, size);  		return PCIBIOS_SUCCESSFUL;  	} diff --git a/arch/mips/pci/pci-ip27.c b/arch/mips/pci/pci-ip27.c index bb64828a92fe..a18516925cdd 100644 --- a/arch/mips/pci/pci-ip27.c +++ b/arch/mips/pci/pci-ip27.c @@ -47,6 +47,9 @@ int __cpuinit bridge_probe(nasid_t nasid, int widget_id, int masterwid)  	static int num_bridges = 0;  	bridge_t *bridge;  	int slot; +	extern int pci_probe_only; + +	pci_probe_only = 1;  	printk("a bridge\n"); @@ -100,6 +103,11 @@ int __cpuinit bridge_probe(nasid_t nasid, int widget_id, int masterwid)  	 */  	bridge->b_wid_control |= BRIDGE_CTRL_IO_SWAP |  	                         BRIDGE_CTRL_MEM_SWAP; +#ifdef CONFIG_PAGE_SIZE_4KB +	bridge->b_wid_control &= ~BRIDGE_CTRL_PAGE_SIZE; +#else /* 16kB or larger */ +	bridge->b_wid_control |= BRIDGE_CTRL_PAGE_SIZE; +#endif  	/*  	 * Hmm...  IRIX sets additional bits in the address which | 
