hc
2024-03-26 e0728245c89800c2038c23308f2d88969d5b41c8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/********************************************************************************
Copyright (C) 2018 Marvell International Ltd.
 
SPDX-License-Identifier: BSD-2-Clause-Patent
 
Glossary - abbreviations used in Marvell SampleAtReset library implementation:
AP - Application Processor hardware block (Armada 7k8k incorporates AP806)
CP - South Bridge hardware blocks (Armada 7k8k incorporates CP110)
SAR - Sample At Reset
 
*******************************************************************************/
 
#define SAR_MAX_OPTIONS           16
 
#define AP806_SAR_BASE            0xf06f8200
#define SAR_CLOCK_FREQUENCY_MODE_MASK  0x1f
 
#define CP110_SAR_BASE(_CpIndex)  (0xf2000000 + (0x2000000 * (_CpIndex)) + 0x400200)
 
typedef enum {
  CPU_2000_DDR_1200_RCLK_1200 = 0x0,
  CPU_2000_DDR_1050_RCLK_1050 = 0x1,
  CPU_1600_DDR_800_RCLK_800   = 0x4,
  CPU_1800_DDR_1200_RCLK_1200 = 0x6,
  CPU_1800_DDR_1050_RCLK_1050 = 0x7,
  CPU_1600_DDR_1050_RCLK_1050 = 0x0d,
  CPU_1000_DDR_650_RCLK_650   = 0x13,
  CPU_1300_DDR_800_RCLK_800   = 0x14,
  CPU_1300_DDR_650_RCLK_650   = 0x17,
  CPU_1200_DDR_800_RCLK_800   = 0x19,
  CPU_1400_DDR_800_RCLK_800   = 0x1a,
  CPU_600_DDR_800_RCLK_800    = 0x1b,
  CPU_800_DDR_800_RCLK_800    = 0x1c,
  CPU_1000_DDR_800_RCLK_800   = 0x1d,
} CLOCKING_OPTIONS;
 
typedef struct {
  UINT32 CpuFrequency;
  UINT32 DdrFrequency;
  UINT32 RingFrequency;
  CLOCKING_OPTIONS ClockingOption;
} PLL_FREQUENCY_DESCRIPTION;
 
STATIC CONST PLL_FREQUENCY_DESCRIPTION PllFrequencyTable[SAR_MAX_OPTIONS] = {
  /* CPU   DDR   Ring  [MHz] */
  {2000,  1200,  1200, CPU_2000_DDR_1200_RCLK_1200},
  {2000,  1050,  1050, CPU_2000_DDR_1050_RCLK_1050},
  {1800,  1200,  1200, CPU_1800_DDR_1200_RCLK_1200},
  {1800,  1050,  1050, CPU_1800_DDR_1050_RCLK_1050},
  {1600,  1050,  1050, CPU_1600_DDR_1050_RCLK_1050},
  {1300,  800 ,  800 , CPU_1300_DDR_800_RCLK_800},
  {1300,  650 ,  650 , CPU_1300_DDR_650_RCLK_650},
  {1600,  800 ,  800 , CPU_1600_DDR_800_RCLK_800},
  {1000,  650 ,  650 , CPU_1000_DDR_650_RCLK_650},
  {1200,  800 ,  800 , CPU_1200_DDR_800_RCLK_800},
  {1400,  800 ,  800 , CPU_1400_DDR_800_RCLK_800},
  {600 ,  800 ,  800 , CPU_600_DDR_800_RCLK_800},
  {800 ,  800 ,  800 , CPU_800_DDR_800_RCLK_800},
  {1000,  800 ,  800 , CPU_1000_DDR_800_RCLK_800}
};