diff mbox

[U-Boot,2/3] ARM: DRA7: Redefine voltage and efuse macros per OPP using Kconfig

Message ID 20161122062139.27335-3-lokeshvutla@ti.com
State Superseded
Delegated to: Tom Rini
Headers show

Commit Message

Lokesh Vutla Nov. 22, 2016, 6:21 a.m. UTC
From: Suman Anna <s-anna@ti.com>

Redefine the macros used to define the voltage values and the
efuse register offsets based on OPP for all the voltage domains.
This is done using Kconfig macros that can be set in a defconfig
or selected during a config step. This allows a voltage domain
to be configured/set to a corresponding voltage value depending
on the OPP selection choice.

The Kconfig choices have been added for MPU, DSPEVE, IVA and GPU
voltage domains, with the MPU domain restricted to OPP_NOM. The
OPP_OD and OPP_HIGH options will be added when the support for
configuring the MPU clock frequency is added. The clock
configuration for other voltage domains is out of scope in
u-boot code.

The CORE voltage domain does not have separate voltage values
and efuse register offset at different OPPs, while the MPU
voltage domain only has different efuse register offsets for
different OPPs, but uses the same voltage value. Any different
choices of OPPs for voltage domains on common ganged-rails
is automatically taken care to select the corresponding
highest OPP voltage value.

Signed-off-by: Suman Anna <s-anna@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
---
 arch/arm/include/asm/arch-omap5/clock.h | 47 +++++++++++++++++-------
 arch/arm/mach-omap2/omap5/Kconfig       | 65 +++++++++++++++++++++++++++++++++
 2 files changed, 99 insertions(+), 13 deletions(-)

Comments

