From 7632906fc290b652416ab59eb5fb49356c064ed6 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 19 Apr 2018 06:35:52 +0200 Subject: bsps: Move clock drivers to bsps This patch is a part of the BSP source reorganization. Update #3285. --- c/src/lib/libbsp/powerpc/beatnik/Makefile.am | 4 +- c/src/lib/libbsp/powerpc/gen5200/Makefile.am | 2 +- c/src/lib/libbsp/powerpc/gen83xx/Makefile.am | 2 +- c/src/lib/libbsp/powerpc/haleakala/Makefile.am | 2 +- .../libbsp/powerpc/motorola_powerpc/Makefile.am | 4 +- c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am | 2 +- .../libbsp/powerpc/mpc55xxevb/clock/clock-config.c | 257 --------------------- c/src/lib/libbsp/powerpc/mpc8260ads/Makefile.am | 2 +- .../lib/libbsp/powerpc/mpc8260ads/clock/p_clock.c | 69 ------ c/src/lib/libbsp/powerpc/mvme3100/Makefile.am | 4 +- c/src/lib/libbsp/powerpc/mvme5500/Makefile.am | 4 +- c/src/lib/libbsp/powerpc/psim/Makefile.am | 4 +- c/src/lib/libbsp/powerpc/qemuppc/Makefile.am | 2 +- c/src/lib/libbsp/powerpc/qoriq/Makefile.am | 2 +- .../lib/libbsp/powerpc/qoriq/clock/clock-config.c | 178 -------------- c/src/lib/libbsp/powerpc/shared/clock/clock.c | 247 -------------------- c/src/lib/libbsp/powerpc/shared/clock/p_clock.c | 43 ---- c/src/lib/libbsp/powerpc/ss555/Makefile.am | 4 +- c/src/lib/libbsp/powerpc/ss555/clock/p_clock.c | 63 ----- c/src/lib/libbsp/powerpc/t32mppc/Makefile.am | 2 +- .../libbsp/powerpc/t32mppc/clock/clock-config.c | 64 ----- c/src/lib/libbsp/powerpc/tqm8xx/Makefile.am | 4 +- c/src/lib/libbsp/powerpc/tqm8xx/clock/p_clock.c | 58 ----- c/src/lib/libbsp/powerpc/virtex/Makefile.am | 2 +- c/src/lib/libbsp/powerpc/virtex4/Makefile.am | 2 +- c/src/lib/libbsp/powerpc/virtex5/Makefile.am | 4 +- 26 files changed, 26 insertions(+), 1005 deletions(-) delete mode 100644 c/src/lib/libbsp/powerpc/mpc55xxevb/clock/clock-config.c delete mode 100644 c/src/lib/libbsp/powerpc/mpc8260ads/clock/p_clock.c delete mode 100644 c/src/lib/libbsp/powerpc/qoriq/clock/clock-config.c delete mode 100644 c/src/lib/libbsp/powerpc/shared/clock/clock.c delete mode 100644 c/src/lib/libbsp/powerpc/shared/clock/p_clock.c delete mode 100644 c/src/lib/libbsp/powerpc/ss555/clock/p_clock.c delete mode 100644 c/src/lib/libbsp/powerpc/t32mppc/clock/clock-config.c delete mode 100644 c/src/lib/libbsp/powerpc/tqm8xx/clock/p_clock.c (limited to 'c/src/lib/libbsp/powerpc') diff --git a/c/src/lib/libbsp/powerpc/beatnik/Makefile.am b/c/src/lib/libbsp/powerpc/beatnik/Makefile.am index 2101af1654..bc57470fe8 100644 --- a/c/src/lib/libbsp/powerpc/beatnik/Makefile.am +++ b/c/src/lib/libbsp/powerpc/beatnik/Makefile.am @@ -55,7 +55,7 @@ librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/getentropy/getentropy librtemsbsp_a_SOURCES += startup/bspclean.c #pclock -librtemsbsp_a_SOURCES += ../shared/clock/p_clock.c +librtemsbsp_a_SOURCES +=../../../../../../bsps/powerpc/shared/clock/p_clock.c #console librtemsbsp_a_SOURCES += ../shared/console/uart.c @@ -101,7 +101,7 @@ librtemsbsp_a_SOURCES += tod/todcfg.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/altivec/vec_sup.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/altivec/vec_sup_asm.S librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/cache/cache.c -librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/dev/clock-ppc-dec.c +librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/clock/clock-ppc-dec.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/dev/timer-ppc-dec.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/mmu/bat.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/mmu/mmuAsm.S diff --git a/c/src/lib/libbsp/powerpc/gen5200/Makefile.am b/c/src/lib/libbsp/powerpc/gen5200/Makefile.am index 67132857a1..d17a851919 100644 --- a/c/src/lib/libbsp/powerpc/gen5200/Makefile.am +++ b/c/src/lib/libbsp/powerpc/gen5200/Makefile.am @@ -54,7 +54,7 @@ librtemsbsp_a_SOURCES += bestcomm/tasksetup_pci_rx.c librtemsbsp_a_SOURCES += bestcomm/tasksetup_pci_tx.c # clock # clock -librtemsbsp_a_SOURCES += ../shared/clock/clock.c +librtemsbsp_a_SOURCES +=../../../../../../bsps/powerpc/shared/clock/clock.c # console librtemsbsp_a_SOURCES += console/console.c # i2c diff --git a/c/src/lib/libbsp/powerpc/gen83xx/Makefile.am b/c/src/lib/libbsp/powerpc/gen83xx/Makefile.am index 663549a3f6..c8a37b70c1 100644 --- a/c/src/lib/libbsp/powerpc/gen83xx/Makefile.am +++ b/c/src/lib/libbsp/powerpc/gen83xx/Makefile.am @@ -44,7 +44,7 @@ librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/start/bsp-uboot-board-inf librtemsbsp_a_SOURCES += ../shared/uboot_getenv.c # clock -librtemsbsp_a_SOURCES += ../shared/clock/clock.c +librtemsbsp_a_SOURCES +=../../../../../../bsps/powerpc/shared/clock/clock.c # irq librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/irq/irq-default-handler.c diff --git a/c/src/lib/libbsp/powerpc/haleakala/Makefile.am b/c/src/lib/libbsp/powerpc/haleakala/Makefile.am index d32a346345..c37a6e658c 100644 --- a/c/src/lib/libbsp/powerpc/haleakala/Makefile.am +++ b/c/src/lib/libbsp/powerpc/haleakala/Makefile.am @@ -42,7 +42,7 @@ librtemsbsp_a_SOURCES += network/network.c endif librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/cache/cache.c -librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/dev/clock-ppc403.c +librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/clock/clock-ppc403.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/dev/timer-ppc-dec.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/irq/ppc-irq-legacy.c diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/Makefile.am b/c/src/lib/libbsp/powerpc/motorola_powerpc/Makefile.am index c5c507a452..32f74ce074 100644 --- a/c/src/lib/libbsp/powerpc/motorola_powerpc/Makefile.am +++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/Makefile.am @@ -51,7 +51,7 @@ librtemsbsp_a_SOURCES += startup/bspreset.c librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/rtc/rtc-support.c librtemsbsp_a_SOURCES += ../shared/tod/todcfg.c # pclock -librtemsbsp_a_SOURCES += ../shared/clock/p_clock.c +librtemsbsp_a_SOURCES +=../../../../../../bsps/powerpc/shared/clock/p_clock.c # console librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/motorola_powerpc/dev/polled_io.c @@ -87,7 +87,7 @@ endif librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/altivec/vec_sup.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/altivec/vec_sup_asm.S librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/cache/cache.c -librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/dev/clock-ppc-dec.c +librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/clock/clock-ppc-dec.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/dev/timer-ppc-dec.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/mmu/bat.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/mmu/mmuAsm.S diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am b/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am index 6a06edf742..551d9727ce 100644 --- a/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am +++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am @@ -69,7 +69,7 @@ librtemsbsp_a_SOURCES += startup/start-flash.S librtemsbsp_a_SOURCES += startup/start-watchdog.c # clock -librtemsbsp_a_SOURCES += clock/clock-config.c +librtemsbsp_a_SOURCES +=../../../../../../bsps/powerpc/mpc55xxevb/clock/clock-config.c # console librtemsbsp_a_SOURCES += console/console-config.c diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/clock/clock-config.c b/c/src/lib/libbsp/powerpc/mpc55xxevb/clock/clock-config.c deleted file mode 100644 index c712d80745..0000000000 --- a/c/src/lib/libbsp/powerpc/mpc55xxevb/clock/clock-config.c +++ /dev/null @@ -1,257 +0,0 @@ -/** - * @file - * - * @ingroup mpc55xx - * - * @brief Clock driver configuration. - */ - -/* - * Copyright (c) 2009-2013 embedded brains GmbH. All rights reserved. - * - * embedded brains GmbH - * Dornierstr. 4 - * 82178 Puchheim - * Germany - * - * - * 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. - */ - -#include -#include -#include - -#include - -#include - -void Clock_isr(void *arg); - -static rtems_timecounter_simple mpc55xx_tc; - -#if defined(MPC55XX_CLOCK_EMIOS_CHANNEL) - -#include - -static uint32_t mpc55xx_tc_get(rtems_timecounter_simple *tc) -{ - return EMIOS.CH [MPC55XX_CLOCK_EMIOS_CHANNEL].CCNTR.R; -} - -static bool mpc55xx_tc_is_pending(rtems_timecounter_simple *tc) -{ - return EMIOS.CH [MPC55XX_CLOCK_EMIOS_CHANNEL].CSR.B.FLAG != 0; -} - -static uint32_t mpc55xx_tc_get_timecount(struct timecounter *tc) -{ - return rtems_timecounter_simple_upcounter_get( - tc, - mpc55xx_tc_get, - mpc55xx_tc_is_pending - ); -} - -static void mpc55xx_tc_at_tick(rtems_timecounter_simple *tc) -{ - union EMIOS_CSR_tag csr = MPC55XX_ZERO_FLAGS; - csr.B.FLAG = 1; - EMIOS.CH [MPC55XX_CLOCK_EMIOS_CHANNEL].CSR.R = csr.R; -} - -static void mpc55xx_tc_tick(void) -{ - rtems_timecounter_simple_upcounter_tick( - &mpc55xx_tc, - mpc55xx_tc_get, - mpc55xx_tc_at_tick - ); -} - -static void mpc55xx_clock_handler_install(rtems_isr_entry isr) -{ - rtems_status_code sc = RTEMS_SUCCESSFUL; - - sc = mpc55xx_interrupt_handler_install( - MPC55XX_IRQ_EMIOS(MPC55XX_CLOCK_EMIOS_CHANNEL), - "clock", - RTEMS_INTERRUPT_UNIQUE, - MPC55XX_INTC_MIN_PRIORITY, - (rtems_interrupt_handler) isr, - NULL - ); - if (sc != RTEMS_SUCCESSFUL) { - bsp_fatal(MPC55XX_FATAL_CLOCK_EMIOS_IRQ_INSTALL); - } -} - -static void mpc55xx_clock_initialize(void) -{ - volatile struct EMIOS_CH_tag *regs = &EMIOS.CH [MPC55XX_CLOCK_EMIOS_CHANNEL]; - union EMIOS_CCR_tag ccr = MPC55XX_ZERO_FLAGS; - union EMIOS_CSR_tag csr = MPC55XX_ZERO_FLAGS; - unsigned prescaler = mpc55xx_emios_global_prescaler(); - uint64_t reference_clock = bsp_clock_speed; - uint64_t us_per_tick = rtems_configuration_get_microseconds_per_tick(); - uint64_t interval = (reference_clock * us_per_tick) / 1000000; - - /* Apply prescaler */ - if (prescaler > 0) { - interval /= (uint64_t) prescaler; - } else { - bsp_fatal(MPC55XX_FATAL_CLOCK_EMIOS_PRESCALER); - } - - /* Check interval */ - if (interval == 0 || interval > MPC55XX_EMIOS_VALUE_MAX) { - bsp_fatal(MPC55XX_FATAL_CLOCK_EMIOS_INTERVAL); - } - - /* Configure eMIOS channel */ - - /* Set channel in GPIO mode */ - ccr.B.MODE = MPC55XX_EMIOS_MODE_GPIO_INPUT; - regs->CCR.R = ccr.R; - - /* Clear status flags */ - csr.B.OVR = 1; - csr.B.OVFL = 1; - csr.B.FLAG = 1; - regs->CSR.R = csr.R; - - /* Set internal counter start value */ - regs->CCNTR.R = 1; - - /* Set timer period */ - regs->CADR.R = (uint32_t) interval - 1; - - /* Set control register */ - #if MPC55XX_CHIP_FAMILY == 551 - ccr.B.MODE = MPC55XX_EMIOS_MODE_MCB_UP_INT_CLK; - #else - ccr.B.MODE = MPC55XX_EMIOS_MODE_MC_UP_INT_CLK; - #endif - ccr.B.UCPREN = 1; - ccr.B.FEN = 1; - ccr.B.FREN = 1; - regs->CCR.R = ccr.R; - - rtems_timecounter_simple_install( - &mpc55xx_tc, - reference_clock, - interval, - mpc55xx_tc_get_timecount - ); -} - -static void mpc55xx_clock_cleanup(void) -{ - volatile struct EMIOS_CH_tag *regs = &EMIOS.CH [MPC55XX_CLOCK_EMIOS_CHANNEL]; - union EMIOS_CCR_tag ccr = MPC55XX_ZERO_FLAGS; - - /* Set channel in GPIO mode */ - ccr.B.MODE = MPC55XX_EMIOS_MODE_GPIO_INPUT; - regs->CCR.R = ccr.R; -} - -#elif defined(MPC55XX_CLOCK_PIT_CHANNEL) - -static uint32_t mpc55xx_tc_get(rtems_timecounter_simple *tc) -{ - return PIT_RTI.CHANNEL [MPC55XX_CLOCK_PIT_CHANNEL].CVAL.R; -} - -static bool mpc55xx_tc_is_pending(rtems_timecounter_simple *tc) -{ - return PIT_RTI.CHANNEL [MPC55XX_CLOCK_PIT_CHANNEL].TFLG.B.TIF != 0; -} - -static uint32_t mpc55xx_tc_get_timecount(struct timecounter *tc) -{ - return rtems_timecounter_simple_downcounter_get( - tc, - mpc55xx_tc_get, - mpc55xx_tc_is_pending - ); -} - -static void mpc55xx_tc_at_tick(rtems_timecounter_simple *tc) -{ - volatile PIT_RTI_CHANNEL_tag *channel = - &PIT_RTI.CHANNEL [MPC55XX_CLOCK_PIT_CHANNEL]; - PIT_RTI_TFLG_32B_tag tflg = { .B = { .TIF = 1 } }; - - channel->TFLG.R = tflg.R; -} - -static void mpc55xx_tc_tick(void) -{ - rtems_timecounter_simple_downcounter_tick( - &mpc55xx_tc, - mpc55xx_tc_get, - mpc55xx_tc_at_tick - ); -} - -static void mpc55xx_clock_handler_install(rtems_isr_entry isr) -{ - rtems_status_code sc = RTEMS_SUCCESSFUL; - - sc = mpc55xx_interrupt_handler_install( - MPC55XX_IRQ_PIT_CHANNEL(MPC55XX_CLOCK_PIT_CHANNEL), - "clock", - RTEMS_INTERRUPT_UNIQUE, - MPC55XX_INTC_MIN_PRIORITY, - (rtems_interrupt_handler) isr, - NULL - ); - if (sc != RTEMS_SUCCESSFUL) { - bsp_fatal(MPC55XX_FATAL_CLOCK_PIT_IRQ_INSTALL); - } -} - -static void mpc55xx_clock_initialize(void) -{ - volatile PIT_RTI_CHANNEL_tag *channel = - &PIT_RTI.CHANNEL [MPC55XX_CLOCK_PIT_CHANNEL]; - uint64_t reference_clock = bsp_clock_speed; - uint64_t us_per_tick = rtems_configuration_get_microseconds_per_tick(); - uint64_t interval = (reference_clock * us_per_tick) / 1000000; - PIT_RTI_PITMCR_32B_tag pitmcr = { .B = { .FRZ = 1 } }; - PIT_RTI_TCTRL_32B_tag tctrl = { .B = { .TIE = 1, .TEN = 1 } }; - - PIT_RTI.PITMCR.R = pitmcr.R; - channel->LDVAL.R = interval; - channel->TCTRL.R = tctrl.R; - - rtems_timecounter_simple_install( - &mpc55xx_tc, - reference_clock, - interval, - mpc55xx_tc_get_timecount - ); -} - -static void mpc55xx_clock_cleanup(void) -{ - volatile PIT_RTI_CHANNEL_tag *channel = - &PIT_RTI.CHANNEL [MPC55XX_CLOCK_PIT_CHANNEL]; - - channel->TCTRL.R = 0; -} - -#endif - -#define Clock_driver_timecounter_tick() mpc55xx_tc_tick() -#define Clock_driver_support_initialize_hardware() \ - mpc55xx_clock_initialize() -#define Clock_driver_support_install_isr(isr) \ - mpc55xx_clock_handler_install(isr) -#define Clock_driver_support_shutdown_hardware() \ - mpc55xx_clock_cleanup() - -/* Include shared source clock driver code */ -#include "../../../../libbsp/shared/clockdrv_shell.h" diff --git a/c/src/lib/libbsp/powerpc/mpc8260ads/Makefile.am b/c/src/lib/libbsp/powerpc/mpc8260ads/Makefile.am index 2ca4171cfa..785bf3ddd5 100644 --- a/c/src/lib/libbsp/powerpc/mpc8260ads/Makefile.am +++ b/c/src/lib/libbsp/powerpc/mpc8260ads/Makefile.am @@ -22,7 +22,7 @@ project_lib_LIBRARIES = librtemsbsp.a librtemsbsp_a_SOURCES = # clock -librtemsbsp_a_SOURCES += ../shared/clock/clock.c +librtemsbsp_a_SOURCES +=../../../../../../bsps/powerpc/shared/clock/clock.c # console librtemsbsp_a_SOURCES += console/console.c diff --git a/c/src/lib/libbsp/powerpc/mpc8260ads/clock/p_clock.c b/c/src/lib/libbsp/powerpc/mpc8260ads/clock/p_clock.c deleted file mode 100644 index bc1fdad9b3..0000000000 --- a/c/src/lib/libbsp/powerpc/mpc8260ads/clock/p_clock.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * 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.org/license/LICENSE. - * - * Modified to support the MPC750. - * Modifications Copyright (c) 1999 Eric Valette valette@crf.canon.fr - */ - -#include -#include -#include - -extern void clockOn(void*); -extern void clockOff (void*); -extern int clockIsOn(void*); -extern void Clock_isr(void); - -static rtems_irq_connect_data clockIrqData = {BSP_PERIODIC_TIMER, - (rtems_irq_hdl)Clock_isr, - NULL, - (rtems_irq_enable)clockOn, - (rtems_irq_disable)clockOff, - (rtems_irq_is_enabled)clockIsOn}; - -int BSP_get_clock_irq_level(void) -{ - /* - * Caution : if you change this, you must change the - * definition of BSP_PERIODIC_TIMER accordingly - */ - return BSP_PERIODIC_TIMER; -} - -int BSP_disconnect_clock_handler (void) -{ - if (!BSP_get_current_rtems_irq_handler(&clockIrqData)) { - printk("Unable to stop system clock\n"); - rtems_fatal_error_occurred(1); - } - return BSP_remove_rtems_irq_handler (&clockIrqData); -} - -int BSP_connect_clock_handler (rtems_irq_hdl hdl) -{ - if (!BSP_get_current_rtems_irq_handler(&clockIrqData)) { - printk("Unable to get system clock handler\n"); - rtems_fatal_error_occurred(1); - } - if (!BSP_remove_rtems_irq_handler (&clockIrqData)) { - printk("Unable to remove current system clock handler\n"); - rtems_fatal_error_occurred(1); - } - /* - * Reinit structure - */ - clockIrqData.name = BSP_PERIODIC_TIMER; - clockIrqData.hdl = (rtems_irq_hdl) hdl; - clockIrqData.on = (rtems_irq_enable)clockOn; - clockIrqData.off = (rtems_irq_enable)clockOff; - clockIrqData.isOn = (rtems_irq_is_enabled)clockIsOn; - - return BSP_install_rtems_irq_handler (&clockIrqData); -} diff --git a/c/src/lib/libbsp/powerpc/mvme3100/Makefile.am b/c/src/lib/libbsp/powerpc/mvme3100/Makefile.am index 04f0f83cac..9ef0095441 100644 --- a/c/src/lib/libbsp/powerpc/mvme3100/Makefile.am +++ b/c/src/lib/libbsp/powerpc/mvme3100/Makefile.am @@ -49,7 +49,7 @@ librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/start/bspreset-empty.c librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/rtc/rtc-support.c librtemsbsp_a_SOURCES += tod/todcfg.c # pclock -librtemsbsp_a_SOURCES += ../shared/clock/p_clock.c +librtemsbsp_a_SOURCES +=../../../../../../bsps/powerpc/shared/clock/p_clock.c # console librtemsbsp_a_SOURCES += ../shared/console/uart.c @@ -85,7 +85,7 @@ librtemsbsp_a_SOURCES += network/tsec.c endif librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/cache/cache.c -librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/dev/clock-ppc-dec.c +librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/clock/clock-ppc-dec.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/dev/timer-ppc-dec.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/irq/ppc-irq-legacy.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/mmu/e500-mmu.c diff --git a/c/src/lib/libbsp/powerpc/mvme5500/Makefile.am b/c/src/lib/libbsp/powerpc/mvme5500/Makefile.am index 2876afb720..d947fbc527 100644 --- a/c/src/lib/libbsp/powerpc/mvme5500/Makefile.am +++ b/c/src/lib/libbsp/powerpc/mvme5500/Makefile.am @@ -26,7 +26,7 @@ librtemsbsp_a_SOURCES += startup/bspreset.c librtemsbsp_a_SOURCES += ../shared/startup/probeMemEnd.c # pclock -librtemsbsp_a_SOURCES += ../shared/clock/p_clock.c +librtemsbsp_a_SOURCES +=../../../../../../bsps/powerpc/shared/clock/p_clock.c # console librtemsbsp_a_SOURCES += ../shared/console/uart.c @@ -77,7 +77,7 @@ dist_project_lib_DATA += ../shared/startup/linkcmds.share librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/altivec/vec_sup.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/altivec/vec_sup_asm.S librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/cache/cache.c -librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/dev/clock-ppc-dec.c +librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/clock/clock-ppc-dec.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/dev/timer-ppc-dec.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/mmu/bat.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/mmu/mmuAsm.S diff --git a/c/src/lib/libbsp/powerpc/psim/Makefile.am b/c/src/lib/libbsp/powerpc/psim/Makefile.am index db19b052eb..6253231f5e 100644 --- a/c/src/lib/libbsp/powerpc/psim/Makefile.am +++ b/c/src/lib/libbsp/powerpc/psim/Makefile.am @@ -30,7 +30,7 @@ librtemsbsp_a_SOURCES += ../shared/startup/sbrk.c librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/start/bspreset-empty.c # pclock -librtemsbsp_a_SOURCES += ../shared/clock/p_clock.c +librtemsbsp_a_SOURCES +=../../../../../../bsps/powerpc/shared/clock/p_clock.c # console librtemsbsp_a_SOURCES += ../../shared/console-polled.c # debugio @@ -61,7 +61,7 @@ endif librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/altivec/vec_sup.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/altivec/vec_sup_asm.S librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/cache/cache.c -librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/dev/clock-ppc-dec.c +librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/clock/clock-ppc-dec.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/dev/timer-ppc-dec.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/mmu/bat.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/mmu/mmuAsm.S diff --git a/c/src/lib/libbsp/powerpc/qemuppc/Makefile.am b/c/src/lib/libbsp/powerpc/qemuppc/Makefile.am index c17c54a63e..ef4dc0dda5 100644 --- a/c/src/lib/libbsp/powerpc/qemuppc/Makefile.am +++ b/c/src/lib/libbsp/powerpc/qemuppc/Makefile.am @@ -29,7 +29,7 @@ librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/getentropy/getentropy librtemsbsp_a_SOURCES += startup/cmain.c librtemsbsp_a_SOURCES += startup/bspstart.c # pclock -librtemsbsp_a_SOURCES += ../shared/clock/clock.c +librtemsbsp_a_SOURCES +=../../../../../../bsps/powerpc/shared/clock/clock.c # console librtemsbsp_a_SOURCES += ../../shared/console-polled.c librtemsbsp_a_SOURCES += console/console-io.c diff --git a/c/src/lib/libbsp/powerpc/qoriq/Makefile.am b/c/src/lib/libbsp/powerpc/qoriq/Makefile.am index 0ac8c1d60b..e0c1ce87fc 100644 --- a/c/src/lib/libbsp/powerpc/qoriq/Makefile.am +++ b/c/src/lib/libbsp/powerpc/qoriq/Makefile.am @@ -55,7 +55,7 @@ librtemsbsp_a_SOURCES += startup/bspreset.c librtemsbsp_a_SOURCES += startup/bsprestart.c # Clock -librtemsbsp_a_SOURCES += clock/clock-config.c +librtemsbsp_a_SOURCES +=../../../../../../bsps/powerpc/qoriq/clock/clock-config.c # Timer librtemsbsp_a_SOURCES += timer/timer.c diff --git a/c/src/lib/libbsp/powerpc/qoriq/clock/clock-config.c b/c/src/lib/libbsp/powerpc/qoriq/clock/clock-config.c deleted file mode 100644 index 82d8b8c57f..0000000000 --- a/c/src/lib/libbsp/powerpc/qoriq/clock/clock-config.c +++ /dev/null @@ -1,178 +0,0 @@ -/** - * @file - * - * @ingroup QorIQ - * - * @brief QorIQ clock configuration. - */ - -/* - * Copyright (c) 2011, 2017 embedded brains GmbH. All rights reserved. - * - * embedded brains GmbH - * Dornierstr. 4 - * 82178 Puchheim - * Germany - * - * - * 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. - */ - -#include - -#include - -#include -#include -#include - -/* This is defined in clockdrv_shell.h */ -static rtems_isr Clock_isr(void *arg); - -static struct timecounter qoriq_clock_tc; - -#ifdef QORIQ_IS_HYPERVISOR_GUEST - -#define CLOCK_DRIVER_USE_ONLY_BOOT_PROCESSOR - -void qoriq_decrementer_dispatch(void) -{ - PPC_SET_SPECIAL_PURPOSE_REGISTER(BOOKE_TSR, BOOKE_TSR_DIS); - Clock_isr(NULL); -} - -static uint32_t qoriq_clock_get_timecount(struct timecounter *tc) -{ - return ppc_alternate_time_base(); -} - -static void qoriq_clock_initialize(void) -{ - uint64_t frequency = bsp_time_base_frequency; - uint32_t us_per_tick = rtems_configuration_get_microseconds_per_tick(); - uint32_t interval = (uint32_t) ((frequency * us_per_tick) / 1000000); - - PPC_SET_SPECIAL_PURPOSE_REGISTER(BOOKE_DECAR, interval - 1); - PPC_SET_SPECIAL_PURPOSE_REGISTER_BITS( - BOOKE_TCR, - BOOKE_TCR_DIE | BOOKE_TCR_ARE - ); - ppc_set_decrementer_register(interval - 1); - - qoriq_clock_tc.tc_get_timecount = qoriq_clock_get_timecount; - qoriq_clock_tc.tc_counter_mask = 0xffffffff; - qoriq_clock_tc.tc_frequency = qoriq_clock_frequency; - qoriq_clock_tc.tc_quality = RTEMS_TIMECOUNTER_QUALITY_CLOCK_DRIVER; - rtems_timecounter_install(&qoriq_clock_tc); -} - -#else /* !QORIQ_IS_HYPERVISOR_GUEST */ - -static volatile qoriq_pic_global_timer *const qoriq_clock = - #if QORIQ_CLOCK_TIMER < 4 - &qoriq.pic.gta [QORIQ_CLOCK_TIMER]; - #else - &qoriq.pic.gtb [QORIQ_CLOCK_TIMER - 4]; - #endif - -static volatile qoriq_pic_global_timer *const qoriq_timecounter = - #if QORIQ_CLOCK_TIMECOUNTER < 4 - &qoriq.pic.gta [QORIQ_CLOCK_TIMECOUNTER]; - #else - &qoriq.pic.gtb [QORIQ_CLOCK_TIMECOUNTER - 4]; - #endif - -#define CLOCK_INTERRUPT (QORIQ_IRQ_GT_BASE + QORIQ_CLOCK_TIMER) - -static void qoriq_clock_handler_install(void) -{ - rtems_status_code sc = RTEMS_SUCCESSFUL; - -#if defined(RTEMS_MULTIPROCESSING) && !defined(RTEMS_SMP) - { - Processor_mask affinity; - - _Processor_mask_From_index(&affinity, ppc_processor_id()); - bsp_interrupt_set_affinity(CLOCK_INTERRUPT, &affinity); - } -#endif - - sc = qoriq_pic_set_priority( - CLOCK_INTERRUPT, - QORIQ_PIC_PRIORITY_LOWEST, - NULL - ); - if (sc != RTEMS_SUCCESSFUL) { - rtems_fatal_error_occurred(0xdeadbeef); - } - - sc = rtems_interrupt_handler_install( - CLOCK_INTERRUPT, - "Clock", - RTEMS_INTERRUPT_UNIQUE, - Clock_isr, - NULL - ); - if (sc != RTEMS_SUCCESSFUL) { - rtems_fatal_error_occurred(0xdeadbeef); - } -} - -static uint32_t qoriq_clock_get_timecount(struct timecounter *tc) -{ - uint32_t ccr = qoriq_timecounter->ccr; - - return GTCCR_COUNT_GET(-ccr); -} - -static void qoriq_clock_initialize(void) -{ - uint32_t timer_frequency = BSP_bus_frequency / 8; - uint32_t interval = (uint32_t) (((uint64_t) timer_frequency - * (uint64_t) rtems_configuration_get_microseconds_per_tick()) / 1000000); - - qoriq_clock->bcr = GTBCR_COUNT(interval); - - qoriq_timecounter->bcr = GTBCR_COUNT(0xffffffff); - - qoriq_clock_tc.tc_get_timecount = qoriq_clock_get_timecount; - qoriq_clock_tc.tc_counter_mask = GTCCR_COUNT_GET(0xffffffff); - qoriq_clock_tc.tc_frequency = timer_frequency; - qoriq_clock_tc.tc_quality = RTEMS_TIMECOUNTER_QUALITY_CLOCK_DRIVER; - rtems_timecounter_install(&qoriq_clock_tc); -} - -static void qoriq_clock_cleanup(void) -{ - rtems_status_code sc = RTEMS_SUCCESSFUL; - - qoriq_clock->bcr = GTBCR_CI; - - sc = rtems_interrupt_handler_remove( - CLOCK_INTERRUPT, - Clock_isr, - NULL - ); - if (sc != RTEMS_SUCCESSFUL) { - rtems_fatal_error_occurred(0xdeadbeef); - } -} - -#define Clock_driver_support_install_isr(clock_isr) \ - qoriq_clock_handler_install() - -#define Clock_driver_support_set_interrupt_affinity(online_processors) \ - bsp_interrupt_set_affinity(CLOCK_INTERRUPT, online_processors) - -#define Clock_driver_support_shutdown_hardware() \ - qoriq_clock_cleanup() - -#endif /* QORIQ_IS_HYPERVISOR_GUEST */ - -#define Clock_driver_support_initialize_hardware() \ - qoriq_clock_initialize() - -/* Include shared source clock driver code */ -#include "../../../shared/clockdrv_shell.h" diff --git a/c/src/lib/libbsp/powerpc/shared/clock/clock.c b/c/src/lib/libbsp/powerpc/shared/clock/clock.c deleted file mode 100644 index 431488a901..0000000000 --- a/c/src/lib/libbsp/powerpc/shared/clock/clock.c +++ /dev/null @@ -1,247 +0,0 @@ -/** - * @file - * - * @ingroup powerpc_shared - * - * @brief Source file for a clock driver. - */ - -/* - * Copyright (c) 2008-2015 embedded brains GmbH. All rights reserved. - * - * embedded brains GmbH - * Obere Lagerstr. 30 - * 82178 Puchheim - * Germany - * - * - * 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. - */ - -#include -#include -#include - -#include -#include - -#define RTEMS_STATUS_CHECKS_USE_PRINTK - -#include - -/* - * This variable must be defined in the BSP and valid before clock driver - * initialization. - */ -extern uint32_t bsp_time_base_frequency; - -#define PPC405_PIT 0x3db - -#define PPC_CLOCK_DECREMENTER_MAX UINT32_MAX - -volatile uint32_t Clock_driver_ticks = 0; - -static uint32_t ppc_clock_decrementer_value = PPC_CLOCK_DECREMENTER_MAX; - -static uint32_t ppc_clock_next_time_base; - -static struct timecounter ppc_tc; - -static uint32_t ppc_get_timecount(struct timecounter *tc) -{ - return ppc_time_base(); -} - -static void ppc_clock_no_tick(void) -{ - /* Do nothing */ -} - -static void (*ppc_clock_tick)(void) = ppc_clock_no_tick; - -static int ppc_clock_exception_handler( - BSP_Exception_frame *frame, - unsigned number -) -{ - uint32_t delta = ppc_clock_decrementer_value; - uint32_t next = ppc_clock_next_time_base; - uint32_t dec = 0; - uint32_t now = 0; - uint32_t msr = 0; - - do { - /* Increment clock ticks */ - Clock_driver_ticks += 1; - - /* Enable external exceptions */ - msr = ppc_external_exceptions_enable(); - - /* Call clock ticker */ - ppc_clock_tick(); - - /* Restore machine state */ - ppc_external_exceptions_disable( msr); - - /* Next time base */ - next += delta; - - /* Current time */ - now = ppc_time_base(); - - /* New decrementer value */ - dec = next - now; - } while (dec > delta); - - /* Set decrementer */ - ppc_set_decrementer_register( dec); - - /* Expected next time base */ - ppc_clock_next_time_base = next; - - return 0; -} - -static int ppc_clock_exception_handler_first( - BSP_Exception_frame *frame, - unsigned number -) -{ - /* We have to clear the first pending decrementer exception this way */ - - if (ppc_decrementer_register() >= 0x80000000) { - ppc_clock_exception_handler( frame, number); - } - - ppc_exc_set_handler( ASM_DEC_VECTOR, ppc_clock_exception_handler); - - return 0; -} - -static int ppc_clock_exception_handler_booke( - BSP_Exception_frame *frame, - unsigned number -) -{ - uint32_t msr; - - /* Acknowledge decrementer request */ - PPC_SET_SPECIAL_PURPOSE_REGISTER( BOOKE_TSR, BOOKE_TSR_DIS); - - /* Increment clock ticks */ - Clock_driver_ticks += 1; - - /* Enable external exceptions */ - msr = ppc_external_exceptions_enable(); - - /* Call clock ticker */ - ppc_clock_tick(); - - /* Restore machine state */ - ppc_external_exceptions_disable( msr); - - return 0; -} - -static int ppc_clock_exception_handler_ppc405(BSP_Exception_frame *frame, unsigned number) -{ - uint32_t msr; - - /* Acknowledge PIT request */ - PPC_SET_SPECIAL_PURPOSE_REGISTER(PPC405_TSR, BOOKE_TSR_DIS); - - /* Increment clock ticks */ - Clock_driver_ticks += 1; - - /* Enable external exceptions */ - msr = ppc_external_exceptions_enable(); - - /* Call clock ticker */ - ppc_clock_tick(); - - /* Restore machine state */ - ppc_external_exceptions_disable(msr); - - return 0; -} - -void Clock_exit(void) -{ - /* Set the decrementer to the maximum value */ - ppc_set_decrementer_register( PPC_CLOCK_DECREMENTER_MAX); - - /* Use default clock handler */ - ppc_clock_tick = ppc_clock_no_tick; -} - -rtems_device_driver Clock_initialize( - rtems_device_major_number major, - rtems_device_minor_number minor, - void *arg -) -{ - uint64_t frequency = bsp_time_base_frequency; - uint64_t us_per_tick = rtems_configuration_get_microseconds_per_tick(); - uint32_t interval = (uint32_t) ((frequency * us_per_tick) / 1000000); - - /* - * Set default ticker. - */ - ppc_clock_tick = rtems_timecounter_tick; - - if (ppc_cpu_is_bookE() != PPC_BOOKE_405) { - /* Decrementer value */ - ppc_clock_decrementer_value = interval - 1; - - /* Check decrementer value */ - if (ppc_clock_decrementer_value == 0) { - ppc_clock_decrementer_value = PPC_CLOCK_DECREMENTER_MAX; - RTEMS_SYSLOG_ERROR( "decrementer value would be zero, will be set to maximum value instead\n"); - } - if (ppc_cpu_is_bookE()) { - /* Set decrementer auto-reload value */ - PPC_SET_SPECIAL_PURPOSE_REGISTER( BOOKE_DECAR, ppc_clock_decrementer_value); - - /* Install exception handler */ - ppc_exc_set_handler( ASM_BOOKE_DEC_VECTOR, ppc_clock_exception_handler_booke); - - /* Enable decrementer and auto-reload */ - PPC_SET_SPECIAL_PURPOSE_REGISTER_BITS( BOOKE_TCR, BOOKE_TCR_DIE | BOOKE_TCR_ARE); - } else { - /* Here the decrementer value is actually the interval */ - ++ppc_clock_decrementer_value; - - /* Initialize next time base */ - ppc_clock_next_time_base = ppc_time_base() + ppc_clock_decrementer_value; - - /* Install exception handler */ - ppc_exc_set_handler( ASM_DEC_VECTOR, ppc_clock_exception_handler_first); - } - - /* Set the decrementer value */ - ppc_set_decrementer_register( ppc_clock_decrementer_value); - } else { - /* PIT interval value */ - ppc_clock_decrementer_value = interval; - - /* Install exception handler */ - ppc_exc_set_handler(ASM_BOOKE_DEC_VECTOR, ppc_clock_exception_handler_ppc405); - - /* Enable PIT and auto-reload */ - PPC_SET_SPECIAL_PURPOSE_REGISTER_BITS(PPC405_TCR, BOOKE_TCR_DIE | BOOKE_TCR_ARE); - - /* Set PIT auto-reload and initial value */ - PPC_SET_SPECIAL_PURPOSE_REGISTER(PPC405_PIT, interval); - } - - /* Install timecounter */ - ppc_tc.tc_get_timecount = ppc_get_timecount; - ppc_tc.tc_counter_mask = 0xffffffff; - ppc_tc.tc_frequency = frequency; - ppc_tc.tc_quality = RTEMS_TIMECOUNTER_QUALITY_CLOCK_DRIVER; - rtems_timecounter_install(&ppc_tc); - - return RTEMS_SUCCESSFUL; -} diff --git a/c/src/lib/libbsp/powerpc/shared/clock/p_clock.c b/c/src/lib/libbsp/powerpc/shared/clock/p_clock.c deleted file mode 100644 index 1ff7ca06a6..0000000000 --- a/c/src/lib/libbsp/powerpc/shared/clock/p_clock.c +++ /dev/null @@ -1,43 +0,0 @@ -/* - * 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.org/license/LICENSE. - * - * Modified to support the MPC750. - * Modifications Copyright (c) 1999 Eric Valette valette@crf.canon.fr - */ - -#include -#include -#include -#include - -static rtems_irq_connect_data clockIrqData; -static rtems_irq_connect_data clockIrqData = { - BSP_DECREMENTER, - clockIsr, - NULL, - (rtems_irq_enable)clockOn, - (rtems_irq_disable)clockOff, - (rtems_irq_is_enabled) clockIsOn -}; - -int BSP_disconnect_clock_handler(void) -{ - return BSP_remove_rtems_irq_handler(&clockIrqData); -} - -int BSP_connect_clock_handler(void) -{ - if ( ppc_cpu_is_bookE() ) - clockIrqData.hdl = clockIsrBookE; - - return BSP_install_rtems_irq_handler(&clockIrqData); -} diff --git a/c/src/lib/libbsp/powerpc/ss555/Makefile.am b/c/src/lib/libbsp/powerpc/ss555/Makefile.am index b8911c7dc4..8fbbd11d94 100644 --- a/c/src/lib/libbsp/powerpc/ss555/Makefile.am +++ b/c/src/lib/libbsp/powerpc/ss555/Makefile.am @@ -17,7 +17,7 @@ project_lib_LIBRARIES = librtemsbsp.a librtemsbsp_a_SOURCES = # pclock -librtemsbsp_a_SOURCES += clock/p_clock.c +librtemsbsp_a_SOURCES +=../../../../../../bsps/powerpc/ss555/clock/p_clock.c # console librtemsbsp_a_SOURCES += console/console.c # startup @@ -35,7 +35,7 @@ librtemsbsp_a_SOURCES += startup/tm27supp.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/cache/cache.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/dev/timer-ppc-dec.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/exceptions/ppc_exc_print.c -librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/ss555/dev/clock.c +librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/ss555/clock/clock.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/ss555/dev/console-generic.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/ss555/start/irq_asm.S librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/ss555/start/irq.c diff --git a/c/src/lib/libbsp/powerpc/ss555/clock/p_clock.c b/c/src/lib/libbsp/powerpc/ss555/clock/p_clock.c deleted file mode 100644 index 25785b083f..0000000000 --- a/c/src/lib/libbsp/powerpc/ss555/clock/p_clock.c +++ /dev/null @@ -1,63 +0,0 @@ -/* - * 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.org/license/LICENSE. - * - * SS555 port sponsored by Defence Research and Development Canada - Suffield - * Copyright (C) 2004, Real-Time Systems Inc. (querbach@realtime.bc.ca) - * - * Derived from c/src/lib/libbsp/powerpc/mbx8xx/clock/p_clock.c: - * - * Modified to support the MPC750. - * Modifications Copyright (c) 1999 Eric Valette valette@crf.canon.fr - */ - -#include -#include -#include -#include - -static rtems_irq_connect_data clockIrqData = { - CPU_PERIODIC_TIMER, - (rtems_irq_hdl)Clock_isr, - NULL, - (rtems_irq_enable)clockOn, - (rtems_irq_disable)clockOff, - (rtems_irq_is_enabled)clockIsOn -}; - -int BSP_disconnect_clock_handler (void) -{ - if (!BSP_get_current_rtems_irq_handler(&clockIrqData)) { - printk("Unable to stop system clock\n"); - rtems_fatal_error_occurred(1); - } - return BSP_remove_rtems_irq_handler (&clockIrqData); -} - -int BSP_connect_clock_handler (rtems_irq_hdl hdl) -{ - if (!BSP_get_current_rtems_irq_handler(&clockIrqData)) { - printk("Unable to get system clock handler\n"); - rtems_fatal_error_occurred(1); - } - if (!BSP_remove_rtems_irq_handler (&clockIrqData)) { - printk("Unable to remove current system clock handler\n"); - rtems_fatal_error_occurred(1); - } - /* - * Reinit structure - */ - clockIrqData.name = CPU_PERIODIC_TIMER; - clockIrqData.hdl = (rtems_irq_hdl) hdl; - clockIrqData.on = (rtems_irq_enable)clockOn; - clockIrqData.off = (rtems_irq_enable)clockOff; - clockIrqData.isOn = (rtems_irq_is_enabled)clockIsOn; - - return BSP_install_rtems_irq_handler (&clockIrqData); -} diff --git a/c/src/lib/libbsp/powerpc/t32mppc/Makefile.am b/c/src/lib/libbsp/powerpc/t32mppc/Makefile.am index 6ae8ef3a90..3815ecce79 100644 --- a/c/src/lib/libbsp/powerpc/t32mppc/Makefile.am +++ b/c/src/lib/libbsp/powerpc/t32mppc/Makefile.am @@ -37,7 +37,7 @@ librtemsbsp_a_SOURCES += startup/bspstart.c librtemsbsp_a_SOURCES += startup/bspreset.c # Clock -librtemsbsp_a_SOURCES += clock/clock-config.c +librtemsbsp_a_SOURCES +=../../../../../../bsps/powerpc/t32mppc/clock/clock-config.c # Timer librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/btimer/btimer-stub.c diff --git a/c/src/lib/libbsp/powerpc/t32mppc/clock/clock-config.c b/c/src/lib/libbsp/powerpc/t32mppc/clock/clock-config.c deleted file mode 100644 index 7cdc37b24f..0000000000 --- a/c/src/lib/libbsp/powerpc/t32mppc/clock/clock-config.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2011, 2017 embedded brains GmbH. All rights reserved. - * - * embedded brains GmbH - * Dornierstr. 4 - * 82178 Puchheim - * Germany - * - * - * 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. - */ - -#include - -#include - -#include -#include - -/* This is defined in clockdrv_shell.h */ -static rtems_isr Clock_isr(void *arg); - -static struct timecounter t32mppc_clock_tc; - -#define CLOCK_DRIVER_USE_ONLY_BOOT_PROCESSOR - -void t32mppc_decrementer_dispatch(void) -{ - PPC_SET_SPECIAL_PURPOSE_REGISTER(BOOKE_TSR, BOOKE_TSR_DIS); - Clock_isr(NULL); -} - -static uint32_t t32mppc_clock_get_timecount(struct timecounter *tc) -{ - return ppc_time_base(); -} - -static void t32mppc_clock_initialize(void) -{ - uint64_t frequency = bsp_time_base_frequency / 10; - uint32_t us_per_tick = rtems_configuration_get_microseconds_per_tick(); - uint32_t interval = (uint32_t) ((frequency * us_per_tick) / 1000000); - - PPC_SET_SPECIAL_PURPOSE_REGISTER(BOOKE_DECAR, interval - 1); - PPC_SET_SPECIAL_PURPOSE_REGISTER_BITS( - BOOKE_TCR, - BOOKE_TCR_DIE | BOOKE_TCR_ARE - ); - ppc_set_decrementer_register(interval - 1); - - t32mppc_clock_tc.tc_get_timecount = t32mppc_clock_get_timecount; - t32mppc_clock_tc.tc_counter_mask = 0xffffffff; - t32mppc_clock_tc.tc_frequency = bsp_time_base_frequency; - t32mppc_clock_tc.tc_quality = RTEMS_TIMECOUNTER_QUALITY_CLOCK_DRIVER; - rtems_timecounter_install(&t32mppc_clock_tc); -} - -#define Clock_driver_support_initialize_hardware() \ - t32mppc_clock_initialize() - -/* Include shared source clock driver code */ -#include "../../../shared/clockdrv_shell.h" diff --git a/c/src/lib/libbsp/powerpc/tqm8xx/Makefile.am b/c/src/lib/libbsp/powerpc/tqm8xx/Makefile.am index 79d29d3b8b..0f0af602e9 100644 --- a/c/src/lib/libbsp/powerpc/tqm8xx/Makefile.am +++ b/c/src/lib/libbsp/powerpc/tqm8xx/Makefile.am @@ -28,8 +28,8 @@ librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/irq/irq-default-handler.c librtemsbsp_a_SOURCES += irq/irq.c # clock -librtemsbsp_a_SOURCES += ../shared/clock/clock.c -librtemsbsp_a_SOURCES += clock/p_clock.c +librtemsbsp_a_SOURCES +=../../../../../../bsps/powerpc/shared/clock/clock.c +librtemsbsp_a_SOURCES +=../../../../../../bsps/powerpc/tqm8xx/clock/p_clock.c # console librtemsbsp_a_SOURCES += console/console.c diff --git a/c/src/lib/libbsp/powerpc/tqm8xx/clock/p_clock.c b/c/src/lib/libbsp/powerpc/tqm8xx/clock/p_clock.c deleted file mode 100644 index 4ee201a3b2..0000000000 --- a/c/src/lib/libbsp/powerpc/tqm8xx/clock/p_clock.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * 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.org/license/LICENSE. - * - * Modified to support the MPC750. - * Modifications Copyright (c) 1999 Eric Valette valette@crf.canon.fr - */ - -#include -#include -#include - -extern void clockOn(void*); -extern void clockOff (void*); -extern int clockIsOn(void*); -extern void Clock_isr(void*); - -static void BSP_clock_hdl(void * arg) -{ - Clock_isr(arg); -} - -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; -} diff --git a/c/src/lib/libbsp/powerpc/virtex/Makefile.am b/c/src/lib/libbsp/powerpc/virtex/Makefile.am index cf970610dd..a999d0f3d6 100644 --- a/c/src/lib/libbsp/powerpc/virtex/Makefile.am +++ b/c/src/lib/libbsp/powerpc/virtex/Makefile.am @@ -48,7 +48,7 @@ librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/irq/irq-default-handler.c librtemsbsp_a_SOURCES += irq/irq_init.c # clock -librtemsbsp_a_SOURCES += ../shared/clock/clock.c +librtemsbsp_a_SOURCES +=../../../../../../bsps/powerpc/shared/clock/clock.c if HAS_NETWORKING librtemsbsp_a_SOURCES += = diff --git a/c/src/lib/libbsp/powerpc/virtex4/Makefile.am b/c/src/lib/libbsp/powerpc/virtex4/Makefile.am index f509486328..c9871482e4 100644 --- a/c/src/lib/libbsp/powerpc/virtex4/Makefile.am +++ b/c/src/lib/libbsp/powerpc/virtex4/Makefile.am @@ -41,7 +41,7 @@ librtemsbsp_a_SOURCES += irq/irq_init.c librtemsbsp_a_SOURCES += mmu/mmu.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/cache/cache.c -librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/dev/clock-ppc403.c +librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/clock/clock-ppc403.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/dev/timer-ppc-dec.c diff --git a/c/src/lib/libbsp/powerpc/virtex5/Makefile.am b/c/src/lib/libbsp/powerpc/virtex5/Makefile.am index 52a1e6cbc3..b16b466203 100644 --- a/c/src/lib/libbsp/powerpc/virtex5/Makefile.am +++ b/c/src/lib/libbsp/powerpc/virtex5/Makefile.am @@ -30,7 +30,7 @@ librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/start/bspreset-empty.c librtemsbsp_a_SOURCES += start/start.S # clock & timer -librtemsbsp_a_SOURCES += ../shared/clock/p_clock.c +librtemsbsp_a_SOURCES +=../../../../../../bsps/powerpc/shared/clock/p_clock.c # console librtemsbsp_a_SOURCES += startup/dummy_console.c @@ -43,7 +43,7 @@ librtemsbsp_a_SOURCES += irq/irq_init.c librtemsbsp_a_SOURCES += mmu/mmu.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/cache/cache.c -librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/dev/clock-ppc-dec.c +librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/clock/clock-ppc-dec.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/dev/timer-ppc-dec.c -- cgit v1.2.3