From patchwork Thu Oct 12 18:40:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Avri Altman X-Patchwork-Id: 13419618 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id DFE2CCDB46E for ; Thu, 12 Oct 2023 18:42:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230015AbjJLSmc (ORCPT ); Thu, 12 Oct 2023 14:42:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33056 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229576AbjJLSmb (ORCPT ); Thu, 12 Oct 2023 14:42:31 -0400 Received: from esa2.hgst.iphmx.com (esa2.hgst.iphmx.com [68.232.143.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A91B783 for ; Thu, 12 Oct 2023 11:42:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1697136149; x=1728672149; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=cE+Ovmdif0klOaUfZsBoFastK7bPX6jSv6/7TS40OGc=; b=DxnqVFlPq54DnM4gpwt7xwiMaBmTnezncrHB94tflwxUWbGzXteoVqx/ aaN1HItiEzymM0QuiwKX67Tgb+UAWtTON30KiRcw88+wYl4UdX1J62c34 Uqg0KYmfCvZLFCPeLjJYCBGS5f9+8znCTJ5CereMGiet3kcxjDg0vDjbe c1ccgP4WzwMqUaRlyx2RAlDAL1WTTjfu4RHTH/Xf0UBuTEKeqT+E1+EMQ sU/JZE3tWy2lJUHghyxAOEoYWvMTcahYaMPfODYRViodHFEqw6MA/UgKf HyPy+MA+yLcjX+7WKJOGFQ/RLzUb+3oL5iV/Q0fIFxvNRLujzIb+HyJ48 A==; X-CSE-ConnectionGUID: YH/bN/XLRJarU2AtpfP9qA== X-CSE-MsgGUID: gM3U8KHITIikxuNt53pIIw== X-IronPort-AV: E=Sophos;i="6.03,219,1694707200"; d="scan'208";a="351770274" Received: from h199-255-45-15.hgst.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 13 Oct 2023 02:42:29 +0800 IronPort-SDR: NMQIm44Qt9O/TKm8xM2r33IIzj5bqsMd+HjKVA1THCzGvAkYtrS85IC2I5ZVkec5glmgyMaBJr OoDv0rSQMBGhok7ysEFd/wVRLNALPg2Usjrg6h6pOmr8MoCxUtM25ujA7G9WXkg9tHuuH4To9s +rpe/5WtAI6/NrsmbxMKpQehUOca0ZYW64wpqBMh6SzRHMPNDqm5zz0AzAGJp0bwFk8hRb2O6R /XlGcK2Ow52Jis9qNstcMoFu9qGgNrWr6PEWmbThpj8lnEsyOJ2HfydeKTDx1dOwRzYOB0aGUs Y3A= Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 12 Oct 2023 10:48:56 -0700 IronPort-SDR: Yzm2cnBlSeBnhdybEc9+IoBZGK7SovfuwP5lRDXEfpReLfwBFacJmnvv9szajZ5FLqqDT8Y51R z3rgQ62A0+/AOXrh1NesvSwxl/X6DK1+QKAgHrVhoOkN6AfuSf/ahHxBU2kn/eOYAU74U6ZnB6 bAeezdv9I58sUGD5oaCzdbl4h0czxc6WGi4JOU6Xv0gMpNZfL+tCfFO4YGIXgn2LmhgO1FRHb4 o8j1t+GMCLT4nUwW+Bgt4CASwZ0LfnBMRRNdd+HulGbOhysCP9FYMT73gIuv9DbEFsUuI6FYes IOA= WDCIronportException: Internal Received: from avri-office.ad.shared (HELO avri-office.sdcorp.global.sandisk.com) ([10.45.31.142]) by uls-op-cesaip01.wdc.com with ESMTP; 12 Oct 2023 11:42:26 -0700 From: Avri Altman To: Ulf Hansson , linux-mmc@vger.kernel.org Cc: Adrian Hunter , Daniil Lunev , Asutosh Das , Avri Altman Subject: [PATCH 1/3] mmc: host: Quirk - Disable auto-cmd12 during ffu Date: Thu, 12 Oct 2023 21:40:39 +0300 Message-Id: <20231012184041.1837455-2-avri.altman@wdc.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231012184041.1837455-1-avri.altman@wdc.com> References: <20231012184041.1837455-1-avri.altman@wdc.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-mmc@vger.kernel.org Field Firmware Update (ffu) may use close-ended or open ended sequence. Each such sequence is comprised of a write commands enclosed between 2 switch commands - to and from ffu mode. Some platforms generate auto command error interrupt when it shouldn't, e.g. auto-cmd12 while in close-ended ffu sequence. Therefore, add a quirk that disable auto-cmd12 while close-ended ffu is in progress. Signed-off-by: Avri Altman --- drivers/mmc/host/sdhci.c | 8 +++++++- drivers/mmc/host/sdhci.h | 2 ++ include/linux/mmc/core.h | 3 +++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index ff41aa56564e..6d58f71f926e 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -1389,11 +1389,17 @@ void sdhci_switch_external_dma(struct sdhci_host *host, bool en) } EXPORT_SYMBOL_GPL(sdhci_switch_external_dma); +static inline bool sdhci_dont_auto_cmd12_ffu(struct sdhci_host *host, + struct mmc_request *mrq) { + return (host->quirks2 & SDHCI_QUIRK2_FFU_ACMD12) && mrq->ffu; +} + static inline bool sdhci_auto_cmd12(struct sdhci_host *host, struct mmc_request *mrq) { return !mrq->sbc && (host->flags & SDHCI_AUTO_CMD12) && - !mrq->cap_cmd_during_tfr; + !mrq->cap_cmd_during_tfr && + !sdhci_dont_auto_cmd12_ffu(host, mrq); } static inline bool sdhci_auto_cmd23(struct sdhci_host *host, diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h index f219bdea8f28..ccab3a76883c 100644 --- a/drivers/mmc/host/sdhci.h +++ b/drivers/mmc/host/sdhci.h @@ -485,6 +485,8 @@ struct sdhci_host { #define SDHCI_QUIRK2_USE_32BIT_BLK_CNT (1<<18) /* Issue CMD and DATA reset together */ #define SDHCI_QUIRK2_ISSUE_CMD_DAT_RESET_TOGETHER (1<<19) +/* Controller generates auto-cmd error interrupt during close-ended ffu */ +#define SDHCI_QUIRK2_FFU_ACMD12 (1<<20) int irq; /* Device IRQ */ void __iomem *ioaddr; /* Mapped address */ diff --git a/include/linux/mmc/core.h b/include/linux/mmc/core.h index 6efec0b9820c..aca4e84f648c 100644 --- a/include/linux/mmc/core.h +++ b/include/linux/mmc/core.h @@ -161,6 +161,9 @@ struct mmc_request { /* Allow other commands during this ongoing data transfer or busy wait */ bool cap_cmd_during_tfr; + /* Be aware that ffu is in progress and avoid auto-cmd12 */ + bool ffu; + int tag; #ifdef CONFIG_MMC_CRYPTO From patchwork Thu Oct 12 18:40:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Avri Altman X-Patchwork-Id: 13419619 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 26ABDCDB46E for ; Thu, 12 Oct 2023 18:42:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1379677AbjJLSmq (ORCPT ); Thu, 12 Oct 2023 14:42:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59976 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1379655AbjJLSmp (ORCPT ); Thu, 12 Oct 2023 14:42:45 -0400 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 69AA283 for ; Thu, 12 Oct 2023 11:42:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1697136164; x=1728672164; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Q1NycfuipYB+ojhUIZct0o3mb2phHLlgSOxpw47xVAc=; b=oC5//gd0OAshpyn2Ym47bJ6PrD70Pi3jB1SjH2maMgBJDKomU7qqOMFM Kl9Fxa4M3s+9qP7cgh+6OynYIs8fbsoQ59YfdQkcAYGGkQMQ+TuaHt4vQ 2TdvMMNaLriJz8MTTyyxnrbPBaFRGyQYHF0eTTUMxC2gakrXivnBOSxU6 YWDvVCBsvPZa/yIESk5Ti+p5SxJBWJFMSvl+v0xvEUGWxTekVQs9heLjI OKKb2yPGopcTSitGvLhvDbPdOYXyxPzKo/fPwtxY/kTCiSwwG33pu1bm/ DxAT1iXX+G4mdEKh9g+HSv9kZ+hU1+x8jPXtmsSkxo9XQOfmWdZDW5G23 g==; X-CSE-ConnectionGUID: YzEo81zUQLST/RQt8zZuqA== X-CSE-MsgGUID: 0zhOcpfmTrq8FETtA7OC2g== X-IronPort-AV: E=Sophos;i="6.03,219,1694707200"; d="scan'208";a="246421366" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 13 Oct 2023 02:42:44 +0800 IronPort-SDR: gjadJjYzw35XOL866XRgnhoJoI1sBr5GwdWRGD8gkJsBuK9Xxop+CfC33/Be6do7L06lHo8n8N LUOLG6zM/wt8RB5plUmmewsI8LK1j6Oh3ZQXS430nVu5oh1SGeUXPZOOxKmVVpkTe9HNQTI4g5 H330JZcOE9IX5Pl4e5Xthx9FF+qgU3mERbUx1Td/oYR3XxEssp+1vZ6yXcdgcgYS4EzdEW1CkM r08pZtPaIq3prl2tDLep0mlZ4EHZuaGSrRAbi/6VRyJ1fWgGnpdcNzizSH4r9ajB1XWAjZcFIh YeY= Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 12 Oct 2023 10:54:51 -0700 IronPort-SDR: onN01rj1b5s6LJP3ch6KxpcORb8BMvNYJQI3kn81akWVaDGi1drDx8uVEctmOoeFQYka3jHAqq +Xgd9890y6VxDwN8IWKp2jld0aj77qQ4MMH9HQvrd0nmXCS5XVrErUcdb2myClUbf7KdOwJbJ3 z0mnfo0jtkZla1eOG7NxgE1zOIj63YbmKACnLMAC2pZ6x6DnJXilaHndHXHCdnE9kFZ+1g6YIa CcL7Xx/Ttpt1KVnsI5VLtHTX+/pv267XwYRG3mzcRXqh5BZO2GEZRuK8CxesIP3LYs1x8SPqVb Hm8= WDCIronportException: Internal Received: from avri-office.ad.shared (HELO avri-office.sdcorp.global.sandisk.com) ([10.45.31.142]) by uls-op-cesaip01.wdc.com with ESMTP; 12 Oct 2023 11:42:42 -0700 From: Avri Altman To: Ulf Hansson , linux-mmc@vger.kernel.org Cc: Adrian Hunter , Daniil Lunev , Asutosh Das , Avri Altman Subject: [PATCH 2/3] mmc: core: Mark close-ended ffu in progress Date: Thu, 12 Oct 2023 21:40:40 +0300 Message-Id: <20231012184041.1837455-3-avri.altman@wdc.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231012184041.1837455-1-avri.altman@wdc.com> References: <20231012184041.1837455-1-avri.altman@wdc.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-mmc@vger.kernel.org The SDHCI_QUIRK2_FFU_ACMD12 quirk was invented to prevent from those bogus sdhci to use auto-cmd12 after cmd25 in a close-ended ffu process. Capture the applicable mrq and mark it so it won't use auto-cmd12 post that cmd25. Signed-off-by: Avri Altman --- drivers/mmc/core/block.c | 25 +++++++++++++++++++++++++ include/linux/mmc/mmc.h | 1 + 2 files changed, 26 insertions(+) diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c index 3a8f27c3e310..d92e7322c6da 100644 --- a/drivers/mmc/core/block.c +++ b/drivers/mmc/core/block.c @@ -114,6 +114,8 @@ struct mmc_blk_data { unsigned int flags; #define MMC_BLK_CMD23 (1 << 0) /* Can do SET_BLOCK_COUNT for multiblock */ #define MMC_BLK_REL_WR (1 << 1) /* MMC Reliable write support */ +#define MMC_BLK_FFU (1 << 2) /* FFU in progress */ +#define MMC_BLK_CE (1 << 3) /* close-ended FFU in progress */ struct kref kref; unsigned int read_only; @@ -548,6 +550,29 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md, (cmd.opcode == MMC_SWITCH)) return mmc_sanitize(card, idata->ic.cmd_timeout_ms); + if ((MMC_EXTRACT_INDEX_FROM_ARG(cmd.arg) == EXT_CSD_MODE_CONFIG) && + (cmd.opcode == MMC_SWITCH)) { + u8 value = MMC_EXTRACT_VALUE_FROM_ARG(cmd.arg); + + if (value == 1) { + md->flags |= MMC_BLK_FFU; + } else if (value == 0) { + /* switch back to normal mode is always happening */ + md->flags &= ~MMC_BLK_FFU; + md->flags &= ~MMC_BLK_CE; + } + } + + if ((md->flags & MMC_BLK_FFU) && cmd.opcode == MMC_SET_BLOCK_COUNT) { + md->flags &= ~MMC_BLK_FFU; + md->flags |= MMC_BLK_CE; + } + + if ((md->flags & MMC_BLK_CE) && mmc_op_multi(cmd.opcode)) { + mrq.ffu = true; + md->flags &= ~MMC_BLK_CE; + } + /* If it's an R1B response we need some more preparations. */ busy_timeout_ms = idata->ic.cmd_timeout_ms ? : MMC_BLK_TIMEOUT_MS; r1b_resp = (cmd.flags & MMC_RSP_R1B) == MMC_RSP_R1B; diff --git a/include/linux/mmc/mmc.h b/include/linux/mmc/mmc.h index 6f7993803ee7..d4d10cabaa57 100644 --- a/include/linux/mmc/mmc.h +++ b/include/linux/mmc/mmc.h @@ -254,6 +254,7 @@ static inline bool mmc_ready_for_data(u32 status) */ #define EXT_CSD_CMDQ_MODE_EN 15 /* R/W */ +#define EXT_CSD_MODE_CONFIG 30 /* R/W */ #define EXT_CSD_FLUSH_CACHE 32 /* W */ #define EXT_CSD_CACHE_CTRL 33 /* R/W */ #define EXT_CSD_POWER_OFF_NOTIFICATION 34 /* R/W */ From patchwork Thu Oct 12 18:40:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Avri Altman X-Patchwork-Id: 13419620 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id EB234CDB482 for ; Thu, 12 Oct 2023 18:42:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1379689AbjJLSm5 (ORCPT ); Thu, 12 Oct 2023 14:42:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58648 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1379655AbjJLSm4 (ORCPT ); Thu, 12 Oct 2023 14:42:56 -0400 Received: from esa2.hgst.iphmx.com (esa2.hgst.iphmx.com [68.232.143.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3911483 for ; Thu, 12 Oct 2023 11:42:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1697136175; x=1728672175; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=45/Ciz8VdPSGdX9h+9KVm/i9xjLN4xJH/3wVSIKHjJQ=; b=MC5oc1j92x/KtLIgSJuUt2/vneSFcdaVny0Nje6yNvoOyfRTswN6cVpo 7NKgsQX0bam35o1o/ZXP9K3gTsgR+wYW5SddYPsn6XIw19vH+gclB6I7u H/VaCGqZAHuGT9miKJEKx4ZIbLelOXXxT5StyJitIo+K3esoDTw5EFnOk 6IW7sblDgq4HBQPDswo2rOlcmmV0KS0wQf77UL8bwcap8zkG9o8tWm2Lp KjnxsA4YdDYkuSsS4R83oMiwqmRkqBdDKFu4K02iec3y/bzujVKkbtd+/ wqu27ULtzJrybVatfvHVLob5C045bRfU3VGe+5ouMbaBohQGEP2ZxJw7c w==; X-CSE-ConnectionGUID: 0c6+A0NxSuWHMI1vLDNCLw== X-CSE-MsgGUID: B42BGwHPRc+P1z7wAyMhKA== X-IronPort-AV: E=Sophos;i="6.03,219,1694707200"; d="scan'208";a="351770288" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 13 Oct 2023 02:42:54 +0800 IronPort-SDR: i/hpPEacQqo9sZAXlHSlGLl2BS41DuzfzEL1tl/wHWvk8PY39DyChb6AH2vw+wLhKAdxTIQ+Au SWlZmF3d5LgBbSCt312IA+WWvF5MEJRce7v29vBZZDGI7xOVTi0w5sdlzGPgy4Khz5TVEVIbLq 7CrXs+SiZQuyQeIattS2M8BtRZtX0dr09+CyjStbImRUGgvCqU4zn470AXCgliVTSCSxP511KM 9N2yFtR6OsX2OveMoIzFDfO8Hd/kZmGHzcLGS6hEerwTO5xSIEbeD5bawcpARUZaTM9Ny3TUFs 1w8= Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 12 Oct 2023 10:55:02 -0700 IronPort-SDR: f2F1YAk8w+P/sel3vxI2Z3p2xqV5Kq2WqtV3ViB6+okCFlOluwPor5WRNHOs10kbfruL2Zo5wk SFUgLfZmf+FKweF4+XvL3CzxcUlH/DbiWVffBTPJQlwbPdYtlK7Ir3ChK4N6nh8x+sghJS8vqj pK5TQzZJ0dUaUVHp4sTK7GCss/i7uwse+9QuYJQWAwC4xgupXUl7s2JhAnvGXPnVJQ4Z79Ml90 aLGzrWaJSjo6394qFaWtPIjqVDseKpFZpM65hOS70V3kiymEArchM95G2RlQ3MkuYbJDo8sNwU Odw= WDCIronportException: Internal Received: from avri-office.ad.shared (HELO avri-office.sdcorp.global.sandisk.com) ([10.45.31.142]) by uls-op-cesaip01.wdc.com with ESMTP; 12 Oct 2023 11:42:53 -0700 From: Avri Altman To: Ulf Hansson , linux-mmc@vger.kernel.org Cc: Adrian Hunter , Daniil Lunev , Asutosh Das , Avri Altman Subject: [PATCH 3/3] mmc: host: sdhci-msm: Apply SDHCI_QUIRK2_FFU_ACMD12 Date: Thu, 12 Oct 2023 21:40:41 +0300 Message-Id: <20231012184041.1837455-4-avri.altman@wdc.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231012184041.1837455-1-avri.altman@wdc.com> References: <20231012184041.1837455-1-avri.altman@wdc.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-mmc@vger.kernel.org I encounterd this issue while testing fwup on HP Chromebook x2, qualcomm based QC-7c, code name for board - strongbad. Signed-off-by: Avri Altman --- drivers/mmc/host/sdhci-msm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c index 668e0aceeeba..78a658c22d03 100644 --- a/drivers/mmc/host/sdhci-msm.c +++ b/drivers/mmc/host/sdhci-msm.c @@ -2339,7 +2339,8 @@ static const struct sdhci_pltfm_data sdhci_msm_pdata = { SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN | SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12, - .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN, + .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN | + SDHCI_QUIRK2_FFU_ACMD12, .ops = &sdhci_msm_ops, };