Tom Rini Nov. 22, 2016, 3:02 p.m. UTC | #1
On Tue, Nov 22, 2016 at 11:51:38AM +0530, Lokesh Vutla wrote:
> From: Suman Anna <s-anna@ti.com>
> 
> Redefine the macros used to define the voltage values and the
> efuse register offsets based on OPP for all the voltage domains.
> This is done using Kconfig macros that can be set in a defconfig
> or selected during a config step. This allows a voltage domain
> to be configured/set to a corresponding voltage value depending
> on the OPP selection choice.
> 
> The Kconfig choices have been added for MPU, DSPEVE, IVA and GPU
> voltage domains, with the MPU domain restricted to OPP_NOM. The
> OPP_OD and OPP_HIGH options will be added when the support for
> configuring the MPU clock frequency is added. The clock
> configuration for other voltage domains is out of scope in
> u-boot code.
> 
> The CORE voltage domain does not have separate voltage values
> and efuse register offset at different OPPs, while the MPU
> voltage domain only has different efuse register offsets for
> different OPPs, but uses the same voltage value. Any different
> choices of OPPs for voltage domains on common ganged-rails
> is automatically taken care to select the corresponding
> highest OPP voltage value.
> 
> Signed-off-by: Suman Anna <s-anna@ti.com>
> Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
> ---
>  arch/arm/include/asm/arch-omap5/clock.h | 47 +++++++++++++++++-------
>  arch/arm/mach-omap2/omap5/Kconfig       | 65 +++++++++++++++++++++++++++++++++
>  2 files changed, 99 insertions(+), 13 deletions(-)
> 
> diff --git a/arch/arm/include/asm/arch-omap5/clock.h b/arch/arm/include/asm/arch-omap5/clock.h
> index 551c927..e8b286b 100644
> --- a/arch/arm/include/asm/arch-omap5/clock.h
> +++ b/arch/arm/include/asm/arch-omap5/clock.h
> @@ -286,19 +286,40 @@
>  /* STD_FUSE_OPP_VMIN_MPU_4 */
>  #define STD_FUSE_OPP_VMIN_MPU_HIGH	(DRA752_EFUSE_BASE + 0x1B28)
>  
> -/* Common voltage and Efuse register macros */
> -/* DRA74x/DRA75x/DRA72x */
> -#define VDD_MPU_DRA7			VDD_MPU_DRA7_NOM
> -#define VDD_CORE_DRA7			VDD_CORE_DRA7_NOM
> -#define VDD_EVE_DRA7			VDD_EVE_DRA7_NOM
> -#define VDD_GPU_DRA7			VDD_GPU_DRA7_NOM
> -#define VDD_IVA_DRA7			VDD_IVA_DRA7_NOM
> -
> -#define STD_FUSE_OPP_VMIN_MPU		STD_FUSE_OPP_VMIN_MPU_NOM
> -#define STD_FUSE_OPP_VMIN_CORE		STD_FUSE_OPP_VMIN_CORE_NOM
> -#define STD_FUSE_OPP_VMIN_DSPEVE	STD_FUSE_OPP_VMIN_DSPEVE_NOM
> -#define STD_FUSE_OPP_VMIN_GPU		STD_FUSE_OPP_VMIN_GPU_NOM
> -#define STD_FUSE_OPP_VMIN_IVA		STD_FUSE_OPP_VMIN_IVA_NOM
> +#if defined(CONFIG_DRA7_MPU_OPP_HIGH)
> +#define DRA7_MPU_OPP	OPP_HIGH
> +#elif defined(CONFIG_DRA7_MPU_OPP_OD)
> +#define DRA7_MPU_OPP	OPP_OD
> +#else /* OPP_NOM default */
> +#define DRA7_MPU_OPP	OPP_NOM
> +#endif
> +
> +/* OPP_NOM only available option for CORE */
> +#define DRA7_CORE_OPP	OPP_NOM
> +
> +#if defined(CONFIG_DRA7_DSPEVE_OPP_HIGH)
> +#define DRA7_DSPEVE_OPP	OPP_HIGH
> +#elif defined(CONFIG_DRA7_DSPEVE_OPP_OD)
> +#define DRA7_DSPEVE_OPP	OPP_OD
> +#else /* OPP_NOM default */
> +#define DRA7_DSPEVE_OPP	OPP_NOM
> +#endif
> +
> +#if defined(CONFIG_DRA7_IVA_OPP_HIGH)
> +#define DRA7_IVA_OPP	OPP_HIGH
> +#elif defined(CONFIG_DRA7_IVA_OPP_OD)
> +#define DRA7_IVA_OPP	OPP_OD
> +#else /* OPP_NOM default */
> +#define DRA7_IVA_OPP	OPP_NOM
> +#endif
> +
> +#if defined(CONFIG_DRA7_GPU_OPP_HIGH)
> +#define DRA7_GPU_OPP	OPP_HIGH
> +#elif defined(CONFIG_DRA7_GPU_OPP_OD)
> +#define DRA7_GPU_OPP	OPP_OD
> +#else /* OPP_NOM default */
> +#define DRA7_GPU_OPP	OPP_NOM
> +#endif
>  
>  /* Standard offset is 0.5v expressed in uv */
>  #define PALMAS_SMPS_BASE_VOLT_UV 500000
> diff --git a/arch/arm/mach-omap2/omap5/Kconfig b/arch/arm/mach-omap2/omap5/Kconfig
> index 22259dc..6741149 100644
> --- a/arch/arm/mach-omap2/omap5/Kconfig
> +++ b/arch/arm/mach-omap2/omap5/Kconfig
> @@ -91,4 +91,69 @@ source "board/ti/omap5_uevm/Kconfig"
>  source "board/ti/dra7xx/Kconfig"
>  source "board/ti/am57xx/Kconfig"
>  
> +if TARGET_DRA7XX_EVM || TARGET_AM57XX_EVM
> +menu "Voltage Domain OPP selections"
> +
> +choice
> +	prompt "MPU Voltage Domain"
> +	default DRA7_MPU_OPP_NOM
> +        help
> +	  Select the OPP for the MPU voltage domain on DRA7xx & AM57xx SoCs
> +
> +config DRA7_MPU_OPP_NOM
> +	bool "OPP NOM"
> +
> +endchoice
> +
> +choice
> +	prompt "DSPEVE Voltage Domain"
> +        help
> +	  Select the OPP for the DSPEVE voltage domain on DRA7xx and AM57xx SoCs

