mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-21 11:44:01 +08:00
c0718df4d6
This is a first pass at reorganizing mach-omap2/voltage.c: - Separate almost all of the data from the code of mach-omap2/voltage.c. The code remains in mach-omap2/voltage.c. The data goes into one of several places, depending on what type of data it is: - Silicon process/validation data: mach-omap2/opp*_data.c - VC (Voltage Controller) data: mach-omap2/vc*_data.c - VP (Voltage Processor) data: mach-omap2/vp*_data.c - Voltage domain data: mach-omap2/voltagedomains*_data.c The ultimate goal is for all this data to be autogenerated, the same way we autogenerate the rest of our data. - Separate VC and VP common data from VDD-specific VC and VP data. - Separate common voltage.c code from SoC-specific code; reuse common code. - Reorganize structures to avoid unnecessary memory loss due to unpacked fields. There is much left to be done. VC code and VP code should be separated out into vc*.c and vp*.c files. Many fields in the existing structures are superfluous, and should be removed. Some code in voltage.c seems to be duplicated; that code should be moved into functions of its own. Proper voltage domain code should be created, as was done with the powerdomain and clockdomains, and powerdomains should reference voltagedomains. Thanks to Shweta Gulati <shweta.gulati@ti.com> for comments. Thanks to Rajendra Nayak <rnayak@ti.com> for finding and fixing some bugs that prevented OMAP4 from booting: https://patchwork.kernel.org/patch/587311/ His patch has been folded into this one to avoid breaking OMAP4 between patches. Thanks also to Kevin Hilman <khilman@ti.com> for finding and fixing a compile problem when !CONFIG_PM: http://www.spinics.net/lists/arm-kernel/msg118067.html His patch has also been folded into this one to avoid breaking !CONFIG_PM builds. Signed-off-by: Paul Walmsley <paul@pwsan.com> Cc: Shweta Gulati <shweta.gulati@ti.com> Cc: Rajendra Nayak <rnayak@ti.com> Cc: Kevin Hilman <khilman@ti.com>
101 lines
3.4 KiB
C
101 lines
3.4 KiB
C
/*
|
|
* 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>
|
|
|
|
#include <plat/common.h>
|
|
|
|
#include "prm44xx.h"
|
|
#include "prm-regbits-44xx.h"
|
|
#include "voltage.h"
|
|
|
|
#include "vp.h"
|
|
|
|
/*
|
|
* VP data common to 44xx chips
|
|
* XXX This stuff presumably belongs in the vp44xx.c or vp.c file.
|
|
*/
|
|
static const struct omap_vp_common_data omap4_vp_common = {
|
|
.vpconfig_erroroffset_shift = OMAP4430_ERROROFFSET_SHIFT,
|
|
.vpconfig_errorgain_mask = OMAP4430_ERRORGAIN_MASK,
|
|
.vpconfig_errorgain_shift = OMAP4430_ERRORGAIN_SHIFT,
|
|
.vpconfig_initvoltage_shift = OMAP4430_INITVOLTAGE_SHIFT,
|
|
.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,
|
|
};
|
|
|
|
static const struct omap_vp_prm_irqst_data omap4_vp_mpu_prm_irqst_data = {
|
|
.prm_irqst_reg = OMAP4_PRM_IRQSTATUS_MPU_2_OFFSET,
|
|
.tranxdone_status = OMAP4430_VP_MPU_TRANXDONE_ST_MASK,
|
|
};
|
|
|
|
struct omap_vp_instance_data omap4_vp_mpu_data = {
|
|
.vp_common = &omap4_vp_common,
|
|
.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,
|
|
.prm_irqst_data = &omap4_vp_mpu_prm_irqst_data,
|
|
};
|
|
|
|
static const struct omap_vp_prm_irqst_data omap4_vp_iva_prm_irqst_data = {
|
|
.prm_irqst_reg = OMAP4_PRM_IRQSTATUS_MPU_OFFSET,
|
|
.tranxdone_status = OMAP4430_VP_IVA_TRANXDONE_ST_MASK,
|
|
};
|
|
|
|
struct omap_vp_instance_data omap4_vp_iva_data = {
|
|
.vp_common = &omap4_vp_common,
|
|
.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,
|
|
.prm_irqst_data = &omap4_vp_iva_prm_irqst_data,
|
|
};
|
|
|
|
static const struct omap_vp_prm_irqst_data omap4_vp_core_prm_irqst_data = {
|
|
.prm_irqst_reg = OMAP4_PRM_IRQSTATUS_MPU_OFFSET,
|
|
.tranxdone_status = OMAP4430_VP_CORE_TRANXDONE_ST_MASK,
|
|
};
|
|
|
|
struct omap_vp_instance_data omap4_vp_core_data = {
|
|
.vp_common = &omap4_vp_common,
|
|
.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,
|
|
.prm_irqst_data = &omap4_vp_core_prm_irqst_data,
|
|
};
|
|
|