source: rtems/bsps/powerpc/mpc55xxevb/start/start-config-clock.c @ a2dad96

5
Last change on this file since a2dad96 was 9964895, checked in by Sebastian Huber <sebastian.huber@…>, on 04/20/18 at 08:35:35

bsps: Move startup files to bsps

Adjust build support files to new directory layout.

This patch is a part of the BSP source reorganization.

Update #3285.

  • Property mode set to 100644
File size: 3.1 KB
Line 
1/**
2 * @file
3 *
4 * @ingroup mpc55xx
5 *
6 * @brief Clock and FMPLL configuration.
7 */
8
9/*
10 * Copyright (c) 2008-2012 embedded brains GmbH.  All rights reserved.
11 *
12 *  embedded brains GmbH
13 *  Obere Lagerstr. 30
14 *  82178 Puchheim
15 *  Germany
16 *  <rtems@embedded-brains.de>
17 *
18 * The license and distribution terms for this file may be
19 * found in the file LICENSE in this distribution or at
20 * http://www.rtems.org/license/LICENSE.
21 */
22
23#include <bsp/mpc55xx-config.h>
24
25const mpc55xx_clock_config mpc55xx_start_config_clock [1] = { {
26  #ifdef MPC55XX_HAS_FMPLL
27    .syncr_tmp = {
28      .B = {
29        .PREDIV = MPC55XX_FMPLL_PREDIV - 1,
30        .MFD = MPC55XX_FMPLL_MFD,
31        .RFD = 2,
32        .LOCEN = 1
33      }
34    },
35    .syncr_final = {
36      .B = {
37        .PREDIV = MPC55XX_FMPLL_PREDIV - 1,
38        .MFD = MPC55XX_FMPLL_MFD,
39        .RFD = 0,
40        .LOCEN = 1,
41        .LOLIRQ = 1,
42        .LOCIRQ = 1
43      }
44    }
45  #endif
46  #ifdef MPC55XX_HAS_FMPLL_ENHANCED
47    #define EPREDIV_VAL (MPC55XX_FMPLL_PREDIV-1)
48    #define EMFD_VAL    (MPC55XX_FMPLL_MFD-16)
49    #define VCO_CLK_REF (MPC55XX_REFERENCE_CLOCK/(EPREDIV_VAL+1))
50    #define VCO_CLK_OUT (VCO_CLK_REF*(EMFD_VAL+16))
51    #define ERFD_VAL \
52      (((VCO_CLK_OUT + MPC55XX_SYSTEM_CLOCK - 1) / MPC55XX_SYSTEM_CLOCK)-1)
53
54    .esyncr2_tmp = {
55      .B = {
56        .LOCEN = 0,
57        .LOLRE = 0,
58        .LOCRE = 0,
59        .LOLIRQ = 0,
60        .LOCIRQ = 0,
61        .ERATE = 0,
62        .EDEPTH = 0,
63        .ERFD = ERFD_VAL + 2 /* reduce output clock during init */
64      }
65    },
66    .esyncr2_final = {
67      .B = {
68        .LOCEN = 0,
69        .LOLRE = 0,
70        .LOCRE = 0,
71        .LOLIRQ = 0,
72        .LOCIRQ = 0,
73        .ERATE = 0,
74        #if MPC55XX_CHIP_FAMILY  == 567
75          .CLKCFG_DIS = 1,
76        #endif
77        .EDEPTH = 0,
78        .ERFD = ERFD_VAL /* nominal output clock after init */
79      }
80    },
81    .esyncr1_final = {
82      .B = {
83        .CLKCFG = MPC55XX_FMPLL_ESYNCR1_CLKCFG,
84        .EPREDIV = EPREDIV_VAL,
85        .EMFD = EMFD_VAL
86      }
87    }
88  #endif
89  #ifdef MPC55XX_HAS_MODE_CONTROL
90    .fmpll = {
91      {
92        .cr = {
93          #if MPC55XX_REFERENCE_CLOCK == 8000000
94            .B = { .IDF = 0, .ODF = 1, .NDIV = 60, .I_LOCK = 1, .PLL_ON = 1 }
95          #elif MPC55XX_REFERENCE_CLOCK == 40000000
96            .B = { .IDF = 3, .ODF = 1, .NDIV = 48, .I_LOCK = 1, .PLL_ON = 1 }
97          #else
98            #error "unexpected reference clock"
99          #endif
100        }
101      },
102      {
103        .cr = {
104          .B = { .IDF = 3, .ODF = 2, .NDIV = 32, .I_LOCK = 1, .PLL_ON = 1 }
105        }
106      }
107    },
108    .ocds_sc = {
109      .B = { .SELDIV = 2, .SELCTL = 2 }
110    },
111    .auxclk = {
112      [0] = {
113        .AC_SC = { .B = { .SELCTL = 4 } },
114        .AC_DC0_3 = { .B = { .DE0 = 1, .DIV0 = 0 } }
115      },
116      [1] = {
117        .AC_SC = { .B = { .SELCTL = 4 } },
118        .AC_DC0_3 = { .B = { .DE0 = 1, .DIV0 = 11 } }
119      },
120      [2] = {
121        .AC_SC = { .B = { .SELCTL = 4 } },
122        .AC_DC0_3 = { .B = { .DE0 = 1, .DIV0 = 11 } }
123      },
124      [3] = {
125        .AC_SC = { .B = { .SELCTL = 1 } }
126      },
127      [4] = {
128        .AC_SC = { .B = { .SELCTL = 1 } }
129      }
130    }
131  #endif
132} };
Note: See TracBrowser for help on using the repository browser.