From cc2fcc1655fb5e0b6d9faefa2e1c8f7c0f4376fe Mon Sep 17 00:00:00 2001 From: Eric Norum Date: Thu, 20 Oct 2005 18:38:26 +0000 Subject: Numerous changes and cleanups to support MVME2100. --- c/src/ChangeLog | 4 ++ c/src/lib/libbsp/powerpc/ChangeLog | 6 +++ .../lib/libbsp/powerpc/motorola_powerpc/ChangeLog | 4 ++ .../libbsp/powerpc/motorola_powerpc/include/bsp.h | 6 +-- .../powerpc/shared/pci/detect_raven_bridge.c | 52 ++++++++++++++++------ c/src/lib/libbsp/powerpc/shared/startup/bspstart.c | 2 +- c/src/lib/libbsp/powerpc/shared/vme/VMEConfig.h | 6 +++ c/src/lib/libbsp/shared/ChangeLog | 4 ++ c/src/lib/libbsp/shared/vmeUniverse/vmeUniverse.c | 2 +- c/src/libchip/network/dec21140.c | 2 +- 10 files changed, 68 insertions(+), 20 deletions(-) diff --git a/c/src/ChangeLog b/c/src/ChangeLog index f3dc705358..90216b27cf 100644 --- a/c/src/ChangeLog +++ b/c/src/ChangeLog @@ -1,3 +1,7 @@ +2005-10-20 Eric Norum + + * libchip/network/dec21140.c: Clean up PCI mapping + 2005-09-19 Ralf Corsepius * libnetworking/pppd/Makefile.am: Use preinstall.am. diff --git a/c/src/lib/libbsp/powerpc/ChangeLog b/c/src/lib/libbsp/powerpc/ChangeLog index de67ff5a2c..4d1af1b2d8 100644 --- a/c/src/lib/libbsp/powerpc/ChangeLog +++ b/c/src/lib/libbsp/powerpc/ChangeLog @@ -1,3 +1,9 @@ +2005-10-20 Eric Norum + + shared/pci/detect_raven_bridge.c: Support MVME2100 + shared/startup/bspstart.c: Support MVME2100 + shared/vme/VMEConfig.h: Support MVME2100 + 2005-10-17 Ralf Corsepius * Makefile.am: Merge-in shared/Makefile.am. diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/ChangeLog b/c/src/lib/libbsp/powerpc/motorola_powerpc/ChangeLog index 39307ce2aa..ff110a685b 100644 --- a/c/src/lib/libbsp/powerpc/motorola_powerpc/ChangeLog +++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/ChangeLog @@ -1,3 +1,7 @@ +2005-10-20 Eric Norum + + * include/bsp.h: Support MVME2100. + 2005-05-26 Ralf Corsepius * include/bsp.h: New header guard. diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/include/bsp.h b/c/src/lib/libbsp/powerpc/motorola_powerpc/include/bsp.h index 6e189f08be..a1d73541e2 100644 --- a/c/src/lib/libbsp/powerpc/motorola_powerpc/include/bsp.h +++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/include/bsp.h @@ -38,8 +38,8 @@ #define _ISA_MEM_BASE CHRP_ISA_MEM_BASE /* address of our ram on the PCI bus */ #define PCI_DRAM_OFFSET CHRP_PCI_DRAM_OFFSET -#define PCI_MEM_BASE 0x80000000 -#define PCI_MEM_BASE_ADJUSTMENT 0 +#define PCI_MEM_BASE 0 +#define PCI_MEM_WIN0 0x80000000 #else #define _IO_BASE PREP_ISA_IO_BASE @@ -48,7 +48,7 @@ #define PCI_DRAM_OFFSET PREP_PCI_DRAM_OFFSET /* offset of pci memory as seen from the CPU */ #define PCI_MEM_BASE PREP_ISA_MEM_BASE -#define PCI_MEM_BASE_ADJUSTMENT PREP_ISA_MEM_BASE +#define PCI_MEM_WIN0 0 #endif diff --git a/c/src/lib/libbsp/powerpc/shared/pci/detect_raven_bridge.c b/c/src/lib/libbsp/powerpc/shared/pci/detect_raven_bridge.c index aa5da28060..1f02d4d2f6 100644 --- a/c/src/lib/libbsp/powerpc/shared/pci/detect_raven_bridge.c +++ b/c/src/lib/libbsp/powerpc/shared/pci/detect_raven_bridge.c @@ -32,26 +32,50 @@ extern unsigned int EUMBBAR; extern const pci_config_access_functions pci_direct_functions; extern const pci_config_access_functions pci_indirect_functions; +#define PCI_ERR_BITS 0xf900 +#define PCI_STATUS_OK(x) (!((x)&PCI_ERR_BITS)) + +/* For now, just clear errors in the PCI status reg. + * + * Returns: (for diagnostic purposes) + * original settings (i.e. before applying the clearing + * sequence) or the error bits or 0 if there were no errors. + * + */ + unsigned long _BSP_clear_hostbridge_errors(int enableMCP, int quiet) { -unsigned merst; +unsigned long rval; +unsigned short pcistat; +int count; - merst = in_be32(RAVEN_MPIC_MERST); - /* write back value to clear status */ - out_be32(RAVEN_MPIC_MERST, merst); + if (enableMCP) + return -1; /* exceptions not supported / MCP not wired */ - if (enableMCP) { - if (!quiet) - printk("Enabling MCP generation on hostbridge errors\n"); - out_be32(RAVEN_MPIC_MEREN, MEREN_VAL); - } else { - out_be32(RAVEN_MPIC_MEREN, 0); - if ( !quiet && enableMCP ) { - printk("leaving MCP interrupt disabled\n"); - } + /* read error status for info return */ + pci_read_config_word(0,0,0,PCI_STATUS,&pcistat); + rval = pcistat; + + count=10; + do { + /* clear error reporting registers */ + + /* clear PCI status register */ + pci_write_config_word(0,0,0,PCI_STATUS, PCI_ERR_BITS); + + /* read new status */ + pci_read_config_word(0,0,0,PCI_STATUS, &pcistat); + + } while ( ! PCI_STATUS_OK(pcistat) && count-- ); + + if ( !PCI_STATUS_OK(rval) && !quiet) { + printk("Cleared PCI errors: pci_stat was 0x%04x\n", rval); + } + if ( !PCI_STATUS_OK(pcistat) ) { + printk("Unable to clear PCI errors: still 0x%04x after 10 attempts\n", pcistat); } - return (merst & 0xffff); + return rval & PCI_ERR_BITS; } void detect_host_bridge() diff --git a/c/src/lib/libbsp/powerpc/shared/startup/bspstart.c b/c/src/lib/libbsp/powerpc/shared/startup/bspstart.c index e0b87d6825..73b02117b7 100644 --- a/c/src/lib/libbsp/powerpc/shared/startup/bspstart.c +++ b/c/src/lib/libbsp/powerpc/shared/startup/bspstart.c @@ -333,7 +333,7 @@ void bsp_start( void ) * * T. Straumann: give more PCI address space */ - setdbat(2, PCI_MEM_BASE, PCI_MEM_BASE, 0x10000000, IO_PAGE); + setdbat(2, PCI_MEM_BASE+PCI_MEM_WIN0, PCI_MEM_BASE+PCI_MEM_WIN0, 0x10000000, IO_PAGE); /* * Must have acces to open pic PCI ACK registers provided by the RAVEN diff --git a/c/src/lib/libbsp/powerpc/shared/vme/VMEConfig.h b/c/src/lib/libbsp/powerpc/shared/vme/VMEConfig.h index 482e0bfc39..6f89457273 100644 --- a/c/src/lib/libbsp/powerpc/shared/vme/VMEConfig.h +++ b/c/src/lib/libbsp/powerpc/shared/vme/VMEConfig.h @@ -11,9 +11,15 @@ * hardcoded window lengths that match this * layout: */ +#if defined(mvme2100) +#define _VME_A32_WIN0_ON_PCI 0x90000000 +#define _VME_A24_ON_PCI 0x9f000000 +#define _VME_A16_ON_PCI 0x9fff0000 +#else #define _VME_A32_WIN0_ON_PCI 0x10000000 #define _VME_A24_ON_PCI 0x1f000000 #define _VME_A16_ON_PCI 0x1fff0000 +#endif /* start of the A32 window on the VME bus * TODO: this should perhaps be a configuration option diff --git a/c/src/lib/libbsp/shared/ChangeLog b/c/src/lib/libbsp/shared/ChangeLog index 676e4ae40f..81a770a7ad 100644 --- a/c/src/lib/libbsp/shared/ChangeLog +++ b/c/src/lib/libbsp/shared/ChangeLog @@ -1,3 +1,7 @@ +2005-10-20 Eric Norum + + vmeUniverse/vmeUniverse.c: Support MVME2100 + 2005-09-02 Joel Sherrill PR 577/bsps diff --git a/c/src/lib/libbsp/shared/vmeUniverse/vmeUniverse.c b/c/src/lib/libbsp/shared/vmeUniverse/vmeUniverse.c index 8e04a12514..aa4dea6460 100644 --- a/c/src/lib/libbsp/shared/vmeUniverse/vmeUniverse.c +++ b/c/src/lib/libbsp/shared/vmeUniverse/vmeUniverse.c @@ -70,7 +70,7 @@ typedef unsigned int pci_ulong; #define PCI_TO_LOCAL_ADDR(memaddr) \ - ((pci_ulong)(memaddr) + PCI_MEM_BASE_ADJUSTMENT) + ((pci_ulong)(memaddr) + PCI_MEM_BASE) #elif defined(__vxworks) typedef unsigned long pci_ulong; diff --git a/c/src/libchip/network/dec21140.c b/c/src/libchip/network/dec21140.c index c67ce17fec..2a904fa64b 100644 --- a/c/src/libchip/network/dec21140.c +++ b/c/src/libchip/network/dec21140.c @@ -1118,7 +1118,7 @@ rtems_dec21140_driver_attach (struct rtems_bsdnet_ifconfig *config, int attach) &lvalue); tmp = (unsigned int)(lvalue & (unsigned int)(~MEM_MASK)) - + (unsigned int)PCI_MEM_BASE_ADJUSTMENT; + + (unsigned int)PCI_MEM_BASE; sc->base = (unsigned int *)(tmp); -- cgit v1.2.3