forked from Imagelibrary/rtems
added missing files, fixed some minors
This commit is contained in:
@@ -1,4 +1,15 @@
|
|||||||
2008-09-08 Joel Sherrill <joel.sherrill@OARcorp.com>
|
2008-09-08 Thomas Doerfler <Thomas.Doerfler@embedded-brains.de>
|
||||||
|
|
||||||
* ChangeLog: New file.
|
* network/network_scc.c, network/network_fec.c: fixed some data
|
||||||
|
type issues
|
||||||
|
|
||||||
|
* clock/p_clock.c: added misssing clock driver
|
||||||
|
|
||||||
|
* startup/bspstart.c, timer/timer.c:
|
||||||
|
added misssing timer variables
|
||||||
|
|
||||||
|
* ChangeLog: added changelog
|
||||||
|
|
||||||
|
2008-09-08 Thomas Doerfler <Thomas.Doerfler@embedded-brains.de>
|
||||||
|
|
||||||
|
* New BSP -- tqm8xx boards
|
||||||
|
|||||||
67
c/src/lib/libbsp/powerpc/tqm8xx/clock/p_clock.c
Normal file
67
c/src/lib/libbsp/powerpc/tqm8xx/clock/p_clock.c
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
/*
|
||||||
|
* Clock Tick interrupt conexion code.
|
||||||
|
*
|
||||||
|
* COPYRIGHT (c) 1989-1997.
|
||||||
|
* On-Line Applications Research Corporation (OAR).
|
||||||
|
*
|
||||||
|
* The license and distribution terms for this file may in
|
||||||
|
* the file LICENSE in this distribution or at
|
||||||
|
* http://www.rtems.com/license/LICENSE.
|
||||||
|
*
|
||||||
|
* Modified to support the MPC750.
|
||||||
|
* Modifications Copyright (c) 1999 Eric Valette valette@crf.canon.fr
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <bsp.h>
|
||||||
|
#include <bsp/irq-generic.h>
|
||||||
|
#include <rtems/bspIo.h>
|
||||||
|
extern void clockOn(void*);
|
||||||
|
extern void clockOff (void*);
|
||||||
|
extern int clockIsOn(void*);
|
||||||
|
extern void Clock_isr(void*);
|
||||||
|
|
||||||
|
void BSP_clock_hdl(rtems_vector_number vecnum,
|
||||||
|
void * arg)
|
||||||
|
{
|
||||||
|
Clock_isr(arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
int BSP_get_clock_irq_level(void)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Caution : if you change this, you must change the
|
||||||
|
* definition of BSP_PERIODIC_TIMER accordingly
|
||||||
|
*/
|
||||||
|
return 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
int BSP_disconnect_clock_handler (void)
|
||||||
|
{
|
||||||
|
rtems_status_code sc;
|
||||||
|
|
||||||
|
clockOff(NULL);
|
||||||
|
/*
|
||||||
|
* remove interrupt handler
|
||||||
|
*/
|
||||||
|
sc = rtems_interrupt_handler_remove(BSP_PERIODIC_TIMER,
|
||||||
|
BSP_clock_hdl,NULL);
|
||||||
|
|
||||||
|
return sc == RTEMS_SUCCESSFUL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int BSP_connect_clock_handler (rtems_irq_hdl hdl)
|
||||||
|
{
|
||||||
|
rtems_status_code sc;
|
||||||
|
/*
|
||||||
|
* install interrupt handler
|
||||||
|
*/
|
||||||
|
sc = rtems_interrupt_handler_install(BSP_PERIODIC_TIMER,
|
||||||
|
"PIT clock",0,
|
||||||
|
BSP_clock_hdl,NULL);
|
||||||
|
if (sc == RTEMS_SUCCESSFUL) {
|
||||||
|
clockOn(NULL);
|
||||||
|
}
|
||||||
|
return sc == RTEMS_SUCCESSFUL;
|
||||||
|
}
|
||||||
@@ -155,7 +155,7 @@ static struct m8xx_fec_enet_struct enet_driver[NIFACES];
|
|||||||
/*
|
/*
|
||||||
* FEC interrupt handler
|
* FEC interrupt handler
|
||||||
*/
|
*/
|
||||||
static void m8xx_fec_interrupt_handler ()
|
static void m8xx_fec_interrupt_handler (void *unused)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Frame received?
|
* Frame received?
|
||||||
@@ -180,19 +180,20 @@ static void m8xx_fec_interrupt_handler ()
|
|||||||
* Please organize FEC controller code better by moving code from
|
* Please organize FEC controller code better by moving code from
|
||||||
* m860_fec_initialize_hardware to m8xx_fec_ethernet_on
|
* m860_fec_initialize_hardware to m8xx_fec_ethernet_on
|
||||||
*/
|
*/
|
||||||
static void m8xx_fec_ethernet_on(){};
|
static void m8xx_fec_ethernet_on(const rtems_irq_connect_data* ptr){};
|
||||||
static void m8xx_fec_ethernet_off(){};
|
static void m8xx_fec_ethernet_off(const rtems_irq_connect_data* ptr){};
|
||||||
static int m8xx_fec_ethernet_isOn (const rtems_irq_connect_data* ptr)
|
static int m8xx_fec_ethernet_isOn (const rtems_irq_connect_data* ptr)
|
||||||
{
|
{
|
||||||
return BSP_irq_enabled_at_siu (ptr->name);
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static rtems_irq_connect_data ethernetFECIrqData = {
|
static rtems_irq_connect_data ethernetFECIrqData = {
|
||||||
BSP_FAST_ETHERNET_CTRL,
|
BSP_FAST_ETHERNET_CTRL,
|
||||||
(rtems_irq_hdl) m8xx_fec_interrupt_handler,
|
m8xx_fec_interrupt_handler,
|
||||||
(rtems_irq_enable) m8xx_fec_ethernet_on,
|
NULL,
|
||||||
(rtems_irq_disable) m8xx_fec_ethernet_off,
|
m8xx_fec_ethernet_on,
|
||||||
(rtems_irq_is_enabled)m8xx_fec_ethernet_isOn
|
m8xx_fec_ethernet_off,
|
||||||
|
m8xx_fec_ethernet_isOn
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -633,7 +634,7 @@ static void fec_sendpacket (struct ifnet *ifp, struct mbuf *m)
|
|||||||
/*
|
/*
|
||||||
* Flush the buffer for this descriptor
|
* Flush the buffer for this descriptor
|
||||||
*/
|
*/
|
||||||
rtems_cache_flush_multiple_data_lines(txBd->buffer, txBd->length);
|
rtems_cache_flush_multiple_data_lines((void *)txBd->buffer, txBd->length);
|
||||||
|
|
||||||
sc->txMbuf[sc->txBdHead] = m;
|
sc->txMbuf[sc->txBdHead] = m;
|
||||||
nAdded++;
|
nAdded++;
|
||||||
@@ -795,7 +796,8 @@ static void fec_enet_stats (struct m8xx_fec_enet_struct *sc)
|
|||||||
printf (" Raw output wait:%-8lu\n", sc->txRawWait);
|
printf (" Raw output wait:%-8lu\n", sc->txRawWait);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int fec_ioctl (struct ifnet *ifp, int command, caddr_t data)
|
static int fec_ioctl (struct ifnet *ifp,
|
||||||
|
ioctl_command_t command, caddr_t data)
|
||||||
{
|
{
|
||||||
struct m8xx_fec_enet_struct *sc = ifp->if_softc;
|
struct m8xx_fec_enet_struct *sc = ifp->if_softc;
|
||||||
int error = 0;
|
int error = 0;
|
||||||
|
|||||||
@@ -160,10 +160,12 @@ static void m8xx_scc1_ethernet_off(const rtems_irq_connect_data* ptr)
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
static void m8xx_scc1_ethernet_isOn(const rtems_irq_connect_data* ptr)
|
static int m8xx_scc1_ethernet_isOn(const rtems_irq_connect_data* ptr)
|
||||||
{
|
{
|
||||||
int BSP_irq_enabled_at_cpm(const rtems_irq_number );
|
/*
|
||||||
BSP_irq_enabled_at_cpm (ptr->name);
|
* Assume, that we are on
|
||||||
|
*/
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -192,10 +194,10 @@ static void m8xx_scc1_interrupt_handler (void *unused)
|
|||||||
static rtems_irq_connect_data ethernetSCC1IrqData = {
|
static rtems_irq_connect_data ethernetSCC1IrqData = {
|
||||||
BSP_CPM_IRQ_SCC1,
|
BSP_CPM_IRQ_SCC1,
|
||||||
(rtems_irq_hdl) m8xx_scc1_interrupt_handler,
|
(rtems_irq_hdl) m8xx_scc1_interrupt_handler,
|
||||||
0,
|
NULL,
|
||||||
(rtems_irq_enable) m8xx_scc1_ethernet_on,
|
m8xx_scc1_ethernet_on,
|
||||||
(rtems_irq_disable) m8xx_scc1_ethernet_off,
|
m8xx_scc1_ethernet_off,
|
||||||
(rtems_irq_is_enabled)m8xx_scc1_ethernet_isOn
|
m8xx_scc1_ethernet_isOn
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -45,7 +45,10 @@ unsigned int BSP_bus_frequency;
|
|||||||
/* Configuration parameters for clock driver, ... */
|
/* Configuration parameters for clock driver, ... */
|
||||||
uint32_t bsp_clicks_per_usec; /* for PIT driver: OSCCLK */
|
uint32_t bsp_clicks_per_usec; /* for PIT driver: OSCCLK */
|
||||||
uint32_t bsp_clock_speed ; /* needed for PIT driver */
|
uint32_t bsp_clock_speed ; /* needed for PIT driver */
|
||||||
|
/* for timer: */
|
||||||
|
uint32_t bsp_timer_average_overhead; /* Average overhead of timer in ticks */
|
||||||
|
uint32_t bsp_timer_least_valid; /* Least valid number from timer */
|
||||||
|
bool bsp_timer_internal_clock; /* TRUE, when timer runs with CPU clk */
|
||||||
/*
|
/*
|
||||||
* Use the shared implementations of the following routines.
|
* Use the shared implementations of the following routines.
|
||||||
* Look in rtems/c/src/lib/libbsp/shared/bsplibc.c.
|
* Look in rtems/c/src/lib/libbsp/shared/bsplibc.c.
|
||||||
@@ -191,6 +194,8 @@ void bsp_start( void)
|
|||||||
* PIT clock driver from EXTCLK
|
* PIT clock driver from EXTCLK
|
||||||
*/
|
*/
|
||||||
bsp_clock_speed = BSP_bus_frequency;
|
bsp_clock_speed = BSP_bus_frequency;
|
||||||
|
bsp_timer_least_valid = 3;
|
||||||
|
bsp_timer_average_overhead = 3;
|
||||||
|
|
||||||
/* Initialize exception handler */
|
/* Initialize exception handler */
|
||||||
ppc_exc_initialize(PPC_INTERRUPT_DISABLE_MASK_DEFAULT,
|
ppc_exc_initialize(PPC_INTERRUPT_DISABLE_MASK_DEFAULT,
|
||||||
|
|||||||
@@ -87,7 +87,6 @@ Timer_initialize (void)
|
|||||||
int
|
int
|
||||||
Read_timer (void)
|
Read_timer (void)
|
||||||
{
|
{
|
||||||
extern unsigned int BSP_bus_frequency;
|
|
||||||
int retval;
|
int retval;
|
||||||
retval = *(uint32_t*)&m8xx.tcn1;
|
retval = *(uint32_t*)&m8xx.tcn1;
|
||||||
retval = retval * 1000000LL / BSP_bus_frequency;
|
retval = retval * 1000000LL / BSP_bus_frequency;
|
||||||
|
|||||||
Reference in New Issue
Block a user