Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-only
0002 /*
0003  * OMAP3 Voltage Processor (VP) data
0004  *
0005  * Copyright (C) 2007, 2010 Texas Instruments, Inc.
0006  * Rajendra Nayak <rnayak@ti.com>
0007  * Lesly A M <x0080970@ti.com>
0008  * Thara Gopinath <thara@ti.com>
0009  *
0010  * Copyright (C) 2008, 2011 Nokia Corporation
0011  * Kalle Jokiniemi
0012  * Paul Walmsley
0013  */
0014 
0015 #include <linux/io.h>
0016 #include <linux/err.h>
0017 #include <linux/init.h>
0018 
0019 #include "common.h"
0020 
0021 #include "prm44xx.h"
0022 #include "prm-regbits-44xx.h"
0023 #include "voltage.h"
0024 
0025 #include "vp.h"
0026 
0027 static const struct omap_vp_ops omap4_vp_ops = {
0028     .check_txdone = omap_prm_vp_check_txdone,
0029     .clear_txdone = omap_prm_vp_clear_txdone,
0030 };
0031 
0032 /*
0033  * VP data common to 44xx chips
0034  * XXX This stuff presumably belongs in the vp44xx.c or vp.c file.
0035  */
0036 static const struct omap_vp_common omap4_vp_common = {
0037     .vpconfig_erroroffset_mask = OMAP4430_ERROROFFSET_MASK,
0038     .vpconfig_errorgain_mask = OMAP4430_ERRORGAIN_MASK,
0039     .vpconfig_initvoltage_mask = OMAP4430_INITVOLTAGE_MASK,
0040     .vpconfig_timeouten = OMAP4430_TIMEOUTEN_MASK,
0041     .vpconfig_initvdd = OMAP4430_INITVDD_MASK,
0042     .vpconfig_forceupdate = OMAP4430_FORCEUPDATE_MASK,
0043     .vpconfig_vpenable = OMAP4430_VPENABLE_MASK,
0044     .vstepmin_smpswaittimemin_shift = OMAP4430_SMPSWAITTIMEMIN_SHIFT,
0045     .vstepmax_smpswaittimemax_shift = OMAP4430_SMPSWAITTIMEMAX_SHIFT,
0046     .vstepmin_stepmin_shift = OMAP4430_VSTEPMIN_SHIFT,
0047     .vstepmax_stepmax_shift = OMAP4430_VSTEPMAX_SHIFT,
0048     .vlimitto_vddmin_shift = OMAP4430_VDDMIN_SHIFT,
0049     .vlimitto_vddmax_shift = OMAP4430_VDDMAX_SHIFT,
0050     .vlimitto_timeout_shift = OMAP4430_TIMEOUT_SHIFT,
0051     .vpvoltage_mask = OMAP4430_VPVOLTAGE_MASK,
0052     .ops = &omap4_vp_ops,
0053 };
0054 
0055 struct omap_vp_instance omap4_vp_mpu = {
0056     .id = OMAP4_VP_VDD_MPU_ID,
0057     .common = &omap4_vp_common,
0058     .vpconfig = OMAP4_PRM_VP_MPU_CONFIG_OFFSET,
0059     .vstepmin = OMAP4_PRM_VP_MPU_VSTEPMIN_OFFSET,
0060     .vstepmax = OMAP4_PRM_VP_MPU_VSTEPMAX_OFFSET,
0061     .vlimitto = OMAP4_PRM_VP_MPU_VLIMITTO_OFFSET,
0062     .vstatus = OMAP4_PRM_VP_MPU_STATUS_OFFSET,
0063     .voltage = OMAP4_PRM_VP_MPU_VOLTAGE_OFFSET,
0064 };
0065 
0066 struct omap_vp_instance omap4_vp_iva = {
0067     .id = OMAP4_VP_VDD_IVA_ID,
0068     .common = &omap4_vp_common,
0069     .vpconfig = OMAP4_PRM_VP_IVA_CONFIG_OFFSET,
0070     .vstepmin = OMAP4_PRM_VP_IVA_VSTEPMIN_OFFSET,
0071     .vstepmax = OMAP4_PRM_VP_IVA_VSTEPMAX_OFFSET,
0072     .vlimitto = OMAP4_PRM_VP_IVA_VLIMITTO_OFFSET,
0073     .vstatus = OMAP4_PRM_VP_IVA_STATUS_OFFSET,
0074     .voltage = OMAP4_PRM_VP_IVA_VOLTAGE_OFFSET,
0075 };
0076 
0077 struct omap_vp_instance omap4_vp_core = {
0078     .id = OMAP4_VP_VDD_CORE_ID,
0079     .common = &omap4_vp_common,
0080     .vpconfig = OMAP4_PRM_VP_CORE_CONFIG_OFFSET,
0081     .vstepmin = OMAP4_PRM_VP_CORE_VSTEPMIN_OFFSET,
0082     .vstepmax = OMAP4_PRM_VP_CORE_VSTEPMAX_OFFSET,
0083     .vlimitto = OMAP4_PRM_VP_CORE_VLIMITTO_OFFSET,
0084     .vstatus = OMAP4_PRM_VP_CORE_STATUS_OFFSET,
0085     .voltage = OMAP4_PRM_VP_CORE_VOLTAGE_OFFSET,
0086 };
0087 
0088 struct omap_vp_param omap4_mpu_vp_data = {
0089     .vddmin         = OMAP4_VP_MPU_VLIMITTO_VDDMIN,
0090     .vddmax         = OMAP4_VP_MPU_VLIMITTO_VDDMAX,
0091 };
0092 
0093 struct omap_vp_param omap4_iva_vp_data = {
0094     .vddmin         = OMAP4_VP_IVA_VLIMITTO_VDDMIN,
0095     .vddmax         = OMAP4_VP_IVA_VLIMITTO_VDDMAX,
0096 };
0097 
0098 struct omap_vp_param omap4_core_vp_data = {
0099     .vddmin         = OMAP4_VP_CORE_VLIMITTO_VDDMIN,
0100     .vddmax         = OMAP4_VP_CORE_VLIMITTO_VDDMAX,
0101 };