mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-11 21:14:07 +08:00
ARM: OMAP5: voltagedomain data: Add OMAP5 voltage domain data
Add voltagedomain related data for OMAP54XX SOCs. OMAP4 OPP data is used for now. OMAP5 OPP data will be added as part of OMAP5 DVFS support. Cc: Kevin Hilman <khilman@deeprootsystems.com> Cc: Paul Walmsley <paul@pwsan.com> Signed-off-by: Benoit Cousson <b-cousson@ti.com> Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com> Signed-off-by: Paul Walmsley <paul@pwsan.com>
This commit is contained in:
parent
08e4830d71
commit
20d49e9ccf
@ -171,6 +171,7 @@ extern void omap2xxx_voltagedomains_init(void);
|
||||
extern void omap3xxx_voltagedomains_init(void);
|
||||
extern void am33xx_voltagedomains_init(void);
|
||||
extern void omap44xx_voltagedomains_init(void);
|
||||
extern void omap54xx_voltagedomains_init(void);
|
||||
|
||||
struct voltagedomain *voltdm_lookup(const char *name);
|
||||
void voltdm_init(struct voltagedomain **voltdm_list);
|
||||
|
102
arch/arm/mach-omap2/voltagedomains54xx_data.c
Normal file
102
arch/arm/mach-omap2/voltagedomains54xx_data.c
Normal file
@ -0,0 +1,102 @@
|
||||
/*
|
||||
* OMAP5 Voltage Management Routines
|
||||
*
|
||||
* Based on voltagedomains44xx_data.c
|
||||
*
|
||||
* Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/init.h>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
#include "prm54xx.h"
|
||||
#include "voltage.h"
|
||||
#include "omap_opp_data.h"
|
||||
#include "vc.h"
|
||||
#include "vp.h"
|
||||
|
||||
static const struct omap_vfsm_instance omap5_vdd_mpu_vfsm = {
|
||||
.voltsetup_reg = OMAP54XX_PRM_VOLTSETUP_MPU_RET_SLEEP_OFFSET,
|
||||
};
|
||||
|
||||
static const struct omap_vfsm_instance omap5_vdd_mm_vfsm = {
|
||||
.voltsetup_reg = OMAP54XX_PRM_VOLTSETUP_MM_RET_SLEEP_OFFSET,
|
||||
};
|
||||
|
||||
static const struct omap_vfsm_instance omap5_vdd_core_vfsm = {
|
||||
.voltsetup_reg = OMAP54XX_PRM_VOLTSETUP_CORE_RET_SLEEP_OFFSET,
|
||||
};
|
||||
|
||||
static struct voltagedomain omap5_voltdm_mpu = {
|
||||
.name = "mpu",
|
||||
.scalable = true,
|
||||
.read = omap4_prm_vcvp_read,
|
||||
.write = omap4_prm_vcvp_write,
|
||||
.rmw = omap4_prm_vcvp_rmw,
|
||||
.vc = &omap4_vc_mpu,
|
||||
.vfsm = &omap5_vdd_mpu_vfsm,
|
||||
.vp = &omap4_vp_mpu,
|
||||
};
|
||||
|
||||
static struct voltagedomain omap5_voltdm_mm = {
|
||||
.name = "mm",
|
||||
.scalable = true,
|
||||
.read = omap4_prm_vcvp_read,
|
||||
.write = omap4_prm_vcvp_write,
|
||||
.rmw = omap4_prm_vcvp_rmw,
|
||||
.vc = &omap4_vc_iva,
|
||||
.vfsm = &omap5_vdd_mm_vfsm,
|
||||
.vp = &omap4_vp_iva,
|
||||
};
|
||||
|
||||
static struct voltagedomain omap5_voltdm_core = {
|
||||
.name = "core",
|
||||
.scalable = true,
|
||||
.read = omap4_prm_vcvp_read,
|
||||
.write = omap4_prm_vcvp_write,
|
||||
.rmw = omap4_prm_vcvp_rmw,
|
||||
.vc = &omap4_vc_core,
|
||||
.vfsm = &omap5_vdd_core_vfsm,
|
||||
.vp = &omap4_vp_core,
|
||||
};
|
||||
|
||||
static struct voltagedomain omap5_voltdm_wkup = {
|
||||
.name = "wkup",
|
||||
};
|
||||
|
||||
static struct voltagedomain *voltagedomains_omap5[] __initdata = {
|
||||
&omap5_voltdm_mpu,
|
||||
&omap5_voltdm_mm,
|
||||
&omap5_voltdm_core,
|
||||
&omap5_voltdm_wkup,
|
||||
NULL,
|
||||
};
|
||||
|
||||
static const char *sys_clk_name __initdata = "sys_clkin";
|
||||
|
||||
void __init omap54xx_voltagedomains_init(void)
|
||||
{
|
||||
struct voltagedomain *voltdm;
|
||||
int i;
|
||||
|
||||
/*
|
||||
* XXX Will depend on the process, validation, and binning
|
||||
* for the currently-running IC. Use OMAP4 data for time being.
|
||||
*/
|
||||
#ifdef CONFIG_PM_OPP
|
||||
omap5_voltdm_mpu.volt_data = omap446x_vdd_mpu_volt_data;
|
||||
omap5_voltdm_mm.volt_data = omap446x_vdd_iva_volt_data;
|
||||
omap5_voltdm_core.volt_data = omap446x_vdd_core_volt_data;
|
||||
#endif
|
||||
|
||||
for (i = 0; voltdm = voltagedomains_omap5[i], voltdm; i++)
|
||||
voltdm->sys_clk.name = sys_clk_name;
|
||||
|
||||
voltdm_init(voltagedomains_omap5);
|
||||
};
|
Loading…
Reference in New Issue
Block a user