Module Name: src Committed By: sborrill Date: Wed Dec 2 17:39:16 UTC 2009
Modified Files: src/sys/dev/sdmmc [netbsd-5]: ld_sdmmc.c sdmmc_mem.c sdmmcvar.h Log Message: Pull up the following revisions(s) (requested by nonaka in ticket #1167): sys/dev/sdmmc/ld_sdmmc.c: revision 1.4 sys/dev/sdmmc/sdmmc_mem.c: revision 1.3 sys/dev/sdmmc/sdmmcvar.h: revision 1.2 Always treat sector size as 512 bytes. To generate a diff of this commit: cvs rdiff -u -r1.3.2.2 -r1.3.2.3 src/sys/dev/sdmmc/ld_sdmmc.c cvs rdiff -u -r1.2.2.2 -r1.2.2.3 src/sys/dev/sdmmc/sdmmc_mem.c cvs rdiff -u -r1.1.8.2 -r1.1.8.3 src/sys/dev/sdmmc/sdmmcvar.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/sdmmc/ld_sdmmc.c diff -u src/sys/dev/sdmmc/ld_sdmmc.c:1.3.2.2 src/sys/dev/sdmmc/ld_sdmmc.c:1.3.2.3 --- src/sys/dev/sdmmc/ld_sdmmc.c:1.3.2.2 Wed Oct 7 15:41:13 2009 +++ src/sys/dev/sdmmc/ld_sdmmc.c Wed Dec 2 17:39:16 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: ld_sdmmc.c,v 1.3.2.2 2009/10/07 15:41:13 sborrill Exp $ */ +/* $NetBSD: ld_sdmmc.c,v 1.3.2.3 2009/12/02 17:39:16 sborrill Exp $ */ /* * Copyright (c) 2008 KIYOHARA Takashi @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ld_sdmmc.c,v 1.3.2.2 2009/10/07 15:41:13 sborrill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ld_sdmmc.c,v 1.3.2.3 2009/12/02 17:39:16 sborrill Exp $"); #include "rnd.h" @@ -125,7 +125,7 @@ ld->sc_flags = LDF_ENABLED; ld->sc_secperunit = sc->sc_sf->csd.capacity; - ld->sc_secsize = sc->sc_sf->csd.sector_size; + ld->sc_secsize = SDMMC_SECTOR_SIZE; ld->sc_maxxfer = MAXPHYS; ld->sc_maxqueuecnt = 1; ld->sc_dump = ld_sdmmc_dump; Index: src/sys/dev/sdmmc/sdmmc_mem.c diff -u src/sys/dev/sdmmc/sdmmc_mem.c:1.2.2.2 src/sys/dev/sdmmc/sdmmc_mem.c:1.2.2.3 --- src/sys/dev/sdmmc/sdmmc_mem.c:1.2.2.2 Wed Oct 7 15:41:13 2009 +++ src/sys/dev/sdmmc/sdmmc_mem.c Wed Dec 2 17:39:16 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: sdmmc_mem.c,v 1.2.2.2 2009/10/07 15:41:13 sborrill Exp $ */ +/* $NetBSD: sdmmc_mem.c,v 1.2.2.3 2009/12/02 17:39:16 sborrill 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.2.2.2 2009/10/07 15:41:13 sborrill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sdmmc_mem.c,v 1.2.2.3 2009/12/02 17:39:16 sborrill Exp $"); #include <sys/param.h> #include <sys/kernel.h> @@ -343,11 +343,8 @@ m = MMC_CSD_TRAN_SPEED_MANT(resp); csd->tran_speed = speed_exponent[e] * speed_mantissa[m] / 10; } - csd->sector_size = MIN((1 << csd->read_bl_len), - sdmmc_chip_host_maxblklen(sc->sc_sct, sc->sc_sch)); - if (csd->sector_size < (1 << csd->read_bl_len)) - csd->capacity *= (1 << csd->read_bl_len) / csd->sector_size; - csd->sector_size_sb = ffs(csd->sector_size) - 1; + if ((1 << csd->read_bl_len) > SDMMC_SECTOR_SIZE) + csd->capacity *= (1 << csd->read_bl_len) / SDMMC_SECTOR_SIZE; if (sc->sc_busclk > csd->tran_speed) sc->sc_busclk = csd->tran_speed; @@ -420,7 +417,6 @@ printf("write_cl_len = %d\n", csd->write_bl_len); printf("r2w_factor = %d\n", csd->r2w_factor); printf("tran_speed = %d\n", csd->tran_speed); - printf("sector_size = %d\n", csd->sector_size); } #endif @@ -526,13 +522,13 @@ memset(&cmd, 0, sizeof(cmd)); cmd.c_opcode = MMC_SET_BLOCKLEN; - cmd.c_arg = sf->csd.sector_size; + cmd.c_arg = SDMMC_SECTOR_SIZE; cmd.c_flags = SCF_CMD_AC | SCF_RSP_R1; error = sdmmc_mmc_command(sc, &cmd); DPRINTF(("%s: sdmmc_mem_set_blocklen: read_bl_len=%d sector_size=%d\n", - SDMMCDEVNAME(sc), 1 << sf->csd.read_bl_len, sf->csd.sector_size)); + SDMMCDEVNAME(sc), 1 << sf->csd.read_bl_len, SDMMC_SECTOR_SIZE)); return error; } @@ -552,12 +548,12 @@ memset(&cmd, 0, sizeof(cmd)); cmd.c_data = data; cmd.c_datalen = datalen; - cmd.c_blklen = sf->csd.sector_size; + cmd.c_blklen = SDMMC_SECTOR_SIZE; cmd.c_opcode = (cmd.c_datalen / cmd.c_blklen) > 1 ? MMC_READ_BLOCK_MULTIPLE : MMC_READ_BLOCK_SINGLE; cmd.c_arg = blkno; if (!ISSET(sf->flags, SFF_SDHC)) - cmd.c_arg <<= sf->csd.sector_size_sb; + cmd.c_arg <<= SDMMC_SECTOR_SIZE_SB; cmd.c_flags = SCF_CMD_ADTC | SCF_CMD_READ | SCF_RSP_R1; if (ISSET(sc->sc_caps, SMC_CAPS_DMA)) cmd.c_dmamap = sc->sc_dmap; @@ -646,12 +642,12 @@ memset(&cmd, 0, sizeof(cmd)); cmd.c_data = data; cmd.c_datalen = datalen; - cmd.c_blklen = sf->csd.sector_size; + cmd.c_blklen = SDMMC_SECTOR_SIZE; cmd.c_opcode = (cmd.c_datalen / cmd.c_blklen) > 1 ? MMC_WRITE_BLOCK_MULTIPLE : MMC_WRITE_BLOCK_SINGLE; cmd.c_arg = blkno; if (!ISSET(sf->flags, SFF_SDHC)) - cmd.c_arg <<= sf->csd.sector_size_sb; + cmd.c_arg <<= SDMMC_SECTOR_SIZE_SB; cmd.c_flags = SCF_CMD_ADTC | SCF_RSP_R1; if (ISSET(sc->sc_caps, SMC_CAPS_DMA)) cmd.c_dmamap = sc->sc_dmap; Index: src/sys/dev/sdmmc/sdmmcvar.h diff -u src/sys/dev/sdmmc/sdmmcvar.h:1.1.8.2 src/sys/dev/sdmmc/sdmmcvar.h:1.1.8.3 --- src/sys/dev/sdmmc/sdmmcvar.h:1.1.8.2 Wed Oct 7 15:41:13 2009 +++ src/sys/dev/sdmmc/sdmmcvar.h Wed Dec 2 17:39:16 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: sdmmcvar.h,v 1.1.8.2 2009/10/07 15:41:13 sborrill Exp $ */ +/* $NetBSD: sdmmcvar.h,v 1.1.8.3 2009/12/02 17:39:16 sborrill Exp $ */ /* $OpenBSD: sdmmcvar.h,v 1.13 2009/01/09 10:55:22 jsg Exp $ */ /* @@ -28,12 +28,13 @@ #include <dev/sdmmc/sdmmcchip.h> #include <dev/sdmmc/sdmmcreg.h> +#define SDMMC_SECTOR_SIZE_SB 9 +#define SDMMC_SECTOR_SIZE (1 << SDMMC_SECTOR_SIZE_SB) /* =512 */ + struct sdmmc_csd { int csdver; /* CSD structure format */ u_int mmcver; /* MMC version (for CID format) */ int capacity; /* total number of sectors */ - int sector_size; /* sector size in bytes */ - int sector_size_sb; /* sector size in shift bit */ int read_bl_len; /* block length for reads */ int write_bl_len; /* block length for writes */ int r2w_factor;