#include <universe.h>
-#if (CONFIG_COMMANDS & CFG_CMD_UNIVERSE)
-
#define PCI_VENDOR PCI_VENDOR_ID_TUNDRA
#define PCI_DEVICE PCI_DEVICE_ID_TUNDRA_CA91C042
dev->busdevfn = busdevfn;
pci_read_config_dword(busdevfn, PCI_BASE_ADDRESS_1, &val);
+ if (val & 1) {
+ pci_read_config_dword(busdevfn, PCI_BASE_ADDRESS_0, &val);
+ }
val &= ~0xf;
dev->uregs = (UNIVERSE *)val;
* Arbitration Mode
* DTACK Enable
*/
- writel(0x15060000, &dev->uregs->misc_ctl);
+ writel(0x15040000 | (readl(&dev->uregs->misc_ctl) & 0x00020000), &dev->uregs->misc_ctl);
+
+ if (readl(&dev->uregs->misc_ctl) & 0x00020000) {
+ debug ("System Controller!\n"); /* test-only */
+ } else {
+ debug ("Not System Controller!\n"); /* test-only */
+ }
/*
* Lets turn off interrupts
writel(0x0000, &dev->uregs->lint_map1); /* Map all ints to 0 */
eieio();
+ return 0;
+
break_30:
free(dev);
break_20:
lastError = result;
- return 0;
+ return result;
}
switch (pms & PCI_MS_Mxx) {
case PCI_MS_MEM:
- ctl = 0x00000000;
+ ctl |= 0x00000000;
break;
case PCI_MS_IO:
- ctl = 0x00000001;
+ ctl |= 0x00000001;
break;
case PCI_MS_CONFIG:
- ctl = 0x00000002;
+ ctl |= 0x00000002;
break;
}
switch (pms & PCI_MS_Mxx) {
case PCI_MS_MEM:
- ctl = 0x00000000;
+ ctl |= 0x00000000;
break;
case PCI_MS_IO:
- ctl = 0x00000001;
+ ctl |= 0x00000001;
break;
case PCI_MS_CONFIG:
- ctl = 0x00000002;
+ ctl |= 0x00000002;
break;
}
U_BOOT_CMD(
universe, 8, 1, do_universe,
- "universe- initialize and configure Turndra Universe\n",
+ "initialize and configure Turndra Universe",
"init\n"
" - initialize universe\n"
"universe vme [vme_addr] [pci_addr] [size] [vam] [pms]\n"
" 02 -> D16 Data Width\n"
" 03 -> D32 Data Width\n"
);
-
-#endif /* (CONFIG_COMMANDS & CFG_CMD_UNIVERSE) */