diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-04-19 06:35:52 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-04-20 09:57:01 +0200 |
commit | 7632906fc290b652416ab59eb5fb49356c064ed6 (patch) | |
tree | ac036b1f95637e044e10138ceea8d2b56d80ec97 /c/src/lib/libbsp/sparc/erc32 | |
parent | bsps: Move bspsmpgetcurrentprocessor.c to bsps (diff) | |
download | rtems-7632906fc290b652416ab59eb5fb49356c064ed6.tar.bz2 |
bsps: Move clock drivers to bsps
This patch is a part of the BSP source reorganization.
Update #3285.
Diffstat (limited to 'c/src/lib/libbsp/sparc/erc32')
-rw-r--r-- | c/src/lib/libbsp/sparc/erc32/Makefile.am | 2 | ||||
-rw-r--r-- | c/src/lib/libbsp/sparc/erc32/clock/ckinit.c | 131 |
2 files changed, 1 insertions, 132 deletions
diff --git a/c/src/lib/libbsp/sparc/erc32/Makefile.am b/c/src/lib/libbsp/sparc/erc32/Makefile.am index 887ebead0a..89c7cd642b 100644 --- a/c/src/lib/libbsp/sparc/erc32/Makefile.am +++ b/c/src/lib/libbsp/sparc/erc32/Makefile.am @@ -48,7 +48,7 @@ librtemsbsp_a_SOURCES += console/erc32_console.c # debugio librtemsbsp_a_SOURCES += console/debugputs.c # clock -librtemsbsp_a_SOURCES += clock/ckinit.c +librtemsbsp_a_SOURCES +=../../../../../../bsps/sparc/erc32/clock/ckinit.c # timer librtemsbsp_a_SOURCES += timer/timer.c diff --git a/c/src/lib/libbsp/sparc/erc32/clock/ckinit.c b/c/src/lib/libbsp/sparc/erc32/clock/ckinit.c deleted file mode 100644 index 38542c0a41..0000000000 --- a/c/src/lib/libbsp/sparc/erc32/clock/ckinit.c +++ /dev/null @@ -1,131 +0,0 @@ -/* - * This routine initializes the Real Time Clock Counter Timer which is - * part of the MEC on the ERC32 CPU. - * - * The tick frequency is directly programmed to the configured number of - * microseconds per tick. - */ - -/* - * COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. - * - * Ported to ERC32 implementation of the SPARC by On-Line Applications - * Research Corporation (OAR) under contract to the European Space - * Agency (ESA). - * - * ERC32 modifications of respective RTEMS file: COPYRIGHT (c) 1995. - * European Space Agency. - */ - -#include <bsp.h> -#include <bspopts.h> -#include <rtems/counter.h> -#include <rtems/timecounter.h> -#include <rtems/score/sparcimpl.h> - -/* - * The Real Time Clock Counter Timer uses this trap type. - */ -#define CLOCK_VECTOR ERC32_TRAP_TYPE( ERC32_INTERRUPT_REAL_TIME_CLOCK ) - -#define Clock_driver_support_install_isr( _new ) \ - set_vector( _new, CLOCK_VECTOR, 1 ) - -#define Clock_driver_support_set_interrupt_affinity( _online_processors ) \ - do { \ - (void) _online_processors; \ - } while (0) - -extern int CLOCK_SPEED; - -static rtems_timecounter_simple erc32_tc; - -static uint32_t erc32_tc_get( rtems_timecounter_simple *tc ) -{ - return ERC32_MEC.Real_Time_Clock_Counter; -} - -static bool erc32_tc_is_pending( rtems_timecounter_simple *tc ) -{ - return ERC32_Is_interrupt_pending( ERC32_INTERRUPT_REAL_TIME_CLOCK ); -} - -static uint32_t erc32_tc_get_timecount( struct timecounter *tc ) -{ - return rtems_timecounter_simple_downcounter_get( - tc, - erc32_tc_get, - erc32_tc_is_pending - ); -} - -static void erc32_tc_at_tick( rtems_timecounter_simple *tc ) -{ - /* Nothing to do */ -} - -static void erc32_tc_tick( void ) -{ - rtems_timecounter_simple_downcounter_tick( - &erc32_tc, - erc32_tc_get, - erc32_tc_at_tick - ); -} - -static void erc32_counter_initialize( uint32_t frequency ) -{ - _SPARC_Counter_initialize( - _SPARC_Counter_read_address, - _SPARC_Counter_difference_clock_period, - &ERC32_MEC.Real_Time_Clock_Counter - ); - rtems_counter_initialize_converter( frequency ); -} - -#define Clock_driver_support_initialize_hardware() \ - do { \ - uint32_t frequency = 1000000; \ - /* approximately 1 us per countdown */ \ - ERC32_MEC.Real_Time_Clock_Scalar = CLOCK_SPEED - 1; \ - ERC32_MEC.Real_Time_Clock_Counter = \ - rtems_configuration_get_microseconds_per_tick(); \ - \ - ERC32_MEC_Set_Real_Time_Clock_Timer_Control( \ - ERC32_MEC_TIMER_COUNTER_ENABLE_COUNTING | \ - ERC32_MEC_TIMER_COUNTER_LOAD_SCALER | \ - ERC32_MEC_TIMER_COUNTER_LOAD_COUNTER \ - ); \ - \ - ERC32_MEC_Set_Real_Time_Clock_Timer_Control( \ - ERC32_MEC_TIMER_COUNTER_ENABLE_COUNTING | \ - ERC32_MEC_TIMER_COUNTER_RELOAD_AT_ZERO \ - ); \ - rtems_timecounter_simple_install( \ - &erc32_tc, \ - frequency, \ - rtems_configuration_get_microseconds_per_tick(), \ - erc32_tc_get_timecount \ - ); \ - erc32_counter_initialize( frequency ); \ - } while (0) - -#define Clock_driver_timecounter_tick() erc32_tc_tick() - -#define Clock_driver_support_shutdown_hardware() \ - do { \ - ERC32_Mask_interrupt( ERC32_INTERRUPT_REAL_TIME_CLOCK ); \ - \ - ERC32_MEC_Set_Real_Time_Clock_Timer_Control( \ - ERC32_MEC_TIMER_COUNTER_DISABLE_COUNTING \ - ); \ - } while (0) - -#include "../../../shared/clockdrv_shell.h" - -SPARC_COUNTER_DEFINITION; |