Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/dev/sdmmc Always sector size is treated as 512 bytes.



details:   https://anonhg.NetBSD.org/src/rev/d2aa9d25b463
branches:  trunk
changeset: 749377:d2aa9d25b463
user:      nonaka <nonaka%NetBSD.org@localhost>
date:      Sat Nov 28 10:00:24 2009 +0000

description:
Always sector size is treated as 512 bytes.

diffstat:

 sys/dev/sdmmc/ld_sdmmc.c  |   6 +++---
 sys/dev/sdmmc/sdmmc_mem.c |  24 ++++++++++--------------
 sys/dev/sdmmc/sdmmcvar.h  |   7 ++++---
 3 files changed, 17 insertions(+), 20 deletions(-)

diffs (138 lines):

diff -r b052c46a6500 -r d2aa9d25b463 sys/dev/sdmmc/ld_sdmmc.c
--- a/sys/dev/sdmmc/ld_sdmmc.c  Sat Nov 28 09:20:37 2009 +0000
+++ b/sys/dev/sdmmc/ld_sdmmc.c  Sat Nov 28 10:00:24 2009 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: ld_sdmmc.c,v 1.3 2009/05/29 22:27:40 nonaka Exp $      */
+/*     $NetBSD: ld_sdmmc.c,v 1.4 2009/11/28 10:00:24 nonaka Exp $      */
 
 /*
  * Copyright (c) 2008 KIYOHARA Takashi
@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ld_sdmmc.c,v 1.3 2009/05/29 22:27:40 nonaka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ld_sdmmc.c,v 1.4 2009/11/28 10:00:24 nonaka 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;
diff -r b052c46a6500 -r d2aa9d25b463 sys/dev/sdmmc/sdmmc_mem.c
--- a/sys/dev/sdmmc/sdmmc_mem.c Sat Nov 28 09:20:37 2009 +0000
+++ b/sys/dev/sdmmc/sdmmc_mem.c Sat Nov 28 10:00:24 2009 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: sdmmc_mem.c,v 1.2 2009/05/24 12:59:54 nonaka Exp $     */
+/*     $NetBSD: sdmmc_mem.c,v 1.3 2009/11/28 10:00:24 nonaka 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 2009/05/24 12:59:54 nonaka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sdmmc_mem.c,v 1.3 2009/11/28 10:00:24 nonaka 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;
diff -r b052c46a6500 -r d2aa9d25b463 sys/dev/sdmmc/sdmmcvar.h
--- a/sys/dev/sdmmc/sdmmcvar.h  Sat Nov 28 09:20:37 2009 +0000
+++ b/sys/dev/sdmmc/sdmmcvar.h  Sat Nov 28 10:00:24 2009 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: sdmmcvar.h,v 1.1 2009/04/21 03:00:31 nonaka Exp $      */
+/*     $NetBSD: sdmmcvar.h,v 1.2 2009/11/28 10:00:24 nonaka 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;



Home | Main Index | Thread Index | Old Index