Module Name: src Committed By: jmcneill Date: Thu Jun 29 10:53:59 UTC 2017
Modified Files: src/sys/arch/arm/sunxi: sun8i_h3_ccu.c sunxi_ccu.c sunxi_ccu.h sunxi_ccu_nkmp.c sunxi_ccu_nm.c Log Message: SD/MMC clock fixes To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/sunxi/sun8i_h3_ccu.c \ src/sys/arch/arm/sunxi/sunxi_ccu.c src/sys/arch/arm/sunxi/sunxi_ccu.h \ src/sys/arch/arm/sunxi/sunxi_ccu_nm.c cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/sunxi/sunxi_ccu_nkmp.c 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/sunxi/sun8i_h3_ccu.c diff -u src/sys/arch/arm/sunxi/sun8i_h3_ccu.c:1.2 src/sys/arch/arm/sunxi/sun8i_h3_ccu.c:1.3 --- src/sys/arch/arm/sunxi/sun8i_h3_ccu.c:1.2 Thu Jun 29 09:26:06 2017 +++ src/sys/arch/arm/sunxi/sun8i_h3_ccu.c Thu Jun 29 10:53:59 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: sun8i_h3_ccu.c,v 1.2 2017/06/29 09:26:06 jmcneill Exp $ */ +/* $NetBSD: sun8i_h3_ccu.c,v 1.3 2017/06/29 10:53:59 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared McNeill <jmcne...@invisible.ca> @@ -29,7 +29,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: sun8i_h3_ccu.c,v 1.2 2017/06/29 09:26:06 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: sun8i_h3_ccu.c,v 1.3 2017/06/29 10:53:59 jmcneill Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -138,8 +138,13 @@ static const char *mod_parents[] = { "ho static struct sunxi_ccu_clk sun8i_h3_ccu_clks[] = { SUNXI_CCU_NKMP(H3_CLK_PLL_PERIPH0, "pll_periph0", "hosc", - PLL_PERIPH0_CTRL_REG, __BITS(12,8), __BITS(5,3), 0, __BITS(17,16), __BIT(31), - 0), + PLL_PERIPH0_CTRL_REG, /* reg */ + __BITS(12,8), /* n */ + __BITS(5,4), /* k */ + 0, /* m */ + __BITS(17,16), /* p */ + __BIT(31), /* enable */ + SUNXI_CCU_NKMP_DIVIDE_BY_TWO), SUNXI_CCU_PREDIV(H3_CLK_AHB1, "ahb1", ahb1_parents, AHB1_APB1_CFG_REG, /* reg */ Index: src/sys/arch/arm/sunxi/sunxi_ccu.c diff -u src/sys/arch/arm/sunxi/sunxi_ccu.c:1.2 src/sys/arch/arm/sunxi/sunxi_ccu.c:1.3 --- src/sys/arch/arm/sunxi/sunxi_ccu.c:1.2 Thu Jun 29 09:26:06 2017 +++ src/sys/arch/arm/sunxi/sunxi_ccu.c Thu Jun 29 10:53:59 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: sunxi_ccu.c,v 1.2 2017/06/29 09:26:06 jmcneill Exp $ */ +/* $NetBSD: sunxi_ccu.c,v 1.3 2017/06/29 10:53:59 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared McNeill <jmcne...@invisible.ca> @@ -31,7 +31,7 @@ #include "opt_fdt_arm.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sunxi_ccu.c,v 1.2 2017/06/29 09:26:06 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sunxi_ccu.c,v 1.3 2017/06/29 10:53:59 jmcneill Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -327,10 +327,11 @@ sunxi_ccu_print(struct sunxi_ccu_softc * case SUNXI_CCU_GATE: type = "gate"; break; case SUNXI_CCU_NM: type = "nm"; break; case SUNXI_CCU_NKMP: type = "nkmp"; break; + case SUNXI_CCU_PREDIV: type = "prediv"; break; default: type = "???"; break; } - printf(" %-12s %2s %-12s %-5s ", + printf(" %-12s %2s %-12s %-7s ", clk->base.name, clkp_parent ? "<-" : "", clkp_parent ? clkp_parent->name : "", Index: src/sys/arch/arm/sunxi/sunxi_ccu.h diff -u src/sys/arch/arm/sunxi/sunxi_ccu.h:1.2 src/sys/arch/arm/sunxi/sunxi_ccu.h:1.3 --- src/sys/arch/arm/sunxi/sunxi_ccu.h:1.2 Thu Jun 29 09:26:06 2017 +++ src/sys/arch/arm/sunxi/sunxi_ccu.h Thu Jun 29 10:53:59 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: sunxi_ccu.h,v 1.2 2017/06/29 09:26:06 jmcneill Exp $ */ +/* $NetBSD: sunxi_ccu.h,v 1.3 2017/06/29 10:53:59 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared McNeill <jmcne...@invisible.ca> @@ -94,6 +94,7 @@ struct sunxi_ccu_nkmp { uint32_t lock; uint32_t enable; uint32_t flags; +#define SUNXI_CCU_NKMP_DIVIDE_BY_TWO __BIT(0) }; int sunxi_ccu_nkmp_enable(struct sunxi_ccu_softc *, Index: src/sys/arch/arm/sunxi/sunxi_ccu_nm.c diff -u src/sys/arch/arm/sunxi/sunxi_ccu_nm.c:1.2 src/sys/arch/arm/sunxi/sunxi_ccu_nm.c:1.3 --- src/sys/arch/arm/sunxi/sunxi_ccu_nm.c:1.2 Thu Jun 29 09:26:06 2017 +++ src/sys/arch/arm/sunxi/sunxi_ccu_nm.c Thu Jun 29 10:53:59 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: sunxi_ccu_nm.c,v 1.2 2017/06/29 09:26:06 jmcneill Exp $ */ +/* $NetBSD: sunxi_ccu_nm.c,v 1.3 2017/06/29 10:53:59 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared McNeill <jmcne...@invisible.ca> @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sunxi_ccu_nm.c,v 1.2 2017/06/29 09:26:06 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sunxi_ccu_nm.c,v 1.3 2017/06/29 10:53:59 jmcneill Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -146,6 +146,7 @@ sunxi_ccu_nm_set_rate(struct sunxi_ccu_s if (nm->flags & SUNXI_CCU_NM_ROUND_DOWN) { const int diff = new_rate - rate; if (diff >= 0 && rate > best_rate) { + best_diff = diff; best_rate = rate; best_n = n; best_m = m; @@ -154,6 +155,7 @@ sunxi_ccu_nm_set_rate(struct sunxi_ccu_s } else { const int diff = abs(new_rate - rate); if (diff < best_diff) { + best_diff = diff; best_rate = rate; best_n = n; best_m = m; Index: src/sys/arch/arm/sunxi/sunxi_ccu_nkmp.c diff -u src/sys/arch/arm/sunxi/sunxi_ccu_nkmp.c:1.1 src/sys/arch/arm/sunxi/sunxi_ccu_nkmp.c:1.2 --- src/sys/arch/arm/sunxi/sunxi_ccu_nkmp.c:1.1 Thu Jun 29 09:26:06 2017 +++ src/sys/arch/arm/sunxi/sunxi_ccu_nkmp.c Thu Jun 29 10:53:59 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: sunxi_ccu_nkmp.c,v 1.1 2017/06/29 09:26:06 jmcneill Exp $ */ +/* $NetBSD: sunxi_ccu_nkmp.c,v 1.2 2017/06/29 10:53:59 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared McNeill <jmcne...@invisible.ca> @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sunxi_ccu_nkmp.c,v 1.1 2017/06/29 09:26:06 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sunxi_ccu_nkmp.c,v 1.2 2017/06/29 10:53:59 jmcneill Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -95,6 +95,9 @@ sunxi_ccu_nkmp_get_rate(struct sunxi_ccu m++; p++; + if (nkmp->flags & SUNXI_CCU_NKMP_DIVIDE_BY_TWO) + m *= 2; + return (u_int)((uint64_t)rate * n * k) / (m * p); }