Can we please add some text about what NOM, OD and so forth mean in the
help text?  Also, the rest of the series is missing, thanks!
Lokesh Vutla Nov. 23, 2016, 4:05 a.m. UTC | #2
On Tuesday 22 November 2016 08:32 PM, Tom Rini wrote:
> On Tue, Nov 22, 2016 at 11:51:38AM +0530, Lokesh Vutla wrote:
>> From: Suman Anna <s-anna@ti.com>
>>

[..snip..]

>> +if TARGET_DRA7XX_EVM || TARGET_AM57XX_EVM
>> +menu "Voltage Domain OPP selections"
>> +
>> +choice
>> +	prompt "MPU Voltage Domain"
>> +	default DRA7_MPU_OPP_NOM
>> +        help
>> +	  Select the OPP for the MPU voltage domain on DRA7xx & AM57xx SoCs
>> +
>> +config DRA7_MPU_OPP_NOM
>> +	bool "OPP NOM"
>> +
>> +endchoice
>> +
>> +choice
>> +	prompt "DSPEVE Voltage Domain"
>> +        help
>> +	  Select the OPP for the DSPEVE voltage domain on DRA7xx and AM57xx SoCs
> 
> Can we please add some text about what NOM, OD and so forth mean in the

Sure will add it and repost.

> help text?  Also, the rest of the series is missing, thanks!

I can see it in patchworks. Am I missing something?
http://patchwork.ozlabs.org/patch/697824/
http://patchwork.ozlabs.org/patch/697823/

Thanks and regards,
Lokesh
diff mbox

Patch

diff --git a/arch/arm/include/asm/arch-omap5/clock.h b/arch/arm/include/asm/arch-omap5/clock.h
index 551c927..e8b286b 100644
--- a/arch/arm/include/asm/arch-omap5/clock.h
+++ b/arch/arm/include/asm/arch-omap5/clock.h
@@ -286,19 +286,40 @@ 
 /* STD_FUSE_OPP_VMIN_MPU_4 */
 #define STD_FUSE_OPP_VMIN_MPU_HIGH	(DRA752_EFUSE_BASE + 0x1B28)
 
