From nobody Fri Jun 19 08:41:08 2026 Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) (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 DFDA135AC1D for ; Sun, 26 Apr 2026 11:20:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777202427; cv=none; b=musBIsxRTt4QR+jtSL84SZNELIJnRAMB8jSvVge19CYgabr2QpOUlOZuTN5WKfwikXSUf8joK4pj9BXtNeBNXA5lEvmQpADeHs2gyQzI5v6YsbhcD1sXFS23EmifGEEj366j6gHmI2cYX25fIt2zA1/y5/fvwvQNZ2ixV+HcQRc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777202427; c=relaxed/simple; bh=bG2zBrY3qw0s2P1gYnpnNoX+lHQeviL5Du1IZaWyE3Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AzhTUC9gKf9yqx1g6GIEXZKcN+AT43t/tWQs2XIW65LA7kS++mtyfQQ+DYiR6uZhuON80gyl/LFnQ2rkeZk6oGmKeA9nZ0LnOSvJlGpyGbzopqWWgX9AdJ6jgEb2yuNwYfOj3W0w+8wTJOZX1ZiqnBLgIgCVTl4YR87RvjPHotc= 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=OfXOMUPR; arc=none smtp.client-ip=209.85.216.46 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="OfXOMUPR" Received: by mail-pj1-f46.google.com with SMTP id 98e67ed59e1d1-35da01fc0baso5841799a91.2 for ; Sun, 26 Apr 2026 04:20:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777202425; x=1777807225; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4wdo3ksYthQDcmZhSVKG64aQtgARx5zLRRRD/vMA4ac=; b=OfXOMUPRH7M4KQjzUWWeqPPODQsGGNVv9t0JDnrA3v91Xjm7of2+Mm9STuh/VjJTHt 5vBF6NnWcitavjFvI0ZUBOw42fhzQmMKkLK4G22XBZt9q5syYRmx23jk9Ody/rwHvXJf rpxCZwyFccml+C3sSp6o/n0ncZ0alc3Ma+9/aaFkMO/8xAgt7m8niVuPQZAGW1qMGilf vT6fStcoOOuVkS6hOuos4KIQHU36+RFsueUxTN3Yhx5boLi+l2YVHwx/JGJzthe7vC5+ Wbp9coh6F0k63bVec067Bs5LOndobri4tuGt+6nLOjALbzAavndT+CbyKr5S5Dgoxgmf B7Hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777202425; x=1777807225; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=4wdo3ksYthQDcmZhSVKG64aQtgARx5zLRRRD/vMA4ac=; b=KZDhs1Oy5mk4imvfX1rjcYekgIOjTFQZK//tfJ6dxwpXiJkVnu5nQd2Z0gxLQ7Ncuf 6dLqx1/BGO/UhxI0VCx56dHwxMWyF2+4NhxqH0kPGn6smYlo4/BGF5m0N7LiN6mvxqhz lKeXYPXNbAyZUqLCRk+3N6i7Q3PqERMaRMTARX3EODmtvQFppUeQEpJVFbZ9GDwrANjh AEjqbRRxakvzraX9uYCnrW5/ociNATlOnMk2bbpywcGCpsb4TG5kFWCZbRtUU2pQgJ5d a5za0nRuQW6Xk2mBP0KuqjG4DKYhEKprypj2Me8/PHV5q9uqA6jR0+1SuZo4QaqB9mBp aFtA== X-Forwarded-Encrypted: i=1; AFNElJ/d3bz/QgDapWtEpWrV+m2LTAMaAt2kpRd114EodD79atKrV6+CUTObD2HjRmehj9ZKrmGMbXAaiTtejmE=@vger.kernel.org X-Gm-Message-State: AOJu0YxgW2IbPOUafX1sp7HBNKn99X+po2jrEHDFK/+ISC/oFK1ANsfT 3hB2v61RdhVJZnliDHWFk14kTb0MSfkKHUiNO79a2b1ynkGorHUOLaLo X-Gm-Gg: AeBDiesD4YMm/17QOJBK9r2cSN/M39a/mifDpqb2LFLMWzDIlxlywjs1ZzNOkqADx3K 3EMj3zwRKnv7Uo3IG2Te0Eei1nwBfdNWI/15px4FNmc0lR7InKrVc4yt/aEGzULlveOumE+8C1L Gq4RkKv2TPT2Wfz+hfdI/bM7v9kA52fzB61cpdDypy5d4vPiBiaB+bAfq3eDOsxo1O0+dVAkGI5 eZHtQgHX2kBOKys6BmU7bHY697k6tV2TXXODM3iYzfAUHmErAcF9nJMzty9yV1X2hajvy0ZJQrK U1rVn/U8NM2ce42Kb73h3Sd8E0dJEF2uKbZsuEN3FcwWasnKx5L2a+lw92b6nC2xq3O4mRzBlJq kWbiGBNNq0DCRIavZ6VIli8aEGsiJ9YcjhPvXR41KE34Yi/vj8VuXdVk3eJh/kVwsS6gLFq5WDS wV00XU3scvu5CUUfzl1Xu6deHJQbX35iqGjg== X-Received: by 2002:a17:90b:4b44:b0:361:3224:2f65 with SMTP id 98e67ed59e1d1-361403bdd07mr39297040a91.3.1777202425203; Sun, 26 Apr 2026 04:20:25 -0700 (PDT) Received: from localhost ([2001:19f0:8001:1b2d:5400:5ff:fefa:a95d]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-361410bac6dsm28298544a91.14.2026.04.26.04.20.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 04:20:24 -0700 (PDT) From: Inochi Amaoto To: Ulf Hansson , Karol Gugala , Mateusz Holenko , Gabriel Somlo , Joel Stanley , Paul Mackerras , Maciej Dudek , Andy Shevchenko Cc: Inochi Amaoto , linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org, Yixun Lan , Longbin Li Subject: [PATCH v3 1/2] mmc: litex_mmc: Move litex_mmc_setclk() to bottom for reuse Date: Sun, 26 Apr 2026 19:20:14 +0800 Message-ID: <20260426112016.1370929-2-inochiama@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260426112016.1370929-1-inochiama@gmail.com> References: <20260426112016.1370929-1-inochiama@gmail.com> 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" Move the litex_mmc_setclk() to the bottom of the driver, this function is needed to set the idle clock for CMD0 Signed-off-by: Inochi Amaoto Reviewed-by: Gabriel Somlo --- drivers/mmc/host/litex_mmc.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/drivers/mmc/host/litex_mmc.c b/drivers/mmc/host/litex_mmc.c index d2f19c2dc673..a8d9c0ece16a 100644 --- a/drivers/mmc/host/litex_mmc.c +++ b/drivers/mmc/host/litex_mmc.c @@ -99,6 +99,20 @@ struct litex_mmc_host { bool app_cmd; }; =20 +static void litex_mmc_setclk(struct litex_mmc_host *host, unsigned int fre= q) +{ + struct device *dev =3D mmc_dev(host->mmc); + u32 div; + + div =3D freq ? host->ref_clk / freq : 256U; + div =3D roundup_pow_of_two(div); + div =3D clamp(div, 2U, 256U); + dev_dbg(dev, "sd_clk_freq=3D%d: set to %d via div=3D%d\n", + freq, host->ref_clk / div, div); + litex_write16(host->sdphy + LITEX_PHY_CLOCKERDIV, div); + host->sd_clk =3D freq; +} + static int litex_mmc_sdcard_wait_done(void __iomem *reg, struct device *de= v) { u8 evt; @@ -431,20 +445,6 @@ static void litex_mmc_request(struct mmc_host *mmc, st= ruct mmc_request *mrq) mmc_request_done(mmc, mrq); } =20 -static void litex_mmc_setclk(struct litex_mmc_host *host, unsigned int fre= q) -{ - struct device *dev =3D mmc_dev(host->mmc); - u32 div; - - div =3D freq ? host->ref_clk / freq : 256U; - div =3D roundup_pow_of_two(div); - div =3D clamp(div, 2U, 256U); - dev_dbg(dev, "sd_clk_freq=3D%d: set to %d via div=3D%d\n", - freq, host->ref_clk / div, div); - litex_write16(host->sdphy + LITEX_PHY_CLOCKERDIV, div); - host->sd_clk =3D freq; -} - static void litex_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) { struct litex_mmc_host *host =3D mmc_priv(mmc); --=20 2.54.0 From nobody Fri Jun 19 08:41:08 2026 Received: from mail-pg1-f175.google.com (mail-pg1-f175.google.com [209.85.215.175]) (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 19F1535DA60 for ; Sun, 26 Apr 2026 11:20:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777202429; cv=none; b=uQJZXOJhorLPs0SeMDmgFCMc7h+HPmAMT6zzyw6n1uYGWV65pngBNirvJB1yszSfZyPbN1UvWw8IcFAMB8DaLta6W9TeteMy916JmdKlZFM3Uhb1brPSXkQtO3Fi8nmOq7z0OPJSjo43XnScsr7YsA9kYPfHdhG1J9R3oUgE2vI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777202429; c=relaxed/simple; bh=JqbJLk14vCGlsCWRweRgQshxSFPu/HWhxsqxliRveAI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sg2P+z+poQEibbw69oKdF8oVmmiJPR2knd0Guxx+PhzOtialxMouwQE/jcTOWTTat2SJbTQ9kGgppxiUJ+ihDcv0O4L1b6XbpJ3D1Y6/zaQcrXDybN/vESK+Ma+r6jan0ZmNgRVeJiGn6AFWLs/V5uCuwpjGXR5P8/4/+njz1pY= 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=qJFUzOdU; arc=none smtp.client-ip=209.85.215.175 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="qJFUzOdU" Received: by mail-pg1-f175.google.com with SMTP id 41be03b00d2f7-c6e2355739dso3664084a12.2 for ; Sun, 26 Apr 2026 04:20:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777202427; x=1777807227; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UO2VqzqBzg530NbLwBe44sSvOnp4fu4zqGNZVGfqzM0=; b=qJFUzOdUc9/WlGI138J+orbq99koLB3XZx2J91K05Uf11oI37pyqHoR26xbHD4ASOQ moQS+Kj2iPfSrqZJ1TqvK6BeCpCA+hZZh6cPfSiZfaoEF4ADu9Xl3B7r83FUQ4W7kf+V En6bWA1jPd5SOE1tjoCxq5OPL+gfAZqWqip9gUESVTLipSLKdSNVuz1NEFVDbZ05+PZS 0rWRnM8yKJ7nIyIUggVvi9hiEV0TyT2WBfGdGAlGFAh9SsyOZKtAjT5eWkjw3f7OEreK PGJ/mv9tDoFYN9BZoZgDtn9pE0y2sFr0CFOCe2b64onVq1OODD+Rz5fK9Dp8U4G9bBlL chHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777202427; x=1777807227; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=UO2VqzqBzg530NbLwBe44sSvOnp4fu4zqGNZVGfqzM0=; b=YT6/XfCi7eq5Q+XVu/DzfS2kG3C7WeYFiJ+wMYUfePKnDs4puleiyY3RReOOp93Dlm jAPoSeFZu6usy0OAFbuJoMGmqUv2G/HcNfMZi3Q+bnpo/+piZiW+XgZ83nV9iTIIgojs lLBM0T2tRoqpBbKwDNDU6tVxgmwNDnmxCSrKAQocDSR5vdEvZ4s6K85Qo99RH1MF+2/C STdrz/T6O0a0gR6IUMwejQXwgSjW4+JRoUhVmMGG+twCt8nwlbMBr5IVjdgoO3pdGry3 81bgel9bAhVqa/JvIsmoi7iAM3ctPNYM2RCUYw3ADT9JZQjbZukFg6IPv4ar2ylb4ZnQ HOIA== X-Forwarded-Encrypted: i=1; AFNElJ/DAf2ocknOEwVQbL7+3TP09GgLt2QA7Z2vwjj5ynvbWG64/9ZUZJfwY5TT6kv1oaF81lCSMmJm4Pn5C68=@vger.kernel.org X-Gm-Message-State: AOJu0YxPdKEQlJpBVZ+UBoD39Js0AA+LDC/+vfRQ2iDXGdhBUvoWyzNM Smq55PQUgCYokOU7n0X1q7N6T7kOxZQ6WdmCryyEBXB3vezJkRRgjbl6 X-Gm-Gg: AeBDievW8pgCrI8MnU/WqsToE4EVCWHuylV7tdLMd2nQncNwHIqTTo6j4N9k/y1ecyN omKKJj41y+ZhBvEJjztqCF2+rxHa2z7bFZ4jegJFL5qIEYHKA9yIb2aNkOI/yAZk+A/xB3OhIwO aEPtmBsraRTjufmKOV4eebjNRqSy7vq+u2petz4zIhmLkuOPuOzBKQ0LTh/fyjYhPKCsyrprb8X QO0FM51dLvjut8pPPJs7BAfwD+83PNJLFt4vtNKHizn4qVWpwnY9eYDiZQWbZ818rgWc5q9SONI qPZr8tb0He8oSoG2lF+eJS4YZQ2dhImTR8sqLq2IJhgOTwtuWKHVlhypR3eFXxdPykHNJOQ2AR+ 0yuRsgEZJAUuNCzdVN6xOohwsrmCvvgiq9huobWNRkUFebaOaerbQOJTOWuJyGrAu2w1JV9pX// bLIBHTPiDBR4vHPmEHu4HfvlSIkXNSHccEIA== X-Received: by 2002:a17:902:d592:b0:2b0:ccad:de1a with SMTP id d9443c01a7336-2b5f9f3aa58mr383468695ad.30.1777202427355; Sun, 26 Apr 2026 04:20:27 -0700 (PDT) Received: from localhost ([2001:19f0:8001:1b2d:5400:5ff:fefa:a95d]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fa9ff98csm275607105ad.3.2026.04.26.04.20.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 04:20:27 -0700 (PDT) From: Inochi Amaoto To: Ulf Hansson , Karol Gugala , Mateusz Holenko , Gabriel Somlo , Joel Stanley , Paul Mackerras , Maciej Dudek , Andy Shevchenko Cc: Inochi Amaoto , linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org, Yixun Lan , Longbin Li Subject: [PATCH v3 2/2] mmc: litex_mmc: Set mandatory idle clocks before CMD0 Date: Sun, 26 Apr 2026 19:20:15 +0800 Message-ID: <20260426112016.1370929-3-inochiama@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260426112016.1370929-1-inochiama@gmail.com> References: <20260426112016.1370929-1-inochiama@gmail.com> 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 Reviewed-by: Gabriel Somlo --- drivers/mmc/host/litex_mmc.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/mmc/host/litex_mmc.c b/drivers/mmc/host/litex_mmc.c index a8d9c0ece16a..c984398d0803 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 @@ -142,6 +145,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); + 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); --=20 2.54.0