[DeviceDriver][SDIO] Update sdio debug log.

This commit is contained in:
EvalZero 2018-09-05 14:50:43 +08:00
parent 6abe7e4ebd
commit 2c01189114
6 changed files with 101 additions and 48 deletions

View File

@ -138,6 +138,10 @@ config RT_USING_SDIO
config RT_MMCSD_MAX_PARTITION config RT_MMCSD_MAX_PARTITION
int "mmcsd max partition" int "mmcsd max partition"
default 16 default 16
config RT_SDIO_DEBUG
bool "Enable SDIO debug log output"
default n
endif endif
config RT_USING_SPI config RT_USING_SPI

View File

@ -27,6 +27,16 @@
#include <drivers/mmcsd_core.h> #include <drivers/mmcsd_core.h>
#define DBG_ENABLE
#define DBG_SECTION_NAME "[SDIO]"
#ifdef RT_SDIO_DEBUG
#define DBG_LEVEL DBG_LOG
#else
#define DBG_LEVEL DBG_INFO
#endif /* RT_SDIO_DEBUG */
#define DBG_COLOR
#include <rtdbg.h>
static rt_list_t blk_devices = RT_LIST_OBJECT_INIT(blk_devices); static rt_list_t blk_devices = RT_LIST_OBJECT_INIT(blk_devices);
struct mmcsd_blk_device struct mmcsd_blk_device
@ -179,7 +189,7 @@ static rt_err_t rt_mmcsd_req_blk(struct rt_mmcsd_card *card,
err = mmcsd_send_cmd(card->host, &cmd, 5); err = mmcsd_send_cmd(card->host, &cmd, 5);
if (err) if (err)
{ {
rt_kprintf("error %d requesting status\n", err); LOG_E("error %d requesting status", err);
break; break;
} }
/* /*
@ -195,8 +205,8 @@ static rt_err_t rt_mmcsd_req_blk(struct rt_mmcsd_card *card,
if (cmd.err || data.err || stop.err) if (cmd.err || data.err || stop.err)
{ {
rt_kprintf("mmcsd request blocks error\n"); LOG_E("mmcsd request blocks error");
rt_kprintf("%d,%d,%d, 0x%08x,0x%08x\n", LOG_E("%d,%d,%d, 0x%08x,0x%08x",
cmd.err, data.err, stop.err, data.flags, sector); cmd.err, data.err, stop.err, data.flags, sector);
return -RT_ERROR; return -RT_ERROR;
@ -311,7 +321,7 @@ static rt_int32_t mmcsd_set_blksize(struct rt_mmcsd_card *card)
if (err) if (err)
{ {
rt_kprintf("MMCSD: unable to set block size to %d: %d\n", cmd.arg, err); LOG_E("MMCSD: unable to set block size to %d: %d", cmd.arg, err);
return -RT_ERROR; return -RT_ERROR;
} }
@ -346,13 +356,13 @@ rt_int32_t rt_mmcsd_blk_probe(struct rt_mmcsd_card *card)
return err; return err;
} }
rt_kprintf("probe mmcsd block device!\n"); LOG_I("probe mmcsd block device!");
/* get the first sector to read partition table */ /* get the first sector to read partition table */
sector = (rt_uint8_t *)rt_malloc(SECTOR_SIZE); sector = (rt_uint8_t *)rt_malloc(SECTOR_SIZE);
if (sector == RT_NULL) if (sector == RT_NULL)
{ {
rt_kprintf("allocate partition sector buffer failed\n"); LOG_E("allocate partition sector buffer failed!");
return -RT_ENOMEM; return -RT_ENOMEM;
} }
@ -365,7 +375,7 @@ rt_int32_t rt_mmcsd_blk_probe(struct rt_mmcsd_card *card)
blk_dev = rt_calloc(1, sizeof(struct mmcsd_blk_device)); blk_dev = rt_calloc(1, sizeof(struct mmcsd_blk_device));
if (!blk_dev) if (!blk_dev)
{ {
rt_kprintf("mmcsd:malloc memory failed!\n"); LOG_E("mmcsd:malloc memory failed!");
break; break;
} }
@ -448,7 +458,7 @@ rt_int32_t rt_mmcsd_blk_probe(struct rt_mmcsd_card *card)
#ifdef RT_USING_DFS_MNTTABLE #ifdef RT_USING_DFS_MNTTABLE
if (0) // if (blk_dev) if (0) // if (blk_dev)
{ {
rt_kprintf("try to mount file system!\n"); LOG_I("try to mount file system!");
/* try to mount file system on this block device */ /* try to mount file system on this block device */
dfs_mount_device(&(blk_dev->dev)); dfs_mount_device(&(blk_dev->dev));
} }
@ -457,7 +467,7 @@ rt_int32_t rt_mmcsd_blk_probe(struct rt_mmcsd_card *card)
} }
else else
{ {
rt_kprintf("read mmcsd first sector failed\n"); LOG_E("read mmcsd first sector failed");
err = -RT_ERROR; err = -RT_ERROR;
} }

