diff --git a/drivers/mmcsd/Make.defs b/drivers/mmcsd/Make.defs index 6ada25acb2..459b317d63 100644 --- a/drivers/mmcsd/Make.defs +++ b/drivers/mmcsd/Make.defs @@ -37,6 +37,6 @@ MMCSD_ASRCS = MMCSD_CSRCS = ifneq ($(CONFIG_DISABLE_MOUNTPOINT),y) -MMCSD_CSRCS += mmcsd_spi.c +MMCSD_CSRCS += mmcsd_spi.c mmcsd_debug.c endif diff --git a/drivers/mmcsd/mmcsd_debug.c b/drivers/mmcsd/mmcsd_debug.c new file mode 100644 index 0000000000..85e2d7d444 --- /dev/null +++ b/drivers/mmcsd/mmcsd_debug.c @@ -0,0 +1,245 @@ +/**************************************************************************** + * drivers/mmcsd/mmcsd_debug.c + * + * Copyright (C) 2008 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include + +#include +#include +#include +#include + +#include "mmcsd_csd.h" +#include "mmcsd_internal.h" + +/**************************************************************************** + * Pre-Processor Definitions + ****************************************************************************/ + +/* This needs to match the logic in include/debug.h */ + +#ifdef CONFIG_CPP_HAVE_VARARGS +# define message(format, arg...) lib_rawprintf(format, ##arg) +#else +# define message lib_rawprintf +#endif + +/**************************************************************************** + * Private Types + ****************************************************************************/ + +/**************************************************************************** + * Private Function Prototypes + ****************************************************************************/ + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: mmcsd_dmpcsd + * + * Description: + * Dump the contents a buffer + * + ****************************************************************************/ + +#ifdef CONFIG_MMCSD_DUMPALL +void mmcsd_dumpbuffer(FAR const ubyte *buffer, unsigned int buflen) +{ + int i, j, k; + + for (i = 0; i < buflen; i += 32) + { + message("%04x: ", i); + for (j = 0; j < 32; j++) + { + k = i + j; + + if (j == 16) + { + message(" "); + } + + if (k < buflen) + { + message("%02x", buffer[k]); + } + else + { + message(" "); + } + } + + message(" "); + for (j = 0; j < 32; j++) + { + k = i + j; + + if (j == 16) + { + message(" "); + } + + if (k < buflen) + { + if (buffer[k] >= 0x20 && buffer[k] < 0x7f) + { + message("%c", buffer[k]); + } + else + { + message("."); + } + } + } + message("\n"); + } +} +#endif + +/**************************************************************************** + * Name: mmcsd_dmpcsd + * + * Description: + * Dump the contents of the CSD + * + ****************************************************************************/ + +#if defined(CONFIG_DEBUG_VERBOSE) && defined(CONFIG_DEBUG_FS) +void mmcsd_dmpcsd(FAR const ubyte *csd, ubyte cardtype) +{ + boolean mmc = (cardtype == MMCSD_CARDTYPE_MMC); + boolean sd2 = (MMCSD_CSD_CSDSTRUCT(csd) == 1); + + fvdbg("CSD\n"); + fvdbg(" CSD_STRUCTURE: 1.%d\n", MMCSD_CSD_CSDSTRUCT(csd)); + if (mmc) + { + fvdbg(" MMC SPEC_VERS: %d\n", MMC_CSD_SPECVERS(csd)); + } + fvdbg(" TAAC:\n", + sd2 ? SD20_CSD_TAC_TIMEVALUE(csd) : MMCSD_CSD_TAAC_TIMEVALUE(csd)); + fvdbg(" TIME_VALUE: 0x%02x\n", + sd2 ? SD20_CSD_TAC_TIMEVALUE(csd) : MMCSD_CSD_TAAC_TIMEVALUE(csd)); + fvdbg(" TIME_UNIT: 0x%02x\n", + sd2 ? SD20_CSD_TAC_TIMEUNIT(csd) : MMCSD_CSD_TAAC_TIMEUNIT(csd)); + fvdbg(" NSAC: 0x%02x\n", + sd2 ? SD20_CSD_NSAC(csd) : MMCSD_CSD_NSAC(csd)); + fvdbg(" TRAN_SPEED:\n"); + fvdbg(" TIME_VALUE: 0x%02x\n", + sd2 ? SD20_CSD_TRANSPEED_TIMEVALUE(csd) : MMCSD_CSD_TRANSPEED_TIMEVALUE(csd)); + fvdbg(" RATE_UNIT: 0x%02x\n", + sd2 ? SD20_CSD_TRANSPEED_TRANSFERRATEUNIT(csd) : MMCSD_CSD_TRANSPEED_TRANSFERRATEUNIT(csd)); + fvdbg(" CCC: 0x%03x\n", + sd2 ? SD20_CSD_CCC(csd) : MMCSD_CSD_CCC(csd)); + fvdbg(" READ_BL_LEN: %d\n", + sd2 ? SD20_CSD_READBLLEN(csd) : MMCSD_CSD_READBLLEN(csd)); + fvdbg(" READ_BL_PARTIAL: %d\n", + sd2 ? SD20_CSD_READBLPARTIAL(csd) : MMCSD_CSD_READBLPARTIAL(csd)); + fvdbg(" WRITE_BLK_MISALIGN: %d\n", + sd2 ? SD20_CSD_WRITEBLKMISALIGN(csd) : MMCSD_CSD_WRITEBLKMISALIGN(csd)); + fvdbg(" READ_BLK_MISALIGN: %d\n", + sd2 ? SD20_CSD_READBLKMISALIGN(csd) : MMCSD_CSD_READBLKMISALIGN(csd)); + fvdbg(" DSR_IMP: %d\n", + sd2 ? SD20_CSD_DSRIMP(csd) : MMCSD_CSD_DSRIMP(csd)); + fvdbg(" C_SIZE: %d\n", + sd2 ? SD20_CSD_CSIZE(csd) : MMCSD_CSD_CSIZE(csd)); + fvdbg(" VDD_R_CURR_MIN: %d\n", + sd2 ? SD20_CSD_VDDRCURRMIN(csd) : MMCSD_CSD_VDDRCURRMIN(csd)); + fvdbg(" VDD_R_CURR_MAX: %d\n", + sd2 ? SD20_CSD_VDDRCURRMAX(csd) : MMCSD_CSD_VDDRCURRMAX(csd)); + fvdbg(" VDD_W_CURR_MIN: %d\n", + sd2 ? SD20_CSD_VDDWCURRMIN(csd) : MMCSD_CSD_VDDWCURRMIN(csd)); + fvdbg(" VDD_W_CURR_MAX: %d\n", + sd2 ? SD20_CSD_VDDWCURRMAX(csd) : MMCSD_CSD_VDDWCURRMAX(csd)); + fvdbg(" C_SIZE_MULT: %d\n", + sd2 ? SD20_CSD_CSIZEMULT(csd) : MMCSD_CSD_CSIZEMULT(csd)); + if (mmc) + { + fvdbg(" MMC SECTOR_SIZE: %d\n", MMC_CSD_SECTORSIZE(csd)); + fvdbg(" MMC ER_GRP_SIZE: %d\n", MMC_CSD_ERGRPSIZE(csd)); + fvdbg(" MMC WP_GRP_SIZE: %d\n", MMC_CSD_WPGRPSIZE(csd)); + fvdbg(" MMC DFLT_ECC: %d\n", MMC_CSD_DFLTECC(csd)); + } + else + { + fvdbg(" SD ER_BLK_EN: %d\n", + sd2 ? SD20_CSD_SDERBLKEN(csd) : SD_CSD_SDERBLKEN(csd)); + fvdbg(" SD SECTOR_SIZE: %d\n", + sd2 ? SD20_CSD_SECTORSIZE(csd) : SD_CSD_SECTORSIZE(csd)); + fvdbg(" SD WP_GRP_SIZE: %d\n", + sd2 ? SD_CSD_WPGRPSIZE(csd) : SD_CSD_WPGRPSIZE(csd)); + } + fvdbg(" WP_GRP_EN: %d\n", + sd2 ? SD20_WPGRPEN(csd) : MMCSD_WPGRPEN(csd)); + fvdbg(" R2W_FACTOR: %d\n", + sd2 ? SD20_CSD_R2WFACTOR(csd) : MMCSD_CSD_R2WFACTOR(csd)); + fvdbg(" WRITE_BL_LEN: %d\n", + sd2 ? SD20_CSD_WRITEBLLEN(csd) : MMCSD_CSD_WRITEBLLEN(csd)); + fvdbg(" WRITE_BL_PARTIAL: %d\n", + sd2 ? SD20_CSD_WRITEBLPARTIAL(csd) : MMCSD_CSD_WRITEBLPARTIAL(csd)); + fvdbg(" FILE_FORMAT_GROUP: %d\n", + sd2 ? SD20_CSD_FILEFORMATGRP(csd) : MMCSD_CSD_FILEFORMATGRP(csd)); + fvdbg(" COPY: %d\n", + sd2 ? SD20_CSD_COPY(csd) : MMCSD_CSD_COPY(csd)); + fvdbg(" PERM_WRITE_PROTECT: %d\n", + sd2 ? SD20_CSD_PERMWRITEPROTECT(csd) : MMCSD_CSD_PERMWRITEPROTECT(csd)); + fvdbg(" TMP_WRITE_PROTECT: %d\n", + sd2 ?SD20_CSD_TMPWRITEPROTECT(csd) : MMCSD_CSD_TMPWRITEPROTECT(csd)); + fvdbg(" FILE_FORMAT: %d\n", + sd2 ? SD20_CSD_FILEFORMAT(csd) : MMCSD_CSD_FILEFORMAT(csd)); + if (mmc) + { + fvdbg(" MMC ECC: %d\n", + sd2 ? MMC_CSD_ECC(csd) : MMC_CSD_ECC(csd)); + } + fvdbg(" CRC: %02x\n", + sd2 ? SD20_CSD_CRC(csd) : MMCSD_CSD_CRC(csd)); +} +#endif diff --git a/drivers/mmcsd/mmcsd_internal.h b/drivers/mmcsd/mmcsd_internal.h new file mode 100644 index 0000000000..c49429a42b --- /dev/null +++ b/drivers/mmcsd/mmcsd_internal.h @@ -0,0 +1,96 @@ +/**************************************************************************** + * drivers/mmcsd/mmcsd_internal.h + * + * Copyright (C) 2008 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#ifndef __DRIVERS_MMCSD_MMCSD_INTERNAL_H +#define __DRIVERS_MMCSD_MMCSD_INTERNAL_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include + +/**************************************************************************** + * Pre-Processor Definitions + ****************************************************************************/ + +/* Enable excessive debug options */ + +#undef CONFIG_MMCSD_DUMPALL /* MUST BE DEFINED MANUALLY */ + +#if !defined(CONFIG_DEBUG_VERBOSE) || !defined(CONFIG_DEBUG_FS) +# undef CONFIG_MMCSD_DUMPALL +#endif + +/* Card type */ + +#define MMCSD_CARDTYPE_UNKNOWN 0 +#define MMCSD_CARDTYPE_MMC 1 +#define MMCSD_CARDTYPE_SD 2 + +/**************************************************************************** + * Public Types + ****************************************************************************/ + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +#undef EXTERN +#if defined(__cplusplus) +#define EXTERN extern "C" +extern "C" { +#else +#define EXTERN extern +#endif + +#ifdef CONFIG_MMCSD_DUMPALL +EXTERN void mmcsd_dumpbuffer(FAR const ubyte *buffer, unsigned int buflen); +#else +# define mmcsd_dumpbuffer(b,l) +#endif + +#if defined(CONFIG_DEBUG_VERBOSE) && defined(CONFIG_DEBUG_FS) +EXTERN void mmcsd_dmpcsd(FAR const ubyte *csd, ubyte cardtype); +#else +# define mmcsd_dmpcsd(csd,cadtype) +#endif + +#undef EXTERN +#if defined(__cplusplus) +} +#endif +#endif /* __DRIVERS_MMCSD_MMCSD_INTERNAL_H */ diff --git a/drivers/mmcsd/mmcsd_spi.c b/drivers/mmcsd/mmcsd_spi.c index 94f51a0823..5375405369 100644 --- a/drivers/mmcsd/mmcsd_spi.c +++ b/drivers/mmcsd/mmcsd_spi.c @@ -53,6 +53,7 @@ #include "mmcsd_spi.h" #include "mmcsd_csd.h" +#include "mmcsd_internal.h" /**************************************************************************** * Pre-Processor Definitions @@ -81,12 +82,6 @@ #define MMCSD_SLOTSTATUS_WRPROTECT 0x04 /* Card is write protected */ #define MMCSD_SLOTSTATUS_MEDIACHGD 0x08 /* Media changed in slot */ -/* Card type */ - -#define MMCSD_CARDTYPE_UNKNOWN 0 -#define MMCSD_CARDTYPE_MMC 1 -#define MMCSD_CARDTYPE_SD 2 - /* Values in the MMC/SD command table ***************************************/ /* These define the expected arguments of the MMC/SD command */ @@ -140,13 +135,7 @@ struct mmcsd_cmdinfo_s * Private Function Prototypes ****************************************************************************/ -/* Debug ********************************************************************/ - -#if defined(CONFIG_DEBUG_VERBOSE) && defined(CONFIG_DEBUG_FS) -static void mmcsd_dmpcsd(FAR struct mmcsd_slot_s *slot, ubyte *csd); -#else -# define mmcsd_dmpcsd(slot, csd) -#endif +/* Misc *********************************************************************/ static void mmcsd_semtake(sem_t *sem); @@ -306,108 +295,6 @@ static const struct mmcsd_cmdinfo_s g_acmd41 = {0x69, MMCSD_CMDARG_NONE, MMCS * Private Functions ****************************************************************************/ -/**************************************************************************** - * Name: mmcsd_dmpcsd - * - * Description: - * Dump the contents of the CSD - * - ****************************************************************************/ - -#if defined(CONFIG_DEBUG_VERBOSE) && defined(CONFIG_DEBUG_FS) -static void mmcsd_dmpcsd(FAR struct mmcsd_slot_s *slot, ubyte *csd) -{ - boolean mmc = (slot->type == MMCSD_CARDTYPE_MMC); - boolean sd2 = (MMCSD_CSD_CSDSTRUCT(csd) == 1); - - fvdbg("CSD\n"); - fvdbg(" CSD_STRUCTURE: 1.%d\n", MMCSD_CSD_CSDSTRUCT(csd)); - if (mmc) - { - fvdbg(" MMC SPEC_VERS: %d\n", MMC_CSD_SPECVERS(csd)); - } - fvdbg(" TAAC:\n", - sd2 ? SD20_CSD_TAC_TIMEVALUE(csd) : MMCSD_CSD_TAAC_TIMEVALUE(csd)); - fvdbg(" TIME_VALUE: 0x%02x\n", - sd2 ? SD20_CSD_TAC_TIMEVALUE(csd) : MMCSD_CSD_TAAC_TIMEVALUE(csd)); - fvdbg(" TIME_UNIT: 0x%02x\n", - sd2 ? SD20_CSD_TAC_TIMEUNIT(csd) : MMCSD_CSD_TAAC_TIMEUNIT(csd)); - fvdbg(" NSAC: 0x%02x\n", - sd2 ? SD20_CSD_NSAC(csd) : MMCSD_CSD_NSAC(csd)); - fvdbg(" TRAN_SPEED:\n"); - fvdbg(" TIME_VALUE: 0x%02x\n", - sd2 ? SD20_CSD_TRANSPEED_TIMEVALUE(csd) : MMCSD_CSD_TRANSPEED_TIMEVALUE(csd)); - fvdbg(" RATE_UNIT: 0x%02x\n", - sd2 ? SD20_CSD_TRANSPEED_TRANSFERRATEUNIT(csd) : MMCSD_CSD_TRANSPEED_TRANSFERRATEUNIT(csd)); - fvdbg(" CCC: 0x%03x\n", - sd2 ? SD20_CSD_CCC(csd) : MMCSD_CSD_CCC(csd)); - fvdbg(" READ_BL_LEN: %d\n", - sd2 ? SD20_CSD_READBLLEN(csd) : MMCSD_CSD_READBLLEN(csd)); - fvdbg(" READ_BL_PARTIAL: %d\n", - sd2 ? SD20_CSD_READBLPARTIAL(csd) : MMCSD_CSD_READBLPARTIAL(csd)); - fvdbg(" WRITE_BLK_MISALIGN: %d\n", - sd2 ? SD20_CSD_WRITEBLKMISALIGN(csd) : MMCSD_CSD_WRITEBLKMISALIGN(csd)); - fvdbg(" READ_BLK_MISALIGN: %d\n", - sd2 ? SD20_CSD_READBLKMISALIGN(csd) : MMCSD_CSD_READBLKMISALIGN(csd)); - fvdbg(" DSR_IMP: %d\n", - sd2 ? SD20_CSD_DSRIMP(csd) : MMCSD_CSD_DSRIMP(csd)); - fvdbg(" C_SIZE: %d\n", - sd2 ? SD20_CSD_CSIZE(csd) : MMCSD_CSD_CSIZE(csd)); - fvdbg(" VDD_R_CURR_MIN: %d\n", - sd2 ? SD20_CSD_VDDRCURRMIN(csd) : MMCSD_CSD_VDDRCURRMIN(csd)); - fvdbg(" VDD_R_CURR_MAX: %d\n", - sd2 ? SD20_CSD_VDDRCURRMAX(csd) : MMCSD_CSD_VDDRCURRMAX(csd)); - fvdbg(" VDD_W_CURR_MIN: %d\n", - sd2 ? SD20_CSD_VDDWCURRMIN(csd) : MMCSD_CSD_VDDWCURRMIN(csd)); - fvdbg(" VDD_W_CURR_MAX: %d\n", - sd2 ? SD20_CSD_VDDWCURRMAX(csd) : MMCSD_CSD_VDDWCURRMAX(csd)); - fvdbg(" C_SIZE_MULT: %d\n", - sd2 ? SD20_CSD_CSIZEMULT(csd) : MMCSD_CSD_CSIZEMULT(csd)); - if (mmc) - { - fvdbg(" MMC SECTOR_SIZE: %d\n", MMC_CSD_SECTORSIZE(csd)); - fvdbg(" MMC ER_GRP_SIZE: %d\n", MMC_CSD_ERGRPSIZE(csd)); - fvdbg(" MMC WP_GRP_SIZE: %d\n", MMC_CSD_WPGRPSIZE(csd)); - fvdbg(" MMC DFLT_ECC: %d\n", MMC_CSD_DFLTECC(csd)); - } - else - { - fvdbg(" SD ER_BLK_EN: %d\n", - sd2 ? SD20_CSD_SDERBLKEN(csd) : SD_CSD_SDERBLKEN(csd)); - fvdbg(" SD SECTOR_SIZE: %d\n", - sd2 ? SD20_CSD_SECTORSIZE(csd) : SD_CSD_SECTORSIZE(csd)); - fvdbg(" SD WP_GRP_SIZE: %d\n", - sd2 ? SD_CSD_WPGRPSIZE(csd) : SD_CSD_WPGRPSIZE(csd)); - } - fvdbg(" WP_GRP_EN: %d\n", - sd2 ? SD20_WPGRPEN(csd) : MMCSD_WPGRPEN(csd)); - fvdbg(" R2W_FACTOR: %d\n", - sd2 ? SD20_CSD_R2WFACTOR(csd) : MMCSD_CSD_R2WFACTOR(csd)); - fvdbg(" WRITE_BL_LEN: %d\n", - sd2 ? SD20_CSD_WRITEBLLEN(csd) : MMCSD_CSD_WRITEBLLEN(csd)); - fvdbg(" WRITE_BL_PARTIAL: %d\n", - sd2 ? SD20_CSD_WRITEBLPARTIAL(csd) : MMCSD_CSD_WRITEBLPARTIAL(csd)); - fvdbg(" FILE_FORMAT_GROUP: %d\n", - sd2 ? SD20_CSD_FILEFORMATGRP(csd) : MMCSD_CSD_FILEFORMATGRP(csd)); - fvdbg(" COPY: %d\n", - sd2 ? SD20_CSD_COPY(csd) : MMCSD_CSD_COPY(csd)); - fvdbg(" PERM_WRITE_PROTECT: %d\n", - sd2 ? SD20_CSD_PERMWRITEPROTECT(csd) : MMCSD_CSD_PERMWRITEPROTECT(csd)); - fvdbg(" TMP_WRITE_PROTECT: %d\n", - sd2 ?SD20_CSD_TMPWRITEPROTECT(csd) : MMCSD_CSD_TMPWRITEPROTECT(csd)); - fvdbg(" FILE_FORMAT: %d\n", - sd2 ? SD20_CSD_FILEFORMAT(csd) : MMCSD_CSD_FILEFORMAT(csd)); - if (mmc) - { - fvdbg(" MMC ECC: %d\n", - sd2 ? MMC_CSD_ECC(csd) : MMC_CSD_ECC(csd)); - } - fvdbg(" CRC: %02x\n", - sd2 ? SD20_CSD_CRC(csd) : MMCSD_CSD_CRC(csd)); -} -#endif - - /**************************************************************************** * Name: mmcsd_semtake ****************************************************************************/ @@ -949,6 +836,9 @@ static ssize_t mmcsd_read(FAR struct inode *inode, unsigned char *buffer, SPI_SELECT(spi, FALSE); mmcsd_semgive(&slot->sem); + + fvdbg("(%d) Read %d bytes:\n", i, nbytes); + mmcsd_dumpbuffer(buffer, nbytes); return nsectors; } } @@ -1034,7 +924,8 @@ static ssize_t mmcsd_write(FAR struct inode *inode, const unsigned char *buffer, nbytes = nsectors * slot->sectorsize; offset = start_sector * slot->sectorsize; - fvdbg("nbytes=%d offset=%d\n", nbytes, offset); + fvdbg("Writing %d bytes to offset %d:\n", nbytes, offset); + mmcsd_dumpbuffer(buffer, nbytes); /* Select the slave and synchronize */ @@ -1352,7 +1243,7 @@ static int mmcsd_mediainitialize(FAR struct mmcsd_slot_s *slot) { fdbg("Found SD card\n"); } - mmcsd_dmpcsd(slot, csd); + mmcsd_dmpcsd(csd, slot->type); #endif /* CSD data and set block size */ diff --git a/drivers/mmcsd/mmcsd_spi.h b/drivers/mmcsd/mmcsd_spi.h index 38f02b489f..dea902446f 100644 --- a/drivers/mmcsd/mmcsd_spi.h +++ b/drivers/mmcsd/mmcsd_spi.h @@ -33,7 +33,7 @@ * ****************************************************************************/ -#ifndef __DRIVERS_MMCSD_MMCSD_SPI_HO +#ifndef __DRIVERS_MMCSD_MMCSD_SPI_H #define __DRIVERS_MMCSD_MMCSD_SPI_H /****************************************************************************