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