View File

@ -25,6 +25,16 @@
#include <drivers/mmcsd_core.h> #include <drivers/mmcsd_core.h>
#include <drivers/mmc.h> #include <drivers/mmc.h>
#define DBG_ENABLE
#define DBG_SECTION_NAME "[SDIO]"
#ifdef RT_SDIO_DEBUG
#define DBG_LEVEL DBG_LOG
#else
#define DBG_LEVEL DBG_INFO
#endif /* RT_SDIO_DEBUG */
#define DBG_COLOR
#include <rtdbg.h>
static const rt_uint32_t tran_unit[] = static const rt_uint32_t tran_unit[] =
{ {
10000, 100000, 1000000, 10000000, 10000, 100000, 1000000, 10000000,
@ -81,7 +91,7 @@ static rt_int32_t mmcsd_parse_csd(struct rt_mmcsd_card *card)
*/ */
csd->csd_structure = GET_BITS(resp, 126, 2); csd->csd_structure = GET_BITS(resp, 126, 2);
if (csd->csd_structure == 0) { if (csd->csd_structure == 0) {
rt_kprintf("unrecognised CSD structure version %d\n", csd->csd_structure); LOG_E("unrecognised CSD structure version %d!", csd->csd_structure);
return -RT_ERROR; return -RT_ERROR;
} }
@ -137,7 +147,7 @@ static int mmc_get_ext_csd(struct rt_mmcsd_card *card, rt_uint8_t **new_ext_csd)
*/ */
ext_csd = rt_malloc(512); ext_csd = rt_malloc(512);
if (!ext_csd) { if (!ext_csd) {
rt_kprintf("alloc memory failed when get ext csd\n"); LOG_E("alloc memory failed when get ext csd!");
return -RT_ENOMEM; return -RT_ENOMEM;
} }
@ -194,7 +204,7 @@ static int mmc_parse_ext_csd(struct rt_mmcsd_card *card, rt_uint8_t *ext_csd)
card->card_capacity = *((rt_uint32_t *)&ext_csd[EXT_CSD_SEC_CNT]); card->card_capacity = *((rt_uint32_t *)&ext_csd[EXT_CSD_SEC_CNT]);
card->card_capacity *= card->card_blksize; card->card_capacity *= card->card_blksize;
card->card_capacity >>= 10; /* unit:KB */ card->card_capacity >>= 10; /* unit:KB */
rt_kprintf("emmc card capacity %d KB\n", card->card_capacity); LOG_I("emmc card capacity %d KB.", card->card_capacity);
return 0; return 0;
} }
@ -333,13 +343,13 @@ static int mmc_select_bus_width(struct rt_mmcsd_card *card, rt_uint8_t *ext_csd)
} else { } else {
switch(ext_csd_bits[idx]){ switch(ext_csd_bits[idx]){
case 0: case 0:
rt_kprintf("switch to bus width 1 bit failed\n"); LOG_E("switch to bus width 1 bit failed!");
break; break;
case 1: case 1:
rt_kprintf("switch to bus width 4 bit failed\n"); LOG_E("switch to bus width 4 bit failed!");
break; break;
case 2: case 2:
rt_kprintf("switch to bus width 8 bit failed\n"); LOG_E("switch to bus width 8 bit failed!");
break; break;
default: default:
break; break;
@ -443,7 +453,7 @@ static rt_int32_t mmcsd_mmc_init_card(struct rt_mmcsd_host *host,
card = rt_malloc(sizeof(struct rt_mmcsd_card)); card = rt_malloc(sizeof(struct rt_mmcsd_card));
if (!card) if (!card)
{ {
rt_kprintf("malloc card failed\n"); LOG_E("malloc card failed!");
err = -RT_ENOMEM; err = -RT_ENOMEM;
goto err; goto err;
} }
@ -580,7 +590,7 @@ remove_card:
host->card = RT_NULL; host->card = RT_NULL;
err: err:
rt_kprintf("init MMC card failed\n"); LOG_E("init MMC card failed!");
return err; return err;
} }

View File

@ -28,6 +28,16 @@
#include <drivers/mmc.h> #include <drivers/mmc.h>
#include <drivers/sdio.h> #include <drivers/sdio.h>
#define DBG_ENABLE
#define DBG_SECTION_NAME "[SDIO]"
#ifdef RT_SDIO_DEBUG
#define DBG_LEVEL DBG_LOG
#else
#define DBG_LEVEL DBG_INFO
#endif /* RT_SDIO_DEBUG */
#define DBG_COLOR
#include <rtdbg.h>
#ifndef RT_MMCSD_STACK_SIZE #ifndef RT_MMCSD_STACK_SIZE
#define RT_MMCSD_STACK_SIZE 1024 #define RT_MMCSD_STACK_SIZE 1024
#endif #endif
@ -206,7 +216,7 @@ rt_int32_t mmcsd_get_cid(struct rt_mmcsd_host *host, rt_uint32_t *cid)
buf = (rt_uint32_t *)rt_malloc(16); buf = (rt_uint32_t *)rt_malloc(16);
if (!buf) if (!buf)
{ {
rt_kprintf("allocate memory failed\n"); LOG_E("allocate memory failed!");
return -RT_ENOMEM; return -RT_ENOMEM;
} }
@ -282,7 +292,7 @@ rt_int32_t mmcsd_get_csd(struct rt_mmcsd_card *card, rt_uint32_t *csd)
buf = (rt_uint32_t*)rt_malloc(16); buf = (rt_uint32_t*)rt_malloc(16);
if (!buf) if (!buf)
{ {
rt_kprintf("allocate memory failed\n"); LOG_E("allocate memory failed!");
return -RT_ENOMEM; return -RT_ENOMEM;
} }
@ -418,7 +428,7 @@ void mmcsd_set_clock(struct rt_mmcsd_host *host, rt_uint32_t clk)
{ {
if (clk < host->freq_min) if (clk < host->freq_min)
{ {
rt_kprintf("clock too low\n"); LOG_W("clock too low!");
} }
host->io_cfg.clock = clk; host->io_cfg.clock = clk;
@ -539,7 +549,7 @@ rt_uint32_t mmcsd_select_voltage(struct rt_mmcsd_host *host, rt_uint32_t ocr)
} }
else else
{ {
rt_kprintf("host doesn't support card's voltages\n"); LOG_W("host doesn't support card's voltages!");
ocr = 0; ocr = 0;
} }
@ -679,7 +689,7 @@ void mmcsd_detect(void *param)
mmcsd_host_lock(host); mmcsd_host_lock(host);
if (host->card->sdio_function_num != 0) if (host->card->sdio_function_num != 0)
{ {
rt_kprintf("unsupport sdio card plug out!\n"); LOG_W("unsupport sdio card plug out!");
} }
else else
{ {
@ -702,7 +712,7 @@ struct rt_mmcsd_host *mmcsd_alloc_host(void)
host = rt_malloc(sizeof(struct rt_mmcsd_host)); host = rt_malloc(sizeof(struct rt_mmcsd_host));
if (!host) if (!host)
{ {
rt_kprintf("alloc host failed\n"); LOG_E("alloc host failed");
return RT_NULL; return RT_NULL;
} }

View File

@ -25,6 +25,16 @@
#include <drivers/mmcsd_core.h> #include <drivers/mmcsd_core.h>
#include <drivers/sd.h> #include <drivers/sd.h>
#define DBG_ENABLE
#define DBG_SECTION_NAME "[SDIO]"
#ifdef RT_SDIO_DEBUG
#define DBG_LEVEL DBG_LOG
#else
#define DBG_LEVEL DBG_INFO
#endif /* RT_SDIO_DEBUG */
#define DBG_COLOR
#include <rtdbg.h>
static const rt_uint32_t tran_unit[] = static const rt_uint32_t tran_unit[] =
{ {
10000, 100000, 1000000, 10000000, 10000, 100000, 1000000, 10000000,
@ -167,11 +177,11 @@ static rt_int32_t mmcsd_parse_csd(struct rt_mmcsd_card *card)
#endif #endif
break; break;
default: default:
rt_kprintf("unrecognised CSD structure version %d\n", csd->csd_structure); LOG_E("unrecognised CSD structure version %d!", csd->csd_structure);
return -RT_ERROR; return -RT_ERROR;
} }
rt_kprintf("SD card capacity %d KB\n", card->card_capacity); LOG_I("SD card capacity %d KB.", card->card_capacity);
return 0; return 0;
} }
@ -201,7 +211,7 @@ static rt_int32_t mmcsd_switch(struct rt_mmcsd_card *card)
buf = (rt_uint8_t*)rt_malloc(64); buf = (rt_uint8_t*)rt_malloc(64);
if (!buf) if (!buf)
{ {
rt_kprintf("alloc memory failed\n"); LOG_E("alloc memory failed!");
return -RT_ENOMEM; return -RT_ENOMEM;
} }
@ -270,7 +280,7 @@ static rt_int32_t mmcsd_switch(struct rt_mmcsd_card *card)
if ((buf[16] & 0xF) != 1) if ((buf[16] & 0xF) != 1)
{ {
rt_kprintf("switching card to high speed failed\n"); LOG_E("switching card to high speed failed!");
goto err; goto err;
} }
@ -588,7 +598,7 @@ static rt_int32_t mmcsd_sd_init_card(struct rt_mmcsd_host *host,
card = rt_malloc(sizeof(struct rt_mmcsd_card)); card = rt_malloc(sizeof(struct rt_mmcsd_card));
if (!card) if (!card)
{ {
rt_kprintf("malloc card failed\n"); LOG_E("malloc card failed!");
err = -RT_ENOMEM; err = -RT_ENOMEM;
goto err; goto err;
} }
@ -703,9 +713,9 @@ rt_int32_t init_sd(struct rt_mmcsd_host *host, rt_uint32_t ocr)
if (ocr & VDD_165_195) if (ocr & VDD_165_195)
{ {
rt_kprintf(" SD card claims to support the " LOG_I(" SD card claims to support the "
"incompletely defined 'low voltage range'. This " "incompletely defined 'low voltage range'. This "
"will be ignored.\n"); "will be ignored.");
ocr &= ~VDD_165_195; ocr &= ~VDD_165_195;
} }
@ -743,7 +753,7 @@ remove_card:
host->card = RT_NULL; host->card = RT_NULL;
err: err:
rt_kprintf("init SD card failed\n"); LOG_D("init SD card failed!");
return err; return err;
} }

View File

@ -26,6 +26,16 @@
#include <drivers/sdio.h> #include <drivers/sdio.h>
#include <drivers/sd.h> #include <drivers/sd.h>
#define DBG_ENABLE
#define DBG_SECTION_NAME "[SDIO]"
#ifdef RT_SDIO_DEBUG
#define DBG_LEVEL DBG_LOG
#else
#define DBG_LEVEL DBG_INFO
#endif /* RT_SDIO_DEBUG */
#define DBG_COLOR
#include <rtdbg.h>
#ifndef RT_SDIO_STACK_SIZE #ifndef RT_SDIO_STACK_SIZE
#define RT_SDIO_STACK_SIZE 512 #define RT_SDIO_STACK_SIZE 512
#endif #endif
@ -432,7 +442,7 @@ static rt_int32_t sdio_read_cccr(struct rt_mmcsd_card *card)
if (cccr_version > SDIO_CCCR_REV_3_00) if (cccr_version > SDIO_CCCR_REV_3_00)
{ {
rt_kprintf("unrecognised CCCR structure version %d\n", cccr_version); LOG_E("unrecognised CCCR structure version %d", cccr_version);
return -RT_ERROR; return -RT_ERROR;
} }
@ -579,7 +589,7 @@ static rt_int32_t sdio_read_cis(struct rt_sdio_function *func)
case CISTPL_MANFID: case CISTPL_MANFID:
if (tpl_link < 4) if (tpl_link < 4)
{ {
rt_kprintf("bad CISTPL_MANFID length\n"); LOG_D("bad CISTPL_MANFID length");
break; break;
} }
if (func->num != 0) if (func->num != 0)
@ -605,15 +615,15 @@ static rt_int32_t sdio_read_cis(struct rt_sdio_function *func)
if (ret) if (ret)
{ {
rt_kprintf("bad CISTPL_FUNCE size %u " LOG_D("bad CISTPL_FUNCE size %u "
"type %u\n", tpl_link, curr->data[0]); "type %u", tpl_link, curr->data[0]);
} }
break; break;
case CISTPL_VERS_1: case CISTPL_VERS_1:
if (tpl_link < 2) if (tpl_link < 2)
{ {
rt_kprintf("CISTPL_VERS_1 too short\n"); LOG_D("CISTPL_VERS_1 too short");
} }
break; break;
default: default:
@ -623,7 +633,7 @@ static rt_int32_t sdio_read_cis(struct rt_sdio_function *func)
curr->size = tpl_link; curr->size = tpl_link;
*prev = curr; *prev = curr;
prev = &curr->next; prev = &curr->next;
rt_kprintf( "function %d, CIS tuple code %#x, length %d\n", LOG_D( "function %d, CIS tuple code %#x, length %d",
func->num, tpl_code, tpl_link); func->num, tpl_code, tpl_link);
break; break;
} }
@ -686,7 +696,6 @@ err:
return ret; return ret;
} }
static rt_int32_t sdio_initialize_function(struct rt_mmcsd_card *card, static rt_int32_t sdio_initialize_function(struct rt_mmcsd_card *card,
rt_uint32_t func_num) rt_uint32_t func_num)
{ {
@ -698,7 +707,7 @@ static rt_int32_t sdio_initialize_function(struct rt_mmcsd_card *card,
func = rt_malloc(sizeof(struct rt_sdio_function)); func = rt_malloc(sizeof(struct rt_sdio_function));
if (!func) if (!func)
{ {
rt_kprintf("malloc rt_sdio_function failed\n"); LOG_E("malloc rt_sdio_function failed");
ret = -RT_ENOMEM; ret = -RT_ENOMEM;
goto err; goto err;
} }
@ -788,7 +797,7 @@ static rt_int32_t sdio_register_card(struct rt_mmcsd_card *card)
sc = rt_malloc(sizeof(struct sdio_card)); sc = rt_malloc(sizeof(struct sdio_card));
if (sc == RT_NULL) if (sc == RT_NULL)
{ {
rt_kprintf("malloc sdio card failed\n"); LOG_E("malloc sdio card failed");
return -RT_ENOMEM; return -RT_ENOMEM;
} }
@ -836,7 +845,7 @@ static rt_int32_t sdio_init_card(struct rt_mmcsd_host *host, rt_uint32_t ocr)
card = rt_malloc(sizeof(struct rt_mmcsd_card)); card = rt_malloc(sizeof(struct rt_mmcsd_card));
if (!card) if (!card)
{ {
rt_kprintf("malloc card failed\n"); LOG_E("malloc card failed");
err = -RT_ENOMEM; err = -RT_ENOMEM;
goto err; goto err;
} }
@ -850,7 +859,7 @@ static rt_int32_t sdio_init_card(struct rt_mmcsd_host *host, rt_uint32_t ocr)
card->sdio_function[0] = rt_malloc(sizeof(struct rt_sdio_function)); card->sdio_function[0] = rt_malloc(sizeof(struct rt_sdio_function));
if (!card->sdio_function[0]) if (!card->sdio_function[0])
{ {
rt_kprintf("malloc sdio_func0 failed\n"); LOG_E("malloc sdio_func0 failed");
err = -RT_ENOMEM; err = -RT_ENOMEM;
goto err1; goto err1;
} }
@ -944,7 +953,7 @@ err1:
rt_free(host->card); rt_free(host->card);
} }
err: err:
rt_kprintf("error %d while initialising SDIO card\n", err); LOG_E("error %d while initialising SDIO card", err);
return err; return err;
} }
@ -958,13 +967,13 @@ rt_int32_t init_sdio(struct rt_mmcsd_host *host, rt_uint32_t ocr)
if (ocr & 0x7F) if (ocr & 0x7F)
{ {
rt_kprintf("Card ocr below the defined voltage rang.\n"); LOG_W("Card ocr below the defined voltage rang.");
ocr &= ~0x7F; ocr &= ~0x7F;
} }
if (ocr & VDD_165_195) if (ocr & VDD_165_195)
{ {
rt_kprintf("Can't support the low voltage SDIO card.\n"); LOG_W("Can't support the low voltage SDIO card.");
ocr &= ~VDD_165_195; ocr &= ~VDD_165_195;
} }
@ -987,7 +996,7 @@ remove_card:
host->card = RT_NULL; host->card = RT_NULL;
err: err:
rt_kprintf("init SDIO card failed\n"); LOG_E("init SDIO card failed");
return err; return err;
} }
@ -1341,7 +1350,7 @@ rt_int32_t sdio_register_driver(struct rt_sdio_driver *driver)
sd = rt_malloc(sizeof(struct sdio_driver)); sd = rt_malloc(sizeof(struct sdio_driver));
if (sd == RT_NULL) if (sd == RT_NULL)
{ {
rt_kprintf("malloc sdio driver failed\n"); LOG_E("malloc sdio driver failed");
return -RT_ENOMEM; return -RT_ENOMEM;
} }
@ -1378,7 +1387,7 @@ rt_int32_t sdio_unregister_driver(struct rt_sdio_driver *driver)
if (sd == RT_NULL) if (sd == RT_NULL)
{ {
rt_kprintf("SDIO driver %s not register\n", driver->name); LOG_E("SDIO driver %s not register", driver->name);
return -RT_ERROR; return -RT_ERROR;
} }