/*
|
*
|
* (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;
|
}
|