hc
2024-05-16 8d2a02b24d66aa359e83eebc1ed3c0f85367a1cb
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
61
62
63
64
65
66
67
68
69
70
71
/*
 *
 * (C) COPYRIGHT 2011-2013 ARM Limited. All rights reserved.
 *
 * This program is free software and is provided to you under the terms of the
 * GNU General Public License version 2 as published by the Free Software
 * Foundation, and any use by you of this program is subject to the terms
 * of such GNU licence.
 *
 * A copy of the licence is included with the program, and can also be obtained
 * from Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA  02110-1301, USA.
 *
 */
 
 
 
 
 
#include <linux/io.h>
#include <mali_kbase.h>
#include "mali_kbase_cpu_vexpress.h"
 
#define HZ_IN_MHZ                        (1000000)
 
#define CORETILE_EXPRESS_A9X4_SCC_START    (0x100E2000)
#define MOTHERBOARD_SYS_CFG_START        (0x10000000)
#define SYS_CFGDATA_OFFSET                (0x000000A0)
#define SYS_CFGCTRL_OFFSET                (0x000000A4)
#define SYS_CFGSTAT_OFFSET                (0x000000A8)
 
#define SYS_CFGCTRL_START_BIT_VALUE          (1 << 31)
#define READ_REG_BIT_VALUE                  (0 << 30)
#define DCC_DEFAULT_BIT_VALUE              (0 << 26)
#define SYS_CFG_OSC_FUNC_BIT_VALUE          (1 << 20)
#define SITE_DEFAULT_BIT_VALUE              (1 << 16)
#define BOARD_STACK_POS_DEFAULT_BIT_VALUE (0 << 12)
#define DEVICE_DEFAULT_BIT_VALUE          (2 <<  0)
#define SYS_CFG_COMPLETE_BIT_VALUE          (1 <<  0)
#define SYS_CFG_ERROR_BIT_VALUE              (1 <<  1)
 
#define FEED_REG_BIT_MASK                (0x0F)
#define FCLK_PA_DIVIDE_BIT_SHIFT        (0x03)
#define FCLK_PB_DIVIDE_BIT_SHIFT        (0x07)
#define FCLK_PC_DIVIDE_BIT_SHIFT        (0x0B)
#define AXICLK_PA_DIVIDE_BIT_SHIFT        (0x0F)
#define AXICLK_PB_DIVIDE_BIT_SHIFT        (0x13)
 
#define IS_SINGLE_BIT_SET(val, pos)        (val&(1<<pos))
 
#define CPU_CLOCK_SPEED_UNDEFINED 0
 
#define CPU_CLOCK_SPEED_6XV7 50
 
static u32 cpu_clock_speed = CPU_CLOCK_SPEED_UNDEFINED;
 
static DEFINE_RAW_SPINLOCK(syscfg_lock);
/**
 * kbase_get_vendor_specific_cpu_clock_speed
 * @brief  Retrieves the CPU clock speed.
 *         The implementation is platform specific.
 * @param[out]    cpu_clock - the value of CPU clock speed in MHz
 * @return        0 on success, 1 otherwise
*/
int kbase_get_vexpress_cpu_clock_speed(u32 *cpu_clock)
{
   /* TODO: MIDBASE-2873 - Provide runtime detection of CPU clock freq for 6XV7 board */
   *cpu_clock = CPU_CLOCK_SPEED_6XV7;
 
   return 0;
}