Skip to contentSkip to conversation

addition of clocks command for davinci

PATCH New Manjunath Hadli 4 participants 7 messages Feb 2, 2012 – Feb 3, 2012 Arm (32-bit)

lore
Share & tools
lore
#0 lore raw

cover addition of clocks command for davinci

This patch series adds new command - 'clocks' for davinci family of SOCs. This command prints CPU, DSP core and DDR frequency from the u-boot prompt. Also, support for printing frequency info during u-boot initialization is removed as it will delay u-boot coming up.

These patches have undergone a review previously, but since the tree has moved ahead Christian and Tom asked to resubmit the patches for review.
(http://www.mail-archive.com/u-boot at lists.denx.de/msg76220.html)

Manjunath Hadli (3):
davinci: move clock related functions to new file
davinci: remove macro CONFIG_DISPLAY_CPUINFO
davinci: add clocks command

 arch/arm/cpu/arm926ejs/davinci/Makefile  |    2 +-
 arch/arm/cpu/arm926ejs/davinci/cpu.c     |  208 ---------------------------
 arch/arm/cpu/arm926ejs/davinci/speed.c   |  230 ++++++++++++++++++++++++++++++
 include/configs/cam_enc_4xx.h            |    1 -
 include/configs/davinci_dm355evm.h       |    1 -
 include/configs/davinci_dm355leopard.h   |    1 -
 include/configs/davinci_dm6467Tevm.h     |    1 -
 include/configs/davinci_dm6467evm.h      |    1 -
 include/configs/davinci_dvevm.h          |    1 -
 include/configs/davinci_schmoogie.h      |    1 -
 include/configs/davinci_sffsdr.h         |    1 -
 include/configs/davinci_sonata.h         |    1 -
 include/configs/enbw_cmc.h               |    1 -
 nand_spl/board/davinci/da8xxevm/Makefile |    6 +
 14 files changed, 237 insertions(+), 219 deletions(-)
 create mode 100644 arch/arm/cpu/arm926ejs/davinci/speed.c
#1 lore raw

PATCH 1/3 davinci: move clock related functions to new file

Move the clock related function from cpu.c to new file speed.c. Eliminate volatile keyword usage which made no justification and also to keep checkpatch.pl happy. Replace REG instructions by readl.

---
 arch/arm/cpu/arm926ejs/davinci/Makefile  |    2 +-
 arch/arm/cpu/arm926ejs/davinci/cpu.c     |  208 ---------------------------
 arch/arm/cpu/arm926ejs/davinci/speed.c   |  230 ++++++++++++++++++++++++++++++
 nand_spl/board/davinci/da8xxevm/Makefile |    6 +
 4 files changed, 237 insertions(+), 209 deletions(-)
 create mode 100644 arch/arm/cpu/arm926ejs/davinci/speed.c
arch/arm/cpu/arm926ejs/davinci/Makefile +1 -1
index da7efac..81540fd 100644
@@ -27,7 +27,7 @@ include $(TOPDIR)/config.mk
 
 LIB	= $(obj)lib$(SOC).o
 
-COBJS-y				+= cpu.o misc.o timer.o psc.o pinmux.o
+COBJS-y				+= cpu.o misc.o timer.o psc.o pinmux.o speed.o
 COBJS-$(CONFIG_DA850_LOWLEVEL)	+= da850_lowlevel.o
 COBJS-$(CONFIG_SOC_DM355)	+= dm355.o
 COBJS-$(CONFIG_SOC_DM365)	+= dm365.o
arch/arm/cpu/arm926ejs/davinci/cpu.c +0 -208

214 lines not on this page · raw message

arch/arm/cpu/arm926ejs/davinci/speed.c new file +230 -0

230 lines not on this page · raw message

nand_spl/board/davinci/da8xxevm/Makefile +6 -0
index 7746e41..cfbe319 100644
@@ -41,6 +41,7 @@ SOBJS	= _divsi3.o \
 	start.o
 
 COBJS	= cpu.o \
+	speed.o \
 	davinci_nand.o \
 	pinmux.o \
 	da850_pinmux.o \
@@ -126,6 +127,11 @@ $(obj)cpu.c:
 	@rm -f $@
 	@ln -s $(TOPDIR)/arch/arm/cpu/arm926ejs/davinci/cpu.c $@
 
+# from SoC directory
+$(obj)speed.c:
+	@rm -f $@
+	@ln -s $(TOPDIR)/arch/arm/cpu/arm926ejs/davinci/speed.c $@
+
 $(obj)misc.c:
 	@rm -f $@
 	ln -s $(TOPDIR)/arch/arm/cpu/arm926ejs/davinci/misc.c $@
Signature · 1 line
1.6.2.4
#2 lore raw

PATCH 1/3 davinci: move clock related functions to new file

hi Manjunath,

Quoted 11 lines · Manjunath Hadli

Move the clock related function from cpu.c to new file speed.c. Eliminate volatile keyword usage which made no justification and also to keep checkpatch.pl happy. Replace REG instructions by readl.

---

 nand_spl/board/davinci/da8xxevm/Makefile |    6 +

You might want to check the patch "Changes to move hawkboard to the new spl infrastructure". This patch removes the above file, and moves the hawkboard to the new spl infrastructure -- the above change would not be needed.

-sughosh

#3 lore raw

PATCH 2/3 davinci: remove macro CONFIG_DISPLAY_CPUINFO

In reply to Manjunath Hadli

remove the macro CONFIG_DISPLAY_CPUINFO as it is no longer required. This is because clock info will be printed as part 'clocks' command. Also avoid building of print_cpuinfo() function for SPL framework.

---
 arch/arm/cpu/arm926ejs/davinci/speed.c |    5 +----
 include/configs/cam_enc_4xx.h          |    1 -
 include/configs/davinci_dm355evm.h     |    1 -
 include/configs/davinci_dm355leopard.h |    1 -
 include/configs/davinci_dm6467Tevm.h   |    1 -
 include/configs/davinci_dm6467evm.h    |    1 -
 include/configs/davinci_dvevm.h        |    1 -
 include/configs/davinci_schmoogie.h    |    1 -
 include/configs/davinci_sffsdr.h       |    1 -
 include/configs/davinci_sonata.h       |    1 -
 include/configs/enbw_cmc.h             |    1 -
 11 files changed, 1 insertions(+), 14 deletions(-)
arch/arm/cpu/arm926ejs/davinci/speed.c +1 -4
index 5285142..156419b 100644
@@ -114,7 +114,7 @@ int clk_get(enum davinci_clk_ids id)
 out:
 	return pll_out;
 }
