diff options
Diffstat (limited to 'c/src/lib/libcpu/powerpc/mpc55xx/misc')
-rw-r--r-- | c/src/lib/libcpu/powerpc/mpc55xx/misc/flash.S | 112 | ||||
-rw-r--r-- | c/src/lib/libcpu/powerpc/mpc55xx/misc/fmpll.S | 193 |
2 files changed, 0 insertions, 305 deletions
diff --git a/c/src/lib/libcpu/powerpc/mpc55xx/misc/flash.S b/c/src/lib/libcpu/powerpc/mpc55xx/misc/flash.S deleted file mode 100644 index c1e75c88b2..0000000000 --- a/c/src/lib/libcpu/powerpc/mpc55xx/misc/flash.S +++ /dev/null @@ -1,112 +0,0 @@ -/** - * @file - * - * @ingroup mpc55xx_asm - * - * @brief Flash configuration. - */ - -/* - * Copyright (c) 2008-2011 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.com/license/LICENSE. - * - * $Id$ - */ - -#include <libcpu/powerpc-utility.h> -#include <mpc55xx/reg-defs.h> - -.section ".bsp_start_text", "ax" - -/* Optimized flash configurations (Table 13-15 [MPC5567 Microcontroller Reference Manual]) */ -.equ FLASH_SETTINGS_RESET, 0xff00 -.equ FLASH_SETTINGS_82, FLASH_BUICR_CPU_PREFTCH | FLASH_BUICR_APC_1 | FLASH_BUICR_RWSC_1 | FLASH_BUICR_WWSC_1 | FLASH_BUICR_DPFEN_3 | FLASH_BUICR_IPFEN_3 | FLASH_BUICR_PFLIM_6 | FLASH_BUICR_BFEN -.equ FLASH_SETTINGS_102, FLASH_BUICR_CPU_PREFTCH | FLASH_BUICR_APC_1 | FLASH_BUICR_RWSC_2 | FLASH_BUICR_WWSC_1 | FLASH_BUICR_DPFEN_3 | FLASH_BUICR_IPFEN_3 | FLASH_BUICR_PFLIM_6 | FLASH_BUICR_BFEN -.equ FLASH_SETTINGS_132, FLASH_BUICR_CPU_PREFTCH | FLASH_BUICR_APC_2 | FLASH_BUICR_RWSC_3 | FLASH_BUICR_WWSC_1 | FLASH_BUICR_DPFEN_3 | FLASH_BUICR_IPFEN_3 | FLASH_BUICR_PFLIM_6 | FLASH_BUICR_BFEN -.equ FLASH_SETTINGS_264, 0x01716B15 - -/** - * @fn void mpc55xx_flash_init() - * @brief Optimized flash configuration. - * @warning Code will be copied and executed on the stack. The stack pointer - * will not be updated, since this function has to work before memory - * initialization. - */ -GLOBAL_FUNCTION mpc55xx_flash_init - mflr r31 - - /* Flash settings dependent on system clock */ - bl mpc55xx_get_system_clock - LWI r4, 82000000 - cmpw r3, r4 - ble clock_82 - LWI r4, 102000000 - cmpw r3, r4 - ble clock_102 - LWI r4, 132000000 - cmpw r3, r4 - ble clock_132 - LWI r4, 264000000 - cmpw r3, r4 - ble clock_264 - LWI r30, FLASH_SETTINGS_RESET - b settings_done -clock_82: - LWI r30, FLASH_SETTINGS_82 - b settings_done -clock_102: - LWI r30, FLASH_SETTINGS_102 - b settings_done -clock_132: - LWI r30, FLASH_SETTINGS_132 - b settings_done -clock_264: - LWI r30, FLASH_SETTINGS_264 - b settings_done -settings_done: - - /* Copy store code on the stack */ - LA r3, store_start - LA r5, store_end - subf r5, r3, r5 - subf r4, r5, r1 - - /* Assert: Proper alignment of destination start */ - andi. r6, r4, 0x7 - bne twiddle - - /* Copy */ - bl mpc55xx_copy_8 - - LA r6, FLASH_BIUCR - - /* Execute store code */ - mtctr r4 - bctrl - - mtlr r31 - blr - -/* - * Store flash settings - */ - - .align 3 - .set store_start, . - stw r30, 0(r6) - isync - blr - .align 3 - .set store_end, . - -twiddle: - b twiddle diff --git a/c/src/lib/libcpu/powerpc/mpc55xx/misc/fmpll.S b/c/src/lib/libcpu/powerpc/mpc55xx/misc/fmpll.S deleted file mode 100644 index 6613f0bd1b..0000000000 --- a/c/src/lib/libcpu/powerpc/mpc55xx/misc/fmpll.S +++ /dev/null @@ -1,193 +0,0 @@ -/** - * @file - * - * @ingroup mpc55xx_asm - * - * @brief FMPLL setup. - */ - -/* - * Copyright (c) 2008-2011 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.com/license/LICENSE. - * - * $Id$ - */ - -#include <libcpu/powerpc-utility.h> -#include <mpc55xx/reg-defs.h> -#include <bspopts.h> - -#define FMPLL_IS_MPC551X (5510 <= MPC55XX_CHIP_TYPE && MPC55XX_CHIP_TYPE <= 5517) - -#define FMPLL_IS_MPC5674 (MPC55XX_CHIP_TYPE == 5674) - -#define FMPLL_HAS_ENHANCED_FMPLL (FMPLL_IS_MPC551X || FMPLL_IS_MPC5674) - - .section ".bsp_start_text", "ax" - -/* Timeout for delay in clocks */ -.equ FMPLL_TIMEOUT, 6000 - -.macro DO_SETTING setting - lwz r5, \setting - stw r5, 0(r4) - msync - bl fmpll_wait_for_lock -.endm - -/** - * @fn void mpc55xx_fmpll_init() - * @brief Configure FMPLL after reset. - */ -GLOBAL_FUNCTION mpc55xx_fmpll_init - /* Save link register */ - mflr r9 - -#if FMPLL_HAS_ENHANCED_FMPLL - /* - * for MPC5510: pass in ptr to array with: - * off 0: temp setting for ESYNCR2 - * off 4: final setting for ESYNCR2 - * off 8: final setting for ESYNCR1 - */ - LA r4, FMPLL_ESYNCR2 - - lwz r5, 0(r3) - stw r5, 0(r4) - msync - - lwz r5, 8(r3) - stw r5, (FMPLL_ESYNCR1-FMPLL_ESYNCR2)(r4) - msync - bl fmpll_wait_for_lock - - DO_SETTING 4(r3) - -#if FMPLL_IS_MPC551X - /* - * switch to PLL clock in SIU - */ - LA r4, SIU_SYSCLK - lwz r5, 0(r4) - LWI r6, ~SIU_SYSCLK_SYSCLKSEL_MASK - and r5, r5, r6 - LWI r6, SIU_SYSCLK_SYSCLKSEL_PLL - or r5, r5, r6 - stw r5, 0(r4) -#endif /* FMPLL_IS_MPC551X */ -#else /* !FMPLL_HAS_ENHANCED_FMPLL */ - /* - * for MPC5566: pass in ptr to array with: - * off 0: temp setting for SYNCR - * off 4: final setting for SYNCR - */ - - LA r4, FMPLL_SYNCR - - DO_SETTING 0(r3) - DO_SETTING 4(r3) - - /* Enable loss-of-clock and loss-of-lock IRQs */ - lwz r5, 0(r4) - LWI r6, FMPLL_SYNCR_LOCIRQ | FMPLL_SYNCR_LOLIRQ - or r5, r5, r6 - - /* Disable loss-of-clock and loss-of-lock resets */ - LWI r6, ~FMPLL_SYNCR_LOCRE & ~FMPLL_SYNCR_LOLRE - and r5, r5, r6 - stw r5, 0(r4) -#endif /* !FMPLL_HAS_ENHANCED_FMPLL */ - - /* Restore link register and return */ - mtlr r9 - blr - -fmpll_wait_for_lock: - LWI r6, FMPLL_TIMEOUT - mtctr r6 - - LWI r7, FMPLL_SYNSR_LOCK - - LA r6, FMPLL_SYNSR - -fmpll_not_locked: - bdnz fmpll_continue - - b mpc55xx_system_reset -fmpll_continue: - lwz r5, 0(r6) - and. r5, r5, r7 - beq fmpll_not_locked - - blr - - .section ".text", "aw" - -/** - * @fn int mpc55xx_get_system_clock() - * @brief Returns the system clock. - */ -GLOBAL_FUNCTION mpc55xx_get_system_clock -#if FMPLL_HAS_ENHANCED_FMPLL - LA r4, FMPLL_ESYNCR1 - lwz r3, 0(r4) - /* EPREDIV */ - rlwinm r5, r3,16, 28, 31 - - /* MFD */ - rlwinm r6, r3,0, 24, 31 - - LA r4, FMPLL_ESYNCR2 - lwz r3, 0(r4) - /* ERFD */ - rlwinm r7, r3,0, 26, 31 - - LWI r8, MPC55XX_FMPLL_REF_CLOCK - addi r5, r5, 1 - addi r6, r6,16 - addi r7, r7, 1 - divw r3, r8, r5 /* REF_CLOCK/PREDIV */ - mullw r3, r6, r3 /* REF_CLOCK/PREDIV*MFD */ - divw r3, r3, r7 /* REF_CLOCK/PREDIV*MFD/RFD */ -#else /* !FMPLL_HAS_ENHANCED_FMPLL */ - LA r4, FMPLL_SYNCR - lwz r3, 0(r4) - - /* PREDIV */ - rlwinm r5, r3, 4, 29, 31 - - /* MFD */ - rlwinm r6, r3, 9, 27, 31 - - /* RFD */ - rlwinm r7, r3, 13, 29, 31 - /* Calculate system clock (Table 11-10 [MPC5567 Microcontroller Reference Manual]) */ - LWI r8, MPC55XX_FMPLL_REF_CLOCK - addi r5, r5, 1 - addi r6, r6, 4 - mullw r6, r6, r8 - sraw r6, r6, r7 - divw r3, r6, r5 -#endif /* !FMPLL_HAS_ENHANCED_FMPLL */ - - blr - -/** - * @fn void mpc55xx_system_reset() - * @brief Software system reset. - */ -GLOBAL_FUNCTION mpc55xx_system_reset - LA r8, SIU_SRCR - LWI r9, SIU_SRCR_SSR - stw r9, 0(r8) -twiddle: - b twiddle |