-/* Common voltage and Efuse register macros */
-/* DRA74x/DRA75x/DRA72x */
-#define VDD_MPU_DRA7			VDD_MPU_DRA7_NOM
-#define VDD_CORE_DRA7			VDD_CORE_DRA7_NOM
-#define VDD_EVE_DRA7			VDD_EVE_DRA7_NOM
-#define VDD_GPU_DRA7			VDD_GPU_DRA7_NOM
-#define VDD_IVA_DRA7			VDD_IVA_DRA7_NOM
-
-#define STD_FUSE_OPP_VMIN_MPU		STD_FUSE_OPP_VMIN_MPU_NOM
-#define STD_FUSE_OPP_VMIN_CORE		STD_FUSE_OPP_VMIN_CORE_NOM
-#define STD_FUSE_OPP_VMIN_DSPEVE	STD_FUSE_OPP_VMIN_DSPEVE_NOM
-#define STD_FUSE_OPP_VMIN_GPU		STD_FUSE_OPP_VMIN_GPU_NOM
-#define STD_FUSE_OPP_VMIN_IVA		STD_FUSE_OPP_VMIN_IVA_NOM
+#if defined(CONFIG_DRA7_MPU_OPP_HIGH)
+#define DRA7_MPU_OPP	OPP_HIGH
+#elif defined(CONFIG_DRA7_MPU_OPP_OD)
+#define DRA7_MPU_OPP	OPP_OD
+#else /* OPP_NOM default */
+#define DRA7_MPU_OPP	OPP_NOM
+#endif
+
+/* OPP_NOM only available option for CORE */
+#define DRA7_CORE_OPP	OPP_NOM
+
+#if defined(CONFIG_DRA7_DSPEVE_OPP_HIGH)
+#define DRA7_DSPEVE_OPP	OPP_HIGH
+#elif defined(CONFIG_DRA7_DSPEVE_OPP_OD)
+#define DRA7_DSPEVE_OPP	OPP_OD
+#else /* OPP_NOM default */
+#define DRA7_DSPEVE_OPP	OPP_NOM
+#endif
+
+#if defined(CONFIG_DRA7_IVA_OPP_HIGH)
+#define DRA7_IVA_OPP	OPP_HIGH
+#elif defined(CONFIG_DRA7_IVA_OPP_OD)
+#define DRA7_IVA_OPP	OPP_OD
+#else /* OPP_NOM default */
+#define DRA7_IVA_OPP	OPP_NOM
+#endif
+
+#if defined(CONFIG_DRA7_GPU_OPP_HIGH)
+#define DRA7_GPU_OPP	OPP_HIGH
+#elif defined(CONFIG_DRA7_GPU_OPP_OD)
+#define DRA7_GPU_OPP	OPP_OD
+#else /* OPP_NOM default */
+#define DRA7_GPU_OPP	OPP_NOM
+#endif
 
 /* Standard offset is 0.5v expressed in uv */
 #define PALMAS_SMPS_BASE_VOLT_UV 500000
diff --git a/arch/arm/mach-omap2/omap5/Kconfig b/arch/arm/mach-omap2/omap5/Kconfig
index 22259dc..6741149 100644
--- a/arch/arm/mach-omap2/omap5/Kconfig
+++ b/arch/arm/mach-omap2/omap5/Kconfig
@@ -91,4 +91,69 @@  source "board/ti/omap5_uevm/Kconfig"
 source "board/ti/dra7xx/Kconfig"
 source "board/ti/am57xx/Kconfig"
 
+if TARGET_DRA7XX_EVM || TARGET_AM57XX_EVM
+menu "Voltage Domain OPP selections"
+
+choice
+	prompt "MPU Voltage Domain"
+	default DRA7_MPU_OPP_NOM
+        help
+	  Select the OPP for the MPU voltage domain on DRA7xx & AM57xx SoCs
+
+config DRA7_MPU_OPP_NOM
+	bool "OPP NOM"
+
+endchoice
+
+choice
+	prompt "DSPEVE Voltage Domain"
+        help
+	  Select the OPP for the DSPEVE voltage domain on DRA7xx and AM57xx SoCs
+
+config DRA7_DSPEVE_OPP_NOM
+	bool "OPP NOM"
+
+config DRA7_DSPEVE_OPP_OD
+	bool "OPP OD"
+
+config DRA7_DSPEVE_OPP_HIGH
+	bool "OPP HIGH"
+
+endchoice
+
+choice
+	prompt "IVA Voltage Domain"
+        help
+	  Select the OPP for the IVA voltage domain on DRA7xx and AM57xx SoCs
+
+config DRA7_IVA_OPP_NOM
+	bool "OPP NOM"
+
+config DRA7_IVA_OPP_OD
+	bool "OPP OD"
+
+config DRA7_IVA_OPP_HIGH
+	bool "OPP HIGH"
+
+endchoice
+
+choice
+	prompt "GPU Voltage Domain"
+        help
+	  Select the OPP for the GPU voltage domain on DRA7xx and AM57xx SoCs
+
+config DRA7_GPU_OPP_NOM
+	bool "OPP NOM"
+
+config DRA7_GPU_OPP_OD
+	bool "OPP OD"
+
+config DRA7_GPU_OPP_HIGH
+	bool "OPP HIGH"
+
+endchoice
+
+endmenu
+endif
+
 endif