Re: [PATCH v1 2/2] spi: cadence-qspi: Add QSPI support for Intel LGM SoC

From: kbuild test robot
Date: Mon Sep 16 2019 - 09:49:53 EST


Hi "Ramuthevar,Vadivel,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[cannot apply to v5.3 next-20190915]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Ramuthevar-Vadivel-MuruganX/spi-cadence-qspi-Add-cadence-qspi-support-for-Intel-LGM-SoC/20190916-163033
config: i386-allmodconfig (attached as .config)
compiler: gcc-7 (Debian 7.4.0-11) 7.4.0
reproduce:
# save the attached .config to linux build tree
make ARCH=i386

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

drivers/spi/spi-cadence-qspi-apb.c: In function 'cqspi_apb_indirect_write_execute':
>> drivers/spi/spi-cadence-qspi-apb.c:382:7: warning: suggest parentheses around operand of '!' or change '&' to '&&' or '!' to '~' [-Wparentheses]
if (!ret & (*irq_status & CQSPI_IRQ_STATUS_ERR)) {
^~~~

vim +382 drivers/spi/spi-cadence-qspi-apb.c

327
328 static int cqspi_apb_indirect_write_execute(struct struct_cqspi *cadence_qspi,
329 u32 txlen, const u8 *txbuf)
330 {
331 struct platform_device *pdev = cadence_qspi->pdev;
332 struct cqspi_platform_data *pdata = pdev->dev.platform_data;
333 struct cqspi_flash_pdata *f_pdata =
334 &pdata->f_pdata[cadence_qspi->current_cs];
335 unsigned int *irq_status = &cadence_qspi->irq_status;
336 void __iomem *reg_base = cadence_qspi->iobase;
337 void __iomem *ahb_base = cadence_qspi->qspi_ahb_virt;
338 unsigned int page_size = f_pdata->page_size;
339 int remaining = (int)txlen;
340 u32 write_bytes, timeout, reg;
341 int ret, status = 0;
342
343 writel(0xa, reg_base + CQSPI_REG_INDIRECTTRIGGERADDRRANGE);
344 writel(0x0, reg_base + CQSPI_REG_INDIRECTWRWATERMARK);
345 reg = readl(reg_base + CQSPI_REG_SIZE);
346 reg &= ~(CQSPI_REG_SIZE_PAGE_MASK << CQSPI_REG_SIZE_PAGE_LSB);
347 reg &= ~(CQSPI_REG_SIZE_BLOCK_MASK << CQSPI_REG_SIZE_BLOCK_LSB);
348 reg |= (f_pdata->page_size << CQSPI_REG_SIZE_PAGE_LSB);
349 reg |= (f_pdata->block_size << CQSPI_REG_SIZE_BLOCK_LSB);
350 writel(reg, reg_base + CQSPI_REG_SIZE);
351
352 writel(remaining, reg_base + CQSPI_REG_INDIRECTWRBYTES);
353 writel(CQSPI_REG_SRAM_PARTITION_WR, reg_base + CQSPI_REG_SRAMPARTITION);
354 /* Clear all interrupts. */
355 writel(CQSPI_IRQ_STATUS_MASK, reg_base + CQSPI_REG_IRQSTATUS);
356 writel(CQSPI_IRQ_MASK_WR, reg_base + CQSPI_REG_IRQMASK);
357 writel(CQSPI_REG_INDIRECTWR_START_MASK,
358 reg_base + CQSPI_REG_INDIRECTWR);
359
360 while (remaining > 0) {
361 size_t write_words, mod_bytes;
362
363 write_bytes = remaining > page_size ? page_size : remaining;
364 write_words = write_bytes / 4;
365 mod_bytes = write_bytes % 4;
366
367 if (write_words) {
368 iowrite32_rep(ahb_base, txbuf, write_words);
369 txbuf += (write_words * 4);
370 }
371 if (mod_bytes) {
372 unsigned int temp = 0xFFFFFFFF;
373
374 memcpy(&temp, txbuf, mod_bytes);
375 iowrite32(temp, ahb_base);
376 txbuf += mod_bytes;
377 }
378 ret = wait_event_interruptible_timeout(cadence_qspi->waitqueue,
379 *irq_status &
380 CQSPI_IRQ_MASK_WR,
381 CQSPI_TIMEOUT_MS);
> 382 if (!ret & (*irq_status & CQSPI_IRQ_STATUS_ERR)) {
383 ret = -ETIMEDOUT;
384 goto failwr;
385 } else {
386 ret = 0;
387 }
388 remaining -= write_bytes;
389 }
390
391 /* Check indirect done status */
392 timeout = cadence_qspi_init_timeout(CQSPI_TIMEOUT_MS);
393 while (cadence_qspi_check_timeout(timeout)) {
394 status = readl(reg_base + CQSPI_REG_INDIRECTWR);
395 if (status & CQSPI_REG_INDIRECTWR_DONE_MASK)
396 break;
397 }
398 if (!(status & CQSPI_REG_INDIRECTWR_DONE_MASK)) {
399 ret = -ETIMEDOUT;
400 goto failwr;
401 }
402 return 0;
403
404 failwr:
405 writel(0, reg_base + CQSPI_REG_IRQMASK);
406 writel(CQSPI_REG_INDIRECTWR_DONE_MASK,
407 reg_base + CQSPI_REG_INDIRECTWR);
408 if (ret)
409 writel(CQSPI_REG_INDIRECTWR_CANCEL_MASK,
410 reg_base + CQSPI_REG_INDIRECTWR);
411 return ret;
412 }
413

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: application/gzip