-#ifdef CONFIG_DISPLAY_CPUINFO
+#if !defined(CONFIG_SPL_BUILD) && !defined(CONFIG_NAND_SPL)
 int print_cpuinfo(void)
 {
 	printf("Cores: ARM %d MHz",
@@ -127,8 +127,6 @@ int print_cpuinfo(void)
 #endif
 #else /* CONFIG_SOC_DA8XX */
 
-#ifdef CONFIG_DISPLAY_CPUINFO
-
 static unsigned pll_div(unsigned pllbase, unsigned offset)
 {
 	u32	div;
@@ -226,5 +224,4 @@ unsigned int davinci_clk_get(unsigned int div)
 	return pll_sysclk_mhz(DAVINCI_PLL_CNTRL0_BASE, div) * 1000000;
 }
 #endif
-#endif /* CONFIG_DISPLAY_CPUINFO */
 #endif /* !CONFIG_SOC_DA8XX */
include/configs/cam_enc_4xx.h +0 -1
index a21d448..419cfd4 100644
@@ -257,7 +257,6 @@
 #define CONFIG_POST	CONFIG_SYS_POST_MEMORY
 #define _POST_WORD_ADDR	0x0
 
-#define CONFIG_DISPLAY_CPUINFO
 #define CONFIG_DISPLAY_BOARDINFO
 
 #define CONFIG_SYS_INIT_SP_ADDR		CONFIG_SPL_STACK
include/configs/davinci_dm355evm.h +0 -1
index ddf673c..8578730 100644
@@ -26,7 +26,6 @@
 #define CONFIG_SKIP_LOWLEVEL_INIT	/* U-Boot is a 3rd stage loader */
 #define CONFIG_SYS_NO_FLASH		/* that is, no *NOR* flash */
 #define CONFIG_SYS_CONSOLE_INFO_QUIET
-#define CONFIG_DISPLAY_CPUINFO
 
 /* SoC Configuration */
 #define CONFIG_ARM926EJS				/* arm926ejs CPU */
include/configs/davinci_dm355leopard.h +0 -1
index dfa0a00..eaff66e 100644
@@ -25,7 +25,6 @@
 #define CONFIG_SKIP_LOWLEVEL_INIT	/* U-Boot is a 3rd stage loader */
 #define CONFIG_SYS_NO_FLASH		/* that is, no *NOR* flash */
 #define CONFIG_SYS_CONSOLE_INFO_QUIET
-#define CONFIG_DISPLAY_CPUINFO
 
 /* SoC Configuration */
 #define CONFIG_ARM926EJS				/* arm926ejs CPU */
include/configs/davinci_dm6467Tevm.h +0 -1
index b3a4e44..f7c994e 100644
@@ -23,7 +23,6 @@
 /* Spectrum Digital TMS320DM6467T EVM board */
 #define DAVINCI_DM6467EVM
 #define DAVINCI_DM6467TEVM
-#define CONFIG_DISPLAY_CPUINFO
 #define CONFIG_SYS_USE_NAND
 #define CONFIG_SYS_NAND_SMALLPAGE
 
include/configs/davinci_dm6467evm.h +0 -1
index c9a0cd1..ddfd3ed 100644
@@ -22,7 +22,6 @@
 
 /* Spectrum Digital TMS320DM6467 EVM board */
 #define DAVINCI_DM6467EVM
-#define CONFIG_DISPLAY_CPUINFO
 #define CONFIG_SYS_USE_NAND
 #define CONFIG_SYS_NAND_SMALLPAGE
 
include/configs/davinci_dvevm.h +0 -1
index c052517..a2aa3c3 100644
@@ -51,7 +51,6 @@
 #define DV_EVM
 #define CONFIG_SYS_NAND_SMALLPAGE
 #define CONFIG_SYS_USE_NAND
-#define CONFIG_DISPLAY_CPUINFO
 /*===================*/
 /* SoC Configuration */
 /*===================*/
include/configs/davinci_schmoogie.h +0 -1
index f4ddbea..e0a8ee9 100644
@@ -26,7 +26,6 @@
 #define SCHMOOGIE
 #define CONFIG_SYS_NAND_LARGEPAGE
 #define CONFIG_SYS_USE_NAND
-#define CONFIG_DISPLAY_CPUINFO
 #define MACH_TYPE_SCHMOOGIE 1255
 #define CONFIG_MACH_TYPE MACH_TYPE_SCHMOOGIE
 
include/configs/davinci_sffsdr.h +0 -1
index 0c65391..a2da65a 100644
@@ -28,7 +28,6 @@
 #define CONFIG_SYS_NAND_LARGEPAGE
 #define CONFIG_SYS_USE_NAND
 #define CONFIG_SYS_USE_DSPLINK		/* don't power up the DSP. */
-#define CONFIG_DISPLAY_CPUINFO
 /* SoC Configuration */
 #define CONFIG_ARM926EJS			/* arm926ejs CPU core */
 #define CONFIG_SYS_TIMERBASE		0x01c21400	/* use timer 0 */
include/configs/davinci_sonata.h +0 -1
index fc4d8ec..db47966 100644
@@ -51,7 +51,6 @@
 #define SONATA_BOARD
 #define CONFIG_SYS_NAND_SMALLPAGE
 #define CONFIG_SYS_USE_NOR
-#define CONFIG_DISPLAY_CPUINFO
 #define MACH_TYPE_SONATA 1254
 #define CONFIG_MACH_TYPE MACH_TYPE_SONATA
 /*===================*/
include/configs/enbw_cmc.h +0 -1
index c427dc7..1cbc5cc 100644
@@ -50,7 +50,6 @@
 #define CONFIG_ARCH_CPU_INIT
 #define CONFIG_DA8XX_GPIO
 #define CONFIG_HOSTNAME		enbw_cmc
-#define CONFIG_DISPLAY_CPUINFO
 
 #define MACH_TYPE_ENBW_CMC	3585
 #define CONFIG_MACH_TYPE	MACH_TYPE_ENBW_CMC
Signature · 1 line
1.6.2.4
#4 lore raw

PATCH 3/3 davinci: add clocks command

In reply to Manjunath Hadli

Add 'clocks' command to print various frequencies such as ARM frequency, DSP core frequency and DDR frequency. Remove print_cpuinfo() function as it is no longer required.

---
 arch/arm/cpu/arm926ejs/davinci/speed.c |   73 ++++++++++++++++---------------
 1 files changed, 38 insertions(+), 35 deletions(-)
arch/arm/cpu/arm926ejs/davinci/speed.c +38 -35
index 156419b..eb969e5 100644
@@ -21,6 +21,7 @@
  */
 
 #include <common.h>
+#include <command.h>
 #include <asm/io.h>
 #include <asm/arch/hardware.h>
 
@@ -114,17 +115,6 @@ int clk_get(enum davinci_clk_ids id)
 out:
 	return pll_out;
 }
-#if !defined(CONFIG_SPL_BUILD) && !defined(CONFIG_NAND_SPL)
-int print_cpuinfo(void)
-{
-	printf("Cores: ARM %d MHz",
-			clk_get(DAVINCI_ARM_CLKID) / 1000000);
-	printf("\nDDR:   %d MHz\n",
-			/* DDR PHY uses an x2 input clock */
-			clk_get(0x10001) / 1000000);
-	return 0;
-}
-#endif
 #else /* CONFIG_SOC_DA8XX */
 
 static unsigned pll_div(unsigned pllbase, unsigned offset)
@@ -181,47 +171,60 @@ static unsigned pll_sysclk_mhz(unsigned pll_addr, unsigned div)
 	return DIV_ROUND_UP(base, 1000 * pll_div(pll_addr, div));
 }
 
