From mboxrd@z Thu Jan 1 00:00:00 1970 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: 8bit 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 | 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 +#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, struct mmc_ios *ios) { struct litex_mmc_host *host = mmc_priv(mmc); + /* + * 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 == 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, -- 2.54.0