From 722b6213aa06be981c85cfb94ebb746912fdb320 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20Fr=C3=B6schle?= Date: Fri, 8 Nov 2013 13:59:39 +0000 Subject: [PATCH] added interrupt service routine for PCI errors. Fixed XLB macros (contained double undescores for _MBAR) --- include/MCF5475_XLB.h | 22 +++++++++++----------- sources/interrupts.c | 9 ++++++++- sources/pci.c | 2 +- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/include/MCF5475_XLB.h b/include/MCF5475_XLB.h index d995dd2..af25ae7 100644 --- a/include/MCF5475_XLB.h +++ b/include/MCF5475_XLB.h @@ -24,17 +24,17 @@ *********************************************************************/ /* Register read/write macros */ -#define MCF_XLB_XARB_CFG (*(volatile uint32_t*)(&__MBAR[0x240])) -#define MCF_XLB_XARB_VER (*(volatile uint32_t*)(&__MBAR[0x244])) -#define MCF_XLB_XARB_SR (*(volatile uint32_t*)(&__MBAR[0x248])) -#define MCF_XLB_XARB_IMR (*(volatile uint32_t*)(&__MBAR[0x24C])) -#define MCF_XLB_XARB_ADRCAP (*(volatile uint32_t*)(&__MBAR[0x250])) -#define MCF_XLB_XARB_SIGCAP (*(volatile uint32_t*)(&__MBAR[0x254])) -#define MCF_XLB_XARB_ADRTO (*(volatile uint32_t*)(&__MBAR[0x258])) -#define MCF_XLB_XARB_DATTO (*(volatile uint32_t*)(&__MBAR[0x25C])) -#define MCF_XLB_XARB_BUSTO (*(volatile uint32_t*)(&__MBAR[0x260])) -#define MCF_XLB_XARB_PRIEN (*(volatile uint32_t*)(&__MBAR[0x264])) -#define MCF_XLB_XARB_PRI (*(volatile uint32_t*)(&__MBAR[0x268])) +#define MCF_XLB_XARB_CFG (*(volatile uint32_t*)(&_MBAR[0x240])) +#define MCF_XLB_XARB_VER (*(volatile uint32_t*)(&_MBAR[0x244])) +#define MCF_XLB_XARB_SR (*(volatile uint32_t*)(&_MBAR[0x248])) +#define MCF_XLB_XARB_IMR (*(volatile uint32_t*)(&_MBAR[0x24C])) +#define MCF_XLB_XARB_ADRCAP (*(volatile uint32_t*)(&_MBAR[0x250])) +#define MCF_XLB_XARB_SIGCAP (*(volatile uint32_t*)(&_MBAR[0x254])) +#define MCF_XLB_XARB_ADRTO (*(volatile uint32_t*)(&_MBAR[0x258])) +#define MCF_XLB_XARB_DATTO (*(volatile uint32_t*)(&_MBAR[0x25C])) +#define MCF_XLB_XARB_BUSTO (*(volatile uint32_t*)(&_MBAR[0x260])) +#define MCF_XLB_XARB_PRIEN (*(volatile uint32_t*)(&_MBAR[0x264])) +#define MCF_XLB_XARB_PRI (*(volatile uint32_t*)(&_MBAR[0x268])) /* Bit definitions and macros for MCF_XLB_XARB_CFG */ diff --git a/sources/interrupts.c b/sources/interrupts.c index 67137f8..c396810 100644 --- a/sources/interrupts.c +++ b/sources/interrupts.c @@ -23,9 +23,9 @@ */ #include +#include "MCF5475.h" #include "bas_utils.h" #include "interrupts.h" -#include "MCF5475.h" extern uint8_t _rtl_vbr[]; #define VBR ((uint32_t **) &_rtl_vbr[0]) @@ -93,3 +93,10 @@ int register_handler(uint8_t priority, uint8_t intr, void (*func)()) return 0; } + +__attribute__((interrupt)) void pci_arb_interrupt(void) +{ + xprintf("XLBARB slave error interrupt\r\n"); + MCF_XLB_XARB_SR |= ~MCF_XLB_XARB_SR_SEA; +} + diff --git a/sources/pci.c b/sources/pci.c index 4358930..6fc13f9 100644 --- a/sources/pci.c +++ b/sources/pci.c @@ -447,7 +447,7 @@ void init_eport(void) MCF_EPORT_EPPAR_EPPA1(MCF_EPORT_EPPAR_FALLING); MCF_EPORT_EPDDR = 0; /* clear data direction register. All pins as input */ MCF_EPORT_EPFR = 0; /* clear all EPORT interrupt flags */ - MCF_EPORT_EPIER = 0; /* disable all EPORT interrupts (for now) */ + MCF_EPORT_EPIER = 0xfe; /* enable all EPORT interrupts (for now) */ } void init_xlbus_arbiter(void)