From nobody Fri Jun 19 08:02:31 2026 Received: from mail-pg1-f182.google.com (mail-pg1-f182.google.com [209.85.215.182]) (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 78A82242925 for ; Fri, 24 Apr 2026 01:36:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776994595; cv=none; b=INHXHF+ylbrEM8ESV59sliYU1H5cy690xUUlveZ3TS2dfi9ZrOv5DY8dx2TS0KFLaSrbnZ960HyeOGPIGNBorspnP8rHqnOSAVOgRg3ryiR9nMKYMFiJDSwMFgM/KgLkSvVv00Sq9Mjf1B+bU4boM/IiSeFxNUSRbJPkAj6QEnI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776994595; c=relaxed/simple; bh=SULlwrLYeHAjqGLk9FtKoUcVp0Tb9Q3WwZW1/0ymmyE=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=jcORcKnvVHfiggZ8ar+R6tTRCNWCJNiuMFeTIODjIVMo4KSskl8lQs9+01Tqqmcglbs3q9moWxaerMCdnlJb7vvtM3/XMsdUb531wWdb4RHnGoNjYZCyMoqla2BJf0Ke4FDbmcXXHWetpBGCeaON1fzSWfYXMf8zPXJaB2Ucjmg= 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=JJkGFlhe; arc=none smtp.client-ip=209.85.215.182 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="JJkGFlhe" Received: by mail-pg1-f182.google.com with SMTP id 41be03b00d2f7-c79506f3c40so2657419a12.1 for ; Thu, 23 Apr 2026 18:36:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776994594; x=1777599394; 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=dSBISmHMXjpT1nha7+dc7Az7PrdCp45jgNF07Auzfbs=; b=JJkGFlhezAj7vmsTfH+nDK9vkM2RJPS5ux7Zo4etSM9im6I/MTsgyG7QwedtP9x8Mv Ty+UZnLqIFr1j+pfvcPvINVpWquM2vkQsAomyalnikwGn+AgD62dm6hQ1288TPro+D1B ocKsiuMNkWwrSVKdrjUXtruc2/hclMCt6EckVUvi3gK2w2NXrZGHto2f2X9QnRX6sdwG cjur3bDGvLCI6FXogg3XE/eN7JISfS4UTjbEZKv8sN2BJXcVnjf4Lqz/A8VWMYa+xiUS LvXWsTxBqlx3U3hFpkITQrgwUiijE78F1Syvwo2Y/7taH3SeVkFA4kMrpj7sXQpUs4rO BAKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776994594; x=1777599394; 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=dSBISmHMXjpT1nha7+dc7Az7PrdCp45jgNF07Auzfbs=; b=Ix6r9WipQ2VarK018xOJHSX20HWnEyhBC3aQYNt60jDvDW8LdEXckWLJQQOWxBd93Y fSMFob5PoZcysRfTWYzHxj3ZM6T6o/aej/MzwFXAM/OS3btsPGtthO//VCiPuoMrXkXv XkHLvkl1jCQ481V0kwVXdZ5lX6Ce83jEN5ROT4VGbbu3gH7L/3ZpMyuyComCflw6aCxH MsvlSojeBzMkRQ1MA5VEg1jkZOAiQtSZpxGCtvlwIACwhaIs8pfSNLfmxFpnSY/as7Qz sL5rQzi+C6Yxsutk5Fm6oDcJggPp0XKmnTSt1sCbQPyMLBdgeCyGVbqeBobS9z+3wd4l nKMw== X-Forwarded-Encrypted: i=1; AFNElJ9LhYZgDgYSHkvHr/urD5TSrtN9XrOyunnIjEP3j55RMPpJua4UdsfMZr+cRKrbPE2QUfp8g/sxnADVk3M=@vger.kernel.org X-Gm-Message-State: AOJu0Yz5LIEz6+GllFTPpRvLKxCTtkF8CRcXX5WYeBjKNY1QMhhwxJ2F sZTI+ZqVQptZqy50QR7jOD7SB8qKZWt6Kjj19rsqFaWowdZZI3OBGz1w X-Gm-Gg: AeBDiesWp3JGxWF7GkceA3Ob06iBYxyds/uenHwPTVvCwhQijy2HBV1A4w5V1qmaWr7 voxUGi5shGLwFCzOYK5KMIqBGxmXjnX1wqArqEQDKOF7/tzpRXKH0bAEBLBYikZEUK9xeODbXFx GqvKq2K03bJHmPPLevjdhqKcbuhnr2Lw9ABIV29TFZ54fu2oU1kgaO19vk/7R8uajZtZ6W1Mv5V khdQ3G2X2WC4tehDUYj12AoXK2/wVpYvw1REEBA6LKFnc+XKAuLMwgYeicNOrxq30WUBphl0lDy 4jZbP8IjrkLseTBUfRM3TNJbgmaX4j3g6Vg1eUyM7r2NdzlCiwik1QzHm32n3etc9kA0yrTQKmy hpBOnUS8m3rfBDZo9bIfrF8pxB+GxBA7zODieALxke0+t5AY4OHxrPU51ZX1oH9wLcEz23EJgCQ cxi+WYHDXCTd2If/aWdlKa6XbyW65wjR5O2A== X-Received: by 2002:a05:6a20:734f:b0:3a1:90fd:dcd6 with SMTP id adf61e73a8af0-3a190fdf242mr24150696637.31.1776994593698; Thu, 23 Apr 2026 18:36:33 -0700 (PDT) Received: from localhost ([2001:19f0:8001:1b2d:5400:5ff:fefa:a95d]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c797702faaesm16187056a12.23.2026.04.23.18.36.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 18:36:33 -0700 (PDT) From: Inochi Amaoto To: Ulf Hansson , Karol Gugala , Mateusz Holenko , Gabriel Somlo , Joel Stanley , Kamil Rakoczy , Paul Mackerras , Andy Shevchenko Cc: Inochi Amaoto , linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org, Yixun Lan , Longbin Li Subject: [PATCH v2] mmc: litex_mmc: Set mandatory idle clocks before CMD0 Date: Fri, 24 Apr 2026 09:36:14 +0800 Message-ID: <20260424013615.470325-1-inochiama@gmail.com> X-Mailer: git-send-email 2.54.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 --- Change from v1: - https://lore.kernel.org/linux-mmc/20260421025052.755471-1-inochiama@gmail= .com/ 1. use fsleep to replace udelay --- 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..ac0b47604c02 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 +#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; }; +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; + if (cmd =3D=3D MMC_GO_IDLE_STATE) { + litex_mmc_setclk(host, SD_INIT_CLK_HZ); + litex_write8(host->sdphy + LITEX_PHY_INITIALIZE, 1); + fsleep(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); -- 2.54.0