1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0-only 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * OMAP3 Voltage Processor (VP) data 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2007, 2010 Texas Instruments, Inc. 6*4882a593Smuzhiyun * Rajendra Nayak <rnayak@ti.com> 7*4882a593Smuzhiyun * Lesly A M <x0080970@ti.com> 8*4882a593Smuzhiyun * Thara Gopinath <thara@ti.com> 9*4882a593Smuzhiyun * 10*4882a593Smuzhiyun * Copyright (C) 2008, 2011 Nokia Corporation 11*4882a593Smuzhiyun * Kalle Jokiniemi 12*4882a593Smuzhiyun * Paul Walmsley 13*4882a593Smuzhiyun */ 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun #include <linux/io.h> 16*4882a593Smuzhiyun #include <linux/err.h> 17*4882a593Smuzhiyun #include <linux/init.h> 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun #include "common.h" 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun #include "prm-regbits-34xx.h" 22*4882a593Smuzhiyun #include "voltage.h" 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun #include "vp.h" 25*4882a593Smuzhiyun #include "prm2xxx_3xxx.h" 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun static const struct omap_vp_ops omap3_vp_ops = { 28*4882a593Smuzhiyun .check_txdone = omap_prm_vp_check_txdone, 29*4882a593Smuzhiyun .clear_txdone = omap_prm_vp_clear_txdone, 30*4882a593Smuzhiyun }; 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun /* 33*4882a593Smuzhiyun * VP data common to 34xx/36xx chips 34*4882a593Smuzhiyun * XXX This stuff presumably belongs in the vp3xxx.c or vp.c file. 35*4882a593Smuzhiyun */ 36*4882a593Smuzhiyun static const struct omap_vp_common omap3_vp_common = { 37*4882a593Smuzhiyun .vpconfig_erroroffset_mask = OMAP3430_ERROROFFSET_MASK, 38*4882a593Smuzhiyun .vpconfig_errorgain_mask = OMAP3430_ERRORGAIN_MASK, 39*4882a593Smuzhiyun .vpconfig_initvoltage_mask = OMAP3430_INITVOLTAGE_MASK, 40*4882a593Smuzhiyun .vpconfig_timeouten = OMAP3430_TIMEOUTEN_MASK, 41*4882a593Smuzhiyun .vpconfig_initvdd = OMAP3430_INITVDD_MASK, 42*4882a593Smuzhiyun .vpconfig_forceupdate = OMAP3430_FORCEUPDATE_MASK, 43*4882a593Smuzhiyun .vpconfig_vpenable = OMAP3430_VPENABLE_MASK, 44*4882a593Smuzhiyun .vstepmin_smpswaittimemin_shift = OMAP3430_SMPSWAITTIMEMIN_SHIFT, 45*4882a593Smuzhiyun .vstepmax_smpswaittimemax_shift = OMAP3430_SMPSWAITTIMEMAX_SHIFT, 46*4882a593Smuzhiyun .vstepmin_stepmin_shift = OMAP3430_VSTEPMIN_SHIFT, 47*4882a593Smuzhiyun .vstepmax_stepmax_shift = OMAP3430_VSTEPMAX_SHIFT, 48*4882a593Smuzhiyun .vlimitto_vddmin_shift = OMAP3430_VDDMIN_SHIFT, 49*4882a593Smuzhiyun .vlimitto_vddmax_shift = OMAP3430_VDDMAX_SHIFT, 50*4882a593Smuzhiyun .vlimitto_timeout_shift = OMAP3430_TIMEOUT_SHIFT, 51*4882a593Smuzhiyun .vpvoltage_mask = OMAP3430_VPVOLTAGE_MASK, 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun .ops = &omap3_vp_ops, 54*4882a593Smuzhiyun }; 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun struct omap_vp_instance omap3_vp_mpu = { 57*4882a593Smuzhiyun .id = OMAP3_VP_VDD_MPU_ID, 58*4882a593Smuzhiyun .common = &omap3_vp_common, 59*4882a593Smuzhiyun .vpconfig = OMAP3_PRM_VP1_CONFIG_OFFSET, 60*4882a593Smuzhiyun .vstepmin = OMAP3_PRM_VP1_VSTEPMIN_OFFSET, 61*4882a593Smuzhiyun .vstepmax = OMAP3_PRM_VP1_VSTEPMAX_OFFSET, 62*4882a593Smuzhiyun .vlimitto = OMAP3_PRM_VP1_VLIMITTO_OFFSET, 63*4882a593Smuzhiyun .vstatus = OMAP3_PRM_VP1_STATUS_OFFSET, 64*4882a593Smuzhiyun .voltage = OMAP3_PRM_VP1_VOLTAGE_OFFSET, 65*4882a593Smuzhiyun }; 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun struct omap_vp_instance omap3_vp_core = { 68*4882a593Smuzhiyun .id = OMAP3_VP_VDD_CORE_ID, 69*4882a593Smuzhiyun .common = &omap3_vp_common, 70*4882a593Smuzhiyun .vpconfig = OMAP3_PRM_VP2_CONFIG_OFFSET, 71*4882a593Smuzhiyun .vstepmin = OMAP3_PRM_VP2_VSTEPMIN_OFFSET, 72*4882a593Smuzhiyun .vstepmax = OMAP3_PRM_VP2_VSTEPMAX_OFFSET, 73*4882a593Smuzhiyun .vlimitto = OMAP3_PRM_VP2_VLIMITTO_OFFSET, 74*4882a593Smuzhiyun .vstatus = OMAP3_PRM_VP2_STATUS_OFFSET, 75*4882a593Smuzhiyun .voltage = OMAP3_PRM_VP2_VOLTAGE_OFFSET, 76*4882a593Smuzhiyun }; 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun struct omap_vp_param omap3_mpu_vp_data = { 79*4882a593Smuzhiyun .vddmin = OMAP3430_VP1_VLIMITTO_VDDMIN, 80*4882a593Smuzhiyun .vddmax = OMAP3430_VP1_VLIMITTO_VDDMAX, 81*4882a593Smuzhiyun }; 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun struct omap_vp_param omap3_core_vp_data = { 84*4882a593Smuzhiyun .vddmin = OMAP3430_VP2_VLIMITTO_VDDMIN, 85*4882a593Smuzhiyun .vddmax = OMAP3430_VP2_VLIMITTO_VDDMAX, 86*4882a593Smuzhiyun }; 87