日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux驱动emmc的8bits/4bits/1bits模式自动匹配优化

發布時間:2024/3/26 linux 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux驱动emmc的8bits/4bits/1bits模式自动匹配优化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【背景】

Linux驅動emmc的bus-width的bits模式匹配,從8bit->4bit->1bit的自適應匹配,是根據發送ext_csd命令來看是否有response應答來選擇的。但是每個bus-bit的response wait時間很長,wait_for_completion的timeout時間,默認為MAX_SCHEDULE_TIMEOUT=~0>>1,會阻塞等待很長時間,長達數秒,甚至此時文件系統已經初始化完成了還在阻塞等待。

【優化】

減少emmc bits-mode匹配時間;

在驅動mmc_wait_for_req_done()中使用wait_for_completion_timeout(&completion, msecs_to_jiffies(ms))來代替wait_for_completion(&completion),ms超時就返回。

【代碼】

??? if(unlikely(mrq->cmd->opcode == MMC_SEND_EXT_CSD))
?? ??? ?{
?? ??? ??? ?ret = wait_for_completion_timeout(&mrq->completion, msecs_to_jiffies(500));
?? ??? ??? ?if(!ret)
?? ??? ??? ?{
?? ??? ??? ??? ?struct sdhci_host *host_mmc;
?? ??? ??? ???? pr_info("[debug_emmc] timeout.");
?? ??? ??? ??? ?host_mmc = mmc_priv(host);
?? ??? ??? ??? ?mrq->cmd->error = -ETIMEDOUT;
?? ??? ??? ??? ?mrq->cmd->retries = 0;
?? ??? ??? ??? ?complete(&mrq->completion);
?? ??? ??? ??? ?host_mmc->mrq = NULL;
?? ??? ??? ?}?? ?
?? ??? ?}
?? ??? ?else
?? ??? ??? ?wait_for_completion(&mrq->completion);

?????????

總結

以上是生活随笔為你收集整理的Linux驱动emmc的8bits/4bits/1bits模式自动匹配优化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。