root/arch/arm/mach-omap2/voltagedomains44xx_data.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. omap44xx_voltagedomains_init

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  * OMAP3/OMAP4 Voltage Management Routines
   4  *
   5  * Author: Thara Gopinath       <thara@ti.com>
   6  *
   7  * Copyright (C) 2007 Texas Instruments, Inc.
   8  * Rajendra Nayak <rnayak@ti.com>
   9  * Lesly A M <x0080970@ti.com>
  10  *
  11  * Copyright (C) 2008 Nokia Corporation
  12  * Kalle Jokiniemi
  13  *
  14  * Copyright (C) 2010 Texas Instruments, Inc.
  15  * Thara Gopinath <thara@ti.com>
  16  */
  17 #include <linux/kernel.h>
  18 #include <linux/err.h>
  19 #include <linux/init.h>
  20 
  21 #include "common.h"
  22 #include "soc.h"
  23 #include "prm-regbits-44xx.h"
  24 #include "prm44xx.h"
  25 #include "prcm44xx.h"
  26 #include "prminst44xx.h"
  27 #include "voltage.h"
  28 #include "omap_opp_data.h"
  29 #include "vc.h"
  30 #include "vp.h"
  31 
  32 static const struct omap_vfsm_instance omap4_vdd_mpu_vfsm = {
  33         .voltsetup_reg = OMAP4_PRM_VOLTSETUP_MPU_RET_SLEEP_OFFSET,
  34         .voltsetup_off_reg = OMAP4_PRM_VOLTSETUP_MPU_OFF_OFFSET,
  35 };
  36 
  37 static const struct omap_vfsm_instance omap4_vdd_iva_vfsm = {
  38         .voltsetup_reg = OMAP4_PRM_VOLTSETUP_IVA_RET_SLEEP_OFFSET,
  39         .voltsetup_off_reg = OMAP4_PRM_VOLTSETUP_IVA_OFF_OFFSET,
  40 };
  41 
  42 static const struct omap_vfsm_instance omap4_vdd_core_vfsm = {
  43         .voltsetup_reg = OMAP4_PRM_VOLTSETUP_CORE_RET_SLEEP_OFFSET,
  44         .voltsetup_off_reg = OMAP4_PRM_VOLTSETUP_CORE_OFF_OFFSET,
  45 };
  46 
  47 static struct voltagedomain omap4_voltdm_mpu = {
  48         .name = "mpu",
  49         .scalable = true,
  50         .read = omap4_prm_vcvp_read,
  51         .write = omap4_prm_vcvp_write,
  52         .rmw = omap4_prm_vcvp_rmw,
  53         .vc = &omap4_vc_mpu,
  54         .vfsm = &omap4_vdd_mpu_vfsm,
  55         .vp = &omap4_vp_mpu,
  56 };
  57 
  58 static struct voltagedomain omap4_voltdm_iva = {
  59         .name = "iva",
  60         .scalable = true,
  61         .read = omap4_prm_vcvp_read,
  62         .write = omap4_prm_vcvp_write,
  63         .rmw = omap4_prm_vcvp_rmw,
  64         .vc = &omap4_vc_iva,
  65         .vfsm = &omap4_vdd_iva_vfsm,
  66         .vp = &omap4_vp_iva,
  67 };
  68 
  69 static struct voltagedomain omap4_voltdm_core = {
  70         .name = "core",
  71         .scalable = true,
  72         .read = omap4_prm_vcvp_read,
  73         .write = omap4_prm_vcvp_write,
  74         .rmw = omap4_prm_vcvp_rmw,
  75         .vc = &omap4_vc_core,
  76         .vfsm = &omap4_vdd_core_vfsm,
  77         .vp = &omap4_vp_core,
  78 };
  79 
  80 static struct voltagedomain omap4_voltdm_wkup = {
  81         .name = "wakeup",
  82 };
  83 
  84 static struct voltagedomain *voltagedomains_omap4[] __initdata = {
  85         &omap4_voltdm_mpu,
  86         &omap4_voltdm_iva,
  87         &omap4_voltdm_core,
  88         &omap4_voltdm_wkup,
  89         NULL,
  90 };
  91 
  92 static const char *const sys_clk_name __initconst = "sys_clkin_ck";
  93 
  94 void __init omap44xx_voltagedomains_init(void)
  95 {
  96         struct voltagedomain *voltdm;
  97         int i;
  98 
  99         /*
 100          * XXX Will depend on the process, validation, and binning
 101          * for the currently-running IC
 102          */
 103 #ifdef CONFIG_PM_OPP
 104         if (cpu_is_omap443x()) {
 105                 omap4_voltdm_mpu.volt_data = omap443x_vdd_mpu_volt_data;
 106                 omap4_voltdm_iva.volt_data = omap443x_vdd_iva_volt_data;
 107                 omap4_voltdm_core.volt_data = omap443x_vdd_core_volt_data;
 108         } else if (cpu_is_omap446x()) {
 109                 omap4_voltdm_mpu.volt_data = omap446x_vdd_mpu_volt_data;
 110                 omap4_voltdm_iva.volt_data = omap446x_vdd_iva_volt_data;
 111                 omap4_voltdm_core.volt_data = omap446x_vdd_core_volt_data;
 112         }
 113 #endif
 114 
 115         omap4_voltdm_mpu.vp_param = &omap4_mpu_vp_data;
 116         omap4_voltdm_iva.vp_param = &omap4_iva_vp_data;
 117         omap4_voltdm_core.vp_param = &omap4_core_vp_data;
 118 
 119         omap4_voltdm_mpu.vc_param = &omap4_mpu_vc_data;
 120         omap4_voltdm_iva.vc_param = &omap4_iva_vc_data;
 121         omap4_voltdm_core.vc_param = &omap4_core_vc_data;
 122 
 123         for (i = 0; voltdm = voltagedomains_omap4[i], voltdm; i++)
 124                 voltdm->sys_clk.name = sys_clk_name;
 125 
 126         voltdm_init(voltagedomains_omap4);
 127 };

/* [<][>][^][v][top][bottom][index][help] */