mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-09-22 05:28:32 +08:00
add network support, various corrections
This commit is contained in:
@@ -1,3 +1,9 @@
|
||||
2009-10-15 Thomas Doerfler <Thomas.Doerfler@embedded-brains.de>
|
||||
|
||||
* Makefile.am, include/bsp.h, network/network.c: add network support
|
||||
* console/console.c, clock/clock.c, startup/init548x.c:
|
||||
various corrections
|
||||
|
||||
2009-10-15 Ralf Corsépius <ralf.corsepius@rtems.org>
|
||||
|
||||
* make/custom/genmcf548x.cfg: New (relocated from /make/custom).
|
||||
|
||||
@@ -53,7 +53,9 @@ network_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
|
||||
endif
|
||||
|
||||
libbsp_a_LIBADD = ../../../libcpu/@RTEMS_CPU@/shared/cache.rel \
|
||||
../../../libcpu/@RTEMS_CPU@/shared/misc.rel
|
||||
../../../libcpu/@RTEMS_CPU@/shared/misc.rel \
|
||||
../../../libcpu/@RTEMS_CPU@/mcf548x/mcdma.rel
|
||||
|
||||
if HAS_NETWORKING
|
||||
libbsp_a_LIBADD += network.rel
|
||||
endif
|
||||
|
||||
@@ -87,18 +87,17 @@
|
||||
* We need to have 1 interrupt every 10,000 microseconds
|
||||
* XLB clock 100 MHz / MCF548X_SLT_SLTCNT0 = XLB clock/100
|
||||
*/
|
||||
#define Clock_driver_support_initialize_hardware() \
|
||||
do { \
|
||||
int level; \
|
||||
MCF548X_INTC_ICR54 = MCF548X_INTC_ICRn_IL(SLT0_IRQ_LEVEL) | \
|
||||
MCF548X_INTC_ICRn_IP(SLT0_IRQ_PRIORITY); \
|
||||
rtems_interrupt_disable( level ); \
|
||||
MCF548X_INTC_IMRH &= ~(MCF548X_INTC_IMRH_INT_MASK54 | \
|
||||
MCF548X_INTC_IMRL_MASKALL); \
|
||||
rtems_interrupt_enable( level ); \
|
||||
MCF548X_SLT_SLTCNT0 = get_CPU_clock_speed()/100; \
|
||||
MCF548X_SLT_SCR0 |= (MCF548X_SLT_SCR_TEN | MCF548X_SLT_SCR_RUN | MCF548X_SLT_SCR_IEN); \
|
||||
} while (0)
|
||||
#define Clock_driver_support_initialize_hardware() \
|
||||
do { \
|
||||
int level; \
|
||||
MCF548X_INTC_ICR54 = MCF548X_INTC_ICRn_IL(SLT0_IRQ_LEVEL) | \
|
||||
MCF548X_INTC_ICRn_IP(SLT0_IRQ_PRIORITY); \
|
||||
rtems_interrupt_disable( level ); \
|
||||
MCF548X_INTC_IMRH &= ~(MCF548X_INTC_IMRH_INT_MASK54); \
|
||||
rtems_interrupt_enable( level ); \
|
||||
MCF548X_SLT_SLTCNT0 = get_CPU_clock_speed()/100; \
|
||||
MCF548X_SLT_SCR0 |= (MCF548X_SLT_SCR_TEN | MCF548X_SLT_SCR_RUN | MCF548X_SLT_SCR_IEN); \
|
||||
} while (0)
|
||||
|
||||
#include "../../../shared/clockdrv_shell.h"
|
||||
|
||||
|
||||
@@ -485,29 +485,25 @@ IntUartInitialize(void)
|
||||
case 0:
|
||||
MCF548X_INTC_ICR35 = MCF548X_INTC_ICRn_IL(PSC0_IRQ_LEVEL) |
|
||||
MCF548X_INTC_ICRn_IP(PSC0_IRQ_PRIORITY);
|
||||
MCF548X_INTC_IMRH &= ~(MCF548X_INTC_IMRH_INT_MASK35 |
|
||||
MCF548X_INTC_IMRL_MASKALL);
|
||||
MCF548X_INTC_IMRH &= ~(MCF548X_INTC_IMRH_INT_MASK35);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
MCF548X_INTC_ICR34 = MCF548X_INTC_ICRn_IL(PSC1_IRQ_LEVEL) |
|
||||
MCF548X_INTC_ICRn_IP(PSC1_IRQ_PRIORITY);
|
||||
MCF548X_INTC_IMRH &= ~(MCF548X_INTC_IMRH_INT_MASK34 |
|
||||
MCF548X_INTC_IMRL_MASKALL);
|
||||
MCF548X_INTC_IMRH &= ~(MCF548X_INTC_IMRH_INT_MASK34);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
MCF548X_INTC_ICR33 = MCF548X_INTC_ICRn_IL(PSC2_IRQ_LEVEL) |
|
||||
MCF548X_INTC_ICRn_IP(PSC2_IRQ_PRIORITY);
|
||||
MCF548X_INTC_IMRH &= ~(MCF548X_INTC_IMRH_INT_MASK33 |
|
||||
MCF548X_INTC_IMRL_MASKALL);
|
||||
MCF548X_INTC_IMRH &= ~(MCF548X_INTC_IMRH_INT_MASK33);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
MCF548X_INTC_ICR32 = MCF548X_INTC_ICRn_IL(PSC3_IRQ_LEVEL) |
|
||||
MCF548X_INTC_ICRn_IP(PSC3_IRQ_PRIORITY);
|
||||
MCF548X_INTC_IMRH &= ~(MCF548X_INTC_IMRH_INT_MASK32 |
|
||||
MCF548X_INTC_IMRL_MASKALL);
|
||||
MCF548X_INTC_IMRH &= ~(MCF548X_INTC_IMRH_INT_MASK32);
|
||||
break;
|
||||
}
|
||||
rtems_interrupt_enable(level);
|
||||
|
||||
@@ -91,10 +91,6 @@ m68k_isr_entry set_vector(
|
||||
* Interrupt assignments
|
||||
* Highest-priority listed first
|
||||
*/
|
||||
#define FEC_IRQ_LEVEL 4
|
||||
#define FEC_IRQ_RX_PRIORITY 7
|
||||
#define FEC_IRQ_TX_PRIORITY 6
|
||||
|
||||
#define SLT0_IRQ_LEVEL 4
|
||||
#define SLT0_IRQ_PRIORITY 0
|
||||
|
||||
@@ -107,6 +103,19 @@ m68k_isr_entry set_vector(
|
||||
#define PSC3_IRQ_LEVEL 3
|
||||
#define PSC3_IRQ_PRIORITY 4
|
||||
|
||||
#define FEC_IRQ_LEVEL 2
|
||||
#define FEC_IRQ_PRIORITY 3
|
||||
|
||||
/*
|
||||
* Network driver configuration
|
||||
*/
|
||||
struct rtems_bsdnet_ifconfig;
|
||||
extern int rtems_mcf548x_fec_driver_attach_detach(struct rtems_bsdnet_ifconfig *config,int attaching);
|
||||
#define RTEMS_BSP_NETWORK_DRIVER_ATTACH rtems_mcf548x_fec_driver_attach_detach
|
||||
|
||||
#define RTEMS_BSP_NETWORK_DRIVER_NAME "fec1"
|
||||
#define RTEMS_BSP_NETWORK_DRIVER_NAME2 "fec2"
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -301,12 +301,12 @@ gpio_init(void)
|
||||
* erroneous transmissions
|
||||
*/
|
||||
MCF548X_GPIO_PAR_FECI2CIRQ = (0
|
||||
|
||||
| MCF548X_GPIO_PAR_FECI2CIRQ_PAR_E1MDC_EMDC
|
||||
| MCF548X_GPIO_PAR_FECI2CIRQ_PAR_E1MDIO_EMDIO
|
||||
| MCF548X_GPIO_PAR_FECI2CIRQ_PAR_E1MII
|
||||
| MCF548X_GPIO_PAR_FECI2CIRQ_PAR_E17
|
||||
);
|
||||
MCF548X_GPIO_PAR_FECI2CIRQ = (0
|
||||
|
||||
| MCF548X_GPIO_PAR_FECI2CIRQ_PAR_E0MDC
|
||||
| MCF548X_GPIO_PAR_FECI2CIRQ_PAR_E0MDIO
|
||||
| MCF548X_GPIO_PAR_FECI2CIRQ_PAR_E0MII
|
||||
|
||||
Reference in New Issue
Block a user