Module Name:    src
Committed By:   jmcneill
Date:           Wed Jan  1 12:18:18 UTC 2020

Modified Files:
        src/sys/dev/fdt: dwcmmc_fdt.c
        src/sys/dev/ic: dwc_mmc.c dwc_mmc_var.h

Log Message:
Fix performance regression with previous


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/dev/fdt/dwcmmc_fdt.c
cvs rdiff -u -r1.19 -r1.20 src/sys/dev/ic/dwc_mmc.c
cvs rdiff -u -r1.10 -r1.11 src/sys/dev/ic/dwc_mmc_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/dev/fdt/dwcmmc_fdt.c
diff -u src/sys/dev/fdt/dwcmmc_fdt.c:1.9 src/sys/dev/fdt/dwcmmc_fdt.c:1.10
--- src/sys/dev/fdt/dwcmmc_fdt.c:1.9	Wed Jan  1 11:21:15 2020
+++ src/sys/dev/fdt/dwcmmc_fdt.c	Wed Jan  1 12:18:18 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: dwcmmc_fdt.c,v 1.9 2020/01/01 11:21:15 jmcneill Exp $ */
+/* $NetBSD: dwcmmc_fdt.c,v 1.10 2020/01/01 12:18:18 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015-2018 Jared McNeill <jmcne...@invisible.ca>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dwcmmc_fdt.c,v 1.9 2020/01/01 11:21:15 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dwcmmc_fdt.c,v 1.10 2020/01/01 12:18:18 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -156,6 +156,7 @@ dwcmmc_fdt_attach(device_t parent, devic
 		sc->sc_bus_width = 4;
 
 	sc->sc_fifo_depth = fifo_depth;
+	sc->sc_ciu_div = esc->sc_conf->ciu_div;
 	sc->sc_flags = esc->sc_conf->flags;
 	sc->sc_pre_power_on = dwcmmc_fdt_pre_power_on;
 	sc->sc_post_power_on = dwcmmc_fdt_post_power_on;
@@ -220,7 +221,7 @@ static int
 dwcmmc_fdt_bus_clock(struct dwc_mmc_softc *sc, int rate)
 {
 	struct dwcmmc_fdt_softc *esc = device_private(sc->sc_dev);
-        const u_int ciu_div = esc->sc_conf->ciu_div > 0 ? esc->sc_conf->ciu_div : 1;
+        const u_int ciu_div = sc->sc_ciu_div > 0 ? sc->sc_ciu_div : 1;
 	int error;
 
 	error = clk_set_rate(esc->sc_clk_ciu, 1000 * rate * ciu_div);

Index: src/sys/dev/ic/dwc_mmc.c
diff -u src/sys/dev/ic/dwc_mmc.c:1.19 src/sys/dev/ic/dwc_mmc.c:1.20
--- src/sys/dev/ic/dwc_mmc.c:1.19	Wed Jan  1 11:21:15 2020
+++ src/sys/dev/ic/dwc_mmc.c	Wed Jan  1 12:18:18 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: dwc_mmc.c,v 1.19 2020/01/01 11:21:15 jmcneill Exp $ */
+/* $NetBSD: dwc_mmc.c,v 1.20 2020/01/01 12:18:18 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2014-2017 Jared McNeill <jmcne...@invisible.ca>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dwc_mmc.c,v 1.19 2020/01/01 11:21:15 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dwc_mmc.c,v 1.20 2020/01/01 12:18:18 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -366,10 +366,12 @@ static int
 dwc_mmc_set_clock(struct dwc_mmc_softc *sc, u_int freq)
 {
 	const u_int pll_freq = sc->sc_clock_freq / 1000;
-	u_int clk_div;
+	u_int clk_div, ciu_div;
+
+	ciu_div = sc->sc_ciu_div > 0 ? sc->sc_ciu_div : 1;
 
 	if (freq != pll_freq)
-		clk_div = howmany(pll_freq, freq);
+		clk_div = howmany(pll_freq, freq * ciu_div);
 	else
 		clk_div = 0;
 

Index: src/sys/dev/ic/dwc_mmc_var.h
diff -u src/sys/dev/ic/dwc_mmc_var.h:1.10 src/sys/dev/ic/dwc_mmc_var.h:1.11
--- src/sys/dev/ic/dwc_mmc_var.h:1.10	Wed Jan  1 11:21:15 2020
+++ src/sys/dev/ic/dwc_mmc_var.h	Wed Jan  1 12:18:18 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: dwc_mmc_var.h,v 1.10 2020/01/01 11:21:15 jmcneill Exp $ */
+/* $NetBSD: dwc_mmc_var.h,v 1.11 2020/01/01 12:18:18 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2014-2017 Jared McNeill <jmcne...@invisible.ca>
@@ -52,6 +52,8 @@ struct dwc_mmc_softc {
 	int sc_mmc_width;
 	int sc_mmc_port;
 
+	u_int sc_ciu_div;
+
 	device_t sc_sdmmc_dev;
 
 	uint32_t sc_idma_xferlen;

Reply via email to