From nobody Tue Jun 16 20:36:47 2026 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E165326AE5 for ; Tue, 21 Apr 2026 02:51:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776739870; cv=none; b=LXuqkRP9zdRIjXkLpcw6hQDomoa5+hRaaecKWyLq9I+LM+vW+0fKiBZOwGQM2A6XDBo+WjUzFKHbRsz1/h6GzhmiEEIu2kJXdRxwPpNcjhY+tvWNRsX0wpy93JhLZCYXhYS7urahFqJBKYcPEtktmOv6U94t+xFSgXM1NkwS49Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776739870; c=relaxed/simple; bh=cmRVTAvX9wr+QcScrRAUGWAsOLTeS5OCKNRy1RLhclE=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=fAwfl70KUUaZc3+rBGAM86sB6gYORcLsHSpajGKCpTN25ZCwrctpt9iiA9ur1QM/DlAMnFcot9usbiFiLsgtNMcz5h6/xxTxgAmoaCzZyz4lGFo7THIASmJkMSaZ5g5QAL33ZPDR1ie2Ic0SB1Rp5fJmX04Q7P3tBiyUU+R6fJ8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Z4o2Ut4Q; arc=none smtp.client-ip=209.85.210.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Z4o2Ut4Q" Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-82cebbdbdccso2264835b3a.1 for ; Mon, 20 Apr 2026 19:51:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776739868; x=1777344668; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=9bRxYIOqSnJmWzxqs4bJD7O6X9Bp8SCddV3M/HzCCV8=; b=Z4o2Ut4QiCCb1LX6Gs7Vun54ARHPQAuToQt4NiG7Z7YemoOwl7PqngYF5IwVhoidoJ rNzzLlqThEs/g5273FnErQZ6FqaMwisINS4j2NpRprcZFR2RLnenrMP8nkLyg0q2sA+N oMMEeGn5tbw8JdEqc8FAdIiqImNog0p5Y+9LX1Ey3Kd74myxbesED1aH8FgWwoFJIFVc 6/DBFtAG+ibnNEJDRnccuoBR1M41G/nUhHK2p8ZhUHPA37x2q1J5GWROTAjqhQpVTIUQ Q2iv1q5LovHWx05BPaVIue9fxUosCiD4LZK2/bCjo7LMkxAg4DDxl+L48qZ63yN7itSW ON7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776739868; x=1777344668; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=9bRxYIOqSnJmWzxqs4bJD7O6X9Bp8SCddV3M/HzCCV8=; b=JU3feVxL8ISM2Yn7rZwaug2xqrRI8c2gPka90hlFj7g4+aptMPIjLBAiptUtYCv0uJ 2mfuwKmmWlzQLXEZfWH5UM0GQ6QHs0P33TcvH7arlBLZYhtRp3pytQJe6rrNZX7YyCit 306cQUFDVbHmQaQTio4hAUNKfcgI9ZuzOgO2zJu2NpxCh1yQRm9Dosj4L7XxYSnpLafY /JRLo9tS1jhHg2yEfZrRzz903QBtp/euIX+wfZtWL9dwIMDOwHjyKc7rq5kP8RcUKXO5 iQGq0sfV06vWI7fxjcYMnrHcSOrgyrgg1rLOJuUd06VczOAAHMAza7aqF0q5Dld/bVi/ ZrRQ== X-Forwarded-Encrypted: i=1; AFNElJ/CMGFbRROhI2kFoJayOZmPZvY6kRaCFrj5Fj1Tfq8cnML8LugAhhh4sd1/eK5gWuq6fjphMTZidrBUtKU=@vger.kernel.org X-Gm-Message-State: AOJu0YzBVnlfrjF/PIc2T/3kjj5df/b6Hw6sSNv2D94qc39G3aXOo0iI v2Qew4v4UYLx6ELYheBntU2gXuLrva0TeXRKN8yjh0OcGUDoL28GqnidpAO+Ow== X-Gm-Gg: AeBDiesNDf6IunsAspcYqP4ZhT90GGYGXC6qNFX0Nk+K66EJniYhFmCZUSZ0NUTcYf/ deZjpnVwogpJMW90bNYY+JPETo8jjfnyOg1rbAzP/2jfuoq4gXs+QqWgXxK7wV9i1kZpjWmNbOT 3TDE/C3xrCF+cTHC/dih7epk3z+oF5b2lKZbUgdFoDEO/LELYh/LEXgRsXFxlPKHicVGghmVrDZ zWR2chnjZZ5t5TsoUasxVz62eCaq2ak4T2n3Rmn37Emw7aPiIQoWIzflx9Sh1ora2iOI4Ckk0mT Eosd6HbploUqSIzVnaWafQ136jy3PjZMgLSVcVv6LpK4l1TTAGVkDPBSHc9osGqWV0o7ADQvSwQ XA0R0yGNE0EY76a9Zz8MTVC2WUwwVOGUrTlJYimy0HVU+F/RKJX+Uhea0iqxjB4llKCk1gmPxE0 fb/zRNNeiam5HT0LR8s0RRmIhjd49T4oiq5Q== X-Received: by 2002:a05:6a00:2190:b0:82a:76ab:3279 with SMTP id d2e1a72fcca58-82f8b32345emr12563208b3a.4.1776739868186; Mon, 20 Apr 2026 19:51:08 -0700 (PDT) Received: from localhost ([2001:19f0:8001:1b2d:5400:5ff:fefa:a95d]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8e9d9a1csm12822882b3a.20.2026.04.20.19.51.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 19:51:07 -0700 (PDT) From: Inochi Amaoto To: Ulf Hansson , Karol Gugala , Mateusz Holenko , Gabriel Somlo , Joel Stanley , Andy Shevchenko , Maciej Dudek , Kamil Rakoczy Cc: Inochi Amaoto , linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org, Yixun Lan , Longbin Li Subject: [PATCH] mmc: litex_mmc: Set mandatory idle clocks before CMD0 Date: Tue, 21 Apr 2026 10:50:51 +0800 Message-ID: <20260421025052.755471-1-inochiama@gmail.com> X-Mailer: git-send-email 2.53.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The litex_mmc driver assumes the card is already probed in the BIOS and skip the phy initialization. This will cause the command fail like the following when the old card is unplugged and then insert a new card: [ 62.923593] litex-mmc f0004000.mmc: Command (cmd 8) error, status -110 [ 62.949717] litex-mmc f0004000.mmc: Command (cmd 55) error, status -110 [ 62.976606] litex-mmc f0004000.mmc: Command (cmd 55) error, status -110 [ 63.002516] litex-mmc f0004000.mmc: Command (cmd 55) error, status -110 [ 63.028442] litex-mmc f0004000.mmc: Command (cmd 55) error, status -110 Add required clock settings and initialization for the CMD 0, so it can probe the new card. Fixes: 92e099104729 ("mmc: Add driver for LiteX's LiteSDCard interface") Signed-off-by: Inochi Amaoto --- drivers/mmc/host/litex_mmc.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/mmc/host/litex_mmc.c b/drivers/mmc/host/litex_mmc.c index d2f19c2dc673..dde9b491a320 100644 --- a/drivers/mmc/host/litex_mmc.c +++ b/drivers/mmc/host/litex_mmc.c @@ -68,6 +68,9 @@ #define SD_SLEEP_US 5 #define SD_TIMEOUT_US 20000 =20 +#define SD_INIT_DELAY_US 1000 +#define SD_INIT_CLK_HZ 400000 + #define SDIRQ_CARD_DETECT 1 #define SDIRQ_SD_TO_MEM_DONE 2 #define SDIRQ_MEM_TO_SD_DONE 4 @@ -99,6 +102,8 @@ struct litex_mmc_host { bool app_cmd; }; =20 +static void litex_mmc_setclk(struct litex_mmc_host *host, unsigned int fre= q); + static int litex_mmc_sdcard_wait_done(void __iomem *reg, struct device *de= v) { u8 evt; @@ -128,6 +133,12 @@ static int litex_mmc_send_cmd(struct litex_mmc_host *h= ost, int ret; u8 evt; =20 + if (cmd =3D=3D MMC_GO_IDLE_STATE) { + litex_mmc_setclk(host, SD_INIT_CLK_HZ); + litex_write8(host->sdphy + LITEX_PHY_INITIALIZE, 1); + udelay(SD_INIT_DELAY_US); + } + litex_write32(host->sdcore + LITEX_CORE_CMDARG, arg); litex_write32(host->sdcore + LITEX_CORE_CMDCMD, cmd << 8 | transfer << 5 | response_len); --=20 2.53.0