Module Name: src Committed By: kiyohara Date: Thu Sep 23 12:03:27 UTC 2010
Modified Files: src/sys/dev/sdmmc: ld_sdmmc.c sdmmc_mem.c sdmmcvar.h Log Message: Print bus width and clock for feature(High speed support). To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/dev/sdmmc/ld_sdmmc.c \ src/sys/dev/sdmmc/sdmmcvar.h cvs rdiff -u -r1.10 -r1.11 src/sys/dev/sdmmc/sdmmc_mem.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/dev/sdmmc/ld_sdmmc.c diff -u src/sys/dev/sdmmc/ld_sdmmc.c:1.5 src/sys/dev/sdmmc/ld_sdmmc.c:1.6 --- src/sys/dev/sdmmc/ld_sdmmc.c:1.5 Mon Sep 20 09:03:33 2010 +++ src/sys/dev/sdmmc/ld_sdmmc.c Thu Sep 23 12:03:27 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: ld_sdmmc.c,v 1.5 2010/09/20 09:03:33 kiyohara Exp $ */ +/* $NetBSD: ld_sdmmc.c,v 1.6 2010/09/23 12:03:27 kiyohara Exp $ */ /* * Copyright (c) 2008 KIYOHARA Takashi @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ld_sdmmc.c,v 1.5 2010/09/20 09:03:33 kiyohara Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ld_sdmmc.c,v 1.6 2010/09/23 12:03:27 kiyohara Exp $"); #include "rnd.h" @@ -146,8 +146,16 @@ { struct ld_sdmmc_softc *sc = (struct ld_sdmmc_softc *)arg; struct ld_softc *ld = &sc->sc_ld; + struct sdmmc_softc *ssc = device_private(device_parent(ld->sc_dv)); ldattach(ld); + aprint_normal_dev(ld->sc_dv, "%d-bit width, bus clock", + sc->sc_sf->width); + if ((ssc->sc_busclk / 1000) != 0) + aprint_normal(" %u.%03u MHz\n", + ssc->sc_busclk / 1000, ssc->sc_busclk % 1000); + else + aprint_normal(" %u KHz\n", ssc->sc_busclk % 1000); kthread_exit(0); } Index: src/sys/dev/sdmmc/sdmmcvar.h diff -u src/sys/dev/sdmmc/sdmmcvar.h:1.5 src/sys/dev/sdmmc/sdmmcvar.h:1.6 --- src/sys/dev/sdmmc/sdmmcvar.h:1.5 Wed Sep 22 04:32:53 2010 +++ src/sys/dev/sdmmc/sdmmcvar.h Thu Sep 23 12:03:27 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: sdmmcvar.h,v 1.5 2010/09/22 04:32:53 kiyohara Exp $ */ +/* $NetBSD: sdmmcvar.h,v 1.6 2010/09/23 12:03:27 kiyohara Exp $ */ /* $OpenBSD: sdmmcvar.h,v 1.13 2009/01/09 10:55:22 jsg Exp $ */ /* @@ -161,6 +161,7 @@ /* common members */ struct sdmmc_softc *sc; /* card slot softc */ uint16_t rca; /* relative card address */ + int width; /* bus width */ int flags; #define SFF_ERROR 0x0001 /* function is poo; ignore it */ #define SFF_SDHC 0x0002 /* SD High Capacity card */ Index: src/sys/dev/sdmmc/sdmmc_mem.c diff -u src/sys/dev/sdmmc/sdmmc_mem.c:1.10 src/sys/dev/sdmmc/sdmmc_mem.c:1.11 --- src/sys/dev/sdmmc/sdmmc_mem.c:1.10 Tue Sep 21 04:53:53 2010 +++ src/sys/dev/sdmmc/sdmmc_mem.c Thu Sep 23 12:03:27 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: sdmmc_mem.c,v 1.10 2010/09/21 04:53:53 kiyohara Exp $ */ +/* $NetBSD: sdmmc_mem.c,v 1.11 2010/09/23 12:03:27 kiyohara Exp $ */ /* $OpenBSD: sdmmc_mem.c,v 1.10 2009/01/09 10:55:22 jsg Exp $ */ /* @@ -46,7 +46,7 @@ /* Routines for SD/MMC memory cards. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sdmmc_mem.c,v 1.10 2010/09/21 04:53:53 kiyohara Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sdmmc_mem.c,v 1.11 2010/09/23 12:03:27 kiyohara Exp $"); #include <sys/param.h> #include <sys/kernel.h> @@ -453,6 +453,7 @@ } /* change bus width if supported */ + sf->width = 1; if (ISSET(sc->sc_flags, SMF_SD_MODE)) { error = sdmmc_mem_send_scr(sc, sf, sf->raw_scr); if (error) { @@ -470,7 +471,9 @@ if (error) { DPRINTF(("%s: can't change bus width" " (%d bit)\n", SDMMCDEVNAME(sc), 4)); + goto out; } + sf->width = 4; } } else if (sf->csd.mmcver >= MMC_CSD_MMCVER_4_0) { if (ISSET(sc->sc_caps, SMC_CAPS_8BIT_MODE)) { @@ -497,6 +500,8 @@ } /* XXXX: need bus test? (using by CMD14 & CMD19) */ + + sf->width = width; } }