-int print_cpuinfo(void)
+#ifdef DAVINCI_DM6467EVM
+unsigned int davinci_arm_clk_get()
+{
+	return pll_sysclk_mhz(DAVINCI_PLL_CNTRL0_BASE, ARM_PLLDIV) * 1000000;
+}
+#endif
+
+#if defined(CONFIG_SOC_DM365)
+unsigned int davinci_clk_get(unsigned int div)
+{
+	return pll_sysclk_mhz(DAVINCI_PLL_CNTRL0_BASE, div) * 1000000;
+}
+#endif
+#endif /* !CONFIG_SOC_DA8XX */
+
+#if !defined(CONFIG_SPL_BUILD) && !defined(CONFIG_NAND_SPL)
+int showclocks(cmd_tbl_t *cmdtp,
+		int flag, int argc, char * const argv[])
 {
 	/* REVISIT fetch and display CPU ID and revision information
 	 * too ... that will matter as more revisions appear.
 	 */
-#if defined(CONFIG_SOC_DM365)
-	printf("Cores: ARM %d MHz",
-			pll_sysclk_mhz(DAVINCI_PLL_CNTRL1_BASE, ARM_PLLDIV));
+
+	puts("Clock configuration:\n");
+#if defined(CONFIG_SOC_DA8XX)
+	printf("Cores: ARM %d MHz", clk_get(DAVINCI_ARM_CLKID) / 1000000);
+	printf("\nDDR:   %d MHz\n",
+			/* DDR PHY uses an x2 input clock */
+			clk_get(0x10001) / 1000000);
 #else
-	printf("Cores: ARM %d MHz",
-			pll_sysclk_mhz(DAVINCI_PLL_CNTRL0_BASE, ARM_PLLDIV));
+	unsigned int pllbase = DAVINCI_PLL_CNTRL0_BASE;
+
+#if defined(CONFIG_SOC_DM365)
+	pllbase = DAVINCI_PLL_CNTRL1_BASE;
 #endif
+	printf("Cores: ARM %d MHz", pll_sysclk_mhz(pllbase, ARM_PLLDIV));
 
 #ifdef DSP_PLLDIV
 	printf(", DSP %d MHz",
 			pll_sysclk_mhz(DAVINCI_PLL_CNTRL0_BASE, DSP_PLLDIV));
 #endif
 
+	pllbase = DAVINCI_PLL_CNTRL1_BASE;
+ #if defined(CONFIG_SOC_DM365)
+	pllbase = DAVINCI_PLL_CNTRL0_BASE;
+ #endif
 	printf("\nDDR:   %d MHz\n",
 			/* DDR PHY uses an x2 input clock */
-#if defined(CONFIG_SOC_DM365)
-			pll_sysclk_mhz(DAVINCI_PLL_CNTRL0_BASE, DDR_PLLDIV)
-				/ 2);
-#else
-			pll_sysclk_mhz(DAVINCI_PLL_CNTRL1_BASE, DDR_PLLDIV)
-				/ 2);
+			pll_sysclk_mhz(pllbase, DDR_PLLDIV) / 2);
 #endif
 	return 0;
 }
 
