From nobody Mon May 25 08:11:55 2026 Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) (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 73529298CA5 for ; Sun, 17 May 2026 01:53:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778982838; cv=none; b=uqEMGJUcOIAcGap1CsnzQzoun7aG5pFXwjtECheMzyuQ8F8wVCYihDWN+XCilD/+c4MiRjcxs1EJ6UPwCfpyueoVuNSPW+YrVkNxAU//2aAgHOSKE3SKoVGNfDm9ArNiXvWsP4MRcsjeCSSTlUGssskPev9AmkSmQN0dg57xsRQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778982838; c=relaxed/simple; bh=JaVXWMrRZV5aY6IzFGI2uXhAZRPpxXE3JfC0e85gfgc=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=PPJ9L2pJoYawCAhCvnXAg19s4iO37xb11S/7GEEgOA4Zw0pzU2rInzukaLioppO+xyOXyMkp/Fc7RpVkvKoq9GpZjkY+U7KYOJcItQR4yvJr6pYEwvJeBhDNsoar72FVf1KaHOM2bsTgFvb7n43ye7d04w5rLBVOGzf/+Kdi/2E= 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=OH8k5TG3; arc=none smtp.client-ip=209.85.210.171 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="OH8k5TG3" Received: by mail-pf1-f171.google.com with SMTP id d2e1a72fcca58-82fbf5d4dc2so849639b3a.1 for ; Sat, 16 May 2026 18:53:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778982837; x=1779587637; 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=ruPNhgJfwlBNQX6sl8b5PNgkfqKs2p0CuWeAsFczdrg=; b=OH8k5TG3T8UGfXDx4SmvdsPlsedEgfAIQxA7e2WoRyLjn7094cp9WvxbLQWa4WxbYU ASvu5SxGqf7lEgNDIYAiLmr3cY17ZxOynpaVvQ0f7kB1XLGQqTM2mz+xdT6q7iEAz3Ob 6uB8NxjJOqo4xPLiQ9bOqCvtm933UQ0xcRb03ZIvUAnGNMwxaZywQoPgJ1ITOlQw8nBx 18U6YDwkIPYRpvimB9HB6MI7nrgVyiEL4jJ+3gxvwk4tx4z+pJCwr+17igMsxBfQrvQ6 /WANxylw86PFvyRj2jiBarUQFenSQVtgCulUvfedwUQNvnW+LDw8hmls8kRxQk9Mas9+ ktkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778982837; x=1779587637; 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=ruPNhgJfwlBNQX6sl8b5PNgkfqKs2p0CuWeAsFczdrg=; b=asF7UIsbBL5FMTEy/x+6PLYvG+jJsVo4YuQjyTRR69wJfpyrdXaAU28c5F2i/s7/Mx bmq+5ggCmA1CaQnsZgCksLXaLTM4M1y1JxZC6hT8iUzjZsxQj85qVRCvNlGrzQdxbHDi XR5vPdJroNGDhpmtYuhcBmXAQYTbpXYMJ2GykrhSp0V/Uhqyxe01H6VY0JXkCd3T/1uA m0JsMU+uEDsn7pyUkWAmXsZbfKtOCGvh6MYhw1ZZONPub67MN3D65nVXsX6jx7tSwOTb zdM0quCoLyPBTL+QXH5wSDD4ykVQdaerhcXBM/Jo+YJM4IW29uqt+belkHjeUPyhuwhN eWug== X-Forwarded-Encrypted: i=1; AFNElJ9hFvoRSrjgVnO5vdELM5u7rTRc1x9o142iqEUSOnakclhgbRln65HS+fzfvDd2DrkLuJ+vRYg2z6Tdmpo=@vger.kernel.org X-Gm-Message-State: AOJu0YwysatNF8PyUHob4LraWf+hmJVOyeV72kMsmN7QKNtjfO2BMmTa lg4GWWvA+QLCl/72j9XOxmKgUwDbzN73W8ynaIoHs07VTIejy9T4uQDfwFcjqZq4 X-Gm-Gg: Acq92OEE8/tzkeD88Y5opYbF51mxiCq7YKXf7tKzsIdmWsAUHWlS7xpdkSukaeU3lvA QOEhkbzyBeUNQ+uk69gnoj3jbKANxLg+n0qtoJPNsVXrBKNZOk3WeoxX1g718pRx1R/Jguhed1u jgl9XzIus9tTew7le5WNsa7XxgoGjzOSWScMhqgh+s1VsQGpigv2ufugg1Pd4sNJJx8d4mUgZC+ usZcSjSuzYIdVkspUBzEPMOxus8LAU6yZFXkqcrKxSvHMd9nLYbKL8EdNXPUdr0jU+zCD6PoTrl 4iM3ndgSyTrlc0S9YbCohygqgNvjckX8qpkLlpIuTq6tc6YVwaE0/rLsHuRyTkmXC/wbhRK2xFa 2Rmb/+rUwHZ+Xlo49eXOfojrA+5NxqV6OK7EeG+WhZ9Wu8LIokEgxkTrssFnCdJnJbltiqQ7DYi pMReuM2Ooa1EHl9qvVNipGKQA= X-Received: by 2002:a05:6a00:12e7:b0:821:7d7e:41cd with SMTP id d2e1a72fcca58-83f33aeb06dmr10650318b3a.10.1778982836830; Sat, 16 May 2026 18:53:56 -0700 (PDT) Received: from localhost ([2001:19f0:8001:1b2d:5400:5ff:fefa:a95d]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19664a59sm10351579b3a.1.2026.05.16.18.53.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 18:53:56 -0700 (PDT) From: Inochi Amaoto To: Ulf Hansson , Karol Gugala , Mateusz Holenko , Gabriel Somlo , Joel Stanley , Kamil Rakoczy , Andy Shevchenko Cc: Inochi Amaoto , linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org, Yixun Lan , Longbin Li Subject: [PATCH v4] mmc: litex_mmc: Set mandatory idle clocks before CMD0 Date: Sun, 17 May 2026 09:53:23 +0800 Message-ID: <20260517015323.264179-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 --- Changed from v3: - https://lore.kernel.org/linux-mmc/20260426112016.1370929-1-inochiama@gmai= l.com/ 1. Remove patch 1: mmc: litex_mmc: Move litex_mmc_setclk() to bottom for re= use 2. Use set_ios() callback to apply the clock change. Changed from v2: - https://lore.kernel.org/linux-mmc/20260424013615.470325-1-inochiama@gmail= .com/ 1. Remove the added function forward reference and add a new patch for moving litex_mmc_setclk() function Change from v1: - https://lore.kernel.org/linux-mmc/20260421025052.755471-1-inochiama@gmail= .com/ 1. use fsleep to replace udelay Inochi Amaoto (2): mmc: litex_mmc: Move litex_mmc_setclk() to bottom for reuse mmc: litex_mmc: Set mandatory idle clocks before CMD0 drivers/mmc/host/litex_mmc.c | 37 ++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) --- 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..65d5c728f536 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 @@ -449,6 +452,9 @@ static void litex_mmc_set_ios(struct mmc_host *mmc, str= uct mmc_ios *ios) { struct litex_mmc_host *host =3D mmc_priv(mmc); + if (ios->chip_select =3D=3D MMC_CS_HIGH) + ios->clock =3D SD_INIT_CLK_HZ; + /* * NOTE: Ignore any ios->bus_width updates; they occur right after * the mmc core sends its own acmd6 bus-width change notification, @@ -459,6 +465,11 @@ static void litex_mmc_set_ios(struct mmc_host *mmc, st= ruct mmc_ios *ios) /* Update sd_clk */ if (ios->clock !=3D host->sd_clk) litex_mmc_setclk(host, ios->clock); + + if (ios->chip_select =3D=3D MMC_CS_HIGH) { + litex_write8(host->sdphy + LITEX_PHY_INITIALIZE, 1); + fsleep(SD_INIT_DELAY_US); + } } static const struct mmc_host_ops litex_mmc_ops =3D { -- 2.54.0