162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * OMAP3 Voltage Processor (VP) data
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright (C) 2007, 2010 Texas Instruments, Inc.
662306a36Sopenharmony_ci * Rajendra Nayak <rnayak@ti.com>
762306a36Sopenharmony_ci * Lesly A M <x0080970@ti.com>
862306a36Sopenharmony_ci * Thara Gopinath <thara@ti.com>
962306a36Sopenharmony_ci *
1062306a36Sopenharmony_ci * Copyright (C) 2008, 2011 Nokia Corporation
1162306a36Sopenharmony_ci * Kalle Jokiniemi
1262306a36Sopenharmony_ci * Paul Walmsley
1362306a36Sopenharmony_ci */
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci#include <linux/io.h>
1662306a36Sopenharmony_ci#include <linux/err.h>
1762306a36Sopenharmony_ci#include <linux/init.h>
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci#include "common.h"
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci#include "prm-regbits-34xx.h"
2262306a36Sopenharmony_ci#include "voltage.h"
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci#include "vp.h"
2562306a36Sopenharmony_ci#include "prm2xxx_3xxx.h"
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_cistatic const struct omap_vp_ops omap3_vp_ops = {
2862306a36Sopenharmony_ci	.check_txdone = omap_prm_vp_check_txdone,
2962306a36Sopenharmony_ci	.clear_txdone = omap_prm_vp_clear_txdone,
3062306a36Sopenharmony_ci};
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci/*
3362306a36Sopenharmony_ci * VP data common to 34xx/36xx chips
3462306a36Sopenharmony_ci * XXX This stuff presumably belongs in the vp3xxx.c or vp.c file.
3562306a36Sopenharmony_ci */
3662306a36Sopenharmony_cistatic const struct omap_vp_common omap3_vp_common = {
3762306a36Sopenharmony_ci	.vpconfig_erroroffset_mask = OMAP3430_ERROROFFSET_MASK,
3862306a36Sopenharmony_ci	.vpconfig_errorgain_mask = OMAP3430_ERRORGAIN_MASK,
3962306a36Sopenharmony_ci	.vpconfig_initvoltage_mask = OMAP3430_INITVOLTAGE_MASK,
4062306a36Sopenharmony_ci	.vpconfig_timeouten = OMAP3430_TIMEOUTEN_MASK,
4162306a36Sopenharmony_ci	.vpconfig_initvdd = OMAP3430_INITVDD_MASK,
4262306a36Sopenharmony_ci	.vpconfig_forceupdate = OMAP3430_FORCEUPDATE_MASK,
4362306a36Sopenharmony_ci	.vpconfig_vpenable = OMAP3430_VPENABLE_MASK,
4462306a36Sopenharmony_ci	.vstepmin_smpswaittimemin_shift = OMAP3430_SMPSWAITTIMEMIN_SHIFT,
4562306a36Sopenharmony_ci	.vstepmax_smpswaittimemax_shift = OMAP3430_SMPSWAITTIMEMAX_SHIFT,
4662306a36Sopenharmony_ci	.vstepmin_stepmin_shift = OMAP3430_VSTEPMIN_SHIFT,
4762306a36Sopenharmony_ci	.vstepmax_stepmax_shift = OMAP3430_VSTEPMAX_SHIFT,
4862306a36Sopenharmony_ci	.vlimitto_vddmin_shift = OMAP3430_VDDMIN_SHIFT,
4962306a36Sopenharmony_ci	.vlimitto_vddmax_shift = OMAP3430_VDDMAX_SHIFT,
5062306a36Sopenharmony_ci	.vlimitto_timeout_shift = OMAP3430_TIMEOUT_SHIFT,
5162306a36Sopenharmony_ci	.vpvoltage_mask = OMAP3430_VPVOLTAGE_MASK,
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci	.ops = &omap3_vp_ops,
5462306a36Sopenharmony_ci};
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_cistruct omap_vp_instance omap3_vp_mpu = {
5762306a36Sopenharmony_ci	.id = OMAP3_VP_VDD_MPU_ID,
5862306a36Sopenharmony_ci	.common = &omap3_vp_common,
5962306a36Sopenharmony_ci	.vpconfig = OMAP3_PRM_VP1_CONFIG_OFFSET,
6062306a36Sopenharmony_ci	.vstepmin = OMAP3_PRM_VP1_VSTEPMIN_OFFSET,
6162306a36Sopenharmony_ci	.vstepmax = OMAP3_PRM_VP1_VSTEPMAX_OFFSET,
6262306a36Sopenharmony_ci	.vlimitto = OMAP3_PRM_VP1_VLIMITTO_OFFSET,
6362306a36Sopenharmony_ci	.vstatus = OMAP3_PRM_VP1_STATUS_OFFSET,
6462306a36Sopenharmony_ci	.voltage = OMAP3_PRM_VP1_VOLTAGE_OFFSET,
6562306a36Sopenharmony_ci};
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_cistruct omap_vp_instance omap3_vp_core = {
6862306a36Sopenharmony_ci	.id = OMAP3_VP_VDD_CORE_ID,
6962306a36Sopenharmony_ci	.common = &omap3_vp_common,
7062306a36Sopenharmony_ci	.vpconfig = OMAP3_PRM_VP2_CONFIG_OFFSET,
7162306a36Sopenharmony_ci	.vstepmin = OMAP3_PRM_VP2_VSTEPMIN_OFFSET,
7262306a36Sopenharmony_ci	.vstepmax = OMAP3_PRM_VP2_VSTEPMAX_OFFSET,
7362306a36Sopenharmony_ci	.vlimitto = OMAP3_PRM_VP2_VLIMITTO_OFFSET,
7462306a36Sopenharmony_ci	.vstatus = OMAP3_PRM_VP2_STATUS_OFFSET,
7562306a36Sopenharmony_ci	.voltage = OMAP3_PRM_VP2_VOLTAGE_OFFSET,
7662306a36Sopenharmony_ci};
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_cistruct omap_vp_param omap3_mpu_vp_data = {
7962306a36Sopenharmony_ci	.vddmin			= OMAP3430_VP1_VLIMITTO_VDDMIN,
8062306a36Sopenharmony_ci	.vddmax			= OMAP3430_VP1_VLIMITTO_VDDMAX,
8162306a36Sopenharmony_ci};
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_cistruct omap_vp_param omap3_core_vp_data = {
8462306a36Sopenharmony_ci	.vddmin			= OMAP3430_VP2_VLIMITTO_VDDMIN,
8562306a36Sopenharmony_ci	.vddmax			= OMAP3430_VP2_VLIMITTO_VDDMAX,
8662306a36Sopenharmony_ci};
87