From 94768d3d9eba1779df1c6cd8ed3bfaa1a68438f3 Mon Sep 17 00:00:00 2001 From: xbw Date: Thu, 15 Dec 2011 11:04:31 +0800 Subject: [PATCH] modify the failure of SD-sdio in some case,due to print too much to invalid --- block/blk-core.c | 7 +++++++ drivers/mmc/card/block.c | 7 +++++-- drivers/mmc/core/core.c | 4 ++-- drivers/mmc/core/mmc_ops.c | 0 drivers/mmc/core/sdio.c | 1 + drivers/mmc/core/sdio_cis.c | 11 ++++++++++- 6 files changed, 25 insertions(+), 5 deletions(-) mode change 100644 => 100755 block/blk-core.c mode change 100644 => 100755 drivers/mmc/core/mmc_ops.c mode change 100644 => 100755 drivers/mmc/core/sdio_cis.c diff --git a/block/blk-core.c b/block/blk-core.c old mode 100644 new mode 100755 index 847d04ef9f19..249d1a06e3ad --- a/block/blk-core.c +++ b/block/blk-core.c @@ -2045,9 +2045,16 @@ bool blk_update_request(struct request *req, int error, unsigned int nr_bytes) error_type = "I/O"; break; } +#if defined(CONFIG_SDMMC_RK29) && !defined(CONFIG_SDMMC_RK29_OLD) //Modifyed by xbw at 2011-21-14 + printk(KERN_DEBUG "end_request: %s error, dev %s, sector %llu\n", + error_type, req->rq_disk ? req->rq_disk->disk_name : "?", + (unsigned long long)blk_rq_pos(req)); + +#else printk(KERN_ERR "end_request: %s error, dev %s, sector %llu\n", error_type, req->rq_disk ? req->rq_disk->disk_name : "?", (unsigned long long)blk_rq_pos(req)); +#endif } blk_account_io_completion(req, nr_bytes); diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c index 5e8e5890d766..f7f7a3c9f3cd 100755 --- a/drivers/mmc/card/block.c +++ b/drivers/mmc/card/block.c @@ -1021,14 +1021,16 @@ static int mmc_blk_issue_rw_rq(struct mmc_queue *mq, struct request *req) if (brq.sbc.error || brq.cmd.error || brq.stop.error || brq.data.error) { //modifyed by xbw at 2011-11-17 #else if (brq.data.error) { -#endif pr_err("%s: error %d transferring data, sector %u, nr %u, cmd response %#x, card status %#x\n", req->rq_disk->disk_name, brq.data.error, (unsigned)blk_rq_pos(req), (unsigned)blk_rq_sectors(req), brq.cmd.resp[0], brq.stop.resp[0]); - +#endif if (rq_data_dir(req) == READ) { + #if defined(CONFIG_SDMMC_RK29) && !defined(CONFIG_SDMMC_RK29_OLD) + //direct to exit when error happen; deleted by xbw at 2011-12-14 + #else if (brq.data.blocks > 1) { /* Redo read one sector at a time */ pr_warning("%s: retrying using single block read\n", @@ -1036,6 +1038,7 @@ static int mmc_blk_issue_rw_rq(struct mmc_queue *mq, struct request *req) disable_multi = 1; continue; } + #endif /* * After an error, we redo I/O one sector at a diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c index 21bca485be62..0132936607d7 100755 --- a/drivers/mmc/core/core.c +++ b/drivers/mmc/core/core.c @@ -1665,7 +1665,7 @@ static int mmc_rescan_try_freq(struct mmc_host *host, unsigned freq) #if !defined(CONFIG_USE_SDMMC0_FOR_WIFI_DEVELOP_BOARD) if( strncmp( mmc_hostname(host) ,"mmc0" , strlen("mmc0")) ) { - sdio_reset(host); + //sdio_reset(host);//make no sense; noteed by xbw at 2011-12-14 mmc_go_idle(host); if (!(init_ret=mmc_attach_sdio(host))) @@ -1690,7 +1690,7 @@ static int mmc_rescan_try_freq(struct mmc_host *host, unsigned freq) mmc_go_idle(host); } #else - sdio_reset(host); + //sdio_reset(host); //make no sense; noteed by xbw at 2011-12-14 mmc_go_idle(host); if (!(init_ret=mmc_attach_sdio(host))) diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c old mode 100644 new mode 100755 diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c index 6a30bf3011d9..7c4bcfea2833 100755 --- a/drivers/mmc/core/sdio.c +++ b/drivers/mmc/core/sdio.c @@ -947,6 +947,7 @@ int sdio_reset_comm(struct mmc_card *card) #if defined(CONFIG_SDMMC_RK29) && !defined(CONFIG_SDMMC_RK29_OLD) host->sdmmc_host_hw_init(mmc_priv(host)); //added by xbw , at 2011-10-18 + host->ios.clock = host->f_min; //for avoid 25MHz once again during init process.noted by xbw at 2011-11-14 #endif mmc_go_idle(host); diff --git a/drivers/mmc/core/sdio_cis.c b/drivers/mmc/core/sdio_cis.c old mode 100644 new mode 100755 index 541bdb89e0c5..25c9779a92c4 --- a/drivers/mmc/core/sdio_cis.c +++ b/drivers/mmc/core/sdio_cis.c @@ -313,10 +313,19 @@ static int sdio_read_cis(struct mmc_card *card, struct sdio_func *func) if (ret == -ENOENT) { /* warn about unknown tuples */ - printk(KERN_WARNING "%s: queuing unknown" +#if defined(CONFIG_SDMMC_RK29) && !defined(CONFIG_SDMMC_RK29_OLD) + // This is the normal exit procedure,rather than an error.noted by xbw at 2011-12-14 + printk(KERN_DEBUG "%s: queuing unknown" " CIS tuple 0x%02x (%u bytes)\n", mmc_hostname(card->host), tpl_code, tpl_link); +#else + printk(KERN_WARNING "%s: queuing unknown" + " CIS tuple 0x%02x (%u bytes)\n", + mmc_hostname(card->host), + tpl_code, tpl_link); + +#endif } /* keep on analyzing tuples */ -- 2.34.1