From nobody Sun May 24 21:38:03 2026 Received: from mail-pf1-f181.google.com (mail-pf1-f181.google.com [209.85.210.181]) (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 4EE90399D02 for ; Thu, 21 May 2026 07:22:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779348127; cv=none; b=XQOisPJ72aJBa+HhnTCoBrZCaiKRpArdtaKPLMTl6ZDvZoVflwDs1v/Ln2Js4Q6LnK0lGgJP3AmUN4i4FB3RAE/SVV91LT6eSGFbuaCM+SKkIsBvsLK/iSCCFt0n79EBn7Mkr8rqS63+PV81cW5FaF7NIcWyuy1OgQwJ3GedhLw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779348127; c=relaxed/simple; bh=s4R2Qr199Q0coUmKNOJQZtFnltSpVGAoB1aOSOudBX8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=bcFGl1N6nZKRGqhyl36LRuSHUzU9rpeai6/18eNDScE0/AJt4jdpItZAe8h929Pkhui8u5Nb36bq78CEkWNtGtMAQR7Jdrp7/CK4gRMHCap8UevhXnhV9hdHzmIfohKVy3gPftDSjRRvba47f4qmLvpVAUxCACvMhvIBgtc2kBA= 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=oj+XH5aE; arc=none smtp.client-ip=209.85.210.181 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="oj+XH5aE" Received: by mail-pf1-f181.google.com with SMTP id d2e1a72fcca58-8354461da74so2594295b3a.1 for ; Thu, 21 May 2026 00:22:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779348125; x=1779952925; 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=mxmsocRTSr0oM4XOAp/+uZK3GT7M6xq1xF4d1oUBSdc=; b=oj+XH5aEab6/JiVapGJmdZwtDx7qoS8mUMgzc7fj8vbbBZ3QvpYG5aTvJo4mhtTzm6 ZtIyXnK+LWqEbput21K0qJi2KoEeRNSD5HDCSTGYokbt+EUsF7k9yzl70BEduJ3aIgxd yK7Y0LKq1zJBSwb0AVOp598aziGSabm1fv/8Gwqo3s3sFUI54DvN3I54w0rwlLuEgISf 6TmzhA4lL/mWENAgAq3GOWmXho1vRi/ZwsjjtX9u0ZWQPtrUSgPLx+Oiob5fY/w40QOR D8pT1PrxkfFgYaGq4M9DVNLy0I3d0c/zc3Qt+jjGDdiTxM+a06eJJFcNVIpWgD5QuJRT oa6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779348125; x=1779952925; 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=mxmsocRTSr0oM4XOAp/+uZK3GT7M6xq1xF4d1oUBSdc=; b=j/oZA1N9mj5WBqWR+k7SFBNHMoUtjkrXODF6LM9h1u7fWdPAq48rEbMmGjEBy2CO9L /NGC80x8jyPKv9JNgztmii7Pzd7TaMkfNy+Bi+GZLzeSt9WfCuDuqO3iI/9aAL1SMm/D 2wlmdaAqVZ3wkcTNwcUT4J48unHsun7njNqT6LcYbdLQcNq7qL25qKhBcHgRCVEZ5GAk CzxNKpJMoggmi/lkTR7m7mMfwxLblrwSH7CzZ2Y8CMn1kkA14Y89qEJr8t9HDeOgzHh7 kY2RQ2gsINT3aHFcOIwu4WkN9FHODPbpPk6JX5Z7mN/F4QypAmL1gFxWE3uZFpwpNKQB iSbg== X-Forwarded-Encrypted: i=1; AFNElJ8dhNzbL9fempCJf0cHErJHFfr6QEAlMjUT7KTmr6Nu35yqiCJkRB7XkYaWSxSGr47PFQd0Bm2OasAYVfs=@vger.kernel.org X-Gm-Message-State: AOJu0YzdmYrCPkzD65NvwTLuhlwZwFAVfCZjgqE/rauEeyUKZO9OyTuV ffdGZzgtAvcvU5mOLJ5ioRQuDEP3Q9demkAP6152RKcAO/QC9xr73nrX X-Gm-Gg: Acq92OFBrYEmTw4gpj+xw66bwbUfxVPWnUeY4cug81Uz3Dv+zUABsKRYIXrYHj3PsRG NXyKCYFn/HNMsezPcPcL0trLmyDt/qdk+0n9coumvVtWMmLx0xGo01sHvsoC5cjsIgWjK7FG4/d Jg83Sx257sQ4/AO0itAH06Eo6rMLc+cTNiayPteZAbGdGnOuamYe19uY7vzrE+TFjCfB6KlzANg gZ/ggB+9bdqG5p8GFvtSrEK8INg7GdFBd4Zftz5HxdClh9ihH/CnllJZGFY5NR25fW25PsaWBZw LevDlU+Dc0MLI1tgqhGJPCqKPKSM50vdEwr1/fjKKleXGkXnqnpuaOeA8UhXo2YR1Amdm9mrHlu 3LHT4ovF288PFHBlQofPK4ecdv2bqvSXAJK4LFhyN606SLcaPFKlRhPRrtD7ARimCOZRr/rVVvK IFMsunSO44JAKX6JJMXJ/Rph8= X-Received: by 2002:a05:6a00:4501:b0:83f:250d:5ab with SMTP id d2e1a72fcca58-8414ac7a05emr1801583b3a.7.1779348125528; Thu, 21 May 2026 00:22:05 -0700 (PDT) Received: from localhost ([2001:19f0:8001:1b2d:5400:5ff:fefa:a95d]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84154a00089sm306760b3a.20.2026.05.21.00.22.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2026 00:22:05 -0700 (PDT) From: Inochi Amaoto To: Ulf Hansson , Karol Gugala , Mateusz Holenko , Gabriel Somlo , Joel Stanley , Maciej Dudek , Paul Mackerras Cc: Inochi Amaoto , linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org, Yixun Lan , Longbin Li Subject: [PATCH v5 1/2] mmc: litex_mmc: Use DIV_ROUND_UP for more accurate clock calculation Date: Thu, 21 May 2026 15:21:20 +0800 Message-ID: <20260521072122.1601215-2-inochiama@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260521072122.1601215-1-inochiama@gmail.com> References: <20260521072122.1601215-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 previous clock uses roundup_pow_of_two() to calculate the core clock frequency. It does not meet the actual hardware meaning. The actual frequency is calculated by "ref_clk / ((div >> 1) << 1)". Fix the clock divider calculation. 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 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/mmc/host/litex_mmc.c b/drivers/mmc/host/litex_mmc.c index d2f19c2dc673..52571bb17c61 100644 --- a/drivers/mmc/host/litex_mmc.c +++ b/drivers/mmc/host/litex_mmc.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -436,11 +437,10 @@ static void litex_mmc_setclk(struct litex_mmc_host *h= ost, unsigned int freq) struct device *dev =3D mmc_dev(host->mmc); u32 div; =20 - div =3D freq ? host->ref_clk / freq : 256U; - div =3D roundup_pow_of_two(div); + div =3D freq ? DIV_ROUND_UP(host->ref_clk, freq) : 256U; 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); + freq, host->ref_clk / ((div + 1) & ~1U), div); litex_write16(host->sdphy + LITEX_PHY_CLOCKERDIV, div); host->sd_clk =3D freq; } --=20 2.54.0 From nobody Sun May 24 21:38:03 2026 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.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 CEEAB39A800 for ; Thu, 21 May 2026 07:22:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779348130; cv=none; b=EfmAVA2K6UiSq1GmESGOrA7mGzsjeB+Zleu1AFYzYwtSYfXI69xjLLLIG8Lf2uu+mofTJYdG1dZLxkHValrYvb3sllcEBuuWhJE523SWoa4rvmegKVBxC3Q2bWt/JsgGRYvtfckJDsbpvGms3rsNGgjNLl8/juGSfj8p2gpEqqU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779348130; c=relaxed/simple; bh=Mw2AGjPcnmuHHZCQ0a+KC554jOJiVIjRahnR6xrADfU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ihtAN7qcvF6panXSlDuVmRXMzyGcXoQOsJBgp6FTUNAsqCf+LW7wYr6ZJeAg3hcM1FEULmFW1xF4Ynw2zsiZLt+QY2gbt2pSfuWetbGTZu2dOt+DGoC6WIH/CNtTCHVLw5g3f7FnrYImBoFOiV9pXkWp4HPUYZGlQKpwR3VuBPk= 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=EmK5ZyfN; arc=none smtp.client-ip=209.85.214.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="EmK5ZyfN" Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-2b788a98557so35004785ad.2 for ; Thu, 21 May 2026 00:22:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779348128; x=1779952928; 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=iTYqbJYJ9tS837Ijwhb4D+xEtAeHHmkjjGBTYP1lfQc=; b=EmK5ZyfNLnIGKeUeIZt2awabvzjF/bHHXaKH0f2T1cDOpruOuTRQ/aghW1y7mUbYn1 8bIQc8fU1HvvpXvE8nVs5TmVxkULRY3pej/bt1DqYlku8rwdvVOWyXAi2u0EP+eUV6T6 vIHWa1jQeVc9vYyIKFCt1Kpspn1drRZiJ4cK62DauW2sqjQCXNmoXJ8cKNTAwj4Kb7II VfZdGUm7tJcYVOY7xa/BFXlwJhpp7I+XVXyDpNa+9Xi8ehR8rzyEdmKeqofrMSauxJJ4 C1LMeBWNMH0M8L1RDkawLAPPb5/p9snGAwPDR4/7jv7aX/+umpAVkj+iBTbpzej8T2qZ N22Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779348128; x=1779952928; 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=iTYqbJYJ9tS837Ijwhb4D+xEtAeHHmkjjGBTYP1lfQc=; b=EXUybyQ4UQ2H87Yyg4QQZtyHQ8TswkJrpqyC3w9DuM5gWyM8HjBYaldtXwI5bnnKtv pQsZ7H1BpPvomY7w6IB92YJYMM9lZoC0C5qHAd6omkNb+N+BwJhBzqGEDh+82tm6gPcU UzoQ2ztc2vBLnCic9CCJPl2E0TgHQySG79hsRv4Oe4t5gYN6LzhfwfLNbmf7bh8PflO7 i/lOqw+DS+1BjyHKlekOf64tqUR8bx8KB5Vz4c2RcV3WHNbNLI6y54nwvbipxo41cJWs xh6Udp9l2meHRNxmOL39OoPhZzWYeLlxnW9EZuE1WU2QH/wqDMsLZS6WEhdh2jpOogBt cS7Q== X-Forwarded-Encrypted: i=1; AFNElJ+zLd6GHPSl4v7qcoTgIo9JANdcaNHCUPDsTRMbGYe5h9KM8I4GI37HkR0uh21bLvVA4hW0XHYsf0vgBRQ=@vger.kernel.org X-Gm-Message-State: AOJu0YwvNW0CczZ1rnJ6ne9Lpp7pSs5Fytdb1wUglhtqwQxN0tUdzAh4 aKCxZl5bDJJmA4JfxJicAaAl+GTr7f3/x3mCnDPHQKRitzr6hMn/2mz6 X-Gm-Gg: Acq92OH2GNO7OaaSTmFTD0nMymYYtknLN0zejY4DiZvp5cGE5CFds2ewnosu72s8LyY b39pjvBvEZvHLprXMeTeSz6qcWAb6eJy85/fhLkSzY8YoRaF/l2eOquOoosoPOBUigtDPJRtsqP RymMUZgvIR18Ti7Wpxc0NSocYtffWdz+XgRUU5vGC6Rg68ZtYjK7i7amXdCrElXny42f49hA82e eWt0ktUNZda8QdH/xWZSsQwBiIFJvH/UM9euM9Cn1iys5RuF02QEoyX3Bl8BbI5hRacx2he4ahd eb2Vn9880Ngn6RXtTbzqLDLOyx+h8AdXgoNff1B7ACI6FQ9OngBIcSYGrIl8VqtZZAVgIZKhBsu rORz5KPXWGmplGCB/2gC4XkEaYBwMQfdkVCPg6QQIIREX2SYfvXx8DtmXiFXHBJ8B9oYlEdpNhZ GckkvS96kJLO4zSl13anxoDfItATy6q+ltag== X-Received: by 2002:a17:903:1ad0:b0:2b2:ebed:7afc with SMTP id d9443c01a7336-2bea335a682mr16852035ad.27.1779348128077; Thu, 21 May 2026 00:22:08 -0700 (PDT) Received: from localhost ([2001:19f0:8001:1b2d:5400:5ff:fefa:a95d]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2bea98eca87sm584735ad.54.2026.05.21.00.22.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2026 00:22:07 -0700 (PDT) From: Inochi Amaoto To: Ulf Hansson , Karol Gugala , Mateusz Holenko , Gabriel Somlo , Joel Stanley , Maciej Dudek , Paul Mackerras Cc: Inochi Amaoto , linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org, Yixun Lan , Longbin Li Subject: [PATCH v5 2/2] mmc: litex_mmc: Set mandatory idle clocks before CMD0 Date: Thu, 21 May 2026 15:21:21 +0800 Message-ID: <20260521072122.1601215-3-inochiama@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260521072122.1601215-1-inochiama@gmail.com> References: <20260521072122.1601215-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 | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/mmc/host/litex_mmc.c b/drivers/mmc/host/litex_mmc.c index 52571bb17c61..3655542ca998 100644 --- a/drivers/mmc/host/litex_mmc.c +++ b/drivers/mmc/host/litex_mmc.c @@ -69,6 +69,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 @@ -449,6 +452,17 @@ static void litex_mmc_set_ios(struct mmc_host *mmc, st= ruct mmc_ios *ios) { struct litex_mmc_host *host =3D mmc_priv(mmc); =20 + /* + * The SD specification requires at least 74 idle clocks before CMD0. + * These dummy cycles is generated by writing LITEX_PHY_INITIALIZE. + */ + if (ios->chip_select =3D=3D MMC_CS_HIGH) { + litex_mmc_setclk(host, SD_INIT_CLK_HZ); + litex_write8(host->sdphy + LITEX_PHY_INITIALIZE, 1); + fsleep(SD_INIT_DELAY_US); + return; + } + /* * NOTE: Ignore any ios->bus_width updates; they occur right after * the mmc core sends its own acmd6 bus-width change notification, --=20 2.54.0