summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-04-19 06:35:52 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-04-20 09:57:01 +0200
commit7632906fc290b652416ab59eb5fb49356c064ed6 (patch)
treeac036b1f95637e044e10138ceea8d2b56d80ec97 /c/src/lib/libbsp/powerpc
parentbsps: Move bspsmpgetcurrentprocessor.c to bsps (diff)
downloadrtems-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/powerpc')
-rw-r--r--c/src/lib/libbsp/powerpc/beatnik/Makefile.am4
-rw-r--r--c/src/lib/libbsp/powerpc/gen5200/Makefile.am2
-rw-r--r--c/src/lib/libbsp/powerpc/gen83xx/Makefile.am2
-rw-r--r--c/src/lib/libbsp/powerpc/haleakala/Makefile.am2
-rw-r--r--c/src/lib/libbsp/powerpc/motorola_powerpc/Makefile.am4
-rw-r--r--c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am2
-rw-r--r--c/src/lib/libbsp/powerpc/mpc55xxevb/clock/clock-config.c257
-rw-r--r--c/src/lib/libbsp/powerpc/mpc8260ads/Makefile.am2
-rw-r--r--c/src/lib/libbsp/powerpc/mpc8260ads/clock/p_clock.c69
-rw-r--r--c/src/lib/libbsp/powerpc/mvme3100/Makefile.am4
-rw-r--r--c/src/lib/libbsp/powerpc/mvme5500/Makefile.am4
-rw-r--r--c/src/lib/libbsp/powerpc/psim/Makefile.am4
-rw-r--r--c/src/lib/libbsp/powerpc/qemuppc/Makefile.am2
-rw-r--r--c/src/lib/libbsp/powerpc/qoriq/Makefile.am2
-rw-r--r--c/src/lib/libbsp/powerpc/qoriq/clock/clock-config.c178
-rw-r--r--c/src/lib/libbsp/powerpc/shared/clock/clock.c247
-rw-r--r--c/src/lib/libbsp/powerpc/shared/clock/p_clock.c43
-rw-r--r--c/src/lib/libbsp/powerpc/ss555/Makefile.am4
-rw-r--r--c/src/lib/libbsp/powerpc/ss555/clock/p_clock.c63
-rw-r--r--c/src/lib/libbsp/powerpc/t32mppc/Makefile.am2
-rw-r--r--c/src/lib/libbsp/powerpc/t32mppc/clock/clock-config.c64
-rw-r--r--c/src/lib/libbsp/powerpc/tqm8xx/Makefile.am4
-rw-r--r--c/src/lib/libbsp/powerpc/tqm8xx/clock/p_clock.c58
-rw-r--r--c/src/lib/libbsp/powerpc/virtex/Makefile.am2
-rw-r--r--c/src/lib/libbsp/powerpc/virtex4/Makefile.am2
-rw-r--r--c/src/lib/libbsp/powerpc/virtex5/Makefile.am4
26 files changed, 26 insertions, 1005 deletions
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
- * <rtems@embedded-brains.de>
- *
- * 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 <bsp.h>
-#include <bsp/fatal.h>
-#include <bsp/irq.h>
-
-#include <mpc55xx/regs.h>
-
-#include <rtems/timecounter.h>
-
-void Clock_isr(void *arg);
-
-static rtems_timecounter_simple mpc55xx_tc;
-
-#if defined(MPC55XX_CLOCK_EMIOS_CHANNEL)
-
-#include <mpc55xx/emios.h>
-
-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 <bsp.h>
-#include <rtems/bspIo.h>
-#include <bsp/irq.h>
-
-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
- * <rtems@embedded-brains.de>
- *
- * 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 <rtems/timecounter.h>
-
-#include <libcpu/powerpc-utility.h>
-
-#include <bsp.h>
-#include <bsp/qoriq.h>
-#include <bsp/irq.h>
-
-/* 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
- * <rtems@embedded-brains.de>
- *
- * 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 <rtems.h>
-#include <rtems/clockdrv.h>
-#include <rtems/timecounter.h>
-
-#include <libcpu/powerpc-utility.h>
-#include <bsp/vectors.h>
-
-#define RTEMS_STATUS_CHECKS_USE_PRINTK
-
-#include <rtems/status-checks.h>
-
-/*
- * 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 <bsp.h>
-#include <bsp/irq.h>
-#include <libcpu/c_clock.h>
-#include <libcpu/cpuIdent.h>
-
-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 <bsp.h>
-#include <bsp/irq.h>
-#include <rtems/bspIo.h>
-#include <mpc5xx.h>
-
-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
- * <rtems@embedded-brains.de>
- *
- * 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 <rtems/timecounter.h>
-
-#include <libcpu/powerpc-utility.h>
-
-#include <bsp.h>
-#include <bsp/irq.h>
-
-/* 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 <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*);
-
-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