Module Name:    src
Committed By:   jmcneill
Date:           Thu Sep  4 02:36:08 UTC 2014

Modified Files:
        src/sys/arch/arm/allwinner: awin_board.c awin_var.h

Log Message:
pll2 enable support


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/arm/allwinner/awin_board.c
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/allwinner/awin_var.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/allwinner/awin_board.c
diff -u src/sys/arch/arm/allwinner/awin_board.c:1.15 src/sys/arch/arm/allwinner/awin_board.c:1.16
--- src/sys/arch/arm/allwinner/awin_board.c:1.15	Sun Aug 24 12:42:03 2014
+++ src/sys/arch/arm/allwinner/awin_board.c	Thu Sep  4 02:36:08 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: awin_board.c,v 1.15 2014/08/24 12:42:03 jmcneill Exp $	*/
+/*	$NetBSD: awin_board.c,v 1.16 2014/09/04 02:36:08 jmcneill Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -35,7 +35,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(1, "$NetBSD: awin_board.c,v 1.15 2014/08/24 12:42:03 jmcneill Exp $");
+__KERNEL_RCSID(1, "$NetBSD: awin_board.c,v 1.16 2014/09/04 02:36:08 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -275,3 +275,27 @@ awin_pll6_enable(void)
 	    __SHIFTOUT(ncfg, AWIN_PLL_CFG_FACTOR_M));
 #endif
 }
+
+void
+awin_pll2_enable(void)
+{
+	bus_space_tag_t bst = &awin_bs_tag;
+	bus_space_handle_t bsh = awin_core_bsh;
+
+	/*
+  	 * AC (at 48kHz) needs PLL2 to be 24576000 Hz
+  	 */
+	const uint32_t ocfg = bus_space_read_4(bst, bsh,
+	    AWIN_CCM_OFFSET + AWIN_PLL2_CFG_REG);
+
+	uint32_t ncfg = ocfg;
+	ncfg &= ~(AWIN_PLL2_CFG_PREVDIV|AWIN_PLL2_CFG_FACTOR_N|AWIN_PLL2_CFG_POSTDIV);
+	ncfg |= __SHIFTIN(21, AWIN_PLL2_CFG_PREVDIV);
+	ncfg |= __SHIFTIN(86, AWIN_PLL2_CFG_FACTOR_N);
+	ncfg |= __SHIFTIN(4, AWIN_PLL2_CFG_POSTDIV);
+	ncfg |= AWIN_PLL_CFG_ENABLE;
+	if (ncfg != ocfg) {
+		bus_space_write_4(bst, bsh,
+		    AWIN_CCM_OFFSET + AWIN_PLL2_CFG_REG, ncfg);
+	}
+}

Index: src/sys/arch/arm/allwinner/awin_var.h
diff -u src/sys/arch/arm/allwinner/awin_var.h:1.10 src/sys/arch/arm/allwinner/awin_var.h:1.11
--- src/sys/arch/arm/allwinner/awin_var.h:1.10	Thu Jun  5 03:48:32 2014
+++ src/sys/arch/arm/allwinner/awin_var.h	Thu Sep  4 02:36:08 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: awin_var.h,v 1.10 2014/06/05 03:48:32 matt Exp $ */
+/* $NetBSD: awin_var.h,v 1.11 2014/09/04 02:36:08 jmcneill Exp $ */
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -81,6 +81,7 @@ extern struct arm32_bus_dma_tag awin_coh
 psize_t awin_memprobe(void);
 void	awin_bootstrap(vaddr_t, vaddr_t); 
 void	awin_dma_bootstrap(psize_t);
+void	awin_pll2_enable(void);
 void	awin_pll6_enable(void);
 void	awin_cpu_hatch(struct cpu_info *);
 

Reply via email to