mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-12-05 15:15:44 +00:00
2007-11-30 Joel Sherrill <joel.sherrill@OARcorp.com>
* irq/GT64260Int.c, network/if_100MHz/Makefile.am, network/if_1GHz/Makefile.am: Removed.
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
2007-11-30 Joel Sherrill <joel.sherrill@OARcorp.com>
|
||||||
|
|
||||||
|
* irq/GT64260Int.c, network/if_100MHz/Makefile.am,
|
||||||
|
network/if_1GHz/Makefile.am: Removed.
|
||||||
|
|
||||||
2007-09-20 Kate Feng <feng1@bnl.gov>
|
2007-09-20 Kate Feng <feng1@bnl.gov>
|
||||||
|
|
||||||
* network/if_100MHz/GT64260eth.c: Add else.
|
* network/if_100MHz/GT64260eth.c: Add else.
|
||||||
|
|||||||
@@ -1,250 +0,0 @@
|
|||||||
/* GT64260Int.c - GT64260 Interrupt controller support functions
|
|
||||||
*
|
|
||||||
* Copyright 2003, 2004, Brookhaven National Laboratory and
|
|
||||||
* Shuchen Kate Feng <feng1@bnl.gov>
|
|
||||||
*
|
|
||||||
* The license and distribution terms for this file may be
|
|
||||||
* found in the file LICENSE in this distribution.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#include <libcpu/io.h>
|
|
||||||
#include <rtems/bspIo.h> /* for printk */
|
|
||||||
|
|
||||||
#include "bsp/gtreg.h"
|
|
||||||
#include "bsp/irq.h"
|
|
||||||
|
|
||||||
extern rtems_irq_prio BSPirqPrioTable[BSP_MAIN_IRQ_NUMBER];
|
|
||||||
|
|
||||||
rtems_GTirq_masks GT_GPPirq_cache=0;
|
|
||||||
rtems_GTirq_masks GT_MAINirqLO_cache=0, GT_MAINirqHI_cache=0;
|
|
||||||
|
|
||||||
void BSP_GT64260INT_init()
|
|
||||||
{
|
|
||||||
|
|
||||||
/* Page 401, Table 598:
|
|
||||||
* Comm Unit Arbiter Control register :
|
|
||||||
* bit 10:GPP interrupts as level sensitive(1) or edge sensitive(0).
|
|
||||||
* We set the GPP interrupts to be edge sensitive.
|
|
||||||
* MOTload default is set as level sensitive(1).
|
|
||||||
*/
|
|
||||||
outl((inl(GT_CommUnitArb_Ctrl)& (~(1<<10))), GT_CommUnitArb_Ctrl);
|
|
||||||
|
|
||||||
/* Initialize the interrupt related GT64260 registers */
|
|
||||||
outl( 0, GT_CPU_INT_MASK_LO);
|
|
||||||
outl( 0, GT_CPU_INT_MASK_HI);
|
|
||||||
|
|
||||||
outl( 0, GT_PCI0_INT_MASK_LO);
|
|
||||||
outl( 0, GT_PCI0_INT_MASK_HI);
|
|
||||||
|
|
||||||
|
|
||||||
outl( 0, GT_PCI1_INT_MASK_LO);
|
|
||||||
outl( 0, GT_PCI1_INT_MASK_HI);
|
|
||||||
|
|
||||||
outl( 0, GT_CPU_INT0_MASK);
|
|
||||||
outl( 0, GT_CPU_INT1_MASK);
|
|
||||||
outl( 0, GT_CPU_INT2_MASK);
|
|
||||||
outl( 0, GT_CPU_INT3_MASK);
|
|
||||||
outl(0, GT_GPP_Interrupt_Mask);
|
|
||||||
outl( 0, GT_GPP_Value);
|
|
||||||
outl( 0, GT_GPP_Interrupt_Cause);
|
|
||||||
#if 0
|
|
||||||
printk("watchdog timer 0x%x\n",inl(0xb410));
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
static void UpdateMainIrqTbl(int irqNum)
|
|
||||||
{
|
|
||||||
int i=0, j, shifted=0;
|
|
||||||
|
|
||||||
#ifdef SHOW_MORE_INIT_SETTINGS
|
|
||||||
unsigned long val2, val1;
|
|
||||||
|
|
||||||
val2 = (MainIrqInTbl>>32) & 0xffffffff;
|
|
||||||
val1 = MainIrqInTbl&0xffffffff;
|
|
||||||
printk("irqNum %d, MainIrqInTbl 0x%x%x\n", irqNum, val2, val1);
|
|
||||||
printMainIrqTbl();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* If entry not in table*/
|
|
||||||
if ( !((unsigned long long)(1LLU << irqNum) & MainIrqInTbl)) {
|
|
||||||
while ( mainIrqTbl[i]!=-1) {
|
|
||||||
if (BSPirqPrioTable[irqNum]>BSPirqPrioTable[mainIrqTbl[i]]) {
|
|
||||||
/* all other lower priority entries shifted right */
|
|
||||||
for (j=MainIrqTblPtr;j>i; j--)
|
|
||||||
mainIrqTbl[j]=mainIrqTbl[j-1];
|
|
||||||
mainIrqTbl[i]=irqNum;
|
|
||||||
shifted=1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
if (!shifted) mainIrqTbl[MainIrqTblPtr]=irqNum;
|
|
||||||
MainIrqInTbl |= (unsigned long long)(1LLU << irqNum);
|
|
||||||
MainIrqTblPtr++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void CleanMainIrqTbl(int irqNum)
|
|
||||||
{
|
|
||||||
int i, j;
|
|
||||||
|
|
||||||
if (((1LLU << irqNum) & MainIrqInTbl)) { /* If entry in table*/
|
|
||||||
for (i=0; i<64; i++) {
|
|
||||||
if (mainIrqTbl[i]==irqNum) {/*remove it from the entry */
|
|
||||||
/* all other lower priority entries shifted left */
|
|
||||||
for (j=i;j<MainIrqTblPtr; j++)
|
|
||||||
mainIrqTbl[j]=mainIrqTbl[j+1];
|
|
||||||
MainIrqInTbl &= ~(1LLU << irqNum);
|
|
||||||
MainIrqTblPtr--;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
*
|
|
||||||
* BSP_enable_main_irq enables the corresponding bit in the low or high
|
|
||||||
* "main cause cpu int mask register".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
void BSP_enable_main_irq(const rtems_irq_number irqNum)
|
|
||||||
{
|
|
||||||
unsigned bitNum;
|
|
||||||
rtems_interrupt_level level;
|
|
||||||
|
|
||||||
bitNum = ((int)irqNum) - BSP_MICL_IRQ_LOWEST_OFFSET;
|
|
||||||
|
|
||||||
rtems_interrupt_disable(level);
|
|
||||||
|
|
||||||
#if DynamicIrqTbl
|
|
||||||
UpdateMainIrqTbl((int) irqNum);
|
|
||||||
#endif
|
|
||||||
if (bitNum <32) {
|
|
||||||
GT_MAINirqLO_cache |= (1 << bitNum);
|
|
||||||
outl(GT_MAINirqLO_cache, GT_CPU_INT_MASK_LO);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
bitNum-=32;
|
|
||||||
GT_MAINirqHI_cache |= (1 << bitNum);
|
|
||||||
outl(GT_MAINirqHI_cache, GT_CPU_INT_MASK_HI);
|
|
||||||
}
|
|
||||||
rtems_interrupt_enable(level);
|
|
||||||
}
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
*
|
|
||||||
* BSP_disable_main_irq disables the corresponding bit in the low or high
|
|
||||||
* main cause cpu int mask register.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
void BSP_disable_main_irq(const rtems_irq_number irqNum)
|
|
||||||
{
|
|
||||||
unsigned bitNum;
|
|
||||||
rtems_interrupt_level level;
|
|
||||||
|
|
||||||
bitNum = ((int)irqNum) - BSP_MICL_IRQ_LOWEST_OFFSET;
|
|
||||||
|
|
||||||
rtems_interrupt_disable(level);
|
|
||||||
|
|
||||||
#if DynamicIrqTbl
|
|
||||||
CleanMainIrqTbl((int) irqNum);
|
|
||||||
#endif
|
|
||||||
if (bitNum <32) {
|
|
||||||
GT_MAINirqLO_cache &= ~(1 << bitNum);
|
|
||||||
outl(GT_MAINirqLO_cache, GT_CPU_INT_MASK_LO);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
bitNum-=32;
|
|
||||||
GT_MAINirqHI_cache &= ~(1 << bitNum);
|
|
||||||
outl(GT_MAINirqHI_cache, GT_CPU_INT_MASK_HI);
|
|
||||||
}
|
|
||||||
rtems_interrupt_enable(level);
|
|
||||||
}
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
*
|
|
||||||
* BSP_enable_gpp_irq enables the corresponding bit in the GPP interrupt
|
|
||||||
* mask register. The interrupt level is numerically equivalent to the
|
|
||||||
* corresponding interrupt vector.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
void BSP_enable_gpp_irq(const rtems_irq_number irqNum)
|
|
||||||
{
|
|
||||||
unsigned bitNum;
|
|
||||||
unsigned int mask;
|
|
||||||
int group;
|
|
||||||
int bit;
|
|
||||||
rtems_interrupt_level level;
|
|
||||||
|
|
||||||
bitNum = ((int)irqNum) - BSP_GPP_IRQ_LOWEST_OFFSET;
|
|
||||||
|
|
||||||
rtems_interrupt_disable(level);
|
|
||||||
|
|
||||||
#if DynamicIrqTbl
|
|
||||||
group = bitNum/8;
|
|
||||||
if ( !GPPinMainIrqTbl[group]) /* avoid duplicated entry */
|
|
||||||
UpdateMainIrqTbl(BSP_MAIN_GPP7_0_IRQ+group);
|
|
||||||
bit = bitNum%8;
|
|
||||||
GPPinMainIrqTbl[group] |= (1<<bit);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
mask = 1 << bitNum;
|
|
||||||
GT_GPPirq_cache |= mask;
|
|
||||||
outl(GT_GPPirq_cache, GT_GPP_Interrupt_Mask);
|
|
||||||
#ifdef SHOW_MORE_INIT_SETTINGS
|
|
||||||
printk("enable irqNum %d, bitnum %d \n", irqNum, bitNum);
|
|
||||||
printk("GPP mask %d \n", inl(GT_GPP_Interrupt_Mask));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
rtems_interrupt_enable(level);
|
|
||||||
}
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
*
|
|
||||||
* BSP_disable_gpp_irq disables the corresponding bit in the General Purpose
|
|
||||||
* Port Interrupt. The interrupt level is numerically equivalent to the
|
|
||||||
* corresponding interrupt vector.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
void BSP_disable_gpp_irq(const rtems_irq_number irqNum)
|
|
||||||
{
|
|
||||||
unsigned bitNum;
|
|
||||||
unsigned int mask;
|
|
||||||
int group;
|
|
||||||
int bit;
|
|
||||||
rtems_interrupt_level level;
|
|
||||||
|
|
||||||
|
|
||||||
bitNum = ((int)irqNum) - BSP_GPP_IRQ_LOWEST_OFFSET;
|
|
||||||
|
|
||||||
rtems_interrupt_disable(level);
|
|
||||||
#if DynamicIrqTbl
|
|
||||||
group = bitNum/8;
|
|
||||||
bit = bitNum%8;
|
|
||||||
GPPinMainIrqTbl[group] &= ~(1<<bit);
|
|
||||||
if ( !GPPinMainIrqTbl[group])/* If it's really the last one */
|
|
||||||
CleanMainIrqTbl(BSP_MAIN_GPP7_0_IRQ+group);
|
|
||||||
#endif
|
|
||||||
#ifdef SHOW_MORE_INIT_SETTINGS
|
|
||||||
printk("disable irqNum %d, bitnum %d \n", irqNum, bitNum);
|
|
||||||
#endif
|
|
||||||
mask = ~ (1 << bitNum);
|
|
||||||
GT_GPPirq_cache &= mask;
|
|
||||||
outl(GT_GPPirq_cache, GT_GPP_Interrupt_Mask);
|
|
||||||
rtems_interrupt_enable(level);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Only print ten entries for now */
|
|
||||||
void BSP_printMainIrqTbl()
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
printk("mainIrqTbl[10]={");
|
|
||||||
for (i=0; i<10; i++)
|
|
||||||
printk("%d,", mainIrqTbl[i]);
|
|
||||||
printk("}\n");
|
|
||||||
printk("GPPinMainIrqTbl 0x%x 0x%x 0x%x 0x%x\n",
|
|
||||||
GPPinMainIrqTbl[0], GPPinMainIrqTbl[1],
|
|
||||||
GPPinMainIrqTbl[2], GPPinMainIrqTbl[3]);
|
|
||||||
}
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
##
|
|
||||||
## $Id$
|
|
||||||
##
|
|
||||||
|
|
||||||
VPATH = @srcdir@:
|
|
||||||
|
|
||||||
INCLUDES = -I @srcdir@/../GT64260
|
|
||||||
|
|
||||||
C_FILES = GT64260eth.c
|
|
||||||
include_bspdir = $(includedir)/bsp
|
|
||||||
include_bsp_HEADERS = GT64260eth.h GT64260ethreg.h
|
|
||||||
|
|
||||||
H_FILES = GT64260eth.h GT64260ethreg.h
|
|
||||||
|
|
||||||
C_O_FILES = $(C_FILES:%.c=$(ARCH)/%.$(OBJEXT))
|
|
||||||
|
|
||||||
EXTRA_DIST = GT64260eth.c
|
|
||||||
|
|
||||||
OBJS = $(C_O_FILES)
|
|
||||||
|
|
||||||
include $(top_srcdir)/../../../../../../automake/compile.am
|
|
||||||
include $(top_srcdir)/../../../../../../automake/lib.am
|
|
||||||
|
|
||||||
CFLAGS += -msoft-float
|
|
||||||
|
|
||||||
#
|
|
||||||
# (OPTIONAL) Add local stuff here using +=
|
|
||||||
#
|
|
||||||
|
|
||||||
$(PROJECT_INCLUDE)/bsp:
|
|
||||||
$(mkinstalldirs) $<
|
|
||||||
|
|
||||||
$(PROJECT_INCLUDE)/bsp/GT64260eth.h: GT64260eth.h
|
|
||||||
$(INSTALL_DATA) $< $@
|
|
||||||
|
|
||||||
$(PROJECT_INCLUDE)/bsp/GT64260ethreg.h: GT64260ethreg.h
|
|
||||||
$(INSTALL_DATA) $< $@
|
|
||||||
|
|
||||||
|
|
||||||
# the .rel file built here will be put into libbsp.a by ../wrapup/Makefile
|
|
||||||
PREINSTALL_FILES = $(PROJECT_INCLUDE)/bsp $(PROJECT_INCLUDE)/bsp/GT64260eth.h
|
|
||||||
PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/GT64260ethreg.h
|
|
||||||
|
|
||||||
all-local: $(ARCH) $(PREINSTALL_FILES) $(OBJS)
|
|
||||||
|
|
||||||
include $(top_srcdir)/../../../../../../automake/local.am
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
##
|
|
||||||
## $Id$
|
|
||||||
##
|
|
||||||
|
|
||||||
VPATH = @srcdir@:
|
|
||||||
|
|
||||||
INCLUDES = -I @srcdir@/../GT64260
|
|
||||||
|
|
||||||
C_FILES = if_wm.c pci_map.c
|
|
||||||
include_bspdir = $(includedir)/bsp
|
|
||||||
include_bsp_HEADERS = if_wmreg.h pcireg.h
|
|
||||||
|
|
||||||
H_FILES = if_wmreg.h pcireg.h
|
|
||||||
|
|
||||||
C_O_FILES = $(C_FILES:%.c=$(ARCH)/%.$(OBJEXT))
|
|
||||||
|
|
||||||
EXTRA_DIST = if_wm.c pci_map.c
|
|
||||||
|
|
||||||
OBJS = $(C_O_FILES)
|
|
||||||
|
|
||||||
include $(top_srcdir)/../../../../../../automake/compile.am
|
|
||||||
include $(top_srcdir)/../../../../../../automake/lib.am
|
|
||||||
|
|
||||||
CFLAGS += -msoft-float
|
|
||||||
|
|
||||||
#
|
|
||||||
# (OPTIONAL) Add local stuff here using +=
|
|
||||||
#
|
|
||||||
|
|
||||||
$(PROJECT_INCLUDE)/bsp:
|
|
||||||
$(mkinstalldirs) $<
|
|
||||||
|
|
||||||
$(PROJECT_INCLUDE)/bsp/if_wmreg.h: if_wmreg.h
|
|
||||||
$(INSTALL_DATA) $< $@
|
|
||||||
|
|
||||||
$(PROJECT_INCLUDE)/bsp/pcireg.h: pcireg.h
|
|
||||||
$(INSTALL_DATA) $< $@
|
|
||||||
|
|
||||||
# the .rel file built here will be put into libbsp.a by ../wrapup/Makefile
|
|
||||||
PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/if_wmreg.h
|
|
||||||
PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/pcireg.h
|
|
||||||
|
|
||||||
all-local: $(ARCH) $(PREINSTALL_FILES) $(OBJS)
|
|
||||||
|
|
||||||
include $(top_srcdir)/../../../../../../automake/local.am
|
|
||||||
Reference in New Issue
Block a user