-#ifdef DAVINCI_DM6467EVM
-unsigned int davinci_arm_clk_get()
-{
-	return pll_sysclk_mhz(DAVINCI_PLL_CNTRL0_BASE, ARM_PLLDIV) * 1000000;
-}
-#endif
+U_BOOT_CMD(clocks, 1, 0, showclocks,
+	"display clocks", "");
 
-#if defined(CONFIG_SOC_DM365)
-unsigned int davinci_clk_get(unsigned int div)
-{
-	return pll_sysclk_mhz(DAVINCI_PLL_CNTRL0_BASE, div) * 1000000;
-}
 #endif
-#endif /* !CONFIG_SOC_DA8XX */
Signature · 1 line
1.6.2.4
#5 lore raw

PATCH 3/3 davinci: add clocks command

Quoted 6 lines · Manjunath Hadli

Add 'clocks' command to print various frequencies such as ARM frequency, DSP core frequency and DDR frequency. Remove print_cpuinfo() function as it is no longer required.

NAK. The feedback from the last time you submitted this was to extend the functionality of 'bdinfo' to be able to include this. See
http://patchwork.ozlabs.org/patch/120105/

Signature · 1 line
Tom
#6 lore raw

PATCH 3/3 davinci: add clocks command

Tom,

Quoted 9 lines · Tom Rini
Quoted 6 lines · Manjunath Hadli

Add 'clocks' command to print various frequencies such as ARM frequency, DSP core frequency and DDR frequency. Remove print_cpuinfo() function as it is no longer required.

NAK. The feedback from the last time you submitted this was to extend the functionality of 'bdinfo' to be able to include this. See http://patchwork.ozlabs.org/patch/120105/

Agreed. I will implement this functionality as part 'bdinfo' command and resubmit the patches.

Regards,
--Manju

Quoted 4 lines

--
Tom