From patchwork Fri Nov 5 13:34:14 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julien Masson X-Patchwork-Id: 1551390 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=baylibre-com.20210112.gappssmtp.com header.i=@baylibre-com.20210112.gappssmtp.com header.a=rsa-sha256 header.s=20210112 header.b=rvCNxdXT; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4Hm1wC51PFz9sf8 for ; Sat, 6 Nov 2021 00:44:59 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 074EB833E6; Fri, 5 Nov 2021 14:44:52 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=baylibre-com.20210112.gappssmtp.com header.i=@baylibre-com.20210112.gappssmtp.com header.b="rvCNxdXT"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id D0D7D805DF; Fri, 5 Nov 2021 14:41:04 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com [IPv6:2a00:1450:4864:20::42d]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 972FE805DF for ; Fri, 5 Nov 2021 14:41:00 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=jmasson@baylibre.com Received: by mail-wr1-x42d.google.com with SMTP id r8so13767583wra.7 for ; Fri, 05 Nov 2021 06:41:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version; bh=GWnketTZAy2x3/jPG6JJg46aiklq/iCDjoTHtuKATUI=; b=rvCNxdXTU6FT0BSou5KX9EGEBqxbBVCH0KopmH7/dciCV5LacykZ/e3pnwZdS5893G NU8LcUElR9upiLuMDhezXzHQhzeKcKyO/ombnEqTr1YJywr+SL52+4V1sH7BY0Mk4LPw cckIrROlOtIAqhpN/En1hKOF3tyHvmQBO6vMwZ3K3h7JMbJoGg7uc6eN4FIo/VzFA7k5 aqiqAi+CfCeED7mg576TkYTWRVoMFKFsHZznCL6kmYdSRl+V8sPO2M+LEOT4DaGVMNDW GESEV//6JoqdtkrHUBPSHPKDkKUZPfgY8KEst7eoze5mcqgL6ke+Wo6VKPl62GLGeomS 6PpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version; bh=GWnketTZAy2x3/jPG6JJg46aiklq/iCDjoTHtuKATUI=; b=mHFEXhXVDEJEa9qTqE70mJBxmtEyr58oFi17zz8fnjzJWm0V1KIV2oiNHmTeU009Li 6IFNY8ISEAvfmIFuI/fjYXlU2Q1Ndy/SwEmFsQ2MpCZ0onIhSn79XmvFVLE6vzLkKK3F 2y9dOVyHOl4b4u1QCUhzpsbfxywsa5XEKA/spAGIOevxV4cxAfm2xY4f8tDxt40NiyPW 3+Dj7kS0tKrlOX3HhxPGgltjkQ8MxIZB0VwpAbE4qec7pmWjMQK9ifU5Kk2sx00yHb3Z R03C9mp0UNiE/n6zCbAGgeP5OUBNv6tI3YB9b9RT3DO1bo4U3xeuR6K0iSSEM9lDNInu GrSw== X-Gm-Message-State: AOAM5309FtxXLNTt/+2qqTiIdxuQjCjBHp3bTdIKUqZ1ysWTPO81zKBT p635e2hsFMRLiTLWvFQ+a3NKVPUqBXfHX1Iy X-Google-Smtp-Source: ABdhPJwzg+OoY+9e2LOJGJtAMBKVaB2n2wYCvRmdSer+jVAsuCIy182Jq63r31jBcgqDvDJUx7EDHg== X-Received: by 2002:adf:b748:: with SMTP id n8mr72712553wre.133.1636119660021; Fri, 05 Nov 2021 06:41:00 -0700 (PDT) Received: from localhost (atoulouse-654-1-345-248.w90-55.abo.wanadoo.fr. [90.55.184.248]) by smtp.gmail.com with ESMTPSA id u23sm516451wru.21.2021.11.05.06.40.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Nov 2021 06:40:59 -0700 (PDT) From: Julien Masson To: u-boot@lists.denx.de Cc: Jaehoon Chung , Peng Fan , Chunfeng Yun , Weijie Gao , Ryder Lee , GSS_MTK_Uboot_upstream , Mattijs Korpershoek , Fabien Parent Subject: [PATCH] mmc: mtk-sd: implement waiting for DAT0 line state Date: Fri, 5 Nov 2021 14:34:14 +0100 Message-ID: <87wnlm90ut.fsf@baylibre.com> MIME-Version: 1.0 X-Mailman-Approved-At: Fri, 05 Nov 2021 14:44:50 +0100 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean With the recent changes on mmc driver, we saw that the boot is ~5 secs longer compared to v2021.07 on mediatek platforms. This regression is seen during mmc_init and caused by the following patch [1]. Indeed since we did not support poll dat0, we fulfilled the condition of [1] and a delay of 500 ms was added for every __mmc_switch call. By adding the support of wait_dat0(), we now don't need to mdelay during mmc_init anymore. [1]: https://patchwork.ozlabs.org/project/uboot/patch/1629192034-64056-1-git-send-email-ye.li@nxp.com/ Signed-off-by: Julien Masson Reviewed-by: Jaehoon Chung --- drivers/mmc/mtk-sd.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/drivers/mmc/mtk-sd.c b/drivers/mmc/mtk-sd.c index 8599f095bc..97182ffd7f 100644 --- a/drivers/mmc/mtk-sd.c +++ b/drivers/mmc/mtk-sd.c @@ -1724,6 +1724,20 @@ static int msdc_drv_bind(struct udevice *dev) return mmc_bind(dev, &plat->mmc, &plat->cfg); } +static int msdc_ops_wait_dat0(struct udevice *dev, int state, int timeout_us) +{ + struct msdc_host *host = dev_get_priv(dev); + int ret; + u32 reg; + + ret = readl_poll_sleep_timeout(&host->base->msdc_ps, reg, + !!(reg & MSDC_PS_DAT0) == !!state, + 1000, /* 1 ms */ + timeout_us); + + return ret; +} + static const struct dm_mmc_ops msdc_ops = { .send_cmd = msdc_ops_send_cmd, .set_ios = msdc_ops_set_ios, @@ -1732,6 +1746,7 @@ static const struct dm_mmc_ops msdc_ops = { #ifdef MMC_SUPPORTS_TUNING .execute_tuning = msdc_execute_tuning, #endif + .wait_dat0 = msdc_ops_wait_dat0, }; static const struct msdc_compatible mt7620_compat = {