From: kernel test robot <lkp@intel.com>
To: Iker Pedrosa <ikerpedrosam@gmail.com>
Cc: oe-kbuild-all@lists.linux.dev, linux-kernel@vger.kernel.org,
Ulf Hansson <ulfh@kernel.org>
Subject: drivers/mmc/host/sdhci-of-k1.c:340 spacemit_sdhci_execute_tuning() warn: always true condition '(retry_delays[i] <= 255) => (0-255 <= 255)'
Date: Sun, 13 Sep 2026 06:46:32 +0800 [thread overview]
Message-ID: <202609130631.SPU5X5CN-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 08df884136f1c1197bab2a27814404fd329d9aac
commit: e9cb83c10071808aa7db4582e007a650aa6aa183 mmc: sdhci-of-k1: add comprehensive SDR tuning support
date: 4 months ago
config: arc-randconfig-r072-20260907 (https://download.01.org/0day-ci/archive/20260913/202609130631.SPU5X5CN-lkp@intel.com/config)
compiler: arc-linux-gcc (GCC) 11.5.0
smatch: v0.5.0-9187-g5189e3fb
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Fixes: e9cb83c10071 ("mmc: sdhci-of-k1: add comprehensive SDR tuning support")
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202609130631.SPU5X5CN-lkp@intel.com/
smatch warnings:
drivers/mmc/host/sdhci-of-k1.c:340 spacemit_sdhci_execute_tuning() warn: always true condition '(retry_delays[i] <= 255) => (0-255 <= 255)'
vim +340 drivers/mmc/host/sdhci-of-k1.c
259
260 static int spacemit_sdhci_execute_tuning(struct sdhci_host *host, u32 opcode)
261 {
262 int current_len = 0, current_start = 0;
263 int max_pass_len = 0, max_pass_start = 0;
264 struct mmc_host *mmc = host->mmc;
265 struct mmc_ios ios = mmc->ios;
266 u8 final_delay;
267 int ret = 0;
268 int i;
269
270 /*
271 * Tuning is required for SDR50/SDR104, HS200/HS400 cards and
272 * if clock frequency is greater than 100MHz in these modes.
273 */
274 if (host->clock < 100 * 1000 * 1000 ||
275 !(ios.timing == MMC_TIMING_MMC_HS200 ||
276 ios.timing == MMC_TIMING_UHS_SDR50 ||
277 ios.timing == MMC_TIMING_UHS_SDR104))
278 return 0;
279
280 if (mmc->caps2 & MMC_CAP2_NO_MMC) {
281 spacemit_sdhci_set_tx_dline_reg(host, SPACEMIT_TX_TUNING_DLINE_REG);
282 spacemit_sdhci_set_tx_delay(host, SPACEMIT_TX_TUNING_DELAYCODE);
283 spacemit_sdhci_tx_tuning_prepare(host);
284
285 dev_dbg(mmc_dev(host->mmc), "TX tuning: dline_reg=%d, delaycode=%d\n",
286 SPACEMIT_TX_TUNING_DLINE_REG, SPACEMIT_TX_TUNING_DELAYCODE);
287 }
288
289 spacemit_sdhci_prepare_tuning(host);
290
291 for (i = SPACEMIT_RX_TUNE_DELAY_MIN; i <= SPACEMIT_RX_TUNE_DELAY_MAX; i++) {
292 spacemit_sdhci_set_rx_delay(host, i);
293 ret = mmc_send_tuning(host->mmc, opcode, NULL);
294
295 dev_dbg(mmc_dev(host->mmc), "RX delay %d: %s\n",
296 i, ret == 0 ? "pass" : "fail");
297
298 if (ret == 0) {
299 /* Test passed - extend current window */
300 if (current_len == 0)
301 current_start = i;
302 current_len++;
303 } else {
304 /* Test failed - check if current window is best so far */
305 if (current_len > max_pass_len) {
306 max_pass_len = current_len;
307 max_pass_start = current_start;
308 }
309 current_len = 0;
310 }
311 }
312
313 if (current_len > max_pass_len) {
314 max_pass_len = current_len;
315 max_pass_start = current_start;
316 }
317
318 if (max_pass_len < 3) {
319 dev_err(mmc_dev(host->mmc), "Tuning failed: no stable window found\n");
320 return -EIO;
321 }
322
323 final_delay = max_pass_start + max_pass_len / 2;
324 spacemit_sdhci_set_rx_delay(host, final_delay);
325 ret = mmc_send_tuning(host->mmc, opcode, NULL);
326 if (ret) {
327 u8 retry_delays[] = {
328 max_pass_start + max_pass_len / 4,
329 max_pass_start + (3 * max_pass_len) / 4,
330 max_pass_start,
331 max_pass_start + max_pass_len - 1
332 };
333 int retry_count = ARRAY_SIZE(retry_delays);
334
335 dev_warn(mmc_dev(mmc), "Primary delay %d failed, trying alternatives\n",
336 final_delay);
337
338 for (i = 0; i < retry_count; i++) {
339 if (retry_delays[i] >= SPACEMIT_RX_TUNE_DELAY_MIN &&
> 340 retry_delays[i] <= SPACEMIT_RX_TUNE_DELAY_MAX) {
341 spacemit_sdhci_set_rx_delay(host, retry_delays[i]);
342 ret = mmc_send_tuning(host->mmc, opcode, NULL);
343 if (!ret) {
344 final_delay = retry_delays[i];
345 dev_info(mmc_dev(mmc), "Retry successful with delay %d\n",
346 final_delay);
347 break;
348 }
349 }
350 }
351
352 if (ret) {
353 dev_err(mmc_dev(mmc), "All retry attempts failed\n");
354 return -EIO;
355 }
356 }
357
358 dev_dbg(mmc_dev(host->mmc),
359 "Tuning successful: window %d-%d, using delay %d\n",
360 max_pass_start, max_pass_start + max_pass_len - 1, final_delay);
361
362 return 0;
363 }
364
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2026-09-12 22:46 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202609130631.SPU5X5CN-lkp@intel.com \
--to=lkp@intel.com \
--cc=ikerpedrosam@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=ulfh@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®