2011-03-11 08:17:45 +03:00
/*
* OMAP3 Voltage Processor ( VP ) data
*
* Copyright ( C ) 2007 , 2010 Texas Instruments , Inc .
* Rajendra Nayak < rnayak @ ti . com >
* Lesly A M < x0080970 @ ti . com >
* Thara Gopinath < thara @ ti . com >
*
* Copyright ( C ) 2008 , 2011 Nokia Corporation
* Kalle Jokiniemi
* Paul Walmsley
*
* 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/io.h>
# include <linux/err.h>
# include <linux/init.h>
2011-11-11 01:45:17 +04:00
# include "common.h"
2011-03-11 08:17:45 +03:00
# include "prm44xx.h"
# include "prm-regbits-44xx.h"
# include "voltage.h"
# include "vp.h"
2011-03-28 21:52:04 +04:00
static const struct omap_vp_ops omap4_vp_ops = {
. check_txdone = omap4_prm_vp_check_txdone ,
. clear_txdone = omap4_prm_vp_clear_txdone ,
} ;
2011-03-11 08:17:45 +03:00
/*
* VP data common to 44 xx chips
* XXX This stuff presumably belongs in the vp44xx . c or vp . c file .
*/
2011-04-05 02:25:07 +04:00
static const struct omap_vp_common omap4_vp_common = {
2011-04-05 03:02:28 +04:00
. vpconfig_erroroffset_mask = OMAP4430_ERROROFFSET_MASK ,
2011-03-11 08:17:45 +03:00
. vpconfig_errorgain_mask = OMAP4430_ERRORGAIN_MASK ,
. vpconfig_initvoltage_mask = OMAP4430_INITVOLTAGE_MASK ,
. vpconfig_timeouten = OMAP4430_TIMEOUTEN_MASK ,
. vpconfig_initvdd = OMAP4430_INITVDD_MASK ,
. vpconfig_forceupdate = OMAP4430_FORCEUPDATE_MASK ,
. vpconfig_vpenable = OMAP4430_VPENABLE_MASK ,
. vstepmin_smpswaittimemin_shift = OMAP4430_SMPSWAITTIMEMIN_SHIFT ,
. vstepmax_smpswaittimemax_shift = OMAP4430_SMPSWAITTIMEMAX_SHIFT ,
. vstepmin_stepmin_shift = OMAP4430_VSTEPMIN_SHIFT ,
. vstepmax_stepmax_shift = OMAP4430_VSTEPMAX_SHIFT ,
. vlimitto_vddmin_shift = OMAP4430_VDDMIN_SHIFT ,
. vlimitto_vddmax_shift = OMAP4430_VDDMAX_SHIFT ,
. vlimitto_timeout_shift = OMAP4430_TIMEOUT_SHIFT ,
2011-05-28 06:15:59 +04:00
. vpvoltage_mask = OMAP4430_VPVOLTAGE_MASK ,
2011-03-28 21:52:04 +04:00
. ops = & omap4_vp_ops ,
2011-03-11 08:17:45 +03:00
} ;
2011-04-05 02:25:07 +04:00
struct omap_vp_instance omap4_vp_mpu = {
2011-03-28 21:52:04 +04:00
. id = OMAP4_VP_VDD_MPU_ID ,
2011-04-05 02:25:07 +04:00
. common = & omap4_vp_common ,
2011-03-11 08:17:45 +03:00
. vpconfig = OMAP4_PRM_VP_MPU_CONFIG_OFFSET ,
. vstepmin = OMAP4_PRM_VP_MPU_VSTEPMIN_OFFSET ,
. vstepmax = OMAP4_PRM_VP_MPU_VSTEPMAX_OFFSET ,
. vlimitto = OMAP4_PRM_VP_MPU_VLIMITTO_OFFSET ,
. vstatus = OMAP4_PRM_VP_MPU_STATUS_OFFSET ,
. voltage = OMAP4_PRM_VP_MPU_VOLTAGE_OFFSET ,
} ;
2011-04-05 02:25:07 +04:00
struct omap_vp_instance omap4_vp_iva = {
2011-03-28 21:52:04 +04:00
. id = OMAP4_VP_VDD_IVA_ID ,
2011-04-05 02:25:07 +04:00
. common = & omap4_vp_common ,
2011-03-11 08:17:45 +03:00
. vpconfig = OMAP4_PRM_VP_IVA_CONFIG_OFFSET ,
. vstepmin = OMAP4_PRM_VP_IVA_VSTEPMIN_OFFSET ,
. vstepmax = OMAP4_PRM_VP_IVA_VSTEPMAX_OFFSET ,
. vlimitto = OMAP4_PRM_VP_IVA_VLIMITTO_OFFSET ,
. vstatus = OMAP4_PRM_VP_IVA_STATUS_OFFSET ,
. voltage = OMAP4_PRM_VP_IVA_VOLTAGE_OFFSET ,
} ;
2011-04-05 02:25:07 +04:00
struct omap_vp_instance omap4_vp_core = {
2011-03-28 21:52:04 +04:00
. id = OMAP4_VP_VDD_CORE_ID ,
2011-04-05 02:25:07 +04:00
. common = & omap4_vp_common ,
2011-03-11 08:17:45 +03:00
. vpconfig = OMAP4_PRM_VP_CORE_CONFIG_OFFSET ,
. vstepmin = OMAP4_PRM_VP_CORE_VSTEPMIN_OFFSET ,
. vstepmax = OMAP4_PRM_VP_CORE_VSTEPMAX_OFFSET ,
. vlimitto = OMAP4_PRM_VP_CORE_VLIMITTO_OFFSET ,
. vstatus = OMAP4_PRM_VP_CORE_STATUS_OFFSET ,
. voltage = OMAP4_PRM_VP_CORE_VOLTAGE_OFFSET ,
} ;
2012-09-25 20:33:35 +04:00
struct omap_vp_param omap4_mpu_vp_data = {
. vddmin = OMAP4_VP_MPU_VLIMITTO_VDDMIN ,
. vddmax = OMAP4_VP_MPU_VLIMITTO_VDDMAX ,
} ;
struct omap_vp_param omap4_iva_vp_data = {
. vddmin = OMAP4_VP_IVA_VLIMITTO_VDDMIN ,
. vddmax = OMAP4_VP_IVA_VLIMITTO_VDDMAX ,
} ;
struct omap_vp_param omap4_core_vp_data = {
. vddmin = OMAP4_VP_CORE_VLIMITTO_VDDMIN ,
. vddmax = OMAP4_VP_CORE_VLIMITTO_VDDMAX ,
} ;