Module Name:    src
Committed By:   matt
Date:           Fri Jun 28 02:31:16 UTC 2013

Modified Files:
        src/sys/arch/arm/omap: am335x_prcm.c am335x_prcm.h

Log Message:
Add a routine to set the mpu multiplier.  (not used yet)


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/omap/am335x_prcm.c
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/omap/am335x_prcm.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/omap/am335x_prcm.c
diff -u src/sys/arch/arm/omap/am335x_prcm.c:1.1 src/sys/arch/arm/omap/am335x_prcm.c:1.2
--- src/sys/arch/arm/omap/am335x_prcm.c:1.1	Tue Dec 11 18:53:26 2012
+++ src/sys/arch/arm/omap/am335x_prcm.c	Fri Jun 28 02:31:16 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: am335x_prcm.c,v 1.1 2012/12/11 18:53:26 riastradh Exp $	*/
+/*	$NetBSD: am335x_prcm.c,v 1.2 2013/06/28 02:31:16 matt Exp $	*/
 
 /*
  * TI OMAP Power, Reset, and Clock Management on the AM335x
@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: am335x_prcm.c,v 1.1 2012/12/11 18:53:26 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: am335x_prcm.c,v 1.2 2013/06/28 02:31:16 matt Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -93,3 +93,33 @@ prcm_module_disable(const struct omap_mo
 	prcm_write_4(cm_module, clkctrl_reg, clkctrl);
 	am335x_prcm_check_clkctrl(cm_module, clkctrl_reg, clkctrl);
 }
+
+void
+prcm_mpu_pll_config(u_int mpupll_m)
+{
+	uint32_t clkmode = prcm_read_4(AM335X_PRCM_CM_WKUP, AM335X_PRCM_CM_CLKMODE_DPLL_MPU);
+	uint32_t clksel = prcm_read_4(AM335X_PRCM_CM_WKUP, AM335X_PRCM_CM_CLKSEL_DPLL_MPU);
+	//uint32_t div_m2 = prcm_read_4(AM335X_PRCM_CM_WKUP, AM335X_PRCM_CM_DIV_M2_DPLL_MPU);
+
+	/* Request the DPLL to be put into bypass mode */
+	prcm_write_4(AM335X_PRCM_CM_WKUP, AM335X_PRCM_CM_CLKMODE_DPLL_MPU, AM335X_PRCM_CM_CLKMODE_DPLL_MN_BYP_MODE);
+
+	/* Wait for it to be put into bypass */
+	while (prcm_read_4(AM335X_PRCM_CM_WKUP, AM335X_PRCM_CM_IDLEST_DPLL_MPU) != AM335X_PRCM_CM_IDLEST_DPLL_ST_DPLL_CLK_MN_BYPASS) {
+		/* nothing */
+	}
+
+	/* Replace multipler */
+	clksel &= ~AM335X_PRCM_CM_CLKSEL_DPLL_MULT;
+	clksel |= __SHIFTIN(mpupll_m, AM335X_PRCM_CM_CLKSEL_DPLL_MULT);
+	prcm_write_4(AM335X_PRCM_CM_WKUP, AM335X_PRCM_CM_CLKSEL_DPLL_MPU, clksel);
+
+	/* Exit bypass mode */
+	clkmode |= AM335X_PRCM_CM_CLKMODE_DPLL_LOCK_MODE; 
+	prcm_write_4(AM335X_PRCM_CM_WKUP, AM335X_PRCM_CM_CLKMODE_DPLL_MPU, clkmode);
+
+	/* Wait for the DPLL to lock */
+	while (prcm_read_4(AM335X_PRCM_CM_WKUP, AM335X_PRCM_CM_IDLEST_DPLL_MPU) != AM335X_PRCM_CM_IDLEST_DPLL_ST_DPLL_CLK_LOCKED) {
+		/* nothing */
+	}
+}

Index: src/sys/arch/arm/omap/am335x_prcm.h
diff -u src/sys/arch/arm/omap/am335x_prcm.h:1.2 src/sys/arch/arm/omap/am335x_prcm.h:1.3
--- src/sys/arch/arm/omap/am335x_prcm.h:1.2	Thu Dec 13 02:12:15 2012
+++ src/sys/arch/arm/omap/am335x_prcm.h	Fri Jun 28 02:31:16 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: am335x_prcm.h,v 1.2 2012/12/13 02:12:15 jakllsch Exp $	*/
+/*	$NetBSD: am335x_prcm.h,v 1.3 2013/06/28 02:31:16 matt Exp $	*/
 
 /*
  * TI OMAP Power, Reset, and Clock Management on the AM335x
@@ -61,8 +61,24 @@ struct omap_module {
 #define AM335X_PRCM_PRM_GFX	0x1100
 #define AM335X_PRCM_PRM_CEFUSE	0x1200
 
+/* In CM_WKUP */
+#define	AM335X_PRCM_CM_IDLEST_DPLL_MPU	0x20
+#define  AM335X_PRCM_CM_IDLEST_DPLL_ST_DPLL_CLK_MN_BYPASS	__BIT(8)
+#define  AM335X_PRCM_CM_IDLEST_DPLL_ST_DPLL_CLK_LOCKED		__BIT(0)
+#define	AM335X_PRCM_CM_CLKSEL_DPLL_MPU	0x2c
+#define  AM335X_PRCM_CM_CLKSEL_DPLL_BYPASS	__BITS(23)
+#define  AM335X_PRCM_CM_CLKSEL_DPLL_MULT	__BITS(18,8)
+#define  AM335X_PRCM_CM_CLKSEL_DPLL_DIV		__BITS(6,0)
+#define	AM335X_PRCM_CM_CLKMODE_DPLL_MPU	0x88
+#define  AM335X_PRCM_CM_CLKMODE_DPLL_MN_BYP_MODE	4
+#define  AM335X_PRCM_CM_CLKMODE_DPLL_LOCK_MODE		7
+#define	AM335X_PRCM_CM_DIV_M2_DPLL_MPU	0xa8
+
+
 #define PRM_RSTCTRL		0x00	/* offset from AM335X_PRCM_PRM_DEVICE */
 #define RST_GLOBAL_WARM_SW	__BIT(0)
 #define RST_GLOBAL_COLD_SW	__BIT(1)
 
+void prcm_mpu_pll_config(u_int);
+
 #endif  /* _ARM_OMAP_AM335X_PRCM_H_ */

Reply via email to