![]() |
|
|||
0001 /* SPDX-License-Identifier: GPL-2.0-only */ 0002 /* 0003 * OMAP SoC specific OPP Data helpers 0004 * 0005 * Copyright (C) 2009-2010 Texas Instruments Incorporated - https://www.ti.com/ 0006 * Nishanth Menon 0007 * Kevin Hilman 0008 * Copyright (C) 2010 Nokia Corporation. 0009 * Eduardo Valentin 0010 */ 0011 #ifndef __ARCH_ARM_MACH_OMAP2_OMAP_OPP_DATA_H 0012 #define __ARCH_ARM_MACH_OMAP2_OMAP_OPP_DATA_H 0013 0014 #include "omap_hwmod.h" 0015 0016 #include "voltage.h" 0017 0018 /* 0019 * *BIG FAT WARNING*: 0020 * USE the following ONLY in opp data initialization common to an SoC. 0021 * DO NOT USE these in board files/pm core etc. 0022 */ 0023 0024 /** 0025 * struct omap_opp_def - OMAP OPP Definition 0026 * @hwmod_name: Name of the hwmod for this domain 0027 * @freq: Frequency in hertz corresponding to this OPP 0028 * @u_volt: Nominal voltage in microvolts corresponding to this OPP 0029 * @default_available: True/false - is this OPP available by default 0030 * 0031 * OMAP SOCs have a standard set of tuples consisting of frequency and voltage 0032 * pairs that the device will support per voltage domain. This is called 0033 * Operating Points or OPP. The actual definitions of OMAP Operating Points 0034 * varies over silicon within the same family of devices. For a specific 0035 * domain, you can have a set of {frequency, voltage} pairs and this is denoted 0036 * by an array of omap_opp_def. As the kernel boots and more information is 0037 * available, a set of these are activated based on the precise nature of 0038 * device the kernel boots up on. It is interesting to remember that each IP 0039 * which belongs to a voltage domain may define their own set of OPPs on top 0040 * of this - but this is handled by the appropriate driver. 0041 */ 0042 struct omap_opp_def { 0043 char *hwmod_name; 0044 0045 unsigned long freq; 0046 unsigned long u_volt; 0047 0048 bool default_available; 0049 }; 0050 0051 /* 0052 * Initialization wrapper used to define an OPP for OMAP variants. 0053 */ 0054 #define OPP_INITIALIZER(_hwmod_name, _enabled, _freq, _uv) \ 0055 { \ 0056 .hwmod_name = _hwmod_name, \ 0057 .default_available = _enabled, \ 0058 .freq = _freq, \ 0059 .u_volt = _uv, \ 0060 } 0061 0062 /* 0063 * Initialization wrapper used to define SmartReflex process data 0064 * XXX Is this needed? Just use C99 initializers in data files? 0065 */ 0066 #define VOLT_DATA_DEFINE(_v_nom, _efuse_offs, _errminlimit, _errgain) \ 0067 { \ 0068 .volt_nominal = _v_nom, \ 0069 .sr_efuse_offs = _efuse_offs, \ 0070 .sr_errminlimit = _errminlimit, \ 0071 .vp_errgain = _errgain \ 0072 } 0073 0074 /* Use this to initialize the default table */ 0075 extern int __init omap_init_opp_table(struct omap_opp_def *opp_def, 0076 u32 opp_def_size); 0077 0078 0079 extern struct omap_volt_data omap34xx_vddmpu_volt_data[]; 0080 extern struct omap_volt_data omap34xx_vddcore_volt_data[]; 0081 extern struct omap_volt_data omap36xx_vddmpu_volt_data[]; 0082 extern struct omap_volt_data omap36xx_vddcore_volt_data[]; 0083 0084 extern struct omap_volt_data omap443x_vdd_mpu_volt_data[]; 0085 extern struct omap_volt_data omap443x_vdd_iva_volt_data[]; 0086 extern struct omap_volt_data omap443x_vdd_core_volt_data[]; 0087 extern struct omap_volt_data omap446x_vdd_mpu_volt_data[]; 0088 extern struct omap_volt_data omap446x_vdd_iva_volt_data[]; 0089 extern struct omap_volt_data omap446x_vdd_core_volt_data[]; 0090 0091 #endif /* __ARCH_ARM_MACH_OMAP2_OMAP_OPP_DATA_H */
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.1.0 LXR engine. The LXR team |
![]() ![]() |