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;