| @@ -1,14 +1,14 @@ | | | @@ -1,14 +1,14 @@ |
1 | /* $NetBSD: sdmmc_mem.c,v 1.1 2009/04/21 03:00:30 nonaka Exp $ */ | | 1 | /* $NetBSD: sdmmc_mem.c,v 1.2 2009/05/24 12:59:54 nonaka Exp $ */ |
2 | /* $OpenBSD: sdmmc_mem.c,v 1.10 2009/01/09 10:55:22 jsg Exp $ */ | | 2 | /* $OpenBSD: sdmmc_mem.c,v 1.10 2009/01/09 10:55:22 jsg Exp $ */ |
3 | | | 3 | |
4 | /* | | 4 | /* |
5 | * Copyright (c) 2006 Uwe Stuehler <uwe@openbsd.org> | | 5 | * Copyright (c) 2006 Uwe Stuehler <uwe@openbsd.org> |
6 | * | | 6 | * |
7 | * Permission to use, copy, modify, and distribute this software for any | | 7 | * Permission to use, copy, modify, and distribute this software for any |
8 | * purpose with or without fee is hereby granted, provided that the above | | 8 | * purpose with or without fee is hereby granted, provided that the above |
9 | * copyright notice and this permission notice appear in all copies. | | 9 | * copyright notice and this permission notice appear in all copies. |
10 | * | | 10 | * |
11 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | | 11 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
12 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | | 12 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
13 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | | 13 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
14 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | | 14 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
| @@ -36,27 +36,27 @@ | | | @@ -36,27 +36,27 @@ |
36 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | | 36 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
37 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | | 37 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
38 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | | 38 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
39 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | | 39 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
40 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | | 40 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
41 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | | 41 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
42 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | | 42 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
43 | * SUCH DAMAGE. | | 43 | * SUCH DAMAGE. |
44 | */ | | 44 | */ |
45 | | | 45 | |
46 | /* Routines for SD/MMC memory cards. */ | | 46 | /* Routines for SD/MMC memory cards. */ |
47 | | | 47 | |
48 | #include <sys/cdefs.h> | | 48 | #include <sys/cdefs.h> |
49 | __KERNEL_RCSID(0, "$NetBSD: sdmmc_mem.c,v 1.1 2009/04/21 03:00:30 nonaka Exp $"); | | 49 | __KERNEL_RCSID(0, "$NetBSD: sdmmc_mem.c,v 1.2 2009/05/24 12:59:54 nonaka Exp $"); |
50 | | | 50 | |
51 | #include <sys/param.h> | | 51 | #include <sys/param.h> |
52 | #include <sys/kernel.h> | | 52 | #include <sys/kernel.h> |
53 | #include <sys/malloc.h> | | 53 | #include <sys/malloc.h> |
54 | #include <sys/systm.h> | | 54 | #include <sys/systm.h> |
55 | #include <sys/device.h> | | 55 | #include <sys/device.h> |
56 | | | 56 | |
57 | #include <uvm/uvm_extern.h> | | 57 | #include <uvm/uvm_extern.h> |
58 | | | 58 | |
59 | #include <dev/sdmmc/sdmmcchip.h> | | 59 | #include <dev/sdmmc/sdmmcchip.h> |
60 | #include <dev/sdmmc/sdmmcreg.h> | | 60 | #include <dev/sdmmc/sdmmcreg.h> |
61 | #include <dev/sdmmc/sdmmcvar.h> | | 61 | #include <dev/sdmmc/sdmmcvar.h> |
62 | | | 62 | |
| @@ -290,26 +290,27 @@ sdmmc_decode_csd(struct sdmmc_softc *sc, | | | @@ -290,26 +290,27 @@ sdmmc_decode_csd(struct sdmmc_softc *sc, |
290 | }; | | 290 | }; |
291 | struct sdmmc_csd *csd = &sf->csd; | | 291 | struct sdmmc_csd *csd = &sf->csd; |
292 | int e, m; | | 292 | int e, m; |
293 | | | 293 | |
294 | if (ISSET(sc->sc_flags, SMF_SD_MODE)) { | | 294 | if (ISSET(sc->sc_flags, SMF_SD_MODE)) { |
295 | /* | | 295 | /* |
296 | * CSD version 1.0 corresponds to SD system | | 296 | * CSD version 1.0 corresponds to SD system |
297 | * specification version 1.0 - 1.10. (SanDisk, 3.5.3) | | 297 | * specification version 1.0 - 1.10. (SanDisk, 3.5.3) |
298 | */ | | 298 | */ |
299 | csd->csdver = SD_CSD_CSDVER(resp); | | 299 | csd->csdver = SD_CSD_CSDVER(resp); |
300 | switch (csd->csdver) { | | 300 | switch (csd->csdver) { |
301 | case SD_CSD_CSDVER_2_0: | | 301 | case SD_CSD_CSDVER_2_0: |
302 | DPRINTF(("%s: SD Ver.2.0\n", SDMMCDEVNAME(sc))); | | 302 | DPRINTF(("%s: SD Ver.2.0\n", SDMMCDEVNAME(sc))); |
| | | 303 | SET(sf->flags, SFF_SDHC); |
303 | csd->capacity = SD_CSD_V2_CAPACITY(resp); | | 304 | csd->capacity = SD_CSD_V2_CAPACITY(resp); |
304 | csd->read_bl_len = SD_CSD_V2_BL_LEN; | | 305 | csd->read_bl_len = SD_CSD_V2_BL_LEN; |
305 | break; | | 306 | break; |
306 | | | 307 | |
307 | case SD_CSD_CSDVER_1_0: | | 308 | case SD_CSD_CSDVER_1_0: |
308 | DPRINTF(("%s: SD Ver.1.0\n", SDMMCDEVNAME(sc))); | | 309 | DPRINTF(("%s: SD Ver.1.0\n", SDMMCDEVNAME(sc))); |
309 | csd->capacity = SD_CSD_CAPACITY(resp); | | 310 | csd->capacity = SD_CSD_CAPACITY(resp); |
310 | csd->read_bl_len = SD_CSD_READ_BL_LEN(resp); | | 311 | csd->read_bl_len = SD_CSD_READ_BL_LEN(resp); |
311 | break; | | 312 | break; |
312 | | | 313 | |
313 | default: | | 314 | default: |
314 | aprint_error_dev(sc->sc_dev, | | 315 | aprint_error_dev(sc->sc_dev, |
315 | "unknown SD CSD structure version 0x%x\n", | | 316 | "unknown SD CSD structure version 0x%x\n", |